@intlayer/docs 7.5.9 → 7.5.11

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 (196) hide show
  1. package/README.md +9 -2
  2. package/dist/cjs/generated/docs.entry.cjs +57 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +57 -0
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +3 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/cli/ci.md +137 -0
  9. package/docs/ar/cli/index.md +7 -1
  10. package/docs/ar/cli/list.md +39 -2
  11. package/docs/ar/cli/list_projects.md +131 -0
  12. package/docs/ar/cli/push.md +1 -1
  13. package/docs/ar/configuration.md +3 -3
  14. package/docs/ar/interest_of_intlayer.md +1 -1
  15. package/docs/ar/intlayer_CMS.md +25 -5
  16. package/docs/ar/intlayer_with_express.md +1 -0
  17. package/docs/ar/intlayer_with_fastify.md +516 -0
  18. package/docs/ar/readme.md +1 -1
  19. package/docs/de/cli/ci.md +137 -0
  20. package/docs/de/cli/index.md +7 -1
  21. package/docs/de/cli/list.md +39 -2
  22. package/docs/de/cli/list_projects.md +130 -0
  23. package/docs/de/cli/push.md +1 -1
  24. package/docs/de/configuration.md +3 -3
  25. package/docs/de/interest_of_intlayer.md +1 -1
  26. package/docs/de/intlayer_CMS.md +25 -5
  27. package/docs/de/intlayer_with_express.md +1 -0
  28. package/docs/de/intlayer_with_fastify.md +449 -0
  29. package/docs/de/readme.md +1 -1
  30. package/docs/en/cli/ci.md +137 -0
  31. package/docs/en/cli/index.md +14 -1
  32. package/docs/en/cli/list.md +39 -2
  33. package/docs/en/cli/list_projects.md +128 -0
  34. package/docs/en/cli/push.md +1 -1
  35. package/docs/en/configuration.md +3 -3
  36. package/docs/en/interest_of_intlayer.md +2 -2
  37. package/docs/en/intlayer_CMS.md +25 -5
  38. package/docs/en/intlayer_with_express.md +1 -0
  39. package/docs/en/intlayer_with_fastify.md +439 -0
  40. package/docs/en/readme.md +3 -1
  41. package/docs/en-GB/cli/ci.md +137 -0
  42. package/docs/en-GB/cli/index.md +7 -1
  43. package/docs/en-GB/cli/list.md +39 -2
  44. package/docs/en-GB/cli/list_projects.md +130 -0
  45. package/docs/en-GB/cli/push.md +1 -1
  46. package/docs/en-GB/configuration.md +3 -3
  47. package/docs/en-GB/interest_of_intlayer.md +1 -1
  48. package/docs/en-GB/intlayer_CMS.md +25 -5
  49. package/docs/en-GB/intlayer_with_express.md +1 -0
  50. package/docs/en-GB/intlayer_with_fastify.md +445 -0
  51. package/docs/en-GB/readme.md +3 -1
  52. package/docs/es/cli/ci.md +137 -0
  53. package/docs/es/cli/index.md +7 -1
  54. package/docs/es/cli/list.md +39 -2
  55. package/docs/es/cli/list_projects.md +130 -0
  56. package/docs/es/cli/push.md +1 -1
  57. package/docs/es/configuration.md +3 -3
  58. package/docs/es/interest_of_intlayer.md +1 -1
  59. package/docs/es/intlayer_CMS.md +25 -5
  60. package/docs/es/intlayer_with_express.md +1 -0
  61. package/docs/es/intlayer_with_fastify.md +480 -0
  62. package/docs/es/readme.md +1 -1
  63. package/docs/fr/cli/ci.md +137 -0
  64. package/docs/fr/cli/index.md +7 -1
  65. package/docs/fr/cli/list.md +39 -2
  66. package/docs/fr/cli/list_projects.md +131 -0
  67. package/docs/fr/cli/push.md +1 -1
  68. package/docs/fr/configuration.md +3 -3
  69. package/docs/fr/interest_of_intlayer.md +1 -1
  70. package/docs/fr/intlayer_CMS.md +25 -5
  71. package/docs/fr/intlayer_with_express.md +1 -0
  72. package/docs/fr/intlayer_with_fastify.md +439 -0
  73. package/docs/fr/readme.md +1 -1
  74. package/docs/hi/cli/ci.md +137 -0
  75. package/docs/hi/cli/index.md +7 -1
  76. package/docs/hi/cli/list.md +38 -1
  77. package/docs/hi/cli/list_projects.md +130 -0
  78. package/docs/hi/cli/push.md +1 -1
  79. package/docs/hi/configuration.md +3 -3
  80. package/docs/hi/interest_of_intlayer.md +1 -1
  81. package/docs/hi/intlayer_CMS.md +25 -5
  82. package/docs/hi/intlayer_with_express.md +1 -0
  83. package/docs/hi/intlayer_with_fastify.md +540 -0
  84. package/docs/hi/readme.md +1 -1
  85. package/docs/id/cli/ci.md +137 -0
  86. package/docs/id/cli/index.md +7 -1
  87. package/docs/id/cli/list.md +38 -1
  88. package/docs/id/cli/list_projects.md +128 -0
  89. package/docs/id/cli/push.md +1 -1
  90. package/docs/id/configuration.md +3 -3
  91. package/docs/id/interest_of_intlayer.md +1 -1
  92. package/docs/id/intlayer_CMS.md +25 -5
  93. package/docs/id/intlayer_with_express.md +1 -0
  94. package/docs/id/intlayer_with_fastify.md +470 -0
  95. package/docs/id/readme.md +1 -1
  96. package/docs/it/cli/ci.md +137 -0
  97. package/docs/it/cli/index.md +7 -1
  98. package/docs/it/cli/list.md +39 -2
  99. package/docs/it/cli/list_projects.md +130 -0
  100. package/docs/it/cli/push.md +1 -1
  101. package/docs/it/configuration.md +3 -3
  102. package/docs/it/interest_of_intlayer.md +1 -1
  103. package/docs/it/intlayer_CMS.md +25 -5
  104. package/docs/it/intlayer_with_express.md +1 -0
  105. package/docs/it/intlayer_with_fastify.md +445 -0
  106. package/docs/it/readme.md +1 -1
  107. package/docs/ja/cli/ci.md +137 -0
  108. package/docs/ja/cli/index.md +7 -1
  109. package/docs/ja/cli/list.md +38 -1
  110. package/docs/ja/cli/list_projects.md +136 -0
  111. package/docs/ja/cli/push.md +1 -1
  112. package/docs/ja/configuration.md +3 -3
  113. package/docs/ja/interest_of_intlayer.md +1 -1
  114. package/docs/ja/intlayer_CMS.md +25 -5
  115. package/docs/ja/intlayer_with_express.md +1 -0
  116. package/docs/ja/intlayer_with_fastify.md +516 -0
  117. package/docs/ja/readme.md +1 -1
  118. package/docs/ko/cli/ci.md +137 -0
  119. package/docs/ko/cli/index.md +7 -1
  120. package/docs/ko/cli/list.md +38 -1
  121. package/docs/ko/cli/list_projects.md +128 -0
  122. package/docs/ko/cli/push.md +1 -1
  123. package/docs/ko/configuration.md +3 -3
  124. package/docs/ko/interest_of_intlayer.md +1 -1
  125. package/docs/ko/intlayer_CMS.md +25 -5
  126. package/docs/ko/intlayer_with_express.md +1 -0
  127. package/docs/ko/intlayer_with_fastify.md +463 -0
  128. package/docs/ko/readme.md +1 -1
  129. package/docs/pl/cli/ci.md +137 -0
  130. package/docs/pl/cli/index.md +7 -1
  131. package/docs/pl/cli/list.md +39 -2
  132. package/docs/pl/cli/list_projects.md +130 -0
  133. package/docs/pl/cli/push.md +1 -1
  134. package/docs/pl/configuration.md +3 -3
  135. package/docs/pl/interest_of_intlayer.md +1 -1
  136. package/docs/pl/intlayer_CMS.md +25 -5
  137. package/docs/pl/intlayer_with_express.md +1 -0
  138. package/docs/pl/intlayer_with_fastify.md +457 -0
  139. package/docs/pl/readme.md +1 -1
  140. package/docs/pt/cli/ci.md +137 -0
  141. package/docs/pt/cli/index.md +7 -1
  142. package/docs/pt/cli/list.md +39 -2
  143. package/docs/pt/cli/list_projects.md +134 -0
  144. package/docs/pt/cli/push.md +1 -1
  145. package/docs/pt/configuration.md +3 -3
  146. package/docs/pt/interest_of_intlayer.md +1 -1
  147. package/docs/pt/intlayer_CMS.md +25 -5
  148. package/docs/pt/intlayer_with_express.md +1 -0
  149. package/docs/pt/intlayer_with_fastify.md +502 -0
  150. package/docs/pt/readme.md +1 -1
  151. package/docs/ru/cli/ci.md +137 -0
  152. package/docs/ru/cli/index.md +7 -1
  153. package/docs/ru/cli/list.md +39 -2
  154. package/docs/ru/cli/list_projects.md +130 -0
  155. package/docs/ru/cli/push.md +1 -1
  156. package/docs/ru/configuration.md +3 -3
  157. package/docs/ru/interest_of_intlayer.md +1 -1
  158. package/docs/ru/intlayer_CMS.md +25 -5
  159. package/docs/ru/intlayer_with_express.md +1 -0
  160. package/docs/ru/intlayer_with_fastify.md +468 -0
  161. package/docs/ru/readme.md +1 -1
  162. package/docs/tr/cli/ci.md +137 -0
  163. package/docs/tr/cli/index.md +7 -1
  164. package/docs/tr/cli/list.md +39 -2
  165. package/docs/tr/cli/list_projects.md +134 -0
  166. package/docs/tr/cli/push.md +1 -1
  167. package/docs/tr/configuration.md +3 -3
  168. package/docs/tr/interest_of_intlayer.md +1 -1
  169. package/docs/tr/intlayer_CMS.md +25 -5
  170. package/docs/tr/intlayer_with_express.md +1 -0
  171. package/docs/tr/intlayer_with_fastify.md +471 -0
  172. package/docs/tr/readme.md +1 -1
  173. package/docs/vi/cli/ci.md +137 -0
  174. package/docs/vi/cli/index.md +7 -1
  175. package/docs/vi/cli/list.md +38 -1
  176. package/docs/vi/cli/list_projects.md +130 -0
  177. package/docs/vi/cli/push.md +1 -1
  178. package/docs/vi/configuration.md +3 -3
  179. package/docs/vi/interest_of_intlayer.md +1 -1
  180. package/docs/vi/intlayer_CMS.md +25 -5
  181. package/docs/vi/intlayer_with_express.md +1 -0
  182. package/docs/vi/intlayer_with_fastify.md +490 -0
  183. package/docs/vi/readme.md +1 -1
  184. package/docs/zh/cli/ci.md +137 -0
  185. package/docs/zh/cli/index.md +7 -1
  186. package/docs/zh/cli/list.md +38 -1
  187. package/docs/zh/cli/list_projects.md +130 -0
  188. package/docs/zh/cli/push.md +1 -1
  189. package/docs/zh/configuration.md +3 -3
  190. package/docs/zh/interest_of_intlayer.md +1 -1
  191. package/docs/zh/intlayer_CMS.md +25 -5
  192. package/docs/zh/intlayer_with_express.md +1 -0
  193. package/docs/zh/intlayer_with_fastify.md +451 -0
  194. package/docs/zh/readme.md +1 -1
  195. package/package.json +6 -6
  196. package/src/generated/docs.entry.ts +57 -0
@@ -0,0 +1,457 @@
1
+ ---
2
+ createdAt: 2025-12-30
3
+ updatedAt: 2025-12-30
4
+ title: "Jak przetłumaczyć backend Fastify – przewodnik i18n 2026"
5
+ description: "Dowiedz się, jak uczynić backend Fastify wielojęzycznym. Postępuj zgodnie z dokumentacją, aby zinternacjonalizować (i18n) i przetłumaczyć go."
6
+ keywords:
7
+ - Internacjonalizacja
8
+ - Dokumentacja
9
+ - Intlayer
10
+ - Fastify
11
+ - JavaScript
12
+ - Backend
13
+ slugs:
14
+ - doc
15
+ - environment
16
+ - fastify
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-fastify-template
18
+ history:
19
+ - version: 7.6.0
20
+ date: 2025-12-31
21
+ changes: Dodano polecenie init
22
+ - version: 7.6.0
23
+ date: 2025-12-31
24
+ changes: Inicjalizacja historii
25
+ ---
26
+
27
+ # Przetłumacz backend Fastify przy użyciu Intlayer | Internacjonalizacja (i18n)
28
+
29
+ `fastify-intlayer` to potężny plugin do internacjonalizacji (i18n) dla aplikacji Fastify, zaprojektowany, aby uczynić twoje usługi backendowe globalnie dostępnymi poprzez dostarczanie zlokalizowanych odpowiedzi na podstawie preferencji klienta.
30
+
31
+ ### Praktyczne przypadki użycia
32
+
33
+ - **Wyświetlanie błędów backendu w języku użytkownika**: Gdy wystąpi błąd, wyświetlanie komunikatów w ojczystym języku użytkownika poprawia zrozumienie i zmniejsza frustrację. Jest to szczególnie przydatne dla dynamicznych komunikatów o błędach, które mogą być pokazywane w komponentach front-endowych, takich jak toasty czy modalne okna.
34
+
35
+ `fastify-intlayer` to potężna wtyczka do internacjonalizacji (i18n) dla aplikacji Fastify, zaprojektowana, by uczynić Twoje serwisy backendowe globalnie dostępnymi, dostarczając zlokalizowane odpowiedzi zgodnie z preferencjami klienta.
36
+
37
+ ### Praktyczne zastosowania
38
+
39
+ - **Wyświetlanie błędów backendu w języku użytkownika**: Gdy wystąpi błąd, wyświetlanie komunikatów w języku ojczystym użytkownika poprawia zrozumienie i zmniejsza frustrację. Jest to szczególnie przydatne w przypadku dynamicznych komunikatów o błędach, które mogą być pokazywane w komponentach front-endowych, takich jak toasty czy modale.
40
+ - **Pobieranie wielojęzycznych treści**: W aplikacjach pobierających treści z bazy danych internacjonalizacja zapewnia możliwość serwowania tych treści w wielu językach. Jest to kluczowe dla platform takich jak serwisy e-commerce czy systemy zarządzania treścią (CMS), które muszą wyświetlać opisy produktów, artykuły i inne treści w języku preferowanym przez użytkownika.
41
+ - **Pobieranie treści wielojęzycznych**: Dla aplikacji pobierających treści z bazy danych, internacjonalizacja zapewnia możliwość serwowania tych treści w wielu językach. Jest to kluczowe dla platform takich jak serwisy e-commerce czy systemy zarządzania treścią, które muszą wyświetlać opisy produktów, artykuły i inne treści w języku preferowanym przez użytkownika.
42
+ - **Wysyłanie wiadomości e-mail w wielu językach**: Niezależnie czy to wiadomości transakcyjne, kampanie marketingowe czy powiadomienia, wysyłanie e-maili w języku odbiorcy może znacząco zwiększyć zaangażowanie i skuteczność.
43
+ - **Wielojęzyczne powiadomienia push**: Dla aplikacji mobilnych wysyłanie powiadomień push w preferowanym języku użytkownika może zwiększyć zaangażowanie i retencję. Ten osobisty akcent sprawia, że powiadomienia wydają się bardziej istotne i skłaniają do działania.
44
+ - **Inne formy komunikacji**: Każda forma komunikacji ze strony backendu, taka jak wiadomości SMS, alerty systemowe czy aktualizacje interfejsu użytkownika, zyskuje na użyciu języka użytkownika, co zapewnia przejrzystość i poprawia ogólne doświadczenie użytkownika.
45
+
46
+ Dzięki internacjonalizacji backendu Twoja aplikacja nie tylko szanuje różnice kulturowe, ale także lepiej dopasowuje się do potrzeb rynków globalnych, co czyni to kluczowym krokiem w skalowaniu usług na cały świat.
47
+
48
+ ## Pierwsze kroki
49
+
50
+ ### Instalacja
51
+
52
+ Aby rozpocząć korzystanie z `fastify-intlayer`, zainstaluj pakiet za pomocą npm:
53
+
54
+ ```bash packageManager="npm"
55
+ npm install intlayer fastify-intlayer
56
+ npx intlayer init
57
+
58
+ ```
59
+
60
+ ```bash packageManager="pnpm"
61
+ pnpm add intlayer fastify-intlayer
62
+ pnpm intlayer init
63
+
64
+ ```
65
+
66
+ ```bash packageManager="yarn"
67
+ yarn add intlayer fastify-intlayer
68
+ yarn intlayer init
69
+
70
+ ```
71
+
72
+ ```bash packageManager="bun"
73
+ bun add intlayer fastify-intlayer
74
+ bunx intlayer init
75
+
76
+ ```
77
+
78
+ ### Konfiguracja
79
+
80
+ Skonfiguruj ustawienia internacjonalizacji, tworząc plik `intlayer.config.ts` w katalogu głównym projektu:
81
+
82
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
83
+ import { Locales, type IntlayerConfig } from "intlayer";
84
+
85
+ const config: IntlayerConfig = {
86
+ internationalization: {
87
+ locales: [
88
+ Locales.ENGLISH,
89
+ Locales.FRENCH,
90
+ Locales.SPANISH_MEXICO,
91
+ Locales.SPANISH_SPAIN,
92
+ ],
93
+ defaultLocale: Locales.ENGLISH,
94
+ },
95
+ };
96
+
97
+ export default config;
98
+ ```
99
+
100
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
101
+ import { Locales } from "intlayer";
102
+
103
+ /** @type {import('intlayer').IntlayerConfig} */
104
+ const config = {
105
+ internationalization: {
106
+ locales: [
107
+ Locales.ENGLISH,
108
+ Locales.FRENCH,
109
+ Locales.SPANISH_MEXICO,
110
+ Locales.SPANISH_SPAIN,
111
+ ],
112
+ defaultLocale: Locales.ENGLISH,
113
+ },
114
+ };
115
+
116
+ export default config;
117
+ ```
118
+
119
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
120
+ const { Locales } = require("intlayer");
121
+
122
+ /** @type {import('intlayer').IntlayerConfig} */
123
+ const config = {
124
+ internationalization: {
125
+ locales: [
126
+ Locales.ENGLISH,
127
+ Locales.FRENCH,
128
+ Locales.SPANISH_MEXICO,
129
+ Locales.SPANISH_SPAIN,
130
+ ],
131
+ defaultLocale: Locales.ENGLISH,
132
+ },
133
+ };
134
+
135
+ module.exports = config;
136
+ ```
137
+
138
+ ### Deklarowanie treści
139
+
140
+ Twórz i zarządzaj deklaracjami treści, aby przechowywać tłumaczenia:
141
+
142
+ ```typescript fileName="src/index.content.ts" contentDeclarationFormat="typescript"
143
+ import { t, type Dictionary } from "intlayer";
144
+
145
+ const indexContent = {
146
+ key: "index",
147
+ content: {
148
+ exampleOfContent: t({
149
+ pl: "Przykład zwracanej treści w języku angielskim",
150
+ en: "Example of returned content in English",
151
+ fr: "Exemple de contenu renvoyé en français",
152
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
153
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
154
+ }),
155
+ },
156
+ } satisfies Dictionary;
157
+
158
+ export default indexContent;
159
+ ```
160
+
161
+ ```javascript fileName="src/index.content.mjs" contentDeclarationFormat="esm"
162
+ import { t } from "intlayer";
163
+
164
+ /** @type {import('intlayer').Dictionary} */
165
+ const indexContent = {
166
+ key: "index",
167
+ content: {
168
+ exampleOfContent: t({
169
+ pl: "Przykład zwracanej treści w języku angielskim",
170
+ en: "Example of returned content in English",
171
+ fr: "Exemple de contenu renvoyé en français",
172
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
173
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
174
+ }),
175
+ },
176
+ };
177
+
178
+ export default indexContent;
179
+ ```
180
+
181
+ ```javascript fileName="src/index.content.cjs" contentDeclarationFormat="commonjs"
182
+ const { t } = require("intlayer");
183
+
184
+ /** @type {import('intlayer').Dictionary} */
185
+ const indexContent = {
186
+ key: "index",
187
+ content: {
188
+ exampleOfContent: t({
189
+ pl: "Przykład zwracanej treści w języku angielskim",
190
+ en: "Example of returned content in English",
191
+ fr: "Exemple de contenu renvoyé en français",
192
+ "pl": "Przykład zwróconej zawartości w języku polskim",
193
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
194
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
195
+ }),
196
+ },
197
+ };
198
+
199
+ module.exports = indexContent;
200
+ ```
201
+
202
+ ```json fileName="src/index.content.json" contentDeclarationFormat="json"
203
+ {
204
+ "$schema": "https://intlayer.org/schema.json",
205
+ "key": "index",
206
+ "content": {
207
+ "exampleOfContent": {
208
+ "nodeType": "translation",
209
+ "translation": {
210
+ "pl": "Przykład zwróconej zawartości w języku polskim",
211
+ "en": "Example of returned content in English",
212
+ "fr": "Exemple de contenu renvoyé en français",
213
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
214
+ "es-MX": "Ejemplo de contenido devuelto en español (México)"
215
+ }
216
+ }
217
+ }
218
+ }
219
+ ```
220
+
221
+ > Deklaracje zawartości mogą być zdefiniowane w dowolnym miejscu aplikacji, pod warunkiem że znajdują się w katalogu `contentDir` (domyślnie `./src`) i mają odpowiednie rozszerzenie pliku deklaracji zawartości (domyślnie `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
222
+
223
+ > Po więcej szczegółów odnieś się do [dokumentacji deklaracji zawartości](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/content_file.md).
224
+
225
+ ### Konfiguracja aplikacji Fastify
226
+
227
+ Skonfiguruj swoją aplikację Fastify, aby korzystała z `fastify-intlayer`:
228
+
229
+ ```typescript fileName="src/index.ts" codeFormat="typescript"
230
+ import Fastify from "fastify";
231
+ import { intlayer, t, getDictionary, getIntlayer } from "fastify-intlayer";
232
+ import dictionaryExample from "./index.content";
233
+
234
+ const fastify = Fastify({ logger: true });
235
+
236
+ // Załaduj wtyczkę internacjonalizacji
237
+ await fastify.register(intlayer);
238
+
239
+ // Trasy
240
+ fastify.get("/t_example", async (_req, reply) => {
241
+ return t({
242
+ pl: "Przykład zwróconej zawartości w języku polskim",
243
+ en: "Example of returned content in English",
244
+ fr: "Exemple de contenu renvoyé en français",
245
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
246
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
247
+ });
248
+ });
249
+
250
+ fastify.get("/getIntlayer_example", async (_req, reply) => {
251
+ return getIntlayer("index").exampleOfContent;
252
+ });
253
+
254
+ fastify.get("/getDictionary_example", async (_req, reply) => {
255
+ return getDictionary(dictionaryExample).exampleOfContent;
256
+ });
257
+
258
+ // Uruchom serwer
259
+ const start = async () => {
260
+ try {
261
+ await fastify.listen({ port: 3000 });
262
+ } catch (err) {
263
+ fastify.log.error(err);
264
+ process.exit(1);
265
+ }
266
+ };
267
+
268
+ start();
269
+ ```
270
+
271
+ ```javascript fileName="src/index.mjs" codeFormat="esm"
272
+ import Fastify from "fastify";
273
+ import { intlayer, t, getDictionary, getIntlayer } from "fastify-intlayer";
274
+ import dictionaryExample from "./index.content";
275
+
276
+ const fastify = Fastify({ logger: true });
277
+
278
+ // Załaduj wtyczkę internacjonalizacji
279
+ await fastify.register(intlayer);
280
+
281
+ // Trasy
282
+ fastify.get("/t_example", async (_req, reply) => {
283
+ return t({
284
+ pl: "Przykład zwracanej treści w języku polskim",
285
+ en: "Example of returned content in English",
286
+ fr: "Exemple de contenu renvoyé en français",
287
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
288
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
289
+ });
290
+ });
291
+
292
+ fastify.get("/getIntlayer_example", async (_req, reply) => {
293
+ return getIntlayer("index").exampleOfContent;
294
+ });
295
+
296
+ javascript fileName="src/index.mjs" codeFormat="esm"
297
+ fastify.get("/getDictionary_example", async (_req, reply) => {
298
+ return getDictionary(dictionaryExample).exampleOfContent;
299
+ });
300
+
301
+ // Uruchom serwer
302
+ const start = async () => {
303
+ try {
304
+ await fastify.listen({ port: 3000 });
305
+ } catch (err) {
306
+ fastify.log.error(err);
307
+ process.exit(1);
308
+ }
309
+ };
310
+
311
+ start();
312
+ ```
313
+
314
+ ```javascript fileName="src/index.cjs" codeFormat="commonjs"
315
+ const Fastify = require("fastify");
316
+ const { intlayer, t, getDictionary, getIntlayer } = require("fastify-intlayer");
317
+ const dictionaryExample = require("./index.content");
318
+
319
+ const fastify = Fastify({ logger: true });
320
+
321
+ // Funkcja uruchamiająca serwer obsługująca async/await
322
+ const start = async () => {
323
+ try {
324
+ // Załaduj wtyczkę internacjonalizacji
325
+ await fastify.register(intlayer);
326
+
327
+ // Trasy
328
+ fastify.get("/t_example", async (_req, reply) => {
329
+ return t({
330
+ pl: "Przykład zwróconej treści w języku polskim",
331
+ en: "Example of returned content in English",
332
+ fr: "Exemple de contenu renvoyé en français",
333
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
334
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
335
+ });
336
+ });
337
+
338
+ fastify.get("/getIntlayer_example", async (_req, reply) => {
339
+ return getIntlayer("index").exampleOfContent;
340
+ });
341
+
342
+ fastify.get("/getDictionary_example", async (_req, reply) => {
343
+ return getDictionary(dictionaryExample).exampleOfContent;
344
+ });
345
+
346
+ await fastify.listen({ port: 3000 });
347
+ } catch (err) {
348
+ fastify.log.error(err);
349
+ process.exit(1);
350
+ }
351
+ };
352
+
353
+ start();
354
+ ```
355
+
356
+ ### Zgodność
357
+
358
+ `fastify-intlayer` jest w pełni zgodny z:
359
+
360
+ - [`react-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/packages/react-intlayer/index.md) dla aplikacji React
361
+ - [`next-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/packages/next-intlayer/index.md) dla aplikacji Next.js
362
+
363
+ - [`react-intlayer`](<https://www.google.com/search?q=%5Bhttps://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/packages/react-intlayer/index.md%5D(https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/packages/react-intlayer/index.md)>) dla aplikacji React
364
+ - [`next-intlayer`](<https://www.google.com/search?q=%5Bhttps://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/packages/next-intlayer/index.md%5D(https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/packages/next-intlayer/index.md)>) dla aplikacji Next.js
365
+ - [`vite-intlayer`](<https://www.google.com/search?q=%5Bhttps://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/packages/vite-intlayer/index.md%5D(https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/packages/vite-intlayer/index.md)>) dla aplikacji Vite
366
+
367
+ Działa również bezproblemowo z dowolnym rozwiązaniem do internacjonalizacji w różnych środowiskach, w tym w przeglądarkach i w żądaniach API. Możesz dostosować middleware, aby wykrywać lokalizę przez nagłówki lub ciasteczka:
368
+
369
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
370
+ import { Locales, type IntlayerConfig } from "intlayer";
371
+
372
+ const config: IntlayerConfig = {
373
+ // ... Inne opcje konfiguracji
374
+ middleware: {
375
+ headerName: "my-locale-header",
376
+ cookieName: "my-locale-cookie",
377
+ },
378
+ };
379
+
380
+ export default config;
381
+ ```
382
+
383
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
384
+ import { Locales } from "intlayer";
385
+
386
+ /** @type {import('intlayer').IntlayerConfig} */
387
+ const config = {
388
+ // ... Inne opcje konfiguracji
389
+ middleware: {
390
+ headerName: "my-locale-header",
391
+ cookieName: "my-locale-cookie",
392
+ },
393
+ };
394
+
395
+ export default config;
396
+ ```
397
+
398
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
399
+ const { Locales } = require("intlayer");
400
+
401
+ /** @type {import('intlayer').IntlayerConfig} */
402
+ const config = {
403
+ // ... Inne opcje konfiguracji
404
+ middleware: {
405
+ headerName: "my-locale-header",
406
+ cookieName: "my-locale-cookie",
407
+ },
408
+ };
409
+
410
+ module.exports = config;
411
+ ```
412
+
413
+ Domyślnie `fastify-intlayer` zinterpretuje nagłówek `Accept-Language`, aby określić preferowany język klienta.
414
+
415
+ > Więcej informacji na temat konfiguracji i zagadnień zaawansowanych znajdziesz w naszej [dokumentacji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md).
416
+
417
+ ### Konfiguracja TypeScript
418
+
419
+ `fastify-intlayer` wykorzystuje rozbudowane możliwości TypeScript, aby usprawnić proces internacjonalizacji. Statyczne typowanie TypeScript zapewnia, że każdy klucz tłumaczenia jest uwzględniony, zmniejszając ryzyko brakujących tłumaczeń i poprawiając konserwowalność.
420
+
421
+ Upewnij się, że autogenerowane typy (domyślnie w ./types/intlayer.d.ts) są uwzględnione w pliku tsconfig.json.
422
+
423
+ ```json5 fileName="tsconfig.json"
424
+ {
425
+ // ... Twoje istniejące konfiguracje TypeScript
426
+ "include": [
427
+ // ... Twoje istniejące konfiguracje TypeScript
428
+ ".intlayer/**/*.ts", // Uwzględnij autogenerowane typy
429
+ ],
430
+ }
431
+ ```
432
+
433
+ ### Rozszerzenie VS Code
434
+
435
+ Aby poprawić doświadczenie deweloperskie z Intlayer, możesz zainstalować oficjalne rozszerzenie **Intlayer dla VS Code**.
436
+
437
+ [Zainstaluj z VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
438
+
439
+ To rozszerzenie zapewnia:
440
+
441
+ - **Autouzupełnianie** kluczy tłumaczeń.
442
+ - **Wykrywanie błędów w czasie rzeczywistym** dla brakujących tłumaczeń.
443
+ - **Podgląd przetłumaczonej zawartości bezpośrednio w edytorze**.
444
+ - **Szybkie akcje** umożliwiające łatwe tworzenie i aktualizowanie tłumaczeń.
445
+
446
+ Aby uzyskać więcej informacji o sposobie korzystania z rozszerzenia, zapoznaj się z dokumentacją [Intlayer VS Code Extension](https://intlayer.org/doc/vs-code-extension).
447
+
448
+ ### Konfiguracja Git
449
+
450
+ Zaleca się ignorowanie plików generowanych przez Intlayer. Pozwala to uniknąć ich zatwierdzania do repozytorium Git.
451
+
452
+ Aby to zrobić, możesz dodać następujące instrukcje do pliku `.gitignore`:
453
+
454
+ ```plaintext fileName=".gitignore"
455
+ # Ignoruj pliki generowane przez Intlayer
456
+ .intlayer
457
+ ```
package/docs/pl/readme.md CHANGED
@@ -50,7 +50,7 @@ Dzięki **plikom z treścią dla każdego języka**, **autouzupełnianiu w TypeS
50
50
  | Funkcja | Opis |
51
51
  | --------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
52
52
  | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Funkcja" width="700"> | **Wsparcie dla wielu frameworków**<br><br>Intlayer jest kompatybilny ze wszystkimi głównymi frameworkami i bibliotekami, w tym Next.js, React, Vite, Vue.js, Nuxt, Preact, Express i wieloma innymi. |
53
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.png?raw=true" alt="Funkcja" width="700"> | **Zarządzanie treścią oparte na JavaScript**<br><br>Wykorzystaj elastyczność JavaScript do efektywnego definiowania i zarządzania swoją treścią. <br><br> - [Deklaracja treści](https://intlayer.org/doc/concept/content) |
53
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Funkcja" width="700"> | **Zarządzanie treścią oparte na JavaScript**<br><br>Wykorzystaj elastyczność JavaScript do efektywnego definiowania i zarządzania swoją treścią. <br><br> - [Deklaracja treści](https://intlayer.org/doc/concept/content) |
54
54
  | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Funkcja" width="700"> | **Plik deklaracji treści dla każdego języka**<br><br>Przyspiesz swój rozwój, deklarując treść raz, przed automatycznym generowaniem.<br><br> - [Plik deklaracji treści dla każdego języka](https://intlayer.org/doc/concept/per-locale-file) |
55
55
  | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="Funkcja" width="700"> | **Środowisko z bezpiecznym typowaniem**<br><br>Wykorzystaj TypeScript, aby zapewnić, że definicje treści i kod są wolne od błędów, a także skorzystaj z autouzupełniania w IDE.<br><br> - [Konfiguracja TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
56
56
  | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Funkcja" width="700"> | **Uproszczona konfiguracja**<br><br>Rozpocznij pracę szybko przy minimalnej konfiguracji. Łatwo dostosuj ustawienia dotyczące internacjonalizacji, routingu, AI, budowania oraz obsługi treści. <br><br> - [Poznaj integrację z Next.js](https://intlayer.org/doc/environment/nextjs) |
@@ -0,0 +1,137 @@
1
+ ---
2
+ createdAt: 2026-01-06
3
+ updatedAt: 2026-01-06
4
+ title: Comando CI
5
+ description: Aprenda como usar o comando Intlayer CI para executar comandos Intlayer com credenciais auto-injetadas em pipelines CI/CD e monorepos.
6
+ keywords:
7
+ - CI
8
+ - CI/CD
9
+ - Automação
10
+ - Monorepo
11
+ - Credenciais
12
+ - CLI
13
+ - Intlayer
14
+ slugs:
15
+ - doc
16
+ - concept
17
+ - cli
18
+ - ci
19
+ history:
20
+ - version: 7.5.11
21
+ date: 2026-01-06
22
+ changes: Adicionar comando CI
23
+ ---
24
+
25
+ # Comando CI
26
+
27
+ ```bash
28
+ npx intlayer ci <command...>
29
+ ```
30
+
31
+ O comando CI é projetado para automação e pipelines CI/CD. Ele injeta automaticamente credenciais da variável de ambiente `INTLAYER_PROJECT_CREDENTIALS` e pode executar comandos Intlayer em vários projetos em um monorepo.
32
+
33
+ ## Como funciona
34
+
35
+ O comando CI opera em dois modos:
36
+
37
+ 1. **Modo de projeto único**: Se o diretório de trabalho atual corresponder a um dos caminhos do projeto em `INTLAYER_PROJECT_CREDENTIALS`, ele executa o comando apenas para esse projeto específico.
38
+
39
+ 2. **Modo de iteração**: Se nenhum contexto de projeto específico for detectado, ele itera sobre todos os projetos configurados e executa o comando para cada um.
40
+
41
+ ## Variável de ambiente
42
+
43
+ O comando requer que a variável de ambiente `INTLAYER_PROJECT_CREDENTIALS` seja definida. Esta variável deve conter um objeto JSON mapeando caminhos de projeto para suas credenciais:
44
+
45
+ ```json
46
+ {
47
+ "packages/app": {
48
+ "clientId": "your-client-id-1",
49
+ "clientSecret": "your-client-secret-1"
50
+ },
51
+ "packages/admin": {
52
+ "clientId": "your-client-id-2",
53
+ "clientSecret": "your-client-secret-2"
54
+ }
55
+ }
56
+ ```
57
+
58
+ ## Detecção do gerenciador de pacotes
59
+
60
+ O comando CI detecta automaticamente qual gerenciador de pacotes está sendo usado (npm, yarn, pnpm ou bun) com base na variável de ambiente `npm_config_user_agent` e usa o comando apropriado para executar Intlayer.
61
+
62
+ ## Argumentos
63
+
64
+ - **`<command...>`**: O comando Intlayer a ser executado (por exemplo, `fill`, `push`, `build`). Você pode passar qualquer comando Intlayer e seus argumentos.
65
+
66
+ > Exemplo: `npx intlayer ci fill --verbose`
67
+ >
68
+ > Exemplo: `npx intlayer ci push`
69
+ >
70
+ > Exemplo: `npx intlayer ci build`
71
+
72
+ ## Exemplos
73
+
74
+ ### Executar um comando no modo de projeto único
75
+
76
+ Se você estiver em um diretório de projeto que corresponde a um dos caminhos em `INTLAYER_PROJECT_CREDENTIALS`:
77
+
78
+ ```bash
79
+ cd packages/app
80
+ npx intlayer ci fill
81
+ ```
82
+
83
+ Isso executará o comando `fill` com credenciais automaticamente injetadas para o projeto `packages/app`.
84
+
85
+ ### Executar um comando em todos os projetos
86
+
87
+ Se você estiver em um diretório que não corresponde a nenhum caminho de projeto, o comando iterará sobre todos os projetos configurados:
88
+
89
+ ```bash
90
+ cd /path/to/monorepo
91
+ npx intlayer ci push
92
+ ```
93
+
94
+ Isso executará o comando `push` para cada projeto configurado em `INTLAYER_PROJECT_CREDENTIALS`.
95
+
96
+ ### Passar flags adicionais
97
+
98
+ Você pode passar quaisquer flags para o comando Intlayer subjacente:
99
+
100
+ ```bash
101
+ npx intlayer ci fill --verbose --mode complete
102
+ ```
103
+
104
+ ### Usar em pipelines CI/CD
105
+
106
+ Em sua configuração CI/CD (por exemplo, GitHub Actions, GitLab CI), defina `INTLAYER_PROJECT_CREDENTIALS` como um segredo:
107
+
108
+ ```yaml
109
+ # Exemplo GitHub Actions
110
+ env:
111
+ INTLAYER_PROJECT_CREDENTIALS: ${{ secrets.INTLAYER_PROJECT_CREDENTIALS }}
112
+
113
+ steps:
114
+ - name: Preencher dicionários
115
+ run: npx intlayer ci fill
116
+ ```
117
+
118
+ ## Tratamento de erros
119
+
120
+ - Se `INTLAYER_PROJECT_CREDENTIALS` não estiver definida, o comando sairá com um erro.
121
+ - Se `INTLAYER_PROJECT_CREDENTIALS` não for um JSON válido, o comando sairá com um erro.
122
+ - Se um caminho de projeto não existir, ele será ignorado com um aviso.
123
+ - Se algum projeto falhar, o comando sairá com um código de status diferente de zero.
124
+
125
+ ## Casos de uso
126
+
127
+ - **Automação de monorepo**: Executar comandos Intlayer em vários projetos em um monorepo
128
+ - **Pipelines CI/CD**: Automatizar o gerenciamento de dicionários em fluxos de trabalho de integração contínua
129
+ - **Operações em massa**: Realizar a mesma operação em vários projetos Intlayer de uma vez
130
+ - **Gerenciamento de segredos**: Gerenciar com segurança credenciais para vários projetos usando variáveis de ambiente
131
+
132
+ ## Melhores práticas de segurança
133
+
134
+ - Armazene `INTLAYER_PROJECT_CREDENTIALS` como segredos criptografados em sua plataforma CI/CD
135
+ - Nunca faça commit de credenciais no controle de versão
136
+ - Use credenciais específicas do ambiente para diferentes ambientes de implantação
137
+ - Rotacione credenciais regularmente
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-11
3
- updatedAt: 2025-12-30
3
+ updatedAt: 2026-01-06
4
4
  title: CLI
5
5
  description: Descubra como usar o Intlayer CLI para gerenciar seu site multilíngue. Siga os passos nesta documentação online para configurar seu projeto em poucos minutos.
6
6
  keywords:
@@ -17,6 +17,9 @@ slugs:
17
17
  - concept
18
18
  - cli
19
19
  history:
20
+ - version: 7.5.11
21
+ date: 2026-01-06
22
+ changes: Adicionado comando projects list
20
23
  - version: 7.5.9
21
24
  date: 2025-12-30
22
25
  changes: Adicionado comando init
@@ -119,6 +122,7 @@ Para ver como configurar os locais disponíveis ou outros parâmetros, consulte
119
122
  - **[Construir Dicionários](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/build.md)** - Construa seus dicionários a partir dos arquivos de declaração de conteúdo
120
123
  - **[Observar Dicionários](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/watch.md)** - Observe alterações e construa automaticamente os dicionários
121
124
  - **[Verificar Versão do CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/version.md)** - Verifique a versão instalada do Intlayer CLI
125
+ - **[Listar Projetos](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/list_projects.md)** - Liste todos os projetos Intlayer em um diretório ou repositório git
122
126
 
123
127
  ### Gerenciamento de Dicionários
124
128
 
@@ -166,6 +170,7 @@ Para ver como configurar os locais disponíveis ou outros parâmetros, consulte
166
170
  "intlayer:list": "npx intlayer content list",
167
171
  "intlayer:test": "npx intlayer content test",
168
172
  "intlayer:transform": "npx intlayer transform",
173
+ "intlayer:projects": "npx intlayer projects list",
169
174
  "intlayer:doc:translate": "npx intlayer doc translate",
170
175
  "intlayer:doc:review": "npx intlayer doc review"
171
176
  }
@@ -175,3 +180,4 @@ Para ver como configurar os locais disponíveis ou outros parâmetros, consulte
175
180
  >
176
181
  > - `npx intlayer list` ao invés de `npx intlayer content list`
177
182
  > - `npx intlayer test` ao invés de `npx intlayer content test`
183
+ > - `npx intlayer projects-list` ou `npx intlayer pl` ao invés de `npx intlayer projects list`