@intlayer/docs 8.4.4 → 8.4.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 (107) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/cjs/blog.cjs +21 -1
  3. package/dist/cjs/blog.cjs.map +1 -1
  4. package/dist/cjs/common.cjs +81 -1
  5. package/dist/cjs/common.cjs.map +1 -0
  6. package/dist/cjs/doc.cjs +21 -1
  7. package/dist/cjs/doc.cjs.map +1 -1
  8. package/dist/cjs/frequentQuestions.cjs +21 -1
  9. package/dist/cjs/frequentQuestions.cjs.map +1 -1
  10. package/dist/cjs/generated/blog.entry.cjs +572 -1
  11. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  12. package/dist/cjs/generated/docs.entry.cjs +3032 -1
  13. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  14. package/dist/cjs/generated/frequentQuestions.entry.cjs +352 -1
  15. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  16. package/dist/cjs/generated/legal.entry.cjs +72 -1
  17. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  18. package/dist/cjs/index.cjs +34 -1
  19. package/dist/cjs/legal.cjs +21 -1
  20. package/dist/cjs/legal.cjs.map +1 -1
  21. package/dist/esm/blog.mjs +14 -1
  22. package/dist/esm/blog.mjs.map +1 -1
  23. package/dist/esm/common.mjs +67 -1
  24. package/dist/esm/common.mjs.map +1 -1
  25. package/dist/esm/doc.mjs +14 -1
  26. package/dist/esm/doc.mjs.map +1 -1
  27. package/dist/esm/frequentQuestions.mjs +14 -1
  28. package/dist/esm/frequentQuestions.mjs.map +1 -1
  29. package/dist/esm/generated/blog.entry.mjs +570 -1
  30. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  31. package/dist/esm/generated/docs.entry.mjs +3030 -1
  32. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  33. package/dist/esm/generated/frequentQuestions.entry.mjs +350 -1
  34. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  35. package/dist/esm/generated/legal.entry.mjs +70 -1
  36. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  37. package/dist/esm/index.mjs +6 -1
  38. package/dist/esm/legal.mjs +14 -1
  39. package/dist/esm/legal.mjs.map +1 -1
  40. package/dist/types/blog.d.ts +2 -2
  41. package/dist/types/common.d.ts +37 -2
  42. package/dist/types/common.d.ts.map +1 -0
  43. package/dist/types/doc.d.ts +2 -2
  44. package/dist/types/frequentQuestions.d.ts +2 -2
  45. package/dist/types/generated/blog.entry.d.ts +35 -2
  46. package/dist/types/generated/blog.entry.d.ts.map +1 -0
  47. package/dist/types/generated/docs.entry.d.ts +158 -2
  48. package/dist/types/generated/docs.entry.d.ts.map +1 -0
  49. package/dist/types/generated/frequentQuestions.entry.d.ts +24 -2
  50. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -0
  51. package/dist/types/generated/legal.entry.d.ts +10 -2
  52. package/dist/types/generated/legal.entry.d.ts.map +1 -0
  53. package/dist/types/legal.d.ts +2 -2
  54. package/docs/ar/configuration.md +520 -722
  55. package/docs/ar/intlayer_with_storybook.md +521 -0
  56. package/docs/bn/configuration.md +922 -0
  57. package/docs/bn/intlayer_with_hono.md +428 -0
  58. package/docs/de/configuration.md +369 -743
  59. package/docs/de/intlayer_with_storybook.md +521 -0
  60. package/docs/en/configuration.md +181 -507
  61. package/docs/en/intlayer_with_storybook.md +521 -0
  62. package/docs/en-GB/configuration.md +456 -657
  63. package/docs/en-GB/intlayer_with_storybook.md +521 -0
  64. package/docs/es/configuration.md +379 -754
  65. package/docs/es/intlayer_with_storybook.md +521 -0
  66. package/docs/fr/configuration.md +376 -757
  67. package/docs/fr/intlayer_with_storybook.md +521 -0
  68. package/docs/hi/configuration.md +532 -728
  69. package/docs/hi/intlayer_with_storybook.md +521 -0
  70. package/docs/id/configuration.md +371 -684
  71. package/docs/id/intlayer_with_storybook.md +521 -0
  72. package/docs/it/configuration.md +397 -775
  73. package/docs/it/intlayer_with_storybook.md +521 -0
  74. package/docs/ja/configuration.md +525 -724
  75. package/docs/ja/intlayer_with_storybook.md +521 -0
  76. package/docs/ko/configuration.md +525 -724
  77. package/docs/ko/intlayer_with_storybook.md +521 -0
  78. package/docs/pl/configuration.md +430 -734
  79. package/docs/pl/intlayer_with_storybook.md +521 -0
  80. package/docs/pt/configuration.md +375 -746
  81. package/docs/pt/intlayer_with_storybook.md +521 -0
  82. package/docs/ru/configuration.md +532 -701
  83. package/docs/ru/intlayer_with_storybook.md +521 -0
  84. package/docs/tr/configuration.md +527 -719
  85. package/docs/tr/intlayer_with_storybook.md +521 -0
  86. package/docs/uk/configuration.md +425 -744
  87. package/docs/uk/intlayer_with_storybook.md +521 -0
  88. package/docs/ur/configuration.md +922 -0
  89. package/docs/ur/intlayer_with_hono.md +428 -0
  90. package/docs/vi/configuration.md +412 -753
  91. package/docs/vi/intlayer_with_storybook.md +521 -0
  92. package/docs/zh/configuration.md +521 -714
  93. package/docs/zh/intlayer_with_storybook.md +521 -0
  94. package/package.json +6 -6
  95. package/src/generated/docs.entry.ts +20 -0
  96. package/dist/cjs/common-a-l0ULP6.cjs +0 -2
  97. package/dist/cjs/common-a-l0ULP6.cjs.map +0 -1
  98. package/dist/types/blog.entry-D5IgxPXY.d.ts +0 -35
  99. package/dist/types/blog.entry-D5IgxPXY.d.ts.map +0 -1
  100. package/dist/types/common-B45TZvLQ.d.ts +0 -37
  101. package/dist/types/common-B45TZvLQ.d.ts.map +0 -1
  102. package/dist/types/docs.entry-CergjAYt.d.ts +0 -157
  103. package/dist/types/docs.entry-CergjAYt.d.ts.map +0 -1
  104. package/dist/types/frequentQuestions.entry-BHglVS-U.d.ts +0 -24
  105. package/dist/types/frequentQuestions.entry-BHglVS-U.d.ts.map +0 -1
  106. package/dist/types/legal.entry-B5Lg5eeH.d.ts +0 -10
  107. package/dist/types/legal.entry-B5Lg5eeH.d.ts.map +0 -1
@@ -0,0 +1,922 @@
1
+ ---
2
+ createdAt: 2024-08-13
3
+ updatedAt: 2026-03-20
4
+ title: কনফিগারেশন (Configuration)
5
+ description: আপনার অ্যাপ্লিকেশনের জন্য কীভাবে Intlayer কনফিগার করবেন তা শিখুন। আপনার প্রয়োজন অনুযায়ী Intlayer কাস্টমাইজ করার জন্য উপলব্ধ বিভিন্ন সেটিংস এবং বিকল্পগুলি বুঝুন।
6
+ keywords:
7
+ - কনফিগারেশন
8
+ - সেটিংস
9
+ - কাস্টমাইজেশন
10
+ - Intlayer
11
+ - বিকল্প
12
+ slugs:
13
+ - doc
14
+ - concept
15
+ - configuration
16
+ history:
17
+ - version: 8.4.0
18
+ date: 2026-03-20
19
+ changes: 'compiler.output' এবং 'dictionary.fill' এর জন্য প্রতি-লোকেল অবজেক্ট নোটেশন যোগ করা হয়েছে
20
+ - version: 8.3.0
21
+ date: 2026-03-11
22
+ changes: 'baseDir' কে 'content' কনফিগারেশন থেকে 'system' কনফিগারেশনে সরানো হয়েছে
23
+ - version: 8.2.0
24
+ date: 2026-03-09
25
+ changes: কম্পাইলার বিকল্পগুলি আপডেট করা হয়েছে, 'output' এবং 'noMetadata' এর জন্য সমর্থন যোগ করা হয়েছে
26
+ - version: 8.1.7
27
+ date: 2026-02-25
28
+ changes: কম্পাইলার বিকল্পগুলি আপডেট করা হয়েছে
29
+ - version: 8.1.5
30
+ date: 2026-02-23
31
+ changes: কম্পাইলার অপশন 'build-only' এবং ডিকশনারি প্রিফিক্স যোগ করা হয়েছে
32
+ - version: 8.0.6
33
+ date: 2026-02-12
34
+ changes: Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face এবং Together.ai প্রোভাইডারদের সমর্থন যোগ করা হয়েছে
35
+ - version: 8.0.5
36
+ date: 2026-02-06
37
+ changes: AI কনফিগারেশনে `dataSerialization` যোগ করা হয়েছে
38
+ - version: 8.0.0
39
+ date: 2026-01-24
40
+ changes: অন্তর্নিহিত মেকানিজমটি আরও ভালভাবে বর্ণনা করার জন্য ইম্পোর্ট মোড `live` থেকে `fetch` এ পরিবর্তন করা হয়েছে।
41
+ - version: 8.0.0
42
+ date: 2026-01-22
43
+ changes: বিল্ড কনফিগারেশন `importMode` কে ডিকশনারি (`dictionary`) কনফিগারেশনে সরানো হয়েছে।
44
+ - version: 8.0.0
45
+ date: 2026-01-22
46
+ changes: রাউটিং কনফিগারেশনে `rewrite` অপশন যোগ করা হয়েছে
47
+ - version: 8.0.0
48
+ date: 2026-01-18
49
+ changes: সিস্টেম কনফিগারেশনকে কন্টেন্ট কনফিগারেশন থেকে আলাদা করা হয়েছে। ইন্টারনাল পাথগুলোকে `system` প্রপার্টিতে সরানো হয়েছে। কন্টেন্ট ফাইল এবং কোড ট্রান্সফরমেশন আলাদা করতে `codeDir` যোগ করা হয়েছে।
50
+ - version: 8.0.0
51
+ date: 2026-01-18
52
+ changes: ডিকশনারি অপশন `location` এবং `schema` যোগ করা হয়েছে
53
+ - version: 7.5.1
54
+ date: 2026-01-10
55
+ changes: JSON5 এবং JSONC ফাইল ফরম্যাটের সমর্থন যোগ করা হয়েছে
56
+ - version: 7.5.0
57
+ date: 2025-12-17
58
+ changes: `buildMode` অপশন যোগ করা হয়েছে
59
+ - version: 7.0.0
60
+ date: 2025-10-25
61
+ changes: `dictionary` কনফিগারেশন যোগ করা হয়েছে
62
+ - version: 7.0.0
63
+ date: 2025-10-21
64
+ changes: `middleware` কে `routing` কনফিগারেশন দ্বারা প্রতিস্থাপন করা হয়েছে
65
+ - version: 7.0.0
66
+ date: 2025-10-12
67
+ changes: `formatCommand` অপশন যোগ করা হয়েছে
68
+ - version: 6.2.0
69
+ date: 2025-10-12
70
+ changes: `excludedPath` অপশন আপডেট করা হয়েছে
71
+ - version: 6.0.2
72
+ date: 2025-09-23
73
+ changes: `outputFormat` অপশন যোগ করা হয়েছে
74
+ - version: 6.0.0
75
+ date: 2025-09-21
76
+ changes: `dictionaryOutput` এবং `i18nextResourcesDir` ফিল্ডগুলো মুছে ফেলা হয়েছে
77
+ - version: 6.0.0
78
+ date: 2025-09-16
79
+ changes: `live` ইম্পোর্ট মোড যোগ করা হয়েছে
80
+ - version: 6.0.0
81
+ date: 2025-09-04
82
+ changes: `hotReload` ফিল্ডকে `liveSync` দ্বারা প্রতিস্থাপন করা হয়েছে এবং `liveSyncPort` ও `liveSyncURL` ফিল্ড যোগ করা হয়েছে
83
+ - version: 5.6.1
84
+ date: 2025-07-25
85
+ changes: `activateDynamicImport` কে `importMode` অপশন দ্বারা প্রতিস্থাপন করা হয়েছে
86
+ - version: 5.6.0
87
+ date: 2025-07-13
88
+ changes: ডিফল্ট contentDir `['src']` থেকে `['.']` তে পরিবর্তন করা হয়েছে
89
+ - version: 5.5.11
90
+ date: 2025-06-29
91
+ changes: `docs` কমান্ডগুলো যোগ করা হয়েছে
92
+ ---
93
+
94
+ # Intlayer কনফিগারেশন ডকুমেন্টেশন
95
+
96
+ ## ওভারভিউ
97
+
98
+ Intlayer কনফিগারেশন ফাইল আপনাকে প্লাগইনটির বিভিন্ন দিক কাস্টমাইজ করতে দেয়, যেমন ইন্টারন্যাশনালাইজেশন (internationalization), মিডলওয়্যার এবং কন্টেন্ট হ্যান্ডলিং। এই ডকুমেন্টেশন কনফিগারেশনের প্রতিটি প্রপার্টির বিস্তারিত বর্ণনা প্রদান করে।
99
+
100
+ ---
101
+
102
+ ## সূচিপত্র
103
+
104
+ <TOC/>
105
+
106
+ ---
107
+
108
+ ## সমর্থিত কনফিগারেশন ফাইল ফরম্যাট
109
+
110
+ Intlayer JSON, JS, MJS এবং TS সহ নিচের কনফিগারেশন ফাইল ফরম্যাটগুলো গ্রহণ করে:
111
+
112
+ - `intlayer.config.ts`
113
+ - `intlayer.config.js`
114
+ - `intlayer.config.json`
115
+ - `intlayer.config.json5`
116
+ - `intlayer.config.jsonc`
117
+ - `intlayer.config.cjs`
118
+ - `intlayer.config.mjs`
119
+ - `.intlayerrc`
120
+
121
+ ---
122
+
123
+ ## কনফিগারেশন ফাইল উদাহরণ
124
+
125
+ ````typescript fileName="intlayer.config.ts" codeFormat="typescript"
126
+ import { Locales, type IntlayerConfig } from "intlayer";
127
+ import { nextjsRewrite } from "intlayer/routing";
128
+ import { z } from "zod";
129
+
130
+ /**
131
+ * সমস্ত উপলব্ধ বিকল্প প্রদর্শনকারী একটি উদাহরণ Intlayer কনফিগারেশন ফাইল।
132
+ */
133
+ const config: IntlayerConfig = {
134
+ /**
135
+ * ইন্টারন্যাশনালাইজেশন সেটিংসের কনফিগারেশন।
136
+ */
137
+ internationalization: {
138
+ /**
139
+ * অ্যাপ্লিকেশনে সমর্থিত লোকেলগুলোর তালিকা।
140
+ * ডিফল্ট: [Locales.ENGLISH]
141
+ */
142
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
143
+
144
+ /**
145
+ * বাধ্যতামূলক লোকেলগুলোর তালিকা যা প্রতিটি ডিকশনারিতে সংজ্ঞায়িত করা আবশ্যক।
146
+ * যদি খালি থাকে, তবে `strict` মোডে সমস্ত লোকেল বাধ্যতামূলক।
147
+ * ডিফল্ট: []
148
+ */
149
+ requiredLocales: [Locales.ENGLISH],
150
+
151
+ /**
152
+ * ইন্টারন্যাশনালাইজড কন্টেন্টের কঠোরতার স্তর।
153
+ * - "strict": কোনো ঘোষিত লোকেল অনুপস্থিত বা অঘোষিত থাকলে ত্রুটি।
154
+ * - "inclusive": ঘোষিত লোকেল অনুপস্থিত থাকলে সতর্কতা।
155
+ * - "loose": যে কোনো বিদ্যমান লোকেল গ্রহণ করে।
156
+ * ডিফল্ট: "inclusive"
157
+ */
158
+ strictMode: "inclusive",
159
+
160
+ /**
161
+ * অনুরোধকৃত লোকেল পাওয়া না গেলে ব্যাকআপ হিসেবে ব্যবহৃত ডিফল্ট লোকেল।
162
+ * ডিফল্ট: Locales.ENGLISH
163
+ */
164
+ defaultLocale: Locales.ENGLISH,
165
+ },
166
+
167
+ /**
168
+ * ডিকশনারি অপারেশন এবং ফলব্যাক আচরণ নিয়ন্ত্রণকারী সেটিংস।
169
+ */
170
+ dictionary: {
171
+ /**
172
+ * ডিকশনারিগুলো কীভাবে ইম্পোর্ট করা হবে তা নিয়ন্ত্রণ করে।
173
+ * - "static": বিল্ড টাইমে স্ট্যাটিক্যালি ইম্পোর্ট করা হয়।
174
+ * - "dynamic": Suspense ব্যবহার করে ডাইনামিক্যালি ইম্পোর্ট করা হয়।
175
+ * - "fetch": লাইভ সিঙ্ক API এর মাধ্যমে ডাইনামিক্যালি আনা হয়।
176
+ * ডিফল্ট: "static"
177
+ */
178
+ importMode: "static",
179
+
180
+ /**
181
+ * AI ব্যবহার করে স্বয়ংক্রিয়ভাবে অনুপস্থিত অনুবাদ পূরণ করার কৌশল।
182
+ * একটি বুলিয়ান মান অথবা পূর্ণ করা কন্টেন্ট সংরক্ষণের জন্য পাথ প্যাটার্ন হতে পারে।
183
+ * ডিফল্ট: true
184
+ */
185
+ fill: true,
186
+
187
+ /**
188
+ * ডিকশনারি ফাইলের শারীরিক অবস্থান।
189
+ * - "local": লোকাল ফাইলসিস্টেমে সংরক্ষিত।
190
+ * - "remote": Intlayer CMS এ সংরক্ষিত।
191
+ * - "hybrid": লোকাল এবং Intlayer CMS উভয় জায়গাতেই সংরক্ষিত।
192
+ * - "plugin" (অথবা যে কোনো কাস্টম স্ট্রিং): প্লাগইন বা কাস্টম সোর্স দ্বারা সরবরাহকৃত।
193
+ * ডিফল্ট: "local"
194
+ */
195
+ location: "local",
196
+
197
+ /**
198
+ * কন্টেন্ট কি স্বয়ংক্রিয়ভাবে রূপান্তরিত হওয়া উচিত (যেমন Markdown থেকে HTML)।
199
+ * ডিফল্ট: false
200
+ */
201
+ contentAutoTransformation: false,
202
+ },
203
+
204
+ /**
205
+ * রাউটিং এবং মিডলওয়্যার কনফিগারেশন।
206
+ */
207
+ routing: {
208
+ /**
209
+ * লোকেল রাউটিং কৌশল।
210
+ * - "prefix-no-default": ডিফল্ট লোকেল বাদে অন্যগুলোতে প্রিফিক্স যোগ করে (যেমন /dashboard, /fr/dashboard)।
211
+ * - "prefix-all": সমস্ত লোকেলে প্রিফিক্স যোগ করে (যেমন /en/dashboard, /fr/dashboard)।
212
+ * - "no-prefix": URL এ কোনো লোকেল প্রিফিক্স থাকবে না।
213
+ * - "search-params": ?locale=... ব্যবহার করে।
214
+ * ডিফল্ট: "prefix-no-default"
215
+ */
216
+ mode: "prefix-no-default",
217
+
218
+ /**
219
+ * ব্যবহারকারী-নির্বাচিত লোকেল কোথায় সংরক্ষণ করতে হবে।
220
+ * বিকল্প: 'cookie', 'localStorage', 'sessionStorage', 'header', অথবা এগুলোর একটি অ্যারে।
221
+ * ডিফল্ট: ['cookie', 'header']
222
+ */
223
+ storage: ["cookie", "header"],
224
+
225
+ /**
226
+ * অ্যাপ্লিকেশন URL গুলোর জন্য বেস পাথ।
227
+ * ডিফল্ট: ""
228
+ */
229
+ basePath: "",
230
+
231
+ /**
232
+ * প্রতি-লোকেল ভিত্তিতে নির্দিষ্ট পাথের জন্য কাস্টম URL রিরাইট রুল।
233
+ */
234
+ rewrite: nextjsRewrite({
235
+ "/[locale]/about": {
236
+ en: "/[locale]/about",
237
+ fr: "/[locale]/a-propos",
238
+ },
239
+ }),
240
+ },
241
+
242
+ /**
243
+ * কন্টেন্ট ফাইল খোঁজা এবং প্রক্রিয়াকরণ সংক্রান্ত সেটিংস।
244
+ */
245
+ content: {
246
+ /**
247
+ * ডিকশনারি স্ক্যান করার জন্য ফাইল এক্সটেনশন।
248
+ * ডিফল্ট: ['.content.ts', '.content.js', '.content.json', ইত্যাদি]
249
+ */
250
+ fileExtensions: [".content.ts", ".content.js", ".content.json"],
251
+
252
+ /**
253
+ * ডিরেক্টরি যেখানে .content ফাইলগুলো অবস্থিত।
254
+ * ডিফল্ট: ["."]
255
+ */
256
+ contentDir: ["src"],
257
+
258
+ /**
259
+ * সোর্স কোড যেখানে অবস্থিত।
260
+ * বিল্ড অপ্টিমাইজেশন এবং কোড ট্রান্সফরমেশনের জন্য ব্যবহৃত হয়।
261
+ * ডিফল্ট: ["."]
262
+ */
263
+ codeDir: ["src"],
264
+
265
+ /**
266
+ * স্ক্যানিং থেকে বাদ দেওয়া প্যাটার্ন।
267
+ * ডিফল্ট: ['node_modules', '.intlayer', ইত্যাদি]
268
+ */
269
+ excludedPath: ["node_modules"],
270
+
271
+ /**
272
+ * ডেভেলপমেন্টের সময় পরিবর্তনগুলি নজরদারি করা এবং ডিকশনারি পুনর্নির্মাণ করা হবে কি না।
273
+ * ডিফল্ট: ডেভেলপমেন্টে true
274
+ */
275
+ watch: true,
276
+
277
+ /**
278
+ * নতুন তৈরি / আপডেট করা .content ফাইল ফরম্যাট করতে ব্যবহৃত কমান্ড।
279
+ */
280
+ formatCommand: 'npx prettier --write "{{file}}"',
281
+ },
282
+
283
+ /**
284
+ * ভিউয়াল এডিটর (Visual Editor) কনফিগারেশন।
285
+ */
286
+ editor: {
287
+ /**
288
+ * ভিউয়াল এডিটর কি সক্রিয় থাকবে।
289
+ * ডিফল্ট: false
290
+ */
291
+ enabled: true,
292
+
293
+ /**
294
+ * অরিজিন ভ্যালিডেশনের জন্য আপনার অ্যাপ্লিকেশনের URL।
295
+ * ডিফল্ট: ""
296
+ */
297
+ applicationURL: "http://localhost:3000",
298
+
299
+ /**
300
+ * লোকাল এডিটর সার্ভারের পোর্ট।
301
+ * ডিফল্ট: 8000
302
+ */
303
+ port: 8000,
304
+
305
+ /**
306
+ * এডিটরের পাবলিক URL।
307
+ * ডিফল্ট: "http://localhost:8000"
308
+ */
309
+ editorURL: "http://localhost:8000",
310
+
311
+ /**
312
+ * Intlayer CMS এর URL।
313
+ * ডিফল্ট: "https://app.intlayer.org"
314
+ */
315
+ cmsURL: "https://app.intlayer.org",
316
+
317
+ /**
318
+ * ব্যাকএন্ড API এর URL।
319
+ * ডিফল্ট: "https://back.intlayer.org"
320
+ */
321
+ backendURL: "https://back.intlayer.org",
322
+
323
+ /**
324
+ * রিয়েল-টাইম কন্টেন্ট সিঙ্ক কি সক্রিয় থাকবে।
325
+ * ডিফল্ট: false
326
+ */
327
+ liveSync: true,
328
+ },
329
+
330
+ /**
331
+ * AI-ভিত্তিক অনুবাদ এবং নির্মাণ সেটিংস।
332
+ */
333
+ ai: {
334
+ /**
335
+ * ব্যবহারের জন্য AI প্রোভাইডার।
336
+ * বিকল্প: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
337
+ * ডিফল্ট: 'openai'
338
+ */
339
+ provider: "openai",
340
+
341
+ /**
342
+ * নির্বাচিত প্রোভাইডারের মডেল যা ব্যবহার করা হবে।
343
+ */
344
+ model: "gpt-4o",
345
+
346
+ /**
347
+ * প্রোভাইডার API কী।
348
+ */
349
+ apiKey: process.env.OPENAI_API_KEY,
350
+
351
+ /**
352
+ * অনুবাদ তৈরির সময় AI কে নির্দেশিকা দেওয়ার জন্য গ্লোবাল কনটেক্সট।
353
+ */
354
+ applicationContext: "এটি একটি ভ্রমণ বুকিং অ্যাপ্লিকেশন।",
355
+
356
+ /**
357
+ * AI API এর জন্য বেস পাথ URL।
358
+ */
359
+ baseURL: "http://localhost:3000",
360
+
361
+ /**
362
+ * ডেটা সিরিয়ালাইজেশন (Data Serialization)
363
+ *
364
+ * বিকল্প:
365
+ * - "json": ডিফল্ট, শক্তিশালী; বেশি টোকেন ব্যবহার করে।
366
+ * - "toon": কম টোকেন ব্যবহার করে, তবে JSON এর মতো সামঞ্জস্যপূর্ণ নাও হতে পারে।
367
+ *
368
+ * ডিফল্ট: "json"
369
+ */
370
+ dataSerialization: "json",
371
+ },
372
+
373
+ /**
374
+ * বিল্ড এবং অপ্টিমাইজেশন সেটিংস।
375
+ */
376
+ build: {
377
+ /**
378
+ * বিল্ড এক্সিকিউশন মোড।
379
+ * - "auto": অ্যাপ্লিকেশন বিল্ড করার সময় স্বয়ংক্রিয়ভাবে বিল্ড হবে।
380
+ * - "manual": একটি স্পষ্ট বিল্ড কমান্ডের প্রয়োজন।
381
+ * ডিফল্ট: "auto"
382
+ */
383
+ mode: "auto",
384
+
385
+ /**
386
+ * অব্যবহৃত ডিকশনারিগুলো সরিয়ে ফাইনাল বান্ডল কি অপ্টিমাইজ করা হবে।
387
+ * ডিফল্ট: প্রোডাকশনে true
388
+ */
389
+ optimize: true,
390
+
391
+ /**
392
+ * জেনারেটেড ডিকশনারি ফাইলগুলোর জন্য আউটপুট ফরম্যাট।
393
+ * ডিফল্ট: ['cjs', 'esm']
394
+ */
395
+ outputFormat: ["cjs", "esm"],
396
+
397
+ /**
398
+ * বিল্ড করার সময় TypeScript টাইপগুলি চেক করবে কি না তা নির্দেশ করে।
399
+ * ডিফল্ট: false
400
+ */
401
+ checkTypes: false,
402
+ },
403
+
404
+ /**
405
+ * লগার (Logger) কনফিগারেশন।
406
+ */
407
+ log: {
408
+ /**
409
+ * লগিং লেভেল।
410
+ * - "default": স্ট্যান্ডার্ড লগিং।
411
+ * - "verbose": বিস্তারিত ডিবাগ লগিং।
412
+ * - "disabled": লগিং নিষ্ক্রিয় করে।
413
+ * ডিফল্ট: "default"
414
+ */
415
+ mode: "default",
416
+
417
+ /**
418
+ * সমস্ত লগ মেসেজের জন্য প্রিফিক্স।
419
+ * ডিফল্ট: "[intlayer]"
420
+ */
421
+ prefix: "[intlayer]",
422
+ },
423
+
424
+ /**
425
+ * সিস্টেম কনফিগারেশন (উন্নত ব্যবহারের জন্য)
426
+ */
427
+ system: {
428
+ /**
429
+ * লোকালাইজড ডিকশনারিগুলো সংরক্ষণের ডিরেক্টরি।
430
+ */
431
+ dictionariesDir: ".intlayer/dictionary",
432
+
433
+ /**
434
+ * TypeScript মডিউল অগমেন্টেশনের ডিরেক্টরি।
435
+ */
436
+ moduleAugmentationDir: ".intlayer/types",
437
+
438
+ /**
439
+ * আনমার্জড (unmerged) ডিকশনারিগুলো সংরক্ষণের ডিরেক্টরি।
440
+ */
441
+ unmergedDictionariesDir: ".intlayer/unmerged_dictionary",
442
+
443
+ /**
444
+ * ডিকশনারি টাইপগুলো সংরক্ষণের ডিরেক্টরি।
445
+ */
446
+ typesDir: ".intlayer/types",
447
+
448
+ /**
449
+ * মেইন অ্যাপ্লিকেশন ফাইলগুলো যেখানে সংরক্ষিত হয়।
450
+ */
451
+ mainDir: ".intlayer/main",
452
+
453
+ /**
454
+ * কনফিগারেশন ফাইলগুলো যেখানে সংরক্ষিত হয়।
455
+ */
456
+ configDir: ".intlayer/config",
457
+
458
+ /**
459
+ * ক্যাশে ফাইলগুলো যেখানে সংরক্ষিত হয়।
460
+ */
461
+ cacheDir: ".intlayer/cache",
462
+ },
463
+
464
+ /**
465
+ * কম্পাইলার কনফিগারেশন (উন্নত ব্যবহারের জন্য)
466
+ */
467
+ compiler: {
468
+ /**
469
+ * কম্পাইলার সক্রিয় থাকবে কি না তা নির্দেশ করে।
470
+ *
471
+ * - false: কম্পাইলার নিষ্ক্রিয় করে।
472
+ * - true: কম্পাইলার সক্রিয় করে।
473
+ * - "build-only": ডেভেলপমেন্টের সময় কম্পাইলার বাদ দেয় এবং স্টার্টআপের গতি বাড়ায়।
474
+ *
475
+ * ডিফল্ট: false
476
+ */
477
+ enabled: true,
478
+
479
+ /**
480
+ * আউটপুট ফাইলগুলোর জন্য পাথ নির্ধারণ করে। `outputDir` কে প্রতিস্থাপন করে।
481
+ *
482
+ * - `./` পাথগুলো কম্পোনেন্ট ডিরেক্টরি সাপেক্ষে সমাধান করা হয়।
483
+ * - `/` পাথগুলো প্রজেক্ট রুট (`baseDir`) সাপেক্ষে সমাধান করা হয়।
484
+ *
485
+ * - পাথে `{{locale}}` ভেরিয়েবল অন্তর্ভুক্ত করলে প্রতি-ভাষার জন্য আলাদা ডিকশনারি তৈরি হবে।
486
+ *
487
+ * উদাহরণ:
488
+ * ```ts
489
+ * {
490
+ * // কম্পোনেন্টের পাশে মাল্টিলিঙ্গুয়াল .content.ts ফাইল তৈরি করুন
491
+ * output: ({ fileName, extension }) => `./${fileName}${extension}`,
492
+ *
493
+ * // output: './{{fileName}}{{extension}}', // টেমপ্লেট স্ট্রিং ব্যবহার করে সমতুল্য
494
+ * }
495
+ * ```
496
+ *
497
+ * ```ts
498
+ * {
499
+ * // প্রজেক্ট রুটে প্রতি ভাষার জন্য সেন্ট্রালাইজড JSON তৈরি করুন
500
+ * output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
501
+ *
502
+ * // output: '/locales/{{locale}}/{{key}}.content.json', // টেমপ্লেট স্ট্রিং ব্যবহার করে সমতুল্য
503
+ * }
504
+ * ```
505
+ *
506
+ * ভেরিয়েবল তালিকা:
507
+ * - `fileName`: ফাইলের নাম।
508
+ * - `key`: কন্টেন্ট কী।
509
+ * - `locale`: কন্টেন্ট লোকেল।
510
+ * - `extension`: ফাইলের এক্সটেনশন।
511
+ * - `componentFileName`: কম্পোনেন্ট ফাইলের নাম।
512
+ * - `componentExtension`: কম্পোনেন্ট ফাইলের এক্সটেনশন।
513
+ * - `format`: ডিকশনারি ফরম্যাট।
514
+ * - `componentFormat`: কম্পোনেন্ট ডিকশনারি ফরম্যাট।
515
+ * - `componentDirPath`: কম্পোনেন্ট ডিরেক্টরি পাথ।
516
+ */
517
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
518
+
519
+ /**
520
+ * রূপান্তরিত করার পর কম্পোনেন্টগুলো কি সংরক্ষণ করা হবে তা নির্দেশ করে।
521
+ * এর ফলে কম্পাইলার আপনার অ্যাপ্লিকেশন রূপান্তরিত করতে একবার রান হতে পারে এবং তারপর সরানো যেতে পারে।
522
+ */
523
+ saveComponents: false,
524
+
525
+ /**
526
+ * জেনারেটেড ফাইলে শুধুমাত্র কন্টেন্ট যোগ করবে। i18next বা ICU MessageFormat-এর জন্য প্রতি-ভাষা JSON আউটপুটের জন্য উপযোগী।
527
+ */
528
+ noMetadata: false,
529
+
530
+ /**
531
+ * ডিকশনারি কী প্রিফিক্স
532
+ */
533
+ dictionaryKeyPrefix: "", // এক্সট্র্যাক্টেড ডিকশনারি কীগুলোতে একটি ঐচ্ছিক প্রিফিক্স যোগ করুন
534
+ },
535
+
536
+ /**
537
+ * ডিকশনারি বিষয়বস্তু যাচাই করার জন্য কাস্টম স্কিমা (Schemas)।
538
+ */
539
+ schemas: {
540
+ "my-schema": z.object({
541
+ title: z.string(),
542
+ }),
543
+ },
544
+
545
+ /**
546
+ * প্লাগইন কনফিগারেশন।
547
+ */
548
+ plugins: [],
549
+ };
550
+
551
+ export default config;
552
+ ````
553
+
554
+ ---
555
+
556
+ ## কনফিগারেশন রেফারেন্স (Configuration Reference)
557
+
558
+ নিচের বিভাগগুলো Intlayer-এ উপলব্ধ বিভিন্ন কনফিগারেশন বিকল্প বর্ণনা করে।
559
+
560
+ ---
561
+
562
+ ### ইন্টারন্যাশনালাইজেশন কনফিগারেশন (Internationalization Configuration)
563
+
564
+ উপলব্ধ লোকেল এবং অ্যাপ্লিকেশনের জন্য ডিফল্ট লোকেল সহ ইন্টারন্যাশনালাইজেশন সংক্রান্ত সেটিংস সংজ্ঞায়িত করে।
565
+
566
+ | ফিল্ড | টাইপ | বর্ণনা | উদাহরণ | নোট |
567
+ | ----------------- | ---------- | ------------------------------------------------------------------------------------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
568
+ | `locales` | `string[]` | অ্যাপ্লিকেশনে সমর্থিত লোকেলগুলোর তালিকা। ডিফল্ট: `[Locales.ENGLISH]` | `['en', 'fr', 'es']` | |
569
+ | `requiredLocales` | `string[]` | অ্যাপ্লিকেশনে বাধ্যতামূলক লোকেলগুলোর তালিকা। ডিফল্ট: `[]` | `[]` | যদি খালি থাকে, তবে `strict` মোডে সব লোকেল বাধ্যতামূলক। নিশ্চিত করুন যে বাধ্যতামূলক লোকেলগুলো ও `locales` ফিল্ডে সংজ্ঞায়িত করা আছে। |
570
+ | `strictMode` | `string` | TypeScript ব্যবহারের মাধ্যমে ইন্টারন্যাশনালাইজড কন্টেন্টের বলিষ্ঠ বাস্তবায়ন নিশ্চিত করে। ডিফল্ট: `inclusive` | | যদি `"strict"` হয়: প্রতিটি ঘোষিত লোকেল সংজ্ঞায়িত হওয়া প্রয়োজন — কোনোটি অনুপস্থিত বা অঘোষিত থাকলে `t` ফাংশন এরর থ্রো করবে। যদি `"inclusive"` হয়: অনুপস্থিত লোকেল সম্পর্কে সতর্ক করে কিন্তু বিদ্যমান অঘোষিত লোকেল গ্রহণ করে। যদি `"loose"` হয়: যে কোনো বিদ্যমান লোকেল গ্রহণ করে। |
571
+ | `defaultLocale` | `string` | অনুরোধকৃত লোকেল পাওয়া না গেলে ব্যাকআপ হিসেবে ব্যবহৃত ডিফল্ট লোকেল। ডিফল্ট: `Locales.ENGLISH` | `'en'` | URL, কুকি বা হেডারে কোনো লোকেল নির্দিষ্ট না থাকলে সেটি নির্ধারণ করতে ব্যবহৃত হয়। |
572
+
573
+ ---
574
+
575
+ ### এডিটর কনফিগারেশন (Editor Configuration)
576
+
577
+ সার্ভার পোর্ট এবং অ্যাক্টিভিটি স্টেট সহ ইন্টিগ্রেটেড এডিটর সংক্রান্ত সেটিংস সংজ্ঞায়িত করে।
578
+
579
+ | ফিল্ড | টাইপ | বর্ণনা | উদাহরণ | নোট |
580
+ | ---------------------------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
581
+ | `applicationURL` | `string` | আপনার অ্যাপ্লিকেশনের URL। ডিফল্ট: `''` | `'http://localhost:3000'`, `'https://example.com'`, `process.env.INTLAYER_EDITOR_URL` | নিরাপত্তার খাতিরে এডিটরের অরিজিন সীমিত করতে ব্যবহৃত হয়। যদি `'*'` সেট করা হয়, এডিটর যে কোনো অরিজিন থেকে অ্যাক্সেস করা যাবে। |
582
+ | `port` | `number` | ভিউয়াল এডিটর সার্ভার দ্বারা ব্যবহৃত পোর্ট। ডিফল্ট: `8000` | | |
583
+ | `editorURL` | `string` | এডিটর সার্ভার URL। ডিফল্ট: `'http://localhost:8000'` | `'http://localhost:3000'`, `'https://example.com'`, `process.env.INTLAYER_EDITOR_URL` | অরিজিনগুলো সীমিত করতে ব্যবহৃত হয় যা অ্যাপ্লিকেশনের সাথে ইন্টারঅ্যাক্ট করতে পারে। যদি `'*'` সেট করা হয়, যে কোনো অরিজিন থেকে অ্যাক্সেসযোগ্য। পোর্ট পরিবর্তন করলে বা এডিটর ভিন্ন কোনো ডোমেনে হোস্ট করা হলে এটি সেট করা আবশ্যক। |
584
+ | `cmsURL` | `string` | Intlayer CMS URL। ডিফল্ট: `'https://intlayer.org'` | `'https://intlayer.org'` | |
585
+ | `backendURL` | `string` | ব্যাকএন্ড সার্ভার URL। ডিফল্ট: `https://back.intlayer.org` | `http://localhost:4000` | |
586
+ | `enabled` | `boolean` | অ্যাপ্লিকেশনটি ভিউয়াল এডিটরের সাথে ইন্টারঅ্যাক্ট করবে কি না তা নির্দেশ করে। ডিফল্ট: `true` | `process.env.NODE_ENV !== 'production'` | যদি `false` হয়, এডিটর অ্যাপ্লিকেশনের সাথে যোগাযোগ করতে পারবে না। নির্দিষ্ট পরিবেশের জন্য এটি নিষ্ক্রিয় করা নিরাপত্তা জোরদার করে। |
587
+ | `clientId` | `string &#124; undefined` | oAuth2 ব্যবহার করে ব্যাকএন্ডের সাথে প্রমাণীকরণের জন্য intlayer প্যাকেজগুলোকে সক্ষম করে। একটি অ্যাক্সেস টোকেন পেতে [intlayer.org/project](https://app.intlayer.org/project) এ যান। ডিফল্ট: `undefined` | | গোপন রাখুন; এনভায়রনমেন্ট ভেরিয়েবলে সংরক্ষণ করুন। |
588
+ | `clientSecret` | `string &#124; undefined` | oAuth2 ব্যবহার করে ব্যাকএন্ডের সাথে প্রমাণীকরণের জন্য intlayer প্যাকেজগুলোকে সক্ষম করে। একটি অ্যাক্সেস টোকেন পেতে [intlayer.org/project](https://app.intlayer.org/project) এ যান। ডিফল্ট: `undefined` | | গোপন রাখুন; এনভায়রনমেন্ট ভেরিয়েবলে সংরক্ষণ করুন। |
589
+ | `dictionaryPriorityStrategy` | `string` | যখন লোকাল এবং রিমোট ডিকশনারি উভয়ই উপস্থিত থাকে, তখন ডিকশনারি অগ্রাধিকার দেওয়ার কৌশল। ডিফল্ট: `'local_first'` | `'distant_first'` | `'distant_first'`: লোকালের তুলনায় রিমোট ডিকশনারিকে অগ্রাধিকার দেয়। `'local_first'`: রিমোটের তুলনায় লোকাল ডিকশনারিকে অগ্রাধিকার দেয়। |
590
+ | `liveSync` | `boolean` | CMS / ভিউয়াল এডিটর / ব্যাকএন্ডে কোনো পরিবর্তন শনাক্ত হলে অ্যাপ সার্ভার কন্টেন্ট হট-রিললোড করবে কি না তা নির্দেশ করে। ডিফল্ট: `true` | `true` | যখন কোনো ডিকশনারি যোগ বা আপডেট করা হয়, অ্যাপ্লিকেশন পেজ কন্টেন্ট আপডেট করে। লাইভ সিঙ্ক অন্য সার্ভারের কন্টেন্ট আউটসোর্স করে, যা পারফরম্যান্সে সামান্য প্রভাব ফেলতে পারে। উভয়কে একই মেশিনে হোস্ট করার পরামর্শ দেওয়া হয়। |
591
+ | `liveSyncPort` | `number` | লাইভ সিঙ্ক সার্ভার পোর্ট। ডিফল্ট: `4000` | `4000` | |
592
+ | `liveSyncURL` | `string` | লাইভ সিঙ্ক সার্ভার URL। ডিফল্ট: `'http://localhost:{liveSyncPort}'` | `'https://example.com'` | ডিফল্টরূপে লোকালহোস্ট নির্দেশ করে; একটি রিমোট লাইভ সিঙ্ক সার্ভারে পরিবর্তন করা যেতে পারে। |
593
+
594
+ ### রাউটিং কনফিগারেশন (Routing Configuration)
595
+
596
+ URL স্ট্রাকচার, লোকেল স্টোরেজ এবং মিডলওয়্যার হ্যান্ডলিং সহ রাউটিং আচরণ নিয়ন্ত্রণকারী সেটিংস।
597
+
598
+ | ফিল্ড | টাইপ | বর্ণনা | উদাহরণ | নোট |
599
+ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
600
+ | `mode` | `'prefix-no-default' &#124; 'prefix-all' &#124; 'no-prefix' &#124; 'search-params'` | লোকেল হ্যান্ডলিংয়ের জন্য URL রাউটিং মোড। ডিফল্ট: `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) অথবা `/fr/dashboard` (fr)। `'prefix-all'`: `/en/dashboard`। `'no-prefix'`: লোকেল অন্য উপায়ে নিয়ন্ত্রণ করা হয়। `'search-params'`: `/dashboard?locale=fr` ব্যবহার করে। | কুকি বা লোকেল স্টোরেজ ম্যানেজমেন্টকে প্রভাবিত করে না। |
601
+ | `storage` | `false &#124; 'cookie' &#124; 'localStorage' &#124; 'sessionStorage' &#124; 'header' &#124; CookiesAttributes &#124; StorageAttributes &#124; Array` | ক্লায়েন্টে লোকেল সংরক্ষণের জন্য কনফিগারেশন। ডিফল্ট: `['cookie', 'header']` | `'localStorage'`, `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | নিচে স্টোরেজ অপশন টেবিলটি দেখুন। |
602
+ | `basePath` | `string` | অ্যাপ্লিকেশন URL গুলোর জন্য বেস পাথ। ডিফল্ট: `''` | `'/my-app'` | অ্যাপ্লিকেশনটি যদি `https://example.com/my-app` এ থাকে, তবে basePath হবে `'/my-app'` এবংURL গুলো হবে `https://example.com/my-app/en` মতো। |
603
+ | `rewrite` | `Record<string, StrictModeLocaleMap<string>>` | কাস্টম URL রিরাইট রুল যা নির্দিষ্ট পাথের জন্য ডিফল্ট রাউটিং মোডকে ওভাররাইড করে। ডাইনামিক প্যারামিটার `[param]` সমর্থন করে। ডিফল্ট: `undefined` | নিচের উদাহরণটি দেখুন | রিরাইট রুলগুলো `mode`-এর তুলনায় অগ্রাধিকার পায়। Next.js এবং Vite এর সাথে কাজ করে। `getLocalizedUrl()` স্বয়ংক্রিয়ভাবে ম্যাচিং রুলগুলো প্রয়োগ করে। দেখুন [কাস্টম URL রিরাইট](https://github.com/aymericzip/intlayer/blob/main/docs/docs/bn/custom_url_rewrites.md)। |
604
+
605
+ **`rewrite` উদাহরণ**:
606
+
607
+ ```typescript
608
+ routing: {
609
+ mode: "prefix-no-default", // ফলব্যাক কৌশল
610
+ rewrite: nextjsRewrite({
611
+ "/about": {
612
+ en: "/about",
613
+ fr: "/a-propos",
614
+ },
615
+ "/product/[slug]": {
616
+ en: "/product/[slug]",
617
+ fr: "/produit/[slug]",
618
+ },
619
+ "/blog/[category]/[id]": {
620
+ en: "/blog/[category]/[id]",
621
+ fr: "/journal/[category]/[id]",
622
+ },
623
+ }),
624
+ }
625
+ ```
626
+
627
+ #### স্টোরেজ অপশন (Storage Options)
628
+
629
+ | মান | বর্ণনা | নোট |
630
+ | ------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
631
+ | `'cookie'` | কুকিতে লোকেল সংরক্ষণ করে — ক্লায়েন্ট এবং সার্ভার উভয় দিক থেকেই অ্যাক্সেসযোগ্য। | GDPR কমপ্লায়েন্সের জন্য, নিশ্চিত করুন যে সঠিক ব্যবহারকারীর সম্মতি নেওয়া হয়েছে। `CookiesAttributes` এর মাধ্যমে কাস্টমাইজযোগ্য (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`)। |
632
+ | `'localStorage'` | ব্রাউজারে কোনো এক্সপায়ারি ডেট ছাড়াই লোকেল সংরক্ষণ করে — শুধুমাত্র ক্লায়েন্ট-সাইড। | স্পষ্টভাবে পরিষ্কার না করা পর্যন্ত এক্সপায়ার হয় না। Intlayer প্রক্সি এটি অ্যাক্সেস করতে পারে না। `StorageAttributes` এর মাধ্যমে কাস্টমাইজযোগ্য (`{ type: 'localStorage', name: 'custom-locale' }`)। |
633
+ | `'sessionStorage'` | পেজ সেশনের মেয়াদের জন্য লোকেল সংরক্ষণ করে — শুধুমাত্র ক্লায়েন্ট-সাইড। | ট্যাব বা উইন্ডো বন্ধ করলে পরিষ্কার হয়ে যায়। Intlayer প্রক্সি এটি অ্যাক্সেস করতে পারে না। `StorageAttributes` এর মাধ্যমে কাস্টমাইজযোগ্য (`{ type: 'sessionStorage', name: 'custom-locale' }`)। |
634
+ | `'header'` | HTTP হেডারের মাধ্যমে লোকেল সংরক্ষণ বা প্রেরণ করে — শুধুমাত্র সার্ভার-সাইড। | API কলের জন্য উপযোগী। ক্লায়েন্ট-সাইড এটি অ্যাক্সেস করতে পারে না। `StorageAttributes` এর মাধ্যমে কাস্টমাইজযোগ্য (`{ type: 'header', name: 'custom-locale' }`)। |
635
+
636
+ #### কুকি অ্যাট্রিবিউটস (Cookie Attributes)
637
+
638
+ কুকি স্টোরেজ ব্যবহার করার সময়, আপনি অতিরিক্ত কুকি অ্যাট্রিবিউট কনফিগার করতে পারেন:
639
+
640
+ | ফিল্ড | টাইপ | বর্ণনা |
641
+ | ---------- | ------------------------------------- | ---------------------------------------------------- |
642
+ | `name` | `string` | কুকির নাম। ডিফল্ট: `'INTLAYER_LOCALE'` |
643
+ | `domain` | `string` | কুকি ডোমেইন। ডিফল্ট: `undefined` |
644
+ | `path` | `string` | কুকি পাথ। ডিফল্ট: `undefined` |
645
+ | `secure` | `boolean` | HTTPS প্রয়োজন। ডিফল্ট: `undefined` |
646
+ | `httpOnly` | `boolean` | HTTP-only ফ্ল্যাগ। ডিফল্ট: `undefined` |
647
+ | `sameSite` | `'strict' &#124; 'lax' &#124; 'none'` | SameSite পলিসি। |
648
+ | `expires` | `Date &#124; number` | এক্সপায়ারি ডেট বা দিনের সংখ্যা। ডিফল্ট: `undefined` |
649
+
650
+ #### লোকেল স্টোরেজ অ্যাট্রিবিউটস (Locale Storage Attributes)
651
+
652
+ localStorage অথবা sessionStorage ব্যবহার করার সময়:
653
+
654
+ | ফিল্ড | টাইপ | বর্ণনা |
655
+ | ------ | ---------------------------------------- | ------------------------------------------- |
656
+ | `type` | `'localStorage' &#124; 'sessionStorage'` | স্টোরেজ টাইপ। |
657
+ | `name` | `string` | স্টোরেজ কী নাম। ডিফল্ট: `'INTLAYER_LOCALE'` |
658
+
659
+ #### কনফিগারেশন উদাহরণ
660
+
661
+ নতুন v7 রাউটিং স্ট্রাকচারের জন্য এখানে কিছু সাধারণ কনফিগারেশন উদাহরণ দেওয়া হলো:
662
+
663
+ **বেসিক কনফিগারেশন (ডিফল্ট)**:
664
+
665
+ ```typescript
666
+ import { Locales, type IntlayerConfig } from "intlayer";
667
+ // intlayer.config.ts
668
+ const config: IntlayerConfig = {
669
+ internationalization: {
670
+ locales: ["en", "fr", "es"],
671
+ defaultLocale: "en",
672
+ },
673
+ routing: {
674
+ mode: "prefix-no-default",
675
+ storage: "localStorage",
676
+ basePath: "",
677
+ },
678
+ };
679
+
680
+ export default config;
681
+ ```
682
+
683
+ **GDPR কমপ্লায়েন্ট কনফিগারেশন**:
684
+
685
+ ```typescript
686
+ import { Locales, type IntlayerConfig } from "intlayer";
687
+ // intlayer.config.ts
688
+ const config: IntlayerConfig = {
689
+ internationalization: {
690
+ locales: ["en", "fr", "es"],
691
+ defaultLocale: "en",
692
+ },
693
+ routing: {
694
+ mode: "prefix-no-default",
695
+ storage: [
696
+ {
697
+ type: "localStorage",
698
+ name: "user-locale",
699
+ },
700
+ {
701
+ type: "cookie",
702
+ name: "user-locale",
703
+ secure: true,
704
+ sameSite: "strict",
705
+ httpOnly: false,
706
+ },
707
+ ],
708
+ basePath: "",
709
+ },
710
+ };
711
+
712
+ export default config;
713
+ ```
714
+
715
+ **সার্চ প্যারামিটার মোড (Search Parameters Mode)**:
716
+
717
+ ```typescript
718
+ import { Locales, type IntlayerConfig } from "intlayer";
719
+ // intlayer.config.ts
720
+ const config: IntlayerConfig = {
721
+ internationalization: {
722
+ locales: ["en", "fr", "es"],
723
+ defaultLocale: "en",
724
+ },
725
+ routing: {
726
+ mode: "search-params",
727
+ storage: "localStorage",
728
+ basePath: "",
729
+ },
730
+ };
731
+
732
+ export default config;
733
+ ```
734
+
735
+ **কাস্টম স্টোরেজ সহ কোনো প্রিফিক্স মোড নেই (No Prefix Mode)**:
736
+
737
+ ```typescript
738
+ import { Locales, type IntlayerConfig } from "intlayer";
739
+ // intlayer.config.ts
740
+ const config: IntlayerConfig = {
741
+ internationalization: {
742
+ locales: ["en", "fr", "es"],
743
+ defaultLocale: "en",
744
+ },
745
+ routing: {
746
+ mode: "no-prefix",
747
+ storage: {
748
+ type: "sessionStorage",
749
+ name: "app-locale",
750
+ },
751
+ basePath: "/my-app",
752
+ },
753
+ };
754
+
755
+ export default config;
756
+ ```
757
+
758
+ **ডাইনামিক পাথ সহ কাস্টম URL রিরাইট**:
759
+
760
+ ```typescript
761
+ // intlayer.config.ts
762
+ import { nextjsRewrite } from "intlayer/routing";
763
+
764
+ const config: IntlayerConfig = {
765
+ internationalization: {
766
+ locales: ["en", "fr"],
767
+ defaultLocale: "en",
768
+ },
769
+ routing: {
770
+ mode: "prefix-no-default", // রিরাইট না করা পাথের জন্য ফলব্যাক
771
+ storage: "cookie",
772
+ rewrite: nextjsRewrite({
773
+ "/about": {
774
+ en: "/about",
775
+ fr: "/a-propos",
776
+ },
777
+ "/product/[slug]": {
778
+ en: "/product/[slug]",
779
+ fr: "/produit/[slug]",
780
+ },
781
+ "/blog/[category]/[id]": {
782
+ en: "/blog/[category]/[id]",
783
+ fr: "/journal/[category]/[id]",
784
+ },
785
+ }),
786
+ },
787
+ };
788
+
789
+ export default config;
790
+ ```
791
+
792
+ ---
793
+
794
+ ### কন্টেন্ট কনফিগারেশন (Content Configuration)
795
+
796
+ অ্যাপ্লিকেশনের মধ্যে কন্টেন্ট প্রসেসিং সংক্রান্ত সেটিংস (ডিরেক্টরি নাম, ফাইল এক্সটেনশন এবং প্রাপ্ত কনফিগারেশন)।
797
+
798
+ | ফিল্ড | টাইপ | বর্ণনা | উদাহরণ | নোট |
799
+ | ---------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
800
+ | `watch` | `boolean` | ডিকশনারি পুনর্নির্মাণের জন্য কন্টেন্ট ডিক্লারেশন ফাইলে পরিবর্তনের দিকে Intlayer নজর রাখবে কি না তা নির্দেশ করে। ডিফল্ট: `process.env.NODE_ENV === 'development'` | | |
801
+ | `fileExtensions` | `string[]` | কন্টেন্ট ডিক্লারেশন ফাইল স্ক্যান করার জন্য ফাইল এক্সটেনশন। ডিফল্ট: `['.content.ts', '.content.js', '.content.mjs', '.content.cjs', '.content.json', '.content.json5', '.content.jsonc']` | `['.content.ts', '.content.js']` | |
802
+ | `contentDir` | `string[]` | ডিরেক্টরি পাথ যেখানে কন্টেন্ট ডিক্লারেশন ফাইলগুলো অবস্থিত। ডিফল্ট: `['.']` | `['src/content']` | |
803
+ | `codeDir` | `string[]` | ডিরেক্টরি পাথ যেখানে আপনার অ্যাপ্লিকেশনের সোর্স কোড ফাইলগুলো অবস্থিত। ডিফল্ট: `['.']` | `['src']` | বিল্ড অপ্টিমাইজ করতে এবং কোড ট্রান্সফরমেশন ও হট রিললোড শুধুমাত্র প্রয়োজনীয় ফাইলে প্রয়োগ করা নিশ্চিত করতে ব্যবহৃত হয়। |
804
+ | `excludedPath` | `string[]` | কন্টেন্ট স্ক্যানিং থেকে বাদ দেওয়া পাথ। ডিফল্ট: `['node_modules', '.intlayer', '.next', 'dist', 'build']` | `['src/styles']` | |
805
+ | `formatCommand` | `string` | নতুন তৈরি বা আপডেট করা কন্টেন্ট ফাইলগুলো ফরম্যাট করার জন্য যে কমান্ডটি চালানো হবে। ডিফল্ট: `undefined` | `'npx prettier --write "{{file}}"'` | কন্টেন্ট এক্সট্রাকশন কালীন অথবা ভিউয়াল এডিটরের মাধ্যমে ব্যবহৃত হয়। |
806
+
807
+ ---
808
+
809
+ ### ডিকশনারি কনফিগারেশন (Dictionary Configuration)
810
+
811
+ ডিকশনারি অপারেশন নিয়ন্ত্রণকারী সেটিংস, যার মধ্যে অটো-ফিলিং আচরণ এবং কন্টেন্ট তৈরি অন্তর্ভুক্ত।
812
+
813
+ এই ডিকশনারি কনফিগারেশনের দুটি প্রধান উদ্দেশ্য রয়েছে:
814
+
815
+ ১. **ডিফল্ট মান**: কন্টেন্ট ডিক্লারেশন ফাইল তৈরির সময় ডিফল্ট মান নির্ধারণ করা।
816
+ ২. **ফলব্যাক আচরণ**: ডিকশনারি অপারেশনের আচরণ গ্লোবালভাবে সেট করার অনুমতি দেয়, নির্দিষ্ট ফিল্ড সংজ্ঞায়িত না থাকলে ফলব্যাক মান প্রদান করে।
817
+
818
+ কন্টেন্ট ডিক্লারেশন ফাইল এবং কনফিগারেশন মান কীভাবে প্রয়োগ করা হয় সে সম্পর্কে আরও তথ্যের জন্য [কন্টেন্ট ফাইল ডকুমেন্টেশন](https://github.com/aymericzip/intlayer/blob/main/docs/docs/bn/dictionary/content_file.md) দেখুন।
819
+
820
+ | ফিল্ড | টাইপ | বর্ণনা | উদাহরণ | নোট |
821
+ | --------------------------- | ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
822
+ | `fill` | `boolean &#124; FilePathPattern &#124; Partial<Record<Locale, boolean &#124; FilePathPattern>>` | অটো-ফিল (AI অনুবাদ) আউটপুট ফাইলগুলো কীভাবে জেনারেট হবে তা নিয়ন্ত্রণ করে। ডিফল্ট: `true` | নিচের উদাহরণটি দেখুন | `true`: ডিফল্ট পাথ (সোর্সের মতো একই ফাইল)। `false`: নিষ্ক্রিয়। স্ট্রিং/ফাংশন প্যাটার্ন প্রতি ভাষার জন্য ফাইল জেনারেট করে। প্রতি ভাষার জন্য অবজেক্ট: প্রতিটি ভাষা নিজস্ব প্যাটার্নের সাথে ম্যাপ করে; `false` সেই ভাষাটি বাদ দেয়। `{{locale}}` ভেরিয়েবল অন্তর্ভুক্ত করা প্রতি-ভাষা জেনারেশন ট্রিগার করে। ডিকশনারি-স্তরের `fill` সবসময় এই গ্লোবাল কনফিগারেশনের চেয়ে অগ্রাধিকার পায়। |
823
+ | `importMode` | `'static' &#124; 'dynamic' &#124; 'fetch'` | ডিকশনারিগুলো কীভাবে ইম্পোর্ট করা হবে তা নিয়ন্ত্রণ করে। ডিফল্ট: `'static'` | `'dynamic'` | `'static'`: স্ট্যাটিক্যালি ইম্পোর্ট করা হয়। `'dynamic'`: 'Suspense'-এর মাধ্যমে ডাইনামিক্যালি ইম্পোর্ট করা হয়। `'fetch'`: 'Live Sync API'-এর মাধ্যমে ডাইনামিক্যালি আনা হয়। `getIntlayer`, `getDictionary`, `useDictionary` ইত্যাদিতে প্রভাব ফেলে না। |
824
+ | `location` | `'local' &#124; 'remote' &#124; 'hybrid' &#124; string` | ডিকশনারিগুলো কোথায় সংরক্ষিত হয়। ডিফল্ট: `'local'` | `'remote'` | `'local'`: ফাইল সিস্টেম। `'remote'`: Intlayer CMS। `'hybrid'`: উভয়। |
825
+ | `contentAutoTransformation` | `boolean` | কন্টেন্ট ফাইল কি স্বয়ংক্রিয়ভাবে রূপান্তরিত হওয়া উচিত (যেমন Markdown থেকে HTML)। ডিফল্ট: `false` | `true` | @intlayer/markdown এর মাধ্যমে Markdown ফিল্ড প্রসেস করার জন্য উপযোগী। |
826
+
827
+ **`fill` উদাহরণ**:
828
+
829
+ ```ts
830
+ dictionary: {
831
+ fill: {
832
+ en: '/locales/en/{{key}}.content.json',
833
+ fr: ({ key }) => `/locales/fr/${key}.content.json`,
834
+ es: false,
835
+ }
836
+ }
837
+ ```
838
+
839
+ ---
840
+
841
+ ### AI কনফিগারেশন (AI Configuration)
842
+
843
+ Intlayer-এর AI-চালিত বৈশিষ্ট্যগুলোর জন্য সেটিংস সংজ্ঞায়িত করে, যেমন বিল্ড ট্রান্সলেশন।
844
+
845
+ | ফিল্ড | টাইপ | বর্ণনা | উদাহরণ | নোট |
846
+ | -------------------- | ---------------------- | ------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------- |
847
+ | `provider` | `string` | ব্যবহারের জন্য AI প্রোভাইডার। | `'openai'`, `'anthropic'`, `'googlevertex'` | |
848
+ | `model` | `string` | ব্যবহারের জন্য AI মডেল। | `'gpt-4o'`, `'claude-3-5-sonnet-20240620'` | |
849
+ | `apiKey` | `string` | নির্বাচিত প্রোভাইডারের জন্য API কী। | `process.env.OPENAI_API_KEY` | |
850
+ | `applicationContext` | `string` | AI অনুবাদের নির্ভুলতা উন্নত করতে আপনার অ্যাপ্লিকেশন সম্পর্কে অতিরিক্ত কনটেক্সট। | `'শিশুদের জন্য একটি লার্নিং প্ল্যাটফর্ম।'` | |
851
+ | `baseURL` | `string` | API কলের জন্য ঐচ্ছিক বেস পাথ URL। | | আপনি যদি প্রক্সি বা লোকাল AI ডেপ্লয়মেন্ট ব্যবহার করেন তবে উপযোগী। |
852
+ | `dataSerialization` | `'json' &#124; 'toon'` | AI-তে কীভাবে ডেটা পাঠানো হবে তা সংজ্ঞায়িত করে। ডিফল্ট: `'json'` | `'json'` | `'json'`: আরও শক্তিশালী এবং সুনির্দিষ্ট। `'toon'`: কম টোকেন খরচ করে কিন্তু কম স্থিতিশীল হতে পারে। |
853
+
854
+ ---
855
+
856
+ ### বিল্ড কনফিগারেশন (Build Configuration)
857
+
858
+ Intlayer বিল্ড প্রসেস এবং অপ্টিমাইজেশন সেটিংস।
859
+
860
+ | ফিল্ড | টাইপ | বর্ণনা | উদাহরণ | নোট |
861
+ | -------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------- | ------ | --- |
862
+ | `mode` | `'auto' &#124; 'manual'` | অ্যাপ্লিকেশনের প্রি-বিল্ড ধাপগুলোতে Intlayer স্বয়ংক্রিয়ভাবে চলবে কি না তা নির্দেশ করে। ডিফল্ট: `'auto'` | | |
863
+ | `optimize` | `boolean` | কম্পাইল করা ডিকশনারিগুলো রানটাইমের জন্য অপ্টিমাইজ করা উচিত কি না তা নির্দেশ করে। ডিফল্ট: প্রোডাকশনে `true` | | |
864
+ | `outputFormat` | `('cjs' &#124; 'esm')[]` | জেনারেটেড ডিকশনারি ফাইলগুলোর জন্য আউটপুট ফরম্যাট। ডিফল্ট: `['cjs', 'esm']` | | |
865
+ | `checkTypes` | `boolean` | জেনারেটেড ফাইলগুলোতে Intlayer টাইপ চেক করবে কি না তা নির্দেশ করে। ডিফল্ট: `false` | | |
866
+
867
+ ---
868
+
869
+ ### সিস্টেম কনফিগারেশন (System Configuration)
870
+
871
+ এই সেটিংসগুলো উন্নত ব্যবহারের ক্ষেত্র এবং Intlayer-এর ইন্টারনাল কনফিগারেশনের জন্য।
872
+
873
+ | ফিল্ড | টাইপ | বর্ণনা | ডিফল্ট |
874
+ | ------------------------- | -------- | -------------------------------------- | --------------------------------- |
875
+ | `dictionariesDir` | `string` | কম্পাইল করা ডিকশনারি ডিরেক্টরি। | `'.intlayer/dictionary'` |
876
+ | `moduleAugmentationDir` | `string` | TypeScript মডিউল অগমেন্টেশন ডিরেক্টরি। | `'.intlayer/types'` |
877
+ | `unmergedDictionariesDir` | `string` | আনমার্জড ডিকশনারি ডিরেক্টরি। | `'.intlayer/unmerged_dictionary'` |
878
+ | `typesDir` | `string` | জেনারেটেড টাইপ ডিরেক্টরি। | `'.intlayer/types'` |
879
+ | `mainDir` | `string` | মেইন Intlayer ফাইল ডিরেক্টরি। | `'.intlayer/main'` |
880
+ | `configDir` | `string` | কম্পাইল করা কনফিগারেশন ফাইল ডিরেক্টরি। | `'.intlayer/config'` |
881
+ | `cacheDir` | `string` | ক্যাশে ফাইল ডিরেক্টরি। | `'.intlayer/cache'` |
882
+
883
+ ---
884
+
885
+ ### কম্পাইলার কনফিগারেশন (Compiler Configuration)
886
+
887
+ Intlayer কম্পাইলার (`intlayer compiler`) এর সেটিংস।
888
+
889
+ | ফিল্ড | টাইপ | বর্ণনা | ডিফল্ট |
890
+ | --------------------- | ------------------------ | ----------------------------------------------------------------------------------------- | ------- |
891
+ | `enabled` | `boolean` | কম্পাইলার সক্রিয় কি না তা নির্দেশ করে। | `false` |
892
+ | `output` | `string &#124; Function` | এক্সট্র্যাক্টেড ডিকশনারির জন্য আউটপুট পাথ। | |
893
+ | `saveComponents` | `boolean` | অরিজিনাল সোর্স ফাইলগুলো ট্রান্সফরমড ভার্সন দ্বারা ওভাররাইট করা উচিত কি না তা নির্দেশ করে। | `false` |
894
+ | `noMetadata` | `boolean` | যদি `true` হয়, কম্পাইলার জেনারেটেড ফাইলগুলোতে মেটাডেটা অন্তর্ভুক্ত করবে না। | `false` |
895
+ | `dictionaryKeyPrefix` | `string` | ঐচ্ছিক ডিকশনারি কী প্রিফিক্স। | `''` |
896
+
897
+ ---
898
+
899
+ ### লগার কনফিগারেশন (Logger Configuration)
900
+
901
+ Intlayer লগ আউটপুট কাস্টমাইজ করার সেটিংস।
902
+
903
+ | ফিল্ড | টাইপ | বর্ণনা | ডিফল্ট |
904
+ | -------- | ---------------------------------------------- | ------------------- | -------------- |
905
+ | `mode` | `'default' &#124; 'verbose' &#124; 'disabled'` | লগিং মোড। | `'default'` |
906
+ | `prefix` | `string` | লগ মেসেজ প্রিফিক্স। | `'[intlayer]'` |
907
+
908
+ ---
909
+
910
+ ### কাস্টম স্কিমা (Custom Schemas)
911
+
912
+ | ফিল্ড | টাইপ | বর্ণনা |
913
+ | --------- | --------------------------- | ---------------------------------------------------------------------------------- |
914
+ | `schemas` | `Record<string, ZodSchema>` | আপনাকে আপনার ডিকশনারির গঠন যাচাই করার জন্য Zod স্কিমা সংজ্ঞায়িত করার অনুমতি দেয়। |
915
+
916
+ ---
917
+
918
+ ### প্লাগইন (Plugins)
919
+
920
+ | ফিল্ড | টাইপ | বর্ণনা |
921
+ | --------- | ------------------ | -------------------------------------------- |
922
+ | `plugins` | `IntlayerPlugin[]` | সক্রিয় করার জন্য Intlayer প্লাগইনের তালিকা। |