@intlayer/docs 6.1.5 → 6.1.6-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +404 -173
  2. package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +262 -113
  3. package/blog/en/intlayer_with_next-i18next.mdx +431 -0
  4. package/blog/en/intlayer_with_next-intl.mdx +335 -0
  5. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +403 -140
  6. package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +38 -28
  7. package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +185 -71
  8. package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +38 -28
  9. package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +38 -28
  10. package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +38 -28
  11. package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +38 -28
  12. package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +38 -28
  13. package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +36 -28
  14. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  15. package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +38 -28
  16. package/dist/cjs/generated/docs.entry.cjs +16 -0
  17. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  18. package/dist/esm/generated/docs.entry.mjs +16 -0
  19. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  20. package/dist/types/generated/docs.entry.d.ts +1 -0
  21. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  22. package/docs/ar/component_i18n.md +186 -0
  23. package/docs/ar/vs_code_extension.md +48 -109
  24. package/docs/de/component_i18n.md +186 -0
  25. package/docs/de/vs_code_extension.md +46 -107
  26. package/docs/en/component_i18n.md +186 -0
  27. package/docs/en/intlayer_with_nextjs_14.md +18 -1
  28. package/docs/en/intlayer_with_nextjs_15.md +18 -1
  29. package/docs/en/vs_code_extension.md +24 -114
  30. package/docs/en-GB/component_i18n.md +186 -0
  31. package/docs/en-GB/vs_code_extension.md +42 -103
  32. package/docs/es/component_i18n.md +182 -0
  33. package/docs/es/vs_code_extension.md +53 -114
  34. package/docs/fr/component_i18n.md +186 -0
  35. package/docs/fr/vs_code_extension.md +50 -111
  36. package/docs/hi/component_i18n.md +186 -0
  37. package/docs/hi/vs_code_extension.md +49 -110
  38. package/docs/it/component_i18n.md +186 -0
  39. package/docs/it/vs_code_extension.md +50 -111
  40. package/docs/ja/component_i18n.md +186 -0
  41. package/docs/ja/vs_code_extension.md +50 -111
  42. package/docs/ko/component_i18n.md +186 -0
  43. package/docs/ko/vs_code_extension.md +48 -109
  44. package/docs/pt/component_i18n.md +186 -0
  45. package/docs/pt/vs_code_extension.md +46 -107
  46. package/docs/ru/component_i18n.md +186 -0
  47. package/docs/ru/vs_code_extension.md +48 -109
  48. package/docs/tr/component_i18n.md +186 -0
  49. package/docs/tr/vs_code_extension.md +54 -115
  50. package/docs/zh/component_i18n.md +186 -0
  51. package/docs/zh/vs_code_extension.md +51 -105
  52. package/package.json +11 -11
  53. package/src/generated/docs.entry.ts +16 -0
@@ -0,0 +1,186 @@
1
+ ---
2
+ createdAt: 2024-03-07
3
+ updatedAt: 2025-09-30
4
+ title: React ve Next.js'te bir bileşeni çok dilli (i18n kütüphanesi) yapma
5
+ description: Intlayer ile çok dilli bir React veya Next.js bileşeni oluşturmak için yerelleştirilmiş içeriğin nasıl beyan edileceğini ve alınacağını öğrenin.
6
+ keywords:
7
+ - i18n
8
+ - bileşen
9
+ - react
10
+ - çok dilli
11
+ - next.js
12
+ - intlayer
13
+ slugs:
14
+ - doc
15
+ - component
16
+ - i18n
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-vite-react-template
18
+ youtubeVideo: https://www.youtube.com/watch?v=dS9L7uJeak4
19
+ ---
20
+
21
+ # Intlayer ile bir bileşeni çok dilli (i18n) nasıl yaparsınız
22
+
23
+ Bu rehber, iki yaygın kurulumda bir UI bileşenini çok dilli yapmak için gereken asgari adımları gösterir:
24
+
25
+ - React (Vite/SPA)
26
+ - Next.js (App Router)
27
+
28
+ Öncelikle içeriğinizi beyan edecek, ardından bileşeninizde içeriği alacaksınız.
29
+
30
+ ## 1) İçeriğinizi beyan edin (React ve Next.js için ortak)
31
+
32
+ Bileşeninizin yakınında bir içerik beyan dosyası oluşturun. Bu, çevirileri kullanıldıkları yere yakın tutar ve tür güvenliğini sağlar.
33
+
34
+ ```ts fileName="component.content.ts"
35
+ import { t, type Dictionary } from "intlayer";
36
+
37
+ const componentContent = {
38
+ key: "component-example",
39
+ content: {
40
+ title: t({
41
+ en: "Hello",
42
+ fr: "Bonjour",
43
+ es: "Hola",
44
+ }),
45
+ description: t({
46
+ en: "A multilingual React component",
47
+ fr: "Un composant React multilingue",
48
+ es: "Un componente React multilingüe",
49
+ }),
50
+ },
51
+ } satisfies Dictionary;
52
+
53
+ export default componentContent;
54
+ ```
55
+
56
+ Yapılandırma dosyalarını tercih ediyorsanız JSON da desteklenmektedir.
57
+
58
+ ```json fileName="component.content.json"
59
+ {
60
+ "$schema": "https://intlayer.org/schema.json",
61
+ "key": "component-example",
62
+ "content": {
63
+ "title": {
64
+ "nodeType": "translation",
65
+ "translation": { "en": "Hello", "fr": "Bonjour", "es": "Hola" }
66
+ },
67
+ "description": {
68
+ "nodeType": "translation",
69
+ "translation": {
70
+ "en": "A multilingual React component",
71
+ "fr": "Un composant React multilingue",
72
+ "es": "Un componente React multilingüe"
73
+ }
74
+ }
75
+ }
76
+ }
77
+ ```
78
+
79
+ ## 2) İçeriğinizi alın
80
+
81
+ ### Durum A — React uygulaması (Vite/SPA)
82
+
83
+ Varsayılan yaklaşım: Anahtarla almak için `useIntlayer` kullanın. Bu, bileşenleri hafif ve tipli tutar.
84
+
85
+ ```tsx fileName="ComponentExample.tsx"
86
+ import { useIntlayer } from "react-intlayer";
87
+
88
+ export function ComponentExample() {
89
+ const content = useIntlayer("component-example");
90
+ return (
91
+ <div>
92
+ <h1>{content.title}</h1>
93
+ <p>{content.description}</p>
94
+ </div>
95
+ );
96
+ }
97
+ ```
98
+
99
+ Sunucu tarafı render veya sağlayıcı dışında: `react-intlayer/server` kullanın ve gerektiğinde açık bir `locale` parametresi geçin.
100
+
101
+ ```tsx fileName="ServerRenderedExample.tsx"
102
+ import { useIntlayer } from "react-intlayer/server";
103
+
104
+ export function ServerRenderedExample({ locale }: { locale: string }) {
105
+ const content = useIntlayer("component-example", locale);
106
+ return (
107
+ <>
108
+ <h1>{content.title}</h1>
109
+ <p>{content.description}</p>
110
+ </>
111
+ );
112
+ }
113
+ ```
114
+
115
+ Alternatif: Çağrı noktasında yapıyı yan yana koymayı tercih ederseniz, `useDictionary` tüm tanımlı nesneyi okuyabilir.
116
+
117
+ ```tsx fileName="ComponentWithDictionary.tsx"
118
+ import { useDictionary } from "react-intlayer";
119
+ import componentContent from "./component.content";
120
+
121
+ export function ComponentWithDictionary() {
122
+ const { title, description } = useDictionary(componentContent);
123
+ return (
124
+ <div>
125
+ <h1>{title}</h1>
126
+ <p>{description}</p>
127
+ </div>
128
+ );
129
+ }
130
+ ```
131
+
132
+ ### Durum B — Next.js (App Router)
133
+
134
+ Veri güvenliği ve performans için sunucu bileşenlerini tercih edin. Sunucu dosyalarında `next-intlayer/server` içinden `useIntlayer` kullanın, istemci bileşenlerinde ise `next-intlayer` içinden `useIntlayer` kullanın.
135
+
136
+ ```tsx fileName="app/[locale]/example/ServerComponent.tsx"
137
+ import { useIntlayer } from "next-intlayer/server";
138
+
139
+ export default function ServerComponent() {
140
+ const content = useIntlayer("component-example");
141
+ return (
142
+ <>
143
+ <h1>{content.title}</h1>
144
+ <p>{content.description}</p>
145
+ </>
146
+ );
147
+ }
148
+ ```
149
+
150
+ ```tsx fileName="app/[locale]/example/ClientComponent.tsx"
151
+ "use client";
152
+
153
+ import { useIntlayer } from "next-intlayer";
154
+
155
+ export function ClientComponent() {
156
+ const content = useIntlayer("component-example");
157
+ return (
158
+ <div>
159
+ <h1>{content.title}</h1>
160
+ <p>{content.description}</p>
161
+ </div>
162
+ );
163
+ }
164
+ ```
165
+
166
+ İpucu: Sayfa meta verileri ve SEO için, içeriği `getIntlayer` kullanarak da alabilir ve çok dilli URL’leri `getMultilingualUrls` ile oluşturabilirsiniz.
167
+
168
+ ## Neden Intlayer’ın bileşen yaklaşımı en iyisidir
169
+
170
+ - **Birlikte konumlandırma**: İçerik beyanları bileşenlerin yakınında bulunur, sürüklenmeyi azaltır ve tasarım sistemleri arasında yeniden kullanımı artırır.
171
+ - **Tip güvenliği**: Anahtarlar ve yapılar güçlü şekilde tiplenmiştir; eksik çeviriler çalışma zamanında değil, derleme zamanında ortaya çıkar.
172
+ - **Sunucu-öncelikli**: Daha iyi güvenlik ve performans için sunucu bileşenlerinde doğal olarak çalışır; istemci kancaları ergonomik kalır.
173
+ - **Ağaç sarsma (Tree-shaking)**: Sadece bileşen tarafından kullanılan içerik paketlenir, böylece büyük uygulamalarda yükler küçük tutulur.
174
+ - **Geliştirici Deneyimi (DX) ve araçlar**: Dahili ara katman yazılımı, SEO yardımcıları ve isteğe bağlı Görsel Editör/Yapay Zeka çevirileri günlük işleri kolaylaştırır.
175
+
176
+ Next.js odaklı karşılaştırmalar ve kalıplar için bakınız: https://intlayer.org/blog/next-i18next-vs-next-intl-vs-intlayer
177
+
178
+ ## İlgili rehberler ve referanslar
179
+
180
+ - React kurulumu (Vite): https://intlayer.org/doc/environment/vite-and-react
181
+ - React Router v7: https://intlayer.org/doc/environment/vite-and-react/react-router-v7
182
+ - TanStack Başlangıç: https://intlayer.org/doc/environment/vite-and-react/tanstack-start
183
+ - Next.js kurulumu: https://intlayer.org/doc/environment/nextjs
184
+ - Neden Intlayer vs. next-intl vs. next-i18next: https://intlayer.org/blog/next-i18next-vs-next-intl-vs-intlayer
185
+
186
+ Bu sayfalar uçtan uca kurulum, sağlayıcılar, yönlendirme ve SEO yardımcılarını içerir.
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  createdAt: 2025-03-17
3
- updatedAt: 2025-09-22
4
- title: Resmi VS Code Uzantısı
5
- description: Geliştirme iş akışınızı geliştirmek için VS Code'da Intlayer uzantısını nasıl kullanacağınızı öğrenin. Yerelleştirilmiş içerikler arasında hızlıca gezin ve sözlüklerinizi verimli bir şekilde yönetin.
3
+ updatedAt: 2025-09-30
4
+ title: Resmi VS Code Eklentisi
5
+ description: Geliştirme iş akışınızı geliştirmek için VS Code'da Intlayer eklentisinin nasıl kullanılacağını öğrenin. Yerelleştirilmiş içerikler arasında hızlıca gezin ve sözlüklerinizi verimli bir şekilde yönetin.
6
6
  keywords:
7
- - VS Code Uzantısı
7
+ - VS Code Eklentisi
8
8
  - Intlayer
9
9
  - Yerelleştirme
10
10
  - Geliştirme Araçları
@@ -17,105 +17,49 @@ slugs:
17
17
  - vs-code-extension
18
18
  ---
19
19
 
20
- # Resmi VS Code Uzantısı
20
+ # Resmi VS Code Eklentisi
21
21
 
22
22
  ## Genel Bakış
23
23
 
24
- [**Intlayer**](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension), projelerinizde yerelleştirilmiş içeriklerle çalışırken geliştirici deneyimini iyileştirmek için tasarlanmış **Intlayer**'ın resmi Visual Studio Code uzantısıdır.
24
+ [**Intlayer**](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension), projelerinizde yerelleştirilmiş içeriklerle çalışırken geliştirici deneyimini iyileştirmek için tasarlanmış **Intlayer**'ın resmi Visual Studio Code eklentisidir.
25
25
 
26
- ![Intlayer VS Code Uzantısı](https://github.com/aymericzip/intlayer/blob/main/docs/assets/vs_code_extension_demo.gif)
26
+ ![Intlayer VS Code Eklentisi](https://github.com/aymericzip/intlayer/blob/main/docs/assets/vs_code_extension_demo.gif?raw=true)
27
27
 
28
- Uzantı bağlantısı: [https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension)
28
+ Eklenti bağlantısı: [https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension)
29
29
 
30
30
  ## Özellikler
31
31
 
32
- ### Anında Gezinme
32
+ ![Sözlükleri doldur](https://github.com/aymericzip/intlayer-vs-code-extension/blob/master/assets/vscode_extention_fill_active_dictionary.gif?raw=true)
33
33
 
34
- **Tanıma Git Desteği** – `useIntlayer` anahtarında `⌘ + Tıklama` (Mac) veya `Ctrl + Tıklama` (Windows/Linux) kullanarak ilgili içerik dosyasını anında açın.
35
- **Sorunsuz Entegrasyon** – **react-intlayer** ve **next-intlayer** projeleriyle sorunsuz çalışır.
36
- **Çok Dilli Destek** – Farklı dillerde yerelleştirilmiş içerikleri destekler.
37
- **VS Code Entegrasyonu** – VS Code’un gezinme ve komut paleti ile sorunsuz entegre olur.
34
+ - **Anında Gezinme** – `useIntlayer` anahtarına tıkladığınızda doğru içerik dosyasına hızlıca atlayın.
35
+ - **Sözlükleri Doldur** – Projenizden içeriklerle sözlükleri doldurun.
38
36
 
39
- ### Sözlük Yönetim Komutları
37
+ ![Komutları listele](https://github.com/aymericzip/intlayer-vs-code-extension/blob/master/assets/vscode_extention_list_commands.gif?raw=true)
40
38
 
41
- İçerik sözlüklerinizi doğrudan VS Code’dan yönetin:
39
+ - **Intlayer Komutlarına Kolay Erişim** – İçerik sözlüklerini kolayca oluşturun, gönderin, çekin, doldurun ve test edin.
42
40
 
43
- - **Sözlükleri Oluştur** – Proje yapınıza göre içerik dosyaları oluşturur.
44
- - **Sözlükleri Gönder** – En son sözlük içeriğini deponuza yükler.
45
- - **Sözlükleri Çek** – En son sözlük içeriğini deponuzdan yerel ortamınıza senkronize eder.
46
- - **Sözlükleri Doldur** – Sözlükleri projenizden içerik ile doldurur.
47
- - **Sözlükleri Test Et** – Eksik veya tamamlanmamış çevirileri tespit eder.
41
+ ![İçerik dosyası oluştur](https://github.com/aymericzip/intlayer-vs-code-extension/blob/master/assets/vscode_extention_create_content_file.gif?raw=true)
48
42
 
49
- ### İçerik Beyanı Oluşturucu
43
+ - **İçerik Beyanı Oluşturucu** – Sözlük içerik dosyalarını çeşitli formatlarda oluşturun (`.ts`, `.esm`, `.cjs`, `.json`).
50
44
 
51
- Farklı formatlarda yapılandırılmış sözlük dosyalarını kolayca oluşturun:
45
+ ![Sözlükleri test et](https://github.com/aymericzip/intlayer-vs-code-extension/blob/master/assets/vscode_extention_test_missing_dictionary.gif?raw=true)
52
46
 
53
- Eğer şu anda bir bileşen üzerinde çalışıyorsanız, sizin için `.content.{ts,tsx,js,jsx,mjs,cjs,json}` dosyasını oluşturacaktır.
47
+ - **Sözlükleri Test Et** Eksik çeviriler için sözlükleri test edin.
54
48
 
55
- Bileşen örneği:
49
+ ![Sözlüğü yeniden oluştur](https://github.com/aymericzip/intlayer-vs-code-extension/blob/master/assets/vscode_extention_rebuild_dictionary.gif?raw=true)
56
50
 
57
- ```tsx fileName="src/components/MyComponent/index.tsx"
58
- const MyComponent = () => {
59
- const { myTranslatedContent } = useIntlayer("my-component");
51
+ - **Sözlüklerinizi güncel tutun** – Projenizden en son içeriklerle sözlüklerinizi güncel tutun.
60
52
 
61
- return <span>{myTranslatedContent}</span>;
62
- };
63
- ```
64
-
65
- TypeScript formatında oluşturulan dosya:
66
-
67
- ```tsx fileName="src/components/MyComponent/index.content.ts"
68
- import { t, type Dictionary } from "intlayer";
69
-
70
- const componentContent = {
71
- key: "my-component",
72
- content: {
73
- myTranslatedContent: t({
74
- en: "Hello World",
75
- es: "Hola Mundo",
76
- fr: "Bonjour le monde",
77
- }),
78
- },
79
- };
80
-
81
- export default componentContent;
82
- ```
83
-
84
- Mevcut formatlar:
85
-
86
- - **TypeScript (`.ts`)**
87
- - **ES Modülü (`.esm`)**
88
- - **CommonJS (`.cjs`)**
89
- - **JSON (`.json`)**
90
-
91
- ### Intlayer Sekmesi (Aktivite Çubuğu)
53
+ ![Intlayer Sekmesi (Aktivite Çubuğu)](https://github.com/aymericzip/intlayer-vs-code-extension/blob/master/assets/vscode_extention_search_dictionary.gif?raw=true)
92
54
 
93
- VS Code Aktivite Çubuğundaki Intlayer simgesine tıklayarak Intlayer sekmesini açın. Bu sekme iki görünüm içerir:
94
-
95
- - **Arama**: Sözlükleri ve içeriklerini hızlıca filtrelemek için canlı bir arama çubuğu. Yazdıkça sonuçlar anında güncellenir.
96
- - **Sözlükler**: Ortamlarınız/projeleriniz, sözlük anahtarları ve giriş sağlayan dosyaların ağaç görünümü. Şunları yapabilirsiniz:
97
- - Bir dosyaya tıklayarak düzenleyicide açabilirsiniz.
98
- - Araç çubuğunu kullanarak şu işlemleri yapabilirsiniz: Derle (Build), Çek (Pull), Gönder (Push), Doldur (Fill), Yenile (Refresh), Test Et (Test) ve Sözlük Dosyası Oluştur (Create Dictionary File).
99
- - Öğeye özel işlemler için bağlam menüsünü kullanabilirsiniz:
100
- - Bir sözlük üzerinde: Çek (Pull) veya Gönder (Push)
101
- - Bir dosya üzerinde: Sözlüğü Doldur (Fill Dictionary)
102
- - Düzenleyiciler arasında geçiş yaptığınızda, dosya bir sözlüğe aitse ağaç görünümü ilgili dosyayı gösterecektir.
103
-
104
- ## Kurulum
105
-
106
- **Intlayer**'ı doğrudan VS Code Marketplace'ten yükleyebilirsiniz:
107
-
108
- 1. **VS Code**'u açın.
109
- 2. **Extensions Marketplace**'e gidin.
110
- 3. **"Intlayer"** için arama yapın.
111
- 4. **Install** (Yükle) butonuna tıklayın.
55
+ - **Intlayer Sekmesi (Aktivite Çubuğu)** Araç çubuğu ve bağlam eylemleri (Oluştur, Çek, Gönder, Doldur, Yenile, Test Et, Dosya Oluştur) ile özel bir yan sekmeden sözlükleri göz atın ve arayın.
112
56
 
113
57
  ## Kullanım
114
58
 
115
- ### Hızlı Gezinme
59
+ ### Hızlı Navigasyon
116
60
 
117
61
  1. **react-intlayer** kullanan bir projeyi açın.
118
- 2. `useIntlayer()` çağrısını bulun, örneğin:
62
+ 2. Şu gibi bir `useIntlayer()` çağrısı bulun:
119
63
 
120
64
  ```tsx
121
65
  const content = useIntlayer("app");
@@ -124,60 +68,55 @@ VS Code Aktivite Çubuğundaki Intlayer simgesine tıklayarak Intlayer sekmesini
124
68
  3. Anahtar üzerinde **Command-click** (`⌘+Click` macOS'ta) veya **Ctrl+Click** (Windows/Linux'ta) yapın (örneğin, `"app"`).
125
69
  4. VS Code otomatik olarak ilgili sözlük dosyasını açacaktır, örneğin `src/app.content.ts`.
126
70
 
127
- ### İçerik Sözlüklerini Yönetme
128
-
129
- ### Intlayer Sekmesi (Activity Bar)
71
+ ### Intlayer Sekmesi (Aktivite Çubuğu)
130
72
 
131
- Sözlükleri gözden geçirmek ve yönetmek için yan sekmeyi kullanın:
73
+ Yan sekmeyi kullanarak sözlüklerde gezinin ve yönetin:
132
74
 
133
- - Activity Bar'daki Intlayer simgesini açın.
75
+ - Aktivite Çubuğunda Intlayer simgesini açın.
134
76
  - **Arama** bölümünde, sözlükleri ve girdileri gerçek zamanlı olarak filtrelemek için yazın.
135
- - **Sözlükler** bölümünde, ortamları, sözlükleri ve dosyaları gezinin. Araç çubuğunu Kullanarak Oluştur, Çek, Gönder, Doldur, Yenile, Test Et ve Sözlük Dosyası Oluştur işlemlerini yapabilirsiniz. Bağlam menüsü için sağ tıklayın (sözlüklerde Çek/Gönder, dosyalarda Doldur). Geçerli düzenleyici dosyası, uygun olduğunda ağaçta otomatik olarak gösterilir.
77
+ - **Sözlükler** bölümünde, ortamları, sözlükleri ve dosyaları göz atın. Araç çubuğunu kullanarak Oluştur, Çek, Gönder, Doldur, Yenile, Test Et ve Sözlük Dosyası Oluştur işlemlerini yapabilirsiniz. Bağlam eylemleri için sağ tıklayın (sözlüklerde Çek/Gönder, dosyalarda Doldur). Geçerli düzenleyici dosyası uygun olduğunda ağaçta otomatik olarak gösterilir.
136
78
 
137
- #### Sözlükleri Oluşturma
79
+ ### Komutlara Erişim
138
80
 
139
- Tüm sözlük içerik dosyalarını oluşturmak için:
81
+ Komutlara **Komut Paleti** üzerinden erişebilirsiniz.
140
82
 
141
83
  ```sh
142
84
  Cmd + Shift + P (macOS) / Ctrl + Shift + P (Windows/Linux)
143
85
  ```
144
86
 
145
- **Sözlükleri Oluştur** komutunu arayın ve çalıştırın.
146
-
147
- #### Sözlükleri Gönderme
148
-
149
- En son sözlük içeriğini yüklemek için:
150
-
151
- 1. **Komut Paletini** açın.
152
- 2. **Sözlükleri Gönder** araması yapın.
153
- 3. Göndermek istediğiniz sözlükleri seçin ve onaylayın.
154
-
155
- #### Sözlükleri Çekme
87
+ - **Sözlükleri Oluştur**
88
+ - **Sözlükleri Gönder**
89
+ - **Sözlükleri Çek**
90
+ - **Sözlükleri Doldur**
91
+ - **Sözlükleri Test Et**
92
+ - **Sözlük Dosyası Oluştur**
156
93
 
157
- En son sözlük içeriğini senkronize edin:
94
+ ### Ortam Değişkenlerini Yükleme
158
95
 
159
- 1. **Komut Paletini** açın.
160
- 2. **Sözlükleri Çek** araması yapın.
161
- 3. Çekmek istediğiniz sözlükleri seçin.
96
+ Intlayer, AI API anahtarlarınızı ve ayrıca Intlayer istemci kimliği ile gizli anahtarınızı ortam değişkenlerinde saklamanızı önerir.
162
97
 
163
- #### Sözlükleri Doldurma
98
+ Eklenti, Intlayer komutlarını doğru bağlamda çalıştırmak için çalışma alanınızdan ortam değişkenlerini yükleyebilir.
164
99
 
165
- Sözlükleri projenizden gelen içerikle doldurun:
100
+ - **Yükleme sırası (öncelik sırasına göre)**: `.env.<env>.local` → `.env.<env>` → `.env.local` → `.env`
101
+ - **Yıkıcı olmayan**: mevcut `process.env` değerleri üzerine yazılmaz.
102
+ - **Kapsam**: dosyalar, yapılandırılmış temel dizinden çözülür (varsayılan olarak çalışma alanı kökü).
166
103
 
167
- 1. **Komut Paletini** açın.
168
- 2. **Sözlükleri Doldur** araması yapın.
169
- 3. Sözlükleri doldurmak için komutu çalıştırın.
104
+ #### Aktif ortamı seçme
170
105
 
171
- #### Sözlükleri Test Etme
106
+ - **Komut Paleti**: paleti açın ve `Intlayer: Select Environment` komutunu çalıştırın, ardından ortamı seçin (örneğin, `development`, `staging`, `production`). Eklenti, yukarıdaki öncelik listesinde bulunan ilk uygun dosyayı yüklemeye çalışacak ve “.env.<env>.local dosyasından ortam yüklendi” gibi bir bildirim gösterecektir.
107
+ - **Ayarlar**: `Ayarlar → Eklentiler → Intlayer` yolunu izleyin ve şunları ayarlayın:
108
+ - **Ortam**: `.env.<env>*` dosyalarını çözümlemek için kullanılan ortam adı.
109
+ - (İsteğe bağlı) **Env Dosyası**: açıkça belirtilmiş bir `.env` dosyası yolu. Sağlandığında, çıkarılan listedeki dosyalardan öncelikli olarak kullanılır.
172
110
 
173
- Sözlükleri doğrulayın ve eksik çevirileri bulun:
111
+ #### Monorepo ve özel dizinler
174
112
 
175
- 1. **Komut Paletini** açın.
176
- 2. **Sözlükleri Test Et** araması yapın.
177
- 3. Raporlanan sorunları inceleyin ve gerektiği şekilde düzeltin.
113
+ Eğer `.env` dosyalarınız çalışma alanı kökünün dışında bulunuyorsa, `Ayarlar → Eklentiler → Intlayer` yolunda **Temel Dizin**i ayarlayın. Yükleyici, `.env` dosyalarını bu dizine göre arayacaktır.
178
114
 
179
115
  ## Doküman Geçmişi
180
116
 
181
- | Sürüm | Tarih | Değişiklikler |
182
- | ------ | ---------- | ----------------- |
183
- | 5.5.10 | 2025-06-29 | Geçmiş başlatıldı |
117
+ | Sürüm | Tarih | Değişiklikler |
118
+ | ------ | ---------- | ------------------------------------------ |
119
+ | 6.1.5 | 2025-09-30 | Demo gif eklendi |
120
+ | 6.1.0 | 2025-09-24 | Ortam seçimi bölümü eklendi |
121
+ | 6.0.0 | 2025-09-22 | Intlayer Sekmesi / Doldur & Test komutları |
122
+ | 5.5.10 | 2025-06-29 | Başlangıç geçmişi |
@@ -0,0 +1,186 @@
1
+ ---
2
+ createdAt: 2024-03-07
3
+ updatedAt: 2025-09-30
4
+ title: 在 React 和 Next.js 中制作多语言(i18n)组件
5
+ description: 学习如何声明和获取本地化内容,以使用 Intlayer 构建多语言 React 或 Next.js 组件。
6
+ keywords:
7
+ - i18n
8
+ - 组件
9
+ - react
10
+ - 多语言
11
+ - next.js
12
+ - intlayer
13
+ slugs:
14
+ - doc
15
+ - component
16
+ - i18n
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-vite-react-template
18
+ youtubeVideo: https://www.youtube.com/watch?v=dS9L7uJeak4
19
+ ---
20
+
21
+ # 如何使用 Intlayer 制作多语言(i18n)组件
22
+
23
+ 本指南展示了在两种常见环境中制作多语言 UI 组件的最简步骤:
24
+
25
+ - React(Vite/单页应用)
26
+ - Next.js(应用路由)
27
+
28
+ 您将首先声明内容,然后在组件中获取内容。
29
+
30
+ ## 1) 声明您的内容(适用于 React 和 Next.js)
31
+
32
+ 在组件附近创建一个内容声明文件。这可以让翻译内容靠近使用位置,并且支持类型安全。
33
+
34
+ ```ts fileName="component.content.ts"
35
+ import { t, type Dictionary } from "intlayer";
36
+
37
+ const componentContent = {
38
+ key: "component-example",
39
+ content: {
40
+ title: t({
41
+ en: "Hello",
42
+ fr: "Bonjour",
43
+ es: "Hola",
44
+ }),
45
+ description: t({
46
+ en: "A multilingual React component",
47
+ fr: "Un composant React multilingue",
48
+ es: "Un componente React multilingüe",
49
+ }),
50
+ },
51
+ } satisfies Dictionary;
52
+
53
+ export default componentContent;
54
+ ```
55
+
56
+ 如果您更喜欢配置文件,也支持 JSON 格式。
57
+
58
+ ```json fileName="component.content.json"
59
+ {
60
+ "$schema": "https://intlayer.org/schema.json",
61
+ "key": "component-example",
62
+ "content": {
63
+ "title": {
64
+ "nodeType": "translation",
65
+ "translation": { "en": "Hello", "fr": "Bonjour", "es": "Hola" }
66
+ },
67
+ "description": {
68
+ "nodeType": "translation",
69
+ "translation": {
70
+ "en": "一个多语言的 React 组件",
71
+ "fr": "Un composant React multilingue",
72
+ "es": "Un componente React multilingüe"
73
+ }
74
+ }
75
+ }
76
+ }
77
+ ```
78
+
79
+ ## 2) 获取您的内容
80
+
81
+ ### 情况 A — React 应用 (Vite/SPA)
82
+
83
+ 默认方法:使用 `useIntlayer` 通过键来获取内容。这使组件保持简洁且类型安全。
84
+
85
+ ```tsx fileName="ComponentExample.tsx"
86
+ import { useIntlayer } from "react-intlayer";
87
+
88
+ export function ComponentExample() {
89
+ const content = useIntlayer("component-example");
90
+ return (
91
+ <div>
92
+ <h1>{content.title}</h1>
93
+ <p>{content.description}</p>
94
+ </div>
95
+ );
96
+ }
97
+ ```
98
+
99
+ 服务器端渲染或在提供者外部使用时:使用 `react-intlayer/server`,并在需要时传入明确的 `locale`。
100
+
101
+ ```tsx fileName="ServerRenderedExample.tsx"
102
+ import { useIntlayer } from "react-intlayer/server";
103
+
104
+ export function ServerRenderedExample({ locale }: { locale: string }) {
105
+ const content = useIntlayer("component-example", locale);
106
+ return (
107
+ <>
108
+ <h1>{content.title}</h1>
109
+ <p>{content.description}</p>
110
+ </>
111
+ );
112
+ }
113
+ ```
114
+
115
+ 另一种方式:如果你更喜欢在调用处组织结构,可以使用 `useDictionary` 读取整个声明的对象。
116
+
117
+ ```tsx fileName="ComponentWithDictionary.tsx"
118
+ import { useDictionary } from "react-intlayer";
119
+ import componentContent from "./component.content";
120
+
121
+ export function ComponentWithDictionary() {
122
+ const { title, description } = useDictionary(componentContent);
123
+ return (
124
+ <div>
125
+ <h1>{title}</h1>
126
+ <p>{description}</p>
127
+ </div>
128
+ );
129
+ }
130
+ ```
131
+
132
+ ### 方案 B — Next.js(App 路由)
133
+
134
+ 优先使用服务器组件以确保数据安全和性能。在服务器文件中使用来自 `next-intlayer/server` 的 `useIntlayer`,在客户端组件中使用来自 `next-intlayer` 的 `useIntlayer`。
135
+
136
+ ```tsx fileName="app/[locale]/example/ServerComponent.tsx"
137
+ import { useIntlayer } from "next-intlayer/server";
138
+
139
+ export default function ServerComponent() {
140
+ const content = useIntlayer("component-example");
141
+ return (
142
+ <>
143
+ <h1>{content.title}</h1>
144
+ <p>{content.description}</p>
145
+ </>
146
+ );
147
+ }
148
+ ```
149
+
150
+ ```tsx fileName="app/[locale]/example/ClientComponent.tsx"
151
+ "use client";
152
+
153
+ import { useIntlayer } from "next-intlayer";
154
+
155
+ export function ClientComponent() {
156
+ const content = useIntlayer("component-example");
157
+ return (
158
+ <div>
159
+ <h1>{content.title}</h1>
160
+ <p>{content.description}</p>
161
+ </div>
162
+ );
163
+ }
164
+ ```
165
+
166
+ 提示:对于页面元数据和 SEO,您还可以使用 `getIntlayer` 获取内容,并通过 `getMultilingualUrls` 生成多语言 URL。
167
+
168
+ ## 为什么 Intlayer 的组件方法是最佳选择
169
+
170
+ - **内容共置**:内容声明与组件紧密相邻,减少偏差并提升设计系统中的复用性。
171
+ - **类型安全**:键和值结构均为强类型;缺失的翻译会在构建时而非运行时暴露。
172
+ - **服务器优先**:原生支持服务器组件,提升安全性和性能;客户端钩子依然保持良好的使用体验。
173
+ - **摇树优化**:仅打包组件实际使用的内容,保持大型应用的负载体积小。
174
+ - **开发体验与工具**:内置中间件、SEO助手,以及可选的可视化编辑器/AI翻译,简化日常工作流程。
175
+
176
+ 请参阅针对 Next.js 的对比和模式总结:https://intlayer.org/blog/next-i18next-vs-next-intl-vs-intlayer
177
+
178
+ ## 相关指南和参考资料
179
+
180
+ - React 设置(Vite):https://intlayer.org/doc/environment/vite-and-react
181
+ - React Router v7:https://intlayer.org/doc/environment/vite-and-react/react-router-v7
182
+ - TanStack 入门:https://intlayer.org/doc/environment/vite-and-react/tanstack-start
183
+ - Next.js 设置:https://intlayer.org/doc/environment/nextjs
184
+ - 为什么选择 Intlayer 而不是 next-intl 或 next-i18next:https://intlayer.org/blog/next-i18next-vs-next-intl-vs-intlayer
185
+
186
+ 这些页面包含端到端的设置、提供者、路由和 SEO 辅助工具。