@intlayer/docs 6.1.6-canary.0 → 6.1.6

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 (242) hide show
  1. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +71 -80
  2. package/dist/cjs/generated/docs.entry.cjs +16 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +16 -0
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +1 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/intlayer_with_angular.md +2 -2
  9. package/docs/ar/intlayer_with_astro.md +246 -0
  10. package/docs/ar/intlayer_with_create_react_app.md +3 -2
  11. package/docs/ar/intlayer_with_express.md +2 -2
  12. package/docs/ar/intlayer_with_nestjs.md +2 -2
  13. package/docs/ar/intlayer_with_nextjs_14.md +2 -2
  14. package/docs/ar/intlayer_with_nextjs_15.md +2 -2
  15. package/docs/ar/intlayer_with_nextjs_page_router.md +2 -2
  16. package/docs/ar/intlayer_with_nuxt.md +2 -2
  17. package/docs/ar/intlayer_with_react_native+expo.md +11 -20
  18. package/docs/ar/intlayer_with_react_router_v7.md +195 -241
  19. package/docs/ar/intlayer_with_tanstack.md +198 -272
  20. package/docs/ar/intlayer_with_vite+preact.md +9 -9
  21. package/docs/ar/intlayer_with_vite+react.md +7 -7
  22. package/docs/ar/intlayer_with_vite+vue.md +9 -9
  23. package/docs/de/intlayer_with_angular.md +2 -2
  24. package/docs/de/intlayer_with_astro.md +246 -0
  25. package/docs/de/intlayer_with_create_react_app.md +2 -2
  26. package/docs/de/intlayer_with_express.md +2 -2
  27. package/docs/de/intlayer_with_nestjs.md +2 -2
  28. package/docs/de/intlayer_with_nextjs_14.md +2 -2
  29. package/docs/de/intlayer_with_nextjs_15.md +2 -2
  30. package/docs/de/intlayer_with_nextjs_page_router.md +2 -2
  31. package/docs/de/intlayer_with_nuxt.md +2 -2
  32. package/docs/de/intlayer_with_react_native+expo.md +11 -20
  33. package/docs/de/intlayer_with_react_router_v7.md +193 -242
  34. package/docs/de/intlayer_with_tanstack.md +194 -266
  35. package/docs/de/intlayer_with_vite+preact.md +9 -9
  36. package/docs/de/intlayer_with_vite+react.md +9 -9
  37. package/docs/de/intlayer_with_vite+vue.md +11 -11
  38. package/docs/de/packages/vite-intlayer/index.md +3 -3
  39. package/docs/en/how_works_intlayer.md +1 -1
  40. package/docs/en/index.md +1 -1
  41. package/docs/en/intlayer_cli.md +1 -1
  42. package/docs/en/intlayer_with_angular.md +4 -4
  43. package/docs/en/intlayer_with_astro.md +246 -0
  44. package/docs/en/intlayer_with_create_react_app.md +4 -4
  45. package/docs/en/intlayer_with_express.md +3 -3
  46. package/docs/en/intlayer_with_lynx+react.md +1 -1
  47. package/docs/en/intlayer_with_nestjs.md +2 -2
  48. package/docs/en/intlayer_with_nextjs_14.md +13 -4
  49. package/docs/en/intlayer_with_nextjs_15.md +13 -4
  50. package/docs/en/intlayer_with_nextjs_page_router.md +5 -5
  51. package/docs/en/intlayer_with_nuxt.md +4 -4
  52. package/docs/en/intlayer_with_react_native+expo.md +46 -24
  53. package/docs/en/intlayer_with_react_router_v7.md +164 -211
  54. package/docs/en/intlayer_with_tanstack.md +166 -241
  55. package/docs/en/intlayer_with_vite+preact.md +12 -12
  56. package/docs/en/intlayer_with_vite+react.md +12 -12
  57. package/docs/en/intlayer_with_vite+solid.md +2 -2
  58. package/docs/en/intlayer_with_vite+svelte.md +2 -2
  59. package/docs/en/intlayer_with_vite+vue.md +12 -12
  60. package/docs/en/introduction.md +1 -1
  61. package/docs/en/packages/next-intlayer/useDictionary.md +1 -1
  62. package/docs/en/packages/next-intlayer/useIntlayer.md +1 -1
  63. package/docs/en/packages/react-intlayer/useDictionary.md +1 -1
  64. package/docs/en/packages/react-intlayer/useI18n.md +1 -1
  65. package/docs/en/packages/react-intlayer/useIntlayer.md +1 -1
  66. package/docs/en/releases/v6.md +1 -0
  67. package/docs/en/roadmap.md +1 -1
  68. package/docs/en-GB/intlayer_with_angular.md +3 -3
  69. package/docs/en-GB/intlayer_with_astro.md +246 -0
  70. package/docs/en-GB/intlayer_with_create_react_app.md +5 -4
  71. package/docs/en-GB/intlayer_with_express.md +2 -2
  72. package/docs/en-GB/intlayer_with_nestjs.md +2 -2
  73. package/docs/en-GB/intlayer_with_nextjs_14.md +4 -4
  74. package/docs/en-GB/intlayer_with_nextjs_15.md +2 -2
  75. package/docs/en-GB/intlayer_with_nextjs_page_router.md +2 -2
  76. package/docs/en-GB/intlayer_with_nuxt.md +2 -2
  77. package/docs/en-GB/intlayer_with_react_native+expo.md +11 -20
  78. package/docs/en-GB/intlayer_with_react_router_v7.md +171 -220
  79. package/docs/en-GB/intlayer_with_tanstack.md +174 -248
  80. package/docs/en-GB/intlayer_with_vite+preact.md +9 -9
  81. package/docs/en-GB/intlayer_with_vite+react.md +9 -9
  82. package/docs/en-GB/intlayer_with_vite+vue.md +11 -11
  83. package/docs/en-GB/packages/next-intlayer/useIntlayer.md +1 -1
  84. package/docs/en-GB/packages/react-intlayer/useIntlayer.md +1 -1
  85. package/docs/es/intlayer_with_angular.md +2 -2
  86. package/docs/es/intlayer_with_astro.md +246 -0
  87. package/docs/es/intlayer_with_create_react_app.md +3 -2
  88. package/docs/es/intlayer_with_express.md +2 -2
  89. package/docs/es/intlayer_with_nextjs_14.md +2 -2
  90. package/docs/es/intlayer_with_nextjs_15.md +2 -2
  91. package/docs/es/intlayer_with_react_native+expo.md +11 -20
  92. package/docs/es/intlayer_with_react_router_v7.md +188 -232
  93. package/docs/es/intlayer_with_tanstack.md +203 -273
  94. package/docs/es/intlayer_with_vite+preact.md +7 -7
  95. package/docs/es/intlayer_with_vite+react.md +7 -7
  96. package/docs/es/intlayer_with_vite+vue.md +9 -9
  97. package/docs/fr/intlayer_with_angular.md +2 -2
  98. package/docs/fr/intlayer_with_astro.md +246 -0
  99. package/docs/fr/intlayer_with_create_react_app.md +3 -2
  100. package/docs/fr/intlayer_with_express.md +2 -2
  101. package/docs/fr/intlayer_with_nestjs.md +2 -2
  102. package/docs/fr/intlayer_with_nextjs_14.md +2 -2
  103. package/docs/fr/intlayer_with_react_native+expo.md +11 -20
  104. package/docs/fr/intlayer_with_react_router_v7.md +188 -248
  105. package/docs/fr/intlayer_with_tanstack.md +192 -265
  106. package/docs/fr/intlayer_with_vite+preact.md +7 -7
  107. package/docs/fr/intlayer_with_vite+react.md +7 -7
  108. package/docs/fr/intlayer_with_vite+vue.md +9 -9
  109. package/docs/hi/intlayer_cli.md +1 -4
  110. package/docs/hi/intlayer_with_angular.md +2 -2
  111. package/docs/hi/intlayer_with_astro.md +246 -0
  112. package/docs/hi/intlayer_with_create_react_app.md +2 -2
  113. package/docs/hi/intlayer_with_express.md +2 -2
  114. package/docs/hi/intlayer_with_nestjs.md +2 -2
  115. package/docs/hi/intlayer_with_nextjs_14.md +2 -2
  116. package/docs/hi/intlayer_with_nextjs_15.md +2 -2
  117. package/docs/hi/intlayer_with_nextjs_page_router.md +2 -2
  118. package/docs/hi/intlayer_with_nuxt.md +2 -2
  119. package/docs/hi/intlayer_with_react_native+expo.md +11 -20
  120. package/docs/hi/intlayer_with_react_router_v7.md +199 -243
  121. package/docs/hi/intlayer_with_tanstack.md +210 -285
  122. package/docs/hi/intlayer_with_vite+preact.md +9 -9
  123. package/docs/hi/intlayer_with_vite+react.md +9 -9
  124. package/docs/hi/intlayer_with_vite+solid.md +1 -1
  125. package/docs/hi/intlayer_with_vite+vue.md +11 -11
  126. package/docs/it/intlayer_with_angular.md +2 -2
  127. package/docs/it/intlayer_with_astro.md +246 -0
  128. package/docs/it/intlayer_with_create_react_app.md +3 -2
  129. package/docs/it/intlayer_with_express.md +2 -2
  130. package/docs/it/intlayer_with_nestjs.md +2 -2
  131. package/docs/it/intlayer_with_nextjs_14.md +2 -2
  132. package/docs/it/intlayer_with_nextjs_15.md +2 -2
  133. package/docs/it/intlayer_with_nextjs_page_router.md +2 -2
  134. package/docs/it/intlayer_with_nuxt.md +2 -2
  135. package/docs/it/intlayer_with_react_native+expo.md +11 -21
  136. package/docs/it/intlayer_with_react_router_v7.md +195 -242
  137. package/docs/it/intlayer_with_tanstack.md +203 -267
  138. package/docs/it/intlayer_with_vite+preact.md +9 -9
  139. package/docs/it/intlayer_with_vite+react.md +13 -11
  140. package/docs/it/intlayer_with_vite+vue.md +11 -11
  141. package/docs/ja/intlayer_with_angular.md +2 -2
  142. package/docs/ja/intlayer_with_astro.md +246 -0
  143. package/docs/ja/intlayer_with_create_react_app.md +3 -2
  144. package/docs/ja/intlayer_with_express.md +2 -2
  145. package/docs/ja/intlayer_with_nestjs.md +2 -2
  146. package/docs/ja/intlayer_with_nextjs_14.md +2 -2
  147. package/docs/ja/intlayer_with_nextjs_15.md +2 -2
  148. package/docs/ja/intlayer_with_nextjs_page_router.md +2 -2
  149. package/docs/ja/intlayer_with_nuxt.md +2 -2
  150. package/docs/ja/intlayer_with_react_native+expo.md +18 -29
  151. package/docs/ja/intlayer_with_react_router_v7.md +204 -250
  152. package/docs/ja/intlayer_with_tanstack.md +218 -286
  153. package/docs/ja/intlayer_with_vite+preact.md +9 -9
  154. package/docs/ja/intlayer_with_vite+react.md +11 -11
  155. package/docs/ja/intlayer_with_vite+vue.md +11 -11
  156. package/docs/ko/intlayer_with_angular.md +2 -2
  157. package/docs/ko/intlayer_with_astro.md +246 -0
  158. package/docs/ko/intlayer_with_create_react_app.md +3 -2
  159. package/docs/ko/intlayer_with_express.md +2 -2
  160. package/docs/ko/intlayer_with_nestjs.md +2 -2
  161. package/docs/ko/intlayer_with_nextjs_14.md +2 -2
  162. package/docs/ko/intlayer_with_nextjs_15.md +2 -2
  163. package/docs/ko/intlayer_with_nextjs_page_router.md +2 -2
  164. package/docs/ko/intlayer_with_nuxt.md +2 -2
  165. package/docs/ko/intlayer_with_react_native+expo.md +19 -28
  166. package/docs/ko/intlayer_with_react_router_v7.md +190 -244
  167. package/docs/ko/intlayer_with_tanstack.md +200 -270
  168. package/docs/ko/intlayer_with_vite+preact.md +9 -9
  169. package/docs/ko/intlayer_with_vite+react.md +9 -9
  170. package/docs/ko/intlayer_with_vite+vue.md +11 -11
  171. package/docs/pt/intlayer_with_angular.md +2 -2
  172. package/docs/pt/intlayer_with_astro.md +246 -0
  173. package/docs/pt/intlayer_with_create_react_app.md +3 -2
  174. package/docs/pt/intlayer_with_express.md +2 -2
  175. package/docs/pt/intlayer_with_nestjs.md +2 -2
  176. package/docs/pt/intlayer_with_nextjs_14.md +2 -2
  177. package/docs/pt/intlayer_with_nextjs_15.md +2 -2
  178. package/docs/pt/intlayer_with_nextjs_page_router.md +2 -2
  179. package/docs/pt/intlayer_with_nuxt.md +2 -2
  180. package/docs/pt/intlayer_with_react_native+expo.md +11 -20
  181. package/docs/pt/intlayer_with_react_router_v7.md +7 -13
  182. package/docs/pt/intlayer_with_tanstack.md +183 -258
  183. package/docs/pt/intlayer_with_vite+preact.md +9 -9
  184. package/docs/pt/intlayer_with_vite+react.md +9 -9
  185. package/docs/pt/intlayer_with_vite+vue.md +9 -9
  186. package/docs/ru/intlayer_with_angular.md +2 -2
  187. package/docs/ru/intlayer_with_astro.md +246 -0
  188. package/docs/ru/intlayer_with_create_react_app.md +3 -2
  189. package/docs/ru/intlayer_with_express.md +2 -2
  190. package/docs/ru/intlayer_with_nestjs.md +2 -2
  191. package/docs/ru/intlayer_with_nextjs_14.md +2 -2
  192. package/docs/ru/intlayer_with_nextjs_15.md +2 -2
  193. package/docs/ru/intlayer_with_nextjs_page_router.md +2 -2
  194. package/docs/ru/intlayer_with_nuxt.md +2 -2
  195. package/docs/ru/intlayer_with_react_native+expo.md +11 -20
  196. package/docs/ru/intlayer_with_react_router_v7.md +192 -238
  197. package/docs/ru/intlayer_with_tanstack.md +197 -269
  198. package/docs/ru/intlayer_with_vite+preact.md +9 -9
  199. package/docs/ru/intlayer_with_vite+react.md +9 -9
  200. package/docs/ru/intlayer_with_vite+vue.md +11 -11
  201. package/docs/tr/how_works_intlayer.md +1 -1
  202. package/docs/tr/index.md +1 -1
  203. package/docs/tr/intlayer_cli.md +1 -1
  204. package/docs/tr/intlayer_with_angular.md +4 -4
  205. package/docs/tr/intlayer_with_astro.md +246 -0
  206. package/docs/tr/intlayer_with_create_react_app.md +4 -4
  207. package/docs/tr/intlayer_with_express.md +3 -3
  208. package/docs/tr/intlayer_with_lynx+react.md +1 -1
  209. package/docs/tr/intlayer_with_nestjs.md +2 -2
  210. package/docs/tr/intlayer_with_nextjs_14.md +2 -2
  211. package/docs/tr/intlayer_with_nextjs_15.md +4 -4
  212. package/docs/tr/intlayer_with_nextjs_page_router.md +5 -5
  213. package/docs/tr/intlayer_with_nuxt.md +4 -4
  214. package/docs/tr/intlayer_with_react_native+expo.md +12 -21
  215. package/docs/tr/intlayer_with_react_router_v7.md +222 -267
  216. package/docs/tr/intlayer_with_tanstack.md +400 -303
  217. package/docs/tr/intlayer_with_vite+preact.md +12 -12
  218. package/docs/tr/intlayer_with_vite+react.md +12 -12
  219. package/docs/tr/intlayer_with_vite+solid.md +2 -2
  220. package/docs/tr/intlayer_with_vite+svelte.md +2 -2
  221. package/docs/tr/intlayer_with_vite+vue.md +12 -12
  222. package/docs/tr/introduction.md +1 -1
  223. package/docs/tr/packages/react-intlayer/useDictionary.md +1 -1
  224. package/docs/tr/packages/react-intlayer/useI18n.md +1 -1
  225. package/docs/tr/roadmap.md +1 -1
  226. package/docs/zh/intlayer_with_angular.md +2 -2
  227. package/docs/zh/intlayer_with_astro.md +246 -0
  228. package/docs/zh/intlayer_with_create_react_app.md +3 -2
  229. package/docs/zh/intlayer_with_express.md +2 -2
  230. package/docs/zh/intlayer_with_nestjs.md +2 -2
  231. package/docs/zh/intlayer_with_nextjs_14.md +2 -2
  232. package/docs/zh/intlayer_with_nextjs_15.md +2 -2
  233. package/docs/zh/intlayer_with_nextjs_page_router.md +2 -2
  234. package/docs/zh/intlayer_with_nuxt.md +2 -2
  235. package/docs/zh/intlayer_with_react_native+expo.md +19 -28
  236. package/docs/zh/intlayer_with_react_router_v7.md +200 -248
  237. package/docs/zh/intlayer_with_tanstack.md +208 -283
  238. package/docs/zh/intlayer_with_vite+preact.md +9 -9
  239. package/docs/zh/intlayer_with_vite+react.md +9 -9
  240. package/docs/zh/intlayer_with_vite+vue.md +9 -9
  241. package/package.json +11 -11
  242. package/src/generated/docs.entry.ts +16 -0
@@ -1,367 +1,423 @@
1
1
  ---
2
- createdAt: 2025-09-07
3
- updatedAt: 2025-09-07
4
- title: TanStack Start'ta Intlayer ile Başlarken (React)
5
- description: Intlayer kullanarak TanStack Start uygulamanıza i18n ekleyin-bileşen düzeyinde sözlükler, yerelleştirilmiş URL'ler ve SEO dostu meta veriler.
2
+ createdAt: 2025-09-09
3
+ updatedAt: 2025-09-09
4
+ title: Tanstack Start'ta Intlayer ile Başlarken
5
+ description: Tanstack Start uygulamanıza Intlayer kullanarak uluslararasılaştırma (i18n) nasıl eklenir öğrenin. Uygulamanızı yerel dil yönlendirmesi ile çok dilli hale getirmek için bu kapsamlı rehberi takip edin.
6
6
  keywords:
7
7
  - Uluslararasılaştırma
8
8
  - Dokümantasyon
9
9
  - Intlayer
10
- - TanStack Start
11
- - TanStack Router
10
+ - Tanstack Start
12
11
  - React
13
12
  - i18n
14
- - JavaScript
13
+ - TypeScript
14
+ - Yerel Dil Yönlendirmesi
15
15
  slugs:
16
16
  - doc
17
17
  - environment
18
- - vite-and-react
19
18
  - tanstack-start
20
- applicationTemplate: https://github.com/AydinTheFirst/tanstack-start-intlayer
21
- author: AydinTheFirst
19
+ applicationTemplate: https://github.com/aymericzip/intlayer-tanstack-start-template
22
20
  ---
23
21
 
24
- # Intlayer ve TanStack Start (React) ile uluslararasılaştırma (i18n) başlangıç kılavuzu
22
+ # Intlayer ve Tanstack Start ile Uluslararasılaştırmaya (i18n) Başlarken
23
+
24
+ Bu rehber, Tanstack Start projelerinde yerel dil yönlendirmesi, TypeScript desteği ve modern geliştirme uygulamalarıyla sorunsuz uluslararasılaştırma için **Intlayer**'ın nasıl entegre edileceğini göstermektedir.
25
25
 
26
26
  ## Intlayer Nedir?
27
27
 
28
- **Intlayer**, React uygulamaları için açık kaynaklı bir i18n araç takımıdır. Size şunları sağlar:
28
+ **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.
29
29
 
30
- - **TypeScript güvenliği ile bileşen yerel sözlükleri**.
31
- - **Dinamik meta veriler ve rotalar** (SEO hazır).
32
- - **Çalışma zamanı yerel ayar anahtarlaması** (ve yerel ayarları algılamak/kalıcı hale getirmek için yardımcılar).
33
- - **Yapı zamanı dönüşümleri + dev DX için Vite eklentisi**.
30
+ Intlayer ile şunları yapabilirsiniz:
34
31
 
35
- Bu kılavuz, **TanStack Start** projesine Intlayer'ı nasıl bağlayacağınızı gösterir (Vite'i altında kullanan ve yönlendirme/SSR için TanStack Router kullanan).
32
+ - **Bileşen seviyesinde bildirisel sözlükler kullanarak çevirileri kolayca yönetin.**
33
+ - **Meta verileri, yönlendirmeleri ve içeriği dinamik olarak yerelleştirin.**
34
+ - **Otomatik oluşturulan tiplerle TypeScript desteğini sağlayarak otomatik tamamlama ve hata tespitini geliştirin.**
35
+ - **Dinamik yerel dil algılama ve değiştirme gibi gelişmiş özelliklerden faydalanın.**
36
+ - **Tanstack Start'ın dosya tabanlı yönlendirme sistemi ile yerel dil farkındalıklı yönlendirmeyi etkinleştirin.**
36
37
 
37
38
  ---
38
39
 
39
- ## Adım 1: Bağımlılıkları Kurma
40
+ ## Tanstack Start Uygulamasında Intlayer Kurulumu için Adım Adım Rehber
40
41
 
41
- ```bash
42
- # npm
43
- npm i intlayer react-intlayer
44
- npm i -D vite-intlayer
42
+ ### Adım 1: Proje Oluşturma
45
43
 
46
- # pnpm
47
- pnpm add intlayer react-intlayer
48
- pnpm add -D vite-intlayer
44
+ TanStack Start web sitesindeki [Yeni proje başlatma](https://tanstack.com/start/latest/docs/framework/react/quick-start) rehberini takip ederek yeni bir TanStack Start projesi oluşturun.
45
+
46
+ ### Adım 2: Intlayer Paketlerini Yükleyin
49
47
 
50
- # yarn
51
- yarn add intlayer react-intlayer
52
- yarn add -D vite-intlayer
48
+ Tercih ettiğiniz paket yöneticisini kullanarak gerekli paketleri yükleyin:
49
+
50
+ ```bash packageManager="npm"
51
+ npm install intlayer react-intlayer
52
+ npm install vite-intlayer --save-dev
53
53
  ```
54
54
 
55
- - **intlayer**: çekirdek (yapılandırma, sözlükler, CLI/dönüşümler).
56
- - **react-intlayer**: React için `<IntlayerProvider>` + kancalar.
57
- - **vite-intlayer**: Vite eklentisi, ayrıca yerel ayar algılama/yönlendirmeler için isteğe bağlı middleware (dev & SSR/önizlemede çalışır; üretim SSR için `dependencies`'a taşıyın).
55
+ ```bash packageManager="pnpm"
56
+ pnpm add intlayer react-intlayer
57
+ pnpm add vite-intlayer --save-dev
58
+ ```
58
59
 
59
- ---
60
+ - **intlayer**
61
+
62
+ - **intlayer**
63
+
64
+ Yapılandırma yönetimi, çeviri, [içerik bildirimi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/dictionary/get_started.md), dönüştürme ve [CLI komutları](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_cli.md) için uluslararasılaştırma araçları sağlayan temel paket.
60
65
 
61
- ## Adım 2: Intlayer'ı Yapılandırma
66
+ - **react-intlayer**
67
+ Intlayer'ı React uygulamasıyla entegre eden paket. React uluslararasılaştırması için bağlam sağlayıcıları ve kancalar sunar.
62
68
 
63
- Proje kökünüzde `intlayer.config.ts` oluşturun:
69
+ - **vite-intlayer**
70
+ Intlayer'ı [Vite paketleyicisi](https://vite.dev/guide/why.html#why-bundle-for-production) ile entegre etmek için Vite eklentisini içerir; ayrıca kullanıcının tercih ettiği yereli algılayan, çerezleri yöneten ve URL yönlendirmesini ele alan ara yazılımı da kapsar.
64
71
 
65
- ```ts fileName="intlayer.config.ts"
66
- import { Locales, type IntlayerConfig } from "intlayer";
72
+ ### Adım 3: Projenizin Yapılandırılması
73
+
74
+ Uygulamanızın dillerini yapılandırmak için bir yapılandırma dosyası oluşturun:
75
+
76
+ ```typescript fileName="intlayer.config.ts"
77
+ import type { IntlayerConfig } from "intlayer";
78
+
79
+ import { Locales } from "intlayer";
67
80
 
68
81
  const config: IntlayerConfig = {
69
82
  internationalization: {
70
- locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
71
83
  defaultLocale: Locales.ENGLISH,
84
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
72
85
  },
73
- // Ayrıca ayarlayabilirsiniz: contentDir, contentFileExtensions, middleware seçenekleri, vb.
74
86
  };
75
87
 
76
88
  export default config;
77
89
  ```
78
90
 
79
- CommonJS/ESM varyantları, `cjs`/`mjs`'yi tercih ederseniz orijinal dokümanınızla aynıdır.
80
-
81
- > Tam yapılandırma referansı: Intlayer'ın yapılandırma dokümantasyonuna bakın.
82
-
83
- ---
91
+ > Bu yapılandırma dosyası aracılığıyla, yerelleştirilmiş URL'ler, ara yazılım yönlendirmesi, çerez isimleri, içerik bildirimlerinizin konumu ve uzantısı, Intlayer günlüklerini konsolda devre dışı bırakma ve daha fazlasını ayarlayabilirsiniz. Mevcut parametrelerin tam listesi için [yapılandırma dokümantasyonuna](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md) bakınız.
84
92
 
85
- ## Adım 3: Vite Eklentisini Ekleyin (ve isteğe bağlı middleware)
93
+ ### Adım 4: Intlayer'ı Vite Yapılandırmanıza Entegre Edin
86
94
 
87
- **TanStack Start Vite kullanır**, bu yüzden Intlayer'ın eklenti(leri)ni `vite.config.ts`'nize ekleyin:
95
+ Yapılandırmanıza intlayer eklentisini ekleyin:
88
96
 
89
- ```ts fileName="vite.config.ts"
97
+ ```typescript fileName="vite.config.ts"
98
+ import { reactRouter } from "@react-router/dev/vite";
90
99
  import { defineConfig } from "vite";
91
- import react from "@vitejs/plugin-react-swc";
92
- import { intlayer, intlayerMiddlewarePlugin } from "vite-intlayer";
100
+ import { intlayer } from "vite-intlayer";
101
+ import tsconfigPaths from "vite-tsconfig-paths";
93
102
 
94
103
  export default defineConfig({
95
- plugins: [
96
- react(),
97
- intlayer(),
98
- // Yerel ayar algılama, çerezler ve yönlendirmeler için isteğe bağlı ancak önerilen:
99
- intlayerMiddlewarePlugin(),
100
- ],
104
+ plugins: [reactRouter(), tsconfigPaths(), intlayer()],
101
105
  });
102
106
  ```
103
107
 
104
- > SSR dağıtırsanız, middleware'in üretimde çalışması için `vite-intlayer`'ı `dependencies`'a taşıyın.
108
+ > `intlayer()` Vite eklentisi, Intlayer'ı Vite ile entegre etmek için kullanılır. İçerik bildirim dosyalarının oluşturulmasını sağlar ve geliştirme modunda bunları izler. Vite uygulaması içinde Intlayer ortam değişkenlerini tanımlar. Ayrıca performansı optimize etmek için takma adlar sağlar.
105
109
 
106
- ---
110
+ ### Adım 5: Düzen Bileşenleri Oluşturun
111
+
112
+ Kök düzeninizi ve yerel dile özgü düzenlerinizi ayarlayın:
113
+
114
+ #### Kök Düzen
115
+
116
+ ```tsx fileName="src/routes/{-$locale}/route.tsx"
117
+ import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
118
+ import { IntlayerProvider, useLocale } from "react-intlayer";
119
+
120
+ import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes";
121
+
122
+ export const Route = createFileRoute("/{-$locale}")({
123
+ component: LayoutComponent,
124
+ });
125
+
126
+ function LayoutComponent() {
127
+ const { defaultLocale } = useLocale();
128
+ const { locale } = Route.useParams();
129
+
130
+ return (
131
+ <IntlayerProvider locale={defaultLocale}>
132
+ <Outlet />
133
+ </IntlayerProvider>
134
+ );
135
+ }
136
+ ```
107
137
 
108
- ## Adım 4: İçeriğinizi Bildirin
138
+ ### Adım 6: İçeriğinizi Bildirin
109
139
 
110
- Sözlüklerinizi `./src` altında herhangi bir yere yerleştirin (varsayılan `contentDir`). Örnek:
140
+ Çevirileri depolamak için içerik bildirimlerinizi oluşturun ve yönetin:
111
141
 
112
- ```tsx fileName="src/app.content.tsx"
113
- import { t, type Dictionary } from "intlayer";
114
- import type { ReactNode } from "react";
142
+ ```tsx fileName="src/contents/page.content.ts"
143
+ import type { Dictionary } from "intlayer";
144
+
145
+ import { t } from "intlayer";
115
146
 
116
147
  const appContent = {
117
- key: "app",
118
148
  content: {
119
- viteLogo: t({ en: "Vite logo", fr: "Logo Vite", es: "Logo Vite" }),
120
- reactLogo: t({ en: "React logo", fr: "Logo React", es: "Logo React" }),
149
+ links: {
150
+ about: t({
151
+ tr: "Hakkında",
152
+ en: "About",
153
+ es: "Acerca de",
154
+ fr: "À propos",
155
+ }),
156
+ home: t({
157
+ tr: "Ana Sayfa",
158
+ en: "Home",
159
+ es: "Inicio",
160
+ fr: "Accueil",
161
+ }),
162
+ },
163
+ meta: {
164
+ description: t({
165
+ tr: "Bu, Intlayer'ın TanStack Router ile kullanımına bir örnektir",
166
+ en: "This is an example of using Intlayer with TanStack Router",
167
+ es: "Este es un ejemplo de uso de Intlayer con TanStack Router",
168
+ fr: "Ceci est un exemple d'utilisation d'Intlayer avec TanStack Router",
169
+ }),
170
+ },
121
171
  title: t({
122
- en: "TanStack Start + React",
123
- fr: "TanStack Start + React",
124
- es: "TanStack Start + React",
125
- }),
126
- count: t({ en: "count is ", fr: "le compte est ", es: "el recuento es " }),
127
- edit: t<ReactNode>({
128
- en: (
129
- <>
130
- Edit <code>src/routes/index.tsx</code> and save to test HMR
131
- </>
132
- ),
133
- fr: (
134
- <>
135
- Éditez <code>src/routes/index.tsx</code> et enregistrez pour tester
136
- HMR
137
- </>
138
- ),
139
- es: (
140
- <>
141
- Edita <code>src/routes/index.tsx</code> y guarda para probar HMR
142
- </>
143
- ),
144
- }),
145
- readTheDocs: t({
146
- en: "Click the logos to learn more",
147
- fr: "Cliquez sur les logos pour en savoir plus",
148
- es: "Haz clic en los logotipos para saber más",
172
+ tr: "Intlayer + TanStack Router'a Hoş Geldiniz",
173
+ en: "Welcome to Intlayer + TanStack Router",
174
+ es: "Bienvenido a Intlayer + TanStack Router",
175
+ fr: "Bienvenue à Intlayer + TanStack Router",
149
176
  }),
150
177
  },
178
+ key: "app",
151
179
  } satisfies Dictionary;
152
180
 
153
181
  export default appContent;
154
182
  ```
155
183
 
156
- JSON/ESM/CJS varyantları orijinal dokümanınızla aynı şekilde çalışır.
184
+ > İçerik bildirimleriniz, uygulamanızda herhangi bir yerde tanımlanabilir, yeter ki `contentDir` dizinine dahil edilsin (varsayılan olarak, `./app`). Ve içerik bildirim dosya uzantısıyla eşleşmelidir (varsayılan olarak, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
157
185
 
158
- > TSX içeriği? Kurulumunuz gerektiriyorsa `import React from "react"`'ı unutmayın.
186
+ > Daha fazla ayrıntı için, [içerik bildirim dokümantasyonuna](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/dictionary/get_started.md) bakınız.
159
187
 
160
- ---
188
+ ### Adım 7: Yerel Dili Algılayan Bileşenler ve Hook'lar Oluşturun
161
189
 
162
- ## Adım 5: TanStack Start'ı Intlayer ile Sarmalayın
190
+ Yerel dil algılayan gezinme için bir `LocalizedLink` bileşeni oluşturun:
163
191
 
164
- TanStack Start ile, sağlayıcıları ayarlamak için **kök rota** doğru yerdir.
192
+ ```tsx fileName="src/components/localized-link.tsx"
193
+ import type { FC } from "react";
165
194
 
166
- ```tsx fileName="src/routes/__root.tsx"
167
- import {
168
- Outlet,
169
- createRootRoute,
170
- Link as RouterLink,
171
- } from "@tanstack/react-router";
172
- import { IntlayerProvider, useIntlayer } from "react-intlayer";
195
+ import { Link, type LinkComponentProps } from "@tanstack/react-router";
196
+ import { useLocale } from "react-intlayer";
173
197
 
174
- function AppShell() {
175
- // Üst düzeyde bir sözlük kullanma örneği:
176
- const content = useIntlayer("app");
198
+ export const LOCALE_ROUTE = "{-$locale}" as const;
177
199
 
178
- return (
179
- <div>
180
- <nav className="flex gap-3 p-3">
181
- <RouterLink to="/">Home</RouterLink>
182
- <RouterLink to="/about">About</RouterLink>
183
- </nav>
184
- <main className="p-6">
185
- <h1>{content.title}</h1>
186
- <Outlet />
187
- </main>
188
- </div>
189
- );
190
- }
191
-
192
- export const Route = createRootRoute({
193
- component: () => (
194
- <IntlayerProvider>
195
- <AppShell />
196
- </IntlayerProvider>
197
- ),
198
- });
199
- ```
200
+ // Ana yardımcı
201
+ export type RemoveLocaleParam<T> = T extends string
202
+ ? RemoveLocaleFromString<T>
203
+ : T;
200
204
 
201
- Ardından içeriğinizi sayfalarda kullanın:
205
+ export type To = RemoveLocaleParam<LinkComponentProps["to"]>;
202
206
 
203
- ```tsx fileName="src/routes/index.tsx"
204
- import { createFileRoute } from "@tanstack/react-router";
205
- import { useIntlayer } from "react-intlayer";
206
- import reactLogo from "../assets/react.svg";
207
-
208
- export const Route = createFileRoute("/")({
209
- component: () => {
210
- const content = useIntlayer("app");
211
- return (
212
- <>
213
- <button>{content.count}0</button>
214
- <p>{content.edit}</p>
215
- <img
216
- src={reactLogo}
217
- alt={content.reactLogo.value}
218
- width={48}
219
- height={48}
220
- />
221
- <p className="opacity-70">{content.readTheDocs}</p>
222
- </>
223
- );
224
- },
225
- });
226
- ```
207
+ type CollapseDoubleSlashes<S extends string> =
208
+ S extends `${infer H}//${infer T}` ? CollapseDoubleSlashes<`${H}/${T}`> : S;
227
209
 
228
- > Dize nitelikleri (`alt`, `title`, `aria-label`, …) `.value` gerektirir:
229
- >
230
- > ```jsx
231
- > <img alt={c.reactLogo.value} />
232
- > ```
210
+ type LocalizedLinkProps = {
211
+ to?: To;
212
+ } & Omit<LinkComponentProps, "to">;
233
213
 
234
- ---
214
+ // Yardımcılar
215
+ type RemoveAll<
216
+ S extends string,
217
+ Sub extends string,
218
+ > = S extends `${infer H}${Sub}${infer T}` ? RemoveAll<`${H}${T}`, Sub> : S;
235
219
 
236
- ## (İsteğe Bağlı) Adım 6: Yerel Ayar Anahtarlaması (İstemci)
220
+ type RemoveLocaleFromString<S extends string> = CollapseDoubleSlashes<
221
+ RemoveAll<S, typeof LOCALE_ROUTE>
222
+ >;
237
223
 
238
- ```tsx fileName="src/components/LocaleSwitcher.tsx"
239
- import { Locales } from "intlayer";
240
- import { useLocale } from "react-intlayer";
224
+ export const LocalizedLink: FC<LocalizedLinkProps> = (props) => {
225
+ const { locale } = useLocale();
241
226
 
242
- export function LocaleSwitcher() {
243
- const { setLocale } = useLocale();
244
227
  return (
245
- <div className="flex gap-2">
246
- <button onClick={() => setLocale(Locales.ENGLISH)}>English</button>
247
- <button onClick={() => setLocale(Locales.FRENCH)}>Français</button>
248
- <button onClick={() => setLocale(Locales.SPANISH)}>Español</button>
249
- </div>
228
+ <Link
229
+ {...props}
230
+ params={{
231
+ locale,
232
+ ...(typeof props?.params === "object" ? props?.params : {}),
233
+ }}
234
+ to={`/${LOCALE_ROUTE}${props.to}` as LinkComponentProps["to"]}
235
+ />
250
236
  );
251
- }
237
+ };
252
238
  ```
253
239
 
254
- ---
240
+ Bu bileşenin iki amacı vardır:
255
241
 
256
- ## (İsteğe Bağlı) Adım 7: Yerelleştirilmiş Yönlendirme (SEO dostu URL'ler)
242
+ - URL'den gereksiz `{-$locale}` önekini kaldırmak.
243
+ - Kullanıcının doğrudan yerelleştirilmiş rotaya yönlendirilmesini sağlamak için URL'ye locale parametresini enjekte etmek.
257
244
 
258
- TanStack Start ile **iki iyi kalıp** vardır. Birini seçin.
245
+ Daha sonra programatik gezinme için bir `useLocalizedNavigate` kancası oluşturabiliriz:
259
246
 
260
- URL'lerinizin `/:locale/...` olması için dinamik segment klasörü `src/routes/$locale/` oluşturun. `$locale` düzeninde, `params.locale`'ı doğrulayın, `<IntlayerProvider locale=...>` ayarlayın ve `<Outlet />` işleyin. Bu yaklaşım basittir, ancak geri kalan rotalarınızı `$locale` altına monte edeceksiniz ve varsayılan yerel ayarı öneki istemiyorsanız ekstra öneksiz bir ağaca ihtiyacınız olacak.
247
+ ```tsx fileName="src/hooks/useLocalizedNavigate.tsx"
248
+ import { useLocale } from "react-intlayer";
249
+ import { useNavigate } from "@tanstack/react-router";
250
+ import { LOCALE_ROUTE } from "@/components/localized-link";
251
+ import type { FileRouteTypes } from "@/routeTree.gen";
261
252
 
262
- ---
253
+ export const useLocalizedNavigate = () => {
254
+ const navigate = useNavigate();
263
255
 
264
- ## (İsteğe Bağlı) Adım 8: Yerel ayar değiştirirken URL'yi güncelleyin
256
+ const { locale } = useLocale();
265
257
 
266
- A Kalıbı (basepath) ile, yerel ayarları değiştirmek **farklı bir basepath'e** gezinmek anlamına gelir:
258
+ type StripLocalePrefix<T extends string> = T extends
259
+ | `/${typeof LOCALE_ROUTE}`
260
+ | `/${typeof LOCALE_ROUTE}/`
261
+ ? "/"
262
+ : T extends `/${typeof LOCALE_ROUTE}/${infer Rest}`
263
+ ? `/${Rest}`
264
+ : never;
265
+
266
+ type LocalizedTo = StripLocalePrefix<FileRouteTypes["to"]>;
267
+
268
+ interface LocalizedNavigate {
269
+ (to: LocalizedTo): ReturnType<typeof navigate>;
270
+ (
271
+ opts: { to: LocalizedTo } & Record<string, unknown>
272
+ ): ReturnType<typeof navigate>;
273
+ }
267
274
 
268
- ```tsx fileName="src/components/LocaleSwitcherNavigate.tsx"
269
- import { useRouter } from "@tanstack/react-router";
270
- import { Locales, getLocalizedUrl } from "intlayer";
271
- import { useLocale } from "react-intlayer";
275
+ const localizedNavigate: LocalizedNavigate = (args: any) => {
276
+ if (typeof args === "string") {
277
+ return navigate({ to: `/${LOCALE_ROUTE}${args}`, params: { locale } });
278
+ }
279
+
280
+ const { to, ...rest } = args;
281
+
282
+ const localedTo = `/${LOCALE_ROUTE}${to}` as any;
272
283
 
273
- export function LocaleSwitcherNavigate() {
274
- const router = useRouter();
275
- const { locale, setLocale } = useLocale();
276
-
277
- const change = async (next: Locales) => {
278
- if (next === locale) return;
279
- const nextPath = getLocalizedUrl(
280
- window.location.pathname + window.location.search,
281
- next
282
- );
283
- await router.navigate({ to: nextPath }); // geçmişi korur
284
- setLocale(next);
284
+ return navigate({ to: localedTo, params: { locale, ...rest } as any });
285
285
  };
286
286
 
287
+ return localizedNavigate;
288
+ };
289
+ ```
290
+
291
+ ### Adım 8: Sayfalarınızda Intlayer'ı Kullanın
292
+
293
+ Uygulamanız genelinde içerik sözlüklerinize erişin:
294
+
295
+ #### Yerelleştirilmiş Ana Sayfa
296
+
297
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
298
+ import { createFileRoute } from "@tanstack/react-router";
299
+ import { getIntlayer } from "intlayer";
300
+ import { useIntlayer } from "react-intlayer";
301
+
302
+ import LocaleSwitcher from "@/components/locale-switcher";
303
+ import { LocalizedLink } from "@/components/localized-link";
304
+ import { useLocalizedNavigate } from "@/hooks/useLocalizedNavigate";
305
+
306
+ export const Route = createFileRoute("/{-$locale}/")({
307
+ component: RouteComponent,
308
+ head: ({ params }) => {
309
+ const { locale } = params;
310
+ const metaContent = getIntlayer("app", locale);
311
+
312
+ return {
313
+ meta: [
314
+ { title: metaContent.title },
315
+ { content: metaContent.meta.description, name: "description" },
316
+ ],
317
+ };
318
+ },
319
+ });
320
+
321
+ function RouteComponent() {
322
+ const content = useIntlayer("app");
323
+ const navigate = useLocalizedNavigate();
324
+
287
325
  return (
288
- <div className="flex gap-2">
289
- <button onClick={() => change(Locales.ENGLISH)}>English</button>
290
- <button onClick={() => change(Locales.FRENCH)}>Français</button>
291
- <button onClick={() => change(Locales.SPANISH)}>Español</button>
326
+ <div>
327
+ <div>
328
+ {content.title}
329
+ <LocaleSwitcher />
330
+ <div>
331
+ <LocalizedLink to="/">{content.links.home}</LocalizedLink>
332
+ <LocalizedLink to="/about">{content.links.about}</LocalizedLink>
333
+ </div>
334
+ <div>
335
+ <button onClick={() => navigate({ to: "/" })}>
336
+ {content.links.home}
337
+ </button>
338
+ <button onClick={() => navigate({ to: "/about" })}>
339
+ {content.links.about}
340
+ </button>
341
+ </div>
342
+ </div>
292
343
  </div>
293
344
  );
294
345
  }
295
346
  ```
296
347
 
297
- ---
348
+ > `useIntlayer` kancasını daha fazla öğrenmek için, [belgelere](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/packages/react-intlayer/useIntlayer.md) bakınız.
298
349
 
299
- ## (İsteğe Bağlı) Adım 9: `<html lang>` ve `dir` (TanStack Start Document)
300
-
301
- TanStack Start, özelleştirebileceğiniz bir **Document** (kök HTML kabuğu) sunar. Erişilebilirlik/SEO için `lang` ve `dir` ayarlayın:
302
-
303
- ```tsx fileName="src/routes/__root.tsx" {4,15}
304
- import { HeadContent, Scripts, createRootRoute } from "@tanstack/react-router";
305
- import { TanStackRouterDevtools } from "@tanstack/react-router-devtools";
306
-
307
- import Header from "../components/Header";
308
-
309
- import { IntlayerProvider } from "react-intlayer";
310
- import appCss from "../styles.css?url";
311
-
312
- export const Route = createRootRoute({
313
- head: () => ({
314
- meta: [
315
- {
316
- charSet: "utf-8",
317
- },
318
- {
319
- name: "viewport",
320
- content: "width=device-width, initial-scale=1",
321
- },
322
- {
323
- title: "TanStack Start Starter",
324
- },
325
- ],
326
- links: [
327
- {
328
- rel: "stylesheet",
329
- href: appCss,
330
- },
331
- ],
332
- }),
333
-
334
- shellComponent: RootDocument,
335
- });
350
+ ### Adım 9: Bir Dil Değiştirici (Locale Switcher) Bileşeni Oluşturun
351
+
352
+ Kullanıcıların dilleri değiştirmesine izin veren bir bileşen oluşturun:
353
+
354
+ ```tsx fileName="src/components/locale-switcher.tsx"
355
+ import type { FC } from "react";
356
+
357
+ import { useLocation } from "@tanstack/react-router";
358
+ import { getHTMLTextDir, getLocaleName, getPathWithoutLocale } from "intlayer";
359
+ import { setLocaleCookie, useIntlayer, useLocale } from "react-intlayer";
360
+
361
+ import { LocalizedLink, To } from "./localized-link";
362
+
363
+ export const LocaleSwitcher: FC = () => {
364
+ const { localeSwitcherLabel } = useIntlayer("locale-switcher");
365
+ const { pathname } = useLocation();
366
+
367
+ const { availableLocales, locale } = useLocale();
368
+
369
+ const pathWithoutLocale = getPathWithoutLocale(pathname);
336
370
 
337
- function RootDocument({ children }: { children: React.ReactNode }) {
338
371
  return (
339
- <IntlayerProvider>
340
- <html lang="en">
341
- <head>
342
- <HeadContent />
343
- </head>
344
- <body>
345
- <Header />
346
- {children}
347
- <TanStackRouterDevtools />
348
- <Scripts />
349
- </body>
350
- </html>
351
- </IntlayerProvider>
372
+ <ol>
373
+ {availableLocales.map((localeEl) => (
374
+ <li key={localeEl}>
375
+ <LocalizedLink
376
+ aria-current={localeEl === locale ? "sayfa" : undefined}
377
+ aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
378
+ onClick={() => setLocaleCookie(localeEl)}
379
+ params={{ locale: localeEl }}
380
+ to={pathWithoutLocale as To}
381
+ >
382
+ <span>
383
+ {/* Dil Kodu - örn. FR */}
384
+ {localeItem}
385
+ </span>
386
+ <span>
387
+ {/* Dil kendi yerelinde - örn. Français */}
388
+ {getLocaleName(localeItem, locale)}
389
+ </span>
390
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
391
+ {/* Dil mevcut yerelde - örn. Francés, mevcut yerel Locales.SPANISH olarak ayarlanmış */}
392
+ {getLocaleName(localeItem)}
393
+ </span>
394
+ <span dir="ltr" lang={Locales.ENGLISH}>
395
+ {/* Dil İngilizce olarak - örn. French */}
396
+ {getLocaleName(localeItem, Locales.ENGLISH)}
397
+ </span>
398
+ </LocalizedLink>
399
+ </li>
400
+ ))}
401
+ </ol>
352
402
  );
353
- }
403
+ };
354
404
  ```
355
405
 
356
- İstemci tarafı düzeltme için, küçük kancanızı da koruyabilirsiniz:
406
+ > `useLocale` hook'u hakkında daha fazla bilgi edinmek için [belgelere](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/packages/react-intlayer/useLocale.md) bakınız.
357
407
 
358
- ```tsx fileName="src/hooks/useI18nHTMLAttributes.ts"
408
+ ### Adım 10: HTML Özniteliklerinin Yönetimini Ekleme (İsteğe Bağlı)
409
+
410
+ HTML lang ve dir özniteliklerini yönetmek için bir hook oluşturun:
411
+
412
+ ```tsx fileName="src/hooks/useI18nHTMLAttributes.tsx"
413
+ // src/hooks/useI18nHTMLAttributes.tsx
414
+ import { getHTMLTextDir } from "intlayer";
359
415
  import { useEffect } from "react";
360
416
  import { useLocale } from "react-intlayer";
361
- import { getHTMLTextDir } from "intlayer";
362
417
 
363
418
  export const useI18nHTMLAttributes = () => {
364
419
  const { locale } = useLocale();
420
+
365
421
  useEffect(() => {
366
422
  document.documentElement.lang = locale;
367
423
  document.documentElement.dir = getHTMLTextDir(locale);
@@ -369,87 +425,128 @@ export const useI18nHTMLAttributes = () => {
369
425
  };
370
426
  ```
371
427
 
372
- ---
428
+ Sonra bunu kök bileşeninizde kullanın:
373
429
 
374
- ## (İsteğe Bağlı) Adım 10: Yerelleştirilmiş Bağlantı bileşeni
430
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
431
+ import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
432
+ import { IntlayerProvider, useLocale } from "react-intlayer";
375
433
 
376
- TanStack Router bir `<Link/>` sağlar, ancak dahili URL'leri otomatik olarak önekeleştiren düz bir `<a>`'ya ihtiyacınız olursa:
434
+ import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // hook'u içe aktar
377
435
 
378
- ```tsx fileName="src/components/Link.tsx"
379
- import { getLocalizedUrl } from "intlayer";
380
- import {
381
- forwardRef,
382
- type AnchorHTMLAttributes,
383
- type DetailedHTMLProps,
384
- } from "react";
385
- import { useLocale } from "react-intlayer";
436
+ export const Route = createFileRoute("/{-$locale}")({
437
+ component: LayoutComponent,
438
+ });
386
439
 
387
- export interface LinkProps
388
- extends DetailedHTMLProps<
389
- AnchorHTMLAttributes<HTMLAnchorElement>,
390
- HTMLAnchorElement
391
- > {}
392
-
393
- const isExternal = (href?: string) => /^https?:\/\//.test(href ?? "");
394
-
395
- export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
396
- ({ href, children, ...props }, ref) => {
397
- const { locale } = useLocale();
398
- const hrefI18n =
399
- href && !isExternal(href) ? getLocalizedUrl(href, locale) : href;
400
- return (
401
- <a href={hrefI18n} ref={ref} {...props}>
402
- {children}
403
- </a>
404
- );
405
- }
406
- );
407
- Link.displayName = "Link";
440
+ function LayoutComponent() {
441
+ useI18nHTMLAttributes(); // bu satırı ekle
442
+
443
+ const { defaultLocale } = useLocale();
444
+ const { locale } = Route.useParams();
445
+
446
+ return (
447
+ <IntlayerProvider locale={locale ?? defaultLocale}>
448
+ <Outlet />
449
+ </IntlayerProvider>
450
+ );
451
+ }
408
452
  ```
409
453
 
410
- > A Kalıbını (basepath) kullanırsanız, TanStack'ın `<Link to="/about" />` zaten `basepath` aracılığıyla `/fr/about`'a çözümlenir, bu yüzden özel bir bağlantı isteğe bağlıdır.
454
+ ---
455
+
456
+ ### Adım 11: Middleware Ekleme (İsteğe Bağlı)
457
+
458
+ Uygulamanıza sunucu tarafı yönlendirme eklemek için `intlayerMiddleware`'i de kullanabilirsiniz. Bu eklenti, URL'ye göre mevcut yerel ayarı otomatik olarak algılar ve uygun yerel ayar çerezini ayarlar. Hiçbir yerel ayar belirtilmemişse, eklenti kullanıcının tarayıcı dil tercihlerine göre en uygun yerel ayarı belirler. Hiçbir yerel ayar algılanmazsa, varsayılan yerel ayara yönlendirme yapar.
459
+
460
+ > Üretimde `intlayerMiddleware` kullanmak için, `vite-intlayer` paketini `devDependencies`'den `dependencies`'e geçirmeniz gerektiğini unutmayın.
461
+
462
+ ```typescript {3,7} fileName="vite.config.ts"
463
+ import { reactRouter } from "@react-router/dev/vite";
464
+ import tailwindcss from "@tailwindcss/vite";
465
+ import { defineConfig } from "vite";
466
+ import { intlayer, intlayerMiddleware } from "vite-intlayer";
467
+ import tsconfigPaths from "vite-tsconfig-paths";
468
+
469
+ export default defineConfig({
470
+ plugins: [
471
+ tailwindcss(),
472
+ reactRouter(),
473
+ tsconfigPaths(),
474
+ intlayer(),
475
+ intlayerMiddleware(),
476
+ ],
477
+ });
478
+ ```
411
479
 
412
480
  ---
413
481
 
414
- ## TypeScript
482
+ ### Adım 12: TypeScript Yapılandırması (İsteğe Bağlı)
415
483
 
416
- Intlayer'ın oluşturulan türlerini dahil edin:
484
+ Intlayer, TypeScript'in avantajlarından yararlanmak ve kod tabanınızı daha güçlü hale getirmek için modül genişletme (module augmentation) kullanır.
485
+
486
+ TypeScript yapılandırmanızın otomatik oluşturulan türleri içerdiğinden emin olun:
417
487
 
418
488
  ```json5 fileName="tsconfig.json"
419
489
  {
420
- "include": ["src", ".intlayer/**/*.ts"],
490
+ // ... mevcut yapılandırmalarınız
491
+ include: [
492
+ // ... mevcut dahil ettikleriniz
493
+ ".intlayer/**/*.ts", // Otomatik oluşturulan türleri dahil et
494
+ ],
421
495
  }
422
496
  ```
423
497
 
424
498
  ---
425
499
 
426
- ## Git
500
+ ### Git Yapılandırması
427
501
 
428
- Intlayer'ın oluşturulan eserlerini yok sayın:
502
+ Intlayer tarafından oluşturulan dosyaların göz ardı edilmesi önerilir. Bu, bu dosyaların Git deposuna eklenmesini önlemenizi sağlar.
429
503
 
430
- ```gitignore
504
+ Bunu yapmak için, `.gitignore` dosyanıza aşağıdaki talimatları ekleyebilirsiniz:
505
+
506
+ ```plaintext fileName=".gitignore"
507
+ # Intlayer tarafından oluşturulan dosyaları yoksay
431
508
  .intlayer
432
509
  ```
433
510
 
434
511
  ---
435
512
 
436
- ## VS Code Uzantısı
513
+ ## VS Code Eklentisi
514
+
515
+ Intlayer ile geliştirme deneyiminizi iyileştirmek için resmi **Intlayer VS Code Eklentisi**ni yükleyebilirsiniz.
516
+
517
+ [VS Code Marketplace'ten Yükleyin](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
518
+
519
+ Bu eklenti şunları sağlar:
437
520
 
438
- - **Intlayer VS Code Uzantısı** → otomatik tamamlama, hatalar, satır içi önizlemeler, hızlı eylemler.
439
- Marketplace: `intlayer.intlayer-vs-code-extension`
521
+ - Çeviri anahtarları için **Otomatik tamamlama**.
522
+ - Eksik çeviriler için **Gerçek zamanlı hata tespiti**.
523
+ - Çevrilmiş içeriğin **Satır içi önizlemeleri**.
524
+ - Çevirileri kolayca oluşturup güncellemek için **Hızlı işlemler**.
525
+
526
+ Bu eklentinin nasıl kullanılacağı hakkında daha fazla detay için, [Intlayer VS Code Eklentisi dokümantasyonuna](https://intlayer.org/doc/vs-code-extension) bakabilirsiniz.
440
527
 
441
528
  ---
442
529
 
443
- ## Daha Fazla İlerleyin
530
+ ## Daha İleri Gitmek
444
531
 
445
- - Görsel Düzenleyici
446
- - CMS modu
447
- - Kenarda yerel ayar algılama / adaptörler
532
+ Daha ileri gitmek için, [görsel editörü](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_visual_editor.md) uygulayabilir veya içeriğinizi [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_CMS.md) kullanarak dışa aktarabilirsiniz.
448
533
 
449
534
  ---
450
535
 
536
+ ## Dokümantasyon Referansları
537
+
538
+ - [Intlayer Dokümantasyonu](https://intlayer.org)
539
+ - [Tanstack Start Dokümantasyonu](https://reactrouter.com/)
540
+ - [useIntlayer hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/packages/react-intlayer/useIntlayer.md)
541
+ - [useLocale hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/packages/react-intlayer/useLocale.md)
542
+ - [İçerik Beyanı](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/dictionary/get_started.md)
543
+ - [Yapılandırma](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md)
544
+
545
+ Bu kapsamlı rehber, Intlayer'ı Tanstack Start ile tam uluslararasılaştırılmış, yerel farkındalıklı yönlendirme ve TypeScript desteğine sahip bir uygulama için entegre etmeniz gereken her şeyi sağlar.
546
+
451
547
  ## Dokümantasyon Geçmişi
452
548
 
453
- | Sürüm | Tarih | Değişiklikler |
454
- | ----- | ---------- | --------------------------------- |
455
- | 1.0.0 | 2025-08-11 | TanStack Start uyarlaması eklendi |
549
+ | Sürüm | Tarih | Değişiklikler |
550
+ | ----- | ---------- | --------------------------- |
551
+ | 6.5.2 | 2025-10-03 | Doküman güncellemesi |
552
+ | 5.8.1 | 2025-09-09 | Tanstack Start için eklendi |