@intlayer/docs 7.4.0 → 7.5.0-canary.1
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/blog/ar/intlayer_with_i18next.md +2 -0
- package/blog/ar/intlayer_with_next-i18next.md +2 -0
- package/blog/ar/intlayer_with_next-intl.md +2 -0
- package/blog/ar/intlayer_with_react-i18next.md +2 -0
- package/blog/ar/intlayer_with_react-intl.md +2 -0
- package/blog/ar/intlayer_with_vue-i18n.md +2 -0
- package/blog/de/intlayer_with_i18next.md +2 -0
- package/blog/de/intlayer_with_next-i18next.md +1 -0
- package/blog/de/intlayer_with_next-intl.md +2 -0
- package/blog/de/intlayer_with_react-i18next.md +2 -0
- package/blog/de/intlayer_with_react-intl.md +2 -0
- package/blog/de/intlayer_with_vue-i18n.md +2 -0
- package/blog/en/intlayer_with_i18next.md +6 -0
- package/blog/en/intlayer_with_next-i18next.md +3 -0
- package/blog/en/intlayer_with_next-intl.md +3 -0
- package/blog/en/intlayer_with_react-i18next.md +3 -0
- package/blog/en/intlayer_with_react-intl.md +3 -0
- package/blog/en/intlayer_with_vue-i18n.md +3 -0
- package/blog/en-GB/intlayer_with_i18next.md +2 -0
- package/blog/en-GB/intlayer_with_next-i18next.md +2 -0
- package/blog/en-GB/intlayer_with_next-intl.md +2 -0
- package/blog/en-GB/intlayer_with_react-i18next.md +2 -0
- package/blog/en-GB/intlayer_with_react-intl.md +2 -0
- package/blog/en-GB/intlayer_with_vue-i18n.md +2 -0
- package/blog/es/intlayer_with_i18next.md +2 -0
- package/blog/es/intlayer_with_next-i18next.md +2 -0
- package/blog/es/intlayer_with_next-intl.md +2 -0
- package/blog/es/intlayer_with_react-i18next.md +2 -0
- package/blog/es/intlayer_with_react-intl.md +2 -0
- package/blog/es/intlayer_with_vue-i18n.md +2 -0
- package/blog/fr/intlayer_with_i18next.md +2 -0
- package/blog/fr/intlayer_with_next-i18next.md +2 -0
- package/blog/fr/intlayer_with_next-intl.md +2 -0
- package/blog/fr/intlayer_with_react-i18next.md +2 -0
- package/blog/fr/intlayer_with_react-intl.md +2 -0
- package/blog/fr/intlayer_with_vue-i18n.md +2 -0
- package/blog/hi/intlayer_with_i18next.md +2 -0
- package/blog/hi/intlayer_with_next-i18next.md +2 -0
- package/blog/hi/intlayer_with_next-intl.md +2 -0
- package/blog/hi/intlayer_with_react-i18next.md +2 -0
- package/blog/hi/intlayer_with_react-intl.md +2 -0
- package/blog/hi/intlayer_with_vue-i18n.md +2 -0
- package/blog/id/intlayer_with_i18next.md +2 -0
- package/blog/id/intlayer_with_next-i18next.md +2 -0
- package/blog/id/intlayer_with_next-intl.md +2 -0
- package/blog/id/intlayer_with_react-i18next.md +2 -0
- package/blog/id/intlayer_with_react-intl.md +2 -0
- package/blog/id/intlayer_with_vue-i18n.md +2 -0
- package/blog/it/intlayer_with_i18next.md +2 -0
- package/blog/it/intlayer_with_next-i18next.md +2 -0
- package/blog/it/intlayer_with_next-intl.md +2 -0
- package/blog/it/intlayer_with_react-i18next.md +2 -0
- package/blog/it/intlayer_with_react-intl.md +2 -0
- package/blog/it/intlayer_with_vue-i18n.md +2 -0
- package/blog/ja/intlayer_with_i18next.md +2 -0
- package/blog/ja/intlayer_with_next-i18next.md +1 -0
- package/blog/ja/intlayer_with_next-intl.md +2 -0
- package/blog/ja/intlayer_with_react-i18next.md +2 -0
- package/blog/ja/intlayer_with_react-intl.md +2 -0
- package/blog/ja/intlayer_with_vue-i18n.md +2 -0
- package/blog/ko/intlayer_with_i18next.md +2 -0
- package/blog/ko/intlayer_with_next-i18next.md +2 -0
- package/blog/ko/intlayer_with_next-intl.md +2 -0
- package/blog/ko/intlayer_with_react-i18next.md +2 -0
- package/blog/ko/intlayer_with_react-intl.md +2 -0
- package/blog/ko/intlayer_with_vue-i18n.md +2 -0
- package/blog/pl/intlayer_with_i18next.md +2 -0
- package/blog/pl/intlayer_with_next-i18next.md +2 -0
- package/blog/pl/intlayer_with_next-intl.md +2 -0
- package/blog/pl/intlayer_with_react-i18next.md +2 -0
- package/blog/pl/intlayer_with_react-intl.md +2 -0
- package/blog/pl/intlayer_with_vue-i18n.md +2 -0
- package/blog/pt/intlayer_with_i18next.md +2 -0
- package/blog/pt/intlayer_with_next-i18next.md +2 -0
- package/blog/pt/intlayer_with_next-intl.md +2 -0
- package/blog/pt/intlayer_with_react-i18next.md +2 -0
- package/blog/pt/intlayer_with_react-intl.md +2 -0
- package/blog/pt/intlayer_with_vue-i18n.md +2 -0
- package/blog/ru/intlayer_with_i18next.md +2 -0
- package/blog/ru/intlayer_with_next-i18next.md +2 -0
- package/blog/ru/intlayer_with_next-intl.md +2 -0
- package/blog/ru/intlayer_with_react-i18next.md +2 -0
- package/blog/ru/intlayer_with_react-intl.md +2 -0
- package/blog/ru/intlayer_with_vue-i18n.md +2 -0
- package/blog/tr/intlayer_with_i18next.md +2 -0
- package/blog/tr/intlayer_with_next-i18next.md +2 -0
- package/blog/tr/intlayer_with_next-intl.md +2 -0
- package/blog/tr/intlayer_with_react-i18next.md +2 -0
- package/blog/tr/intlayer_with_react-intl.md +2 -0
- package/blog/tr/intlayer_with_vue-i18n.md +2 -0
- package/blog/vi/intlayer_with_i18next.md +2 -0
- package/blog/vi/intlayer_with_next-i18next.md +2 -0
- package/blog/vi/intlayer_with_next-intl.md +2 -0
- package/blog/vi/intlayer_with_react-i18next.md +2 -0
- package/blog/vi/intlayer_with_react-intl.md +2 -0
- package/blog/vi/intlayer_with_vue-i18n.md +2 -0
- package/blog/zh/intlayer_with_i18next.md +2 -0
- package/blog/zh/intlayer_with_next-i18next.md +2 -0
- package/blog/zh/intlayer_with_next-intl.md +2 -0
- package/blog/zh/intlayer_with_react-i18next.md +2 -0
- package/blog/zh/intlayer_with_react-intl.md +2 -0
- package/blog/zh/intlayer_with_vue-i18n.md +2 -0
- package/dist/cjs/generated/docs.entry.cjs +19 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +19 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/cli/index.md +5 -0
- package/docs/ar/cli/login.md +157 -0
- package/docs/ar/configuration.md +12 -0
- package/docs/ar/dictionary/content_file.md +24 -1
- package/docs/ar/intlayer_with_astro.md +1 -1
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_nestjs.md +1 -1
- package/docs/ar/intlayer_with_next-i18next.md +1 -0
- package/docs/ar/intlayer_with_next-intl.md +1 -0
- package/docs/ar/intlayer_with_tanstack.md +1 -12
- package/docs/ar/plugins/sync-json.md +27 -2
- package/docs/de/cli/index.md +5 -0
- package/docs/de/cli/login.md +160 -0
- package/docs/de/configuration.md +12 -0
- package/docs/de/dictionary/content_file.md +24 -1
- package/docs/de/intlayer_with_astro.md +1 -1
- package/docs/de/intlayer_with_express.md +1 -1
- package/docs/de/intlayer_with_nestjs.md +1 -1
- package/docs/de/intlayer_with_next-i18next.md +1 -0
- package/docs/de/intlayer_with_next-intl.md +1 -0
- package/docs/de/intlayer_with_tanstack.md +1 -12
- package/docs/de/plugins/sync-json.md +27 -2
- package/docs/en/cli/index.md +5 -0
- package/docs/en/cli/login.md +157 -0
- package/docs/en/configuration.md +13 -0
- package/docs/en/dictionary/content_file.md +24 -1
- package/docs/en/index.md +1 -0
- package/docs/en/intlayer_with_astro.md +1 -1
- package/docs/en/intlayer_with_express.md +1 -1
- package/docs/en/intlayer_with_nestjs.md +1 -2
- package/docs/en/intlayer_with_next-i18next.md +1 -0
- package/docs/en/intlayer_with_next-intl.md +1 -0
- package/docs/en/intlayer_with_tanstack.md +7 -17
- package/docs/en/plugins/sync-json.md +53 -2
- package/docs/en-GB/cli/index.md +5 -0
- package/docs/en-GB/cli/login.md +181 -0
- package/docs/en-GB/configuration.md +12 -0
- package/docs/en-GB/dictionary/content_file.md +24 -1
- package/docs/en-GB/intlayer_with_astro.md +1 -1
- package/docs/en-GB/intlayer_with_express.md +1 -1
- package/docs/en-GB/intlayer_with_nestjs.md +1 -1
- package/docs/en-GB/intlayer_with_next-i18next.md +1 -0
- package/docs/en-GB/intlayer_with_next-intl.md +1 -0
- package/docs/en-GB/intlayer_with_tanstack.md +1 -12
- package/docs/en-GB/plugins/sync-json.md +26 -1
- package/docs/es/cli/index.md +5 -0
- package/docs/es/cli/login.md +182 -0
- package/docs/es/configuration.md +12 -0
- package/docs/es/dictionary/content_file.md +24 -1
- package/docs/es/intlayer_with_astro.md +1 -1
- package/docs/es/intlayer_with_express.md +1 -1
- package/docs/es/intlayer_with_nestjs.md +1 -1
- package/docs/es/intlayer_with_next-i18next.md +1 -0
- package/docs/es/intlayer_with_next-intl.md +1 -0
- package/docs/es/intlayer_with_tanstack.md +1 -12
- package/docs/es/plugins/sync-json.md +27 -2
- package/docs/fr/cli/index.md +5 -0
- package/docs/fr/cli/login.md +185 -0
- package/docs/fr/configuration.md +12 -0
- package/docs/fr/dictionary/content_file.md +24 -1
- package/docs/fr/intlayer_with_astro.md +1 -1
- package/docs/fr/intlayer_with_express.md +1 -1
- package/docs/fr/intlayer_with_nestjs.md +1 -1
- package/docs/fr/intlayer_with_next-i18next.md +1 -0
- package/docs/fr/intlayer_with_next-intl.md +1 -0
- package/docs/fr/intlayer_with_tanstack.md +1 -12
- package/docs/fr/plugins/sync-json.md +27 -2
- package/docs/hi/cli/index.md +5 -0
- package/docs/hi/cli/login.md +181 -0
- package/docs/hi/configuration.md +12 -0
- package/docs/hi/dictionary/content_file.md +24 -1
- package/docs/hi/intlayer_with_astro.md +1 -1
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_nestjs.md +1 -1
- package/docs/hi/intlayer_with_next-i18next.md +1 -0
- package/docs/hi/intlayer_with_next-intl.md +1 -0
- package/docs/hi/intlayer_with_tanstack.md +1 -12
- package/docs/hi/plugins/sync-json.md +27 -2
- package/docs/id/cli/index.md +5 -0
- package/docs/id/cli/login.md +157 -0
- package/docs/id/configuration.md +12 -0
- package/docs/id/dictionary/content_file.md +24 -1
- package/docs/id/intlayer_with_astro.md +1 -1
- package/docs/id/intlayer_with_express.md +1 -1
- package/docs/id/intlayer_with_nestjs.md +1 -1
- package/docs/id/intlayer_with_next-i18next.md +1 -0
- package/docs/id/intlayer_with_next-intl.md +1 -0
- package/docs/id/intlayer_with_tanstack.md +1 -12
- package/docs/id/plugins/sync-json.md +27 -2
- package/docs/it/cli/index.md +5 -0
- package/docs/it/cli/login.md +157 -0
- package/docs/it/configuration.md +12 -0
- package/docs/it/dictionary/content_file.md +24 -1
- package/docs/it/intlayer_with_astro.md +1 -1
- package/docs/it/intlayer_with_express.md +1 -1
- package/docs/it/intlayer_with_nestjs.md +1 -1
- package/docs/it/intlayer_with_next-i18next.md +1 -0
- package/docs/it/intlayer_with_next-intl.md +1 -0
- package/docs/it/intlayer_with_tanstack.md +1 -12
- package/docs/it/plugins/sync-json.md +27 -2
- package/docs/ja/cli/index.md +5 -0
- package/docs/ja/cli/login.md +159 -0
- package/docs/ja/configuration.md +12 -0
- package/docs/ja/dictionary/content_file.md +24 -1
- package/docs/ja/intlayer_with_astro.md +1 -1
- package/docs/ja/intlayer_with_express.md +1 -1
- package/docs/ja/intlayer_with_nestjs.md +1 -1
- package/docs/ja/intlayer_with_next-i18next.md +1 -0
- package/docs/ja/intlayer_with_next-intl.md +1 -0
- package/docs/ja/intlayer_with_tanstack.md +1 -12
- package/docs/ja/plugins/sync-json.md +27 -2
- package/docs/ko/cli/index.md +5 -0
- package/docs/ko/cli/login.md +188 -0
- package/docs/ko/configuration.md +12 -0
- package/docs/ko/dictionary/content_file.md +44 -1
- package/docs/ko/intlayer_with_astro.md +1 -1
- package/docs/ko/intlayer_with_express.md +1 -1
- package/docs/ko/intlayer_with_nestjs.md +1 -1
- package/docs/ko/intlayer_with_next-i18next.md +1 -0
- package/docs/ko/intlayer_with_next-intl.md +1 -0
- package/docs/ko/intlayer_with_tanstack.md +1 -12
- package/docs/ko/plugins/sync-json.md +27 -2
- package/docs/pl/cli/index.md +5 -0
- package/docs/pl/cli/login.md +187 -0
- package/docs/pl/configuration.md +12 -0
- package/docs/pl/dictionary/content_file.md +24 -1
- package/docs/pl/intlayer_with_astro.md +2 -2
- package/docs/pl/intlayer_with_express.md +1 -1
- package/docs/pl/intlayer_with_nestjs.md +1 -1
- package/docs/pl/intlayer_with_next-i18next.md +1 -0
- package/docs/pl/intlayer_with_next-intl.md +1 -0
- package/docs/pl/intlayer_with_tanstack.md +1 -12
- package/docs/pl/plugins/sync-json.md +24 -2
- package/docs/pt/cli/index.md +5 -0
- package/docs/pt/cli/login.md +186 -0
- package/docs/pt/configuration.md +12 -0
- package/docs/pt/dictionary/content_file.md +24 -1
- package/docs/pt/intlayer_with_astro.md +1 -1
- package/docs/pt/intlayer_with_express.md +1 -1
- package/docs/pt/intlayer_with_nestjs.md +1 -1
- package/docs/pt/intlayer_with_next-i18next.md +1 -0
- package/docs/pt/intlayer_with_next-intl.md +1 -0
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +570 -0
- package/docs/pt/intlayer_with_tanstack.md +1 -12
- package/docs/pt/plugins/sync-json.md +27 -2
- package/docs/ru/cli/index.md +5 -0
- package/docs/ru/cli/login.md +181 -0
- package/docs/ru/configuration.md +12 -0
- package/docs/ru/dictionary/content_file.md +44 -1
- package/docs/ru/intlayer_with_astro.md +1 -1
- package/docs/ru/intlayer_with_express.md +1 -1
- package/docs/ru/intlayer_with_nestjs.md +1 -1
- package/docs/ru/intlayer_with_next-i18next.md +1 -0
- package/docs/ru/intlayer_with_next-intl.md +1 -0
- package/docs/ru/intlayer_with_tanstack.md +1 -12
- package/docs/ru/plugins/sync-json.md +27 -2
- package/docs/tr/cli/index.md +5 -0
- package/docs/tr/cli/login.md +171 -0
- package/docs/tr/configuration.md +12 -0
- package/docs/tr/dictionary/content_file.md +44 -1
- package/docs/tr/intlayer_with_astro.md +1 -1
- package/docs/tr/intlayer_with_express.md +1 -1
- package/docs/tr/intlayer_with_next-i18next.md +1 -0
- package/docs/tr/intlayer_with_next-intl.md +1 -0
- package/docs/tr/intlayer_with_tanstack.md +1 -12
- package/docs/tr/plugins/sync-json.md +27 -2
- package/docs/vi/cli/index.md +5 -0
- package/docs/vi/cli/login.md +186 -0
- package/docs/vi/configuration.md +12 -0
- package/docs/vi/dictionary/content_file.md +24 -1
- package/docs/vi/intlayer_with_astro.md +1 -1
- package/docs/vi/intlayer_with_express.md +1 -1
- package/docs/vi/intlayer_with_nestjs.md +1 -1
- package/docs/vi/intlayer_with_next-i18next.md +1 -0
- package/docs/vi/intlayer_with_next-intl.md +1 -0
- package/docs/vi/intlayer_with_tanstack.md +1 -12
- package/docs/vi/plugins/sync-json.md +27 -2
- package/docs/zh/cli/index.md +5 -0
- package/docs/zh/cli/login.md +182 -0
- package/docs/zh/configuration.md +12 -0
- package/docs/zh/dictionary/content_file.md +44 -1
- package/docs/zh/intlayer_with_astro.md +1 -1
- package/docs/zh/intlayer_with_express.md +1 -1
- package/docs/zh/intlayer_with_nestjs.md +1 -1
- package/docs/zh/intlayer_with_next-i18next.md +1 -0
- package/docs/zh/intlayer_with_next-intl.md +1 -0
- package/docs/zh/intlayer_with_tanstack.md +1 -12
- package/docs/zh/plugins/sync-json.md +27 -2
- package/package.json +9 -9
- package/src/generated/docs.entry.ts +19 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-03-13
|
|
3
|
-
updatedAt: 2025-
|
|
3
|
+
updatedAt: 2025-12-13
|
|
4
4
|
title: Sync JSON plugin
|
|
5
5
|
description: Synchronize Intlayer dictionaries with third‑party i18n JSON files (i18next, next-intl, react-intl, vue-i18n, and more). Keep your existing i18n while using Intlayer to manage, translate, and test your messages.
|
|
6
6
|
keywords:
|
|
@@ -24,12 +24,15 @@ slugs:
|
|
|
24
24
|
- sync-json
|
|
25
25
|
youtubeVideo: https://www.youtube.com/watch?v=MpGMxniDHNg
|
|
26
26
|
history:
|
|
27
|
+
- version: 7.5.0
|
|
28
|
+
date: 2025-12-13
|
|
29
|
+
changes: Add ICU and i18next format support
|
|
27
30
|
- version: 6.1.6
|
|
28
31
|
date: 2025-10-05
|
|
29
32
|
changes: Initial Sync JSON plugin documentation
|
|
30
33
|
---
|
|
31
34
|
|
|
32
|
-
# Sync JSON (i18n bridges)
|
|
35
|
+
# Sync JSON (i18n bridges) - Sync JSON with ICU / i18next support
|
|
33
36
|
|
|
34
37
|
<iframe title="How to keep your JSON translations in sync with Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
35
38
|
|
|
@@ -95,13 +98,16 @@ const config: IntlayerConfig = {
|
|
|
95
98
|
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
96
99
|
locale: Locales.ENGLISH,
|
|
97
100
|
priority: 1, // Ensures these JSON files take precedence over files at `./locales/en/${key}.json`
|
|
101
|
+
format: "intlayer", // Format of the JSON content
|
|
98
102
|
}),
|
|
99
103
|
/**
|
|
100
104
|
* Will load, and write the output and translations back to the JSON files in the locales directory
|
|
101
105
|
*/
|
|
102
106
|
syncJSON({
|
|
107
|
+
format: "i18next",
|
|
103
108
|
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
104
109
|
priority: 0,
|
|
110
|
+
format: "i18next",
|
|
105
111
|
}),
|
|
106
112
|
],
|
|
107
113
|
};
|
|
@@ -130,6 +136,7 @@ const config: IntlayerConfig = {
|
|
|
130
136
|
syncJSON({
|
|
131
137
|
// Per-locale, per-namespace layout (e.g., next-intl, i18next with namespaces)
|
|
132
138
|
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
139
|
+
format: "icu",
|
|
133
140
|
}),
|
|
134
141
|
],
|
|
135
142
|
};
|
|
@@ -150,7 +157,9 @@ const config: IntlayerConfig = {
|
|
|
150
157
|
},
|
|
151
158
|
plugins: [
|
|
152
159
|
syncJSON({
|
|
160
|
+
format: "i18next",
|
|
153
161
|
source: ({ locale }) => `./locales/${locale}.json`,
|
|
162
|
+
format: "i18next",
|
|
154
163
|
}),
|
|
155
164
|
],
|
|
156
165
|
};
|
|
@@ -171,9 +180,27 @@ syncJSON({
|
|
|
171
180
|
source: ({ key, locale }) => string, // required
|
|
172
181
|
location?: string, // optional label, default: "plugin"
|
|
173
182
|
priority?: number, // optional priority for conflict resolution, default: 0
|
|
183
|
+
format?: 'intlayer' | 'icu' | 'i18next', // optional formatter, default: 'intlayer'
|
|
174
184
|
});
|
|
175
185
|
```
|
|
176
186
|
|
|
187
|
+
#### `format` ('intlayer' | 'icu' | 'i18next')
|
|
188
|
+
|
|
189
|
+
Specifies the formatter to use for the dictionary content when synchronizing JSON files. This allows using different message formatting syntaxes compatible with various i18n libraries.
|
|
190
|
+
|
|
191
|
+
- `'intlayer'`: The default Intlayer formatter (default).
|
|
192
|
+
- `'icu'`: Uses ICU message formatting (compatible with libraries like react-intl, vue-i18n).
|
|
193
|
+
- `'i18next'`: Uses i18next message formatting (compatible with i18next, next-i18next, Solid-i18next).
|
|
194
|
+
|
|
195
|
+
**Example:**
|
|
196
|
+
|
|
197
|
+
```ts
|
|
198
|
+
syncJSON({
|
|
199
|
+
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
200
|
+
format: "i18next", // Use i18next formatting for compatibility
|
|
201
|
+
}),
|
|
202
|
+
```
|
|
203
|
+
|
|
177
204
|
### Multiple JSON sources and priority
|
|
178
205
|
|
|
179
206
|
You can add multiple `syncJSON` plugins to synchronize different JSON sources. This is useful when you have multiple i18n libraries or different JSON structures in your project.
|
|
@@ -200,6 +227,7 @@ const config: IntlayerConfig = {
|
|
|
200
227
|
plugins: [
|
|
201
228
|
// Primary JSON source (highest priority)
|
|
202
229
|
syncJSON({
|
|
230
|
+
format: "i18next",
|
|
203
231
|
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
204
232
|
location: "main-translations",
|
|
205
233
|
priority: 10,
|
|
@@ -207,6 +235,7 @@ const config: IntlayerConfig = {
|
|
|
207
235
|
|
|
208
236
|
// Fallback JSON source (lower priority)
|
|
209
237
|
syncJSON({
|
|
238
|
+
format: "i18next",
|
|
210
239
|
source: ({ locale }) => `./fallback-locales/${locale}.json`,
|
|
211
240
|
location: "fallback-translations",
|
|
212
241
|
priority: 5,
|
|
@@ -214,6 +243,7 @@ const config: IntlayerConfig = {
|
|
|
214
243
|
|
|
215
244
|
// Legacy JSON source (lowest priority)
|
|
216
245
|
syncJSON({
|
|
246
|
+
format: "i18next",
|
|
217
247
|
source: ({ locale }) => `/my/other/app/legacy/${locale}/messages.json`,
|
|
218
248
|
location: "legacy-translations",
|
|
219
249
|
priority: 1,
|
|
@@ -300,9 +330,30 @@ loadJSON({
|
|
|
300
330
|
|
|
301
331
|
// Priority used for conflict resolution against other sources
|
|
302
332
|
priority?: number, // default: 0
|
|
333
|
+
|
|
334
|
+
// Optional formatter for the JSON content
|
|
335
|
+
format?: 'intlayer' | 'icu' | 'i18next', // default: 'intlayer'
|
|
303
336
|
});
|
|
304
337
|
```
|
|
305
338
|
|
|
339
|
+
#### `format` ('intlayer' | 'icu' | 'i18next')
|
|
340
|
+
|
|
341
|
+
Specifies the formatter to use for the dictionary content when loading JSON files. This allows using different message formatting syntaxes compatible with various i18n libraries.
|
|
342
|
+
|
|
343
|
+
- `'intlayer'`: The default Intlayer formatter (default).
|
|
344
|
+
- `'icu'`: Uses ICU message formatting (compatible with libraries like react-intl, vue-i18n).
|
|
345
|
+
- `'i18next'`: Uses i18next message formatting (compatible with i18next, next-i18next, Solid-i18next).
|
|
346
|
+
|
|
347
|
+
**Example:**
|
|
348
|
+
|
|
349
|
+
```ts
|
|
350
|
+
loadJSON({
|
|
351
|
+
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
352
|
+
locale: Locales.ENGLISH,
|
|
353
|
+
format: "icu", // Use ICU formatting for compatibility
|
|
354
|
+
}),
|
|
355
|
+
```
|
|
356
|
+
|
|
306
357
|
### Behavior and conventions
|
|
307
358
|
|
|
308
359
|
- If your `source` mask includes a locale placeholder, only files for the selected `locale` are ingested.
|
package/docs/en-GB/cli/index.md
CHANGED
|
@@ -103,6 +103,10 @@ To see how to configure available locales, or other parameters, refer to the [co
|
|
|
103
103
|
|
|
104
104
|
## Run intlayer commands
|
|
105
105
|
|
|
106
|
+
### Authentication
|
|
107
|
+
|
|
108
|
+
- **[Login](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/login.md)** - Authenticate with the Intlayer CMS and get access credentials
|
|
109
|
+
|
|
106
110
|
### Core Commands
|
|
107
111
|
|
|
108
112
|
- **[Build Dictionaries](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/build.md)** - Build your dictionaries from content declaration files
|
|
@@ -144,6 +148,7 @@ To see how to configure available locales, or other parameters, refer to the [co
|
|
|
144
148
|
|
|
145
149
|
```json fileName="package.json"
|
|
146
150
|
"scripts": {
|
|
151
|
+
"intlayer:login": "npx intlayer login",
|
|
147
152
|
"intlayer:build": "npx intlayer build",
|
|
148
153
|
"intlayer:watch": "npx intlayer build --watch",
|
|
149
154
|
"intlayer:push": "npx intlayer push",
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-12-16
|
|
3
|
+
updatedAt: 2025-12-16
|
|
4
|
+
title: CLI - Login
|
|
5
|
+
description: Learn how to use the Intlayer CLI login command to authenticate with the Intlayer CMS and obtain access credentials.
|
|
6
|
+
keywords:
|
|
7
|
+
- CLI
|
|
8
|
+
- Login
|
|
9
|
+
- Authentication
|
|
10
|
+
- CMS
|
|
11
|
+
- Intlayer
|
|
12
|
+
- Credentials
|
|
13
|
+
slugs:
|
|
14
|
+
- doc
|
|
15
|
+
- concept
|
|
16
|
+
- cli
|
|
17
|
+
- login
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Intlayer CLI Login Command
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Description
|
|
25
|
+
|
|
26
|
+
The `login` command of the Intlayer CLI allows you to authenticate with the Intlayer CMS. This command automatically opens your default browser to complete the authentication process and receive the necessary credentials (Client ID and Client Secret) to use Intlayer services.
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npx intlayer login [options]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
or
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
intlayer login [options]
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Options
|
|
41
|
+
|
|
42
|
+
### `--cms-url <url>`
|
|
43
|
+
|
|
44
|
+
Specify the URL of the Intlayer CMS to connect to for authentication.
|
|
45
|
+
|
|
46
|
+
- **Type**: `string`
|
|
47
|
+
- **Default**: The value configured in `intlayer.config.*` or `https://intlayer.org`
|
|
48
|
+
- **Example**:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npx intlayer login --cms-url https://intlayer.org
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Configuration Options
|
|
55
|
+
|
|
56
|
+
You can also use common configuration options:
|
|
57
|
+
|
|
58
|
+
- `--env-file <path>`: Path to the environment file
|
|
59
|
+
- `-e, --env <env>`: Execution environment
|
|
60
|
+
- `--base-dir <dir>`: Base directory of the project
|
|
61
|
+
- `--verbose`: Enable detailed output (default: true)
|
|
62
|
+
- `--prefix <prefix>`: Prefix for logs
|
|
63
|
+
|
|
64
|
+
## How It Works
|
|
65
|
+
|
|
66
|
+
1. **Local server start**: The command starts a local HTTP server on a random port to receive credentials from the CMS
|
|
67
|
+
|
|
68
|
+
Specify the URL of the Intlayer CMS to connect to for authentication.
|
|
69
|
+
|
|
70
|
+
- **Type**: `string`
|
|
71
|
+
- **Default**: The value configured in `intlayer.config.*` or `https://intlayer.org`
|
|
72
|
+
- **Example**:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npx intlayer login --cms-url https://intlayer.org
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Configuration Options
|
|
79
|
+
|
|
80
|
+
You can also use common configuration options:
|
|
81
|
+
|
|
82
|
+
- `--env-file <path>`: Path to the environment file
|
|
83
|
+
- `-e, --env <env>`: Execution environment
|
|
84
|
+
- `--base-dir <dir>`: Base directory of the project
|
|
85
|
+
- `--verbose`: Enable verbose output (default: true)
|
|
86
|
+
- `--prefix <prefix>`: Prefix for logs
|
|
87
|
+
|
|
88
|
+
## How It Works
|
|
89
|
+
|
|
90
|
+
1. **Local Server Start**: The command starts a local HTTP server on a random port to receive credentials from the CMS.
|
|
91
|
+
2. **Browser opening**: The command automatically opens your default browser to the CMS login URL
|
|
92
|
+
3. **Authentication**: Complete the authentication in the browser using your Intlayer account
|
|
93
|
+
4. **Credentials reception**: The local server receives the Client ID and Client Secret from the CMS
|
|
94
|
+
5. **Instructions**: The command displays instructions for configuring credentials in your project
|
|
95
|
+
|
|
96
|
+
## Output
|
|
97
|
+
|
|
98
|
+
After a successful login, the command will display:
|
|
99
|
+
|
|
100
|
+
1. **The received credentials** (Client ID and Client Secret)
|
|
101
|
+
2. **Instructions for the `.env` file**:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
INTLAYER_CLIENT_ID=your_client_id
|
|
105
|
+
INTLAYER_CLIENT_SECRET=your_client_secret
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
3. **Instructions for the Intlayer configuration file**:
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
{
|
|
112
|
+
editor: {
|
|
113
|
+
cmsURL: 'https://intlayer.org',
|
|
114
|
+
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
115
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
116
|
+
},
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Manual Configuration
|
|
121
|
+
|
|
122
|
+
If the browser does not open automatically, you can manually visit the URL displayed in the terminal.
|
|
123
|
+
|
|
124
|
+
## Examples
|
|
125
|
+
|
|
126
|
+
### Login with Custom CMS URL
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
npx intlayer login --cms-url https://custom-cms.example.com
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Login with Specific Environment File
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
npx intlayer login --env-file .env.production
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Login in Verbose Mode
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
npx intlayer login --verbose
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Troubleshooting
|
|
145
|
+
|
|
146
|
+
### Browser Doesn't Open
|
|
147
|
+
|
|
148
|
+
If the browser does not open automatically, copy the URL displayed in the terminal and open it manually in your browser.
|
|
149
|
+
|
|
150
|
+
### Connection Issues
|
|
151
|
+
|
|
152
|
+
If you encounter connection issues, verify:
|
|
153
|
+
|
|
154
|
+
1. That the CMS URL is correct
|
|
155
|
+
2. That your internet connection is working correctly
|
|
156
|
+
3. That no firewalls are blocking the connection
|
|
157
|
+
|
|
158
|
+
### Credentials Not Received
|
|
159
|
+
|
|
160
|
+
If credentials are not received:
|
|
161
|
+
|
|
162
|
+
1. Ensure you have completed the authentication process in the browser
|
|
163
|
+
2. Verify that the local port is not blocked
|
|
164
|
+
3. Try the command again
|
|
165
|
+
|
|
166
|
+
## Next Steps
|
|
167
|
+
|
|
168
|
+
After completing the login:
|
|
169
|
+
|
|
170
|
+
1. Add the credentials to your `.env` file
|
|
171
|
+
2. Configure your `intlayer.config.*` file with the credentials
|
|
172
|
+
3. Use CLI commands to manage your dictionaries:
|
|
173
|
+
- [`npx intlayer push`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/push.md) - Push dictionaries to the CMS
|
|
174
|
+
- [`npx intlayer pull`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/pull.md) - Pull dictionaries from the CMS
|
|
175
|
+
- [`npx intlayer fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/fill.md) - Fill in missing translations
|
|
176
|
+
|
|
177
|
+
## See Also
|
|
178
|
+
|
|
179
|
+
- [CLI Documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/index.md)
|
|
180
|
+
- [Intlayer Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/configuration.md)
|
|
181
|
+
- [Intlayer CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md)
|
|
@@ -14,6 +14,9 @@ slugs:
|
|
|
14
14
|
- concept
|
|
15
15
|
- configuration
|
|
16
16
|
history:
|
|
17
|
+
- version: 7.5.0
|
|
18
|
+
date: 2025-12-17
|
|
19
|
+
changes: Add `buildMode` option
|
|
17
20
|
- version: 6.0.0
|
|
18
21
|
date: 2025-09-16
|
|
19
22
|
changes: Add `live` import mode
|
|
@@ -528,6 +531,15 @@ Build options apply to the `@intlayer/babel` and `@intlayer/swc` plugins.
|
|
|
528
531
|
|
|
529
532
|
#### Properties
|
|
530
533
|
|
|
534
|
+
- **mode**:
|
|
535
|
+
- _Type_: `'auto' | 'manual'`
|
|
536
|
+
- _Default_: `'auto'`
|
|
537
|
+
- _Description_: Controls the mode of the build.
|
|
538
|
+
- _Example_: `'manual'`
|
|
539
|
+
- _Note_: If 'auto', the build will be enabled automatically when the application is built.
|
|
540
|
+
- _Note_: If 'manual', the build will be set only when the build command is executed.
|
|
541
|
+
- _Note_: Can be used to disable dictionaries build, for instance when execution on Node.js environment should be avoided.
|
|
542
|
+
|
|
531
543
|
- **optimize**:
|
|
532
544
|
- _Type_: `boolean`
|
|
533
545
|
- _Default_: `process.env.NODE_ENV === 'production'`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-02-07
|
|
3
|
-
updatedAt: 2025-
|
|
3
|
+
updatedAt: 2025-12-13
|
|
4
4
|
title: Content File
|
|
5
5
|
description: Learn how to customise the extensions for your content declaration files. Follow this documentation to implement conditions efficiently in your project.
|
|
6
6
|
keywords:
|
|
@@ -12,6 +12,9 @@ slugs:
|
|
|
12
12
|
- concept
|
|
13
13
|
- content
|
|
14
14
|
history:
|
|
15
|
+
- version: 7.5.0
|
|
16
|
+
date: 2025-12-13
|
|
17
|
+
changes: Add ICU and i18next format support
|
|
15
18
|
- version: 6.0.0
|
|
16
19
|
date: 2025-09-20
|
|
17
20
|
changes: Add fields documentation
|
|
@@ -384,6 +387,26 @@ Array of strings for categorising and organising dictionaries. Tags provide addi
|
|
|
384
387
|
}
|
|
385
388
|
```
|
|
386
389
|
|
|
390
|
+
#### `format` ('intlayer' | 'icu' | 'i18next')
|
|
391
|
+
|
|
392
|
+
Specifies the formatter to use for the dictionary content. This allows using different message formatting syntaxes.
|
|
393
|
+
|
|
394
|
+
- `'intlayer'`: The default Intlayer formatter.
|
|
395
|
+
- `'icu'`: Uses ICU message formatting.
|
|
396
|
+
- `'i18next'`: Uses i18next message formatting.
|
|
397
|
+
|
|
398
|
+
**Example:**
|
|
399
|
+
|
|
400
|
+
```typescript
|
|
401
|
+
{
|
|
402
|
+
key: "my-dictionary",
|
|
403
|
+
format: "icu",
|
|
404
|
+
content: {
|
|
405
|
+
message: "Hello {name}, you have {count, plural, one {# message} other {# messages}}"
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
```
|
|
409
|
+
|
|
387
410
|
#### `locale` (LocalesValues)
|
|
388
411
|
|
|
389
412
|
Transforms the dictionary into a per-locale dictionary where each field declared in the content will be automatically transformed into a translation node. When this property is set:
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
createdAt: 2024-03-07
|
|
3
3
|
updatedAt: 2025-10-03
|
|
4
4
|
title: How to translate your Astro app – i18n guide 2025
|
|
5
|
-
description: Learn how to add internationalisation (i18n) to your
|
|
5
|
+
description: Learn how to add internationalisation (i18n) to your Astro website using Intlayer. Follow this guide to make your site multilingual.
|
|
6
6
|
keywords:
|
|
7
7
|
- Internationalisation
|
|
8
8
|
- Documentation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
createdAt: 2024-08-11
|
|
3
3
|
updatedAt: 2025-06-29
|
|
4
4
|
title: How to translate your Express backend – i18n guide 2025
|
|
5
|
-
description: Discover how to make your
|
|
5
|
+
description: Discover how to make your Express backend multilingual. Follow the documentation to internationalize (i18n) and translate it.
|
|
6
6
|
keywords:
|
|
7
7
|
- Internationalization
|
|
8
8
|
- Documentation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
createdAt: 2025-09-09
|
|
3
3
|
updatedAt: 2025-09-09
|
|
4
4
|
title: How to translate your Nest backend – i18n guide 2025
|
|
5
|
-
description: Discover how to make your
|
|
5
|
+
description: Discover how to make your NestJS backend multilingual. Follow the documentation to internationalise (i18n) and translate it.
|
|
6
6
|
keywords:
|
|
7
7
|
- Internationalisation
|
|
8
8
|
- Documentation
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-09-09
|
|
3
|
-
updatedAt: 2025-
|
|
3
|
+
updatedAt: 2025-12-11
|
|
4
4
|
title: How to translate your Tanstack Start app – i18n guide 2025
|
|
5
5
|
description: Learn how to add internationalisation (i18n) to your Tanstack Start application using Intlayer. Follow this comprehensive guide to make your app multilingual with locale-aware routing.
|
|
6
6
|
keywords:
|
|
@@ -636,17 +636,6 @@ export function NotFoundComponent() {
|
|
|
636
636
|
}
|
|
637
637
|
```
|
|
638
638
|
|
|
639
|
-
```tsx fileName="src/routes/__root.tsx"
|
|
640
|
-
import { createRootRoute } from "@tanstack/react-router";
|
|
641
|
-
|
|
642
|
-
// The root route serves as the top-level layout
|
|
643
|
-
// It doesn't handle 404s directly - that's delegated to child routes
|
|
644
|
-
// This keeps the root simple and lets locale-aware routes manage their own 404 logic
|
|
645
|
-
export const Route = createRootRoute({
|
|
646
|
-
component: Outlet,
|
|
647
|
-
});
|
|
648
|
-
```
|
|
649
|
-
|
|
650
639
|
```tsx fileName="src/routes/{-$locale}/route.tsx"
|
|
651
640
|
import { createFileRoute, Outlet, redirect } from "@tanstack/react-router";
|
|
652
641
|
import { validatePrefix } from "intlayer";
|
|
@@ -24,12 +24,15 @@ slugs:
|
|
|
24
24
|
- sync-json
|
|
25
25
|
youtubeVideo: https://www.youtube.com/watch?v=MpGMxniDHNg
|
|
26
26
|
history:
|
|
27
|
+
- version: 7.5.0
|
|
28
|
+
date: 2025-12-13
|
|
29
|
+
changes: Add ICU and i18next format support
|
|
27
30
|
- version: 6.1.6
|
|
28
31
|
date: 2025-10-05
|
|
29
32
|
changes: Initial Sync JSON plugin documentation
|
|
30
33
|
---
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
# Sync JSON (i18n bridges) - Sync JSON with ICU / i18next support
|
|
33
36
|
|
|
34
37
|
<iframe title="How to keep your JSON translations in sync with Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
35
38
|
|
|
@@ -105,9 +108,27 @@ syncJSON({
|
|
|
105
108
|
source: ({ key, locale }) => string, // required
|
|
106
109
|
location?: string, // optional label, default: "plugin"
|
|
107
110
|
priority?: number, // optional priority for conflict resolution, default: 0
|
|
111
|
+
format?: 'intlayer' | 'icu' | 'i18next', // optional formatter, default: 'intlayer'
|
|
108
112
|
});
|
|
109
113
|
```
|
|
110
114
|
|
|
115
|
+
#### `format` ('intlayer' | 'icu' | 'i18next')
|
|
116
|
+
|
|
117
|
+
Specifies the formatter to use for the dictionary content when synchronising JSON files. This allows using different message formatting syntaxes compatible with various i18n libraries.
|
|
118
|
+
|
|
119
|
+
- `'intlayer'`: The default Intlayer formatter (default).
|
|
120
|
+
- `'icu'`: Uses ICU message formatting (compatible with libraries like react-intl, vue-i18n).
|
|
121
|
+
- `'i18next'`: Uses i18next message formatting (compatible with i18next, next-i18next, Solid-i18next).
|
|
122
|
+
|
|
123
|
+
**Example:**
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
syncJSON({
|
|
127
|
+
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
128
|
+
format: "i18next", // Use i18next formatting for compatibility
|
|
129
|
+
}),
|
|
130
|
+
```
|
|
131
|
+
|
|
111
132
|
## Multiple JSON sources and priority
|
|
112
133
|
|
|
113
134
|
You can add multiple `syncJSON` plugins to synchronise different JSON sources. This is useful when you have multiple i18n libraries or different JSON structures in your project.
|
|
@@ -134,6 +155,7 @@ export default defineConfig({
|
|
|
134
155
|
plugins: [
|
|
135
156
|
// Primary JSON source (highest priority)
|
|
136
157
|
syncJSON({
|
|
158
|
+
format: "i18next",
|
|
137
159
|
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
138
160
|
location: "main-translations",
|
|
139
161
|
priority: 10,
|
|
@@ -141,6 +163,7 @@ export default defineConfig({
|
|
|
141
163
|
|
|
142
164
|
// Fallback JSON source (lower priority)
|
|
143
165
|
syncJSON({
|
|
166
|
+
format: "i18next",
|
|
144
167
|
source: ({ locale }) => `./fallback-locales/${locale}.json`,
|
|
145
168
|
location: "fallback-translations",
|
|
146
169
|
priority: 5,
|
|
@@ -148,6 +171,7 @@ export default defineConfig({
|
|
|
148
171
|
|
|
149
172
|
// Legacy JSON source (lowest priority)
|
|
150
173
|
syncJSON({
|
|
174
|
+
format: "i18next",
|
|
151
175
|
source: ({ locale }) => `/my/other/app/legacy/${locale}/messages.json`,
|
|
152
176
|
location: "legacy-translations",
|
|
153
177
|
priority: 1,
|
|
@@ -178,6 +202,7 @@ import { syncJSON } from "@intlayer/sync-json-plugin";
|
|
|
178
202
|
export default {
|
|
179
203
|
plugins: [
|
|
180
204
|
syncJSON({
|
|
205
|
+
format: "i18next",
|
|
181
206
|
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
182
207
|
}),
|
|
183
208
|
],
|
package/docs/es/cli/index.md
CHANGED
|
@@ -103,6 +103,10 @@ Para ver cómo configurar los locales disponibles u otros parámetros, consulta
|
|
|
103
103
|
|
|
104
104
|
## Ejecutar comandos de intlayer
|
|
105
105
|
|
|
106
|
+
### Autenticación
|
|
107
|
+
|
|
108
|
+
- **[Iniciar sesión](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/login.md)** - Autenticarse con el CMS de Intlayer y obtener credenciales de acceso
|
|
109
|
+
|
|
106
110
|
### Comandos principales
|
|
107
111
|
|
|
108
112
|
- **[Construir Diccionarios](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/build.md)** - Construye tus diccionarios a partir de archivos de declaración de contenido
|
|
@@ -144,6 +148,7 @@ Para ver cómo configurar los locales disponibles u otros parámetros, consulta
|
|
|
144
148
|
|
|
145
149
|
```json fileName="package.json"
|
|
146
150
|
"scripts": {
|
|
151
|
+
"intlayer:login": "npx intlayer login",
|
|
147
152
|
"intlayer:build": "npx intlayer build",
|
|
148
153
|
"intlayer:watch": "npx intlayer build --watch",
|
|
149
154
|
"intlayer:push": "npx intlayer push",
|