@intlayer/docs 8.1.6 → 8.1.7

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 (81) hide show
  1. package/README.md +18 -9
  2. package/dist/cjs/generated/docs.entry.cjs +1 -1
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +1 -1
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +2 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/compiler.md +26 -0
  9. package/docs/ar/intlayer_with_nextjs_compiler.md +481 -0
  10. package/docs/ar/intlayer_with_vite+react_compiler.md +369 -0
  11. package/docs/ar/readme.md +138 -110
  12. package/docs/de/compiler.md +26 -0
  13. package/docs/de/intlayer_with_nextjs_compiler.md +481 -0
  14. package/docs/de/intlayer_with_vite+react_compiler.md +369 -0
  15. package/docs/de/readme.md +152 -124
  16. package/docs/en/compiler.md +27 -0
  17. package/docs/en/intlayer_with_nextjs_compiler.md +481 -0
  18. package/docs/en/intlayer_with_vite+react_compiler.md +368 -0
  19. package/docs/en/readme.md +129 -105
  20. package/docs/en-GB/compiler.md +26 -0
  21. package/docs/en-GB/intlayer_with_nextjs_compiler.md +481 -0
  22. package/docs/en-GB/intlayer_with_vite+react_compiler.md +369 -0
  23. package/docs/en-GB/readme.md +134 -108
  24. package/docs/es/compiler.md +26 -0
  25. package/docs/es/intlayer_with_nextjs_compiler.md +481 -0
  26. package/docs/es/intlayer_with_vite+react_compiler.md +369 -0
  27. package/docs/es/readme.md +149 -121
  28. package/docs/fr/compiler.md +26 -0
  29. package/docs/fr/intlayer_with_nextjs_compiler.md +481 -0
  30. package/docs/fr/intlayer_with_vite+react_compiler.md +369 -0
  31. package/docs/fr/readme.md +150 -122
  32. package/docs/hi/compiler.md +26 -0
  33. package/docs/hi/intlayer_with_nextjs_compiler.md +481 -0
  34. package/docs/hi/intlayer_with_vite+react_compiler.md +370 -0
  35. package/docs/hi/readme.md +153 -125
  36. package/docs/id/compiler.md +26 -0
  37. package/docs/id/intlayer_with_nextjs_compiler.md +481 -0
  38. package/docs/id/intlayer_with_vite+react_compiler.md +369 -0
  39. package/docs/id/readme.md +133 -105
  40. package/docs/it/compiler.md +26 -0
  41. package/docs/it/intlayer_with_nextjs_compiler.md +481 -0
  42. package/docs/it/intlayer_with_vite+react_compiler.md +374 -0
  43. package/docs/it/readme.md +155 -127
  44. package/docs/ja/compiler.md +26 -0
  45. package/docs/ja/intlayer_with_nextjs_compiler.md +481 -0
  46. package/docs/ja/intlayer_with_vite+react_compiler.md +369 -0
  47. package/docs/ja/readme.md +152 -126
  48. package/docs/ko/compiler.md +26 -0
  49. package/docs/ko/intlayer_with_nextjs_compiler.md +481 -0
  50. package/docs/ko/intlayer_with_vite+react_compiler.md +369 -0
  51. package/docs/ko/readme.md +154 -126
  52. package/docs/pl/compiler.md +26 -0
  53. package/docs/pl/intlayer_with_nextjs_compiler.md +481 -0
  54. package/docs/pl/intlayer_with_vite+react_compiler.md +369 -0
  55. package/docs/pl/readme.md +134 -106
  56. package/docs/pt/compiler.md +27 -1
  57. package/docs/pt/intlayer_with_nextjs_compiler.md +481 -0
  58. package/docs/pt/intlayer_with_vite+react_compiler.md +374 -0
  59. package/docs/pt/readme.md +154 -126
  60. package/docs/ru/compiler.md +26 -0
  61. package/docs/ru/intlayer_with_nextjs_compiler.md +481 -0
  62. package/docs/ru/intlayer_with_vite+react_compiler.md +369 -0
  63. package/docs/ru/readme.md +137 -109
  64. package/docs/tr/compiler.md +26 -0
  65. package/docs/tr/intlayer_with_nextjs_compiler.md +481 -0
  66. package/docs/tr/intlayer_with_vite+react_compiler.md +375 -0
  67. package/docs/tr/readme.md +139 -111
  68. package/docs/uk/compiler.md +26 -0
  69. package/docs/uk/intlayer_with_nextjs_compiler.md +481 -0
  70. package/docs/uk/intlayer_with_vite+react_compiler.md +369 -0
  71. package/docs/uk/readme.md +133 -109
  72. package/docs/vi/compiler.md +27 -1
  73. package/docs/vi/intlayer_with_nextjs_compiler.md +481 -0
  74. package/docs/vi/intlayer_with_vite+react_compiler.md +369 -0
  75. package/docs/vi/readme.md +138 -110
  76. package/docs/zh/compiler.md +26 -0
  77. package/docs/zh/intlayer_with_nextjs_compiler.md +481 -0
  78. package/docs/zh/intlayer_with_vite+react_compiler.md +372 -0
  79. package/docs/zh/readme.md +148 -120
  80. package/package.json +7 -8
  81. package/src/generated/docs.entry.ts +40 -0
@@ -0,0 +1,481 @@
1
+ ---
2
+ createdAt: 2026-01-10
3
+ updatedAt: 2026-01-10
4
+ title: Next.js i18n - Mevcut bir Next.js uygulamasını çok dilli bir uygulamaya dönüştürün (i18n kılavuzu 2026)
5
+ description: Intlayer Derleyicisi'ni kullanarak mevcut Next.js uygulamanızı nasıl çok dilli yapacağınızı keşfedin. Uygulamanızı uluslararasılaştırmak (i18n) ve AI ile çevirmek için kılavuzu takip edin.
6
+ keywords:
7
+ - Uluslararasılaştırma
8
+ - Belgelendirme
9
+ - Intlayer
10
+ - Next.js
11
+ - JavaScript
12
+ - React
13
+ - Derleyici
14
+ - AI
15
+ slugs:
16
+ - doc
17
+ - yapılandırma
18
+ - nextjs
19
+ - derleyici
20
+ applicationTemplate: https://github.com/aymericzip/intlayer-next-no-lolale-path-template
21
+ youtubeVideo: https://www.youtube.com/watch?v=e_PPG7PTqGU
22
+ history:
23
+ - version: 8.1.6
24
+ date: 2026-02-23
25
+ changes: İlk Sürüm
26
+ ---
27
+
28
+ # Mevcut bir Next.js uygulamasını çok dilli (i18n) hale getirme (i18n kılavuzu 2026)
29
+
30
+ <Tabs defaultTab="video">
31
+ <Tab label="Video" value="video">
32
+
33
+ <iframe title="Next.js için en iyi i18n çözümü mü? Intlayer'ı Keşfedin" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
34
+
35
+ </Tab>
36
+ <Tab label="Kod" value="code">
37
+
38
+ <iframe
39
+ src="https://stackblitz.com/github/aymericzip/intlayer-next-16-no-locale-path-template?embed=1&ctl=1&file=intlayer.config.ts"
40
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
41
+ title="CodeSandbox Demosu - Uygulamanızı Intlayer ile nasıl uluslararasılaştırırsınız"
42
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
43
+ loading="lazy"
44
+ />
45
+
46
+ </Tab>
47
+ </Tabs>
48
+
49
+ GitHub'daki [Uygulama Şablonunu](https://github.com/aymericzip/intlayer-next-no-lolale-path-template) inceleyin.
50
+
51
+ ## İçindekiler
52
+
53
+ <TOC/>
54
+
55
+ ## Mevcut bir uygulamayı uluslararasılaştırmak neden zordur?
56
+
57
+ Eğer daha önce sadece tek bir dil için oluşturulmuş bir uygulamaya birden fazla dil eklemeye çalıştıysanız, bunun ne kadar zor olduğunu bilirsiniz. Bu sadece "zor" değil, aynı zamanda sıkıcıdır. Her dosyayı incelemeli, her metin dizesini bulmalı ve bunları ayrı sözlük dosyalarına taşımalısınız.
58
+
59
+ Ardından asıl riskli kısım gelir: Tasarımı veya iş mantığını bozmadan tüm bu metinleri kod kancalarıyla değiştirmek. Bu, yeni özelliklerin geliştirilmesini haftalarca durduran ve bitmek bilmeyen bir refaktöring hissi veren bir iştir.
60
+
61
+ ## Intlayer Derleyicisi Nedir?
62
+
63
+ **Intlayer Derleyicisi**, bu manuel işleri atlamanız için yaratıldı. Metin dizelerini manuel olarak çıkarmak yerine, derleyici bunu sizin yerinize yapar. Kodunuzu tarar, metinleri bulur ve arka planda sözlükleri oluşturmak için AI kullanır.
64
+ Daha sonra, derleme adımı sırasında gerekli i18n hook'larını yerleştirmek için kaynak kodunuzu değiştirir. Temel olarak uygulamanızı tek bir dildeymiş gibi yazmaya devam edersiniz ve derleyici çok dilli dönüştürme işlemini otomatik olarak yönetir.
65
+
66
+ > Derleyici belgeleri: [https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/compiler.md](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/compiler.md)
67
+
68
+ ### Sınırlamalar
69
+
70
+ Derleyici kod analizini ve dönüşümünü (hook yerleştirme ve sözlük oluşturma) **derleme anında** gerçekleştirdiği için uygulamanızın **derleme süresini yavaşlatabilir**.
71
+
72
+ Aktif geliştirme sırasında (dev modu) bu etkiyi sınırlamak için derleyiciyi [`'build-only'`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md) moduna ayarlayabilir veya ihtiyaç duymadığınızda devre dışı bırakabilirsiniz.
73
+
74
+ ---
75
+
76
+ ## Next.js uygulamasında Intlayer Kurulumu için Adım Adım Kılavuz
77
+
78
+ ### Adım 1: Bağımlılıkları Yükleyin
79
+
80
+ Tercih ettiğiniz paket yöneticisini kullanarak gerekli paketleri yükleyin:
81
+
82
+ ```bash packageManager="npm"
83
+ npm install intlayer next-intlayer
84
+ npm install @intlayer/babel --save-dev
85
+ npx intlayer init
86
+ ```
87
+
88
+ ```bash packageManager="pnpm"
89
+ pnpm add intlayer next-intlayer
90
+ pnpm add @intlayer/babel --save-dev
91
+ pnpm intlayer init
92
+ ```
93
+
94
+ ```bash packageManager="yarn"
95
+ yarn add intlayer next-intlayer
96
+ yarn add @intlayer/babel --save-dev
97
+ yarn intlayer init
98
+ ```
99
+
100
+ ```bash packageManager="bun"
101
+ bun add intlayer next-intlayer
102
+ bun add @intlayer/babel --dev
103
+ bunx intlayer init
104
+ ```
105
+
106
+ - **intlayer**
107
+
108
+ Yapılandırma yönetimi, çeviri, [içerik tanımlama](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/dictionary/content_file.md), derleme ve [CLI komutları](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/index.md) için uluslararasılaştırma araçlarını sağlayan temel pakettir.
109
+
110
+ - **next-intlayer**
111
+
112
+ Intlayer'ı Next.js ile entegre eden pakettir. Next.js uluslararasılaştırması için bağlam sağlayıcıları ve hook'lar sunar. Ayrıca Intlayer'ı [Webpack](https://webpack.js.org/) veya [Turbopack](https://nextjs.org/docs/app/api-reference/turbopack) ile entegre etmek için Next.js eklentisinin yanı sıra kullanıcının tercih ettiği dili algılamak, çerezleri yönetmek ve URL yönlendirmelerini idare etmek için ara yazılım (middleware) içerir.
113
+
114
+ ### Adım 2: Projenizi Yapılandırın
115
+
116
+ Uygulamanızın dillerini tanımlamak için bir yapılandırma dosyası oluşturun:
117
+
118
+ ```typescript fileName="intlayer.config.ts"
119
+ import { Locales, type IntlayerConfig } from "intlayer";
120
+
121
+ const config: IntlayerConfig = {
122
+ internationalization: {
123
+ locales: [Locales.ENGLISH, Locales.TURKISH],
124
+ defaultLocale: Locales.TURKISH,
125
+ },
126
+ routing: {
127
+ mode: "search-params",
128
+ },
129
+ compiler: {
130
+ enabled: true, // Dev modundaki etkiyi sınırlamak için 'build-only' olarak ayarlanabilir
131
+ outputDir: "i18n",
132
+ dictionaryKeyPrefix: "", // Derleme ön eki yok, varsayılan "comp-"
133
+ },
134
+ ai: {
135
+ provider: "openai",
136
+ model: "gpt-5-mini",
137
+ apiKey: process.env.OPEN_AI_API_KEY,
138
+ applicationContext: "Bu basit bir harita uygulaması örneğidir",
139
+ },
140
+ };
141
+
142
+ export default config;
143
+ ```
144
+
145
+ > **Not**: `OPEN_AI_API_KEY`'nin çevresel değişkenleriniz içinde yapılandırıldığından emin olun.
146
+
147
+ > Bu yapılandırma dosyası ile yerelleştirilmiş URL'leri, vekil yönlendirmelerini, çerez eşlemelerini, içerik dosyalarınızın konumu ve uzantısını ayarlayabilir, konsoldaki Intlayer günlüklerini devre dışı bırakabilir ve daha fazlasını yapabilirsiniz. Kullanılabilir parametrelerin tam listesi için [yapılandırma belgelerine](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md) göz atın.
148
+
149
+ ### Adım 3: Intlayer'ı Next.js Yapılandırmanıza Entegre Edin
150
+
151
+ Next.js kurulumunuzu Intlayer kullanacak şekilde yapılandırın:
152
+
153
+ ```typescript fileName="next.config.ts"
154
+ import type { NextConfig } from "next";
155
+ import { withIntlayer } from "next-intlayer/server";
156
+
157
+ const nextConfig: NextConfig = {
158
+ /* Buraya isteğe bağlı ek Next.js yapılandırması */
159
+ };
160
+
161
+ export default withIntlayer(nextConfig);
162
+ ```
163
+
164
+ > `withIntlayer()` Next.js eklentisi, Intlayer'ı Next.js ile entegre etmek için kullanılır. Sözlük dosyalarının oluşturulmasını sağlar ve dev modunda onları izler. Intlayer ortam değişkenlerini [Webpack](https://webpack.js.org/) veya [Turbopack](https://nextjs.org/docs/app/api-reference/turbopack) ortamları içinde tanımlar. Dahası, performansı optimize etmek için takma adlar sağlar ve Sunucu Bileşenleriyle tam uyumlu çalışır.
165
+
166
+ ### Babel'i Yapılandır
167
+
168
+ Intlayer derleyicisi, içeriğinizi çıkarmak ve optimize etmek için Babel gerektirir. Intlayer eklentilerini içerecek şekilde `babel.config.js` (veya `babel.config.json`) dosyanızı güncelleyin:
169
+
170
+ ```typescript fileName="babel.config.js"
171
+ const {
172
+ intlayerExtractBabelPlugin,
173
+ intlayerOptimizeBabelPlugin,
174
+ getExtractPluginOptions,
175
+ getOptimizePluginOptions,
176
+ } = require("@intlayer/babel");
177
+
178
+ module.exports = {
179
+ presets: ["next/babel"],
180
+ plugins: [
181
+ [intlayerExtractBabelPlugin, getExtractPluginOptions()],
182
+ [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
183
+ ],
184
+ };
185
+ ```
186
+
187
+ ### Adım 4: Sayfanızda Dil Algılama
188
+
189
+ `RootLayout` bileşeninizin içeriğini temizleyin ve aşağıdaki örnekle değiştirin:
190
+
191
+ ```tsx fileName="src/app/layout.tsx"
192
+ import type { Metadata } from "next";
193
+ import type { ReactNode } from "react";
194
+ import "./globals.css";
195
+ import { IntlayerClientProvider, LocalPromiseParams } from "next-intlayer";
196
+ import { getHTMLTextDir, getIntlayer } from "intlayer";
197
+ import { getLocale } from "next-intlayer/server";
198
+ export { generateStaticParams } from "next-intlayer";
199
+
200
+ export const generateMetadata = async (): Promise<Metadata> => {
201
+ const locale = await getLocale();
202
+ const { title, description, keywords } = getIntlayer("metadata", locale);
203
+
204
+ return {
205
+ title,
206
+ description,
207
+ keywords,
208
+ };
209
+ };
210
+
211
+ const RootLayout = async ({
212
+ children,
213
+ }: Readonly<{
214
+ children: ReactNode;
215
+ }>) => {
216
+ const locale = await getLocale();
217
+
218
+ return (
219
+ <html lang={locale} dir={getHTMLTextDir(locale)}>
220
+ <IntlayerClientProvider defaultLocale={locale}>
221
+ <body>{children}</body>
222
+ </IntlayerClientProvider>
223
+ </html>
224
+ );
225
+ };
226
+
227
+ export default RootLayout;
228
+ ```
229
+
230
+ ### Adım 5: İçeriğinizi Tanımlayın (Otomatik)
231
+
232
+ Derleyici etkinken artık içerik sözlüklerini (örn. `.content.ts` dosyaları) **manuel olarak tanımlamanıza gerek kalmaz**.
233
+
234
+ Bunun yerine, içeriğinizi kodunuza doğrudan sabit dizeler (hardcoded strings) olarak yazarsınız. Intlayer kaynak kodu tarar, yapılandırılmış AI sağlayıcısını kullanarak çeviriler oluşturur ve derleme aşamasında bu dizeleri yerelleştirilmiş içerikle sessizce değiştirir. Bunların hepsi tamamen otomatiktir.
235
+
236
+ Bileşeninize varsayılan dilinizde sabit dizeler yazın ve gerisini Intlayer Derleyicisi'ne bırakın.
237
+
238
+ `page.tsx` dosyanızın nasıl görüneceğine dair örnek:
239
+
240
+ <Tabs>
241
+ <Tab value="Code">
242
+
243
+ ```tsx fileName="src/app/page.tsx"
244
+ import type { FC } from "react";
245
+ import { IntlayerServerProvider } from "next-intlayer/server";
246
+ import { getLocale } from "next-intlayer/server";
247
+
248
+ const PageContent: FC = () => {
249
+ return (
250
+ <>
251
+ <p>Bunu düzenleyerek başlayın!</p>
252
+ <code>src/app/page.tsx</code>
253
+ </>
254
+ );
255
+ };
256
+
257
+ export default async function Page() {
258
+ const locale = await getLocale();
259
+
260
+ return (
261
+ <IntlayerServerProvider locale={locale}>
262
+ <PageContent />
263
+ </IntlayerServerProvider>
264
+ );
265
+ }
266
+ ```
267
+
268
+ </Tab>
269
+ <Tab value="Output">
270
+
271
+ ```ts fileName="i18n/page-content.content.tsx"
272
+ {
273
+ key: "page-content",
274
+ content: {
275
+ nodeType: "translation",
276
+ translation: {
277
+ en: {
278
+ getStartedByEditingThis: "Get started by editing this!",
279
+ },
280
+ fr: {
281
+ getStartedByEditingThis: "Commencez par éditer ceci !",
282
+ },
283
+ tr: {
284
+ getStartedByEditingThis: "Bunu düzenleyerek başlayın!",
285
+ },
286
+ }
287
+ }
288
+ }
289
+ ```
290
+
291
+ ```tsx fileName="src/app/page.tsx"
292
+ import { type FC } from "react";
293
+ import { IntlayerServerProvider, useIntlayer } from "next-intlayer/server";
294
+ import { getLocale } from "next-intlayer/server";
295
+
296
+ const PageContent: FC = () => {
297
+ const content = useIntlayer("page-content");
298
+
299
+ return (
300
+ <>
301
+ <p>{content.getStartedByEditingThis}</p>
302
+ <code>src/app/page.tsx</code>
303
+ </>
304
+ );
305
+ };
306
+
307
+ export default async function Page() {
308
+ const locale = await getLocale();
309
+
310
+ return (
311
+ <IntlayerServerProvider locale={locale}>
312
+ <PageContent />
313
+ </IntlayerServerProvider>
314
+ );
315
+ }
316
+ ```
317
+
318
+ </Tab>
319
+ </Tabs>
320
+
321
+ - **`IntlayerClientProvider`**, istemci tarafındaki bileşenlere dil sağlamak için kullanılır.
322
+ - **`IntlayerServerProvider`** ise sunucu tarafındaki alt bileşenlere dil sağlamak için kullanılır.
323
+
324
+ ### (İsteğe bağlı) Adım 7: Eksik çevirileri doldurma
325
+
326
+ Intlayer, eksik çevirileri doldurmanıza yardımcı olacak bir CLI aracı sağlar. Kodunuzdaki eksik çevirileri test etmek ve doldurmak için `intlayer` komutunu kullanabilirsiniz.
327
+
328
+ ```bash
329
+ npx intlayer test # Eksik çeviri olup olmadığını test et
330
+ ```
331
+
332
+ ```bash
333
+ npx intlayer fill # Eksik çevirileri doldur
334
+ ```
335
+
336
+ > Daha fazla ayrıntı için [CLI belgelerine](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/ci.md) bakın.
337
+
338
+ ### (İsteğe Bağlı) Adım 8: Yerelleştirilmiş Yönlendirme Proxy Ara Yazılımı
339
+
340
+ Kullanıcıları otomatik olarak tercih ettikleri dildeki URL'ye yönlendirmek istiyorsanız, bir proxy ara yazılımı (middleware) kurun:
341
+
342
+ ```typescript fileName="src/proxy.ts"
343
+ export { intlayerProxy as proxy } from "next-intlayer/proxy";
344
+
345
+ export const config = {
346
+ matcher:
347
+ "/((?!api|static|assets|robots|sitemap|sw|service-worker|manifest|.*\\..*|_next).*)",
348
+ };
349
+ ```
350
+
351
+ > `intlayerProxy`, kullanıcının tercih ettiği dili algılamak ve [yapılandırma dosyası ayarlarında](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md) belirtildiği gibi uygun URL'ye yönlendirmek için kullanılır. Ek olarak, kullanıcının tercih ettiği dilin bir çerezde saklanmasına olanak tanır.
352
+
353
+ ### (İsteğe Bağlı) Adım 9: İçerik Dilini Değiştirme
354
+
355
+ Next.js içinde içerik dilini değiştirmenin en önerilen yolu, kullanıcıları uygun dildeki rotaya yönlendirmek için `Link` bileşenini kullanmaktır. Bu, Next.js'in önceden getirme (prefetch) özelliğinden yararlanır ve sayfanın zorla yenilenmesini önler.
356
+
357
+ ```tsx fileName="src/components/localeSwitcher/LocaleSwitcher.tsx"
358
+ "use client";
359
+
360
+ import type { FC } from "react";
361
+ import { Locales, getHTMLTextDir, getLocaleName } from "intlayer";
362
+ import { useLocale } from "next-intlayer";
363
+
364
+ export const LocaleSwitcher: FC = () => {
365
+ const { locale, availableLocales, setLocale } = useLocale({
366
+ onChange: () => window.location.reload(),
367
+ });
368
+
369
+ return (
370
+ <div>
371
+ <button popoverTarget="localePopover">{getLocaleName(locale)}</button>
372
+ <div id="localePopover" popover="auto">
373
+ {availableLocales.map((localeItem) => (
374
+ <button
375
+ key={localeItem}
376
+ aria-current={locale === localeItem ? "page" : undefined}
377
+ onClick={() => setLocale(localeItem)}
378
+ >
379
+ <span>
380
+ {/* Dil kodu - örn: TR */}
381
+ {localeItem}
382
+ </span>
383
+ <span>
384
+ {/* Kendi dilinde ad - örn: Türkçe */}
385
+ {getLocaleName(localeItem, locale)}
386
+ </span>
387
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
388
+ {/* Mevcut dile göre ad - örn: Francés (mevcut dil Locales.SPANISH ise) */}
389
+ {getLocaleName(localeItem)}
390
+ </span>
391
+ <span dir="ltr" lang={Locales.ENGLISH}>
392
+ {/* İngilizce ad - örn: Turkish */}
393
+ {getLocaleName(localeItem, Locales.ENGLISH)}
394
+ </span>
395
+ </button>
396
+ ))}
397
+ </div>
398
+ </div>
399
+ );
400
+ };
401
+ ```
402
+
403
+ > Alternatif olarak, `useLocale` hook'u tarafından sağlanan `setLocale` fonksiyonunu kullanabilirsiniz. Bu fonksiyon sayfanın önceden getirilmesine izin vermez. Daha fazla ayrıntı için [`useLocale` hook belgelerine](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/packages/next-intlayer/useLocale.md) göz atın.
404
+
405
+ ### (İsteğe Bağlı) Adım 10: Bundle Boyutunu Optimize Etme
406
+
407
+ `next-intlayer` kullanıldığında, sözlükler varsayılan olarak her sayfanın paketi (bundle) içinde yer alır. Paket boyutunu optimize etmek için Intlayer, makroları kullanarak `useIntlayer` çağrılarını akıllıca değiştiren isteğe bağlı bir SWC eklentisi sağlar. Bu, sözlüklerin yalnızca onları gerçekten kullanan sayfaların paketlerine dahil edilmesini sağlar.
408
+
409
+ Bu optimizasyonu etkinleştirmek için `@intlayer/swc` paketini yükleyin. Yüklendikten sonra `next-intlayer` eklentiyi otomatik olarak algılayacak ve kullanacaktır:
410
+
411
+ ```bash packageManager="npm"
412
+ npm install @intlayer/swc --save-dev
413
+ ```
414
+
415
+ ```bash packageManager="pnpm"
416
+ pnpm add @intlayer/swc --save-dev
417
+ ```
418
+
419
+ ```bash packageManager="yarn"
420
+ yarn add @intlayer/swc --save-dev
421
+ ```
422
+
423
+ ```bash packageManager="bun"
424
+ bun add @intlayer/swc --dev
425
+ ```
426
+
427
+ > Not: Bu optimizasyon yalnızca Next.js 13 ve üzeri sürümlerde mevcuttur.
428
+
429
+ > Not: Bu paket varsayılan olarak yüklü değildir çünkü SWC eklentileri Next.js'de hala deneysel aşamadadır. Bu durum gelecekte değişebilir.
430
+
431
+ > Not: Eğer seçeneği (sözlük yapılandırmasında) `importMode: 'dynamic'` veya `importMode: 'fetch'` olarak ayarlarsanız, bu Suspense'e bağlı olacaktır, bu nedenle `useIntlayer` çağrılarınızı bir `Suspense` sınırı ile sarmalamanız gerekecektir. Bu, `useIntlayer`'ı doğrudan Sayfa / Layout bileşeninizin en üst düzeyinde kullanamayacağınız anlamına gelir.
432
+
433
+ ### TypeScript Yapılandırması
434
+
435
+ Intlayer, TypeScript'in avantajlarından yararlanmak ve kod tabanınızı daha sağlam hale getirmek için modül genişletmesini (module augmentation) kullanır.
436
+
437
+ ![Otomatik tamamlama](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true)
438
+
439
+ ![Çeviri hatası](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png?raw=true)
440
+
441
+ TypeScript yapılandırmanızın otomatik olarak oluşturulan türleri içerdiğinden emin olun.
442
+
443
+ ```json5 fileName="tsconfig.json"
444
+ {
445
+ // ... Mevcut TypeScript yapılandırmalarınız
446
+ "include": [
447
+ // ... Mevcut TypeScript yapılandırmalarınız
448
+ ".intlayer/**/*.ts", // Otomatik oluşturulan türleri dahil edin
449
+ ],
450
+ }
451
+ ```
452
+
453
+ ### Git Yapılandırması
454
+
455
+ Intlayer tarafından oluşturulan dosyaların göz ardı edilmesi önerilir. Bu, onları Git deponuza yüklemekten kaçınmanıza olanak tanır.
456
+
457
+ Bunu yapmak için `.gitignore` dosyanıza aşağıdaki yönergeleri ekleyebilirsiniz:
458
+
459
+ ```plaintext fileName=".gitignore"
460
+ # Intlayer tarafından oluşturulan dosyaları yoksay
461
+ .intlayer
462
+ ```
463
+
464
+ ### VS Code Eklentisi
465
+
466
+ Intlayer ile geliştirme deneyiminizi artırmak için **resmi Intlayer VS Code eklentisini** yükleyebilirsiniz.
467
+
468
+ [VS Code Marketplace'ten yükleyin](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
469
+
470
+ Bu eklenti şunları sağlar:
471
+
472
+ - Çeviri anahtarları için **otomatik tamamlama**.
473
+ - Eksik çeviriler için **gerçek zamanlı hata algılama**.
474
+ - Çevrilmiş içeriğin **satır içi önizlemeleri**.
475
+ - Çevirileri kolayca oluşturmak ve güncellemek için **hızlı eylemler (Quick actions)**.
476
+
477
+ Eklenti kullanımıyla ilgili detaylı talimatlar için [Intlayer VS Code eklentisi belgelerini](https://intlayer.org/doc/vs-code-extension) okuyun.
478
+
479
+ ### Daha Fazlası
480
+
481
+ Daha ileri gitmek için [görsel düzenleyiciyi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_visual_editor.md) uygulayabilir veya [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_CMS.md) kullanarak içeriğinizi dışsallaştırabilirsiniz.