@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
package/docs/uk/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 @@ Intlayer v8 вносить значні покращення в обробку
|
|
|
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("# Мій заголовок")}</div>;
|
|
@@ -409,6 +409,16 @@ Intlayer v8 вносить значні покращення в обробку
|
|
|
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/doc/concept/content#yaml-content-file) та [Документацію про файли контенту Markdown](https://intlayer.org/doc/concept/content/markdown).
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
412
422
|
## Користувацькі переписування URL
|
|
413
423
|
|
|
414
424
|
Intlayer v8 додає підтримку **користувацьких переписувань URL**, що дозволяє визначати локалізовані шляхи, які відрізняються від стандартної структури `/locale/path`. Це потужна можливість для покращення локального SEO та забезпечення більш природного досвіду користувача для тих, хто не говорить англійською.
|
|
@@ -753,6 +763,60 @@ export default {
|
|
|
753
763
|
</Tab>
|
|
754
764
|
</Tabs>
|
|
755
765
|
|
|
766
|
+
---
|
|
767
|
+
|
|
768
|
+
## Правила множини Unicode CLDR (v8.8.0)
|
|
769
|
+
|
|
770
|
+
Було впроваджено новий хелпер вузла `plural` на основі правил множини, визначених проектом Unicode CLDR, що покращує підтримку складних мов.
|
|
771
|
+
|
|
772
|
+
```typescript fileName="src/openings.content.ts"
|
|
773
|
+
import { plural, t, type Dictionary } from "intlayer";
|
|
774
|
+
|
|
775
|
+
const openingsContent = {
|
|
776
|
+
key: "total_openings",
|
|
777
|
+
content: {
|
|
778
|
+
totalOpenings: t({
|
|
779
|
+
en: plural({
|
|
780
|
+
one: "{{count}} opening",
|
|
781
|
+
other: "{{count}} openings",
|
|
782
|
+
}),
|
|
783
|
+
fr: plural({
|
|
784
|
+
one: "{{count}} offre",
|
|
785
|
+
other: "{{count}} offres",
|
|
786
|
+
}),
|
|
787
|
+
}),
|
|
788
|
+
},
|
|
789
|
+
} satisfies Dictionary;
|
|
790
|
+
|
|
791
|
+
export default openingsContent;
|
|
792
|
+
```
|
|
793
|
+
|
|
794
|
+
Після цього ви можете динамічно передавати кількість у компонент вашого фреймворку:
|
|
795
|
+
|
|
796
|
+
```tsx
|
|
797
|
+
import type { FC } from "react";
|
|
798
|
+
import { useIntlayer } from "react-intlayer";
|
|
799
|
+
|
|
800
|
+
const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
|
|
801
|
+
const { totalOpenings } = useIntlayer("total_openings");
|
|
802
|
+
|
|
803
|
+
return (
|
|
804
|
+
<div>
|
|
805
|
+
{/* Англійською: */}
|
|
806
|
+
{/* count=0 → "0 openings" (other) */}
|
|
807
|
+
{/* count=1 → "1 opening" (one) */}
|
|
808
|
+
{/* count=2 → "2 openings" (other) */}
|
|
809
|
+
{/* count=21 → "21 openings" (other) */}
|
|
810
|
+
<p>{totalOpenings(count)}</p>
|
|
811
|
+
</div>
|
|
812
|
+
);
|
|
813
|
+
};
|
|
814
|
+
```
|
|
815
|
+
|
|
816
|
+
Для отримання додаткової інформації див. [Документацію про плюралізацію](https://intlayer.org/doc/concept/content/plural).
|
|
817
|
+
|
|
818
|
+
---
|
|
819
|
+
|
|
756
820
|
## Валідація схем контенту
|
|
757
821
|
|
|
758
822
|
Intlayer v8 впроваджує валідацію схем для словників. Тепер ви можете визначати повторно використовувані схеми валідації у вашій конфігурації за допомогою Zod і застосовувати їх до ваших файлів контенту. Це гарантує, що ваш контент завжди відповідає очікуваній структурі, виявляючи помилки під час збірки.
|
|
@@ -797,6 +861,34 @@ export default aboutPageMetaContent;
|
|
|
797
861
|
|
|
798
862
|
---
|
|
799
863
|
|
|
864
|
+
## TypeScript: Примітивні аксесори IntlayerNode
|
|
865
|
+
|
|
866
|
+
Тип `IntlayerNode` було оновлено, щоб дозволити виклик примітивних методів JavaScript безпосередньо на вузлах контенту. Це дає змогу взаємодіяти з вашим локалізованим контентом так, ніби це стандартний примітив рядка, числа, булевого значення або масиву.
|
|
867
|
+
|
|
868
|
+
Підтримується в React, Preact, Solid, Svelte, Vue та Angular.
|
|
869
|
+
|
|
870
|
+
### Приклад з рядком (String)
|
|
871
|
+
|
|
872
|
+
```typescript
|
|
873
|
+
content.placeholder; // Повертає IntlayerNode<string>
|
|
874
|
+
content.placeholder.value; // Повертає string
|
|
875
|
+
content.placeholder.toString(); // Повертає string
|
|
876
|
+
content.placeholder.toLowerCase(); // Повертає string
|
|
877
|
+
String(content.placeholder); // Повертає string
|
|
878
|
+
content.placeholder.toUpperCase(); // Повертає рядок у верхньому регістрі
|
|
879
|
+
content.placeholder.replace("a", "b"); // Повертає змінений рядок
|
|
880
|
+
```
|
|
881
|
+
|
|
882
|
+
### Приклад з масивом (Array)
|
|
883
|
+
|
|
884
|
+
```typescript
|
|
885
|
+
content.myArrayOfString // Повертає IntlayerNode<Array<string>>
|
|
886
|
+
content.myArrayOfString.find(...) // Повертає елемент
|
|
887
|
+
content.myArrayOfString.join(', ') // Повертає об'єднаний рядок
|
|
888
|
+
```
|
|
889
|
+
|
|
890
|
+
---
|
|
891
|
+
|
|
800
892
|
### Покращене автоматичне виявлення контенту
|
|
801
893
|
|
|
802
894
|
У v8 Intlayer інтелектуально виявляє синтаксис Markdown, HTML-теги та вставки змінних у рядках контенту. Це означає, що ви часто можете опустити допоміжні функції, такі як `md()`, `html()` або `insert()`.
|
|
@@ -1002,9 +1094,20 @@ export default {
|
|
|
1002
1094
|
|
|
1003
1095
|
---
|
|
1004
1096
|
|
|
1097
|
+
## Інструменти: C++ Watcher та LSP на базі OXC (v8.12.0)
|
|
1098
|
+
|
|
1099
|
+
Intlayer v8.12.0 приносить значні покращення у досвід розробника:
|
|
1100
|
+
|
|
1101
|
+
- **Parcel Watcher**: Спостерігач за контентом (content watcher) було мігровано з `chokidar` на `@parcel/watcher`, що використовує нативне спостереження за файлами на C++ для забезпечення швидших оновлень та значно меншого споживання пам'яті.
|
|
1102
|
+
- **Новий Language Server Protocol (LSP)**: Тепер доступний абсолютно новий LSP. Створений на основі парсингу OXC, він допомагає вашій IDE та AI-агентам безперешкодно пов'язувати виклики `useIntlayer('my-key')` з відповідними файлами `.content` і навпаки.
|
|
1103
|
+
|
|
1104
|
+
Для отримання додаткової інформації див. [Документацію LSP](https://intlayer.org/doc/lsp).
|
|
1105
|
+
|
|
1106
|
+
---
|
|
1107
|
+
|
|
1005
1108
|
## Оптимізації компілятора
|
|
1006
1109
|
|
|
1007
|
-
Intlayer v8 включає новий шар кешування для компілятора Markdown та HTML. Це гарантує, що ідентичні рядки контенту з однаковою конфігурацією парсяться лише один раз, що значно зменшує витрати під час повторних відтворень або при використанні одного й того
|
|
1110
|
+
Intlayer v8 включає новий шар кешування для компілятора Markdown та HTML. Це гарантує, що ідентичні рядки контенту з однаковою конфігурацією парсяться лише один раз, що значно зменшує витрати під час повторних відтворень або при використанні одного й того же контенту в декількох місцях.
|
|
1008
1111
|
|
|
1009
1112
|
<Tabs group='bundler'>
|
|
1010
1113
|
<Tab label="Next.js" value="nextjs">
|
|
@@ -1057,6 +1160,48 @@ Intlayer v8 включає новий шар кешування для комп
|
|
|
1057
1160
|
|
|
1058
1161
|
---
|
|
1059
1162
|
|
|
1163
|
+
## Експериментальні оптимізації збірки: Minify & Purge (v8.7.0)
|
|
1164
|
+
|
|
1165
|
+
Intlayer v8.7.0 представляє нові експериментальні функції збірки у вашому `intlayer.config.ts`, розроблені для оптимізації вашого production-бандлу:
|
|
1166
|
+
|
|
1167
|
+
- **Мініфікація словників (Dictionary Minification)**: Мініфікує файли словників для зменшення їхнього розміру.
|
|
1168
|
+
- **Очищення невикористовуваних ключів (Unused Key Purging)**: Сканує та видаляє невикористовувані ключі перекладу зі словників, перейменовуючи активні ключі на короткі символи (наприклад, `"products" -> "a"`, `"pricing" -> "b"`). Це зменшує розмір бандлу до 5%.
|
|
1169
|
+
- **Вимкнення перевірок TypeScript**: Прискорює збірку шляхом вимкнення типізації TypeScript під час кроку компіляції.
|
|
1170
|
+
|
|
1171
|
+
```typescript fileName="intlayer.config.ts"
|
|
1172
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
1173
|
+
|
|
1174
|
+
const config: IntlayerConfig = {
|
|
1175
|
+
internationalization: {
|
|
1176
|
+
locales: [Locales.ENGLISH, Locales.FRENCH],
|
|
1177
|
+
defaultLocale: Locales.ENGLISH,
|
|
1178
|
+
},
|
|
1179
|
+
dictionary: {
|
|
1180
|
+
importMode: "dynamic",
|
|
1181
|
+
},
|
|
1182
|
+
build: {
|
|
1183
|
+
/**
|
|
1184
|
+
* Мініфікувати словники для зменшення розміру бандлу.
|
|
1185
|
+
*/
|
|
1186
|
+
minify: true,
|
|
1187
|
+
|
|
1188
|
+
/**
|
|
1189
|
+
* Очистити невикористовувані ключі у словниках
|
|
1190
|
+
*/
|
|
1191
|
+
purge: true,
|
|
1192
|
+
|
|
1193
|
+
/**
|
|
1194
|
+
* Вказує, чи повинна збірка перевіряти типи TypeScript
|
|
1195
|
+
*/
|
|
1196
|
+
checkTypes: false,
|
|
1197
|
+
},
|
|
1198
|
+
};
|
|
1199
|
+
|
|
1200
|
+
export default config;
|
|
1201
|
+
```
|
|
1202
|
+
|
|
1203
|
+
---
|
|
1204
|
+
|
|
1060
1205
|
## Гнучкість: Уніфікований режим імпорту
|
|
1061
1206
|
|
|
1062
1207
|
Властивість булевого типу `live` була застаріла на користь більш всеосяжної властивості `importMode`. Це дозволяє явно визначати, як словники мають завантажуватися: статично, динамічно або через live-синхронізацію.
|
|
@@ -1204,6 +1349,49 @@ export default {
|
|
|
1204
1349
|
|
|
1205
1350
|
---
|
|
1206
1351
|
|
|
1352
|
+
## Підтримка Angular: Vite Bundler (v8.11.0)
|
|
1353
|
+
|
|
1354
|
+
Для користувачів Angular Intlayer тепер нативно підтримує бандлер Vite через новий кастомний плагін esbuild, що прискорює час розробки та збірки.
|
|
1355
|
+
|
|
1356
|
+
Детальніше про конфігурацію див. у [Документації середовища Angular](https://intlayer.org/doc/environment/angular).
|
|
1357
|
+
|
|
1358
|
+
---
|
|
1359
|
+
|
|
1360
|
+
## Генерація карти сайту (Sitemap) (v8.6.0)
|
|
1361
|
+
|
|
1362
|
+
Intlayer тепер автоматично генерує карти сайтів (sitemaps) на основі ваших локалей та режиму маршрутизації. Це особливо корисно для SEO-оптимізації в архітектурах роутерів, таких як TanStack Router:
|
|
1363
|
+
|
|
1364
|
+
```typescript fileName="src/routes/sitemap.xml.ts"
|
|
1365
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
1366
|
+
import { generateSitemap } from "intlayer";
|
|
1367
|
+
|
|
1368
|
+
const SITE_URL = (
|
|
1369
|
+
import.meta.env.VITE_SITE_URL ?? "http://localhost:3000"
|
|
1370
|
+
).replace(/\/$/, "");
|
|
1371
|
+
|
|
1372
|
+
export const Route = createFileRoute("/sitemap.xml")({
|
|
1373
|
+
server: {
|
|
1374
|
+
handlers: {
|
|
1375
|
+
GET: async () => {
|
|
1376
|
+
const sitemap = generateSitemap(
|
|
1377
|
+
[
|
|
1378
|
+
{ path: "/", changefreq: "daily", priority: 1.0 },
|
|
1379
|
+
{ path: "/about", changefreq: "monthly", priority: 0.8 },
|
|
1380
|
+
],
|
|
1381
|
+
{ siteUrl: SITE_URL }
|
|
1382
|
+
);
|
|
1383
|
+
|
|
1384
|
+
return new Response(sitemap, {
|
|
1385
|
+
headers: { "Content-Type": "application/xml" },
|
|
1386
|
+
});
|
|
1387
|
+
},
|
|
1388
|
+
},
|
|
1389
|
+
},
|
|
1390
|
+
});
|
|
1391
|
+
```
|
|
1392
|
+
|
|
1393
|
+
---
|
|
1394
|
+
|
|
1207
1395
|
## Примітки до міграції з v7
|
|
1208
1396
|
|
|
1209
1397
|
### Зміни в конфігурації
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-14
|
|
3
|
+
updatedAt: 2026-06-14
|
|
4
|
+
title: Новий Intlayer v9 - Що нового?
|
|
5
|
+
description: Дізнайтеся, що нового в Intlayer v9. Представляємо сумісні пакети швидкої заміни (drop-in) для популярних бібліотек i18n та підтримку Collections, Variants та Dynamic Records.
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- Сумісність
|
|
9
|
+
- Міграція
|
|
10
|
+
- Колекції
|
|
11
|
+
- Варіанти
|
|
12
|
+
- Динамічні записи
|
|
13
|
+
- i18next
|
|
14
|
+
- next-intl
|
|
15
|
+
- vue-i18n
|
|
16
|
+
slugs:
|
|
17
|
+
- doc
|
|
18
|
+
- releases
|
|
19
|
+
- v9
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Новий Intlayer v9 - Що нового?
|
|
24
|
+
|
|
25
|
+
Ласкаво просимо до Intlayer v9! Цей мажорний реліз є величезною віхою у спрощенні шляху міграції на Intlayer завдяки **Compat Adapter Packages** (пакетам адаптерів сумісності) для основних бібліотек i18n (`react-i18next`, `next-intl`, `vue-i18n` тощо) та додає підтримку складних структур контенту: **Collections** (Колекцій), **Variants** (Варіантів) та **Dynamic Records** (Динамічних записів).
|
|
26
|
+
|
|
27
|
+
## Зміст
|
|
28
|
+
|
|
29
|
+
<TOC levels={[2]} maxDepth={1} />
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Пакети адаптерів сумісності (Compat Adapter Packages)
|
|
34
|
+
|
|
35
|
+
Мігрувати на Intlayer з популярних бібліотек i18n тепер простіше, ніж будь-коли. Ми створили п'ять пакетів сумісності, які надають **точно такий самий публічний API**, як і стандартні бібліотеки i18n, але делегують усю роботу з перекладу Intlayer під час виконання (runtime).
|
|
36
|
+
|
|
37
|
+
### Той самий публічний API зі строгою типізацією
|
|
38
|
+
|
|
39
|
+
Замінивши імпорти, ви отримуєте всі переваги Intlayer (включаючи типізацію на етапі компіляції відповідно до ваших реальних словників) з мінімальними змінами в коді:
|
|
40
|
+
|
|
41
|
+
- `@intlayer/i18next`
|
|
42
|
+
- `@intlayer/react-i18next`
|
|
43
|
+
- `@intlayer/next-intl`
|
|
44
|
+
- `@intlayer/next-i18next`
|
|
45
|
+
- `@intlayer/vue-i18n`
|
|
46
|
+
|
|
47
|
+
Наприклад, просто змініть:
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
import { useTranslation } from "react-i18next";
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
на:
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
import { useTranslation } from "@intlayer/react-i18next";
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Тепер ваші ключі будуть **строго типізовані** відповідно до ваших словників Intlayer, забезпечуючи повне автодоповнення шляхів через крапку (dot-path) у вашій IDE!
|
|
60
|
+
|
|
61
|
+
### Плагіни аліасів для бандлерів (Vite, Next.js, Turbopack)
|
|
62
|
+
|
|
63
|
+
Щоб дозволити міграцію без ручного переписування всіх інструкцій імпорту, кожен пакет адаптера сумісності містить **кастомний плагін для бандлера** (Vite або Next.js) у підшляху `/plugin`.
|
|
64
|
+
|
|
65
|
+
Ці плагіни автоматично перезаписують існуючі імпорти (наприклад, `react-i18next` або `next-intl`) на їхні еквіваленти `@intlayer/*` під час збірки.
|
|
66
|
+
|
|
67
|
+
#### Приклад для Next.js (Webpack / Turbopack)
|
|
68
|
+
|
|
69
|
+
Замість `withIntlayer` оберніть вашу конфігурацію Next.js плагіном сумісності:
|
|
70
|
+
|
|
71
|
+
```ts fileName="next.config.ts"
|
|
72
|
+
import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin";
|
|
73
|
+
import type { NextConfig } from "next";
|
|
74
|
+
|
|
75
|
+
const withIntlayer = createNextI18nPlugin();
|
|
76
|
+
const nextConfig: NextConfig = {};
|
|
77
|
+
|
|
78
|
+
export default withIntlayer(nextConfig);
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### Приклад для Vite (React, Vue, Solid, Svelte)
|
|
82
|
+
|
|
83
|
+
```ts fileName="vite.config.ts"
|
|
84
|
+
import vueI18nVitePlugin from "@intlayer/vue-i18n/plugin";
|
|
85
|
+
|
|
86
|
+
export default defineConfig({
|
|
87
|
+
plugins: [vueI18nVitePlugin()],
|
|
88
|
+
});
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Спільний резолвер часу виконання (Mutualized Runtime Resolver)
|
|
94
|
+
|
|
95
|
+
Усі адаптери сумісності тепер направляють резолв перекладів через єдиний, високооптимізований парсер часу виконання: `@intlayer/core/messageFormat`.
|
|
96
|
+
|
|
97
|
+
- **Interpolate Message**: Резолвить стандартні `{{var}}` (пробіли та dot-paths), аргументи у форматі ICU (`{v, number, percent}` тощо) та прості шаблони `{var}`.
|
|
98
|
+
- **Message Node Resolver**: Резолвить вкладені вузли: `insert()`, `plural()` (правила множини CLDR), `enu()` (перелічення), `gender()`, HTML-теги, масиви та вузли функцій зворотного виклику (callable function nodes).
|
|
99
|
+
- **Tokenized Tag Parser**: Підтримує інлайнові XML/HTML-теги та нумеровані теги (наприклад, `<1>children</1>`) для забезпечення рендерингу форматованого тексту (rich-text) "з коробки".
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Специфікація функцій: Collections, Variants та Dynamic Records
|
|
104
|
+
|
|
105
|
+
Intlayer v9 виходить за рамки статичних об'єктів типу ключ-значення, дозволяючи словникам оголошувати динамічні структури макетів, які повністю типізовані від початку до кінця (end-to-end).
|
|
106
|
+
|
|
107
|
+
### 1. Колекції (Collections)
|
|
108
|
+
|
|
109
|
+
Визначайте керований CMS список упорядкованих елементів (наприклад, FAQ, товари або списки блогів):
|
|
110
|
+
|
|
111
|
+
```ts fileName="faq.content.ts"
|
|
112
|
+
import { t, type Dictionary } from "intlayer";
|
|
113
|
+
|
|
114
|
+
export default {
|
|
115
|
+
key: "faq",
|
|
116
|
+
content: [
|
|
117
|
+
{
|
|
118
|
+
question: t({
|
|
119
|
+
uk: "Що таке Intlayer?",
|
|
120
|
+
en: "What is Intlayer?",
|
|
121
|
+
fr: "Qu'est-ce qu'Intlayer ?",
|
|
122
|
+
}),
|
|
123
|
+
answer: t({
|
|
124
|
+
uk: "Інструментарій i18n.",
|
|
125
|
+
en: "An i18n toolkit.",
|
|
126
|
+
fr: "Une boîte à outils i18n.",
|
|
127
|
+
}),
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
} satisfies Dictionary;
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
#### Використання:
|
|
134
|
+
|
|
135
|
+
```ts
|
|
136
|
+
// Отримати всі елементи
|
|
137
|
+
const allFaqs = useIntlayer("faq"); // -> { question: string, answer: string }[]
|
|
138
|
+
|
|
139
|
+
// Отримати один елемент за індексом
|
|
140
|
+
const faq = useIntlayer("faq", { item: 1 }); // -> { question: string, answer: string }
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 2. Варіанти (Variants)
|
|
144
|
+
|
|
145
|
+
Надавайте A/B тести, сезонні заголовки, feature flags або кастомні цільові сторінки (landing pages):
|
|
146
|
+
|
|
147
|
+
```ts fileName="hero.content.ts"
|
|
148
|
+
import { t, type Dictionary } from "intlayer";
|
|
149
|
+
|
|
150
|
+
export default {
|
|
151
|
+
key: "hero-banner",
|
|
152
|
+
variant: "default",
|
|
153
|
+
content: {
|
|
154
|
+
control: t({ uk: "Ласкаво просимо", en: "Welcome", fr: "Bienvenue" }),
|
|
155
|
+
black_friday: t({
|
|
156
|
+
uk: "Купити зараз",
|
|
157
|
+
en: "Shop now",
|
|
158
|
+
fr: "Acheter maintenant",
|
|
159
|
+
}),
|
|
160
|
+
},
|
|
161
|
+
} satisfies Dictionary;
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
#### Використання:
|
|
165
|
+
|
|
166
|
+
```ts
|
|
167
|
+
const banner = useIntlayer("hero-banner", { variant: "black_friday" });
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 3. Динамічні записи (Dynamic Records)
|
|
171
|
+
|
|
172
|
+
Визначайте словники, записи яких завантажуються динамічно під час виконання за допомогою ідентифікаторів запитів (query IDs):
|
|
173
|
+
|
|
174
|
+
```ts fileName="product.content.ts"
|
|
175
|
+
import { t, type Dictionary } from "intlayer";
|
|
176
|
+
|
|
177
|
+
export default {
|
|
178
|
+
key: "product-copy",
|
|
179
|
+
meta: {
|
|
180
|
+
id: "prod_123",
|
|
181
|
+
category: "books",
|
|
182
|
+
},
|
|
183
|
+
content: {
|
|
184
|
+
title: t({ uk: "Чистий код", en: "Clean Code", fr: "Code Propre" }),
|
|
185
|
+
},
|
|
186
|
+
} satisfies Dictionary;
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
#### Використання:
|
|
190
|
+
|
|
191
|
+
```ts
|
|
192
|
+
// Динамічно завантажує лише запитуваний елемент (потребує Suspense)
|
|
193
|
+
const product = useIntlayer("product-copy", {
|
|
194
|
+
id: "prod_123",
|
|
195
|
+
category: "books",
|
|
196
|
+
});
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Динамічне завантаження та оптимізація розміру бандла
|
|
202
|
+
|
|
203
|
+
Щоб зберегти розмір бандлів надзвичайно малим, Intlayer v9 підтримує динамічне ліниве завантаження (lazy loading).
|
|
204
|
+
|
|
205
|
+
У вашій конфігурації встановіть `importMode` у `'dynamic'` або `'fetch'`:
|
|
206
|
+
|
|
207
|
+
```ts fileName="intlayer.config.ts"
|
|
208
|
+
export default {
|
|
209
|
+
dictionary: {
|
|
210
|
+
importMode: "dynamic", // "static" | "dynamic" | "fetch"
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Під час збірки `@intlayer/swc` та `@intlayer/babel` сканують ваші файли та замінюють виклики `useIntlayer` / `getIntlayer` на tree-shakeable обгортки (`useDictionary` / `useDictionaryDynamic`). Завантажується лише контент, необхідний для вибраного елемента колекції, варіанта або локалі, що запобігає потраплянню невикористовуваних перекладів у ваш продакшн-бандл.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Примітки щодо міграції з v8
|
|
220
|
+
|
|
221
|
+
Якщо ви оновлюєтеся з v8, зверніть увагу, що v9 не містить критичних змін (breaking changes). Проте ось ключові зміни:
|
|
222
|
+
|
|
223
|
+
- **Locales & Dialects**: Якщо ви використовуєте зовнішні залежності i18n, додайте відповідні плагіни адаптерів сумісності у вашу конфігурацію або налаштування бандлера для автоматичного перезапису імпортів.
|
|
224
|
+
- **Custom Selectors**: При виклику `useIntlayer` другий параметр тепер зарезервований для об'єкта опцій, що містить `{ locale, item, variant, id }`. Якщо раніше ви передавали рядок локалі безпосередньо, ви все ще можете це робити, але для розширеного вибору рекомендується використовувати об'єкт опцій.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Корисні посилання
|
|
229
|
+
|
|
230
|
+
- [Посібник з пакетів адаптерів сумісності (Compat Adapter Packages)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compat/index.md)
|
|
231
|
+
- [Динамічні словники - Collections, Variants та Dynamic Records](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dynamic_dictionaries/index.md)
|
|
232
|
+
- [Довідник з конфігурації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md)
|
package/docs/ur/cli/index.md
CHANGED
package/docs/ur/cli/scan.md
CHANGED
package/docs/ur/configuration.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-06-17
|
|
4
4
|
title: ترتیب (Configuration)
|
|
5
5
|
description: سیکھیں کہ اپنی ایپلیکیشن کے لیے Intlayer کو کیسے ترتیب دینا ہے۔ اپنی ضروریات کے مطابق Intlayer کو اپنی مرضی کے مطابق بنانے کے لیے دستیاب مختلف ترتیبات اور اختیارات کو سمجھیں۔
|
|
6
6
|
keywords:
|
|
@@ -16,6 +16,9 @@ slugs:
|
|
|
16
16
|
- concept
|
|
17
17
|
- configuration
|
|
18
18
|
history:
|
|
19
|
+
- version: 8.10.0
|
|
20
|
+
date: 2026-06-17
|
|
21
|
+
changes: "ڈکشنری کی ترتیب میں `format` کا اختیار شامل کیا گیا"
|
|
19
22
|
- version: 8.9.4
|
|
20
23
|
date: 2026-05-12
|
|
21
24
|
changes: "LM Studio فراہم کنندہ کے لیے سپورٹ شامل کریں"
|
|
@@ -137,6 +140,7 @@ Intlayer JSON، JS، MJS، اور TS کنفیگریشن فائل فارمیٹس
|
|
|
137
140
|
````typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
138
141
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
139
142
|
import { nextjsRewrite } from "intlayer/routing";
|
|
143
|
+
import { syncJSON } from "@intlayer/sync-json-plugin";
|
|
140
144
|
import { z } from "zod";
|
|
141
145
|
|
|
142
146
|
/**
|
|
@@ -585,9 +589,37 @@ const config: IntlayerConfig = {
|
|
|
585
589
|
},
|
|
586
590
|
|
|
587
591
|
/**
|
|
588
|
-
*
|
|
592
|
+
* ڈکشنری کی ترتیب۔
|
|
589
593
|
*/
|
|
590
|
-
|
|
594
|
+
dictionary: {
|
|
595
|
+
/**
|
|
596
|
+
* کنٹرول کرتا ہے کہ ڈکشنریاں کیسے درآمد کی جاتی ہیں۔
|
|
597
|
+
* - "static": تعمیر کے وقت جامد طور پر درآمد کیا گیا۔
|
|
598
|
+
* - "dynamic": Suspense کا استعمال کرتے ہوئے متحرک طور پر درآمد کیا گیا۔
|
|
599
|
+
* - "fetch": لائیو سنک API کے ذریعے متحرک طور پر حاصل کیا گیا۔
|
|
600
|
+
*/
|
|
601
|
+
importMode: "static",
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* پروجیکٹ میں تمام ڈکشنریوں کے لیے ڈیفالٹ پیغام کا فارمیٹ۔
|
|
605
|
+
* - 'intlayer': مقامی intlayer فارمیٹ (ڈیفالٹ)۔
|
|
606
|
+
* - 'icu': ICU پیغام کا فارمیٹ۔
|
|
607
|
+
* - 'i18next': i18next فارمیٹ۔
|
|
608
|
+
* - 'vue-i18n': Vue I18n فارمیٹ۔
|
|
609
|
+
* - 'po': GNU Gettext PO فارمیٹ۔
|
|
610
|
+
*/
|
|
611
|
+
format: "icu",
|
|
612
|
+
},
|
|
613
|
+
|
|
614
|
+
/**
|
|
615
|
+
* پلگ ان کی ترتیب۔
|
|
616
|
+
*/
|
|
617
|
+
plugins: [
|
|
618
|
+
syncJSON({
|
|
619
|
+
format: "icu",
|
|
620
|
+
source: ({ locale }) => `./messages/${locale}.json`,
|
|
621
|
+
}),
|
|
622
|
+
],
|
|
591
623
|
};
|
|
592
624
|
|
|
593
625
|
export default config;
|
|
@@ -864,6 +896,7 @@ export default config;
|
|
|
864
896
|
| `contentAutoTransformation` | کیا اسٹرنگ مواد کو خودکار طور پر ٹائپ شدہ نوڈز (Markdown، HTML، یا داخل کرنے والا) میں تبدیل کرنا ہے۔ | `boolean` | <br/> `{ markdown?: boolean; html?: boolean; insertion?: boolean }` | `false` | `true` | • Markdown : `### Title` → `md('### Title')` .<br/>• HTML : `<div>Title</div>` → `html('<div>Title</div>')` .<br/>• Insertion : `Hello {{name}}` → `insert('Hello {{name}}')` . |
|
|
865
897
|
| `location` | لغت کی فائلوں کے اسٹوریج کے محل وقوع اور CMS کے ساتھ ان کی ہم آہنگی کا طریقہ بتاتا ہے۔ | `'local'` | <br/> `'remote'` | <br/> `'hybrid'` | <br/> `'plugin'` | <br/> `string` | `'local'` | `'hybrid'` | • `'local'`: صرف مقامی انتظام۔<br/>• `'remote'`: صرف دور دراز کا انتظام (CMS)۔<br/>• `'hybrid'`: مقامی اور دور دراز دونوں کا انتظام۔<br/>• `'plugin'` یا کسٹم اسٹرنگ: پلگ ان یا کسٹم ذریعے سے انتظام۔ |
|
|
866
898
|
| `importMode` | کنٹرول کرتا ہے کہ لغات کیسے امپورٹ کی جاتی ہیں۔ | `'static'` | <br/> `'dynamic'` | <br/> `'fetch'` | `'static'` | `'dynamic'` | • `'static'`: ساکن امپورٹ۔<br/>• `'dynamic'`: Suspense کے ذریعے متحرک امپورٹ۔<br/>• `'fetch'`: LIVE سنک API کے ذریعے حاصل کرنا؛ ناکامی پر `'dynamic'` پر واپس آتا ہے۔<br/>• `@intlayer/babel` اور `@intlayer/swc` پلگ انز کی ضرورت ہے۔<br/>• کلیدیں ساکن طور پر اعلان ہونی چاہئیں۔<br/>• اگر `optimize` غیر فعال ہو تو نظر انداز کر دیا جاتا ہے۔<br/>• `getIntlayer` ، `getDictionary` وغیرہ پر کوئی اثر نہیں۔ |
|
|
899
|
+
| `format` | پروجیکٹ میں تمام ڈکشنریوں کے لیے ڈیفالٹ پیغام کا فارمیٹ۔ | `'intlayer'` | <br/> `'icu'` | <br/> `'i18next'` | <br/> `'vue-i18n'` | <br/> `'po'` | `'intlayer'` | `'icu'` | • `'intlayer'`: مقامی intlayer فارمیٹ۔<br/>• `'icu'`: ICU پیغام کا فارمیٹ۔<br/>• `'i18next'`: i18next فارمیٹ۔<br/>• `'vue-i18n'`: Vue I18n فارمیٹ۔<br/>• `'po'`: GNU Gettext PO فارمیٹ۔ |
|
|
867
900
|
| `priority` | لغت کی ترجیح۔ لغات کے درمیان تصادم کو حل کرتے وقت، زیادہ قیمت والی لغت کم قیمت والی پر غالب آئے گی۔ | `number` | `undefined` | `1` | |
|
|
868
901
|
| `live` | DEPRECATED - `importMode: 'fetch'` استعمال کریں۔ پہلے بتاتا تھا کہ آیا API Live Sync کے ذریعے لغت کا مواد متحرک طور پر حاصل کرنا ہے۔ | `boolean` | `undefined` | | v8.0.0 میں نام تبدیل کر کے `importMode: 'fetch'` کر دیا گیا۔ |
|
|
869
902
|
| `schema` | JSON اسکیمہ کی توثیق کے لیے Intlayer کے ذریعے خودکار طور پر تیار کیا گیا۔ | `'https://intlayer.org/schema.json'` | خودکار طور پر تیار | | دستی طور پر ترمیم نہ کریں۔ |
|