Sorunuzu sorun ve bu sayfaya ve seçtiğiniz AI sağlayıcısına referans vererek belgenin bir özetini alın
Intlayer MCP Sunucusunu favori AI asistanınıza entegre ederek tüm belgeleri doğrudan ChatGPT, DeepSeek, Cursor, VSCode vb. üzerinden alabilirsiniz.
MCP Sunucu belgesini görüntüleBu sayfanın içeriği bir yapay zeka kullanılarak çevrildi.
Orijinal içeriğin İngilizce son sürümünü görüntüleyinBu dokümantasyonu geliştirmek için bir fikriniz varsa, lütfen GitHub'da bir çekme isteği göndererek katkıda bulunmaktan çekinmeyin.
Dokümantasyon için GitHub bağlantısıBelge Markdown'ını panoya kopyala
React Uluslararasılaştırma (i18n) ile react-i18next ve Intlayer
Genel Bakış
- Intlayer, çevirileri bileşen düzeyinde içerik beyan dosyaları aracılığıyla yönetmenize yardımcı olur.
- react-i18next, bileşenlerinizde yerelleştirilmiş dizeleri getirmek için useTranslation gibi hook'lar sağlayan i18next için popüler bir React entegrasyonudur.
Birleştirildiğinde, Intlayer i18next-uyumlu JSON olarak sözlükleri dışa aktarabilir, böylece react-i18next bunları çalışma zamanında tüketebilir.
Neden Intlayer'ı react-i18next ile Kullanmalı?
Intlayer içerik beyan dosyaları daha iyi bir geliştirici deneyimi sunar çünkü:
Dosya Yerleşiminde Esnek
Her içerik beyan dosyasını ihtiyacı olan bileşenin yanına koyun. Bu yapı, çevirileri birlikte konumlandırarak bileşenler taşındığında veya silindiğinde yetim çevirileri önler.bashKodu kopyalaKodu panoya kopyala
.└── src └── components └── MyComponent ├── index.content.ts # İçerik beyan dosyası └── index.tsx
Merkezi Çeviriler
Tek bir içerik beyan dosyası bir bileşen için gerekli tüm çevirileri toplar, eksik çevirileri yakalamayı kolaylaştırır.
TypeScript ile, çeviriler eksikse derleme zamanı hataları bile alırsınız.
Kurulum
Create React App projesinde, bu bağımlılıkları yükleyin:
Kodu panoya kopyala
# npm ilenpm install intlayer react-i18next i18next i18next-resources-to-backend
Kodu panoya kopyala
# yarn ileyarn add intlayer react-i18next i18next i18next-resources-to-backend
Kodu panoya kopyala
# pnpm ilepnpm add intlayer react-i18next i18next i18next-resources-to-backend
Bu Paketler Nedir?
- intlayer – i18n yapılandırmalarını, içerik beyanlarını yönetmek ve sözlük çıktılarını oluşturmak için CLI ve çekirdek kütüphane.
- react-intlayer – Intlayer için React'e özel entegrasyon, özellikle sözlüklerin otomatik oluşturulmasını sağlayan bazı script'ler sağlar.
- react-i18next – i18next için React'e özel entegrasyon kütüphanesi, useTranslation hook'unu içerir.
- i18next – Çeviri işlemeyi yöneten temel çerçeve.
- i18next-resources-to-backend – JSON kaynaklarını dinamik olarak içe aktaran bir i18next arka ucu.
i18next Sözlüklerini Dışa Aktarmak İçin Intlayer'ı Yapılandırma
Projenizin kökünde intlayer.config.ts dosyasını oluşturun (veya güncelleyin):
Kodu panoya kopyala
import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = { internationalization: { // İstediğiniz kadar yerel ekleyin locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, content: { // Intlayer'a i18next-uyumlu JSON oluşturmasını söyleyin dictionaryOutput: ["i18next"], // Oluşturulan kaynaklar için bir çıktı dizini seçin // Bu klasör henüz yoksa oluşturulacaktır. i18nextResourcesDir: "./i18next/resources", },};export default config;
Not: TypeScript kullanmıyorsanız, bu yapılandırma dosyasını .cjs, .mjs veya .js olarak oluşturabilirsiniz (detaylar için Intlayer dokümantasyonuna bakın).
i18next Kaynaklarını Oluşturma
İçerik beyanlarınız yerleştirildikten sonra (sonraki bölüm), Intlayer build komutunu çalıştırın:
Kodu panoya kopyala
# npm ilenpx run intlayer build
Kodu panoya kopyala
# yarn ileyarn intlayer build
Kodu panoya kopyala
# pnpm ilepnpm intlayer build
Bu, varsayılan olarak ./i18next/resources dizini içinde i18next kaynaklarınızı oluşturacaktır.
Tipik bir çıktı şöyle görünebilir:
Kodu panoya kopyala
.└── i18next └── resources ├── en │ └── my-content.json ├── fr │ └── my-content.json └── es └── my-content.json
Burada her Intlayer beyan anahtarı bir i18next ad alanı olarak kullanılır (örneğin, my-content.json).
Sözlükleri react-i18next Yapılandırmanıza İçe Aktarma
Bu kaynakları çalışma zamanında dinamik olarak yüklemek için i18next-resources-to-backend kullanın. Örneğin, projenizde bir i18n.ts (veya .js) dosyası oluşturun:
Kodu panoya kopyala
import i18next from "i18next";import { initReactI18next } from "react-i18next";import resourcesToBackend from "i18next-resources-to-backend";i18next // react-i18next eklentisi .use(initReactI18next) // kaynakları dinamik olarak yükle .use( resourcesToBackend((language: string, namespace: string) => { // İçe aktarma yolunu kaynak dizininize göre ayarlayın return import(`../i18next/resources/${language}/${namespace}.json`); }) ) // i18next'i başlat .init({ // Yedek yerel fallbackLng: "en", // Diğer i18next yapılandırma seçeneklerini buraya ekleyebilirsiniz, bkz.: // https://www.i18next.com/overview/configuration-options });export default i18next;
Kodu panoya kopyala
import i18next from "i18next";import { initReactI18next } from "react-i18next";import resourcesToBackend from "i18next-resources-to-backend";i18next .use(initReactI18next) .use( resourcesToBackend( (language, namespace) => import(`../i18next/resources/${language}/${namespace}.json`) ) ) .init({ fallbackLng: "en", });export default i18next;
Sonra, kök veya index dosyanızda (örneğin, src/index.tsx), bu i18n kurulumunu App render edilmeden önce içe aktarın:
Kodu panoya kopyala
import React from "react";import ReactDOM from "react-dom/client";// Her şeyden önce i18n'i başlatimport "./i18n";import App from "./App";ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( <React.StrictMode> <App /> </React.StrictMode>);
Sözlüklerinizi Oluşturma ve Yönetme
Intlayer çevirileri ./src altında (varsayılan olarak) bulunan "içerik beyan dosyalarından" çıkarır.
TypeScript'te minimal bir örnek burada:
Kodu panoya kopyala
import { t, type Dictionary } from "intlayer";const content = { // "key" sizin i18next ad alanınız olacak (örneğin, "my-component") key: "my-component", content: { // Her "t" çağrısı ayrı bir çeviri düğümüdür heading: t({ en: "Hello World", es: "Hola Mundo", fr: "Bonjour le monde", }), description: t({ en: "My i18n description text...", fr: "Ma description en i18n...", es: "Mi descripción en i18n...", }), },} satisfies Dictionary;export default content;
JSON, .cjs veya .mjs tercih ederseniz, Intlayer dokümantasyonuna bakın.
Varsayılan olarak, geçerli içerik beyanları dosya uzantısı kalıbıyla eşleşir:
*.content.{ts,tsx,js,jsx,mjs,mjx,cjs,cjx,json}
React Bileşenlerinde Çevirileri Kullanma
Intlayer kaynaklarınızı oluşturduktan ve react-i18next'i yapılandırdıktan sonra, react-i18next'ten useTranslation hook'unu doğrudan kullanabilirsiniz.
Örneğin:
Kodu panoya kopyala
import type { FC } from "react";import { useTranslation } from "react-i18next";/** * i18next "ad alanı" "MyComponent.content.ts" dosyasındaki Intlayer `key`'dir * bu yüzden useTranslation()'a "my-component" geçireceğiz. */const MyComponent: FC = () => { const { t } = useTranslation("my-component"); return ( <div> <h1>{t("heading")}</h1> <p>{t("description")}</p> </div> );};export default MyComponent;
t fonksiyonunun oluşturulan JSON içindeki anahtarlara başvurduğunu unutmayın. heading adlı bir Intlayer içerik girişi için t("heading") kullanacaksınız.
İsteğe Bağlı: Create React App Scripts (CRACO) ile Entegrasyon
react-intlayer, özel yapılar ve dev sunucu yapılandırması için CRACO tabanlı bir yaklaşım sağlar. Intlayer'ın build adımını sorunsuz bir şekilde entegre etmek istiyorsanız:
- react-intlayer yükleyin (henüz yüklemediyseniz): bash npm install react-intlayer --save-dev
package.json script'lerinizi react-intlayer script'lerini kullanacak şekilde ayarlayın:
jsoncKodu kopyalaKodu panoya kopyala
"scripts": { "start": "react-intlayer start", "build": "react-intlayer build", "transpile": "intlayer build"}
react-intlayer script'leri CRACO tabanlıdır. intlayer craco eklentisine dayalı kendi kurulumunuzu da uygulayabilirsiniz. Örneğe buradan bakın.
Şimdi, npm run build, yarn build veya pnpm build çalıştırmak hem Intlayer hem de CRA yapılarını tetikler.
TypeScript Yapılandırması
Intlayer, içeriğiniz için otomatik oluşturulan tip tanımlarını sağlar. TypeScript'in bunları almasını sağlamak için types (veya farklı yapılandırdıysanız types) dizinini tsconfig.json include dizisine ekleyin:
Kodu panoya kopyala
{ "compilerOptions": { // ... }, "include": ["src", "types"],}
Bu, TypeScript'in çevirilerinizin şeklini çıkararak daha iyi otomatik tamamlama ve hata algılama sağlamasına izin verir.
Git Yapılandırması
Intlayer tarafından otomatik oluşturulan dosyaları ve klasörleri yoksaymak önerilir. .gitignore dosyanıza bu satırı ekleyin:
Kodu panoya kopyala
# Intlayer tarafından oluşturulan dosyaları yoksay.intlayeri18next
Genellikle bu kaynakları veya .intlayer iç yapı eserlerini commit etmezsiniz, çünkü her yapıda yeniden oluşturulabilirler.