@intlayer/docs 8.12.5-canary.0 → 9.0.0-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/generated/docs.entry.cjs +320 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +320 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +16 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/cli/doc-review.md +110 -4
- package/docs/ar/cli/index.md +1 -1
- package/docs/ar/cli/scan.md +1 -1
- package/docs/ar/configuration.md +36 -3
- package/docs/ar/dictionary/condition.md +167 -5
- package/docs/ar/dictionary/enumeration.md +540 -6
- package/docs/ar/dictionary/file.md +151 -1
- package/docs/ar/dictionary/gender.md +168 -7
- package/docs/ar/dictionary/nesting.md +173 -65
- package/docs/ar/dictionary/plurial.md +174 -5
- package/docs/ar/dictionary/translation.md +156 -2
- package/docs/ar/dynamic_dictionaries/collections.md +1 -1
- package/docs/ar/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/ar/dynamic_dictionaries/index.md +1 -1
- package/docs/ar/dynamic_dictionaries/variants.md +1 -1
- package/docs/ar/intlayer_with_vite+react.md +31 -31
- package/docs/ar/releases/v8.md +187 -1
- package/docs/ar/releases/v9.md +232 -0
- package/docs/bn/cli/index.md +1 -1
- package/docs/bn/cli/scan.md +1 -1
- package/docs/bn/configuration.md +36 -3
- package/docs/cs/cli/index.md +1 -1
- package/docs/cs/cli/scan.md +1 -1
- package/docs/cs/configuration.md +35 -2
- package/docs/de/cli/doc-review.md +110 -4
- package/docs/de/cli/index.md +1 -1
- package/docs/de/cli/scan.md +1 -1
- package/docs/de/configuration.md +35 -2
- package/docs/de/dictionary/condition.md +167 -5
- package/docs/de/dictionary/enumeration.md +777 -7
- package/docs/de/dictionary/file.md +151 -1
- package/docs/de/dictionary/gender.md +168 -7
- package/docs/de/dictionary/nesting.md +173 -65
- package/docs/de/dictionary/plurial.md +347 -7
- package/docs/de/dictionary/translation.md +156 -2
- package/docs/de/dynamic_dictionaries/collections.md +1 -1
- package/docs/de/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/de/dynamic_dictionaries/index.md +1 -1
- package/docs/de/dynamic_dictionaries/variants.md +1 -1
- package/docs/de/intlayer_with_vite+react.md +48 -48
- package/docs/de/migration_from_i18next_to_intlayer.md +1 -1
- package/docs/de/migration_from_next-i18next_to_intlayer.md +1 -1
- package/docs/de/migration_from_next-intl_to_intlayer.md +1 -1
- package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
- package/docs/de/migration_from_react-i18next_to_intlayer.md +1 -1
- package/docs/de/migration_from_vue-i18n_to_intlayer.md +1 -1
- package/docs/de/releases/v8.md +197 -1
- package/docs/de/releases/v9.md +232 -0
- package/docs/en/CI_CD.md +7 -7
- package/docs/en/cli/ci.md +62 -8
- package/docs/en/cli/doc-review.md +110 -4
- package/docs/en/cli/index.md +1 -1
- package/docs/en/cli/scan.md +1 -1
- package/docs/en/compat/i18n-js.md +44 -0
- package/docs/en/compat/i18next.md +59 -0
- package/docs/en/compat/index.md +51 -0
- package/docs/en/compat/lingui.md +44 -0
- package/docs/en/compat/next-i18next.md +57 -0
- package/docs/en/compat/next-intl.md +59 -0
- package/docs/en/compat/next-translate.md +45 -0
- package/docs/en/compat/ngx-translate.md +45 -0
- package/docs/en/compat/nuxtjs-i18n.md +46 -0
- package/docs/en/compat/polyglot.md +45 -0
- package/docs/en/compat/react-i18next.md +58 -0
- package/docs/en/compat/react-intl.md +55 -0
- package/docs/en/compat/svelte-i18n.md +47 -0
- package/docs/en/compat/transloco.md +45 -0
- package/docs/en/compat/vue-i18n.md +58 -0
- package/docs/en/configuration.md +35 -2
- package/docs/en/dictionary/condition.md +163 -1
- package/docs/en/dictionary/enumeration.md +309 -7
- package/docs/en/dictionary/file.md +151 -1
- package/docs/en/dictionary/gender.md +162 -1
- package/docs/en/dictionary/nesting.md +173 -9
- package/docs/en/dictionary/plurial.md +155 -10
- package/docs/en/dictionary/translation.md +145 -52
- package/docs/en/dynamic_dictionaries/collections.md +1 -1
- package/docs/en/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/en/dynamic_dictionaries/index.md +1 -1
- package/docs/en/dynamic_dictionaries/variants.md +1 -1
- package/docs/en/migration_from_i18next_to_intlayer.md +1 -1
- package/docs/en/migration_from_next-i18next_to_intlayer.md +1 -1
- package/docs/en/migration_from_next-intl_to_intlayer.md +1 -1
- package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
- package/docs/en/migration_from_react-i18next_to_intlayer.md +1 -1
- package/docs/en/migration_from_vue-i18n_to_intlayer.md +1 -1
- package/docs/en/releases/v8.md +187 -1
- package/docs/en/releases/v9.md +220 -0
- package/docs/en-GB/cli/doc-review.md +110 -4
- package/docs/en-GB/cli/index.md +1 -1
- package/docs/en-GB/cli/scan.md +1 -1
- package/docs/en-GB/configuration.md +35 -2
- package/docs/en-GB/dictionary/condition.md +364 -1
- package/docs/en-GB/dictionary/enumeration.md +577 -5
- package/docs/en-GB/dictionary/file.md +317 -1
- package/docs/en-GB/dictionary/gender.md +375 -2
- package/docs/en-GB/dictionary/nesting.md +368 -71
- package/docs/en-GB/dictionary/plurial.md +347 -7
- package/docs/en-GB/dictionary/translation.md +320 -32
- package/docs/en-GB/dynamic_dictionaries/collections.md +1 -1
- package/docs/en-GB/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/en-GB/dynamic_dictionaries/index.md +1 -1
- package/docs/en-GB/dynamic_dictionaries/variants.md +1 -1
- package/docs/en-GB/releases/v8.md +1 -1
- package/docs/en-GB/releases/v9.md +220 -0
- package/docs/es/cli/doc-review.md +110 -4
- package/docs/es/cli/index.md +1 -1
- package/docs/es/cli/scan.md +1 -1
- package/docs/es/configuration.md +36 -3
- package/docs/es/dictionary/condition.md +167 -5
- package/docs/es/dictionary/enumeration.md +537 -12
- package/docs/es/dictionary/file.md +151 -1
- package/docs/es/dictionary/gender.md +168 -7
- package/docs/es/dictionary/nesting.md +173 -65
- package/docs/es/dictionary/plurial.md +347 -7
- package/docs/es/dictionary/translation.md +156 -2
- package/docs/es/dynamic_dictionaries/collections.md +1 -1
- package/docs/es/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/es/dynamic_dictionaries/index.md +1 -1
- package/docs/es/dynamic_dictionaries/variants.md +1 -1
- package/docs/es/migration_from_i18next_to_intlayer.md +1 -1
- package/docs/es/migration_from_next-i18next_to_intlayer.md +1 -1
- package/docs/es/migration_from_next-intl_to_intlayer.md +1 -1
- package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
- package/docs/es/migration_from_react-i18next_to_intlayer.md +1 -1
- package/docs/es/migration_from_vue-i18n_to_intlayer.md +1 -1
- package/docs/es/releases/v8.md +187 -1
- package/docs/es/releases/v9.md +228 -0
- package/docs/fr/cli/doc-review.md +110 -4
- package/docs/fr/cli/index.md +1 -1
- package/docs/fr/cli/scan.md +1 -1
- package/docs/fr/configuration.md +49 -16
- package/docs/fr/dictionary/condition.md +369 -6
- package/docs/fr/dictionary/enumeration.md +540 -6
- package/docs/fr/dictionary/file.md +151 -1
- package/docs/fr/dictionary/gender.md +168 -7
- package/docs/fr/dictionary/nesting.md +357 -86
- package/docs/fr/dictionary/plurial.md +174 -5
- package/docs/fr/dictionary/translation.md +156 -2
- package/docs/fr/dynamic_dictionaries/collections.md +1 -1
- package/docs/fr/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/fr/dynamic_dictionaries/index.md +1 -1
- package/docs/fr/dynamic_dictionaries/variants.md +1 -1
- package/docs/fr/migration_from_i18next_to_intlayer.md +1 -1
- package/docs/fr/migration_from_next-i18next_to_intlayer.md +1 -1
- package/docs/fr/migration_from_next-intl_to_intlayer.md +1 -1
- package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
- package/docs/fr/migration_from_react-i18next_to_intlayer.md +1 -1
- package/docs/fr/migration_from_vue-i18n_to_intlayer.md +1 -1
- package/docs/fr/releases/v8.md +187 -1
- package/docs/fr/releases/v9.md +220 -0
- package/docs/hi/cli/doc-review.md +110 -4
- package/docs/hi/cli/index.md +1 -1
- package/docs/hi/cli/scan.md +1 -1
- package/docs/hi/configuration.md +49 -16
- package/docs/hi/dictionary/condition.md +167 -5
- package/docs/hi/dictionary/enumeration.md +540 -6
- package/docs/hi/dictionary/file.md +151 -1
- package/docs/hi/dictionary/gender.md +168 -7
- package/docs/hi/dictionary/nesting.md +173 -65
- package/docs/hi/dictionary/plurial.md +174 -5
- package/docs/hi/dictionary/translation.md +155 -5
- package/docs/hi/dynamic_dictionaries/collections.md +1 -1
- package/docs/hi/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/hi/dynamic_dictionaries/index.md +1 -1
- package/docs/hi/dynamic_dictionaries/variants.md +1 -1
- package/docs/hi/releases/v8.md +188 -2
- package/docs/hi/releases/v9.md +232 -0
- package/docs/id/cli/doc-review.md +110 -4
- package/docs/id/cli/index.md +1 -1
- package/docs/id/cli/scan.md +1 -1
- package/docs/id/configuration.md +35 -2
- package/docs/id/dictionary/condition.md +167 -5
- package/docs/id/dictionary/enumeration.md +540 -6
- package/docs/id/dictionary/file.md +318 -2
- package/docs/id/dictionary/gender.md +381 -8
- package/docs/id/dictionary/nesting.md +357 -86
- package/docs/id/dictionary/plurial.md +174 -5
- package/docs/id/dictionary/translation.md +156 -2
- package/docs/id/dynamic_dictionaries/collections.md +1 -1
- package/docs/id/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/id/dynamic_dictionaries/index.md +1 -1
- package/docs/id/dynamic_dictionaries/variants.md +1 -1
- package/docs/id/releases/v8.md +191 -2
- package/docs/id/releases/v9.md +232 -0
- package/docs/it/cli/doc-review.md +110 -4
- package/docs/it/cli/index.md +1 -1
- package/docs/it/cli/scan.md +1 -1
- package/docs/it/configuration.md +49 -16
- package/docs/it/dictionary/condition.md +167 -5
- package/docs/it/dictionary/enumeration.md +540 -6
- package/docs/it/dictionary/file.md +318 -2
- package/docs/it/dictionary/gender.md +168 -7
- package/docs/it/dictionary/nesting.md +173 -65
- package/docs/it/dictionary/plurial.md +347 -7
- package/docs/it/dictionary/translation.md +156 -2
- package/docs/it/dynamic_dictionaries/collections.md +1 -1
- package/docs/it/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/it/dynamic_dictionaries/index.md +1 -1
- package/docs/it/dynamic_dictionaries/variants.md +1 -1
- package/docs/it/intlayer_with_vite+react.md +0 -48
- package/docs/it/migration_from_i18next_to_intlayer.md +1 -1
- package/docs/it/migration_from_next-i18next_to_intlayer.md +1 -1
- package/docs/it/migration_from_next-intl_to_intlayer.md +1 -1
- package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
- package/docs/it/migration_from_react-i18next_to_intlayer.md +1 -1
- package/docs/it/migration_from_vue-i18n_to_intlayer.md +1 -1
- package/docs/it/releases/v8.md +200 -2
- package/docs/it/releases/v9.md +232 -0
- package/docs/ja/cli/doc-review.md +110 -4
- package/docs/ja/cli/index.md +1 -1
- package/docs/ja/cli/scan.md +1 -1
- package/docs/ja/configuration.md +50 -17
- package/docs/ja/dictionary/condition.md +167 -5
- package/docs/ja/dictionary/enumeration.md +540 -6
- package/docs/ja/dictionary/file.md +151 -1
- package/docs/ja/dictionary/gender.md +168 -7
- package/docs/ja/dictionary/nesting.md +173 -65
- package/docs/ja/dictionary/plurial.md +174 -5
- package/docs/ja/dictionary/translation.md +169 -8
- package/docs/ja/dynamic_dictionaries/collections.md +1 -1
- package/docs/ja/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/ja/dynamic_dictionaries/index.md +1 -1
- package/docs/ja/dynamic_dictionaries/variants.md +1 -1
- package/docs/ja/intlayer_with_vite+react.md +290 -0
- package/docs/ja/migration_from_i18next_to_intlayer.md +1 -1
- package/docs/ja/migration_from_next-i18next_to_intlayer.md +1 -1
- package/docs/ja/migration_from_next-intl_to_intlayer.md +1 -1
- package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
- package/docs/ja/migration_from_react-i18next_to_intlayer.md +1 -1
- package/docs/ja/migration_from_vue-i18n_to_intlayer.md +1 -1
- package/docs/ja/releases/v8.md +193 -4
- package/docs/ja/releases/v9.md +232 -0
- package/docs/ko/cli/doc-review.md +110 -4
- package/docs/ko/cli/index.md +1 -1
- package/docs/ko/cli/scan.md +1 -1
- package/docs/ko/configuration.md +49 -16
- package/docs/ko/dictionary/condition.md +167 -5
- package/docs/ko/dictionary/enumeration.md +540 -6
- package/docs/ko/dictionary/file.md +151 -1
- package/docs/ko/dictionary/gender.md +168 -7
- package/docs/ko/dictionary/nesting.md +173 -65
- package/docs/ko/dictionary/plurial.md +174 -5
- package/docs/ko/dictionary/translation.md +169 -8
- package/docs/ko/dynamic_dictionaries/collections.md +1 -1
- package/docs/ko/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/ko/dynamic_dictionaries/index.md +1 -1
- package/docs/ko/dynamic_dictionaries/variants.md +1 -1
- package/docs/ko/intlayer_with_vite+react.md +48 -490
- package/docs/ko/migration_from_i18next_to_intlayer.md +1 -1
- package/docs/ko/migration_from_next-i18next_to_intlayer.md +1 -1
- package/docs/ko/migration_from_next-intl_to_intlayer.md +1 -1
- package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
- package/docs/ko/migration_from_react-i18next_to_intlayer.md +1 -1
- package/docs/ko/migration_from_vue-i18n_to_intlayer.md +1 -1
- package/docs/ko/releases/v8.md +192 -1
- package/docs/ko/releases/v9.md +232 -0
- package/docs/nl/cli/index.md +1 -1
- package/docs/nl/cli/scan.md +1 -1
- package/docs/nl/configuration.md +36 -3
- package/docs/pl/cli/doc-review.md +110 -4
- package/docs/pl/cli/index.md +1 -1
- package/docs/pl/cli/scan.md +1 -1
- package/docs/pl/configuration.md +35 -2
- package/docs/pl/dictionary/condition.md +167 -5
- package/docs/pl/dictionary/enumeration.md +540 -6
- package/docs/pl/dictionary/file.md +318 -2
- package/docs/pl/dictionary/gender.md +168 -7
- package/docs/pl/dictionary/nesting.md +173 -65
- package/docs/pl/dictionary/plurial.md +174 -5
- package/docs/pl/dictionary/translation.md +156 -2
- package/docs/pl/dynamic_dictionaries/collections.md +1 -1
- package/docs/pl/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/pl/dynamic_dictionaries/index.md +1 -1
- package/docs/pl/dynamic_dictionaries/variants.md +1 -1
- package/docs/pl/releases/v8.md +188 -2
- package/docs/pl/releases/v9.md +232 -0
- package/docs/pt/cli/doc-review.md +110 -4
- package/docs/pt/cli/index.md +1 -1
- package/docs/pt/cli/scan.md +1 -1
- package/docs/pt/configuration.md +49 -16
- package/docs/pt/dictionary/condition.md +167 -5
- package/docs/pt/dictionary/enumeration.md +540 -6
- package/docs/pt/dictionary/file.md +151 -1
- package/docs/pt/dictionary/gender.md +168 -7
- package/docs/pt/dictionary/nesting.md +173 -65
- package/docs/pt/dictionary/plurial.md +347 -7
- package/docs/pt/dictionary/translation.md +156 -2
- package/docs/pt/dynamic_dictionaries/collections.md +1 -1
- package/docs/pt/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/pt/dynamic_dictionaries/index.md +1 -1
- package/docs/pt/dynamic_dictionaries/variants.md +1 -1
- package/docs/pt/migration_from_i18next_to_intlayer.md +1 -1
- package/docs/pt/migration_from_next-i18next_to_intlayer.md +1 -1
- package/docs/pt/migration_from_next-intl_to_intlayer.md +1 -1
- package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
- package/docs/pt/migration_from_react-i18next_to_intlayer.md +1 -1
- package/docs/pt/migration_from_vue-i18n_to_intlayer.md +1 -1
- package/docs/pt/releases/v8.md +187 -1
- package/docs/pt/releases/v9.md +232 -0
- package/docs/ru/cli/doc-review.md +110 -4
- package/docs/ru/cli/index.md +1 -1
- package/docs/ru/cli/scan.md +1 -1
- package/docs/ru/configuration.md +35 -2
- package/docs/ru/dictionary/condition.md +366 -39
- package/docs/ru/dictionary/enumeration.md +777 -7
- package/docs/ru/dictionary/file.md +318 -2
- package/docs/ru/dictionary/gender.md +168 -7
- package/docs/ru/dictionary/nesting.md +368 -71
- package/docs/ru/dictionary/plurial.md +347 -7
- package/docs/ru/dictionary/translation.md +321 -33
- package/docs/ru/dynamic_dictionaries/collections.md +1 -1
- package/docs/ru/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/ru/dynamic_dictionaries/index.md +1 -1
- package/docs/ru/dynamic_dictionaries/variants.md +1 -1
- package/docs/ru/intlayer_with_vite+react.md +48 -47
- package/docs/ru/migration_from_i18next_to_intlayer.md +1 -1
- package/docs/ru/migration_from_next-i18next_to_intlayer.md +1 -1
- package/docs/ru/migration_from_next-intl_to_intlayer.md +1 -1
- package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
- package/docs/ru/migration_from_react-i18next_to_intlayer.md +1 -1
- package/docs/ru/migration_from_vue-i18n_to_intlayer.md +1 -1
- package/docs/ru/releases/v8.md +194 -2
- package/docs/ru/releases/v9.md +232 -0
- package/docs/tr/cli/doc-review.md +110 -4
- package/docs/tr/cli/index.md +1 -1
- package/docs/tr/cli/scan.md +1 -1
- package/docs/tr/configuration.md +35 -2
- package/docs/tr/dictionary/condition.md +167 -5
- package/docs/tr/dictionary/enumeration.md +540 -6
- package/docs/tr/dictionary/file.md +151 -1
- package/docs/tr/dictionary/gender.md +168 -7
- package/docs/tr/dictionary/nesting.md +173 -65
- package/docs/tr/dictionary/plurial.md +174 -5
- package/docs/tr/dictionary/translation.md +156 -2
- package/docs/tr/dynamic_dictionaries/collections.md +1 -1
- package/docs/tr/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/tr/dynamic_dictionaries/index.md +1 -1
- package/docs/tr/dynamic_dictionaries/variants.md +1 -1
- package/docs/tr/migration_from_i18next_to_intlayer.md +1 -1
- package/docs/tr/migration_from_next-i18next_to_intlayer.md +1 -1
- package/docs/tr/migration_from_next-intl_to_intlayer.md +1 -1
- package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
- package/docs/tr/migration_from_react-i18next_to_intlayer.md +1 -1
- package/docs/tr/migration_from_vue-i18n_to_intlayer.md +1 -1
- package/docs/tr/releases/v8.md +187 -1
- package/docs/tr/releases/v9.md +232 -0
- package/docs/uk/cli/doc-review.md +110 -4
- package/docs/uk/cli/index.md +1 -1
- package/docs/uk/cli/scan.md +1 -1
- package/docs/uk/configuration.md +35 -2
- package/docs/uk/dictionary/condition.md +167 -5
- package/docs/uk/dictionary/enumeration.md +540 -6
- package/docs/uk/dictionary/file.md +318 -2
- package/docs/uk/dictionary/gender.md +381 -8
- package/docs/uk/dictionary/nesting.md +173 -65
- package/docs/uk/dictionary/plurial.md +174 -5
- package/docs/uk/dictionary/translation.md +156 -2
- package/docs/uk/dynamic_dictionaries/collections.md +1 -1
- package/docs/uk/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/uk/dynamic_dictionaries/index.md +1 -1
- package/docs/uk/dynamic_dictionaries/variants.md +1 -1
- package/docs/uk/releases/v8.md +191 -3
- package/docs/uk/releases/v9.md +232 -0
- package/docs/ur/cli/index.md +1 -1
- package/docs/ur/cli/scan.md +1 -1
- package/docs/ur/configuration.md +36 -3
- package/docs/vi/cli/doc-review.md +110 -4
- package/docs/vi/cli/index.md +1 -1
- package/docs/vi/cli/scan.md +1 -1
- package/docs/vi/configuration.md +50 -17
- package/docs/vi/dictionary/condition.md +167 -5
- package/docs/vi/dictionary/enumeration.md +591 -14
- package/docs/vi/dictionary/file.md +318 -2
- package/docs/vi/dictionary/gender.md +168 -7
- package/docs/vi/dictionary/nesting.md +357 -86
- package/docs/vi/dictionary/plurial.md +174 -5
- package/docs/vi/dictionary/translation.md +156 -2
- package/docs/vi/dynamic_dictionaries/collections.md +1 -1
- package/docs/vi/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/vi/dynamic_dictionaries/index.md +1 -1
- package/docs/vi/dynamic_dictionaries/variants.md +1 -1
- package/docs/vi/releases/v8.md +190 -1
- package/docs/vi/releases/v9.md +232 -0
- package/docs/zh/cli/doc-review.md +110 -4
- package/docs/zh/cli/index.md +1 -1
- package/docs/zh/cli/scan.md +1 -1
- package/docs/zh/configuration.md +49 -16
- package/docs/zh/dictionary/condition.md +167 -5
- package/docs/zh/dictionary/enumeration.md +540 -6
- package/docs/zh/dictionary/file.md +151 -1
- package/docs/zh/dictionary/gender.md +168 -7
- package/docs/zh/dictionary/nesting.md +173 -65
- package/docs/zh/dictionary/plurial.md +174 -5
- package/docs/zh/dictionary/translation.md +169 -8
- package/docs/zh/dynamic_dictionaries/collections.md +1 -1
- package/docs/zh/dynamic_dictionaries/dynamic_content.md +1 -1
- package/docs/zh/dynamic_dictionaries/index.md +1 -1
- package/docs/zh/dynamic_dictionaries/variants.md +1 -1
- package/docs/zh/intlayer_with_vite+react.md +48 -288
- package/docs/zh/releases/v8.md +1 -1
- package/docs/zh/releases/v9.md +220 -0
- package/package.json +7 -7
- package/src/generated/docs.entry.ts +320 -0
- package/dist/esm/_virtual/_rolldown/runtime.mjs +0 -8
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-11
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-06-17
|
|
4
4
|
title: Review Document
|
|
5
5
|
description: Learn how to review documentation files for quality, consistency, and completeness across different locales.
|
|
6
6
|
keywords:
|
|
@@ -15,6 +15,10 @@ slugs:
|
|
|
15
15
|
- concept
|
|
16
16
|
- cli
|
|
17
17
|
- doc-review
|
|
18
|
+
history:
|
|
19
|
+
- version: 9.0.0
|
|
20
|
+
date: 2026-06-17
|
|
21
|
+
changes: "Add --log option"
|
|
18
22
|
author: aymericzip
|
|
19
23
|
---
|
|
20
24
|
|
|
@@ -55,8 +59,110 @@ For most use cases,
|
|
|
55
59
|
|
|
56
60
|
## Arguments:
|
|
57
61
|
|
|
58
|
-
|
|
62
|
+
**File list options:**
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
- **`--doc-pattern [docPattern...]`**: Glob patterns to match documentation files to review.
|
|
61
65
|
|
|
62
|
-
|
|
66
|
+
> Example: `npx intlayer doc review --doc-pattern "docs/**/*.md" "src/**/*.mdx"`
|
|
67
|
+
|
|
68
|
+
- **`--excluded-glob-pattern [excludedGlobPattern...]`**: Glob patterns to exclude from review.
|
|
69
|
+
|
|
70
|
+
> Example: `npx intlayer doc review --excluded-glob-pattern "docs/internal/**"`
|
|
71
|
+
|
|
72
|
+
- **`--skip-if-modified-before [skipIfModifiedBefore]`**: Skip the file if it has been modified before the given time.
|
|
73
|
+
- Can be an absolute time as "2025-12-05" (string or Date)
|
|
74
|
+
- Can be a relative time in ms `1 * 60 * 60 * 1000` (1 hour)
|
|
75
|
+
- This option checks the update time of the file using the `fs.stat` method. So it could be impacted by Git or other tools that modify the file.
|
|
76
|
+
|
|
77
|
+
> Example: `npx intlayer doc review --skip-if-modified-before "2025-12-05"`
|
|
78
|
+
|
|
79
|
+
- **`--skip-if-modified-after [skipIfModifiedAfter]`**: Skip the file if it has been modified within the given time.
|
|
80
|
+
- Can be an absolute time as "2025-12-05" (string or Date)
|
|
81
|
+
- Can be a relative time in ms `1 * 60 * 60 * 1000` (1 hour)
|
|
82
|
+
- This option checks the update time of the file using the `fs.stat` method. So it could be impacted by Git or other tools that modify the file.
|
|
83
|
+
|
|
84
|
+
> Example: `npx intlayer doc review --skip-if-modified-after "2025-12-05"`
|
|
85
|
+
|
|
86
|
+
- **`--skip-if-exists`**: Skip the file if it already exists.
|
|
87
|
+
|
|
88
|
+
> Example: `npx intlayer doc review --skip-if-exists`
|
|
89
|
+
|
|
90
|
+
**Review mode options:**
|
|
91
|
+
|
|
92
|
+
- **`--log`**: Log-only mode. Do not translate with AI; instead log the blocks that need attention (with line numbers and content) for the base and target locales, to help another agent generate the translations.
|
|
93
|
+
|
|
94
|
+
> Example: `npx intlayer doc review --log`
|
|
95
|
+
|
|
96
|
+
**Entry output options:**
|
|
97
|
+
|
|
98
|
+
- **`--locales [locales...]`**: Target locales to review documentation for.
|
|
99
|
+
|
|
100
|
+
> Example: `npx intlayer doc review --locales fr es de`
|
|
101
|
+
|
|
102
|
+
- **`--base-locale [baseLocale]`**: Source locale (base document) to compare with.
|
|
103
|
+
|
|
104
|
+
> Example: `npx intlayer doc review --base-locale en`
|
|
105
|
+
|
|
106
|
+
**File processing options:**
|
|
107
|
+
|
|
108
|
+
- **`--nb-simultaneous-file-processed [nbSimultaneousFileProcessed]`**: Number of files to process simultaneously for review.
|
|
109
|
+
|
|
110
|
+
> Example: `npx intlayer doc review --nb-simultaneous-file-processed 5`
|
|
111
|
+
|
|
112
|
+
**AI options:**
|
|
113
|
+
|
|
114
|
+
- **`--model [model]`**: The AI model to use for review (e.g., `gpt-3.5-turbo`).
|
|
115
|
+
- **`--provider [provider]`**: The AI provider to use for review.
|
|
116
|
+
- **`--temperature [temperature]`**: Temperature setting for the AI model.
|
|
117
|
+
- **`--api-key [apiKey]`**: Provide your own API key for the AI service.
|
|
118
|
+
- **`--application-context [applicationContext]`**: Provide additional context for the AI review.
|
|
119
|
+
- **`--data-serialization [dataSerialization]`**: The data serialization format to use for the AI features of Intlayer. Options: `json` (standard, reliable), `toon` (fewer tokens, less consistent).
|
|
120
|
+
- **`--custom-prompt [prompt]`**: Customize the base prompt used for review. (Note: For most use cases, the `--custom-instructions` option is recommended instead.)
|
|
121
|
+
|
|
122
|
+
> Example: `npx intlayer doc review --model deepseek-chat --provider deepseek --temperature 0.5 --api-key sk-1234567890 --application-context "My application is a cat store"`
|
|
123
|
+
|
|
124
|
+
**Environment variables options:**
|
|
125
|
+
|
|
126
|
+
- **`--env`**: Specify the environment (e.g., `development`, `production`).
|
|
127
|
+
- **`--env-file [envFile]`**: Provide a custom environment file to load variables from.
|
|
128
|
+
- **`--base-dir`**: Specify the base directory for the project.
|
|
129
|
+
- **`--no-cache`**: Disable the cache.
|
|
130
|
+
|
|
131
|
+
> Example: `npx intlayer doc review --base-dir ./docs --env-file .env.production.local`
|
|
132
|
+
|
|
133
|
+
**Log options:**
|
|
134
|
+
|
|
135
|
+
- **`--verbose`**: Enable verbose logging for debugging. (default to true using CLI)
|
|
136
|
+
|
|
137
|
+
> Example: `npx intlayer doc review --verbose`
|
|
138
|
+
|
|
139
|
+
**Custom instructions options:**
|
|
140
|
+
|
|
141
|
+
- **`--custom-instructions [customInstructions]`**: Custom instructions added to the prompt. Useful to apply specific rules regarding formatting, urls translation, etc.
|
|
142
|
+
|
|
143
|
+
> Example: `npx intlayer doc review --custom-instructions "Avoid translating urls, and keep the markdown format"`
|
|
144
|
+
|
|
145
|
+
> Example: `npx intlayer doc review --custom-instructions "$(cat ./instructions.md)"`
|
|
146
|
+
|
|
147
|
+
**Git options:**
|
|
148
|
+
|
|
149
|
+
- **`--git-diff`**: Only run on files that include changes from base (default `origin/main`) to current branch (default: `HEAD`).
|
|
150
|
+
- **`--git-diff-base`**: Specify the base reference for git diff (default `origin/main`).
|
|
151
|
+
- **`--git-diff-current`**: Specify the current reference for git diff (default: `HEAD`).
|
|
152
|
+
- **`--uncommitted`**: Include uncommitted changes.
|
|
153
|
+
- **`--unpushed`**: Include unpushed changes.
|
|
154
|
+
- **`--untracked`**: Include untracked files.
|
|
155
|
+
|
|
156
|
+
> Example: `npx intlayer doc review --git-diff --git-diff-base origin/main --git-diff-current HEAD`
|
|
157
|
+
|
|
158
|
+
> Example: `npx intlayer doc review --uncommitted --unpushed --untracked`
|
|
159
|
+
|
|
160
|
+
> Note that the output file path will be determined by replacing the following patterns:
|
|
161
|
+
>
|
|
162
|
+
> - `/{{baseLocale}}/` by `/{{locale}}/` (Unix)
|
|
163
|
+
> - `\{{baseLocale}}\` by `\{{locale}}\` (Windows)
|
|
164
|
+
> - `_{{baseLocale}}.` by `_{{locale}}.`
|
|
165
|
+
> - `{{baseLocale}}_` by `{{locale}}_`
|
|
166
|
+
> - `.{{baseLocaleName}}.` by `.{{localeName}}.`
|
|
167
|
+
>
|
|
168
|
+
> If the pattern is not found, the output file will add the `.{{locale}}` at the extensions of the file. `./my/file.md` will be reviewed and updated to `./my/file.fr.md` for the French locale.
|
package/docs/en/cli/index.md
CHANGED
package/docs/en/cli/scan.md
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-13
|
|
3
|
+
updatedAt: 2026-06-13
|
|
4
|
+
title: "Migrate from i18n-js to Intlayer"
|
|
5
|
+
description: "Learn how to migrate your application from i18n-js to Intlayer using the compat adapter."
|
|
6
|
+
keywords:
|
|
7
|
+
- i18n-js
|
|
8
|
+
- intlayer
|
|
9
|
+
- migration
|
|
10
|
+
- compat
|
|
11
|
+
slugs:
|
|
12
|
+
- doc
|
|
13
|
+
- compatibility
|
|
14
|
+
- i18n-js
|
|
15
|
+
history:
|
|
16
|
+
- version: 9.0.0
|
|
17
|
+
date: 2026-06-13
|
|
18
|
+
changes: "Init history"
|
|
19
|
+
author: aymericzip
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Migrate from i18n-js to Intlayer
|
|
23
|
+
|
|
24
|
+
Transitioning from the `i18n-js` library to Intlayer is a highly optimized migration designed to offload large translations configurations into Intlayer's structured file resolution system.
|
|
25
|
+
|
|
26
|
+
## What to do
|
|
27
|
+
|
|
28
|
+
Execute the following setup command in your repository:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npx intlayer init
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
With `intlayer.config.ts` prepared, you can add Intlayer's alias to your bundler configuration so that any imports of `i18n-js` target the compat package `@intlayer/i18n-js`.
|
|
35
|
+
|
|
36
|
+
## What it does under the hood
|
|
37
|
+
|
|
38
|
+
`i18n-js` accesses namespaces through expressions like `i18n.t('scope.key', {name})` along with locale fallbacks and specific plural mappings.
|
|
39
|
+
|
|
40
|
+
Under the hood:
|
|
41
|
+
|
|
42
|
+
- **Interpolation:** The compat adapter easily parses `%{name}` mappings into your targeted runtime dictionary value.
|
|
43
|
+
- **Pluralization:** Replaces `one/other` subkeys and maps them against Intlayer's powerful underlying plural mechanisms (`Intl.PluralRules`), abstracting away manual mappings.
|
|
44
|
+
- **Locales:** Instead of loading monolithic language payloads at bootstrap, dictionaries are served up optimally based on the current context setup via the native Intlayer configuration.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-13
|
|
3
|
+
updatedAt: 2026-06-13
|
|
4
|
+
title: "Migrate from i18next to Intlayer"
|
|
5
|
+
description: "Learn how to migrate your Vanilla JS/TS application from i18next to Intlayer using the compat adapter."
|
|
6
|
+
keywords:
|
|
7
|
+
- i18next
|
|
8
|
+
- vanilla
|
|
9
|
+
- javascript
|
|
10
|
+
- typescript
|
|
11
|
+
- intlayer
|
|
12
|
+
- migration
|
|
13
|
+
- compat
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- compatibility
|
|
17
|
+
- i18next
|
|
18
|
+
history:
|
|
19
|
+
- version: 9.0.0
|
|
20
|
+
date: 2026-06-13
|
|
21
|
+
changes: "Init history"
|
|
22
|
+
author: aymericzip
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Migrate from i18next to Intlayer
|
|
26
|
+
|
|
27
|
+
For a detailed step-by-step tutorial, please see our full [i18next Migration Guide](../migration_from_i18next_to_intlayer.md).
|
|
28
|
+
|
|
29
|
+
Intlayer perfectly replicates the core runtime characteristics of `i18next`. By utilizing the compat package, your Vanilla applications or internal modules can continue to leverage familiar syntax.
|
|
30
|
+
|
|
31
|
+
## What to do
|
|
32
|
+
|
|
33
|
+
To begin, initialize Intlayer in your project:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx intlayer init
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If you are using Vite, include the Intlayer plugin to route imports to `@intlayer/i18next`:
|
|
40
|
+
|
|
41
|
+
```typescript fileName="vite.config.ts"
|
|
42
|
+
import { defineConfig } from "vite";
|
|
43
|
+
import { i18nextVitePlugin } from "@intlayer/i18next/plugin";
|
|
44
|
+
|
|
45
|
+
export default defineConfig({
|
|
46
|
+
plugins: [i18nextVitePlugin()],
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## What it does under the hood
|
|
51
|
+
|
|
52
|
+
The `i18nextVitePlugin` aliases `i18next` imports to `@intlayer/i18next`, avoiding bundle bloat from JSON file inclusions.
|
|
53
|
+
|
|
54
|
+
Under the hood:
|
|
55
|
+
|
|
56
|
+
- **Instance configuration:** `createInstance` correctly parses and applies namespace fallbacks while leveraging Intlayer's compilation pipeline for dictionary retrieval.
|
|
57
|
+
- **Interpolation:** Native support for `{{name}}` replacements and `$t(key)` nesting recursively.
|
|
58
|
+
- **Context & Plurals:** Identifies and resolves suffix formats like `key_male` and `key_one`/`key_other` evaluating against standard `Intl.PluralRules`.
|
|
59
|
+
- **Return objects:** The `returnObjects: true` mode safely extracts trees from Intlayer dictionaries.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-13
|
|
3
|
+
updatedAt: 2026-06-13
|
|
4
|
+
title: "Intlayer Compat Adapters"
|
|
5
|
+
description: "Migrate your existing i18n solution to Intlayer with zero friction using compat adapters."
|
|
6
|
+
keywords:
|
|
7
|
+
- compat
|
|
8
|
+
- migration
|
|
9
|
+
- internationalization
|
|
10
|
+
- i18n
|
|
11
|
+
- Intlayer
|
|
12
|
+
slugs:
|
|
13
|
+
- doc
|
|
14
|
+
- compatibility
|
|
15
|
+
history:
|
|
16
|
+
- version: 9.0.0
|
|
17
|
+
date: 2026-06-13
|
|
18
|
+
changes: "Init history"
|
|
19
|
+
author: aymericzip
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Intlayer Compat Adapters
|
|
23
|
+
|
|
24
|
+
Migrating a large application to a new internationalization library can be daunting. To ease this transition, Intlayer provides **compat adapters** for the most popular i18n libraries in the ecosystem.
|
|
25
|
+
|
|
26
|
+
These adapter packages expose the **exact same public API** as your existing i18n libraries, but delegate all translation work to Intlayer at runtime.
|
|
27
|
+
|
|
28
|
+
## How it works
|
|
29
|
+
|
|
30
|
+
When you use a compat adapter, you do not need to rewrite your application's imports or change how you use your translation hooks and components. Instead, Intlayer's bundler plugins automatically alias your existing imports to the Intlayer compat packages.
|
|
31
|
+
|
|
32
|
+
For example, a developer replaces `import { useTranslation } from 'react-i18next'` with `import { useTranslation } from '@intlayer/react-i18next'` (done automatically via the bundler plugin), and the app keeps working with translations now served from Intlayer dictionaries. Keys are also typed against your Intlayer dictionaries!
|
|
33
|
+
|
|
34
|
+
## Available Compat Adapters
|
|
35
|
+
|
|
36
|
+
Choose your existing library below to see how to migrate seamlessly:
|
|
37
|
+
|
|
38
|
+
- [Vue I18n](./vue-i18n.md)
|
|
39
|
+
- [Transloco](./transloco.md)
|
|
40
|
+
- [React Intl](./react-intl.md)
|
|
41
|
+
- [Svelte I18n](./svelte-i18n.md)
|
|
42
|
+
- [React i18next](./react-i18next.md)
|
|
43
|
+
- [Polyglot.js](./polyglot.md)
|
|
44
|
+
- [NuxtJS I18n](./nuxtjs-i18n.md)
|
|
45
|
+
- [NGX Translate](./ngx-translate.md)
|
|
46
|
+
- [Next Translate](./next-translate.md)
|
|
47
|
+
- [Next Intl](./next-intl.md)
|
|
48
|
+
- [Next i18next](./next-i18next.md)
|
|
49
|
+
- [i18next](./i18next.md)
|
|
50
|
+
- [Lingui](./lingui.md)
|
|
51
|
+
- [I18n-js](./i18n-js.md)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-13
|
|
3
|
+
updatedAt: 2026-06-13
|
|
4
|
+
title: "Migrate from Lingui to Intlayer"
|
|
5
|
+
description: "Learn how to migrate your application from Lingui to Intlayer using the compat adapter."
|
|
6
|
+
keywords:
|
|
7
|
+
- lingui
|
|
8
|
+
- intlayer
|
|
9
|
+
- migration
|
|
10
|
+
- compat
|
|
11
|
+
slugs:
|
|
12
|
+
- doc
|
|
13
|
+
- compatibility
|
|
14
|
+
- lingui
|
|
15
|
+
history:
|
|
16
|
+
- version: 9.0.0
|
|
17
|
+
date: 2026-06-13
|
|
18
|
+
changes: "Init history"
|
|
19
|
+
author: aymericzip
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Migrate from Lingui to Intlayer
|
|
23
|
+
|
|
24
|
+
If your project currently relies on Lingui's macro-based compilation, transitioning to Intlayer allows you to maintain your powerful macro workflows while backing them natively with Intlayer's JSON compilation strategy.
|
|
25
|
+
|
|
26
|
+
## What to do
|
|
27
|
+
|
|
28
|
+
To begin, initialize Intlayer in your project:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npx intlayer init
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
This creates your `intlayer.config.ts`. Ensure you retain `@lingui/babel-plugin-lingui-macro` / `@lingui/swc-plugin` in your build step to run _before_ the Intlayer compiler. Then, use the bundler plugin alias to route `@lingui/core` and `@lingui/react` to `@intlayer/lingui`.
|
|
35
|
+
|
|
36
|
+
## What it does under the hood
|
|
37
|
+
|
|
38
|
+
Lingui utilizes macros (like `` t`Hello ${name}` `` and `<Trans>`) which are compiled into runtime calls like `i18n._(id, values)`.
|
|
39
|
+
|
|
40
|
+
Under the hood:
|
|
41
|
+
|
|
42
|
+
- **Macros:** They compile precisely as they did before, ensuring no disruption in your source syntax.
|
|
43
|
+
- **Runtime translation:** The aliased `i18n._()` uses Intlayer dictionaries. Both explicitly named IDs and hashed IDs are fully mapped using Intlayer's `.po` sync plugins to aggregate and prune keys securely.
|
|
44
|
+
- **ICU capabilities:** Support for pluralization, selection, and ICU variants remains robust due to Intlayer's unified ICU parser, ensuring identical rendering outputs.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-13
|
|
3
|
+
updatedAt: 2026-06-13
|
|
4
|
+
title: "Migrate from next-i18next to Intlayer"
|
|
5
|
+
description: "Learn how to migrate your Next.js application from next-i18next to Intlayer using the compat adapter."
|
|
6
|
+
keywords:
|
|
7
|
+
- next-i18next
|
|
8
|
+
- nextjs
|
|
9
|
+
- intlayer
|
|
10
|
+
- migration
|
|
11
|
+
- compat
|
|
12
|
+
slugs:
|
|
13
|
+
- doc
|
|
14
|
+
- compatibility
|
|
15
|
+
- next-i18next
|
|
16
|
+
history:
|
|
17
|
+
- version: 9.0.0
|
|
18
|
+
date: 2026-06-13
|
|
19
|
+
changes: "Init history"
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Migrate from next-i18next to Intlayer
|
|
24
|
+
|
|
25
|
+
For a complete and detailed step-by-step tutorial, please see our full [next-i18next Migration Guide](../migration_from_next-i18next_to_intlayer.md).
|
|
26
|
+
|
|
27
|
+
Intlayer handles all Next.js Pages Router and App Router implementations transparently. Using the adapter lets you migrate your `next-i18next` implementation with zero code rewrite.
|
|
28
|
+
|
|
29
|
+
## What to do
|
|
30
|
+
|
|
31
|
+
To begin, run:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx intlayer init
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
This creates the required Intlayer setup file. To swap to Intlayer behind the scenes, update your `next.config.ts`:
|
|
38
|
+
|
|
39
|
+
```typescript fileName="next.config.ts"
|
|
40
|
+
import type { NextConfig } from "next";
|
|
41
|
+
import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin";
|
|
42
|
+
|
|
43
|
+
const withIntlayer = createNextI18nPlugin();
|
|
44
|
+
|
|
45
|
+
const nextConfig: NextConfig = {};
|
|
46
|
+
|
|
47
|
+
export default withIntlayer(nextConfig);
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## What it does under the hood
|
|
51
|
+
|
|
52
|
+
The `createNextI18nPlugin` composes Next.js's native behavior alongside the core `next-intlayer` plugin, injecting all required Webpack/Turbopack aliases for `next-i18next`, `react-i18next`, and `i18next`.
|
|
53
|
+
|
|
54
|
+
Under the hood:
|
|
55
|
+
|
|
56
|
+
- **`serverSideTranslations` & `appWithTranslation`:** They now function as wrappers for Intlayer's internal loaders, circumventing large static JSON injection.
|
|
57
|
+
- **Client hooks:** Delegates immediately to `@intlayer/react-i18next` retaining all formatting, plurals, and nested namespace features.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-13
|
|
3
|
+
updatedAt: 2026-06-13
|
|
4
|
+
title: "Migrate from next-intl to Intlayer"
|
|
5
|
+
description: "Learn how to migrate your Next.js application from next-intl to Intlayer using the compat adapter."
|
|
6
|
+
keywords:
|
|
7
|
+
- next-intl
|
|
8
|
+
- nextjs
|
|
9
|
+
- intlayer
|
|
10
|
+
- migration
|
|
11
|
+
- compat
|
|
12
|
+
slugs:
|
|
13
|
+
- doc
|
|
14
|
+
- compatibility
|
|
15
|
+
- next-intl
|
|
16
|
+
history:
|
|
17
|
+
- version: 9.0.0
|
|
18
|
+
date: 2026-06-13
|
|
19
|
+
changes: "Init history"
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Migrate from next-intl to Intlayer
|
|
24
|
+
|
|
25
|
+
For a complete and detailed step-by-step tutorial, please see our full [next-intl Migration Guide](../migration_from_next-intl_to_intlayer.md).
|
|
26
|
+
|
|
27
|
+
Migrating from `next-intl` to Intlayer allows you to maintain your application routing and syntax completely undisturbed.
|
|
28
|
+
|
|
29
|
+
## What to do
|
|
30
|
+
|
|
31
|
+
Execute the following command in your repository:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx intlayer init
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
This will create an `intlayer.config.ts`. In your `next.config.ts`, use the plugin wrapper to seamlessly inject the `next-intl` aliases towards `@intlayer/next-intl`.
|
|
38
|
+
|
|
39
|
+
```typescript fileName="next.config.ts"
|
|
40
|
+
import type { NextConfig } from "next";
|
|
41
|
+
import { createNextIntlPlugin } from "@intlayer/next-intl/plugin";
|
|
42
|
+
|
|
43
|
+
const withIntlayer = createNextIntlPlugin();
|
|
44
|
+
|
|
45
|
+
const nextConfig: NextConfig = {};
|
|
46
|
+
|
|
47
|
+
export default withIntlayer(nextConfig);
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## What it does under the hood
|
|
51
|
+
|
|
52
|
+
The bundler wrapper replaces translations, but **leaves the `next-intl/navigation` features intact** (e.g. `Link`, `redirect`, `usePathname`).
|
|
53
|
+
|
|
54
|
+
Under the hood:
|
|
55
|
+
|
|
56
|
+
- **ICU runtime:** Plurals (`=0`, `one`, `other`), select/selectordinal, `#` arguments, and formatted args (`{ts, date, long}`) run correctly using the shared `resolveMessage(..., 'icu')` resolver.
|
|
57
|
+
- **`useTranslations()` & `getTranslations()`:** The bare scope calls extract the first key segment as the correct dictionary identifier. Nested namespaces gracefully split into dictionary paths and prefixes.
|
|
58
|
+
- **Rich formatting:** Both `t.rich()` and `t.markup()` are fully natively implemented, converting HTML-like nodes into rendered React chunks.
|
|
59
|
+
- **`useFormatter`:** `relativeTime`, `list`, `dateTimeRange`, and named formats from the configuration bridge to the core native `Intl` formatters.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-13
|
|
3
|
+
updatedAt: 2026-06-13
|
|
4
|
+
title: "Migrate from Next Translate to Intlayer"
|
|
5
|
+
description: "Learn how to migrate your Next.js application from next-translate to Intlayer using the compat adapter."
|
|
6
|
+
keywords:
|
|
7
|
+
- next-translate
|
|
8
|
+
- nextjs
|
|
9
|
+
- intlayer
|
|
10
|
+
- migration
|
|
11
|
+
- compat
|
|
12
|
+
slugs:
|
|
13
|
+
- doc
|
|
14
|
+
- compatibility
|
|
15
|
+
- next-translate
|
|
16
|
+
history:
|
|
17
|
+
- version: 9.0.0
|
|
18
|
+
date: 2026-06-13
|
|
19
|
+
changes: "Init history"
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Migrate from Next Translate to Intlayer
|
|
24
|
+
|
|
25
|
+
Migrating from `next-translate` to Intlayer is a near drop-in replacement that retains your existing syntax and tags.
|
|
26
|
+
|
|
27
|
+
## What to do
|
|
28
|
+
|
|
29
|
+
Initialize Intlayer in your project:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx intlayer init
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The CLI will scaffold your configuration. You can then apply the Intlayer plugin in your `next.config.ts`, which injects build-time subpath aliases mapping `next-translate/useTranslation` to `@intlayer/next-translate`.
|
|
36
|
+
|
|
37
|
+
## What it does under the hood
|
|
38
|
+
|
|
39
|
+
`next-translate` provides hooks like `useTranslation('ns')`, `t('ns:key.path')`, and the `<Trans>` component.
|
|
40
|
+
|
|
41
|
+
Under the hood:
|
|
42
|
+
|
|
43
|
+
- **Interpolation & Plurals:** It relies closely on the `react-i18next` adapter behavior. Handled dynamically are `{{var}}` placeholders and pluralization mapped from suffixes like `key_0`, `key_one`, and `key_other`.
|
|
44
|
+
- **`<Trans>` component:** Directly supported for HTML-ish tag parsing alongside an array-based `components` prop.
|
|
45
|
+
- **Namespaces:** Subpath aliasing ensures that your `useTranslation` references the correct internal dictionary namespaces without manual modification.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-13
|
|
3
|
+
updatedAt: 2026-06-13
|
|
4
|
+
title: "Migrate from NGX-Translate to Intlayer"
|
|
5
|
+
description: "Learn how to migrate your Angular application from ngx-translate to Intlayer using the compat adapter."
|
|
6
|
+
keywords:
|
|
7
|
+
- ngx-translate
|
|
8
|
+
- angular
|
|
9
|
+
- intlayer
|
|
10
|
+
- migration
|
|
11
|
+
- compat
|
|
12
|
+
slugs:
|
|
13
|
+
- doc
|
|
14
|
+
- compatibility
|
|
15
|
+
- ngx-translate
|
|
16
|
+
history:
|
|
17
|
+
- version: 9.0.0
|
|
18
|
+
date: 2026-06-13
|
|
19
|
+
changes: "Init history"
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Migrate from NGX-Translate to Intlayer
|
|
24
|
+
|
|
25
|
+
Migrating your Angular application from `ngx-translate` to Intlayer is easy with the compat adapter, allowing you to bypass the need to rewrite all your templates.
|
|
26
|
+
|
|
27
|
+
## What to do
|
|
28
|
+
|
|
29
|
+
Begin by running:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx intlayer init
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
This sets up the `intlayer.config.ts`. Replace your `TranslateModule.forRoot()` setups and import aliases appropriately to point to `@intlayer/ngx-translate`.
|
|
36
|
+
|
|
37
|
+
## What it does under the hood
|
|
38
|
+
|
|
39
|
+
`ngx-translate` uses `TranslateService` (`instant`, `get`, `stream`) alongside the `{{ 'KEY' | translate:params }}` pipe and the `[translate]` directive.
|
|
40
|
+
|
|
41
|
+
Under the hood:
|
|
42
|
+
|
|
43
|
+
- **Services:** `TranslateService` wraps `getIntlayer` and a locale observable, providing exactly the same methods.
|
|
44
|
+
- **Pipes & Directives:** Re-implemented to resolve against Intlayer dictionaries directly.
|
|
45
|
+
- **Loaders:** `TranslateHttpLoader` setups are converted to warning stubs because Intlayer inherently resolves and bundles your dictionaries at build time (or through standard dynamic imports), completely eliminating the need for HTTP loaders.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-13
|
|
3
|
+
updatedAt: 2026-06-13
|
|
4
|
+
title: "Migrate from NuxtJS I18n to Intlayer"
|
|
5
|
+
description: "Learn how to migrate your Nuxt.js application from @nuxtjs/i18n to Intlayer using the compat adapter."
|
|
6
|
+
keywords:
|
|
7
|
+
- nuxtjs-i18n
|
|
8
|
+
- nuxt
|
|
9
|
+
- vue
|
|
10
|
+
- intlayer
|
|
11
|
+
- migration
|
|
12
|
+
- compat
|
|
13
|
+
slugs:
|
|
14
|
+
- doc
|
|
15
|
+
- compatibility
|
|
16
|
+
- nuxtjs-i18n
|
|
17
|
+
history:
|
|
18
|
+
- version: 9.0.0
|
|
19
|
+
date: 2026-06-13
|
|
20
|
+
changes: "Init history"
|
|
21
|
+
author: aymericzip
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Migrate from NuxtJS I18n to Intlayer
|
|
25
|
+
|
|
26
|
+
Migrating your Nuxt application from `@nuxtjs/i18n` to Intlayer is a seamless process using the Nuxt adapter module.
|
|
27
|
+
|
|
28
|
+
## What to do
|
|
29
|
+
|
|
30
|
+
To initialize the project, run:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx intlayer init
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
This will set up `intlayer.config.ts`. Then, add the Intlayer Nuxt module (e.g. `@intlayer/nuxt-i18n`) in your `nuxt.config.ts` modules array. This automatically applies the compat configuration for your application.
|
|
37
|
+
|
|
38
|
+
## What it does under the hood
|
|
39
|
+
|
|
40
|
+
`@nuxtjs/i18n` wraps `vue-i18n` while providing Nuxt-specific routing composables (`useLocalePath`, `useSwitchLocalePath`, `<NuxtLinkLocale>`).
|
|
41
|
+
|
|
42
|
+
Under the hood:
|
|
43
|
+
|
|
44
|
+
- **Translations:** Relies natively on the `@intlayer/vue-i18n` compat layer for all string translation tasks (fully supporting `vue-i18n` formats, pipe plurals, and reactivity).
|
|
45
|
+
- **Routing:** Mirrors the routing composables using Intlayer's localized URL helpers.
|
|
46
|
+
- **Configuration:** Reads the `availableLocales` and default settings straight from your `intlayer.config.ts` to coordinate Nuxt pages automatically.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-13
|
|
3
|
+
updatedAt: 2026-06-13
|
|
4
|
+
title: "Migrate from Polyglot.js to Intlayer"
|
|
5
|
+
description: "Learn how to migrate from Polyglot.js to Intlayer using the compat adapter."
|
|
6
|
+
keywords:
|
|
7
|
+
- polyglot
|
|
8
|
+
- airbnb
|
|
9
|
+
- intlayer
|
|
10
|
+
- migration
|
|
11
|
+
- compat
|
|
12
|
+
slugs:
|
|
13
|
+
- doc
|
|
14
|
+
- compatibility
|
|
15
|
+
- polyglot
|
|
16
|
+
history:
|
|
17
|
+
- version: 9.0.0
|
|
18
|
+
date: 2026-06-13
|
|
19
|
+
changes: "Init history"
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Migrate from Polyglot.js to Intlayer
|
|
24
|
+
|
|
25
|
+
If you are using Airbnb's Polyglot.js, migrating to Intlayer is extremely straightforward using the compat layer.
|
|
26
|
+
|
|
27
|
+
## What to do
|
|
28
|
+
|
|
29
|
+
Simply run the initialization command in your project:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx intlayer init
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
This generates `intlayer.config.ts`. You can then utilize the bundler plugin alias to transparently redirect Polyglot imports to `@intlayer/polyglot`.
|
|
36
|
+
|
|
37
|
+
## What it does under the hood
|
|
38
|
+
|
|
39
|
+
Polyglot.js syntax typically relies on `polyglot.t('key', {name})` with `%{name}` interpolations and `smart_count` plurals separated by `"singular |||| plural"`.
|
|
40
|
+
|
|
41
|
+
Under the hood:
|
|
42
|
+
|
|
43
|
+
- **Interpolation:** The compat layer handles `%{var}` placeholders natively.
|
|
44
|
+
- **Plurals:** The string is split at `||||` and evaluated against native `Intl.PluralRules` according to the active locale, mirroring Polyglot's own bucket order per locale.
|
|
45
|
+
- **Dictionaries:** You bypass the need to provide huge JSON configurations to `new Polyglot()` – Intlayer handles the dictionaries dynamically and prunes them automatically.
|