@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.
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +29 -0
- package/dist/cjs/blog.cjs +21 -1
- package/dist/cjs/blog.cjs.map +1 -1
- package/dist/cjs/common.cjs +81 -1
- package/dist/cjs/common.cjs.map +1 -0
- package/dist/cjs/doc.cjs +21 -1
- package/dist/cjs/doc.cjs.map +1 -1
- package/dist/cjs/frequentQuestions.cjs +21 -1
- package/dist/cjs/frequentQuestions.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +572 -1
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +3032 -1
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +352 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +72 -1
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/cjs/index.cjs +34 -1
- package/dist/cjs/legal.cjs +21 -1
- package/dist/cjs/legal.cjs.map +1 -1
- package/dist/esm/blog.mjs +14 -1
- package/dist/esm/blog.mjs.map +1 -1
- package/dist/esm/common.mjs +67 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/doc.mjs +14 -1
- package/dist/esm/doc.mjs.map +1 -1
- package/dist/esm/frequentQuestions.mjs +14 -1
- package/dist/esm/frequentQuestions.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +570 -1
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +3030 -1
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +350 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +70 -1
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/esm/index.mjs +6 -1
- package/dist/esm/legal.mjs +14 -1
- package/dist/esm/legal.mjs.map +1 -1
- package/dist/types/blog.d.ts +2 -2
- package/dist/types/common.d.ts +37 -2
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/doc.d.ts +2 -2
- package/dist/types/frequentQuestions.d.ts +2 -2
- package/dist/types/generated/blog.entry.d.ts +35 -2
- package/dist/types/generated/blog.entry.d.ts.map +1 -0
- package/dist/types/generated/docs.entry.d.ts +158 -2
- package/dist/types/generated/docs.entry.d.ts.map +1 -0
- package/dist/types/generated/frequentQuestions.entry.d.ts +24 -2
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -0
- package/dist/types/generated/legal.entry.d.ts +10 -2
- package/dist/types/generated/legal.entry.d.ts.map +1 -0
- package/dist/types/legal.d.ts +2 -2
- package/docs/ar/configuration.md +520 -722
- package/docs/ar/intlayer_with_storybook.md +521 -0
- package/docs/bn/configuration.md +922 -0
- package/docs/bn/intlayer_with_hono.md +428 -0
- package/docs/de/configuration.md +369 -743
- package/docs/de/intlayer_with_storybook.md +521 -0
- package/docs/en/configuration.md +181 -507
- package/docs/en/intlayer_with_storybook.md +521 -0
- package/docs/en-GB/configuration.md +456 -657
- package/docs/en-GB/intlayer_with_storybook.md +521 -0
- package/docs/es/configuration.md +379 -754
- package/docs/es/intlayer_with_storybook.md +521 -0
- package/docs/fr/configuration.md +376 -757
- package/docs/fr/intlayer_with_storybook.md +521 -0
- package/docs/hi/configuration.md +532 -728
- package/docs/hi/intlayer_with_storybook.md +521 -0
- package/docs/id/configuration.md +371 -684
- package/docs/id/intlayer_with_storybook.md +521 -0
- package/docs/it/configuration.md +397 -775
- package/docs/it/intlayer_with_storybook.md +521 -0
- package/docs/ja/configuration.md +525 -724
- package/docs/ja/intlayer_with_storybook.md +521 -0
- package/docs/ko/configuration.md +525 -724
- package/docs/ko/intlayer_with_storybook.md +521 -0
- package/docs/pl/configuration.md +430 -734
- package/docs/pl/intlayer_with_storybook.md +521 -0
- package/docs/pt/configuration.md +375 -746
- package/docs/pt/intlayer_with_storybook.md +521 -0
- package/docs/ru/configuration.md +532 -701
- package/docs/ru/intlayer_with_storybook.md +521 -0
- package/docs/tr/configuration.md +527 -719
- package/docs/tr/intlayer_with_storybook.md +521 -0
- package/docs/uk/configuration.md +425 -744
- package/docs/uk/intlayer_with_storybook.md +521 -0
- package/docs/ur/configuration.md +922 -0
- package/docs/ur/intlayer_with_hono.md +428 -0
- package/docs/vi/configuration.md +412 -753
- package/docs/vi/intlayer_with_storybook.md +521 -0
- package/docs/zh/configuration.md +521 -714
- package/docs/zh/intlayer_with_storybook.md +521 -0
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +20 -0
- package/dist/cjs/common-a-l0ULP6.cjs +0 -2
- package/dist/cjs/common-a-l0ULP6.cjs.map +0 -1
- package/dist/types/blog.entry-D5IgxPXY.d.ts +0 -35
- package/dist/types/blog.entry-D5IgxPXY.d.ts.map +0 -1
- package/dist/types/common-B45TZvLQ.d.ts +0 -37
- package/dist/types/common-B45TZvLQ.d.ts.map +0 -1
- package/dist/types/docs.entry-CergjAYt.d.ts +0 -157
- package/dist/types/docs.entry-CergjAYt.d.ts.map +0 -1
- package/dist/types/frequentQuestions.entry-BHglVS-U.d.ts +0 -24
- package/dist/types/frequentQuestions.entry-BHglVS-U.d.ts.map +0 -1
- package/dist/types/legal.entry-B5Lg5eeH.d.ts +0 -10
- package/dist/types/legal.entry-B5Lg5eeH.d.ts.map +0 -1
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-12-30
|
|
4
|
+
title: Hono i18n - ২০২৬ সালে কীভাবে একটি Hono অ্যাপ অনুবাদ করবেন
|
|
5
|
+
description: কীভাবে আপনার Hono ব্যাকএন্ডকে বহুভাষিক করবেন তা আবিষ্কার করুন। এটিকে আন্তর্জাতিকীকরণ (i18n) এবং অনুবাদ করতে ডকুমেন্টেশন অনুসরণ করুন।
|
|
6
|
+
keywords:
|
|
7
|
+
- Internationalization
|
|
8
|
+
- Documentation
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Hono
|
|
11
|
+
- JavaScript
|
|
12
|
+
- Backend
|
|
13
|
+
slugs:
|
|
14
|
+
- doc
|
|
15
|
+
- environment
|
|
16
|
+
- hono
|
|
17
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-hono-template
|
|
18
|
+
history:
|
|
19
|
+
- version: 7.5.9
|
|
20
|
+
date: 2025-12-30
|
|
21
|
+
changes: init কমান্ড যোগ করা হয়েছে
|
|
22
|
+
- version: 5.5.10
|
|
23
|
+
date: 2025-06-29
|
|
24
|
+
changes: ইতিহাস শুরু (Init history)
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Intlayer ব্যবহার করে আপনার Hono ব্যাকএন্ড ওয়েবসাইট অনুবাদ করুন | আন্তর্জাতিকীকরণ (i18n)
|
|
28
|
+
|
|
29
|
+
`hono-intlayer` হলো Hono অ্যাপ্লিকেশনগুলির জন্য একটি শক্তিশালী আন্তর্জাতিকীকরণ (i18n) মিডলওয়্যার, যা ক্লায়েন্টের পছন্দের উপর ভিত্তি করে স্থানীয়কৃত রেসপন্স প্রদান করে আপনার ব্যাকএন্ড পরিষেবাগুলিকে বিশ্বব্যাপী অ্যাক্সেসযোগ্য করার জন্য ডিজাইন করা হয়েছে।
|
|
30
|
+
|
|
31
|
+
### ব্যবহারিক ক্ষেত্র (Practical Use Cases)
|
|
32
|
+
|
|
33
|
+
- **ব্যাকএন্ড এরর ব্যবহারকারীর ভাষায় প্রদর্শন করা**: যখন কোনো এরর ঘটে, ব্যবহারকারীর নিজস্ব ভাষায় বার্তা প্রদর্শন করলে তা বুঝতে সুবিধা হয় এবং বিরক্তি কমায়। এটি বিশেষ করে সেই সকল ডাইনামিক এরর বার্তার জন্য উপযোগী যা ফ্রন্ট-এন্ড কম্পোনেন্ট যেমন টোস্ট বা মোডাল-এ দেখানো হতে পারে।
|
|
34
|
+
|
|
35
|
+
- **বহুভাষিক কন্টেন্ট সংগ্রহ করা**: ডাটাবেস থেকে কন্টেন্ট নেওয়া অ্যাপ্লিকেশনগুলির জন্য, আন্তর্জাতিকীকরণ নিশ্চিত করে যে আপনি এই কন্টেন্ট একাধিক ভাষায় পরিবেশন করতে পারবেন। এটি ই-কমার্স সাইট বা কন্টেন্ট ম্যানেজমেন্ট সিস্টেমের মতো প্ল্যাটফর্মের জন্য অত্যন্ত গুরুত্বপূর্ণ যেখানে ব্যবহারকারীর পছন্দের ভাষায় পণ্যের বিবরণ, নিবন্ধ এবং অন্যান্য কন্টেন্ট প্রদর্শন করা প্রয়োজন।
|
|
36
|
+
|
|
37
|
+
- **বহুভাষিক ইমেল পাঠানো**: ট্রানজ্যাকশনাল ইমেল, মার্কেটিং ক্যাম্পেইন বা নোটিফিকেশন যাই হোক না কেন, প্রাপকের ভাষায় ইমেল পাঠানো এনগেজমেন্ট এবং কার্যকারিতা উল্লেখযোগ্যভাবে বৃদ্ধি করতে পারে।
|
|
38
|
+
|
|
39
|
+
- **বহুভাষিক পুশ নোটিফিকেশন**: মোবাইল অ্যাপ্লিকেশনের জন্য, ব্যবহারকারীর পছন্দের ভাষায় পুশ নোটিফিকেশন পাঠানো ইন্টারঅ্যাকশন এবং রিটেনশন বাড়াতে পারে। এই ব্যক্তিগত স্পর্শ নোটিফিকেশনগুলোকে আরও প্রাসঙ্গিক এবং কার্যকর মনে করতে সাহায্য করে।
|
|
40
|
+
|
|
41
|
+
- **অন্যান্য যোগাযোগ**: ব্যাকএন্ড থেকে যেকোনো ধরনের যোগাযোগ, যেমন এসএমএস বার্তা, সিস্টেম অ্যালার্ট বা ইউজার ইন্টারফেস আপডেট, ব্যবহারকারীর ভাষায় হলে তা স্বচ্ছতা নিশ্চিত করে এবং সামগ্রিক ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
|
|
42
|
+
|
|
43
|
+
ব্যাকএন্ড আন্তর্জাতিকীকরণের মাধ্যমে, আপনার অ্যাপ্লিকেশন কেবল সাংস্কৃতিক পার্থক্যকে সম্মানই করে না বরং বিশ্ববাজারের চাহিদার সাথে আরও ভালোভাবে সামঞ্জস্যপূর্ণ হয়, যা আপনার পরিষেবাগুলিকে বিশ্বব্যাপী ছড়িয়ে দেওয়ার একটি মূল পদক্ষেপ।
|
|
44
|
+
|
|
45
|
+
## শুরু করা (Getting Started)
|
|
46
|
+
|
|
47
|
+
<iframe
|
|
48
|
+
src="https://stackblitz.com/github/aymericzip/intlayer-hono-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
49
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
50
|
+
title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
|
|
51
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
52
|
+
loading="lazy"
|
|
53
|
+
/>
|
|
54
|
+
|
|
55
|
+
GitHub-এ [Application Template](https://github.com/aymericzip/intlayer-hono-template) দেখুন।
|
|
56
|
+
|
|
57
|
+
### ইনস্টলেশন (Installation)
|
|
58
|
+
|
|
59
|
+
`hono-intlayer` ব্যবহার শুরু করতে, npm ব্যবহার করে প্যাকেজটি ইনস্টল করুন:
|
|
60
|
+
|
|
61
|
+
```bash packageManager="npm"
|
|
62
|
+
npm install intlayer hono-intlayer
|
|
63
|
+
npx intlayer init
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```bash packageManager="pnpm"
|
|
67
|
+
pnpm add intlayer hono-intlayer
|
|
68
|
+
pnpm intlayer init
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
```bash packageManager="yarn"
|
|
72
|
+
yarn add intlayer hono-intlayer
|
|
73
|
+
yarn intlayer init
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```bash packageManager="bun"
|
|
77
|
+
bun add intlayer hono-intlayer
|
|
78
|
+
bunx intlayer init
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### সেটআপ (Setup)
|
|
82
|
+
|
|
83
|
+
আপনার প্রজেক্ট রুটে একটি `intlayer.config.ts` তৈরি করে আন্তর্জাতিকীকরণ সেটিংস কনফিগার করুন:
|
|
84
|
+
|
|
85
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
86
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
87
|
+
|
|
88
|
+
const config: IntlayerConfig = {
|
|
89
|
+
internationalization: {
|
|
90
|
+
locales: [
|
|
91
|
+
Locales.ENGLISH,
|
|
92
|
+
Locales.FRENCH,
|
|
93
|
+
Locales.SPANISH_MEXICO,
|
|
94
|
+
Locales.SPANISH_SPAIN,
|
|
95
|
+
],
|
|
96
|
+
defaultLocale: Locales.ENGLISH,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export default config;
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
104
|
+
import { Locales } from "intlayer";
|
|
105
|
+
|
|
106
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
107
|
+
const config = {
|
|
108
|
+
internationalization: {
|
|
109
|
+
locales: [
|
|
110
|
+
Locales.ENGLISH,
|
|
111
|
+
Locales.FRENCH,
|
|
112
|
+
Locales.SPANISH_MEXICO,
|
|
113
|
+
Locales.SPANISH_SPAIN,
|
|
114
|
+
],
|
|
115
|
+
defaultLocale: Locales.ENGLISH,
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export default config;
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
123
|
+
const { Locales } = require("intlayer");
|
|
124
|
+
|
|
125
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
126
|
+
const config = {
|
|
127
|
+
internationalization: {
|
|
128
|
+
locales: [
|
|
129
|
+
Locales.ENGLISH,
|
|
130
|
+
Locales.FRENCH,
|
|
131
|
+
Locales.SPANISH_MEXICO,
|
|
132
|
+
Locales.SPANISH_SPAIN,
|
|
133
|
+
],
|
|
134
|
+
defaultLocale: Locales.ENGLISH,
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
module.exports = config;
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### আপনার কন্টেন্ট ডিক্লেয়ার করুন (Declare Your Content)
|
|
142
|
+
|
|
143
|
+
অনুবাদ সংরক্ষণের জন্য আপনার কন্টেন্ট ডিক্লারেশন তৈরি এবং পরিচালনা করুন:
|
|
144
|
+
|
|
145
|
+
```typescript fileName="src/index.content.ts" contentDeclarationFormat="typescript"
|
|
146
|
+
import { t, type Dictionary } from "intlayer";
|
|
147
|
+
|
|
148
|
+
const indexContent = {
|
|
149
|
+
key: "index",
|
|
150
|
+
content: {
|
|
151
|
+
exampleOfContent: t({
|
|
152
|
+
en: "Example of returned content in English",
|
|
153
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
154
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
155
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
156
|
+
}),
|
|
157
|
+
},
|
|
158
|
+
} satisfies Dictionary;
|
|
159
|
+
|
|
160
|
+
export default indexContent;
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```javascript fileName="src/index.content.mjs" contentDeclarationFormat="esm"
|
|
164
|
+
import { t } from "intlayer";
|
|
165
|
+
|
|
166
|
+
/** @type {import('intlayer').Dictionary} */
|
|
167
|
+
const indexContent = {
|
|
168
|
+
key: "index",
|
|
169
|
+
content: {
|
|
170
|
+
exampleOfContent: t({
|
|
171
|
+
en: "Example of returned content in English",
|
|
172
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
173
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
174
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
175
|
+
}),
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
export default indexContent;
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
```javascript fileName="src/index.content.cjs" codeFormat="commonjs"
|
|
183
|
+
const { t } = require("intlayer");
|
|
184
|
+
|
|
185
|
+
/** @type {import('intlayer').Dictionary} */
|
|
186
|
+
const indexContent = {
|
|
187
|
+
key: "index",
|
|
188
|
+
content: {
|
|
189
|
+
exampleOfContent: t({
|
|
190
|
+
en: "Example of returned content in English",
|
|
191
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
192
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
193
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
194
|
+
}),
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
module.exports = indexContent;
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
```json fileName="src/index.content.json" contentDeclarationFormat="json"
|
|
202
|
+
{
|
|
203
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
204
|
+
"key": "index",
|
|
205
|
+
"content": {
|
|
206
|
+
"exampleOfContent": {
|
|
207
|
+
"nodeType": "translation",
|
|
208
|
+
"translation": {
|
|
209
|
+
"en": "Example of returned content in English",
|
|
210
|
+
"fr": "Exemple de contenu renvoyé en français",
|
|
211
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
212
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)"
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
> আপনার কন্টেন্ট ডিক্লারেশন আপনার অ্যাপ্লিকেশনের যেকোনো জায়গায় ডিফাইন করা যেতে পারে যতক্ষণ না সেগুলো `contentDir` ডিরেক্টরিতে (ডিফল্টভাবে, `./src`) অন্তর্ভুক্ত থাকে এবং কন্টেন্ট ডিক্লারেশন ফাইল এক্সটেনশনের (ডিফল্টভাবে, `.content.{json,ts,tsx,js,jsx,mjs,cjs}`) সাথে মিল থাকে।
|
|
220
|
+
|
|
221
|
+
> আরও বিস্তারিত জানার জন্য, [কন্টেন্ট ডিক্লারেশন ডকুমেন্টেশন](https://github.com/aymericzip/intlayer/blob/main/docs/docs/bn/dictionary/content_file.md) দেখুন।
|
|
222
|
+
|
|
223
|
+
### Hono অ্যাপ্লিকেশন সেটআপ (Hono Application Setup)
|
|
224
|
+
|
|
225
|
+
`hono-intlayer` ব্যবহার করতে আপনার Hono অ্যাপ্লিকেশন সেটআপ করুন:
|
|
226
|
+
|
|
227
|
+
```typescript fileName="src/index.ts" codeFormat="typescript"
|
|
228
|
+
import { Hono } from "hono";
|
|
229
|
+
import { intlayer, t, getDictionary, getIntlayer } from "hono-intlayer";
|
|
230
|
+
import dictionaryExample from "./index.content";
|
|
231
|
+
|
|
232
|
+
const app = new Hono();
|
|
233
|
+
|
|
234
|
+
// আন্তর্জাতিকীকরণ রিকোয়েস্ট হ্যান্ডলার লোড করুন
|
|
235
|
+
app.use("*", intlayer());
|
|
236
|
+
|
|
237
|
+
// Routes
|
|
238
|
+
app.get("/t_example", (c) => {
|
|
239
|
+
return c.text(
|
|
240
|
+
t({
|
|
241
|
+
en: "Example of returned content in English",
|
|
242
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
243
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
244
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
245
|
+
})
|
|
246
|
+
);
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
app.get("/getIntlayer_example", (c) => {
|
|
250
|
+
return c.json(getIntlayer("index").exampleOfContent);
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
app.get("/getDictionary_example", (c) => {
|
|
254
|
+
return c.json(getDictionary(dictionaryExample).exampleOfContent);
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
export default app;
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
```javascript fileName="src/index.mjs" codeFormat="esm"
|
|
261
|
+
import { Hono } from "hono";
|
|
262
|
+
import { intlayer, t, getDictionary, getIntlayer } from "hono-intlayer";
|
|
263
|
+
import dictionaryExample from "./index.content";
|
|
264
|
+
|
|
265
|
+
const app = new Hono();
|
|
266
|
+
|
|
267
|
+
// আন্তর্জাতিকীকরণ রিকোয়েস্ট হ্যান্ডলার লোড করুন
|
|
268
|
+
app.use("*", intlayer());
|
|
269
|
+
|
|
270
|
+
// Routes
|
|
271
|
+
app.get("/t_example", (c) => {
|
|
272
|
+
return c.text(
|
|
273
|
+
t({
|
|
274
|
+
en: "Example of returned content in English",
|
|
275
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
276
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
277
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
278
|
+
})
|
|
279
|
+
);
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
app.get("/getIntlayer_example", (c) => {
|
|
283
|
+
return c.json(getIntlayer("index").exampleOfContent);
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
app.get("/getDictionary_example", (c) => {
|
|
287
|
+
return c.json(getDictionary(dictionaryExample).exampleOfContent);
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
export default app;
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
```javascript fileName="src/index.cjs" codeFormat="commonjs"
|
|
294
|
+
const { Hono } = require("hono");
|
|
295
|
+
const { intlayer, t, getDictionary, getIntlayer } = require("hono-intlayer");
|
|
296
|
+
const dictionaryExample = require("./index.content");
|
|
297
|
+
|
|
298
|
+
const app = new Hono();
|
|
299
|
+
|
|
300
|
+
// আন্তর্জাতিকীকরণ রিকোয়েস্ট হ্যান্ডলার লোড করুন
|
|
301
|
+
app.use("*", intlayer());
|
|
302
|
+
|
|
303
|
+
// Routes
|
|
304
|
+
app.get("/t_example", (c) => {
|
|
305
|
+
return c.text(
|
|
306
|
+
t({
|
|
307
|
+
en: "Example of returned content in English",
|
|
308
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
309
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
310
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
311
|
+
})
|
|
312
|
+
);
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
app.get("/getIntlayer_example", (c) => {
|
|
316
|
+
return c.json(getIntlayer("index").exampleOfContent);
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
app.get("/getDictionary_example", (c) => {
|
|
320
|
+
return c.json(getDictionary(dictionaryExample).exampleOfContent);
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
module.exports = app;
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### সামঞ্জস্যতা (Compatibility)
|
|
327
|
+
|
|
328
|
+
`hono-intlayer` এর সাথে পুরোপুরি সামঞ্জস্যপূর্ণ:
|
|
329
|
+
|
|
330
|
+
- React অ্যাপ্লিকেশনের জন্য [`react-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/bn/packages/react-intlayer/index.md)
|
|
331
|
+
- Next.js অ্যাপ্লিকেশনের জন্য [`next-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/bn/packages/next-intlayer/index.md)
|
|
332
|
+
- Vite অ্যাপ্লিকেশনের জন্য [`vite-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/bn/packages/vite-intlayer/index.md)
|
|
333
|
+
|
|
334
|
+
এটি ব্রাউজার এবং API রিকোয়েস্টসহ বিভিন্ন পরিবেশে যেকোনো আন্তর্জাতিকীকরণ সল্যুশনের সাথে নিরবিচ্ছিন্নভাবে কাজ করে। আপনি হেডার বা কুকির মাধ্যমে লোকাল শনাক্ত করতে মিডলওয়্যার কাস্টমাইজ করতে পারেন:
|
|
335
|
+
|
|
336
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
337
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
338
|
+
|
|
339
|
+
const config: IntlayerConfig = {
|
|
340
|
+
// ... অন্যান্য কনফিগারেশন অপশন
|
|
341
|
+
middleware: {
|
|
342
|
+
headerName: "my-locale-header",
|
|
343
|
+
cookieName: "my-locale-cookie",
|
|
344
|
+
},
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
export default config;
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
351
|
+
import { Locales } from "intlayer";
|
|
352
|
+
|
|
353
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
354
|
+
const config = {
|
|
355
|
+
// ... অন্যান্য কনফিগারেশন অপশন
|
|
356
|
+
middleware: {
|
|
357
|
+
headerName: "my-locale-header",
|
|
358
|
+
cookieName: "my-locale-cookie",
|
|
359
|
+
},
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
export default config;
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
366
|
+
const { Locales } = require("intlayer");
|
|
367
|
+
|
|
368
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
369
|
+
const config = {
|
|
370
|
+
// ... অন্যান্য কনফিগারেশন অপশন
|
|
371
|
+
middleware: {
|
|
372
|
+
headerName: "my-locale-header",
|
|
373
|
+
cookieName: "my-locale-cookie",
|
|
374
|
+
},
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
module.exports = config;
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
ডিফল্টভাবে, `hono-intlayer` ক্লায়েন্টের পছন্দের ভাষা নির্ধারণ করতে `Accept-Language` হেডার ব্যাখ্যা করবে।
|
|
381
|
+
|
|
382
|
+
> কনফিগারেশন এবং উন্নত বিষয় সম্পর্কে আরও তথ্যের জন্য, আমাদের [ডকুমেন্টেশন](https://github.com/aymericzip/intlayer/blob/main/docs/docs/bn/configuration.md) ভিজিট করুন।
|
|
383
|
+
|
|
384
|
+
### TypeScript কনফিগার করুন (Configure TypeScript)
|
|
385
|
+
|
|
386
|
+
`hono-intlayer` আন্তর্জাতিকীকরণ প্রক্রিয়াকে উন্নত করতে TypeScript-এর শক্তিশালী সক্ষমতাকে কাজে লাগায়। TypeScript-এর স্ট্যাটিক টাইপিং নিশ্চিত করে যে প্রতিটি অনুবাদ কী (translation key) হিসাব করা হয়েছে, যা অনুবাদের ঘাটতির ঝুঁকি কমায় এবং রক্ষণাবেক্ষণযোগ্যতা উন্নত করে।
|
|
387
|
+
|
|
388
|
+

|
|
389
|
+
|
|
390
|
+

|
|
391
|
+
|
|
392
|
+
নিশ্চিত করুন যে অটোজেনারেটেড টাইপগুলো (ডিফল্টভাবে `./types/intlayer.d.ts`-এ থাকে) আপনার `tsconfig.json` ফাইলে অন্তর্ভুক্ত আছে।
|
|
393
|
+
|
|
394
|
+
```json5 fileName="tsconfig.json"
|
|
395
|
+
{
|
|
396
|
+
// ... আপনার বিদ্যমান TypeScript কনফিগারেশন
|
|
397
|
+
"include": [
|
|
398
|
+
// ... আপনার বিদ্যমান TypeScript কনফিগারেশন
|
|
399
|
+
".intlayer/**/*.ts", // অটো-জেনারেটেড টাইপগুলো অন্তর্ভুক্ত করুন
|
|
400
|
+
],
|
|
401
|
+
}
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### VS Code এক্সটেনশন (VS Code Extension)
|
|
405
|
+
|
|
406
|
+
Intlayer-এর সাথে আপনার ডেভেলপমেন্ট অভিজ্ঞতা উন্নত করতে, আপনি অফিসিয়াল **Intlayer VS Code Extension** ইনস্টল করতে পারেন।
|
|
407
|
+
|
|
408
|
+
[VS Code Marketplace থেকে ইনস্টল করুন](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
409
|
+
|
|
410
|
+
এই এক্সটেনশনটি প্রদান করে:
|
|
411
|
+
|
|
412
|
+
- অনুবাদ কী-এর জন্য **Autocompletion**।
|
|
413
|
+
- অনুবাদের ঘাটতির জন্য **Real-time error detection**।
|
|
414
|
+
- অনুবাদিত কন্টেন্টের **Inline previews**।
|
|
415
|
+
- সহজে অনুবাদ তৈরি এবং আপডেট করার জন্য **Quick actions**।
|
|
416
|
+
|
|
417
|
+
এক্সটেনশনটি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও বিশদ বিবরণের জন্য, [Intlayer VS Code Extension ডকুমেন্টেশন](https://intlayer.org/doc/vs-code-extension) দেখুন।
|
|
418
|
+
|
|
419
|
+
### Git কনফিগারেশন (Git Configuration)
|
|
420
|
+
|
|
421
|
+
Intlayer দ্বারা জেনারেট করা ফাইলগুলোকে ইগনোর করার পরামর্শ দেওয়া হয়। এটি আপনাকে আপনার Git রিপোজিটরিতে সেগুলো কমিট করা এড়াতে সাহায্য করে।
|
|
422
|
+
|
|
423
|
+
এটি করতে, আপনি আপনার `.gitignore` ফাইলে নিম্নলিখিত নির্দেশাবলী যোগ করতে পারেন:
|
|
424
|
+
|
|
425
|
+
```plaintext fileName=".gitignore"
|
|
426
|
+
# Intlayer দ্বারা জেনারেট করা ফাইলগুলো ইগনোর করুন
|
|
427
|
+
.intlayer
|
|
428
|
+
```
|