@intlayer/docs 8.12.5-canary.0 → 9.0.0-canary.3
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/plugins/sync-json.md +222 -49
- 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/plugins/sync-json.md +222 -49
- 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/plugins/sync-json.md +56 -2
- 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/plugins/sync-json.md +245 -13
- 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/plugins/sync-json.md +222 -49
- 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/plugins/sync-json.md +244 -12
- 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/plugins/sync-json.md +221 -48
- 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/plugins/sync-json.md +222 -49
- 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/plugins/sync-json.md +224 -51
- 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/plugins/sync-json.md +222 -49
- 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/plugins/sync-json.md +223 -50
- 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/plugins/sync-json.md +246 -14
- 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/plugins/sync-json.md +222 -49
- 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/plugins/sync-json.md +269 -95
- 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/plugins/sync-json.md +222 -50
- 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/plugins/sync-json.md +56 -2
- 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/plugins/sync-json.md +230 -57
- 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/plugins/sync-json.md +223 -50
- 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: 2025-03-13
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-06-21
|
|
4
4
|
title: Sync JSON プラグイン
|
|
5
5
|
description: Intlayerの辞書をサードパーティのi18n JSONファイル(i18next、next-intl、react-intl、vue-i18nなど)と同期します。既存のi18nを維持しながら、Intlayerでメッセージの管理、翻訳、テストを行えます。
|
|
6
6
|
keywords:
|
|
@@ -24,6 +24,9 @@ slugs:
|
|
|
24
24
|
- sync-json
|
|
25
25
|
youtubeVideo: https://www.youtube.com/watch?v=MpGMxniDHNg
|
|
26
26
|
history:
|
|
27
|
+
- version: 9.0.0
|
|
28
|
+
date: 2026-06-21
|
|
29
|
+
changes: "splitKeys オプションを追加(next-intl / react-intl の単一ファイルレイアウト向けに、トップレベルの名前空間キーごとに1つの辞書)"
|
|
27
30
|
- version: 7.5.0
|
|
28
31
|
date: 2025-12-13
|
|
29
32
|
changes: "ICUおよびi18next形式のサポートを追加"
|
|
@@ -62,7 +65,63 @@ pnpm add -D @intlayer/sync-json-plugin
|
|
|
62
65
|
npm i -D @intlayer/sync-json-plugin
|
|
63
66
|
```
|
|
64
67
|
|
|
65
|
-
##
|
|
68
|
+
## Plugins
|
|
69
|
+
|
|
70
|
+
このパッケージは2つのプラグインを提供します:
|
|
71
|
+
|
|
72
|
+
- `loadJSON`: JSONファイルをIntlayer辞書にロードします。
|
|
73
|
+
- このプラグインは、ソースからJSONファイルをロードし、Intlayer辞書にロードするために使用されます。コードベース全体をスキャンし、特定のJSONファイルを検索できます。
|
|
74
|
+
このプラグインは以下の場合に使用できます。
|
|
75
|
+
- JSONのロードに特定の場所を課すi18nライブラリ(例:`next-intl`、`i18next`、`react-intl`、`vue-i18n`など)を使用しているが、コンテンツ宣言をコードベースの好きな場所に配置したい場合。
|
|
76
|
+
- リモートソース(例:CMS、APIなど)からメッセージをフェッチし、JSONファイルにメッセージを保存したい場合。
|
|
77
|
+
|
|
78
|
+
> 内部的には、このプラグインはコードベース全体をスキャンし、特定のJSONファイルを検索してIntlayer辞書にロードします。
|
|
79
|
+
> このプラグインは出力と翻訳をJSONファイルに書き戻さないことに注意してください。
|
|
80
|
+
|
|
81
|
+
- `syncJSON`: JSONファイルをIntlayer辞書と同期します。
|
|
82
|
+
- このプラグインは、JSONファイルをIntlayer辞書と同期するために使用されます。指定された場所をスキャンし、特定のJSONファイルのパターンに一致するJSONをロードできます。このプラグインは、別のi18nライブラリを使用しながらIntlayerの利点を得たい場合に便利です。
|
|
83
|
+
|
|
84
|
+
## 両方のプラグインを使用する
|
|
85
|
+
|
|
86
|
+
```ts fileName="intlayer.config.ts"
|
|
87
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
88
|
+
import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
|
|
89
|
+
|
|
90
|
+
const config: IntlayerConfig = {
|
|
91
|
+
internationalization: {
|
|
92
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
93
|
+
defaultLocale: Locales.ENGLISH,
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
// 現在のJSONファイルをIntlayerの辞書と同期させる
|
|
97
|
+
plugins: [
|
|
98
|
+
/**
|
|
99
|
+
* src内のパターン {key}.i18n json に一致するすべてのJSONファイルをロードします
|
|
100
|
+
*/
|
|
101
|
+
loadJSON({
|
|
102
|
+
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
103
|
+
locale: Locales.ENGLISH,
|
|
104
|
+
priority: 1, // これらのJSONファイルが `./locales/en/${key}.json` のファイルよりも優先されるようにします
|
|
105
|
+
format: "intlayer", // JSONコンテンツのフォーマット
|
|
106
|
+
}),
|
|
107
|
+
/**
|
|
108
|
+
* ロケールディレクトリ内のJSONファイルに、出力と翻訳をロードして書き戻します
|
|
109
|
+
*/
|
|
110
|
+
syncJSON({
|
|
111
|
+
format: "i18next",
|
|
112
|
+
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
113
|
+
priority: 0,
|
|
114
|
+
format: "i18next",
|
|
115
|
+
}),
|
|
116
|
+
],
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export default config;
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## `syncJSON` plugin
|
|
123
|
+
|
|
124
|
+
### クイックスタート
|
|
66
125
|
|
|
67
126
|
`intlayer.config.ts`にプラグインを追加し、既存のJSON構造を指定します。
|
|
68
127
|
|
|
@@ -81,6 +140,7 @@ const config: IntlayerConfig = {
|
|
|
81
140
|
syncJSON({
|
|
82
141
|
// ロケールごと、名前空間ごとのレイアウト(例:next-intl、名前空間付きのi18next)
|
|
83
142
|
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
143
|
+
format: "icu",
|
|
84
144
|
}),
|
|
85
145
|
],
|
|
86
146
|
};
|
|
@@ -91,14 +151,27 @@ export default config;
|
|
|
91
151
|
代替案:ロケールごとに単一ファイル(i18next/react-intlのセットアップで一般的):
|
|
92
152
|
|
|
93
153
|
```ts fileName="intlayer.config.ts"
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
154
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
155
|
+
import { syncJSON } from "@intlayer/sync-json-plugin";
|
|
156
|
+
|
|
157
|
+
const config: IntlayerConfig = {
|
|
158
|
+
internationalization: {
|
|
159
|
+
locales: [Locales.ENGLISH, Locales.FRENCH],
|
|
160
|
+
defaultLocale: Locales.ENGLISH,
|
|
161
|
+
},
|
|
162
|
+
plugins: [
|
|
163
|
+
syncJSON({
|
|
164
|
+
format: "i18next",
|
|
165
|
+
source: ({ locale }) => `./locales/${locale}.json`,
|
|
166
|
+
format: "i18next",
|
|
167
|
+
}),
|
|
168
|
+
],
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
export default config;
|
|
99
172
|
```
|
|
100
173
|
|
|
101
|
-
|
|
174
|
+
#### 動作の仕組み
|
|
102
175
|
|
|
103
176
|
- 読み込み:プラグインは`source`ビルダーからJSONファイルを検出し、それらをIntlayerの辞書として読み込みます。
|
|
104
177
|
- 書き込み:ビルドと補完の後、ローカライズされたJSONを同じパスに書き戻します(フォーマットの問題を避けるために末尾に改行を追加)。
|
|
@@ -112,6 +185,7 @@ syncJSON({
|
|
|
112
185
|
location?: string, // オプションのラベル、デフォルト: "plugin"
|
|
113
186
|
priority?: number, // コンフリクト解決のためのオプションの優先度、デフォルト: 0
|
|
114
187
|
format?: 'intlayer' | 'icu' | 'i18next', // オプションのフォーマッター、Intlayerランタイム互換性のために使用
|
|
188
|
+
splitKeys?: boolean, // オプション、単一ファイルをトップレベルキーごとに1つの辞書に分割(自動検出)
|
|
115
189
|
});
|
|
116
190
|
```
|
|
117
191
|
|
|
@@ -136,11 +210,43 @@ syncJSON({
|
|
|
136
210
|
}),
|
|
137
211
|
```
|
|
138
212
|
|
|
139
|
-
|
|
213
|
+
#### `splitKeys` (boolean)
|
|
214
|
+
|
|
215
|
+
**ファーストレベルのキーが名前空間である**単一のJSONファイルを、ファイル全体を保持する単一の辞書ではなく、トップレベルキーごとに1つの辞書にするかどうかを制御します。
|
|
216
|
+
|
|
217
|
+
これは、`next-intl`や`react-intl`のようなライブラリの名前空間モデルと一致します。これらのライブラリでは、1つの`messages/{locale}.json`ファイルが、そのファーストレベルのキーによって複数の名前空間をグループ化し、それぞれが独立してアドレス指定されます(例:`useTranslations('Hero')`は`Hero`辞書に解決されます)。
|
|
218
|
+
|
|
219
|
+
- `undefined` (デフォルト): **自動検出** — `source`パターンに`{key}`セグメントがない場合(1つのファイルがすべての名前空間を保持する場合)にファイルが分割され、それ以外の場合(キーごとに1つのファイル)は単一の辞書として保持されます。
|
|
220
|
+
- `true`: 常に各トップレベルキーを独自の辞書に分割します。
|
|
221
|
+
- `false`: 分割しません。ファイル全体が単一の辞書になります。
|
|
222
|
+
|
|
223
|
+
単一の`messages/{locale}.json`ファイルが与えられた場合:
|
|
224
|
+
|
|
225
|
+
```json fileName="messages/en.json"
|
|
226
|
+
{
|
|
227
|
+
"Hero": { "title": "Full-stack developer" },
|
|
228
|
+
"Nav": { "work": "Work", "about": "About" },
|
|
229
|
+
"About": { "lead": "I build apps end to end." }
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
```ts fileName="intlayer.config.ts"
|
|
234
|
+
syncJSON({
|
|
235
|
+
format: "icu",
|
|
236
|
+
source: ({ locale }) => `./messages/${locale}.json`,
|
|
237
|
+
// splitKeys: true, // パターンに`{key}`セグメントがないため、暗黙的に有効
|
|
238
|
+
}),
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
これにより、`Hero`、`Nav`、`About`の3つの辞書が生成され、`useTranslations('Hero')` (next-intl) が正しく解決されます。書き戻し時には、すべての名前空間が同じロケールごとのファイルに再結合されます。
|
|
242
|
+
|
|
243
|
+
> `source`に明示的な`{key}`セグメントを保持している場合(例:`./locales/${locale}/${key}.json`)、各ファイルはすでに1つの名前空間であるため、分割はデフォルトで無効になります。
|
|
244
|
+
|
|
245
|
+
### 複数の JSON ソースと優先度
|
|
140
246
|
|
|
141
247
|
複数の `syncJSON` プラグインを追加して異なる JSON ソースを同期することができます。これは、複数の i18n ライブラリや異なる JSON 構造をプロジェクトで使用している場合に便利です。
|
|
142
248
|
|
|
143
|
-
|
|
249
|
+
#### 優先度システム
|
|
144
250
|
|
|
145
251
|
複数のプラグインが同じ辞書キーを対象とする場合、`priority` パラメータがどのプラグインが優先されるかを決定します:
|
|
146
252
|
|
|
@@ -189,73 +295,140 @@ const config: IntlayerConfig = {
|
|
|
189
295
|
export default config;
|
|
190
296
|
```
|
|
191
297
|
|
|
192
|
-
|
|
298
|
+
## Load JSON plugin
|
|
193
299
|
|
|
194
|
-
|
|
300
|
+
### クイックスタート
|
|
195
301
|
|
|
196
|
-
|
|
197
|
-
2. 優先度の低いソースは、欠落しているキーのフォールバックとして使用されます
|
|
198
|
-
3. これにより、レガシー翻訳を維持しつつ、新しい構造へ段階的に移行できます
|
|
302
|
+
`intlayer.config.ts`にプラグインを追加して、既存のJSONファイルをIntlayer辞書として取り込みます。このプラグインは読み取り専用です(ディスクへの書き込みは行いません):
|
|
199
303
|
|
|
200
|
-
|
|
304
|
+
```ts fileName="intlayer.config.ts"
|
|
305
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
306
|
+
import { loadJSON } from "@intlayer/sync-json-plugin";
|
|
201
307
|
|
|
202
|
-
|
|
308
|
+
const config: IntlayerConfig = {
|
|
309
|
+
internationalization: {
|
|
310
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
311
|
+
defaultLocale: Locales.ENGLISH,
|
|
312
|
+
},
|
|
203
313
|
|
|
204
|
-
|
|
314
|
+
plugins: [
|
|
315
|
+
// ソースツリー内のどこにでも配置されたJSONメッセージを取り込む
|
|
316
|
+
loadJSON({
|
|
317
|
+
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
318
|
+
// プラグインインスタンスごとに単一のロケールをロード(設定のdefaultLocaleにデフォルト設定)
|
|
319
|
+
locale: Locales.ENGLISH,
|
|
320
|
+
priority: 0,
|
|
321
|
+
}),
|
|
322
|
+
],
|
|
323
|
+
};
|
|
205
324
|
|
|
206
|
-
|
|
325
|
+
export default config;
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
代替案:ロケールごとのレイアウト、読み取り専用(選択されたロケールのみがロードされます):
|
|
207
329
|
|
|
208
330
|
```ts fileName="intlayer.config.ts"
|
|
209
|
-
import {
|
|
331
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
332
|
+
import { loadJSON } from "@intlayer/sync-json-plugin";
|
|
210
333
|
|
|
211
|
-
|
|
334
|
+
const config: IntlayerConfig = {
|
|
335
|
+
internationalization: {
|
|
336
|
+
locales: [Locales.ENGLISH, Locales.FRENCH],
|
|
337
|
+
defaultLocale: Locales.ENGLISH,
|
|
338
|
+
},
|
|
212
339
|
plugins: [
|
|
213
|
-
|
|
214
|
-
|
|
340
|
+
loadJSON({
|
|
341
|
+
// このパターンからはLocales.FRENCHのファイルのみがロードされます
|
|
215
342
|
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
343
|
+
locale: Locales.FRENCH,
|
|
216
344
|
}),
|
|
217
345
|
],
|
|
218
346
|
};
|
|
347
|
+
|
|
348
|
+
export default config;
|
|
219
349
|
```
|
|
220
350
|
|
|
221
|
-
###
|
|
351
|
+
### 動作の仕組み
|
|
222
352
|
|
|
223
|
-
|
|
353
|
+
- 検出:`source`ビルダーからグロブを構築し、一致するJSONファイルを収集します。
|
|
354
|
+
- 取り込み:各JSONファイルを提供された`locale`を持つIntlayer辞書としてロードします。
|
|
355
|
+
- 読み取り専用:出力ファイルの書き込みやフォーマットは行いません。ラウンドトリップ同期が必要な場合は`syncJSON`を使用してください。
|
|
356
|
+
- 自動補完対応:`fill`パターンを定義し、`intlayer content fill`がCLI経由で不足しているキーを埋めることができます。
|
|
224
357
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
358
|
+
### API
|
|
359
|
+
|
|
360
|
+
```ts
|
|
361
|
+
loadJSON({
|
|
362
|
+
// JSONへのパスを構築します。構造にロケールセグメントがない場合、`locale`はオプションです
|
|
363
|
+
source: ({ key, locale }) => string,
|
|
364
|
+
|
|
365
|
+
// このプラグインインスタンスによってロードされる辞書のターゲットロケール
|
|
366
|
+
// デフォルトは configuration.internationalization.defaultLocale
|
|
367
|
+
locale?: Locale,
|
|
368
|
+
|
|
369
|
+
// ソースを識別するためのオプションのラベル
|
|
370
|
+
location?: string, // デフォルト: "plugin"
|
|
371
|
+
|
|
372
|
+
// 他のソースとのコンフリクト解決に使用される優先度
|
|
373
|
+
priority?: number, // デフォルト: 0
|
|
374
|
+
|
|
375
|
+
// JSONコンテンツのオプションのフォーマッター
|
|
376
|
+
format?: 'intlayer' | 'icu' | 'i18next', // デフォルト: 'intlayer'
|
|
377
|
+
|
|
378
|
+
// 単一ファイルをトップレベルキーごとに1つの辞書に分割(自動検出)
|
|
379
|
+
splitKeys?: boolean,
|
|
380
|
+
});
|
|
231
381
|
```
|
|
232
382
|
|
|
233
|
-
|
|
383
|
+
#### `format` ('intlayer' | 'icu' | 'i18next')
|
|
234
384
|
|
|
235
|
-
|
|
385
|
+
JSONファイルをロードする際に辞書コンテンツに使用するフォーマッターを指定します。これにより、さまざまなi18nライブラリと互換性のある異なるメッセージフォーマット構文を使用できます。
|
|
236
386
|
|
|
237
|
-
|
|
387
|
+
- `'intlayer'`: デフォルトのIntlayerフォーマッター(デフォルト)。
|
|
388
|
+
- `'icu'`: ICUメッセージフォーマットを使用します(react-intl、vue-i18nなどのライブラリと互換性があります)。
|
|
389
|
+
- `'i18next'`: i18nextメッセージフォーマットを使用します(i18next、next-i18next、Solid-i18nextと互換性があります)。
|
|
238
390
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
})
|
|
244
|
-
|
|
391
|
+
**例:**
|
|
392
|
+
|
|
393
|
+
```ts
|
|
394
|
+
loadJSON({
|
|
395
|
+
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
396
|
+
locale: Locales.ENGLISH,
|
|
397
|
+
format: "icu", // 互換性のためにICUフォーマットを使用
|
|
398
|
+
}),
|
|
245
399
|
```
|
|
246
400
|
|
|
247
|
-
|
|
401
|
+
#### `splitKeys` (boolean)
|
|
248
402
|
|
|
249
|
-
|
|
403
|
+
[`syncJSON`](#splitkeys-boolean) と同じ動作です。単一のJSONファイルがファーストレベルのキーによって複数の名前空間をグループ化する場合、各トップレベルキーが独自の辞書になります。
|
|
250
404
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
405
|
+
- `undefined` (デフォルト): **自動検出** — `source`パターンに`{key}`セグメントがない場合に分割され、それ以外の場合は単一の辞書になります。
|
|
406
|
+
- `true` / `false`: 分割を強制または無効にします。
|
|
407
|
+
|
|
408
|
+
```ts
|
|
409
|
+
loadJSON({
|
|
410
|
+
source: ({ locale }) => `./messages/${locale}.json`,
|
|
411
|
+
format: "icu",
|
|
412
|
+
// splitKeys auto-enabled: `Hero`、`Nav`、`About`などがそれぞれ辞書になります
|
|
413
|
+
}),
|
|
257
414
|
```
|
|
258
415
|
|
|
416
|
+
### Behavior and conventions
|
|
417
|
+
|
|
418
|
+
- `source`マスクにロケールプレースホルダーが含まれている場合、選択された`locale`のファイルのみが取り込まれます。
|
|
419
|
+
- マスクに`{key}`セグメントがない場合、ファイルの各トップレベルキーがデフォルトで独自の辞書になります([`splitKeys`](#splitkeys-boolean)を参照)。代わりにファイル全体を単一の`index`辞書として読み込むには、`splitKeys: false`を設定します。
|
|
420
|
+
- キーは、`source`ビルダーの`{key}`プレースホルダーを置換することでファイルパスから派生します。
|
|
421
|
+
- プラグインは検出されたファイルのみを使用し、不足しているロケールやキーを捏造することはありません。
|
|
422
|
+
- `fill`パスは`source`から推測され、CLI経由で不足している値を更新するために使用されます(オプトインした場合)。
|
|
423
|
+
|
|
424
|
+
## Conflict resolution
|
|
425
|
+
|
|
426
|
+
同じ翻訳キーが複数のJSONソースに存在する場合:
|
|
427
|
+
|
|
428
|
+
1. 最も優先度の高いプラグインが最終的な値を決定します
|
|
429
|
+
2. 優先度の低いソースは、欠落しているキーのフォールバックとして使用されます
|
|
430
|
+
3. これにより、レガシー翻訳を維持しつつ、新しい構造へ段階的に移行できます
|
|
431
|
+
|
|
259
432
|
## CLI
|
|
260
433
|
|
|
261
434
|
同期されたJSONファイルは他の `.content` ファイルとして扱われます。つまり、すべてのintlayerコマンドが同期されたJSONファイルに対して利用可能です。以下を含みます:
|
|
@@ -268,7 +441,7 @@ plugins: [
|
|
|
268
441
|
|
|
269
442
|
See [Intlayer CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/cli/index.md) for more details.
|
|
270
443
|
|
|
271
|
-
##
|
|
444
|
+
## Limitations (current)
|
|
272
445
|
|
|
273
446
|
- サードパーティライブラリを対象とする場合、挿入や複数形/ICUのサポートはありません。
|
|
274
447
|
- 非Intlayerランタイム向けのビジュアルエディタはまだ利用できません。
|
package/docs/ja/releases/v8.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-09-22
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-06-14
|
|
4
4
|
title: Intlayer v8 の新機能
|
|
5
5
|
description: Intlayer v8 の新機能を紹介します。開発者体験、自動コンテンツ検出、スキーマ検証によるデータ整合性、辞書管理における主な改善点を解説します。
|
|
6
6
|
keywords:
|
|
@@ -199,7 +199,7 @@ v7 では、プロバイダーが定義されていない場合、Markdown ノ
|
|
|
199
199
|
|
|
200
200
|
**3. ユーティリティ関数の使用:**
|
|
201
201
|
|
|
202
|
-
```
|
|
202
|
+
```typescript
|
|
203
203
|
import { renderMarkdown } from "solid-intlayer/markdown";
|
|
204
204
|
|
|
205
205
|
return <div>{renderMarkdown("# My Title")}</div>;
|
|
@@ -334,7 +334,7 @@ v7 では、プロバイダーが定義されていない場合、Markdown ノ
|
|
|
334
334
|
|
|
335
335
|
**1. 直接の使用:**
|
|
336
336
|
|
|
337
|
-
Angular
|
|
337
|
+
Angular では、標準 of `[innerHTML]` バインディングを使用できます。
|
|
338
338
|
|
|
339
339
|
```html
|
|
340
340
|
<div [innerHTML]="'<p>Hello World</p>'"></div>
|
|
@@ -409,6 +409,16 @@ v7 では、プロバイダーが定義されていない場合、Markdown ノ
|
|
|
409
409
|
|
|
410
410
|
---
|
|
411
411
|
|
|
412
|
+
## YAML & Markdown コンテンツファイル (v8.10.0)
|
|
413
|
+
|
|
414
|
+
`.content.md` および `.content.yaml` ファイル拡張子を使用して、コンテンツを直接宣言できるようになりました。これは、長文のコンテンツ、ブログ、ドキュメント、プライバシーポリシーに最適です。
|
|
415
|
+
|
|
416
|
+
これらのファイルはビジュアルエディター(Visual Editor)から直接編集可能であり、非技術的なチームメンバーにとっても合理化されたワークフローを提供します。
|
|
417
|
+
|
|
418
|
+
詳細については、[YAML コンテンツファイルのドキュメント](https://intlayer.org/ja/doc/concept/content#yaml-content-file) および [Markdown コンテンツファイルのドキュメント](https://intlayer.org/ja/doc/concept/content/markdown) を参照してください。
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
412
422
|
## カスタム URL リライト
|
|
413
423
|
|
|
414
424
|
Intlayer v8 は **カスタム URL リライト** を導入し、標準の `/locale/path` 構造と異なるロケール固有のパスを定義できるようになります。これはローカルSEOの改善や、英語以外のユーザーにとってより自然なユーザーエクスペリエンスを提供するための強力な機能です。
|
|
@@ -753,6 +763,61 @@ export default {
|
|
|
753
763
|
</Tab>
|
|
754
764
|
</Tabs>
|
|
755
765
|
|
|
766
|
+
## Unicode CLDR 複数形ルール (v8.8.0)
|
|
767
|
+
|
|
768
|
+
Unicode CLDR プロジェクトで定義された複数形ルールに基づく新しい `plural` ノードヘルパーが導入され、複雑な言語のサポートが向上しました。
|
|
769
|
+
|
|
770
|
+
```typescript fileName="src/openings.content.ts"
|
|
771
|
+
import { plural, t, type Dictionary } from "intlayer";
|
|
772
|
+
|
|
773
|
+
const openingsContent = {
|
|
774
|
+
key: "total_openings",
|
|
775
|
+
content: {
|
|
776
|
+
totalOpenings: t({
|
|
777
|
+
ja: plural({
|
|
778
|
+
other: "{{count}} 個の空き",
|
|
779
|
+
}),
|
|
780
|
+
en: plural({
|
|
781
|
+
one: "{{count}} opening",
|
|
782
|
+
other: "{{count}} openings",
|
|
783
|
+
}),
|
|
784
|
+
fr: plural({
|
|
785
|
+
one: "{{count}} offre",
|
|
786
|
+
other: "{{count}} offres",
|
|
787
|
+
}),
|
|
788
|
+
}),
|
|
789
|
+
},
|
|
790
|
+
} satisfies Dictionary;
|
|
791
|
+
|
|
792
|
+
export default openingsContent;
|
|
793
|
+
```
|
|
794
|
+
|
|
795
|
+
その後、フレームワークコンポーネント内で動的にカウントを渡すことができます:
|
|
796
|
+
|
|
797
|
+
```tsx
|
|
798
|
+
import type { FC } from "react";
|
|
799
|
+
import { useIntlayer } from "react-intlayer";
|
|
800
|
+
|
|
801
|
+
const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
|
|
802
|
+
const { totalOpenings } = useIntlayer("total_openings");
|
|
803
|
+
|
|
804
|
+
return (
|
|
805
|
+
<div>
|
|
806
|
+
{/* 英語の場合: */}
|
|
807
|
+
{/* count=0 → "0 openings" (other) */}
|
|
808
|
+
{/* count=1 → "1 opening" (one) */}
|
|
809
|
+
{/* count=2 → "2 openings" (other) */}
|
|
810
|
+
{/* count=21 → "21 openings" (other) */}
|
|
811
|
+
<p>{totalOpenings(count)}</p>
|
|
812
|
+
</div>
|
|
813
|
+
);
|
|
814
|
+
};
|
|
815
|
+
```
|
|
816
|
+
|
|
817
|
+
詳細については、[複数形化のドキュメント](https://intlayer.org/ja/doc/concept/content/plural) を参照してください。
|
|
818
|
+
|
|
819
|
+
---
|
|
820
|
+
|
|
756
821
|
## コンテンツスキーマ検証
|
|
757
822
|
|
|
758
823
|
Intlayer v8 では、辞書に対するスキーマ検証が導入されました。Zod を使って設定内に再利用可能なバリデーションスキーマを定義し、それをコンテンツファイルに適用できます。これにより、コンテンツが常に期待される構造に準拠していることが保証され、ビルド時にエラーを検出できます。
|
|
@@ -797,6 +862,34 @@ export default aboutPageMetaContent;
|
|
|
797
862
|
|
|
798
863
|
---
|
|
799
864
|
|
|
865
|
+
## TypeScript: IntlayerNode プリミティブアクセサー
|
|
866
|
+
|
|
867
|
+
`IntlayerNode` 型が更新され、コンテンツノード上で直接 JavaScript のプリミティブメソッドを呼び出せるようになりました。これにより、ローカライズされたコンテンツを、標準の文字列、数値、真偽値、または配列のプリミティブであるかのように直接操作できます。
|
|
868
|
+
|
|
869
|
+
React、Preact、Solid、Svelte、Vue、および Angular でサポートされています。
|
|
870
|
+
|
|
871
|
+
### 文字列の例
|
|
872
|
+
|
|
873
|
+
```typescript
|
|
874
|
+
content.placeholder; // IntlayerNode<string> を返す
|
|
875
|
+
content.placeholder.value; // string を返す
|
|
876
|
+
content.placeholder.toString(); // string を返す
|
|
877
|
+
content.placeholder.toLowerCase(); // string を返す
|
|
878
|
+
String(content.placeholder); // string を返す
|
|
879
|
+
content.placeholder.toUpperCase(); // 大文字に変換された string を返す
|
|
880
|
+
content.placeholder.replace("a", "b"); // 変更された string を返す
|
|
881
|
+
```
|
|
882
|
+
|
|
883
|
+
### 配列の例
|
|
884
|
+
|
|
885
|
+
```typescript
|
|
886
|
+
content.myArrayOfString // IntlayerNode<Array<string>> を返す
|
|
887
|
+
content.myArrayOfString.find(...) // 要素を返す
|
|
888
|
+
content.myArrayOfString.join(', ') // 結合された string を返す
|
|
889
|
+
```
|
|
890
|
+
|
|
891
|
+
---
|
|
892
|
+
|
|
800
893
|
### 強化された自動コンテンツ検出
|
|
801
894
|
|
|
802
895
|
v8 では、Intlayer がコンテンツ文字列内の Markdown 構文、HTML タグ、および変数挿入を自動的に検出します。これにより、`md()`、`html()`、`insert()` といったヘルパー関数を省略できることが多くなります。
|
|
@@ -1002,6 +1095,17 @@ Intlayer の VSCode 拡張機能は v8 で大幅なアップデートを受け
|
|
|
1002
1095
|
|
|
1003
1096
|
---
|
|
1004
1097
|
|
|
1098
|
+
## ツール: C++ ウォッチャー & OXC ベースの LSP (v8.12.0)
|
|
1099
|
+
|
|
1100
|
+
Intlayer v8.12.0 は、開発者体験に大きな改善をもたらします:
|
|
1101
|
+
|
|
1102
|
+
- **Parcel Watcher**: コンテンツウォッチャーが `chokidar` から `@parcel/watcher` に移行されました。ネイティブの C++ ファイル監視を活用することで、より高速なアップデートと大幅なメモリ消費の削減を実現します。
|
|
1103
|
+
- **新しい Language Server Protocol (LSP)**: まったく新しい LSP が利用可能になりました。OXC ベースのパースで構築されており、IDE や AI エージェントが `useIntlayer('my-key')` の呼び出しと対応する `.content` ファイルをシームレスにリンク(およびその逆)できるように支援します。
|
|
1104
|
+
|
|
1105
|
+
詳細については、[LSP のドキュメント](https://intlayer.org/ja/doc/lsp) を参照してください。
|
|
1106
|
+
|
|
1107
|
+
---
|
|
1108
|
+
|
|
1005
1109
|
## コンパイラの最適化
|
|
1006
1110
|
|
|
1007
1111
|
Intlayer v8 には Markdown と HTML コンパイラ向けの新しいキャッシング層が導入されました。これにより、同じ設定で同一のコンテンツ文字列は一度だけ解析されるため、再レンダリング時や複数箇所で同じコンテンツを使用する場合のオーバーヘッドが大幅に削減されます。
|
|
@@ -1057,6 +1161,48 @@ Intlayer v8 には Markdown と HTML コンパイラ向けの新しいキャッ
|
|
|
1057
1161
|
|
|
1058
1162
|
---
|
|
1059
1163
|
|
|
1164
|
+
## 実験的なビルド最適化: Minify & Purge (v8.7.0)
|
|
1165
|
+
|
|
1166
|
+
Intlayer v8.7.0 では、本番環境のバンドルを最適化するために設計された、`intlayer.config.ts` 内の新しい実験的なビルド機能が導入されました:
|
|
1167
|
+
|
|
1168
|
+
- **辞書のミニファイ (Minification)**: 辞書ファイルをミニファイしてサイズを削減します。
|
|
1169
|
+
- **未使用キーのパージ (Purging)**: 辞書から未使用の翻訳キーをスキャンして削除し、アクティブなキーを短い文字にリネームします(例: `"products" -> "a"`, `"pricing" -> "b"`)。これにより、バンドルサイズが最大 5% 削減されます。
|
|
1170
|
+
- **TypeScript チェックの無効化**: コンパイルステップ中の TypeScript 型チェックを無効にすることで、ビルドを高速化します。
|
|
1171
|
+
|
|
1172
|
+
```typescript fileName="intlayer.config.ts"
|
|
1173
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
1174
|
+
|
|
1175
|
+
const config: IntlayerConfig = {
|
|
1176
|
+
internationalization: {
|
|
1177
|
+
locales: [Locales.ENGLISH, Locales.FRENCH],
|
|
1178
|
+
defaultLocale: Locales.ENGLISH,
|
|
1179
|
+
},
|
|
1180
|
+
dictionary: {
|
|
1181
|
+
importMode: "dynamic",
|
|
1182
|
+
},
|
|
1183
|
+
build: {
|
|
1184
|
+
/**
|
|
1185
|
+
* バンドルサイズを削減するために辞書をミニファイします。
|
|
1186
|
+
*/
|
|
1187
|
+
minify: true,
|
|
1188
|
+
|
|
1189
|
+
/**
|
|
1190
|
+
* 辞書内の未使用キーをパージします。
|
|
1191
|
+
*/
|
|
1192
|
+
purge: true,
|
|
1193
|
+
|
|
1194
|
+
/**
|
|
1195
|
+
* ビルド時に TypeScript の型チェックを行うかどうかを示します。
|
|
1196
|
+
*/
|
|
1197
|
+
checkTypes: false,
|
|
1198
|
+
},
|
|
1199
|
+
};
|
|
1200
|
+
|
|
1201
|
+
export default config;
|
|
1202
|
+
```
|
|
1203
|
+
|
|
1204
|
+
---
|
|
1205
|
+
|
|
1060
1206
|
## 柔軟性: 統一されたインポートモード
|
|
1061
1207
|
|
|
1062
1208
|
`live` ブールプロパティは、より包括的な `importMode` プロパティに置き換えられ、非推奨になりました。これにより、辞書をどのように読み込むか(静的、動的、またはライブ同期)を明示的に定義できるようになります。
|
|
@@ -1076,7 +1222,7 @@ Intlayer v8 には Markdown と HTML コンパイラ向けの新しいキャッ
|
|
|
1076
1222
|
|
|
1077
1223
|
注: Intlayer v8 では、`importMode` プロパティは `intlayer.config.ts` の `build` 設定から `dictionary` 設定へ移動しました。これにより、すべての辞書に対するデフォルトのインポートモードを定義しつつ、各辞書ごとに上書きできるようになります。
|
|
1078
1224
|
|
|
1079
|
-
|
|
1225
|
+
**グローバル設定 of 例:**
|
|
1080
1226
|
|
|
1081
1227
|
```typescript fileName="intlayer.config.ts"
|
|
1082
1228
|
export default {
|
|
@@ -1204,6 +1350,49 @@ Svelte 内の Markdown および HTML コンテンツは、文字列化(string
|
|
|
1204
1350
|
|
|
1205
1351
|
---
|
|
1206
1352
|
|
|
1353
|
+
## Angular サポート: Vite バンドラー (v8.11.0)
|
|
1354
|
+
|
|
1355
|
+
Angular ユーザー向けに、Intlayer は新しいカスタム esbuild プラグインを介して Vite バンドラーをネイティブにサポートするようになり、開発およびビルド時間が短縮されました。
|
|
1356
|
+
|
|
1357
|
+
設定の詳細については、[Angular 環境のドキュメント](https://intlayer.org/ja/doc/environment/angular) を参照してください。
|
|
1358
|
+
|
|
1359
|
+
---
|
|
1360
|
+
|
|
1361
|
+
## サイトマップ生成 (v8.6.0)
|
|
1362
|
+
|
|
1363
|
+
Intlayer は、ロケールとルーティングモードに基づいてサイトマップを自動的に生成するようになりました。これは、TanStack Router などのルーターアーキテクチャにおける SEO 最適化に特に役立ちます:
|
|
1364
|
+
|
|
1365
|
+
```typescript fileName="src/routes/sitemap.xml.ts"
|
|
1366
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
1367
|
+
import { generateSitemap } from "intlayer";
|
|
1368
|
+
|
|
1369
|
+
const SITE_URL = (
|
|
1370
|
+
import.meta.env.VITE_SITE_URL ?? "http://localhost:3000"
|
|
1371
|
+
).replace(/\/$/, "");
|
|
1372
|
+
|
|
1373
|
+
export const Route = createFileRoute("/sitemap.xml")({
|
|
1374
|
+
server: {
|
|
1375
|
+
handlers: {
|
|
1376
|
+
GET: async () => {
|
|
1377
|
+
const sitemap = generateSitemap(
|
|
1378
|
+
[
|
|
1379
|
+
{ path: "/", changefreq: "daily", priority: 1.0 },
|
|
1380
|
+
{ path: "/about", changefreq: "monthly", priority: 0.8 },
|
|
1381
|
+
],
|
|
1382
|
+
{ siteUrl: SITE_URL }
|
|
1383
|
+
);
|
|
1384
|
+
|
|
1385
|
+
return new Response(sitemap, {
|
|
1386
|
+
headers: { "Content-Type": "application/xml" },
|
|
1387
|
+
});
|
|
1388
|
+
},
|
|
1389
|
+
},
|
|
1390
|
+
},
|
|
1391
|
+
});
|
|
1392
|
+
```
|
|
1393
|
+
|
|
1394
|
+
---
|
|
1395
|
+
|
|
1207
1396
|
## v7 からの移行ノート
|
|
1208
1397
|
|
|
1209
1398
|
### 設定の変更
|