@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/pt/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: Novo Intlayer v8 - O que há de novo?
|
|
5
5
|
description: Descubra as novidades do Intlayer v8. Principais melhorias na experiência do desenvolvedor, validação de esquemas e gestão de dicionários.
|
|
6
6
|
keywords:
|
|
@@ -409,6 +409,16 @@ Para mais detalhes, consulte a [Documentação de Conteúdo HTML](https://github
|
|
|
409
409
|
|
|
410
410
|
---
|
|
411
411
|
|
|
412
|
+
## Ficheiros de Conteúdo YAML & Markdown (v8.10.0)
|
|
413
|
+
|
|
414
|
+
Agora pode declarar conteúdo diretamente usando as extensões de ficheiro `.content.md` e `.content.yaml`. Isto é perfeito para conteúdos longos, blogs, documentação e políticas de privacidade.
|
|
415
|
+
|
|
416
|
+
Estes ficheiros são totalmente editáveis a partir do Visual Editor, proporcionando um fluxo de trabalho simplificado para membros não técnicos da equipa.
|
|
417
|
+
|
|
418
|
+
Para mais detalhes, consulte a [Documentação de Ficheiros de Conteúdo YAML](https://intlayer.org/doc/concept/content#yaml-content-file) e a [Documentação de Ficheiros de Conteúdo Markdown](https://intlayer.org/doc/concept/content/markdown).
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
412
422
|
## Reescritas de URL Personalizadas
|
|
413
423
|
|
|
414
424
|
O Intlayer v8 introduz suporte para **Reescritas de URL Personalizadas**, permitindo que você defina caminhos específicos por localidade que diferem da estrutura padrão `/locale/path`. Este é um recurso poderoso para melhorar o local SEO e proporcionar uma experiência de usuário mais natural para usuários que não falam inglês.
|
|
@@ -753,6 +763,58 @@ export default {
|
|
|
753
763
|
</Tab>
|
|
754
764
|
</Tabs>
|
|
755
765
|
|
|
766
|
+
## Regras de Plural Unicode CLDR (v8.8.0)
|
|
767
|
+
|
|
768
|
+
Foi introduzido um novo helper de nó `plural` baseado nas regras de plural definidas pelo Projeto Unicode CLDR, melhorando o suporte para idiomas complexos.
|
|
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
|
+
Você pode então passar a contagem dinamicamente no componente do seu framework:
|
|
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
|
+
{/* Em Inglês: */}
|
|
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
|
+
Para mais informações, consulte a [Documentação de Pluralização](https://intlayer.org/doc/concept/content/plural).
|
|
815
|
+
|
|
816
|
+
---
|
|
817
|
+
|
|
756
818
|
## Validação de Esquema de Conteúdo
|
|
757
819
|
|
|
758
820
|
O Intlayer v8 introduz a validação de esquema para dicionários. Agora você pode definir esquemas de validação reutilizáveis em sua configuração usando Zod e aplicá-los aos seus arquivos de conteúdo. Isso garante que seu conteúdo sempre adira à estrutura esperada, capturando erros em tempo de build.
|
|
@@ -797,6 +859,34 @@ Se o conteúdo não corresponder ao esquema (por exemplo, o título é muito cur
|
|
|
797
859
|
|
|
798
860
|
---
|
|
799
861
|
|
|
862
|
+
## TypeScript: Acessores Primitivos IntlayerNode
|
|
863
|
+
|
|
864
|
+
O tipo `IntlayerNode` foi atualizado para permitir a chamada de métodos JavaScript primitivos diretamente nos nós de conteúdo. Isto torna possível interagir com o seu conteúdo localizado diretamente como se fosse uma primitiva padrão de string, number, boolean ou array.
|
|
865
|
+
|
|
866
|
+
Suportado em React, Preact, Solid, Svelte, Vue e Angular.
|
|
867
|
+
|
|
868
|
+
### Exemplo de String
|
|
869
|
+
|
|
870
|
+
```typescript
|
|
871
|
+
content.placeholder; // Retorna IntlayerNode<string>
|
|
872
|
+
content.placeholder.value; // Retorna string
|
|
873
|
+
content.placeholder.toString(); // Retorna string
|
|
874
|
+
content.placeholder.toLowerCase(); // Retorna string
|
|
875
|
+
String(content.placeholder); // Retorna string
|
|
876
|
+
content.placeholder.toUpperCase(); // Retorna string em maiúsculas
|
|
877
|
+
content.placeholder.replace("a", "b"); // Retorna string modificada
|
|
878
|
+
```
|
|
879
|
+
|
|
880
|
+
### Exemplo de Array
|
|
881
|
+
|
|
882
|
+
```typescript
|
|
883
|
+
content.myArrayOfString // Retorna IntlayerNode<Array<string>>
|
|
884
|
+
content.myArrayOfString.find(...) // Retorna elemento
|
|
885
|
+
content.myArrayOfString.join(', ') // Retorna string unida
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
---
|
|
889
|
+
|
|
800
890
|
### Detecção Automática de Conteúdo Aprimorada
|
|
801
891
|
|
|
802
892
|
Na v8, o Intlayer detecta inteligentemente a sintaxe Markdown, tags HTML e inserções de variáveis em suas strings de conteúdo. Isso significa que muitas vezes você pode omitir funções auxiliares como `md()`, `html()` ou `insert()`.
|
|
@@ -1002,6 +1092,17 @@ A extensão Intlayer para VSCode recebe atualizações significativas na v8 para
|
|
|
1002
1092
|
|
|
1003
1093
|
---
|
|
1004
1094
|
|
|
1095
|
+
## Ferramentas: Watcher C++ & LSP baseado em OXC (v8.12.0)
|
|
1096
|
+
|
|
1097
|
+
O Intlayer v8.12.0 traz grandes melhorias para a experiência do desenvolvedor:
|
|
1098
|
+
|
|
1099
|
+
- **Parcel Watcher**: O watcher de conteúdo foi migrado de `chokidar` para `@parcel/watcher`, aproveitando a monitorização nativa de ficheiros em C++ para fornecer atualizações mais rápidas e um consumo de memória significativamente menor.
|
|
1100
|
+
- **Novo Language Server Protocol (LSP)**: Um novo LSP está agora disponível. Construído com análise baseada em OXC, ajuda o seu IDE e agentes de IA a ligar perfeitamente as chamadas `useIntlayer('my-key')` aos seus ficheiros `.content` correspondentes, e vice-versa.
|
|
1101
|
+
|
|
1102
|
+
Para mais detalhes, consulte a [Documentação do LSP](https://intlayer.org/doc/lsp).
|
|
1103
|
+
|
|
1104
|
+
---
|
|
1105
|
+
|
|
1005
1106
|
## Otimizações do Compilador
|
|
1006
1107
|
|
|
1007
1108
|
Intlayer v8 inclui uma nova camada de cache para o compilador Markdown e HTML. Isso garante que strings de conteúdo idênticas com a mesma configuração sejam analisadas apenas uma vez, reduzindo significativamente a sobrecarga durante re-renders ou quando o mesmo conteúdo é usado em vários lugares.
|
|
@@ -1057,6 +1158,48 @@ Intlayer v8 inclui uma nova camada de cache para o compilador Markdown e HTML. I
|
|
|
1057
1158
|
|
|
1058
1159
|
---
|
|
1059
1160
|
|
|
1161
|
+
## Otimizações de Build Experimentais: Minify & Purge (v8.7.0)
|
|
1162
|
+
|
|
1163
|
+
O Intlayer v8.7.0 introduz novos recursos experimentais de build no seu `intlayer.config.ts` projetados para otimizar o seu bundle de produção:
|
|
1164
|
+
|
|
1165
|
+
- **Minimização de Dicionários (Minify)**: Minimiza os ficheiros de dicionário para reduzir o tamanho.
|
|
1166
|
+
- **Purga de Chaves Não Utilizadas (Purge)**: Varre e remove chaves de tradução não utilizadas dos dicionários, renomeando as chaves ativas para caracteres curtos (por exemplo, `"products" -> "a"`, `"pricing" -> "b"`). Isto reduz o tamanho do bundle em até 5%.
|
|
1167
|
+
- **Desativar Verificações TypeScript**: Acelera as builds desativando a verificação de tipos TypeScript durante a etapa de compilação.
|
|
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
|
+
* Minimiza os dicionários para reduzir o tamanho do bundle.
|
|
1183
|
+
*/
|
|
1184
|
+
minify: true,
|
|
1185
|
+
|
|
1186
|
+
/**
|
|
1187
|
+
* Purga as chaves não utilizadas nos dicionários
|
|
1188
|
+
*/
|
|
1189
|
+
purge: true,
|
|
1190
|
+
|
|
1191
|
+
/**
|
|
1192
|
+
* Indica se a build deve verificar os tipos TypeScript
|
|
1193
|
+
*/
|
|
1194
|
+
checkTypes: false,
|
|
1195
|
+
},
|
|
1196
|
+
};
|
|
1197
|
+
|
|
1198
|
+
export default config;
|
|
1199
|
+
```
|
|
1200
|
+
|
|
1201
|
+
---
|
|
1202
|
+
|
|
1060
1203
|
## Flexibilidade: Modo Unificado de Importação
|
|
1061
1204
|
|
|
1062
1205
|
A propriedade booleana `live` foi descontinuada em favor de uma propriedade mais abrangente `importMode`. Isso permite a definição explícita de como os dicionários devem ser carregados: estaticamente, dinamicamente ou via sincronização ao vivo.
|
|
@@ -1204,6 +1347,49 @@ Conteúdo Markdown e HTML no Svelte agora é automaticamente convertido para HTM
|
|
|
1204
1347
|
|
|
1205
1348
|
---
|
|
1206
1349
|
|
|
1350
|
+
## Suporte Angular: Vite Bundler (v8.11.0)
|
|
1351
|
+
|
|
1352
|
+
Para utilizadores do Angular, o Intlayer agora suporta nativamente o bundler Vite através de um novo plugin esbuild personalizado, acelerando os tempos de desenvolvimento e build.
|
|
1353
|
+
|
|
1354
|
+
Para detalhes sobre a configuração, consulte a [Documentação do Ambiente Angular](https://intlayer.org/doc/environment/angular).
|
|
1355
|
+
|
|
1356
|
+
---
|
|
1357
|
+
|
|
1358
|
+
## Geração de Sitemap (v8.6.0)
|
|
1359
|
+
|
|
1360
|
+
O Intlayer agora gera sitemaps automaticamente com base nas suas localidades e modo de roteamento. Isto é particularmente útil para otimização de SEO em arquiteturas de roteador como o 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
|
## Notas de migração da v7
|
|
1208
1394
|
|
|
1209
1395
|
### Alterações na Configuração
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-14
|
|
3
|
+
updatedAt: 2026-06-14
|
|
4
|
+
title: Novo Intlayer v9 - O que há de novo?
|
|
5
|
+
description: Descubra o que há de novo no Intlayer v9. Apresentando pacotes de compatibilidade drop-in para bibliotecas i18n populares e suporte para Collections, Variants e Dynamic Records.
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- Compatibility
|
|
9
|
+
- Migration
|
|
10
|
+
- Collections
|
|
11
|
+
- Variants
|
|
12
|
+
- Dynamic Records
|
|
13
|
+
- i18next
|
|
14
|
+
- next-intl
|
|
15
|
+
- vue-i18n
|
|
16
|
+
slugs:
|
|
17
|
+
- doc
|
|
18
|
+
- releases
|
|
19
|
+
- v9
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Novo Intlayer v9 - O que há de novo?
|
|
24
|
+
|
|
25
|
+
Bem-vindo ao Intlayer v9! Este grande lançamento marca um marco enorme na simplificação do caminho de migração para o Intlayer com **Compat Adapter Packages** para as principais bibliotecas de i18n (`react-i18next`, `next-intl`, `vue-i18n`, etc.) e adiciona suporte para estruturas de conteúdo ricas: **Collections**, **Variants** e **Dynamic Records**.
|
|
26
|
+
|
|
27
|
+
## Tabela de conteúdos
|
|
28
|
+
|
|
29
|
+
<TOC levels={[2]} maxDepth={1} />
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Compat Adapter Packages
|
|
34
|
+
|
|
35
|
+
Migrar para o Intlayer a partir de bibliotecas i18n populares agora é mais fácil do que nunca. Criamos cinco pacotes de compatibilidade que expõem as **mesmas APIs públicas** que as bibliotecas i18n padrão, mas delegam todo o trabalho de tradução para o Intlayer em runtime.
|
|
36
|
+
|
|
37
|
+
### Expor a Mesma API Pública com Strict Typing
|
|
38
|
+
|
|
39
|
+
Ao substituir os imports, você obtém todos os benefícios do Intlayer (incluindo type safety em tempo de compilação contra seus dicionários reais) com o mínimo de alterações no código:
|
|
40
|
+
|
|
41
|
+
- `@intlayer/i18next`
|
|
42
|
+
- `@intlayer/react-i18next`
|
|
43
|
+
- `@intlayer/next-intl`
|
|
44
|
+
- `@intlayer/next-i18next`
|
|
45
|
+
- `@intlayer/vue-i18n`
|
|
46
|
+
|
|
47
|
+
Por exemplo, basta alterar:
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
import { useTranslation } from "react-i18next";
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
para:
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
import { useTranslation } from "@intlayer/react-i18next";
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Suas chaves agora serão **strictly typed** (fortemente tipadas) contra seus dicionários Intlayer, oferecendo auto-complete completo de dot-path na sua IDE!
|
|
60
|
+
|
|
61
|
+
### Plugins de Alias de Bundler (Vite, Next.js, Turbopack)
|
|
62
|
+
|
|
63
|
+
Para permitir a migração sem reescrever todas as suas declarações de import manualmente, cada pacote de compatibilidade inclui um **plugin de bundler personalizado** (Vite ou Next.js) sob o subcaminho `/plugin`.
|
|
64
|
+
|
|
65
|
+
Esses plugins reescrevem automaticamente os imports existentes (ex: `react-i18next` ou `next-intl`) para seus equivalentes `@intlayer/*` em tempo de build.
|
|
66
|
+
|
|
67
|
+
#### Exemplo de Next.js (Webpack / Turbopack)
|
|
68
|
+
|
|
69
|
+
Em vez de `withIntlayer`, envolva sua configuração do Next.js com o plugin de compatibilidade:
|
|
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
|
+
#### Exemplo de 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
|
+
Todos os adaptadores de compatibilidade agora roteiam a resolução de tradução através de um único parser de runtime altamente otimizado: `@intlayer/core/messageFormat`.
|
|
96
|
+
|
|
97
|
+
- **Interpolate Message**: Resolve `{{var}}` padrão (espaços em branco e dot-paths), argumentos formatados em ICU (`{v, number, percent}` etc.) e templates simples `{var}`.
|
|
98
|
+
- **Message Node Resolver**: Resolve nós aninhados: `insert()`, `plural()` (regras de plural CLDR), `enu()` (enumeração), `gender()`, tags HTML, arrays e nós de funções chamáveis.
|
|
99
|
+
- **Tokenized Tag Parser**: Suporta tags XML/HTML inline e tags numeradas (ex: `<1>children</1>`) para habilitar renderização de rich-text nativamente.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Especificação de Recursos: Collections, Variants & Dynamic Records
|
|
104
|
+
|
|
105
|
+
O Intlayer v9 vai além de objetos estáticos de chave-valor, permitindo que os dicionários declarem estruturas de layout dinâmicas que são totalmente tipadas de ponta a ponta.
|
|
106
|
+
|
|
107
|
+
### 1. Collections
|
|
108
|
+
|
|
109
|
+
Defina uma lista gerenciada por CMS de itens ordenados (ex: FAQs, produtos ou listas de blog):
|
|
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
|
+
pt: "O que é o Intlayer?",
|
|
120
|
+
en: "What is Intlayer?",
|
|
121
|
+
fr: "Qu'est-ce qu'Intlayer ?",
|
|
122
|
+
}),
|
|
123
|
+
answer: t({
|
|
124
|
+
pt: "Um kit de ferramentas i18n.",
|
|
125
|
+
en: "An i18n toolkit.",
|
|
126
|
+
fr: "Une boîte à outils i18n.",
|
|
127
|
+
}),
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
} satisfies Dictionary;
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
#### Uso:
|
|
134
|
+
|
|
135
|
+
```ts
|
|
136
|
+
// Buscar todos os itens
|
|
137
|
+
const allFaqs = useIntlayer("faq"); // -> { question: string, answer: string }[]
|
|
138
|
+
|
|
139
|
+
// Buscar um único item por índice
|
|
140
|
+
const faq = useIntlayer("faq", { item: 1 }); // -> { question: string, answer: string }
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 2. Variants
|
|
144
|
+
|
|
145
|
+
Entregue testes A/B, cabeçalhos sazonais, feature flags ou landing pages personalizadas:
|
|
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({ pt: "Bem-vindo", en: "Welcome", fr: "Bienvenue" }),
|
|
155
|
+
black_friday: t({
|
|
156
|
+
pt: "Compre agora",
|
|
157
|
+
en: "Shop now",
|
|
158
|
+
fr: "Acheter maintenant",
|
|
159
|
+
}),
|
|
160
|
+
},
|
|
161
|
+
} satisfies Dictionary;
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
#### Uso:
|
|
165
|
+
|
|
166
|
+
```ts
|
|
167
|
+
const banner = useIntlayer("hero-banner", { variant: "black_friday" });
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 3. Dynamic Records
|
|
171
|
+
|
|
172
|
+
Defina dicionários cujas entradas são carregadas dinamicamente em runtime via IDs de consulta:
|
|
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({ pt: "Código Limpo", en: "Clean Code", fr: "Code Propre" }),
|
|
185
|
+
},
|
|
186
|
+
} satisfies Dictionary;
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
#### Uso:
|
|
190
|
+
|
|
191
|
+
```ts
|
|
192
|
+
// Busca apenas o item solicitado dinamicamente (requer Suspense)
|
|
193
|
+
const product = useIntlayer("product-copy", {
|
|
194
|
+
id: "prod_123",
|
|
195
|
+
category: "books",
|
|
196
|
+
});
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Carregamento Dinâmico & Otimizações de Tamanho de Bundle
|
|
202
|
+
|
|
203
|
+
Para manter os bundles extremamente pequenos, o Intlayer v9 suporta dynamic lazy loading.
|
|
204
|
+
|
|
205
|
+
Na sua configuração, defina `importMode` como `'dynamic'` ou `'fetch'`:
|
|
206
|
+
|
|
207
|
+
```ts fileName="intlayer.config.ts"
|
|
208
|
+
export default {
|
|
209
|
+
dictionary: {
|
|
210
|
+
importMode: "dynamic", // "static" | "dynamic" | "fetch"
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Em tempo de build, o `@intlayer/swc` e o `@intlayer/babel` escaneiam seus arquivos e substituem as chamadas de `useIntlayer` / `getIntlayer` por wrappers tree-shakeable (`useDictionary` / `useDictionaryDynamic`). Apenas o conteúdo necessário para o item da coleção, variante ou locale selecionado é carregado, evitando que seu bundle de produção contenha traduções não utilizadas.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Notas de migração da v8
|
|
220
|
+
|
|
221
|
+
Se você estiver atualizando da v8, observe que a v9 não inclui breaking changes. Mas aqui estão as principais mudanças:
|
|
222
|
+
|
|
223
|
+
- **Locales & Dialects**: Se estiver usando dependências externas de i18n, adicione seus respectivos plugins de compatibilidade na sua configuração ou setup do bundler para reescrever os imports automaticamente.
|
|
224
|
+
- **Custom Selectors**: Ao chamar `useIntlayer`, o segundo parâmetro agora é reservado para um objeto de opções contendo `{ locale, item, variant, id }`. Se você passava anteriormente uma string de locale diretamente, ainda pode fazer isso, mas o uso do objeto de opções é recomendado para seleções avançadas.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Links úteis
|
|
229
|
+
|
|
230
|
+
- [Guia de Compat Adapter Packages](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/compat/index.md)
|
|
231
|
+
- [Dicionários Dinâmicos - Collections, Variants & Dynamic Records](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/dynamic_dictionaries/index.md)
|
|
232
|
+
- [Referência de Configuração](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-11
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-06-17
|
|
4
4
|
title: Проверка документа
|
|
5
5
|
description: Узнайте, как проверять файлы документации на качество, согласованность и полноту для разных локалей.
|
|
6
6
|
keywords:
|
|
@@ -15,6 +15,10 @@ slugs:
|
|
|
15
15
|
- concept
|
|
16
16
|
- cli
|
|
17
17
|
- doc-review
|
|
18
|
+
history:
|
|
19
|
+
- version: 9.0.0
|
|
20
|
+
date: 2026-06-17
|
|
21
|
+
changes: "Добавить опцию --log"
|
|
18
22
|
author: aymericzip
|
|
19
23
|
---
|
|
20
24
|
|
|
@@ -55,8 +59,110 @@ bun x intlayer doc review
|
|
|
55
59
|
|
|
56
60
|
## Аргументы:
|
|
57
61
|
|
|
58
|
-
|
|
62
|
+
**Опции списка файлов:**
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
- **`--doc-pattern [docPattern...]`**: Глобальные шаблоны для выбора файлов документации, которые нужно проверить.
|
|
61
65
|
|
|
62
|
-
|
|
66
|
+
> Пример: `npx intlayer doc review --doc-pattern "docs/**/*.md" "src/**/*.mdx"`
|
|
67
|
+
|
|
68
|
+
- **`--excluded-glob-pattern [excludedGlobPattern...]`**: Глобальные шаблоны для исключения файлов из проверки.
|
|
69
|
+
|
|
70
|
+
> Пример: `npx intlayer doc review --excluded-glob-pattern "docs/internal/**"`
|
|
71
|
+
|
|
72
|
+
- **`--skip-if-modified-before [skipIfModifiedBefore]`**: Пропустить файл, если он был изменён до указанного времени.
|
|
73
|
+
- Может быть абсолютным временем, например "2025-12-05" (строка или Date)
|
|
74
|
+
- Может быть относительным временем в миллисекундах `1 * 60 * 60 * 1000` (1 час)
|
|
75
|
+
- Эта опция проверяет время обновления файла с помощью метода `fs.stat`. Поэтому она может быть затронута Git или другими инструментами, которые изменяют файл.
|
|
76
|
+
|
|
77
|
+
> Пример: `npx intlayer doc review --skip-if-modified-before "2025-12-05"`
|
|
78
|
+
|
|
79
|
+
- **`--skip-if-modified-after [skipIfModifiedAfter]`**: Пропустить файл, если он был изменён в течение указанного времени.
|
|
80
|
+
- Может быть абсолютным временем, например "2025-12-05" (строка или Date)
|
|
81
|
+
- Может быть относительным временем в миллисекундах `1 * 60 * 60 * 1000` (1 час)
|
|
82
|
+
- Эта опция проверяет время обновления файла с помощью метода `fs.stat`. Поэтому она может быть затронута Git или другими инструментами, которые изменяют файл.
|
|
83
|
+
|
|
84
|
+
> Пример: `npx intlayer doc review --skip-if-modified-after "2025-12-05"`
|
|
85
|
+
|
|
86
|
+
- **`--skip-if-exists`**: Пропустить файл, если он уже существует.
|
|
87
|
+
|
|
88
|
+
> Пример: `npx intlayer doc review --skip-if-exists`
|
|
89
|
+
|
|
90
|
+
**Опции режима проверки:**
|
|
91
|
+
|
|
92
|
+
- **`--log`**: Режим только логирования. Не переводить с помощью ИИ; вместо этого логировать блоки, требующие внимания (с номерами строк и содержимым) для базовой и целевой локалей, чтобы помочь другому агенту сгенерировать переводы.
|
|
93
|
+
|
|
94
|
+
> Пример: `npx intlayer doc review --log`
|
|
95
|
+
|
|
96
|
+
**Опции вывода записей:**
|
|
97
|
+
|
|
98
|
+
- **`--locales [locales...]`**: Целевые локали для проверки документации.
|
|
99
|
+
|
|
100
|
+
> Пример: `npx intlayer doc review --locales fr es de`
|
|
101
|
+
|
|
102
|
+
- **`--base-locale [baseLocale]`**: Исходная локаль (базовый документ) для сравнения.
|
|
103
|
+
|
|
104
|
+
> Пример: `npx intlayer doc review --base-locale en`
|
|
105
|
+
|
|
106
|
+
**Опции обработки файлов:**
|
|
107
|
+
|
|
108
|
+
- **`--nb-simultaneous-file-processed [nbSimultaneousFileProcessed]`**: Количество файлов, обрабатываемых одновременно для проверки.
|
|
109
|
+
|
|
110
|
+
> Пример: `npx intlayer doc review --nb-simultaneous-file-processed 5`
|
|
111
|
+
|
|
112
|
+
**Опции ИИ:**
|
|
113
|
+
|
|
114
|
+
- **`--model [model]`**: Модель ИИ, используемая для проверки (например, `gpt-3.5-turbo`).
|
|
115
|
+
- **`--provider [provider]`**: Провайдер ИИ, используемый для проверки.
|
|
116
|
+
- **`--temperature [temperature]`**: Параметр температуры для модели ИИ.
|
|
117
|
+
- **`--api-key [apiKey]`**: Предоставьте свой собственный API-ключ для сервиса ИИ.
|
|
118
|
+
- **`--application-context [applicationContext]`**: Предоставьте дополнительный контекст для проверки ИИ.
|
|
119
|
+
- **`--data-serialization [dataSerialization]`**: Формат сериализации данных для использования в функциях ИИ Intlayer. Опции: `json` (стандартный, надежный), `toon` (меньше токенов, менее стабильный).
|
|
120
|
+
- **`--custom-prompt [prompt]`**: Настройка базового запроса, используемого для проверки. (Примечание: для большинства случаев рекомендуется использовать опцию `--custom-instructions`, так как она обеспечивает лучший контроль.)
|
|
121
|
+
|
|
122
|
+
> Пример: `npx intlayer doc review --model deepseek-chat --provider deepseek --temperature 0.5 --api-key sk-1234567890 --application-context "Мое приложение, магазин для кошек"`
|
|
123
|
+
|
|
124
|
+
**Опции переменных окружения:**
|
|
125
|
+
|
|
126
|
+
- **`--env`**: Указать окружение (например, `development`, `production`).
|
|
127
|
+
- **`--env-file [envFile]`**: Указать пользовательский файл окружения для загрузки переменных.
|
|
128
|
+
- **`--base-dir`**: Указать базовую директорию проекта.
|
|
129
|
+
- **`--no-cache`**: Отключить кэш.
|
|
130
|
+
|
|
131
|
+
> Пример: `npx intlayer doc review --base-dir ./docs --env-file .env.production.local`
|
|
132
|
+
|
|
133
|
+
**Опции логирования:**
|
|
134
|
+
|
|
135
|
+
- **`--verbose`**: Включить подробное логирование для отладки. (по умолчанию включено при использовании CLI)
|
|
136
|
+
|
|
137
|
+
> Пример: `npx intlayer doc review --verbose`
|
|
138
|
+
|
|
139
|
+
**Опции пользовательских инструкций:**
|
|
140
|
+
|
|
141
|
+
- **`--custom-instructions [customInstructions]`**: Пользовательские инструкции, добавляемые в запрос. Полезно для применения специфических правил касательно форматирования, перевода URL и т.д.
|
|
142
|
+
|
|
143
|
+
> Пример: `npx intlayer doc review --custom-instructions "Избегайте перевода URL и сохраняйте формат markdown"`
|
|
144
|
+
|
|
145
|
+
> Пример: `npx intlayer doc review --custom-instructions "$(cat ./instructions.md)"`
|
|
146
|
+
|
|
147
|
+
**Опции Git:**
|
|
148
|
+
|
|
149
|
+
- **`--git-diff`**: Запускать только для файлов, которые содержат изменения от базовой ветки (по умолчанию `origin/main`) до текущей ветки (по умолчанию: `HEAD`).
|
|
150
|
+
- **`--git-diff-base`**: Указать базовую ссылку для git diff (по умолчанию `origin/main`).
|
|
151
|
+
- **`--git-diff-current`**: Указать текущую ссылку для git diff (по умолчанию `HEAD`).
|
|
152
|
+
- **`--uncommitted`**: Включать незафиксированные изменения.
|
|
153
|
+
- **`--unpushed`**: Включать изменения, не отправленные в удалённый репозиторий.
|
|
154
|
+
- **`--untracked`**: Включать неотслеживаемые файлы.
|
|
155
|
+
|
|
156
|
+
> Пример: `npx intlayer doc review --git-diff --git-diff-base origin/main --git-diff-current HEAD`
|
|
157
|
+
|
|
158
|
+
> Пример: `npx intlayer doc review --uncommitted --unpushed --untracked`
|
|
159
|
+
|
|
160
|
+
> Обратите внимание, что путь к выходному файлу будет определяться путем замены следующих шаблонов:
|
|
161
|
+
>
|
|
162
|
+
> - `/{{baseLocale}}/` на `/{{locale}}/` (Unix)
|
|
163
|
+
> - `\{{baseLocale}}\` на `\{{locale}}\` (Windows)
|
|
164
|
+
> - `_{{baseLocale}}.` на `_{{locale}}.`
|
|
165
|
+
> - `{{baseLocale}}_` на `{{locale}}_`
|
|
166
|
+
> - `.{{baseLocaleName}}.` на `.{{localeName}}.`
|
|
167
|
+
>
|
|
168
|
+
> Если шаблон не найден, к расширению файла будет добавлено `.{{locale}}`. Например, `./my/file.md` будет проверен и обновлен в `./my/file.fr.md` для французской локали.
|
package/docs/ru/cli/index.md
CHANGED