@intlayer/docs 5.7.4 → 5.7.6-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/blog/ar/intlayer_with_i18next.md +1 -1
  2. package/dist/cjs/common.cjs +0 -1
  3. package/dist/cjs/common.cjs.map +1 -1
  4. package/dist/cjs/generated/docs.entry.cjs +80 -0
  5. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  6. package/dist/esm/common.mjs +0 -1
  7. package/dist/esm/common.mjs.map +1 -1
  8. package/dist/esm/generated/docs.entry.mjs +80 -0
  9. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  10. package/dist/types/common.d.ts.map +1 -1
  11. package/dist/types/generated/docs.entry.d.ts +1 -0
  12. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  13. package/docs/ar/CI_CD.md +0 -1
  14. package/docs/ar/configuration.md +42 -5
  15. package/docs/ar/dictionary/enumeration.md +0 -1
  16. package/docs/ar/packages/react-intlayer/useI18n.md +250 -0
  17. package/docs/de/CI_CD.md +0 -1
  18. package/docs/de/configuration.md +42 -5
  19. package/docs/de/dictionary/gender.md +3 -3
  20. package/docs/de/packages/react-intlayer/useI18n.md +250 -0
  21. package/docs/en/configuration.md +44 -7
  22. package/docs/en/packages/react-intlayer/useI18n.md +250 -0
  23. package/docs/en-GB/configuration.md +42 -5
  24. package/docs/en-GB/packages/react-intlayer/useI18n.md +254 -0
  25. package/docs/es/configuration.md +42 -5
  26. package/docs/es/dictionary/enumeration.md +1 -2
  27. package/docs/es/dictionary/gender.md +3 -3
  28. package/docs/es/locale_mapper.md +1 -1
  29. package/docs/es/packages/react-intlayer/useI18n.md +250 -0
  30. package/docs/fr/configuration.md +44 -7
  31. package/docs/fr/intlayer_with_nextjs_15.md +0 -1
  32. package/docs/fr/intlayer_with_vite+preact.md +1 -1
  33. package/docs/fr/packages/react-intlayer/useI18n.md +250 -0
  34. package/docs/hi/configuration.md +42 -5
  35. package/docs/hi/dictionary/enumeration.md +0 -2
  36. package/docs/hi/packages/react-intlayer/useI18n.md +259 -0
  37. package/docs/it/configuration.md +42 -5
  38. package/docs/it/dictionary/enumeration.md +0 -1
  39. package/docs/it/packages/react-intlayer/useI18n.md +250 -0
  40. package/docs/it/vs_code_extension.md +0 -1
  41. package/docs/ja/configuration.md +43 -28
  42. package/docs/ja/dictionary/enumeration.md +0 -2
  43. package/docs/ja/packages/react-intlayer/useI18n.md +250 -0
  44. package/docs/ko/configuration.md +42 -5
  45. package/docs/ko/dictionary/enumeration.md +0 -2
  46. package/docs/ko/packages/react-intlayer/useI18n.md +250 -0
  47. package/docs/pt/configuration.md +42 -5
  48. package/docs/pt/packages/react-intlayer/useI18n.md +250 -0
  49. package/docs/ru/configuration.md +42 -5
  50. package/docs/ru/dictionary/enumeration.md +0 -2
  51. package/docs/ru/packages/react-intlayer/useI18n.md +250 -0
  52. package/docs/ru/vs_code_extension.md +0 -1
  53. package/docs/zh/configuration.md +42 -5
  54. package/docs/zh/dictionary/enumeration.md +0 -1
  55. package/docs/zh/packages/react-intlayer/useI18n.md +250 -0
  56. package/frequent_questions/ar/unknown_command.md +1 -1
  57. package/frequent_questions/de/array_as_content_declaration.md +1 -1
  58. package/frequent_questions/de/build_dictionaries.md +1 -1
  59. package/frequent_questions/de/build_error_CI_CD.md +1 -1
  60. package/frequent_questions/de/customized_locale_list.md +1 -1
  61. package/frequent_questions/de/esbuild_error.md +1 -1
  62. package/frequent_questions/de/intlayer_command_undefined.md +1 -1
  63. package/frequent_questions/de/locale_incorect_in_url.md +1 -1
  64. package/frequent_questions/de/static_rendering.md +1 -1
  65. package/frequent_questions/de/translated_path_url.md +1 -1
  66. package/frequent_questions/de/unknown_command.md +1 -1
  67. package/frequent_questions/en-GB/customized_locale_list.md +1 -1
  68. package/frequent_questions/es/array_as_content_declaration.md +1 -1
  69. package/frequent_questions/es/build_dictionaries.md +1 -1
  70. package/frequent_questions/es/customized_locale_list.md +1 -1
  71. package/frequent_questions/es/domain_routing.md +1 -1
  72. package/frequent_questions/es/get_locale_cookie.md +1 -1
  73. package/frequent_questions/es/intlayer_command_undefined.md +1 -1
  74. package/frequent_questions/es/locale_incorect_in_url.md +1 -1
  75. package/frequent_questions/es/static_rendering.md +1 -1
  76. package/frequent_questions/es/translated_path_url.md +1 -1
  77. package/frequent_questions/es/unknown_command.md +1 -1
  78. package/frequent_questions/fr/array_as_content_declaration.md +1 -1
  79. package/frequent_questions/fr/build_dictionaries.md +1 -1
  80. package/frequent_questions/fr/customized_locale_list.md +1 -1
  81. package/frequent_questions/fr/domain_routing.md +1 -1
  82. package/frequent_questions/fr/esbuild_error.md +1 -1
  83. package/frequent_questions/fr/intlayer_command_undefined.md +1 -1
  84. package/frequent_questions/fr/static_rendering.md +1 -1
  85. package/frequent_questions/fr/translated_path_url.md +1 -1
  86. package/frequent_questions/fr/unknown_command.md +1 -1
  87. package/frequent_questions/it/array_as_content_declaration.md +1 -1
  88. package/frequent_questions/it/build_dictionaries.md +1 -1
  89. package/frequent_questions/it/customized_locale_list.md +1 -1
  90. package/frequent_questions/it/esbuild_error.md +1 -1
  91. package/frequent_questions/it/intlayer_command_undefined.md +1 -1
  92. package/frequent_questions/it/locale_incorect_in_url.md +1 -1
  93. package/frequent_questions/it/static_rendering.md +1 -1
  94. package/frequent_questions/it/translated_path_url.md +1 -1
  95. package/frequent_questions/it/unknown_command.md +1 -1
  96. package/frequent_questions/ko/build_dictionaries.md +2 -2
  97. package/frequent_questions/ko/customized_locale_list.md +3 -3
  98. package/frequent_questions/ko/intlayer_command_undefined.md +3 -3
  99. package/frequent_questions/pt/array_as_content_declaration.md +1 -1
  100. package/frequent_questions/pt/build_dictionaries.md +1 -1
  101. package/frequent_questions/pt/build_error_CI_CD.md +1 -1
  102. package/frequent_questions/pt/customized_locale_list.md +1 -1
  103. package/frequent_questions/pt/domain_routing.md +1 -1
  104. package/frequent_questions/pt/esbuild_error.md +1 -1
  105. package/frequent_questions/pt/intlayer_command_undefined.md +1 -1
  106. package/frequent_questions/pt/locale_incorect_in_url.md +1 -1
  107. package/frequent_questions/pt/static_rendering.md +1 -1
  108. package/frequent_questions/pt/translated_path_url.md +1 -1
  109. package/frequent_questions/pt/unknown_command.md +1 -1
  110. package/frequent_questions/zh/build_dictionaries.md +3 -3
  111. package/frequent_questions/zh/customized_locale_list.md +3 -3
  112. package/frequent_questions/zh/esbuild_error.md +3 -3
  113. package/frequent_questions/zh/intlayer_command_undefined.md +3 -3
  114. package/frequent_questions/zh/translated_path_url.md +3 -3
  115. package/package.json +9 -9
  116. package/src/common.ts +0 -1
  117. package/src/generated/docs.entry.ts +80 -0
@@ -0,0 +1,250 @@
1
+ ---
2
+ createdAt: 2024-08-11
3
+ updatedAt: 2025-06-29
4
+ title: useI18n Hook Dokumentation | react-intlayer
5
+ description: Erfahren Sie, wie Sie den useI18n Hook im react-intlayer Paket verwenden
6
+ keywords:
7
+ - useI18n
8
+ - i18n
9
+ - Übersetzung
10
+ - Wörterbuch
11
+ - Intlayer
12
+ - Internationalisierung
13
+ - Dokumentation
14
+ - Next.js
15
+ - JavaScript
16
+ - React
17
+ slugs:
18
+ - doc
19
+ - packages
20
+ - react-intlayer
21
+ - useI18n
22
+ ---
23
+
24
+ # React-Integration: `useI18n` Hook Dokumentation
25
+
26
+ Dieser Abschnitt bietet eine detaillierte Anleitung zur Verwendung des `useI18n` Hooks in React-Anwendungen, um eine effiziente Inhaltslokalisierung zu ermöglichen.
27
+
28
+ ## Importieren von `useI18n` in React
29
+
30
+ Der `useI18n` Hook kann je nach Kontext wie folgt in React-Anwendungen importiert und integriert werden:
31
+
32
+ - **Client-Komponenten:**
33
+
34
+ ```typescript codeFormat="typescript"
35
+ import { useI18n } from "react-intlayer"; // Verwendung in clientseitigen React-Komponenten
36
+ ```
37
+
38
+ ```javascript codeFormat="esm"
39
+ import { useI18n } from "react-intlayer"; // Verwendung in clientseitigen React-Komponenten
40
+ ```
41
+
42
+ ```javascript codeFormat="commonjs"
43
+ const { useI18n } = require("react-intlayer"); // Verwendung in clientseitigen React-Komponenten
44
+ ```
45
+
46
+ - **Server-Komponenten:**
47
+
48
+ ```typescript codeFormat="commonjs"
49
+ import { useI18n } from "react-intlayer/server"; // Verwendung in serverseitigen React-Komponenten
50
+ ```
51
+
52
+ ```javascript codeFormat="esm"
53
+ import { useI18n } from "react-intlayer/server"; // Verwendung in serverseitigen React-Komponenten
54
+ ```
55
+
56
+ ```javascript codeFormat="commonjs"
57
+ const { useI18n } = require("react-intlayer/server"); // Verwendung in serverseitigen React-Komponenten
58
+ ```
59
+
60
+ ## Parameter
61
+
62
+ Dieser Hook akzeptiert zwei Parameter:
63
+
64
+ 1. **`namespace`**: Ein Wörterbuch-Namespace zur Eingrenzung der Übersetzungsschlüssel.
65
+ 2. **`locale`** (optional): Die gewünschte Locale. Wenn nicht angegeben, wird standardmäßig die Locale des Kontexts verwendet.
66
+
67
+ ## Wörterbuch
68
+
69
+ Alle Wörterbuchschlüssel müssen in Inhaltsdeklarationsdateien deklariert werden, um die Typsicherheit zu erhöhen und Fehler zu vermeiden. [Konfigurationsanweisungen finden Sie hier](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/get_started.md).
70
+
71
+ ## Anwendungsbeispiele in React
72
+
73
+ Beispiele für die Verwendung des `useI18n` Hooks innerhalb von React-Komponenten:
74
+
75
+ ```tsx fileName="src/App.tsx" codeFormat="typescript"
76
+ import type { FC } from "react";
77
+ import { ClientComponentExample, ServerComponentExample } from "@components";
78
+ import { IntlayerProvider } from "react.intlayer";
79
+ import { useI18n, IntlayerServerProvider } from "react-intlayer/server";
80
+ import { Locales } from "intlayer";
81
+
82
+ const App: FC<{ locale: Locales }> = ({ locale }) => {
83
+ const t = useI18n("home-page", locale);
84
+
85
+ return (
86
+ <>
87
+ <p>{t("introduction")}</p>
88
+ <IntlayerProvider locale={locale}>
89
+ <ClientComponentExample />
90
+ </IntlayerProvider>
91
+ <IntlayerServerProvider locale={locale}>
92
+ <ServerComponentExample />
93
+ </IntlayerServerProvider>
94
+ </>
95
+ );
96
+ };
97
+ ```
98
+
99
+ ```jsx fileName="src/app.jsx" codeFormat="esm"
100
+ import { ClientComponentExample, ServerComponentExample } from "@components";
101
+ import { IntlayerProvider } from "react-intlayer";
102
+ import { IntlayerServerProvider, useI18n } from "react-intlayer/server";
103
+
104
+ const App = ({ locale }) => {
105
+ const t = useI18n("home-page", locale);
106
+
107
+ return (
108
+ <>
109
+ <p>{t("introduction")}</p>
110
+ <IntlayerProvider locale={locale}>
111
+ <ClientComponentExample />
112
+ </IntlayerProvider>
113
+ <IntlayerServerProvider locale={locale}>
114
+ <ServerComponentExample />
115
+ </IntlayerServerProvider>
116
+ </>
117
+ );
118
+ };
119
+ ```
120
+
121
+ ```jsx fileName="src/app.cjs" codeFormat="commonjs"
122
+ const { IntlayerProvider } = require("react-intlayer");
123
+ const { IntlayerServerProvider, useI18n } = require("react-intlayer/server");
124
+
125
+ const App = ({ locale }) => {
126
+ const t = useI18n("home-page", locale);
127
+
128
+ return (
129
+ <>
130
+ <p>{t("introduction")}</p>
131
+ <IntlayerProvider locale={locale}>
132
+ <ClientComponentExample />
133
+ </IntlayerProvider>
134
+ <IntlayerServerProvider locale={locale}>
135
+ <ServerComponentExample />
136
+ </IntlayerServerProvider>
137
+ </>
138
+ );
139
+ };
140
+ ```
141
+
142
+ ```tsx fileName="src/components/ComponentExample.tsx" codeFormat="typescript"
143
+ import type { FC } from "react";
144
+ import { useI18n } from "react-intlayer";
145
+
146
+ const ComponentExample: FC = () => {
147
+ const t = useI18n("component-example");
148
+
149
+ return (
150
+ <div>
151
+ <h1>{t("title")}</h1> {/* Titel anzeigen */}
152
+ <p>{t("description")}</p> {/* Beschreibung anzeigen */}
153
+ </div>
154
+ );
155
+ };
156
+ ```
157
+
158
+ ```jsx fileName="src/components/ComponentExample.jsx" codeFormat="esm"
159
+ import { useI18n } from "react-intlayer";
160
+
161
+ const ComponentExample = () => {
162
+ const t = useI18n("component-example");
163
+
164
+ return (
165
+ <div>
166
+ <h1>{t("title")}</h1> {/* Titel anzeigen */}
167
+ <p>{t("description")}</p> {/* Beschreibung anzeigen */}
168
+ </div>
169
+ );
170
+ };
171
+ ```
172
+
173
+ ```jsx fileName="src/components/ComponentExample.cjs" codeFormat="commonjs"
174
+ const { useI18n } = require("react-intlayer");
175
+
176
+ const ComponentExample = () => {
177
+ const t = useI18n("component-example");
178
+
179
+ return (
180
+ <div>
181
+ <h1>{t("title")}</h1> {/* Titel anzeigen */}
182
+ <p>{t("description")}</p> {/* Beschreibung anzeigen */}
183
+ </div>
184
+ );
185
+ };
186
+ ```
187
+
188
+ ```tsx fileName="src/components/ServerComponentExample.tsx" codeFormat="typescript"
189
+ import { useI18n } from "react-intlayer/server";
190
+
191
+ const ServerComponentExample = () => {
192
+ const t = useI18n("server-component");
193
+
194
+ return (
195
+ <div>
196
+ <h1>{t("title")}</h1> {/* Titel anzeigen */}
197
+ <p>{t("description")}</p> {/* Beschreibung anzeigen */}
198
+ </div>
199
+ );
200
+ };
201
+ ```
202
+
203
+ ```jsx fileName="src/components/ServerComponentExample.jsx" codeFormat="esm"
204
+ import { useI18n } from "react-intlayer/server";
205
+
206
+ const ServerComponentExample = () => {
207
+ const t = useI18n("server-component");
208
+
209
+ return (
210
+ <div>
211
+ <h1>{t("title")}</h1> {/* Titel anzeigen */}
212
+ <p>{t("description")}</p> {/* Beschreibung anzeigen */}
213
+ </div>
214
+ );
215
+ };
216
+ ```
217
+
218
+ ```jsx fileName="src/components/ServerComponentExample.cjs" codeFormat="commonjs"
219
+ const { useI18n } = require("react-intlayer/server");
220
+
221
+ const ServerComponentExample = () => {
222
+ const t = useI18n("server-component");
223
+
224
+ return (
225
+ <div>
226
+ <h1>{t("title")}</h1>
227
+ <p>{t("description")}</p>
228
+ </div>
229
+ );
230
+ };
231
+ ```
232
+
233
+ ## Attributbehandlung
234
+
235
+ Beim Lokalisieren von Attributen greifen Sie entsprechend auf die Übersetzungswerte zu:
236
+
237
+ ```jsx
238
+ <!-- Für Barrierefreiheitsattribute (z. B. aria-label) verwenden Sie .value, da reine Strings erforderlich sind -->
239
+ <button aria-label={t("button.ariaLabel").value}>{t("button.text")}</button>
240
+ ```
241
+
242
+ ## Zusätzliche Ressourcen
243
+
244
+ - **Intlayer Visual Editor**: Für eine intuitivere Verwaltung von Inhalten konsultieren Sie die Dokumentation des visuellen Editors [hier](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_visual_editor.md).
245
+
246
+ Dieser Abschnitt behandelt speziell die Integration des `useI18n`-Hooks in React-Anwendungen, vereinfacht den Lokalisierungsprozess und gewährleistet Konsistenz der Inhalte über verschiedene Sprachversionen hinweg.
247
+
248
+ ## Dokumentationshistorie
249
+
250
+ - 6.0.0 - 2025-06-29: Erste Erstellung der Dokumentation zum `useI18n` Hook
@@ -242,9 +242,9 @@ Defines settings related to the integrated editor, including server port and act
242
242
 
243
243
  - _Type_: `boolean`
244
244
  - _Default_: `false`
245
- - _Description_: Indicates if the application should hot reload the locale configurations when a change is detected.
245
+ - _Description_: Indicates if the application server should hot reload the locale configurations when a change is detected.
246
246
  - _Example_: `true`
247
- - _Note_: For example, when a new dictionary is added or updated, the application will update the content tu display in the page.
247
+ - _Note_: For example, when a new dictionary is added or updated, the application will update the content to display in the page.
248
248
  - _Note_: Because the hot reloading needs an continuous connection to the server, it is only available for clients of the `enterprise` plan.
249
249
 
250
250
  - **dictionaryPriorityStrategy**:
@@ -278,10 +278,12 @@ Settings that control middleware behavior, including how the application handles
278
278
  - **prefixDefault**:
279
279
 
280
280
  - _Type_: `boolean`
281
- - _Default_: `true`
281
+ - _Default_: `false`
282
282
  - _Description_: Whether to include the default locale in the URL.
283
- - _Example_: `false`
284
- - _Note_: If `false`, URLs for the default locale will not have a locale prefix.
283
+ - _Example_: `true`
284
+ - _Note_:
285
+ - If `true` and `defaultLocale = 'en'`: path = `/en/dashboard` or `/fr/dashboard`
286
+ - If `false` and `defaultLocale = 'en'`: path = `/dashboard` or `/fr/dashboard`
285
287
 
286
288
  - **basePath**:
287
289
 
@@ -289,7 +291,11 @@ Settings that control middleware behavior, including how the application handles
289
291
  - _Default_: `''`
290
292
  - _Description_: The base path for the application URLs.
291
293
  - _Example_: `'/my-app'`
292
- - _Note_: This affects how URLs are constructed for the application.
294
+ - _Note_:
295
+ - If the application is hosted at `https://example.com/my-app`
296
+ - The base path is `'/my-app'`
297
+ - The URL will be `https://example.com/my-app/en`
298
+ - If the base path is not set, the URL will be `https://example.com/en`
293
299
 
294
300
  - **serverSetCookie**:
295
301
 
@@ -301,11 +307,42 @@ Settings that control middleware behavior, including how the application handles
301
307
  - _Note_: Controls whether the locale cookie is set on every request or never.
302
308
 
303
309
  - **noPrefix**:
310
+
304
311
  - _Type_: `boolean`
305
312
  - _Default_: `false`
306
313
  - _Description_: Whether to omit the locale prefix from URLs.
307
314
  - _Example_: `true`
308
- - _Note_: If `true`, URLs will not contain locale information.
315
+ - _Note_:
316
+ - If `true`: No prefix in the URL
317
+ - If `false`: Prefix in the URL
318
+ - Example with `basePath = '/my-app'`:
319
+ - If `noPrefix = false`: URL will be `https://example.com/my-app/en`
320
+ - If `noPrefix = true`: URL will be `https://example.com`
321
+
322
+ - **detectLocaleOnPrefetchNoPrefix**:
323
+
324
+ - _Type_: `boolean`
325
+ - _Default_: `false`
326
+ - _Description_: Controls whether locale detection occurs during Next.js prefetch requests.
327
+ - _Example_: `true`
328
+ - _Note_: This setting affects how Next.js handles locale prefetching:
329
+ - **Example scenario:**
330
+ - User's browser language is `'fr'`
331
+ - Current page is `/fr/about`
332
+ - Link prefetches `/about`
333
+ - **With `detectLocaleOnPrefetchNoPrefix: true`:**
334
+ - Prefetch detects `'fr'` locale from browser
335
+ - Redirects prefetch to `/fr/about`
336
+ - **With `detectLocaleOnPrefetchNoPrefix: false` (default):**
337
+ - Prefetch uses default locale
338
+ - Redirects prefetch to `/en/about` (assuming `'en'` is default)
339
+ - **When to use `true`:**
340
+ - Your app uses non-localized internal links (e.g. `<a href="/about">`)
341
+ - You want consistent locale detection behavior between regular and prefetch requests
342
+ - **When to use `false` (default):**
343
+ - Your app uses locale-prefixed links (e.g. `<a href="/fr/about">`)
344
+ - You want to optimize prefetching performance
345
+ - You want to avoid potential redirect loops
309
346
 
310
347
  ---
311
348
 
@@ -0,0 +1,250 @@
1
+ ---
2
+ createdAt: 2024-08-11
3
+ updatedAt: 2025-06-29
4
+ title: useI18n Hook Documentation | react-intlayer
5
+ description: Learn how to use the useI18n hook in the react-intlayer package
6
+ keywords:
7
+ - useI18n
8
+ - i18n
9
+ - translation
10
+ - dictionary
11
+ - Intlayer
12
+ - internationalization
13
+ - documentation
14
+ - Next.js
15
+ - JavaScript
16
+ - React
17
+ slugs:
18
+ - doc
19
+ - packages
20
+ - react-intlayer
21
+ - useI18n
22
+ ---
23
+
24
+ # React Integration: `useI18n` Hook Documentation
25
+
26
+ This section provides detailed guidance on how to use the `useI18n` hook within React applications, enabling efficient content localization.
27
+
28
+ ## Importing `useI18n` in React
29
+
30
+ The `useI18n` hook can be imported and integrated into React applications according to the context as follows:
31
+
32
+ - **Client Components:**
33
+
34
+ ```typescript codeFormat="typescript"
35
+ import { useI18n } from "react-intlayer"; // Use in client-side React components
36
+ ```
37
+
38
+ ```javascript codeFormat="esm"
39
+ import { useI18n } from "react-intlayer"; // Use in client-side React components
40
+ ```
41
+
42
+ ```javascript codeFormat="commonjs"
43
+ const { useI18n } = require("react-intlayer"); // Use in client-side React components
44
+ ```
45
+
46
+ - **Server Components:**
47
+
48
+ ```typescript codeFormat="commonjs"
49
+ import { useI18n } from "react-intlayer/server"; // Use in server-side React components
50
+ ```
51
+
52
+ ```javascript codeFormat="esm"
53
+ import { useI18n } from "react-intlayer/server"; // Use in server-side React components
54
+ ```
55
+
56
+ ```javascript codeFormat="commonjs"
57
+ const { useI18n } = require("react-intlayer/server"); // Use in server-side React components
58
+ ```
59
+
60
+ ## Parameters
61
+
62
+ This hook accepts two parameters:
63
+
64
+ 1. **`namespace`**: A dictionary namespace to scope the translation keys.
65
+ 2. **`locale`** (optional): The desired locale. If not specified, the context's locale will be used as default.
66
+
67
+ ## Dictionary
68
+
69
+ All dictionary keys must be declared within content declaration files to enhance type safety and prevent errors. [Configuration instructions can be found here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/get_started.md).
70
+
71
+ ## Usage Examples in React
72
+
73
+ Examples of using the `useI18n` hook within React components:
74
+
75
+ ```tsx fileName="src/App.tsx" codeFormat="typescript"
76
+ import type { FC } from "react";
77
+ import { ClientComponentExample, ServerComponentExample } from "@components";
78
+ import { IntlayerProvider } from "react-intlayer";
79
+ import { useI18n, IntlayerServerProvider } from "react-intlayer/server";
80
+ import { Locales } from "intlayer";
81
+
82
+ const App: FC<{ locale: Locales }> = ({ locale }) => {
83
+ const t = useI18n("home-page", locale);
84
+
85
+ return (
86
+ <>
87
+ <p>{t("introduction")}</p>
88
+ <IntlayerProvider locale={locale}>
89
+ <ClientComponentExample />
90
+ </IntlayerProvider>
91
+ <IntlayerServerProvider locale={locale}>
92
+ <ServerComponentExample />
93
+ </IntlayerServerProvider>
94
+ </>
95
+ );
96
+ };
97
+ ```
98
+
99
+ ```jsx fileName="src/app.jsx" codeFormat="esm"
100
+ import { ClientComponentExample, ServerComponentExample } from "@components";
101
+ import { IntlayerProvider } from "react-intlayer";
102
+ import { IntlayerServerProvider, useI18n } from "react-intlayer/server";
103
+
104
+ const App = ({ locale }) => {
105
+ const t = useI18n("home-page", locale);
106
+
107
+ return (
108
+ <>
109
+ <p>{t("introduction")}</p>
110
+ <IntlayerProvider locale={locale}>
111
+ <ClientComponentExample />
112
+ </IntlayerProvider>
113
+ <IntlayerServerProvider locale={locale}>
114
+ <ServerComponentExample />
115
+ </IntlayerServerProvider>
116
+ </>
117
+ );
118
+ };
119
+ ```
120
+
121
+ ```jsx fileName="src/app.cjs" codeFormat="commonjs"
122
+ const { IntlayerProvider } = require("react-intlayer");
123
+ const { IntlayerServerProvider, useI18n } = require("react-intlayer/server");
124
+
125
+ const App = ({ locale }) => {
126
+ const t = useI18n("home-page", locale);
127
+
128
+ return (
129
+ <>
130
+ <p>{t("introduction")}</p>
131
+ <IntlayerProvider locale={locale}>
132
+ <ClientComponentExample />
133
+ </IntlayerProvider>
134
+ <IntlayerServerProvider locale={locale}>
135
+ <ServerComponentExample />
136
+ </IntlayerServerProvider>
137
+ </>
138
+ );
139
+ };
140
+ ```
141
+
142
+ ```tsx fileName="src/components/ComponentExample.tsx" codeFormat="typescript"
143
+ import type { FC } from "react";
144
+ import { useI18n } from "react-intlayer";
145
+
146
+ const ComponentExample: FC = () => {
147
+ const t = useI18n("component-example");
148
+
149
+ return (
150
+ <div>
151
+ <h1>{t("title")}</h1> {/* Display the title */}
152
+ <p>{t("description")}</p> {/* Display the description */}
153
+ </div>
154
+ );
155
+ };
156
+ ```
157
+
158
+ ```jsx fileName="src/components/ComponentExample.jsx" codeFormat="esm"
159
+ import { useI18n } from "react-intlayer";
160
+
161
+ const ComponentExample = () => {
162
+ const t = useI18n("component-example");
163
+
164
+ return (
165
+ <div>
166
+ <h1>{t("title")}</h1> {/* Display the title */}
167
+ <p>{t("description")}</p> {/* Display the description */}
168
+ </div>
169
+ );
170
+ };
171
+ ```
172
+
173
+ ```jsx fileName="src/components/ComponentExample.cjs" codeFormat="commonjs"
174
+ const { useI18n } = require("react-intlayer");
175
+
176
+ const ComponentExample = () => {
177
+ const t = useI18n("component-example");
178
+
179
+ return (
180
+ <div>
181
+ <h1>{t("title")}</h1> {/* Display the title */}
182
+ <p>{t("description")}</p> {/* Display the description */}
183
+ </div>
184
+ );
185
+ };
186
+ ```
187
+
188
+ ```tsx fileName="src/components/ServerComponentExample.tsx" codeFormat="typescript"
189
+ import { useI18n } from "react-intlayer/server";
190
+
191
+ const ServerComponentExample = () => {
192
+ const t = useI18n("server-component");
193
+
194
+ return (
195
+ <div>
196
+ <h1>{t("title")}</h1> {/* Display the title */}
197
+ <p>{t("description")}</p> {/* Display the description */}
198
+ </div>
199
+ );
200
+ };
201
+ ```
202
+
203
+ ```jsx fileName="src/components/ServerComponentExample.jsx" codeFormat="esm"
204
+ import { useI18n } from "react-intlayer/server";
205
+
206
+ const ServerComponentExample = () => {
207
+ const t = useI18n("server-component");
208
+
209
+ return (
210
+ <div>
211
+ <h1>{t("title")}</h1> {/* Display the title */}
212
+ <p>{t("description")}</p> {/* Display the description */}
213
+ </div>
214
+ );
215
+ };
216
+ ```
217
+
218
+ ```jsx fileName="src/components/ServerComponentExample.cjs" codeFormat="commonjs"
219
+ const { useI18n } = require("react-intlayer/server");
220
+
221
+ const ServerComponentExample = () => {
222
+ const t = useI18n("server-component");
223
+
224
+ return (
225
+ <div>
226
+ <h1>{t("title")}</h1>
227
+ <p>{t("description")}</p>
228
+ </div>
229
+ );
230
+ };
231
+ ```
232
+
233
+ ## Attribute Handling
234
+
235
+ When localizing attributes, access the translation values appropriately:
236
+
237
+ ```jsx
238
+ <!-- For accessibility attributes (e.g., aria-label), use .value since pure strings are required -->
239
+ <button aria-label={t("button.ariaLabel").value}>{t("button.text")}</button>
240
+ ```
241
+
242
+ ## Additional Resources
243
+
244
+ - **Intlayer Visual Editor**: For a more intuitive content management experience, refer to the visual editor documentation [here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md).
245
+
246
+ This section specifically covers the integration of the `useI18n` hook in React applications, simplifying the localization process and ensuring content consistency across different locales.
247
+
248
+ ## Documentation History
249
+
250
+ - 6.0.0 - 2025-06-29: Initial writing of `useI18n` hook documentation
@@ -268,10 +268,12 @@ Settings that control middleware behaviour, including how the application handle
268
268
  - **prefixDefault**:
269
269
 
270
270
  - _Type_: `boolean`
271
- - _Default_: `true`
271
+ - _Default_: `false`
272
272
  - _Description_: Whether to include the default locale in the URL.
273
- - _Example_: `false`
274
- - _Note_: If `false`, URLs for the default locale will not have a locale prefix.
273
+ - _Example_: `true`
274
+ - _Note_:
275
+ - If `true` and `defaultLocale = 'en'`: path = `/en/dashboard` or `/fr/dashboard`
276
+ - If `false` and `defaultLocale = 'en'`: path = `/dashboard` or `/fr/dashboard`
275
277
 
276
278
  - **basePath**:
277
279
 
@@ -279,7 +281,11 @@ Settings that control middleware behaviour, including how the application handle
279
281
  - _Default_: `''`
280
282
  - _Description_: The base path for the application URLs.
281
283
  - _Example_: `'/my-app'`
282
- - _Note_: This affects how URLs are constructed for the application.
284
+ - _Note_:
285
+ - If the application is hosted at `https://example.com/my-app`
286
+ - The base path is `'/my-app'`
287
+ - The URL will be `https://example.com/my-app/en`
288
+ - If the base path is not set, the URL will be `https://example.com/en`
283
289
 
284
290
  - **serverSetCookie**:
285
291
 
@@ -291,11 +297,42 @@ Settings that control middleware behaviour, including how the application handle
291
297
  - _Note_: Controls whether the locale cookie is set on every request or never.
292
298
 
293
299
  - **noPrefix**:
300
+
294
301
  - _Type_: `boolean`
295
302
  - _Default_: `false`
296
303
  - _Description_: Whether to omit the locale prefix from URLs.
297
304
  - _Example_: `true`
298
- - _Note_: If `true`, URLs will not contain locale information.
305
+ - _Note_:
306
+ - If `true`: No prefix in the URL
307
+ - If `false`: Prefix in the URL
308
+ - Example with `basePath = '/my-app'`:
309
+ - If `noPrefix = false`: URL will be `https://example.com/my-app/en`
310
+ - If `noPrefix = true`: URL will be `https://example.com`
311
+
312
+ - **detectLocaleOnPrefetchNoPrefix**:
313
+
314
+ - _Type_: `boolean`
315
+ - _Default_: `false`
316
+ - _Description_: Controls whether locale detection occurs during Next.js prefetch requests.
317
+ - _Example_: `true`
318
+ - _Note_: This setting affects how Next.js handles locale prefetching:
319
+ - **Example scenario:**
320
+ - User's browser language is `'fr'`
321
+ - Current page is `/fr/about`
322
+ - Link prefetches `/about`
323
+ - **With `detectLocaleOnPrefetchNoPrefix: true`:**
324
+ - Prefetch detects `'fr'` locale from browser
325
+ - Redirects prefetch to `/fr/about`
326
+ - **With `detectLocaleOnPrefetchNoPrefix: false` (default):**
327
+ - Prefetch uses default locale
328
+ - Redirects prefetch to `/en/about` (assuming `'en'` is default)
329
+ - **When to use `true`:**
330
+ - Your app uses non-localised internal links (e.g. `<a href="/about">`)
331
+ - You want consistent locale detection behaviour between regular and prefetch requests
332
+ - **When to use `false` (default):**
333
+ - Your app uses locale-prefixed links (e.g. `<a href="/fr/about">`)
334
+ - You want to optimise prefetching performance
335
+ - You want to avoid potential redirect loops
299
336
 
300
337
  ---
301
338