Yaklaşan Intlayer sürümleri hakkında bildirim alın
    Oluşturma:2025-09-07Son güncelleme:2025-09-07

    Intlayer ve Vite ve Preact ile uluslararasılaştırma (i18n) başlangıç kılavuzu

    Bu paket geliştirme aşamasındadır. Daha fazla bilgi için sorunu inceleyin. Preact için Intlayer'a ilgi göstermek için sorunu beğenin

    GitHub'da Uygulama Şablonu'na bakın.

    Intlayer Nedir?

    Intlayer, modern web uygulamalarında çok dilli desteği basitleştirmek için tasarlanmış yenilikçi, açık kaynaklı bir uluslararasılaştırma (i18n) kütüphanesidir.

    Intlayer ile şunları yapabilirsiniz:

    • Bileşen düzeyinde açıklayıcı sözlükler kullanarak çevirileri kolayca yönetin.
    • Meta verileri, rotaları ve içeriği dinamik olarak yerelleştirin.
    • Otomatik oluşturulan türlerle TypeScript desteği sağlayın, böylece otomatik tamamlama ve hata algılama iyileşir.
    • Dinamik yerel ayar algılama ve anahtarlama gibi gelişmiş özelliklerden yararlanın.

    Vite ve Preact Uygulamasında Intlayer Kurulumu İçin Adım Adım Kılavuz

    Adım 1: Bağımlılıkları Kurma

    Gerekli paketleri npm kullanarak kurun:

    bash
    npm install intlayer preact-intlayernpm install vite-intlayer --save-dev
    • intlayer

      Yapılandırma yönetimi, çeviri, içerik bildirimi, dönüştürme ve CLI komutları için uluslararasılaştırma araçları sağlayan çekirdek paket.

    • preact-intlayer Preact uygulamasıyla Intlayer'ı entegre eden paket. Preact uluslararasılaştırması için bağlam sağlayıcıları ve kancalar sağlar.

    • vite-intlayer Vite bundler ile Intlayer'ı entegre etmek için Vite eklentisini ve kullanıcının tercih ettiği yerel ayarı algılamak, çerezleri yönetmek ve URL yönlendirmesi yapmak için middleware'i içerir.

    Adım 2: Projenizi Yapılandırma

    Uygulamanızın dillerini yapılandırmak için bir yapılandırma dosyası oluşturun:

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  internationalization: {    locales: [      Locales.ENGLISH,      Locales.FRENCH,      Locales.SPANISH,      // Diğer yerel ayarlarınız    ],    defaultLocale: Locales.ENGLISH,  },};export default config;

    Bu yapılandırma dosyası aracılığıyla, yerelleştirilmiş URL'leri, middleware yönlendirmesini, çerez adlarını, içerik bildiriminizin konumunu ve uzantısını, Intlayer günlüklerini konsolda devre dışı bırakmayı ve daha fazlasını ayarlayabilirsiniz. Kullanılabilir parametrelerin tam listesi için yapılandırma dokümantasyonuna bakın.

    Adım 3: Intlayer'ı Vite Yapılandırmanıza Entegre Etme

    Vite yapılandırmanıza intlayer eklentisini ekleyin.

    vite.config.ts
    import { defineConfig } from "vite";import preact from "@preact/preset-vite";import { intlayerPlugin } from "vite-intlayer";// https://vitejs.dev/config/export default defineConfig({  plugins: [preact(), intlayerPlugin()],});

    intlayerPlugin() Vite eklentisi, Vite ile Intlayer'ı entegre etmek için kullanılır. İçerik bildirimi dosyalarının oluşturulmasını sağlar ve bunları geliştirme modunda izler. Ayrıca Intlayer ortam değişkenlerini Vite uygulaması içinde tanımlar. Ek olarak, performansı optimize etmek için takma adlar sağlar.

    Adım 4: İçeriğinizi Bildirin

    Çevirileri depolamak için içerik bildiriminizi oluşturun ve yönetin:

    src/app.content.tsx
    import { t, type Dictionary } from "intlayer";import type { ComponentChildren } from "preact";const appContent = {  key: "app",  content: {    viteLogo: t({      en: "Vite logo",      fr: "Logo Vite",      es: "Logo Vite",    }),    preactLogo: t({      en: "Preact logo",      fr: "Logo Preact",      es: "Logo Preact",    }),    title: "Vite + Preact",    count: t({      en: "count is ",      fr: "le compte est ",      es: "el recuento es ",    }),    edit: t<ComponentChildren>({      en: (        <>          Edit <code>src/app.tsx</code> and save to test HMR        </>      ),      fr: (        <>          Éditez <code>src/app.tsx</code> et enregistrez pour tester HMR        </>      ),      es: (        <>          Edita <code>src/app.tsx</code> y guarda para probar HMR        </>      ),    }),    readTheDocs: t({      en: "Click on the Vite and Preact logos to learn more",      fr: "Cliquez sur les logos Vite et Preact pour en savoir plus",      es: "Haga clic en los logotipos de Vite y Preact para obtener más información",    }),  },} satisfies Dictionary;export default appContent;

    İçerik bildiriminiz uygulamanızın herhangi bir yerine yerleştirilebilir, yeter ki contentDir dizinine dahil edilsin (varsayılan olarak ./src). Ve içerik bildirimi dosya uzantısı ile eşleşsin (varsayılan olarak .content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}).

    Daha fazla ayrıntı için içerik bildirimi dokümantasyonuna bakın.

    İçerik dosyanız TSX kodu içeriyorsa, import { h } from "preact";'ı içe aktarmanız gerekebilir veya JSX pragma'nızın Preact için doğru şekilde ayarlandığından emin olun.

    Adım 5: Kodunuzda Intlayer'ı Kullanın

    Uygulamanız boyunca içerik sözlüklerinize erişin:

    src/app.tsx
    import { useState } from "preact/hooks";import type { FunctionalComponent } from "preact";import preactLogo from "./assets/preact.svg"; // preact.svg'niz olduğunu varsayalımimport viteLogo from "/vite.svg";import "./app.css"; // CSS dosyanızın app.css olarak adlandırıldığını varsayalımimport { IntlayerProvider, useIntlayer } from "preact-intlayer";const AppContent: FunctionalComponent = () => {  const [count, setCount] = useState(0);  const content = useIntlayer("app");  return (    <>      <div>        <a href="https://vitejs.dev" target="_blank">          <img src={viteLogo} class="logo" alt={content.viteLogo.value} />        </a>        <a href="https://preactjs.com" target="_blank">          <img            src={preactLogo}            class="logo preact"            alt={content.preactLogo.value}          />        </a>      </div>      <h1>{content.title}</h1>      <div class="card">        <button onClick={() => setCount((count) => count + 1)}>          {content.count}          {count}        </button>        <p>{content.edit}</p>      </div>      <p class="read-the-docs">{content.readTheDocs}</p>    </>  );};const App: FunctionalComponent = () => (  <IntlayerProvider>    <AppContent />  </IntlayerProvider>);export default App;

    İçeriğinizi bir string niteliğinde kullanmak istediğinizde, alt, title, href, aria-label vb. gibi, işlevin değerini çağırmanız gerekir:

    jsx
    <img src={content.image.src.value} alt={content.image.value} />

    Not: Preact'te className genellikle class olarak yazılır.

    useIntlayer kancası hakkında daha fazla bilgi edinmek için dokümantasyona bakın (API preact-intlayer için benzer).

    (İsteğe Bağlı) Adım 6: İçeriğinizin Dilini Değiştirin

    İçeriğinizin dilini değiştirmek için useLocale kancasından sağlanan setLocale işlevini kullanabilirsiniz. Bu işlev uygulamanın yerel ayarını ayarlamanıza ve içeriği buna göre güncellemenize olanak tanır.

    src/components/LocaleSwitcher.tsx
    import type { FunctionalComponent } from "preact";import { Locales } from "intlayer";import { useLocale } from "preact-intlayer";const LocaleSwitcher: FunctionalComponent = () => {  const { setLocale } = useLocale();  return (    <button onClick={() => setLocale(Locales.ENGLISH)}>      Dili İngilizce'ye Değiştir    </button>  );};export default LocaleSwitcher;

    useLocale kancası hakkında daha fazla bilgi edinmek için dokümantasyona bakın (API preact-intlayer için benzer).

    (İsteğe Bağlı) Adım 7: Uygulamanıza Yerelleştirilmiş Yönlendirme Ekleyin

    Bu adımın amacı, her dil için benzersiz rotalar oluşturmaktır. Bu, SEO ve SEO dostu URL'ler için kullanışlıdır. Örnek:

    plaintext
    - https://example.com/about- https://example.com/es/about- https://example.com/fr/about

    Varsayılan olarak, rotalar varsayılan yerel ayar için öneklenmez. Varsayılan yerel ayarı öneklemek istiyorsanız, yapılandırmanızda middleware.prefixDefault seçeneğini true olarak ayarlayabilirsiniz. Daha fazla bilgi için yapılandırma dokümantasyonuna bakın.

    Uygulamanıza yerelleştirilmiş yönlendirme eklemek için, uygulamanızın rotalarını saran ve yerel ayar tabanlı yönlendirmeyi yöneten bir LocaleRouter bileşeni oluşturabilirsiniz. preact-iso kullanarak bir örnek aşağıda verilmiştir:

    Öncelikle preact-iso'yu kurun:

    bash
    npm install preact-iso
    src/components/LocaleRouter.tsx
    import { type Locales, configuration, getPathWithoutLocale } from "intlayer";import { ComponentChildren, FunctionalComponent } from "preact";import { IntlayerProvider } from "preact-intlayer";import { LocationProvider, useLocation } from "preact-iso";import { useEffect } from "preact/hooks";const { internationalization, middleware } = configuration;const { locales, defaultLocale } = internationalization;const Navigate: FunctionalComponent<{ to: string; replace?: boolean }> = ({  to,  replace,}) => {  const { route } = useLocation();  useEffect(() => {    route(to, replace);  }, [to, replace, route]);  return null;};/** * Yerelleştirme ve uygun yerel ayar bağlamıyla çocukları saran bir bileşen. * URL tabanlı yerel ayar algılama ve doğrulama yönetir. */const AppLocalized: FunctionalComponent<{  children: ComponentChildren;  locale?: Locales;}> = ({ children, locale }) => {  const { path: pathname, url } = useLocation();  if (!url) {    return null;  }  const search = url.substring(pathname.length);  // Sağlanmadıysa varsayılan yerel ayara geri dön  const currentLocale = locale ?? defaultLocale;  // Temel bir yol oluşturmak için yoldan yerel ayar önekini kaldır  const pathWithoutLocale = getPathWithoutLocale(    pathname // Geçerli URL yolu  );  /**   * middleware.prefixDefault true ise, varsayılan yerel ayar her zaman öneklenmelidir.   */  if (middleware.prefixDefault) {    // Yerel ayarı doğrula    if (!locale || !locales.includes(locale)) {      // Güncellenmiş yol ile varsayılan yerel ayara yönlendir      return (        <Navigate          to={`/${defaultLocale}/${pathWithoutLocale}${search}`}          replace // Geçerli geçmiş girişini yenisiyle değiştir        />      );    }    // Geçerli yerel ayarı ayarlayarak çocukları IntlayerProvider ile sar    return (      <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>    );  } else {    /**     * middleware.prefixDefault false olduğunda, varsayılan yerel ayar öneklenmez.     * Geçerli yerel ayar geçerli olduğundan ve varsayılan yerel ayar olmadığından emin ol.     */    if (      currentLocale.toString() !== defaultLocale.toString() &&      !locales        .filter(          (loc) => loc.toString() !== defaultLocale.toString() // Varsayılan yerel ayarı hariç tut        )        .includes(currentLocale) // Geçerli yerel ayar geçerli yerel ayarlar listesinde mi kontrol et    ) {      // Yerel ayar öneki olmadan yola yönlendir      return <Navigate to={`${pathWithoutLocale}${search}`} replace />;    }    // Geçerli yerel ayarı ayarlayarak çocukları IntlayerProvider ile sar    return (      <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>    );  }};const RouterContent: FunctionalComponent<{  children: ComponentChildren;}> = ({ children }) => {  const { path } = useLocation();  if (!path) {    return null;  }  const pathLocale = path.split("/")[1] as Locales;  const isLocaleRoute = locales    .filter((locale) => middleware.prefixDefault || locale !== defaultLocale)    .some((locale) => locale.toString() === pathLocale);  if (isLocaleRoute) {    return <AppLocalized locale={pathLocale}>{children}</AppLocalized>;  }  return (    <AppLocalized      locale={!middleware.prefixDefault ? defaultLocale : undefined}    >      {children}    </AppLocalized>  );};/** * Yerel ayar özel rotaları ayarlayan bir yönlendirici bileşen. * preact-iso'yu kullanarak gezinmeyi yönetir ve yerelleştirilmiş bileşenleri işler. */export const LocaleRouter: FunctionalComponent<{  children: ComponentChildren;}> = ({ children }) => (  <LocationProvider>    <RouterContent>{children}</RouterContent>  </LocationProvider>);

    Ardından, LocaleRouter bileşenini uygulamanızda kullanabilirsiniz:

    src/app.tsx
    import { LocaleRouter } from "./components/LocaleRouter";import type { FunctionalComponent } from "preact";// ... AppContent bileşeniniz (5. Adımda tanımlandı)const App: FunctionalComponent = () => (  <LocaleRouter>    <AppContent />  </LocaleRouter>);export default App;

    Paralel olarak, uygulamanıza sunucu tarafı yönlendirme eklemek için intlayerMiddlewarePlugin'i de kullanabilirsiniz. Bu eklenti, URL'ye göre geçerli yerel ayarı otomatik olarak algılar ve uygun yerel ayar çerezini ayarlar. Hiç yerel ayar belirtilmezse, eklenti kullanıcının tarayıcı dil tercihlerine göre en uygun yerel ayarı belirler. Hiç yerel ayar algılanmazsa, varsayılan yerel ayara yönlendirir.

    Not: Üretimde intlayerMiddlewarePlugin'i kullanmak için vite-intlayer paketini devDependencies'den dependencies'e taşımalısınız.

    vite.config.ts
    import { defineConfig } from "vite";import preact from "@preact/preset-vite";import { intlayerPlugin, intlayerMiddlewarePlugin } from "vite-intlayer";// https://vitejs.dev/config/export default defineConfig({  plugins: [preact(), intlayerPlugin(), intlayerMiddlewarePlugin()],});

    (İsteğe Bağlı) Adım 8: Yerel ayar değiştiğinde URL'yi değiştirin

    Yerel ayar değiştiğinde URL'yi değiştirmek için useLocale kancasından sağlanan onLocaleChange prop'unu kullanabilirsiniz. Paralel olarak, URL yolunu güncellemek için useLocation ve route'u preact-iso'dan kullanabilirsiniz.

    src/components/LocaleSwitcher.tsx
    import { useLocation, route } from "preact-iso";import {  Locales,  getHTMLTextDir,  getLocaleName,  getLocalizedUrl,} from "intlayer";import { useLocale } from "preact-intlayer";import type { FunctionalComponent } from "preact";const LocaleSwitcher: FunctionalComponent = () => {  const location = useLocation();  const { locale, availableLocales, setLocale } = useLocale({    onLocaleChange: (newLocale) => {      const currentFullPath = location.url; // preact-iso tam url sağlar      // Güncellenmiş yerel ayar ile URL'yi oluştur      // Örnek: /es/about?foo=bar      const pathWithLocale = getLocalizedUrl(currentFullPath, newLocale);      // URL yolunu güncelle      route(pathWithLocale, true); // true için değiştir    },  });  return (    <div>      <button popovertarget="localePopover">{getLocaleName(locale)}</button>      <div id="localePopover" popover="auto">        {availableLocales.map((localeItem) => (          <a            href={getLocalizedUrl(location.url, localeItem)}            hreflang={localeItem}            aria-current={locale === localeItem ? "page" : undefined}            onClick={(e) => {              e.preventDefault();              setLocale(localeItem);              // Yerel ayar ayarlandıktan sonra programatik navigasyon onLocaleChange tarafından işlenecek            }}            key={localeItem}          >            <span>              {/* Yerel ayar - örn. FR */}              {localeItem}            </span>            <span>              {/* Kendi yerel ayarındaki dil - örn. Français */}              {getLocaleName(localeItem, localeItem)}            </span>            <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>              {/* Geçerli yerel ayar set edildiğinde İspanyolca olarak Fransızca - örn. Francés */}              {getLocaleName(localeItem, locale)}            </span>            <span dir="ltr" lang={Locales.ENGLISH}>              {/* İngilizce olarak dil - örn. French */}              {getLocaleName(localeItem, Locales.ENGLISH)}            </span>          </a>        ))}      </div>    </div>  );};export default LocaleSwitcher;

    Dokümantasyon referansları:

    Aşağıda güncellenmiş Adım 9 açıklamalar ve iyileştirilmiş kod örnekleriyle eklenmiştir:


    (İsteğe Bağlı) Adım 9: HTML Dil ve Yön Niteliklerini Değiştirin

    Uygulamanız birden fazla dili desteklediğinde, geçerli yerel ayar ile eşleşmesi için <html> etiketinin lang ve dir niteliklerini güncellemek önemlidir. Bunu yapmak şunları sağlar:

    • Erişilebilirlik: Ekran okuyucular ve yardımcı teknolojiler, içeriği doğru şekilde telaffuz etmek ve yorumlamak için doğru lang niteliğine güvenir.
    • Metin İşleme: dir (yön) niteliği, metnin doğru sırada işlenmesini sağlar (örneğin, İngilizce için soldan sağa, Arapça veya İbranice için sağdan sola), okunabilirlik için gereklidir.
    • SEO: Arama motorları, sayfanızın dilini belirlemek için lang niteliğini kullanır, arama sonuçlarında doğru yerelleştirilmiş içeriği sunmaya yardımcı olur.

    Yerel ayar değiştiğinde bu nitelikleri dinamik olarak güncellemek, tüm desteklenen diller için tutarlı ve erişilebilir bir deneyim sağlar.

    Kancayı Uygulama

    Geçerli yerel ayara göre HTML niteliklerini yöneten özel bir kanca oluşturun. Kanca yerel ayar değişikliklerini dinler ve nitelikleri buna göre günceller:

    src/hooks/useI18nHTMLAttributes.tsx
    import { useEffect } from "preact/hooks";import { useLocale } from "preact-intlayer";import { getHTMLTextDir } from "intlayer";/** * Geçerli yerel ayara göre HTML <html> etiketinin `lang` ve `dir` niteliklerini günceller. * - `lang`: Tarayıcılara ve arama motorlarına sayfanın dilini bildirir. * - `dir`: Geçerli yerel ayara göre doğru okuma sırasını (örneğin, İngilizce için 'ltr', Arapça için 'rtl') sağlar. * * Bu dinamik güncelleme, uygun metin işleme, erişilebilirlik ve SEO için gereklidir. */export const useI18nHTMLAttributes = () => {  const { locale } = useLocale();  useEffect(() => {    // Geçerli yerel ayara dil niteliğini ayarla    document.documentElement.lang = locale;    // Geçerli yerel ayara göre metin yönünü ayarla    document.documentElement.dir = getHTMLTextDir(locale);  }, [locale]);};

    Uygulamanızda Kancayı Kullanma

    Yerel ayar değiştiğinde HTML niteliklerinin güncellenmesi için kancayı ana bileşeninizde entegre edin:

    src/app.tsx
    import type { FunctionalComponent } from "preact";import { IntlayerProvider } from "preact-intlayer"; // AppContent için useIntlayer zaten içe aktarılmışsaimport { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";import "./app.css";// AppContent tanımı 5. Adımdanconst AppWithHooks: FunctionalComponent = () => {  // Kancayı kullanarak yerel ayara göre <html> etiketinin lang ve dir niteliklerini güncelle  useI18nHTMLAttributes();  // AppContent, 5. Adımdan ana içerik görüntüleme bileşeniniz olduğunu varsayalım  return <AppContent />;};const App: FunctionalComponent = () => (  <IntlayerProvider>    <AppWithHooks />  </IntlayerProvider>);export default App;

    Bu değişiklikleri uygulayarak uygulamanız şunları sağlayacak:

    • Dil (lang) niteliği, SEO ve tarayıcı davranışı için geçerli yerel ayarı doğru şekilde yansıtacak.
    • Metin yönü (dir) niteliği, farklı okuma sıralarına sahip diller için okunabilirliği ve kullanılabilirliği geliştirecek.
    • Daha erişilebilir bir deneyim sağlayacak, çünkü yardımcı teknolojiler bu niteliklere optimum şekilde çalışmak için güvenir.

    (İsteğe Bağlı) Adım 10: Yerelleştirilmiş Bağlantı Bileşeni Oluşturun

    Uygulamanızın navigasyonu geçerli yerel ayarı saygı gösterdiğinden emin olmak için özel bir Link bileşeni oluşturabilirsiniz. Bu bileşen dahili URL'leri otomatik olarak geçerli dille önekler.

    Bu davranış çeşitli nedenlerle kullanışlıdır:

    • SEO ve Kullanıcı Deneyimi: Yerelleştirilmiş URL'ler, arama motorlarının dil özel sayfalarını doğru şekilde indekslemesine yardımcı olur ve kullanıcılara tercih ettikleri dilde içerik sunar.
    • Tutarlılık: Uygulamanız boyunca yerelleştirilmiş bir bağlantı kullanarak, navigasyonun aynı yerel ayar bağlamında kalmasını garanti edersiniz, beklenmedik dil anahtarlarını önlersiniz.
    • Bakım Kolaylığı: URL mantığını tek bir bileşende merkezileştirmek, yönetimini basitleştirir.

    Preact ile preact-iso için, navigasyon için genellikle standart <a> etiketleri kullanılır ve preact-iso yönlendirmeyi yönetir. Tıklama üzerine programatik navigasyon yapmak istiyorsanız (örneğin, gezinmeden önce eylemler gerçekleştirmek için), useLocation'dan route işlevini kullanabilirsiniz. İşte preact-iso'nun route işlevini kullanarak (doğrudan içe aktararak veya useLocation aracılığıyla) URL'leri yerelleştiren özel bir anchor bileşeni:

    src/components/LocalizedLink.tsx
    import { getLocalizedUrl } from "intlayer";import { useLocale, useLocation, route } from "preact-intlayer"; // preact-intlayer'dan re-export edilmişse useLocation ve route; aksi takdirde doğrudan içe aktar// Re-export edilmediyse, doğrudan içe aktar: import { useLocation, route } from "preact-iso";import type { JSX } from "preact"; // HTMLAttributes içinimport { forwardRef } from "preact/compat"; // Ref'leri iletmek içinexport interface LocalizedLinkProps  extends JSX.HTMLAttributes<HTMLAnchorElement> {  href: string;  replace?: boolean; // İsteğe bağlı: geçmiş durumunu değiştir}/** * Verilen URL'nin harici olup olmadığını belirleyen yardımcı işlev. * URL http:// veya https:// ile başlıyorsa harici olarak kabul edilir. */export const checkIsExternalLink = (href?: string): boolean =>  /^https?:\/\//.test(href ?? "");/** * Geçerli yerel ayara göre href niteliğini uyarlayan özel bir Link bileşeni. * Dahili bağlantılar için `getLocalizedUrl` kullanarak URL'yi yerel ayar ile önekler (örneğin, /fr/about). * Bu, navigasyonun aynı yerel ayar bağlamında kalmasını sağlar. * Standart <a> etiketi kullanır ancak preact-iso'nun `route` ile istemci tarafı navigasyon tetikleyebilir. */export const LocalizedLink = forwardRef<HTMLAnchorElement, LocalizedLinkProps>(  ({ href, children, onClick, replace = false, ...props }, ref) => {    const { locale } = useLocale();    const location = useLocation(); // preact-iso'dan    const isExternalLink = checkIsExternalLink(href);    const hrefI18n =      href && !isExternalLink ? getLocalizedUrl(href, locale) : href;    const handleClick = (event: JSX.TargetedMouseEvent<HTMLAnchorElement>) => {      if (onClick) {        onClick(event);      }      if (        !isExternalLink &&        href && // href'nin tanımlandığından emin ol        event.button === 0 && // Sol tıklama        !event.metaKey &&        !event.ctrlKey &&        !event.shiftKey &&        !event.altKey && // Standart değiştirici kontrolü        !props.target // Yeni sekme/pencere hedeflenmiyor      ) {        event.preventDefault();        if (location.url !== hrefI18n) {          // URL farklıysa sadece gezin          route(hrefI18n, replace); // preact-iso'nun route'unu kullan        }      }    };    return (      <a href={hrefI18n} ref={ref} onClick={handleClick} {...props}>        {children}      </a>    );  });

    Nasıl Çalışır

    • Harici Bağlantıları Algılama: Yardımcı işlev checkIsExternalLink, bir URL'nin harici olup olmadığını belirler. Harici bağlantılar değişmeden bırakılır.
    • Geçerli Yerel Ayarı Alma: useLocale kancası geçerli yerel ayarı sağlar.
    • URL'yi Yerelleştirme: Dahili bağlantılar için getLocalizedUrl, URL'yi geçerli yerel ayar ile önekler.
    • İstemci Tarafı Navigasyon: handleClick işlevi, standart navigasyonun engellenip engellenmeyeceğini kontrol eder. Öyleyse, useLocation aracılığıyla veya doğrudan içe aktarılarak elde edilen preact-iso'nun route işlevini kullanarak istemci tarafı navigasyon gerçekleştirir. Bu, tam sayfa yeniden yüklemesi olmadan SPA benzeri davranış sağlar.
    • Bağlantıyı Döndürme: Bileşen, yerelleştirilmiş URL ve özel tıklama işleyicisi ile bir <a> etiketi döndürür.

    TypeScript Yapılandırın

    Intlayer, modül genişletmesi kullanarak TypeScript avantajlarından yararlanır.

    alt text

    alt text

    Otomatik oluşturulan türleri TypeScript yapılandırmanıza dahil edin.

    tsconfig.json
    {  // ... Mevcut TypeScript yapılandırmalarınız  "compilerOptions": {    // ...    "jsx": "react-jsx",    "jsxImportSource": "preact", // Preact 10+ için önerilir    // ...  },  "include": [    // ... Mevcut TypeScript yapılandırmalarınız    ".intlayer/**/*.ts", // Otomatik oluşturulan türleri dahil et  ],}

    Preact için tsconfig.json'unuzu ayarladığınızdan emin olun, özellikle jsx ve jsxImportSource veya eski Preact sürümleri için jsxFactory/jsxFragmentFactory yoksa preset-vite'nin varsayılanlarını kullanın.

    Git Yapılandırması

    Intlayer tarafından oluşturulan dosyaları Git deponuza kaydetmekten kaçınmak için bunları yok saymanız önerilir. Bu, bunları Git deponuza kaydetmekten kaçınmanıza olanak tanır.

    Bunu yapmak için .gitignore dosyanıza aşağıdaki talimatları ekleyin:

    plaintext
    # Intlayer tarafından oluşturulan dosyaları yok say.intlayer

    VS Code Uzantısı

    Intlayer ile geliştirme deneyiminizi iyileştirmek için resmi Intlayer VS Code Uzantısı'nı kurun.

    VS Code Marketplace'ten yükleyin

    Bu uzantı şunları sağlar:

    • Çeviri anahtarları için otomatik tamamlama.
    • Eksik çeviriler için gerçek zamanlı hata algılama.
    • Çevrilmiş içeriğin satır içi önizlemeleri.
    • Çevirileri kolayca oluşturmak ve güncellemek için hızlı eylemler.

    Uzantıyı kullanma hakkında daha fazla ayrıntı için Intlayer VS Code Uzantısı dokümantasyonuna bakın.


    Daha Fazla İlerle

    Daha fazla ilerlemek için görsel düzenleyici veya içeriğinizi CMS kullanarak dışa aktarmayı uygulayabilirsiniz.


    Dokümantasyon Geçmişi

    Sürüm Tarih Değişiklikler
    5.5.10 2025-06-29 Geçmiş başlatıldı
    Yaklaşan Intlayer sürümleri hakkında bildirim alın