@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.
- package/README.md +9 -2
- package/dist/cjs/generated/docs.entry.cjs +57 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +57 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +3 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/cli/ci.md +137 -0
- package/docs/ar/cli/index.md +7 -1
- package/docs/ar/cli/list.md +39 -2
- package/docs/ar/cli/list_projects.md +131 -0
- package/docs/ar/cli/push.md +1 -1
- package/docs/ar/configuration.md +3 -3
- package/docs/ar/interest_of_intlayer.md +1 -1
- package/docs/ar/intlayer_CMS.md +25 -5
- package/docs/ar/intlayer_with_express.md +1 -0
- package/docs/ar/intlayer_with_fastify.md +516 -0
- package/docs/ar/readme.md +1 -1
- package/docs/de/cli/ci.md +137 -0
- package/docs/de/cli/index.md +7 -1
- package/docs/de/cli/list.md +39 -2
- package/docs/de/cli/list_projects.md +130 -0
- package/docs/de/cli/push.md +1 -1
- package/docs/de/configuration.md +3 -3
- package/docs/de/interest_of_intlayer.md +1 -1
- package/docs/de/intlayer_CMS.md +25 -5
- package/docs/de/intlayer_with_express.md +1 -0
- package/docs/de/intlayer_with_fastify.md +449 -0
- package/docs/de/readme.md +1 -1
- package/docs/en/cli/ci.md +137 -0
- package/docs/en/cli/index.md +14 -1
- package/docs/en/cli/list.md +39 -2
- package/docs/en/cli/list_projects.md +128 -0
- package/docs/en/cli/push.md +1 -1
- package/docs/en/configuration.md +3 -3
- package/docs/en/interest_of_intlayer.md +2 -2
- package/docs/en/intlayer_CMS.md +25 -5
- package/docs/en/intlayer_with_express.md +1 -0
- package/docs/en/intlayer_with_fastify.md +439 -0
- package/docs/en/readme.md +3 -1
- package/docs/en-GB/cli/ci.md +137 -0
- package/docs/en-GB/cli/index.md +7 -1
- package/docs/en-GB/cli/list.md +39 -2
- package/docs/en-GB/cli/list_projects.md +130 -0
- package/docs/en-GB/cli/push.md +1 -1
- package/docs/en-GB/configuration.md +3 -3
- package/docs/en-GB/interest_of_intlayer.md +1 -1
- package/docs/en-GB/intlayer_CMS.md +25 -5
- package/docs/en-GB/intlayer_with_express.md +1 -0
- package/docs/en-GB/intlayer_with_fastify.md +445 -0
- package/docs/en-GB/readme.md +3 -1
- package/docs/es/cli/ci.md +137 -0
- package/docs/es/cli/index.md +7 -1
- package/docs/es/cli/list.md +39 -2
- package/docs/es/cli/list_projects.md +130 -0
- package/docs/es/cli/push.md +1 -1
- package/docs/es/configuration.md +3 -3
- package/docs/es/interest_of_intlayer.md +1 -1
- package/docs/es/intlayer_CMS.md +25 -5
- package/docs/es/intlayer_with_express.md +1 -0
- package/docs/es/intlayer_with_fastify.md +480 -0
- package/docs/es/readme.md +1 -1
- package/docs/fr/cli/ci.md +137 -0
- package/docs/fr/cli/index.md +7 -1
- package/docs/fr/cli/list.md +39 -2
- package/docs/fr/cli/list_projects.md +131 -0
- package/docs/fr/cli/push.md +1 -1
- package/docs/fr/configuration.md +3 -3
- package/docs/fr/interest_of_intlayer.md +1 -1
- package/docs/fr/intlayer_CMS.md +25 -5
- package/docs/fr/intlayer_with_express.md +1 -0
- package/docs/fr/intlayer_with_fastify.md +439 -0
- package/docs/fr/readme.md +1 -1
- package/docs/hi/cli/ci.md +137 -0
- package/docs/hi/cli/index.md +7 -1
- package/docs/hi/cli/list.md +38 -1
- package/docs/hi/cli/list_projects.md +130 -0
- package/docs/hi/cli/push.md +1 -1
- package/docs/hi/configuration.md +3 -3
- package/docs/hi/interest_of_intlayer.md +1 -1
- package/docs/hi/intlayer_CMS.md +25 -5
- package/docs/hi/intlayer_with_express.md +1 -0
- package/docs/hi/intlayer_with_fastify.md +540 -0
- package/docs/hi/readme.md +1 -1
- package/docs/id/cli/ci.md +137 -0
- package/docs/id/cli/index.md +7 -1
- package/docs/id/cli/list.md +38 -1
- package/docs/id/cli/list_projects.md +128 -0
- package/docs/id/cli/push.md +1 -1
- package/docs/id/configuration.md +3 -3
- package/docs/id/interest_of_intlayer.md +1 -1
- package/docs/id/intlayer_CMS.md +25 -5
- package/docs/id/intlayer_with_express.md +1 -0
- package/docs/id/intlayer_with_fastify.md +470 -0
- package/docs/id/readme.md +1 -1
- package/docs/it/cli/ci.md +137 -0
- package/docs/it/cli/index.md +7 -1
- package/docs/it/cli/list.md +39 -2
- package/docs/it/cli/list_projects.md +130 -0
- package/docs/it/cli/push.md +1 -1
- package/docs/it/configuration.md +3 -3
- package/docs/it/interest_of_intlayer.md +1 -1
- package/docs/it/intlayer_CMS.md +25 -5
- package/docs/it/intlayer_with_express.md +1 -0
- package/docs/it/intlayer_with_fastify.md +445 -0
- package/docs/it/readme.md +1 -1
- package/docs/ja/cli/ci.md +137 -0
- package/docs/ja/cli/index.md +7 -1
- package/docs/ja/cli/list.md +38 -1
- package/docs/ja/cli/list_projects.md +136 -0
- package/docs/ja/cli/push.md +1 -1
- package/docs/ja/configuration.md +3 -3
- package/docs/ja/interest_of_intlayer.md +1 -1
- package/docs/ja/intlayer_CMS.md +25 -5
- package/docs/ja/intlayer_with_express.md +1 -0
- package/docs/ja/intlayer_with_fastify.md +516 -0
- package/docs/ja/readme.md +1 -1
- package/docs/ko/cli/ci.md +137 -0
- package/docs/ko/cli/index.md +7 -1
- package/docs/ko/cli/list.md +38 -1
- package/docs/ko/cli/list_projects.md +128 -0
- package/docs/ko/cli/push.md +1 -1
- package/docs/ko/configuration.md +3 -3
- package/docs/ko/interest_of_intlayer.md +1 -1
- package/docs/ko/intlayer_CMS.md +25 -5
- package/docs/ko/intlayer_with_express.md +1 -0
- package/docs/ko/intlayer_with_fastify.md +463 -0
- package/docs/ko/readme.md +1 -1
- package/docs/pl/cli/ci.md +137 -0
- package/docs/pl/cli/index.md +7 -1
- package/docs/pl/cli/list.md +39 -2
- package/docs/pl/cli/list_projects.md +130 -0
- package/docs/pl/cli/push.md +1 -1
- package/docs/pl/configuration.md +3 -3
- package/docs/pl/interest_of_intlayer.md +1 -1
- package/docs/pl/intlayer_CMS.md +25 -5
- package/docs/pl/intlayer_with_express.md +1 -0
- package/docs/pl/intlayer_with_fastify.md +457 -0
- package/docs/pl/readme.md +1 -1
- package/docs/pt/cli/ci.md +137 -0
- package/docs/pt/cli/index.md +7 -1
- package/docs/pt/cli/list.md +39 -2
- package/docs/pt/cli/list_projects.md +134 -0
- package/docs/pt/cli/push.md +1 -1
- package/docs/pt/configuration.md +3 -3
- package/docs/pt/interest_of_intlayer.md +1 -1
- package/docs/pt/intlayer_CMS.md +25 -5
- package/docs/pt/intlayer_with_express.md +1 -0
- package/docs/pt/intlayer_with_fastify.md +502 -0
- package/docs/pt/readme.md +1 -1
- package/docs/ru/cli/ci.md +137 -0
- package/docs/ru/cli/index.md +7 -1
- package/docs/ru/cli/list.md +39 -2
- package/docs/ru/cli/list_projects.md +130 -0
- package/docs/ru/cli/push.md +1 -1
- package/docs/ru/configuration.md +3 -3
- package/docs/ru/interest_of_intlayer.md +1 -1
- package/docs/ru/intlayer_CMS.md +25 -5
- package/docs/ru/intlayer_with_express.md +1 -0
- package/docs/ru/intlayer_with_fastify.md +468 -0
- package/docs/ru/readme.md +1 -1
- package/docs/tr/cli/ci.md +137 -0
- package/docs/tr/cli/index.md +7 -1
- package/docs/tr/cli/list.md +39 -2
- package/docs/tr/cli/list_projects.md +134 -0
- package/docs/tr/cli/push.md +1 -1
- package/docs/tr/configuration.md +3 -3
- package/docs/tr/interest_of_intlayer.md +1 -1
- package/docs/tr/intlayer_CMS.md +25 -5
- package/docs/tr/intlayer_with_express.md +1 -0
- package/docs/tr/intlayer_with_fastify.md +471 -0
- package/docs/tr/readme.md +1 -1
- package/docs/vi/cli/ci.md +137 -0
- package/docs/vi/cli/index.md +7 -1
- package/docs/vi/cli/list.md +38 -1
- package/docs/vi/cli/list_projects.md +130 -0
- package/docs/vi/cli/push.md +1 -1
- package/docs/vi/configuration.md +3 -3
- package/docs/vi/interest_of_intlayer.md +1 -1
- package/docs/vi/intlayer_CMS.md +25 -5
- package/docs/vi/intlayer_with_express.md +1 -0
- package/docs/vi/intlayer_with_fastify.md +490 -0
- package/docs/vi/readme.md +1 -1
- package/docs/zh/cli/ci.md +137 -0
- package/docs/zh/cli/index.md +7 -1
- package/docs/zh/cli/list.md +38 -1
- package/docs/zh/cli/list_projects.md +130 -0
- package/docs/zh/cli/push.md +1 -1
- package/docs/zh/configuration.md +3 -3
- package/docs/zh/interest_of_intlayer.md +1 -1
- package/docs/zh/intlayer_CMS.md +25 -5
- package/docs/zh/intlayer_with_express.md +1 -0
- package/docs/zh/intlayer_with_fastify.md +451 -0
- package/docs/zh/readme.md +1 -1
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +57 -0
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-12-30
|
|
3
|
+
updatedAt: 2025-12-30
|
|
4
|
+
title: Cara menerjemahkan backend Fastify Anda – i18n guide 2026
|
|
5
|
+
description: Temukan cara membuat backend Fastify Anda mendukung banyak bahasa. Ikuti dokumentasi untuk menginternasionalisasi (i18n) dan menerjemahkannya.
|
|
6
|
+
keywords:
|
|
7
|
+
- Internationalization
|
|
8
|
+
- Dokumentasi
|
|
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: Menambahkan perintah init
|
|
22
|
+
- version: 7.6.0
|
|
23
|
+
date: 2025-12-31
|
|
24
|
+
changes: Riwayat awal
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Terjemahkan situs backend Fastify Anda menggunakan Intlayer | Internationalization (i18n)
|
|
28
|
+
|
|
29
|
+
`fastify-intlayer` adalah plugin Internationalization (i18n) yang kuat untuk aplikasi Fastify, dirancang untuk membuat layanan backend Anda dapat diakses secara global dengan menyediakan respons yang dilokalisasi berdasarkan preferensi klien.
|
|
30
|
+
|
|
31
|
+
### Kasus Penggunaan Praktis
|
|
32
|
+
|
|
33
|
+
- **Menampilkan Error Backend dalam Bahasa Pengguna**: Ketika terjadi error, menampilkan pesan dalam bahasa asli pengguna meningkatkan pemahaman dan mengurangi frustrasi. Ini sangat berguna untuk pesan error dinamis yang mungkin ditampilkan di komponen front-end seperti toast atau modal.
|
|
34
|
+
|
|
35
|
+
`fastify-intlayer` adalah plugin internationalization (i18n) yang kuat untuk aplikasi Fastify, dirancang agar layanan backend Anda dapat diakses secara global dengan menyediakan respons yang dilokalkan berdasarkan preferensi klien.
|
|
36
|
+
|
|
37
|
+
### Kasus Penggunaan Praktis
|
|
38
|
+
|
|
39
|
+
- **Menampilkan Kesalahan Backend dalam Bahasa Pengguna**: Ketika terjadi kesalahan, menampilkan pesan dalam bahasa asli pengguna meningkatkan pemahaman dan mengurangi frustrasi. Ini sangat berguna untuk pesan error dinamis yang mungkin ditampilkan di komponen frontend seperti toasts atau modals.
|
|
40
|
+
- **Mengambil Konten Multibahasa**: Untuk aplikasi yang mengambil konten dari database, internationalization memastikan bahwa Anda dapat menyajikan konten ini dalam berbagai bahasa. Ini sangat penting untuk platform seperti situs e-commerce atau sistem manajemen konten yang perlu menampilkan deskripsi produk, artikel, dan konten lain dalam bahasa yang dipilih pengguna.
|
|
41
|
+
- **Mengirim Email Multibahasa**: Baik itu email transaksional, kampanye pemasaran, atau notifikasi, mengirim email dalam bahasa penerima dapat secara signifikan meningkatkan keterlibatan dan efektivitas.
|
|
42
|
+
- **Notifikasi Push Multibahasa**: Untuk aplikasi seluler, mengirim notifikasi push dalam bahasa yang dipilih pengguna dapat meningkatkan interaksi dan retensi. Sentuhan personal ini membuat notifikasi terasa lebih relevan dan lebih mudah ditindaklanjuti.
|
|
43
|
+
- **Komunikasi Lainnya**: Bentuk komunikasi apa pun dari backend, seperti pesan SMS, peringatan sistem, atau pembaruan antarmuka pengguna, mendapat manfaat bila disampaikan dalam bahasa pengguna, sehingga memastikan kejelasan dan meningkatkan pengalaman pengguna secara keseluruhan.
|
|
44
|
+
|
|
45
|
+
Dengan melakukan internasionalisasi pada backend, aplikasi Anda tidak hanya menghormati perbedaan budaya tetapi juga lebih selaras dengan kebutuhan pasar global, menjadikannya langkah penting untuk menskalakan layanan Anda secara internasional.
|
|
46
|
+
|
|
47
|
+
## Memulai
|
|
48
|
+
|
|
49
|
+
### Instalasi
|
|
50
|
+
|
|
51
|
+
Untuk mulai menggunakan `fastify-intlayer`, pasang paket menggunakan npm:
|
|
52
|
+
|
|
53
|
+
```bash packageManager="npm"
|
|
54
|
+
npm install intlayer fastify-intlayer
|
|
55
|
+
npx intlayer init
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
```bash packageManager="pnpm"
|
|
60
|
+
pnpm add intlayer fastify-intlayer
|
|
61
|
+
pnpm intlayer init
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```bash packageManager="yarn"
|
|
66
|
+
yarn add intlayer fastify-intlayer
|
|
67
|
+
yarn intlayer init
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
```bash packageManager="bun"
|
|
72
|
+
bun add intlayer fastify-intlayer
|
|
73
|
+
bunx intlayer init
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Penyiapan
|
|
78
|
+
|
|
79
|
+
Konfigurasikan pengaturan internationalization dengan membuat sebuah `intlayer.config.ts` di root proyek Anda:
|
|
80
|
+
|
|
81
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
82
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
83
|
+
|
|
84
|
+
const config: IntlayerConfig = {
|
|
85
|
+
internationalization: {
|
|
86
|
+
locales: [
|
|
87
|
+
Locales.ENGLISH,
|
|
88
|
+
Locales.FRENCH,
|
|
89
|
+
Locales.SPANISH_MEXICO,
|
|
90
|
+
Locales.SPANISH_SPAIN,
|
|
91
|
+
],
|
|
92
|
+
defaultLocale: Locales.ENGLISH,
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export default config;
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
100
|
+
import { Locales } from "intlayer";
|
|
101
|
+
|
|
102
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
103
|
+
const config = {
|
|
104
|
+
internationalization: {
|
|
105
|
+
locales: [
|
|
106
|
+
Locales.ENGLISH,
|
|
107
|
+
Locales.FRENCH,
|
|
108
|
+
Locales.SPANISH_MEXICO,
|
|
109
|
+
Locales.SPANISH_SPAIN,
|
|
110
|
+
],
|
|
111
|
+
defaultLocale: Locales.ENGLISH,
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
export default config;
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
119
|
+
const { Locales } = require("intlayer");
|
|
120
|
+
|
|
121
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
122
|
+
const config = {
|
|
123
|
+
internationalization: {
|
|
124
|
+
locales: [
|
|
125
|
+
Locales.ENGLISH,
|
|
126
|
+
Locales.FRENCH,
|
|
127
|
+
Locales.SPANISH_MEXICO,
|
|
128
|
+
Locales.SPANISH_SPAIN,
|
|
129
|
+
],
|
|
130
|
+
defaultLocale: Locales.ENGLISH,
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
module.exports = config;
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Deklarasikan Konten Anda
|
|
138
|
+
|
|
139
|
+
Buat dan kelola deklarasi konten Anda untuk menyimpan terjemahan:
|
|
140
|
+
|
|
141
|
+
```typescript fileName="src/index.content.ts" contentDeclarationFormat="typescript"
|
|
142
|
+
import { t, type Dictionary } from "intlayer";
|
|
143
|
+
|
|
144
|
+
const indexContent = {
|
|
145
|
+
key: "index",
|
|
146
|
+
content: {
|
|
147
|
+
exampleOfContent: t({
|
|
148
|
+
id: "Contoh konten yang dikembalikan dalam Bahasa Indonesia",
|
|
149
|
+
en: "Example of returned content in English",
|
|
150
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
151
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
152
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
153
|
+
}),
|
|
154
|
+
},
|
|
155
|
+
} satisfies Dictionary;
|
|
156
|
+
|
|
157
|
+
export default indexContent;
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
```javascript fileName="src/index.content.mjs" contentDeclarationFormat="esm"
|
|
161
|
+
import { t } from "intlayer";
|
|
162
|
+
|
|
163
|
+
/** @type {import('intlayer').Dictionary} */
|
|
164
|
+
const indexContent = {
|
|
165
|
+
key: "index",
|
|
166
|
+
content: {
|
|
167
|
+
exampleOfContent: t({
|
|
168
|
+
id: "Contoh konten yang dikembalikan dalam Bahasa Indonesia",
|
|
169
|
+
en: "Example of returned content in English",
|
|
170
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
171
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
172
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
173
|
+
}),
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
export default indexContent;
|
|
178
|
+
|
|
179
|
+
/** @type {import('intlayer').Dictionary} */
|
|
180
|
+
const indexContent = {
|
|
181
|
+
key: "index",
|
|
182
|
+
content: {
|
|
183
|
+
exampleOfContent: t({
|
|
184
|
+
id: "Contoh konten yang dikembalikan dalam bahasa Inggris",
|
|
185
|
+
en: "Example of returned content in English",
|
|
186
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
187
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
188
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
189
|
+
}),
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
export default indexContent;
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
```javascript fileName="src/index.content.cjs" contentDeclarationFormat="commonjs"
|
|
197
|
+
const { t } = require("intlayer");
|
|
198
|
+
|
|
199
|
+
/** @type {import('intlayer').Dictionary} */
|
|
200
|
+
const indexContent = {
|
|
201
|
+
key: "index",
|
|
202
|
+
content: {
|
|
203
|
+
exampleOfContent: t({
|
|
204
|
+
id: "Contoh konten yang dikembalikan dalam bahasa Inggris",
|
|
205
|
+
en: "Example of returned content in English",
|
|
206
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
207
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
208
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
209
|
+
}),
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
module.exports = indexContent;
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
```json fileName="src/index.content.json" contentDeclarationFormat="json"
|
|
217
|
+
{
|
|
218
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
219
|
+
"key": "index",
|
|
220
|
+
"content": {
|
|
221
|
+
"exampleOfContent": {
|
|
222
|
+
"nodeType": "translation",
|
|
223
|
+
"translation": {
|
|
224
|
+
"id": "Contoh konten yang dikembalikan dalam bahasa Indonesia",
|
|
225
|
+
"en": "Example of returned content in English",
|
|
226
|
+
"fr": "Exemple de contenu renvoyé en français",
|
|
227
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
228
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)"
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
> Deklarasi konten Anda dapat didefinisikan di mana saja dalam aplikasi Anda selama mereka dimasukkan ke direktori `contentDir` (secara default, `./src`). Dan cocokkan ekstensi file deklarasi konten (secara default, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
236
|
+
|
|
237
|
+
> Untuk detail lebih lanjut, lihat [dokumentasi deklarasi konten](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dictionary/content_file.md).
|
|
238
|
+
|
|
239
|
+
### Pengaturan Aplikasi Fastify
|
|
240
|
+
|
|
241
|
+
Siapkan aplikasi Fastify Anda untuk menggunakan `fastify-intlayer`:
|
|
242
|
+
|
|
243
|
+
```typescript fileName="src/index.ts" codeFormat="typescript"
|
|
244
|
+
import Fastify from "fastify";
|
|
245
|
+
import { intlayer, t, getDictionary, getIntlayer } from "fastify-intlayer";
|
|
246
|
+
import dictionaryExample from "./index.content";
|
|
247
|
+
|
|
248
|
+
const fastify = Fastify({ logger: true });
|
|
249
|
+
|
|
250
|
+
typescript fileName="src/index.ts" codeFormat="typescript"
|
|
251
|
+
// Muat plugin internasionalisasi
|
|
252
|
+
await fastify.register(intlayer);
|
|
253
|
+
|
|
254
|
+
// Rute
|
|
255
|
+
fastify.get("/t_example", async (_req, reply) => {
|
|
256
|
+
return t({
|
|
257
|
+
en: "Example of returned content in English",
|
|
258
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
259
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
260
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
fastify.get("/getIntlayer_example", async (_req, reply) => {
|
|
265
|
+
return getIntlayer("index").exampleOfContent;
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
fastify.get("/getDictionary_example", async (_req, reply) => {
|
|
269
|
+
return getDictionary(dictionaryExample).exampleOfContent;
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
// Mulai server
|
|
273
|
+
const start = async () => {
|
|
274
|
+
try {
|
|
275
|
+
await fastify.listen({ port: 3000 });
|
|
276
|
+
} catch (err) {
|
|
277
|
+
fastify.log.error(err);
|
|
278
|
+
process.exit(1);
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
start();
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
```javascript fileName="src/index.mjs" codeFormat="esm"
|
|
286
|
+
import Fastify from "fastify";
|
|
287
|
+
import { intlayer, t, getDictionary, getIntlayer } from "fastify-intlayer";
|
|
288
|
+
import dictionaryExample from "./index.content";
|
|
289
|
+
|
|
290
|
+
const fastify = Fastify({ logger: true });
|
|
291
|
+
|
|
292
|
+
// Muat plugin internasionalisasi
|
|
293
|
+
await fastify.register(intlayer);
|
|
294
|
+
|
|
295
|
+
// Rute
|
|
296
|
+
fastify.get("/t_example", async (_req, reply) => {
|
|
297
|
+
return t({
|
|
298
|
+
id: "Contoh konten yang dikembalikan dalam bahasa Inggris",
|
|
299
|
+
en: "Example of returned content in English",
|
|
300
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
301
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
302
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
fastify.get("/getIntlayer_example", async (_req, reply) => {
|
|
307
|
+
return getIntlayer("index").exampleOfContent;
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
fastify.get("/getDictionary_example", async (_req, reply) => {
|
|
311
|
+
return getDictionary(dictionaryExample).exampleOfContent;
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
// Mulai server
|
|
315
|
+
const start = async () => {
|
|
316
|
+
try {
|
|
317
|
+
await fastify.listen({ port: 3000 });
|
|
318
|
+
} catch (err) {
|
|
319
|
+
fastify.log.error(err);
|
|
320
|
+
process.exit(1);
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
start();
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
```javascript fileName="src/index.cjs" codeFormat="commonjs"
|
|
328
|
+
const Fastify = require("fastify");
|
|
329
|
+
const { intlayer, t, getDictionary, getIntlayer } = require("fastify-intlayer");
|
|
330
|
+
const dictionaryExample = require("./index.content");
|
|
331
|
+
|
|
332
|
+
const fastify = Fastify({ logger: true });
|
|
333
|
+
|
|
334
|
+
// Pembungkus untuk memulai server (async/await)
|
|
335
|
+
const start = async () => {
|
|
336
|
+
try {
|
|
337
|
+
// Muat plugin internasionalisasi
|
|
338
|
+
await fastify.register(intlayer);
|
|
339
|
+
|
|
340
|
+
// Rute
|
|
341
|
+
fastify.get("/t_example", async (_req, reply) => {
|
|
342
|
+
return t({
|
|
343
|
+
id: "Contoh konten yang dikembalikan dalam bahasa Indonesia",
|
|
344
|
+
en: "Example of returned content in English",
|
|
345
|
+
fr: "Exemple de contenu renvoyé en français",
|
|
346
|
+
"es-ES": "Ejemplo de contenido devuelto en español (España)",
|
|
347
|
+
"es-MX": "Ejemplo de contenido devuelto en español (México)",
|
|
348
|
+
});
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
fastify.get("/getIntlayer_example", async (_req, reply) => {
|
|
352
|
+
return getIntlayer("index").exampleOfContent;
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
fastify.get("/getDictionary_example", async (_req, reply) => {
|
|
356
|
+
return getDictionary(dictionaryExample).exampleOfContent;
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
await fastify.listen({ port: 3000 });
|
|
360
|
+
} catch (err) {
|
|
361
|
+
fastify.log.error(err);
|
|
362
|
+
process.exit(1);
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
start();
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### Kompatibilitas
|
|
370
|
+
|
|
371
|
+
`fastify-intlayer` sepenuhnya kompatibel dengan:
|
|
372
|
+
|
|
373
|
+
- [`react-intlayer`](<https://www.google.com/search?q=%5Bhttps://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/react-intlayer/index.md%5D(https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/react-intlayer/index.md)>) untuk aplikasi React
|
|
374
|
+
- [`next-intlayer`](<https://www.google.com/search?q=%5Bhttps://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/next-intlayer/index.md%5D(https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/next-intlayer/index.md)>) untuk aplikasi Next.js
|
|
375
|
+
|
|
376
|
+
- [`react-intlayer`](<https://www.google.com/search?q=%5Bhttps://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/react-intlayer/index.md%5D(https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/react-intlayer/index.md)>) untuk aplikasi React
|
|
377
|
+
- [`next-intlayer`](<https://www.google.com/search?q=%5Bhttps://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/next-intlayer/index.md%5D(https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/next-intlayer/index.md)>) untuk aplikasi Next.js
|
|
378
|
+
- [`vite-intlayer`](<https://www.google.com/search?q=%5Bhttps://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/vite-intlayer/index.md%5D(https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/vite-intlayer/index.md)>) untuk aplikasi Vite
|
|
379
|
+
|
|
380
|
+
Ini juga berfungsi mulus dengan solusi internasionalisasi apa pun di berbagai lingkungan, termasuk browser dan permintaan API. Anda dapat menyesuaikan middleware untuk mendeteksi locale melalui header atau cookie:
|
|
381
|
+
|
|
382
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
383
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
384
|
+
|
|
385
|
+
const config: IntlayerConfig = {
|
|
386
|
+
// ... Opsi konfigurasi lainnya
|
|
387
|
+
middleware: {
|
|
388
|
+
headerName: "my-locale-header",
|
|
389
|
+
cookieName: "my-locale-cookie",
|
|
390
|
+
},
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
export default config;
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
397
|
+
import { Locales } from "intlayer";
|
|
398
|
+
|
|
399
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
400
|
+
const config = {
|
|
401
|
+
// ... Opsi konfigurasi lainnya
|
|
402
|
+
middleware: {
|
|
403
|
+
headerName: "my-locale-header",
|
|
404
|
+
cookieName: "my-locale-cookie",
|
|
405
|
+
},
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
export default config;
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
412
|
+
const { Locales } = require("intlayer");
|
|
413
|
+
|
|
414
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
415
|
+
const config = {
|
|
416
|
+
// ... Opsi konfigurasi lainnya
|
|
417
|
+
middleware: {
|
|
418
|
+
headerName: "my-locale-header",
|
|
419
|
+
cookieName: "my-locale-cookie",
|
|
420
|
+
},
|
|
421
|
+
};
|
|
422
|
+
|
|
423
|
+
module.exports = config;
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
Secara default, `fastify-intlayer` akan menginterpretasikan header `Accept-Language` untuk menentukan bahasa yang dipilih klien.
|
|
427
|
+
|
|
428
|
+
> Untuk informasi lebih lanjut tentang konfigurasi dan topik lanjutan, kunjungi [dokumentasi kami](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/configuration.md).
|
|
429
|
+
|
|
430
|
+
### Konfigurasi TypeScript
|
|
431
|
+
|
|
432
|
+
`fastify-intlayer` memanfaatkan kemampuan kuat TypeScript untuk meningkatkan proses internasionalisasi. Tipe statis TypeScript memastikan setiap kunci terjemahan tercakup, mengurangi risiko terjemahan yang hilang dan meningkatkan pemeliharaan.
|
|
433
|
+
|
|
434
|
+
Pastikan tipe yang dihasilkan secara otomatis (secara default di ./types/intlayer.d.ts) disertakan dalam file tsconfig.json Anda.
|
|
435
|
+
|
|
436
|
+
```json5 fileName="tsconfig.json"
|
|
437
|
+
{
|
|
438
|
+
// ... Konfigurasi TypeScript Anda yang sudah ada
|
|
439
|
+
"include": [
|
|
440
|
+
// ... Konfigurasi TypeScript Anda yang sudah ada
|
|
441
|
+
".intlayer/**/*.ts", // Sertakan tipe yang dihasilkan otomatis
|
|
442
|
+
],
|
|
443
|
+
}
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
### Ekstensi VS Code
|
|
447
|
+
|
|
448
|
+
Untuk meningkatkan pengalaman pengembangan Anda dengan Intlayer, Anda dapat memasang **Ekstensi Intlayer untuk VS Code** resmi.
|
|
449
|
+
|
|
450
|
+
[Pasang dari VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
451
|
+
|
|
452
|
+
Ekstensi ini menyediakan:
|
|
453
|
+
|
|
454
|
+
- **Autocompletion** untuk kunci terjemahan.
|
|
455
|
+
- **Deteksi kesalahan real-time** untuk terjemahan yang hilang.
|
|
456
|
+
- **Pratinjau inline** untuk konten yang diterjemahkan.
|
|
457
|
+
- **Tindakan cepat** untuk memudahkan pembuatan dan pembaruan terjemahan.
|
|
458
|
+
|
|
459
|
+
Untuk detail lebih lanjut tentang cara menggunakan ekstensi ini, lihat [dokumentasi Ekstensi Intlayer untuk VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
460
|
+
|
|
461
|
+
### Konfigurasi Git
|
|
462
|
+
|
|
463
|
+
Disarankan untuk mengabaikan file yang dihasilkan oleh Intlayer. Hal ini memungkinkan Anda untuk menghindari meng-commit file tersebut ke repositori Git Anda.
|
|
464
|
+
|
|
465
|
+
Untuk melakukan ini, Anda dapat menambahkan instruksi berikut ke file `.gitignore` Anda:
|
|
466
|
+
|
|
467
|
+
```plaintext fileName=".gitignore"
|
|
468
|
+
# Abaikan file yang dihasilkan oleh Intlayer
|
|
469
|
+
.intlayer
|
|
470
|
+
```
|
package/docs/id/readme.md
CHANGED
|
@@ -50,7 +50,7 @@ Dengan **file konten per-locale**, **autocompletion TypeScript**, **kamus tree-s
|
|
|
50
50
|
| Fitur | Deskripsi |
|
|
51
51
|
| ------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
52
52
|
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Fitur" width="700"> | **Dukungan Lintas-Framework**<br><br>Intlayer kompatibel dengan semua framework dan pustaka utama, termasuk Next.js, React, Vite, Vue.js, Nuxt, Preact, Express, dan lainnya. |
|
|
53
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.
|
|
53
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Fitur" width="700"> | **Manajemen Konten Berbasis JavaScript**<br><br>Manfaatkan fleksibilitas JavaScript untuk mendefinisikan dan mengelola konten Anda secara efisien. <br><br> - [Deklarasi Konten](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="Fitur" width="700"> | **File Deklarasi Konten Per-Locale**<br><br>Percepat pengembangan Anda dengan mendeklarasikan konten sekali saja, sebelum auto generation.<br><br> - [File Deklarasi Konten Per-Locale](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="Fitur" width="700"> | **Lingkungan Aman-Tipe**<br><br>Manfaatkan TypeScript untuk memastikan definisi konten dan kode Anda bebas dari kesalahan, sekaligus mendapatkan keuntungan dari autocompletion IDE.<br><br> - [Konfigurasi 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="Fitur" width="700"> | **Pengaturan yang Disederhanakan**<br><br>Mulai dengan cepat menggunakan konfigurasi minimal. Sesuaikan pengaturan untuk internasionalisasi, routing, AI, build, dan penanganan konten dengan mudah.<br><br> - [Jelajahi integrasi 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: Impara come usare il comando Intlayer CI per eseguire comandi Intlayer con credenziali auto-iniettate nelle pipeline CI/CD e nei monorepo.
|
|
6
|
+
keywords:
|
|
7
|
+
- CI
|
|
8
|
+
- CI/CD
|
|
9
|
+
- Automatizzazione
|
|
10
|
+
- Monorepo
|
|
11
|
+
- Credenziali
|
|
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: Aggiungere comando CI
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Comando CI
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx intlayer ci <command...>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Il comando CI è progettato per l'automazione e le pipeline CI/CD. Inietta automaticamente le credenziali dalla variabile d'ambiente `INTLAYER_PROJECT_CREDENTIALS` e può eseguire comandi Intlayer su più progetti in un monorepo.
|
|
32
|
+
|
|
33
|
+
## Come funziona
|
|
34
|
+
|
|
35
|
+
Il comando CI opera in due modalità:
|
|
36
|
+
|
|
37
|
+
1. **Modalità progetto singolo**: Se la directory di lavoro corrente corrisponde a uno dei percorsi del progetto in `INTLAYER_PROJECT_CREDENTIALS`, esegue il comando solo per quel progetto specifico.
|
|
38
|
+
|
|
39
|
+
2. **Modalità iterazione**: Se non viene rilevato un contesto di progetto specifico, itera su tutti i progetti configurati ed esegue il comando per ciascuno.
|
|
40
|
+
|
|
41
|
+
## Variabile d'ambiente
|
|
42
|
+
|
|
43
|
+
Il comando richiede che la variabile d'ambiente `INTLAYER_PROJECT_CREDENTIALS` sia impostata. Questa variabile deve contenere un oggetto JSON che mappa i percorsi del progetto alle loro credenziali:
|
|
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
|
+
## Rilevamento del gestore di pacchetti
|
|
59
|
+
|
|
60
|
+
Il comando CI rileva automaticamente quale gestore di pacchetti viene utilizzato (npm, yarn, pnpm o bun) in base alla variabile d'ambiente `npm_config_user_agent` e utilizza il comando appropriato per eseguire Intlayer.
|
|
61
|
+
|
|
62
|
+
## Argomenti
|
|
63
|
+
|
|
64
|
+
- **`<command...>`**: Il comando Intlayer da eseguire (ad esempio, `fill`, `push`, `build`). Puoi passare qualsiasi comando Intlayer e i suoi argomenti.
|
|
65
|
+
|
|
66
|
+
> Esempio: `npx intlayer ci fill --verbose`
|
|
67
|
+
>
|
|
68
|
+
> Esempio: `npx intlayer ci push`
|
|
69
|
+
>
|
|
70
|
+
> Esempio: `npx intlayer ci build`
|
|
71
|
+
|
|
72
|
+
## Esempi
|
|
73
|
+
|
|
74
|
+
### Eseguire un comando in modalità progetto singolo
|
|
75
|
+
|
|
76
|
+
Se ti trovi in una directory di progetto che corrisponde a uno dei percorsi in `INTLAYER_PROJECT_CREDENTIALS`:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
cd packages/app
|
|
80
|
+
npx intlayer ci fill
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Questo eseguirà il comando `fill` con le credenziali iniettate automaticamente per il progetto `packages/app`.
|
|
84
|
+
|
|
85
|
+
### Eseguire un comando su tutti i progetti
|
|
86
|
+
|
|
87
|
+
Se ti trovi in una directory che non corrisponde a nessun percorso di progetto, il comando itererà su tutti i progetti configurati:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
cd /path/to/monorepo
|
|
91
|
+
npx intlayer ci push
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Questo eseguirà il comando `push` per ogni progetto configurato in `INTLAYER_PROJECT_CREDENTIALS`.
|
|
95
|
+
|
|
96
|
+
### Passare flag aggiuntivi
|
|
97
|
+
|
|
98
|
+
Puoi passare qualsiasi flag al comando Intlayer sottostante:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npx intlayer ci fill --verbose --mode complete
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Utilizzare nelle pipeline CI/CD
|
|
105
|
+
|
|
106
|
+
Nella tua configurazione CI/CD (ad esempio, GitHub Actions, GitLab CI), imposta `INTLAYER_PROJECT_CREDENTIALS` come segreto:
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
# Esempio GitHub Actions
|
|
110
|
+
env:
|
|
111
|
+
INTLAYER_PROJECT_CREDENTIALS: ${{ secrets.INTLAYER_PROJECT_CREDENTIALS }}
|
|
112
|
+
|
|
113
|
+
steps:
|
|
114
|
+
- name: Riempire dizionari
|
|
115
|
+
run: npx intlayer ci fill
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Gestione degli errori
|
|
119
|
+
|
|
120
|
+
- Se `INTLAYER_PROJECT_CREDENTIALS` non è impostata, il comando terminerà con un errore.
|
|
121
|
+
- Se `INTLAYER_PROJECT_CREDENTIALS` non è un JSON valido, il comando terminerà con un errore.
|
|
122
|
+
- Se un percorso di progetto non esiste, verrà saltato con un avviso.
|
|
123
|
+
- Se un progetto fallisce, il comando terminerà con un codice di stato diverso da zero.
|
|
124
|
+
|
|
125
|
+
## Casi d'uso
|
|
126
|
+
|
|
127
|
+
- **Automatizzazione monorepo**: Eseguire comandi Intlayer su più progetti in un monorepo
|
|
128
|
+
- **Pipeline CI/CD**: Automatizzare la gestione dei dizionari nei flussi di lavoro di integrazione continua
|
|
129
|
+
- **Operazioni in batch**: Eseguire la stessa operazione su più progetti Intlayer contemporaneamente
|
|
130
|
+
- **Gestione dei segreti**: Gestire in modo sicuro le credenziali per più progetti utilizzando variabili d'ambiente
|
|
131
|
+
|
|
132
|
+
## Best practice di sicurezza
|
|
133
|
+
|
|
134
|
+
- Archivia `INTLAYER_PROJECT_CREDENTIALS` come segreti crittografati nella tua piattaforma CI/CD
|
|
135
|
+
- Non committare mai le credenziali nel controllo versione
|
|
136
|
+
- Usa credenziali specifiche dell'ambiente per diversi ambienti di distribuzione
|
|
137
|
+
- Ruota le credenziali regolarmente
|
package/docs/it/cli/index.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-11
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-01-06
|
|
4
4
|
title: CLI
|
|
5
5
|
description: Scopri come utilizzare la CLI di Intlayer per gestire il tuo sito web multilingue. Segui i passaggi in questa documentazione online per configurare il tuo progetto in pochi minuti.
|
|
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: Aggiunto comando projects list
|
|
20
23
|
- version: 7.5.9
|
|
21
24
|
date: 2025-12-30
|
|
22
25
|
changes: Aggiunto comando init
|
|
@@ -119,6 +122,7 @@ Per vedere come configurare le localizzazioni disponibili o altri parametri, con
|
|
|
119
122
|
- **[Build Dictionaries](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/build.md)** - Costruisci i tuoi dizionari dai file di dichiarazione dei contenuti
|
|
120
123
|
- **[Watch Dictionaries](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/watch.md)** - Monitora le modifiche e costruisci automaticamente i dizionari
|
|
121
124
|
- **[Check CLI Version](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/version.md)** - Controlla la versione installata della CLI di Intlayer
|
|
125
|
+
- **[Elenca Progetti](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/list_projects.md)** - Elenca tutti i progetti Intlayer in una directory o repository git
|
|
122
126
|
|
|
123
127
|
### Gestione dei Dizionari
|
|
124
128
|
|
|
@@ -161,6 +165,7 @@ Per vedere come configurare le localizzazioni disponibili o altri parametri, con
|
|
|
161
165
|
"intlayer:list": "npx intlayer content list",
|
|
162
166
|
"intlayer:test": "npx intlayer content test",
|
|
163
167
|
"intlayer:transform": "npx intlayer transform",
|
|
168
|
+
"intlayer:projects": "npx intlayer projects list",
|
|
164
169
|
"intlayer:doc:translate": "npx intlayer doc translate",
|
|
165
170
|
"intlayer:doc:review": "npx intlayer doc review"
|
|
166
171
|
}
|
|
@@ -170,3 +175,4 @@ Per vedere come configurare le localizzazioni disponibili o altri parametri, con
|
|
|
170
175
|
>
|
|
171
176
|
> - `npx intlayer list` invece di `npx intlayer content list`
|
|
172
177
|
> - `npx intlayer test` invece di `npx intlayer content test`
|
|
178
|
+
> - `npx intlayer projects-list` o `npx intlayer pl` invece di `npx intlayer projects list`
|