@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/ar/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:
|
|
@@ -409,6 +409,16 @@ author: aymericzip
|
|
|
409
409
|
|
|
410
410
|
---
|
|
411
411
|
|
|
412
|
+
## ملفات محتوى YAML و Markdown (v8.10.0)
|
|
413
|
+
|
|
414
|
+
يمكنك الآن تعريف المحتوى مباشرة باستخدام امتدادات الملفات `.content.md` و `.content.yaml`. هذا مثالي للمحتوى الطويل، المدونات، التوثيقات، وسياسات الخصوصية.
|
|
415
|
+
|
|
416
|
+
هذه الملفات قابلة للتحرير بالكامل من المحرر المرئي، مما يوفر سير عمل مبسطًا لأعضاء الفريق غير التقنيين.
|
|
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,58 @@ export default {
|
|
|
753
763
|
</Tab>
|
|
754
764
|
</Tabs>
|
|
755
765
|
|
|
766
|
+
## قواعد الجمع في Unicode CLDR (v8.8.0)
|
|
767
|
+
|
|
768
|
+
تم تقديم مساعد عقدة `plural` جديد يعتمد على قواعد الجمع المحددة بواسطة مشروع Unicode CLDR، مما يحسن دعم اللغات المعقدة.
|
|
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
|
+
en: plural({
|
|
778
|
+
one: "{{count}} opening",
|
|
779
|
+
other: "{{count}} openings",
|
|
780
|
+
}),
|
|
781
|
+
fr: plural({
|
|
782
|
+
one: "{{count}} offre",
|
|
783
|
+
other: "{{count}} offres",
|
|
784
|
+
}),
|
|
785
|
+
}),
|
|
786
|
+
},
|
|
787
|
+
} satisfies Dictionary;
|
|
788
|
+
|
|
789
|
+
export default openingsContent;
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
يمكنك بعد ذلك تمرير العدد ديناميكيًا في مكون إطار العمل الخاص بك:
|
|
793
|
+
|
|
794
|
+
```tsx
|
|
795
|
+
import type { FC } from "react";
|
|
796
|
+
import { useIntlayer } from "react-intlayer";
|
|
797
|
+
|
|
798
|
+
const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
|
|
799
|
+
const { totalOpenings } = useIntlayer("total_openings");
|
|
800
|
+
|
|
801
|
+
return (
|
|
802
|
+
<div>
|
|
803
|
+
{/* بالإنجليزية: */}
|
|
804
|
+
{/* count=0 → "0 openings" (other) */}
|
|
805
|
+
{/* count=1 → "1 opening" (one) */}
|
|
806
|
+
{/* count=2 → "2 openings" (other) */}
|
|
807
|
+
{/* count=21 → "21 openings" (other) */}
|
|
808
|
+
<p>{totalOpenings(count)}</p>
|
|
809
|
+
</div>
|
|
810
|
+
);
|
|
811
|
+
};
|
|
812
|
+
```
|
|
813
|
+
|
|
814
|
+
لمزيد من المعلومات، راجع [توثيق الجمع](https://intlayer.org/doc/concept/content/plural).
|
|
815
|
+
|
|
816
|
+
---
|
|
817
|
+
|
|
756
818
|
## التحقق من صحة مخطط المحتوى
|
|
757
819
|
|
|
758
820
|
تقدم Intlayer v8 التحقق من صحة المخططات للقواميس. يمكنك الآن تعريف مخططات تحقق قابلة لإعادة الاستخدام في إعداداتك باستخدام Zod وتطبيقها على ملفات المحتوى الخاصة بك. يضمن ذلك التزام محتواك دائمًا بالهيكل المتوقع واكتشاف الأخطاء أثناء وقت البناء.
|
|
@@ -797,6 +859,34 @@ export default aboutPageMetaContent;
|
|
|
797
859
|
|
|
798
860
|
---
|
|
799
861
|
|
|
862
|
+
## TypeScript: IntlayerNode Primitive Accessors
|
|
863
|
+
|
|
864
|
+
تم تحديث نوع `IntlayerNode` للسماح باستدعاء دوال JavaScript البدائية مباشرة على عقد المحتوى. هذا يجعل من الممكن التفاعل مع المحتوى المترجم الخاص بك مباشرة كما لو كان سلسلة نصية قياسية، رقم، قيمة منطقية، أو مصفوفة بدائية.
|
|
865
|
+
|
|
866
|
+
مدعوم عبر React، Preact، Solid، Svelte، Vue، و Angular.
|
|
867
|
+
|
|
868
|
+
### مثال على السلسلة النصية
|
|
869
|
+
|
|
870
|
+
```typescript
|
|
871
|
+
content.placeholder; // Returns IntlayerNode<string>
|
|
872
|
+
content.placeholder.value; // Returns string
|
|
873
|
+
content.placeholder.toString(); // Returns string
|
|
874
|
+
content.placeholder.toLowerCase(); // Returns string
|
|
875
|
+
String(content.placeholder); // Returns string
|
|
876
|
+
content.placeholder.toUpperCase(); // Returns uppercased string
|
|
877
|
+
content.placeholder.replace("a", "b"); // Returns modified string
|
|
878
|
+
```
|
|
879
|
+
|
|
880
|
+
### مثال على المصفوفة
|
|
881
|
+
|
|
882
|
+
```typescript
|
|
883
|
+
content.myArrayOfString // Returns IntlayerNode<Array<string>>
|
|
884
|
+
content.myArrayOfString.find(...) // Returns element
|
|
885
|
+
content.myArrayOfString.join(', ') // Returns joined string
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
---
|
|
889
|
+
|
|
800
890
|
### الكشف التلقائي المحسَّن للمحتوى
|
|
801
891
|
|
|
802
892
|
في الإصدار v8، يقوم Intlayer باكتشاف صيغة Markdown وعلامات HTML وإدراج المتغيرات داخل سلاسل المحتوى بذكاء. هذا يعني أنه يمكنك غالبًا الاستغناء عن دوال المساعدة مثل `md()`، `html()`، أو `insert()`.
|
|
@@ -1002,6 +1092,17 @@ export default {
|
|
|
1002
1092
|
|
|
1003
1093
|
---
|
|
1004
1094
|
|
|
1095
|
+
## الأدوات: مراقب C++ و LSP المعتمد على OXC (v8.12.0)
|
|
1096
|
+
|
|
1097
|
+
يجلب Intlayer v8.12.0 تحسينات كبيرة لتجربة المطور:
|
|
1098
|
+
|
|
1099
|
+
- **Parcel Watcher**: تم ترحيل مراقب المحتوى من `chokidar` إلى `@parcel/watcher`، مستفيدًا من مراقبة الملفات الأصلية بـ C++ لتوفير تحديثات أسرع واستهلاك أقل للذاكرة بشكل ملحوظ.
|
|
1100
|
+
- **بروتوكول خادم اللغة الجديد (LSP)**: يتوفر الآن LSP جديد تمامًا. تم بناؤه باستخدام تحليل يعتمد على OXC، ويساعد بيئة التطوير المتكاملة (IDE) ووكلاء الذكاء الاصطناعي على ربط استدعاءات `useIntlayer('my-key')` بملفات `.content` المقابلة لها بسلاسة، والعكس صحيح.
|
|
1101
|
+
|
|
1102
|
+
لمزيد من التفاصيل، راجع [توثيق LSP](https://intlayer.org/doc/lsp).
|
|
1103
|
+
|
|
1104
|
+
---
|
|
1105
|
+
|
|
1005
1106
|
## تحسينات المجمّع
|
|
1006
1107
|
|
|
1007
1108
|
يتضمن Intlayer الإصدار 8 طبقة تخزين مؤقت جديدة لمجمّع Markdown وHTML. هذا يضمن أن سلاسل المحتوى المتطابقة بنفس التهيئة يتم تحليلها مرة واحدة فقط، مما يقلل بشكل كبير من العبء أثناء إعادة العرض أو عند استخدام نفس المحتوى في أماكن متعددة.
|
|
@@ -1057,6 +1158,48 @@ export default {
|
|
|
1057
1158
|
|
|
1058
1159
|
---
|
|
1059
1160
|
|
|
1161
|
+
## تحسينات البناء التجريبية: التصغير والتطهير (Minify & Purge) (v8.7.0)
|
|
1162
|
+
|
|
1163
|
+
يقدم Intlayer v8.7.0 ميزات بناء تجريبية جديدة في ملف `intlayer.config.ts` الخاص بك، مصممة لتحسين حزمة الإنتاج الخاصة بك:
|
|
1164
|
+
|
|
1165
|
+
- **تصغير القواميس (Dictionary Minification)**: يقوم بتصغير ملفات القواميس لتقليل حجمها.
|
|
1166
|
+
- **تطهير المفاتيح غير المستخدمة (Unused Key Purging)**: يقوم بمسح وإزالة مفاتيح الترجمة غير المستخدمة من القواميس، وإعادة تسمية المفاتيح النشطة إلى أحرف قصيرة (مثل `"products" -> "a"`, `"pricing" -> "b"`). هذا يقلل من حجم الحزمة بنسبة تصل إلى 5%.
|
|
1167
|
+
- **تعطيل فحوصات TypeScript**: تسريع عمليات البناء عن طريق تعطيل فحص أنواع TypeScript أثناء خطوة التجميع.
|
|
1168
|
+
|
|
1169
|
+
```typescript fileName="intlayer.config.ts"
|
|
1170
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
1171
|
+
|
|
1172
|
+
const config: IntlayerConfig = {
|
|
1173
|
+
internationalization: {
|
|
1174
|
+
locales: [Locales.ENGLISH, Locales.FRENCH],
|
|
1175
|
+
defaultLocale: Locales.ENGLISH,
|
|
1176
|
+
},
|
|
1177
|
+
dictionary: {
|
|
1178
|
+
importMode: "dynamic",
|
|
1179
|
+
},
|
|
1180
|
+
build: {
|
|
1181
|
+
/**
|
|
1182
|
+
* تصغير القواميس لتقليل حجم الحزمة.
|
|
1183
|
+
*/
|
|
1184
|
+
minify: true,
|
|
1185
|
+
|
|
1186
|
+
/**
|
|
1187
|
+
* تطهير المفاتيح غير المستخدمة في القواميس
|
|
1188
|
+
*/
|
|
1189
|
+
purge: true,
|
|
1190
|
+
|
|
1191
|
+
/**
|
|
1192
|
+
* يشير إلى ما إذا كان البناء يجب أن يتحقق من أنواع TypeScript
|
|
1193
|
+
*/
|
|
1194
|
+
checkTypes: false,
|
|
1195
|
+
},
|
|
1196
|
+
};
|
|
1197
|
+
|
|
1198
|
+
export default config;
|
|
1199
|
+
```
|
|
1200
|
+
|
|
1201
|
+
---
|
|
1202
|
+
|
|
1060
1203
|
## المرونة: وضع استيراد موحّد
|
|
1061
1204
|
|
|
1062
1205
|
تم إهمال الخاصية البوليانية `live` لصالح خاصية أكثر شمولاً تسمى `importMode`. تتيح هذه الخاصية تحديد صريح لكيفية تحميل القواميس: بشكل ثابت، أو ديناميكيًا، أو عبر مزامنة حية.
|
|
@@ -1204,6 +1347,49 @@ export default {
|
|
|
1204
1347
|
|
|
1205
1348
|
---
|
|
1206
1349
|
|
|
1350
|
+
## دعم Angular: مجمّع Vite (v8.11.0)
|
|
1351
|
+
|
|
1352
|
+
لمستخدمي Angular، يدعم Intlayer الآن مجمّع Vite بشكل أصلي من خلال مكون إضافي جديد مخصص لـ esbuild، مما يسرع أوقات التطوير والبناء.
|
|
1353
|
+
|
|
1354
|
+
للحصول على تفاصيل حول التكوين، راجع [توثيق بيئة Angular](https://intlayer.org/doc/environment/angular).
|
|
1355
|
+
|
|
1356
|
+
---
|
|
1357
|
+
|
|
1358
|
+
## إنشاء خريطة الموقع (Sitemap) (v8.6.0)
|
|
1359
|
+
|
|
1360
|
+
يقوم Intlayer الآن بإنشاء خرائط المواقع تلقائيًا بناءً على اللغات ووضع التوجيه الخاص بك. هذا مفيد بشكل خاص لتحسين محركات البحث (SEO) في معماريات الموجهات مثل TanStack Router:
|
|
1361
|
+
|
|
1362
|
+
```typescript fileName="src/routes/sitemap.xml.ts"
|
|
1363
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
1364
|
+
import { generateSitemap } from "intlayer";
|
|
1365
|
+
|
|
1366
|
+
const SITE_URL = (
|
|
1367
|
+
import.meta.env.VITE_SITE_URL ?? "http://localhost:3000"
|
|
1368
|
+
).replace(/\/$/, "");
|
|
1369
|
+
|
|
1370
|
+
export const Route = createFileRoute("/sitemap.xml")({
|
|
1371
|
+
server: {
|
|
1372
|
+
handlers: {
|
|
1373
|
+
GET: async () => {
|
|
1374
|
+
const sitemap = generateSitemap(
|
|
1375
|
+
[
|
|
1376
|
+
{ path: "/", changefreq: "daily", priority: 1.0 },
|
|
1377
|
+
{ path: "/about", changefreq: "monthly", priority: 0.8 },
|
|
1378
|
+
],
|
|
1379
|
+
{ siteUrl: SITE_URL }
|
|
1380
|
+
);
|
|
1381
|
+
|
|
1382
|
+
return new Response(sitemap, {
|
|
1383
|
+
headers: { "Content-Type": "application/xml" },
|
|
1384
|
+
});
|
|
1385
|
+
},
|
|
1386
|
+
},
|
|
1387
|
+
},
|
|
1388
|
+
});
|
|
1389
|
+
```
|
|
1390
|
+
|
|
1391
|
+
---
|
|
1392
|
+
|
|
1207
1393
|
## ملاحظات الترحيل من الإصدار v7
|
|
1208
1394
|
|
|
1209
1395
|
### تغييرات التكوين
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-14
|
|
3
|
+
updatedAt: 2026-06-14
|
|
4
|
+
title: Intlayer v9 الجديد - ما الجديد؟
|
|
5
|
+
description: اكتشف ما هو جديد في Intlayer v9. نقدم حزم توافق جاهزة للاستخدام لمكتبات 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 الشهيرة أسهل من أي وقت مضى. لقد أنشأنا خمس حزم توافق تعرض **نفس واجهات برمجة التطبيقات العامة (public APIs) تمامًا** مثل مكتبات i18n القياسية ولكنها تفوض جميع أعمال الترجمة إلى Intlayer في وقت التشغيل (runtime).
|
|
36
|
+
|
|
37
|
+
### عرض نفس واجهة برمجة التطبيقات العامة (Public API) مع كتابة صارمة (Strict Typing)
|
|
38
|
+
|
|
39
|
+
باستبدال عمليات الاستيراد (imports)، تحصل على جميع مزايا Intlayer (بما في ذلك أمان النوع في وقت التجميع (compile-time type safety) مقابل قواميسك الفعلية) بأقل تغييرات في الكود:
|
|
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
|
+
ستكون مفاتيحك الآن **مكتوبة بشكل صارم (strictly typed)** مقابل قواميس Intlayer الخاصة بك، مما يوفر إكمالًا تلقائيًا كاملاً للمسار النقطي (dot-path auto-completion) في بيئة التطوير المتكاملة (IDE) الخاصة بك!
|
|
60
|
+
|
|
61
|
+
### إضافات اسم مستعار للمجمّع (Bundler Alias Plugins) (Vite, Next.js, Turbopack)
|
|
62
|
+
|
|
63
|
+
للسماح بالترحيل دون إعادة كتابة جميع عبارات الاستيراد (import statements) يدويًا، تتضمن كل حزمة محول توافق (compat adapter package) **إضافة مجمّع مخصصة (custom bundler plugin)** (Vite أو Next.js) ضمن المسار الفرعي `/plugin`.
|
|
64
|
+
|
|
65
|
+
تعيد هذه الإضافات تلقائيًا كتابة عمليات الاستيراد الموجودة (مثل `react-i18next` أو `next-intl`) إلى مكافئاتها `@intlayer/*` في وقت البناء (build time).
|
|
66
|
+
|
|
67
|
+
#### مثال Next.js (Webpack / Turbopack)
|
|
68
|
+
|
|
69
|
+
بدلاً من `withIntlayer`، قم بتغليف إعدادات Next.js الخاصة بك باستخدام إضافة التوافق (compat plugin):
|
|
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
|
+
توجه جميع محولات التوافق (compat adapters) الآن حل الترجمة من خلال محلل وقت تشغيل واحد ومحسن للغاية: `@intlayer/core/messageFormat`.
|
|
96
|
+
|
|
97
|
+
- **رسالة الاستيفاء (Interpolate Message)**: تحل `{{var}}` القياسية (مسافات بيضاء ومسارات نقطية)، وسيطات ICU المنسقة (`{v, number, percent}` إلخ)، وقوالب `{var}` المجردة.
|
|
98
|
+
- **محلل عقدة الرسالة (Message Node Resolver)**: يحل العقد المتداخلة: `insert()`، `plural()` (قواعد الجمع CLDR)، `enu()` (التعداد)، `gender()`، علامات HTML، المصفوفات، وعقد الوظائف القابلة للاستدعاء.
|
|
99
|
+
- **محلل العلامات المرمزة (Tokenized Tag Parser)**: يدعم علامات XML/HTML المضمنة والعلامات المرقمة (مثل `<1>children</1>`) لتشغيل عرض النص الغني (rich-text rendering) بشكل جاهز.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## مواصفات الميزة: المجموعات (Collections)، المتغيرات (Variants) والسجلات الديناميكية (Dynamic Records)
|
|
104
|
+
|
|
105
|
+
يتوسع Intlayer v9 إلى ما هو أبعد من كائنات المفتاح-القيمة الثابتة، مما يسمح للقواميس بالإعلان عن هياكل تخطيط ديناميكية مكتوبة بالكامل من البداية إلى النهاية.
|
|
106
|
+
|
|
107
|
+
### 1. المجموعات (Collections)
|
|
108
|
+
|
|
109
|
+
حدد قائمة من العناصر المرتبة التي يديرها نظام إدارة المحتوى (CMS) (مثل الأسئلة الشائعة، المنتجات، أو قوائم المدونات):
|
|
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
|
+
ar: "ما هو Intlayer؟",
|
|
120
|
+
en: "What is Intlayer?",
|
|
121
|
+
fr: "Qu'est-ce qu'Intlayer ?",
|
|
122
|
+
}),
|
|
123
|
+
answer: t({
|
|
124
|
+
ar: "مجموعة أدوات i18n.",
|
|
125
|
+
en: "An i18n toolkit.",
|
|
126
|
+
fr: "Une boîte أدوات 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)، أو صفحات هبوط مخصصة:
|
|
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({ ar: "مرحباً", en: "Welcome", fr: "Bienvenue" }),
|
|
155
|
+
black_friday: t({
|
|
156
|
+
ar: "تسوق الآن",
|
|
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
|
+
حدد القواميس التي يتم تحميل إدخالاتها ديناميكيًا في وقت التشغيل (runtime) عبر معرفات الاستعلام (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({ ar: "كود نظيف", 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
|
+
## التحميل الديناميكي وتحسينات حجم الحزمة (Bundle Size Optimizations)
|
|
202
|
+
|
|
203
|
+
للحفاظ على أحجام الحزم (bundles) صغيرة للغاية، يدعم Intlayer v9 التحميل الكسول الديناميكي (dynamic 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
|
+
في وقت البناء (build time)، يقوم `@intlayer/swc` و`@intlayer/babel` بمسح ملفاتك واستبدال استدعاءات `useIntlayer` / `getIntlayer` بـ wrappers قابلة للإزالة (tree-shakeable wrappers) (`useDictionary` / `useDictionaryDynamic`). يتم تحميل المحتوى المطلوب فقط للعنصر المحدد في المجموعة (collection item)، أو المتغير (variant)، أو اللغة (locale)، مما يمنع حزمة الإنتاج (production bundle) الخاصة بك من احتواء ترجمات غير مستخدمة.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## ملاحظات الترحيل من الإصدار 8
|
|
220
|
+
|
|
221
|
+
إذا كنت تقوم بالترقية من الإصدار 8، لاحظ أن الإصدار 9 لا يتضمن تغييرات جذرية (breaking changes). ولكن إليك التغييرات الرئيسية:
|
|
222
|
+
|
|
223
|
+
- **اللغات واللهجات (Locales & Dialects)**: إذا كنت تستخدم تبعيات i18n خارجية، أضف إضافات محول التوافق (compat adapter plugins) الخاصة بها في إعداداتك أو إعداد المجمّع (bundler setup) لإعادة كتابة عمليات الاستيراد (imports) تلقائيًا.
|
|
224
|
+
- **المحددات المخصصة (Custom Selectors)**: عند استدعاء `useIntlayer`، تم حجز المعامل الثاني الآن لكائن خيارات يحتوي على `{ locale, item, variant, id }`. إذا كنت قد مررت سابقًا سلسلة لغة (locale string) مباشرة، فلا يزال بإمكانك القيام بذلك، ولكن يوصى باستخدام كائن الخيارات للاختيارات المتقدمة.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## روابط مفيدة
|
|
229
|
+
|
|
230
|
+
- [دليل حزم محولات التوافق (Compat Adapter Packages Guide)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/compat/index.md)
|
|
231
|
+
- [القواميس الديناميكية - المجموعات (Collections)، المتغيرات (Variants) والسجلات الديناميكية (Dynamic Records)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dynamic_dictionaries/index.md)
|
|
232
|
+
- [مرجع الإعدادات (Configuration Reference)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/configuration.md)
|
package/docs/bn/cli/index.md
CHANGED
package/docs/bn/cli/scan.md
CHANGED
package/docs/bn/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:
|
|
@@ -14,6 +14,9 @@ slugs:
|
|
|
14
14
|
- concept
|
|
15
15
|
- configuration
|
|
16
16
|
history:
|
|
17
|
+
- version: 8.10.0
|
|
18
|
+
date: 2026-06-17
|
|
19
|
+
changes: "ডিকশনারি কনফিগারেশনে `format` অপশন যোগ করা হয়েছে"
|
|
17
20
|
- version: 8.9.4
|
|
18
21
|
date: 2026-05-12
|
|
19
22
|
changes: "LM Studio প্রদানকারীর জন্য সমর্থন যোগ করুন"
|
|
@@ -135,6 +138,7 @@ Intlayer JSON, JS, MJS এবং TS কনফিগারেশন ফাইল
|
|
|
135
138
|
````typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
136
139
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
137
140
|
import { nextjsRewrite } from "intlayer/routing";
|
|
141
|
+
import { syncJSON } from "@intlayer/sync-json-plugin";
|
|
138
142
|
import { z } from "zod";
|
|
139
143
|
|
|
140
144
|
/**
|
|
@@ -576,9 +580,37 @@ const config: IntlayerConfig = {
|
|
|
576
580
|
},
|
|
577
581
|
|
|
578
582
|
/**
|
|
579
|
-
*
|
|
583
|
+
* ডিকশনারি কনফিগারেশন।
|
|
580
584
|
*/
|
|
581
|
-
|
|
585
|
+
dictionary: {
|
|
586
|
+
/**
|
|
587
|
+
* ডিকশনারি কিভাবে ইম্পোর্ট করা হবে তা নিয়ন্ত্রণ করে。
|
|
588
|
+
* - "static": বিল্ড টাইমে স্ট্যাটিকভাবে ইম্পোর্ট করা হয়。
|
|
589
|
+
* - "dynamic": Suspense ব্যবহার করে ডাইনামিকভাবে ইম্পোর্ট করা হয়。
|
|
590
|
+
* - "fetch": লাইভ সিঙ্ক API এর মাধ্যমে ডাইনামিকভাবে ফেচ করা হয়।
|
|
591
|
+
*/
|
|
592
|
+
importMode: "static",
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* প্রজেক্টের সমস্ত ডিকশনারির জন্য ডিফল্ট মেসেজ ফরম্যাট。
|
|
596
|
+
* - 'intlayer': নেটিভ intlayer ফরম্যাট (ডিফল্ট)।
|
|
597
|
+
* - 'icu': ICU মেসেজ ফরম্যাট。
|
|
598
|
+
* - 'i18next': i18next ফরম্যাট。
|
|
599
|
+
* - 'vue-i18n': Vue I18n ফরম্যাট。
|
|
600
|
+
* - 'po': GNU Gettext PO ফরম্যাট।
|
|
601
|
+
*/
|
|
602
|
+
format: "icu",
|
|
603
|
+
},
|
|
604
|
+
|
|
605
|
+
/**
|
|
606
|
+
* প্লাগিন কনফিগারেশন।
|
|
607
|
+
*/
|
|
608
|
+
plugins: [
|
|
609
|
+
syncJSON({
|
|
610
|
+
format: "icu",
|
|
611
|
+
source: ({ locale }) => `./messages/${locale}.json`,
|
|
612
|
+
}),
|
|
613
|
+
],
|
|
582
614
|
};
|
|
583
615
|
|
|
584
616
|
export default config;
|
|
@@ -855,6 +887,7 @@ export default config;
|
|
|
855
887
|
| `contentAutoTransformation` | কন্টেন্ট স্ট্রিংগুলোকে স্বয়ংক্রিয়ভাবে টাইপ করা নোডে রূপান্তর করে (মার্কডাউন, HTML অথবা ইনসারশন)। | `boolean` | <br/> `{ markdown?: boolean; html?: boolean; insertion?: boolean }` | `false` | `true` | • মার্কডাউন : `### Title` → `md('### Title')` ।<br/>• HTML : `<div>Title</div>` → `html('<div>Title</div>')` ।<br/>• ইনসারশন : `Hello {{name}}` → `insert('Hello {{name}}')` । |
|
|
856
888
|
| `location` | ডিকশনারি ফাইলগুলো কোথায় সংরক্ষিত এবং সেগুলো CMS এর সাথে কীভাবে সিঙ্ক করা হয় তা নির্দেশ করে। | `'local'` | <br/> `'remote'` | <br/> `'hybrid'` | <br/> `'plugin'` | <br/> `string` | `'local'` | `'hybrid'` | • `'local'`: কেবল স্থানীয় ম্যানেজমেন্ট।<br/>• `'remote'`: কেবল দূরবর্তী ম্যানেজমেন্ট (CMS)।<br/>• `'hybrid'`: স্থানীয় এবং দূরবর্তী উভয় ম্যানেজমেন্ট।<br/>• `'plugin'` বা কাস্টম স্ট্রিং: প্লাগইন বা কাস্টম সোর্স দ্বারা ম্যানেজমেন্ট। |
|
|
857
889
|
| `importMode` | ডিকশনারি কীভাবে ইম্পোর্ট করা হয় তা নিয়ন্ত্রণ করে। | `'static'` | <br/> `'dynamic'` | <br/> `'fetch'` | `'static'` | `'dynamic'` | • `'static'`: স্ট্যাটিক ইম্পোর্ট।<br/>• `'dynamic'`: Suspense এর মাধ্যমে ডাইনামিক ইম্পোর্ট।<br/>• `'fetch'`: লাইভ সিঙ্ক API এর মাধ্যমে ফেচ; ব্যর্থ হলে `'dynamic'` এ ফলব্যাক।<br/>• `@intlayer/babel` এবং `@intlayer/swc` প্লাগইন প্রয়োজন।<br/>• কি (keys) গুলো স্ট্যাটিক্যালি ঘোষিত হতে হবে।<br/>• `optimize` বন্ধ থাকলে এটি উপেক্ষা করা হয়।<br/>• `getIntlayer`, `getDictionary` ইত্যাদিকে প্রভাবিত করে না। |
|
|
890
|
+
| `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 ফরম্যাট。 |
|
|
858
891
|
| `priority` | ডিকশনারি অগ্রাধিকার। ডিকশনারিগুলোর মধ্যে সংঘর্ষ সমাধানের সময় উচ্চতর মান নিম্নতর মানের ওপর বিজয়ী হয়। | `number` | `undefined` | `1` | |
|
|
859
892
|
| `live` | অপ্রচলিত - `importMode: 'fetch'` ব্যবহার করুন। ডিকশনারি কন্টেন্ট লাইভ সিঙ্ক API এর মাধ্যমে ডাইনামিকভাবে ফেচ করা হবে কি না তা নির্দেশ করা হতো। | `boolean` | `undefined` | | v8.0.0-এ এর নাম পরিবর্তন করে `importMode: 'fetch'` করা হয়েছে। |
|
|
860
893
|
| `schema` | JSON স্কিমা ভ্যালিডেশনের জন্য Intlayer দ্বারা স্বয়ংক্রিয়ভাবে জেনারেট করা। | `'https://intlayer.org/schema.json'` | অটো-জেনারেশন | | ম্যানুয়ালি এডিট করবেন না। |
|
package/docs/cs/cli/index.md
CHANGED