@intlayer/docs 9.5.1 → 9.5.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/blog/ar/history_of_i18n.md +304 -0
- package/blog/de/history_of_i18n.md +304 -0
- package/blog/en/history_of_i18n.md +304 -0
- package/blog/en-GB/history_of_i18n.md +304 -0
- package/blog/es/history_of_i18n.md +304 -0
- package/blog/fr/history_of_i18n.md +304 -0
- package/blog/hi/history_of_i18n.md +304 -0
- package/blog/id/history_of_i18n.md +304 -0
- package/blog/it/history_of_i18n.md +304 -0
- package/blog/ja/history_of_i18n.md +304 -0
- package/blog/ko/history_of_i18n.md +304 -0
- package/blog/pl/history_of_i18n.md +304 -0
- package/blog/pt/history_of_i18n.md +304 -0
- package/blog/ru/history_of_i18n.md +304 -0
- package/blog/tr/history_of_i18n.md +304 -0
- package/blog/uk/history_of_i18n.md +304 -0
- package/blog/vi/history_of_i18n.md +304 -0
- package/blog/zh/history_of_i18n.md +304 -0
- package/dist/cjs/generated/blog.entry.cjs +20 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +0 -20
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +20 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +0 -20
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +0 -1
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/benchmark/index.md +4 -1
- package/docs/ar/benchmark/nextjs.md +32 -27
- package/docs/ar/benchmark/solid.md +13 -10
- package/docs/ar/benchmark/svelte.md +12 -9
- package/docs/ar/benchmark/tanstack.md +29 -24
- package/docs/ar/benchmark/vue.md +11 -7
- package/docs/ar/cli/build.md +8 -1
- package/docs/ar/cli/configuration.md +3 -1
- package/docs/ar/cli/doc-review.md +8 -1
- package/docs/ar/cli/doc-translate.md +5 -1
- package/docs/ar/cli/extract.md +2 -1
- package/docs/ar/cli/fill.md +5 -1
- package/docs/ar/cli/index.md +4 -5
- package/docs/ar/cli/live.md +5 -1
- package/docs/ar/cli/login.md +2 -2
- package/docs/ar/cli/pull.md +5 -1
- package/docs/ar/cli/push.md +5 -1
- package/docs/ar/cli/scan.md +5 -1
- package/docs/ar/cli/standalone.md +5 -1
- package/docs/ar/cli/test.md +5 -1
- package/docs/ar/cli/watch.md +5 -1
- package/docs/ar/compat/i18n-js.md +1 -1
- package/docs/ar/compat/i18next.md +1 -1
- package/docs/ar/compat/lingui.md +1 -1
- package/docs/ar/compat/next-i18next.md +1 -1
- package/docs/ar/compat/next-intl.md +1 -1
- package/docs/ar/compat/next-translate.md +1 -1
- package/docs/ar/compat/ngx-translate.md +1 -1
- package/docs/ar/compat/nuxtjs-i18n.md +1 -1
- package/docs/ar/compat/polyglot.md +1 -1
- package/docs/ar/compat/react-i18next.md +1 -1
- package/docs/ar/compat/react-intl.md +1 -1
- package/docs/ar/compat/svelte-i18n.md +1 -1
- package/docs/ar/compat/transloco.md +1 -1
- package/docs/ar/compat/vue-i18n.md +1 -1
- package/docs/ar/intlayer_with_remix_3.md +543 -0
- package/docs/bn/cli/index.md +4 -5
- package/docs/bn/cli/scan.md +5 -1
- package/docs/bn/cli/standalone.md +5 -1
- package/docs/cs/cli/index.md +4 -5
- package/docs/cs/cli/scan.md +5 -1
- package/docs/cs/cli/standalone.md +5 -1
- package/docs/de/benchmark/index.md +4 -1
- package/docs/de/benchmark/nextjs.md +32 -27
- package/docs/de/benchmark/solid.md +13 -10
- package/docs/de/benchmark/svelte.md +12 -9
- package/docs/de/benchmark/tanstack.md +29 -24
- package/docs/de/benchmark/vue.md +11 -7
- package/docs/de/cli/build.md +8 -1
- package/docs/de/cli/configuration.md +3 -1
- package/docs/de/cli/doc-review.md +8 -1
- package/docs/de/cli/doc-translate.md +5 -1
- package/docs/de/cli/extract.md +2 -1
- package/docs/de/cli/fill.md +5 -1
- package/docs/de/cli/index.md +4 -5
- package/docs/de/cli/live.md +5 -1
- package/docs/de/cli/login.md +2 -2
- package/docs/de/cli/pull.md +5 -1
- package/docs/de/cli/push.md +5 -1
- package/docs/de/cli/scan.md +5 -1
- package/docs/de/cli/standalone.md +5 -1
- package/docs/de/cli/test.md +5 -1
- package/docs/de/cli/watch.md +5 -1
- package/docs/de/compat/i18n-js.md +1 -1
- package/docs/de/compat/i18next.md +1 -1
- package/docs/de/compat/lingui.md +1 -1
- package/docs/de/compat/next-i18next.md +1 -1
- package/docs/de/compat/next-intl.md +1 -1
- package/docs/de/compat/next-translate.md +1 -1
- package/docs/de/compat/ngx-translate.md +1 -1
- package/docs/de/compat/nuxtjs-i18n.md +1 -1
- package/docs/de/compat/polyglot.md +1 -1
- package/docs/de/compat/react-i18next.md +1 -1
- package/docs/de/compat/react-intl.md +1 -1
- package/docs/de/compat/svelte-i18n.md +1 -1
- package/docs/de/compat/transloco.md +1 -1
- package/docs/de/compat/vue-i18n.md +1 -1
- package/docs/de/intlayer_with_remix_3.md +543 -0
- package/docs/en/benchmark/index.md +4 -1
- package/docs/en/benchmark/nextjs.md +32 -27
- package/docs/en/benchmark/solid.md +13 -10
- package/docs/en/benchmark/svelte.md +12 -9
- package/docs/en/benchmark/tanstack.md +30 -25
- package/docs/en/benchmark/vue.md +11 -7
- package/docs/en/cli/build.md +8 -1
- package/docs/en/cli/configuration.md +3 -1
- package/docs/en/cli/doc-review.md +8 -1
- package/docs/en/cli/doc-translate.md +5 -1
- package/docs/en/cli/extract.md +2 -1
- package/docs/en/cli/fill.md +5 -1
- package/docs/en/cli/index.md +4 -5
- package/docs/en/cli/live.md +5 -1
- package/docs/en/cli/login.md +2 -2
- package/docs/en/cli/pull.md +5 -1
- package/docs/en/cli/push.md +5 -1
- package/docs/en/cli/scan.md +5 -1
- package/docs/en/cli/standalone.md +5 -1
- package/docs/en/cli/test.md +5 -1
- package/docs/en/cli/watch.md +5 -1
- package/docs/en/compat/i18n-js.md +1 -1
- package/docs/en/compat/i18next.md +1 -1
- package/docs/en/compat/lingui.md +1 -1
- package/docs/en/compat/next-i18next.md +1 -1
- package/docs/en/compat/next-intl.md +1 -1
- package/docs/en/compat/next-translate.md +1 -1
- package/docs/en/compat/ngx-translate.md +1 -1
- package/docs/en/compat/nuxtjs-i18n.md +1 -1
- package/docs/en/compat/polyglot.md +1 -1
- package/docs/en/compat/react-i18next.md +1 -1
- package/docs/en/compat/react-intl.md +1 -1
- package/docs/en/compat/svelte-i18n.md +1 -1
- package/docs/en/compat/transloco.md +1 -1
- package/docs/en/compat/vue-i18n.md +1 -1
- package/docs/en/intlayer_with_remix_3.md +103 -71
- package/docs/en-GB/benchmark/index.md +4 -1
- package/docs/en-GB/benchmark/nextjs.md +32 -27
- package/docs/en-GB/benchmark/solid.md +13 -10
- package/docs/en-GB/benchmark/svelte.md +12 -9
- package/docs/en-GB/benchmark/tanstack.md +29 -24
- package/docs/en-GB/benchmark/vue.md +11 -7
- package/docs/en-GB/cli/build.md +8 -1
- package/docs/en-GB/cli/configuration.md +3 -1
- package/docs/en-GB/cli/doc-review.md +8 -1
- package/docs/en-GB/cli/doc-translate.md +5 -1
- package/docs/en-GB/cli/extract.md +2 -1
- package/docs/en-GB/cli/fill.md +5 -1
- package/docs/en-GB/cli/index.md +4 -5
- package/docs/en-GB/cli/live.md +5 -1
- package/docs/en-GB/cli/login.md +2 -2
- package/docs/en-GB/cli/pull.md +5 -1
- package/docs/en-GB/cli/push.md +5 -1
- package/docs/en-GB/cli/scan.md +5 -1
- package/docs/en-GB/cli/standalone.md +5 -1
- package/docs/en-GB/cli/test.md +5 -1
- package/docs/en-GB/cli/watch.md +5 -1
- package/docs/en-GB/compat/i18n-js.md +1 -1
- package/docs/en-GB/compat/i18next.md +1 -1
- package/docs/en-GB/compat/lingui.md +1 -1
- package/docs/en-GB/compat/next-i18next.md +1 -1
- package/docs/en-GB/compat/next-intl.md +1 -1
- package/docs/en-GB/compat/next-translate.md +1 -1
- package/docs/en-GB/compat/ngx-translate.md +1 -1
- package/docs/en-GB/compat/nuxtjs-i18n.md +1 -1
- package/docs/en-GB/compat/polyglot.md +1 -1
- package/docs/en-GB/compat/react-i18next.md +1 -1
- package/docs/en-GB/compat/react-intl.md +1 -1
- package/docs/en-GB/compat/svelte-i18n.md +1 -1
- package/docs/en-GB/compat/transloco.md +1 -1
- package/docs/en-GB/compat/vue-i18n.md +1 -1
- package/docs/en-GB/intlayer_with_remix_3.md +558 -0
- package/docs/es/benchmark/index.md +4 -1
- package/docs/es/benchmark/nextjs.md +32 -27
- package/docs/es/benchmark/solid.md +13 -10
- package/docs/es/benchmark/svelte.md +12 -9
- package/docs/es/benchmark/tanstack.md +29 -24
- package/docs/es/benchmark/vue.md +11 -7
- package/docs/es/cli/build.md +8 -1
- package/docs/es/cli/configuration.md +3 -1
- package/docs/es/cli/doc-review.md +8 -1
- package/docs/es/cli/doc-translate.md +5 -1
- package/docs/es/cli/extract.md +2 -1
- package/docs/es/cli/fill.md +5 -1
- package/docs/es/cli/index.md +4 -5
- package/docs/es/cli/live.md +5 -1
- package/docs/es/cli/login.md +2 -2
- package/docs/es/cli/pull.md +5 -1
- package/docs/es/cli/push.md +5 -1
- package/docs/es/cli/scan.md +5 -1
- package/docs/es/cli/standalone.md +5 -1
- package/docs/es/cli/test.md +5 -1
- package/docs/es/cli/watch.md +5 -1
- package/docs/es/compat/i18n-js.md +1 -1
- package/docs/es/compat/i18next.md +1 -1
- package/docs/es/compat/lingui.md +1 -1
- package/docs/es/compat/next-i18next.md +1 -1
- package/docs/es/compat/next-intl.md +1 -1
- package/docs/es/compat/next-translate.md +1 -1
- package/docs/es/compat/ngx-translate.md +1 -1
- package/docs/es/compat/nuxtjs-i18n.md +1 -1
- package/docs/es/compat/polyglot.md +1 -1
- package/docs/es/compat/react-i18next.md +1 -1
- package/docs/es/compat/react-intl.md +1 -1
- package/docs/es/compat/svelte-i18n.md +1 -1
- package/docs/es/compat/transloco.md +1 -1
- package/docs/es/compat/vue-i18n.md +1 -1
- package/docs/es/intlayer_with_remix_3.md +540 -0
- package/docs/fr/benchmark/index.md +4 -1
- package/docs/fr/benchmark/nextjs.md +32 -27
- package/docs/fr/benchmark/solid.md +13 -10
- package/docs/fr/benchmark/svelte.md +12 -9
- package/docs/fr/benchmark/tanstack.md +29 -24
- package/docs/fr/benchmark/vue.md +11 -7
- package/docs/fr/cli/build.md +8 -1
- package/docs/fr/cli/configuration.md +3 -1
- package/docs/fr/cli/doc-review.md +8 -1
- package/docs/fr/cli/doc-translate.md +5 -1
- package/docs/fr/cli/extract.md +2 -1
- package/docs/fr/cli/fill.md +5 -1
- package/docs/fr/cli/index.md +4 -5
- package/docs/fr/cli/live.md +5 -1
- package/docs/fr/cli/login.md +2 -2
- package/docs/fr/cli/pull.md +5 -1
- package/docs/fr/cli/push.md +5 -1
- package/docs/fr/cli/scan.md +5 -1
- package/docs/fr/cli/standalone.md +5 -1
- package/docs/fr/cli/test.md +5 -1
- package/docs/fr/cli/watch.md +5 -1
- package/docs/fr/compat/i18n-js.md +1 -1
- package/docs/fr/compat/i18next.md +1 -1
- package/docs/fr/compat/lingui.md +1 -1
- package/docs/fr/compat/next-i18next.md +1 -1
- package/docs/fr/compat/next-intl.md +1 -1
- package/docs/fr/compat/next-translate.md +1 -1
- package/docs/fr/compat/ngx-translate.md +1 -1
- package/docs/fr/compat/nuxtjs-i18n.md +1 -1
- package/docs/fr/compat/polyglot.md +1 -1
- package/docs/fr/compat/react-i18next.md +1 -1
- package/docs/fr/compat/react-intl.md +1 -1
- package/docs/fr/compat/svelte-i18n.md +1 -1
- package/docs/fr/compat/transloco.md +1 -1
- package/docs/fr/compat/vue-i18n.md +1 -1
- package/docs/fr/intlayer_with_remix_3.md +540 -0
- package/docs/hi/benchmark/index.md +4 -1
- package/docs/hi/benchmark/nextjs.md +32 -27
- package/docs/hi/benchmark/solid.md +13 -10
- package/docs/hi/benchmark/svelte.md +12 -9
- package/docs/hi/benchmark/tanstack.md +29 -24
- package/docs/hi/benchmark/vue.md +11 -7
- package/docs/hi/cli/build.md +8 -1
- package/docs/hi/cli/configuration.md +3 -1
- package/docs/hi/cli/doc-review.md +8 -1
- package/docs/hi/cli/doc-translate.md +5 -1
- package/docs/hi/cli/extract.md +2 -1
- package/docs/hi/cli/fill.md +5 -1
- package/docs/hi/cli/index.md +4 -5
- package/docs/hi/cli/live.md +5 -1
- package/docs/hi/cli/login.md +2 -2
- package/docs/hi/cli/pull.md +5 -1
- package/docs/hi/cli/push.md +5 -1
- package/docs/hi/cli/scan.md +5 -1
- package/docs/hi/cli/standalone.md +5 -1
- package/docs/hi/cli/test.md +5 -1
- package/docs/hi/cli/watch.md +5 -1
- package/docs/hi/compat/i18n-js.md +1 -1
- package/docs/hi/compat/i18next.md +1 -1
- package/docs/hi/compat/lingui.md +1 -1
- package/docs/hi/compat/next-i18next.md +1 -1
- package/docs/hi/compat/next-intl.md +1 -1
- package/docs/hi/compat/next-translate.md +1 -1
- package/docs/hi/compat/ngx-translate.md +1 -1
- package/docs/hi/compat/nuxtjs-i18n.md +1 -1
- package/docs/hi/compat/polyglot.md +1 -1
- package/docs/hi/compat/react-i18next.md +1 -1
- package/docs/hi/compat/react-intl.md +1 -1
- package/docs/hi/compat/svelte-i18n.md +1 -1
- package/docs/hi/compat/transloco.md +1 -1
- package/docs/hi/compat/vue-i18n.md +1 -1
- package/docs/hi/intlayer_with_remix_3.md +543 -0
- package/docs/id/benchmark/index.md +4 -1
- package/docs/id/benchmark/nextjs.md +32 -27
- package/docs/id/benchmark/solid.md +13 -10
- package/docs/id/benchmark/svelte.md +12 -9
- package/docs/id/benchmark/tanstack.md +29 -24
- package/docs/id/benchmark/vue.md +11 -7
- package/docs/id/cli/build.md +8 -1
- package/docs/id/cli/configuration.md +3 -1
- package/docs/id/cli/doc-review.md +8 -1
- package/docs/id/cli/doc-translate.md +5 -1
- package/docs/id/cli/extract.md +2 -1
- package/docs/id/cli/fill.md +5 -1
- package/docs/id/cli/index.md +4 -5
- package/docs/id/cli/live.md +5 -1
- package/docs/id/cli/login.md +2 -2
- package/docs/id/cli/pull.md +5 -1
- package/docs/id/cli/push.md +5 -1
- package/docs/id/cli/scan.md +5 -1
- package/docs/id/cli/standalone.md +5 -1
- package/docs/id/cli/test.md +5 -1
- package/docs/id/cli/watch.md +5 -1
- package/docs/id/compat/i18n-js.md +1 -1
- package/docs/id/compat/i18next.md +1 -1
- package/docs/id/compat/lingui.md +1 -1
- package/docs/id/compat/next-i18next.md +1 -1
- package/docs/id/compat/next-intl.md +1 -1
- package/docs/id/compat/next-translate.md +1 -1
- package/docs/id/compat/ngx-translate.md +1 -1
- package/docs/id/compat/nuxtjs-i18n.md +1 -1
- package/docs/id/compat/polyglot.md +1 -1
- package/docs/id/compat/react-i18next.md +1 -1
- package/docs/id/compat/react-intl.md +1 -1
- package/docs/id/compat/svelte-i18n.md +1 -1
- package/docs/id/compat/transloco.md +1 -1
- package/docs/id/compat/vue-i18n.md +1 -1
- package/docs/id/intlayer_with_remix_3.md +566 -0
- package/docs/it/benchmark/index.md +4 -1
- package/docs/it/benchmark/nextjs.md +32 -27
- package/docs/it/benchmark/solid.md +13 -10
- package/docs/it/benchmark/svelte.md +12 -9
- package/docs/it/benchmark/tanstack.md +29 -24
- package/docs/it/benchmark/vue.md +11 -7
- package/docs/it/cli/build.md +8 -1
- package/docs/it/cli/configuration.md +3 -1
- package/docs/it/cli/doc-review.md +8 -1
- package/docs/it/cli/doc-translate.md +5 -1
- package/docs/it/cli/extract.md +2 -1
- package/docs/it/cli/fill.md +5 -1
- package/docs/it/cli/index.md +4 -5
- package/docs/it/cli/live.md +5 -1
- package/docs/it/cli/login.md +2 -2
- package/docs/it/cli/pull.md +5 -1
- package/docs/it/cli/push.md +5 -1
- package/docs/it/cli/scan.md +5 -1
- package/docs/it/cli/standalone.md +5 -1
- package/docs/it/cli/test.md +5 -1
- package/docs/it/cli/watch.md +5 -1
- package/docs/it/compat/i18n-js.md +1 -1
- package/docs/it/compat/i18next.md +1 -1
- package/docs/it/compat/lingui.md +1 -1
- package/docs/it/compat/next-i18next.md +1 -1
- package/docs/it/compat/next-intl.md +1 -1
- package/docs/it/compat/next-translate.md +1 -1
- package/docs/it/compat/ngx-translate.md +1 -1
- package/docs/it/compat/nuxtjs-i18n.md +1 -1
- package/docs/it/compat/polyglot.md +1 -1
- package/docs/it/compat/react-i18next.md +1 -1
- package/docs/it/compat/react-intl.md +1 -1
- package/docs/it/compat/svelte-i18n.md +1 -1
- package/docs/it/compat/transloco.md +1 -1
- package/docs/it/compat/vue-i18n.md +1 -1
- package/docs/it/intlayer_with_remix_3.md +558 -0
- package/docs/ja/benchmark/index.md +4 -1
- package/docs/ja/benchmark/nextjs.md +32 -27
- package/docs/ja/benchmark/solid.md +13 -10
- package/docs/ja/benchmark/svelte.md +12 -9
- package/docs/ja/benchmark/tanstack.md +29 -24
- package/docs/ja/benchmark/vue.md +11 -7
- package/docs/ja/cli/build.md +8 -1
- package/docs/ja/cli/configuration.md +3 -1
- package/docs/ja/cli/doc-review.md +8 -1
- package/docs/ja/cli/doc-translate.md +5 -1
- package/docs/ja/cli/extract.md +2 -1
- package/docs/ja/cli/fill.md +5 -1
- package/docs/ja/cli/index.md +4 -5
- package/docs/ja/cli/live.md +5 -1
- package/docs/ja/cli/login.md +2 -2
- package/docs/ja/cli/pull.md +5 -1
- package/docs/ja/cli/push.md +5 -1
- package/docs/ja/cli/scan.md +5 -1
- package/docs/ja/cli/standalone.md +5 -1
- package/docs/ja/cli/test.md +5 -1
- package/docs/ja/cli/watch.md +5 -1
- package/docs/ja/compat/i18n-js.md +1 -1
- package/docs/ja/compat/i18next.md +1 -1
- package/docs/ja/compat/lingui.md +1 -1
- package/docs/ja/compat/next-i18next.md +1 -1
- package/docs/ja/compat/next-intl.md +1 -1
- package/docs/ja/compat/next-translate.md +1 -1
- package/docs/ja/compat/ngx-translate.md +1 -1
- package/docs/ja/compat/nuxtjs-i18n.md +1 -1
- package/docs/ja/compat/polyglot.md +1 -1
- package/docs/ja/compat/react-i18next.md +1 -1
- package/docs/ja/compat/react-intl.md +1 -1
- package/docs/ja/compat/svelte-i18n.md +1 -1
- package/docs/ja/compat/transloco.md +1 -1
- package/docs/ja/compat/vue-i18n.md +1 -1
- package/docs/ja/intlayer_with_remix_3.md +558 -0
- package/docs/ko/benchmark/index.md +4 -1
- package/docs/ko/benchmark/nextjs.md +32 -27
- package/docs/ko/benchmark/solid.md +13 -10
- package/docs/ko/benchmark/svelte.md +12 -9
- package/docs/ko/benchmark/tanstack.md +29 -24
- package/docs/ko/benchmark/vue.md +11 -7
- package/docs/ko/cli/build.md +8 -1
- package/docs/ko/cli/configuration.md +3 -1
- package/docs/ko/cli/doc-review.md +8 -1
- package/docs/ko/cli/doc-translate.md +5 -1
- package/docs/ko/cli/extract.md +2 -1
- package/docs/ko/cli/fill.md +5 -1
- package/docs/ko/cli/index.md +4 -5
- package/docs/ko/cli/live.md +5 -1
- package/docs/ko/cli/login.md +2 -2
- package/docs/ko/cli/pull.md +5 -1
- package/docs/ko/cli/push.md +5 -1
- package/docs/ko/cli/scan.md +5 -1
- package/docs/ko/cli/standalone.md +5 -1
- package/docs/ko/cli/test.md +5 -1
- package/docs/ko/cli/watch.md +5 -1
- package/docs/ko/compat/i18n-js.md +1 -1
- package/docs/ko/compat/i18next.md +1 -1
- package/docs/ko/compat/lingui.md +1 -1
- package/docs/ko/compat/next-i18next.md +1 -1
- package/docs/ko/compat/next-intl.md +1 -1
- package/docs/ko/compat/next-translate.md +1 -1
- package/docs/ko/compat/ngx-translate.md +1 -1
- package/docs/ko/compat/nuxtjs-i18n.md +1 -1
- package/docs/ko/compat/polyglot.md +1 -1
- package/docs/ko/compat/react-i18next.md +1 -1
- package/docs/ko/compat/react-intl.md +1 -1
- package/docs/ko/compat/svelte-i18n.md +1 -1
- package/docs/ko/compat/transloco.md +1 -1
- package/docs/ko/compat/vue-i18n.md +1 -1
- package/docs/ko/intlayer_with_remix_3.md +543 -0
- package/docs/nl/cli/index.md +4 -5
- package/docs/nl/cli/scan.md +5 -1
- package/docs/nl/cli/standalone.md +5 -1
- package/docs/pl/benchmark/index.md +4 -1
- package/docs/pl/benchmark/nextjs.md +32 -27
- package/docs/pl/benchmark/solid.md +13 -10
- package/docs/pl/benchmark/svelte.md +12 -9
- package/docs/pl/benchmark/tanstack.md +29 -24
- package/docs/pl/benchmark/vue.md +11 -7
- package/docs/pl/cli/build.md +8 -1
- package/docs/pl/cli/configuration.md +3 -1
- package/docs/pl/cli/doc-review.md +8 -1
- package/docs/pl/cli/doc-translate.md +5 -1
- package/docs/pl/cli/extract.md +2 -1
- package/docs/pl/cli/fill.md +5 -1
- package/docs/pl/cli/index.md +4 -5
- package/docs/pl/cli/live.md +5 -1
- package/docs/pl/cli/login.md +2 -2
- package/docs/pl/cli/pull.md +5 -1
- package/docs/pl/cli/push.md +5 -1
- package/docs/pl/cli/scan.md +5 -1
- package/docs/pl/cli/standalone.md +5 -1
- package/docs/pl/cli/test.md +5 -1
- package/docs/pl/cli/watch.md +5 -1
- package/docs/pl/compat/i18n-js.md +1 -1
- package/docs/pl/compat/i18next.md +1 -1
- package/docs/pl/compat/lingui.md +1 -1
- package/docs/pl/compat/next-i18next.md +1 -1
- package/docs/pl/compat/next-intl.md +1 -1
- package/docs/pl/compat/next-translate.md +1 -1
- package/docs/pl/compat/ngx-translate.md +1 -1
- package/docs/pl/compat/nuxtjs-i18n.md +1 -1
- package/docs/pl/compat/polyglot.md +1 -1
- package/docs/pl/compat/react-i18next.md +1 -1
- package/docs/pl/compat/react-intl.md +1 -1
- package/docs/pl/compat/svelte-i18n.md +1 -1
- package/docs/pl/compat/transloco.md +1 -1
- package/docs/pl/compat/vue-i18n.md +1 -1
- package/docs/pl/intlayer_with_remix_3.md +551 -0
- package/docs/pt/benchmark/index.md +4 -1
- package/docs/pt/benchmark/nextjs.md +32 -27
- package/docs/pt/benchmark/solid.md +13 -10
- package/docs/pt/benchmark/svelte.md +12 -9
- package/docs/pt/benchmark/tanstack.md +29 -24
- package/docs/pt/benchmark/vue.md +11 -7
- package/docs/pt/cli/build.md +8 -1
- package/docs/pt/cli/configuration.md +3 -1
- package/docs/pt/cli/doc-review.md +8 -1
- package/docs/pt/cli/doc-translate.md +5 -1
- package/docs/pt/cli/extract.md +2 -1
- package/docs/pt/cli/fill.md +5 -1
- package/docs/pt/cli/index.md +4 -5
- package/docs/pt/cli/live.md +5 -1
- package/docs/pt/cli/login.md +2 -2
- package/docs/pt/cli/pull.md +5 -1
- package/docs/pt/cli/push.md +5 -1
- package/docs/pt/cli/scan.md +5 -1
- package/docs/pt/cli/standalone.md +5 -1
- package/docs/pt/cli/test.md +5 -1
- package/docs/pt/cli/watch.md +5 -1
- package/docs/pt/compat/i18n-js.md +1 -1
- package/docs/pt/compat/i18next.md +1 -1
- package/docs/pt/compat/lingui.md +1 -1
- package/docs/pt/compat/next-i18next.md +1 -1
- package/docs/pt/compat/next-intl.md +1 -1
- package/docs/pt/compat/next-translate.md +1 -1
- package/docs/pt/compat/ngx-translate.md +1 -1
- package/docs/pt/compat/nuxtjs-i18n.md +1 -1
- package/docs/pt/compat/polyglot.md +1 -1
- package/docs/pt/compat/react-i18next.md +1 -1
- package/docs/pt/compat/react-intl.md +1 -1
- package/docs/pt/compat/svelte-i18n.md +1 -1
- package/docs/pt/compat/transloco.md +1 -1
- package/docs/pt/compat/vue-i18n.md +1 -1
- package/docs/pt/intlayer_with_remix_3.md +558 -0
- package/docs/ru/benchmark/index.md +4 -1
- package/docs/ru/benchmark/nextjs.md +32 -27
- package/docs/ru/benchmark/solid.md +13 -10
- package/docs/ru/benchmark/svelte.md +12 -9
- package/docs/ru/benchmark/tanstack.md +29 -24
- package/docs/ru/benchmark/vue.md +11 -7
- package/docs/ru/cli/build.md +8 -1
- package/docs/ru/cli/configuration.md +3 -1
- package/docs/ru/cli/doc-review.md +8 -1
- package/docs/ru/cli/doc-translate.md +5 -1
- package/docs/ru/cli/extract.md +2 -1
- package/docs/ru/cli/fill.md +5 -1
- package/docs/ru/cli/index.md +4 -5
- package/docs/ru/cli/live.md +5 -1
- package/docs/ru/cli/login.md +2 -2
- package/docs/ru/cli/pull.md +5 -1
- package/docs/ru/cli/push.md +5 -1
- package/docs/ru/cli/scan.md +5 -1
- package/docs/ru/cli/standalone.md +5 -1
- package/docs/ru/cli/test.md +5 -1
- package/docs/ru/cli/watch.md +5 -1
- package/docs/ru/compat/i18n-js.md +1 -1
- package/docs/ru/compat/i18next.md +1 -1
- package/docs/ru/compat/lingui.md +1 -1
- package/docs/ru/compat/next-i18next.md +1 -1
- package/docs/ru/compat/next-intl.md +1 -1
- package/docs/ru/compat/next-translate.md +1 -1
- package/docs/ru/compat/ngx-translate.md +1 -1
- package/docs/ru/compat/nuxtjs-i18n.md +1 -1
- package/docs/ru/compat/polyglot.md +1 -1
- package/docs/ru/compat/react-i18next.md +1 -1
- package/docs/ru/compat/react-intl.md +1 -1
- package/docs/ru/compat/svelte-i18n.md +1 -1
- package/docs/ru/compat/transloco.md +1 -1
- package/docs/ru/compat/vue-i18n.md +1 -1
- package/docs/ru/intlayer_with_remix_3.md +558 -0
- package/docs/tr/benchmark/index.md +4 -1
- package/docs/tr/benchmark/nextjs.md +32 -27
- package/docs/tr/benchmark/solid.md +13 -10
- package/docs/tr/benchmark/svelte.md +12 -9
- package/docs/tr/benchmark/tanstack.md +29 -24
- package/docs/tr/benchmark/vue.md +11 -7
- package/docs/tr/cli/build.md +8 -1
- package/docs/tr/cli/configuration.md +3 -1
- package/docs/tr/cli/doc-review.md +8 -1
- package/docs/tr/cli/doc-translate.md +5 -1
- package/docs/tr/cli/extract.md +2 -1
- package/docs/tr/cli/fill.md +5 -1
- package/docs/tr/cli/index.md +4 -5
- package/docs/tr/cli/live.md +5 -1
- package/docs/tr/cli/login.md +2 -2
- package/docs/tr/cli/pull.md +5 -1
- package/docs/tr/cli/push.md +5 -1
- package/docs/tr/cli/scan.md +5 -1
- package/docs/tr/cli/standalone.md +5 -1
- package/docs/tr/cli/test.md +5 -1
- package/docs/tr/cli/watch.md +5 -1
- package/docs/tr/compat/i18n-js.md +1 -1
- package/docs/tr/compat/i18next.md +1 -1
- package/docs/tr/compat/lingui.md +1 -1
- package/docs/tr/compat/next-i18next.md +1 -1
- package/docs/tr/compat/next-intl.md +1 -1
- package/docs/tr/compat/next-translate.md +1 -1
- package/docs/tr/compat/ngx-translate.md +1 -1
- package/docs/tr/compat/nuxtjs-i18n.md +1 -1
- package/docs/tr/compat/polyglot.md +1 -1
- package/docs/tr/compat/react-i18next.md +1 -1
- package/docs/tr/compat/react-intl.md +1 -1
- package/docs/tr/compat/svelte-i18n.md +1 -1
- package/docs/tr/compat/transloco.md +1 -1
- package/docs/tr/compat/vue-i18n.md +1 -1
- package/docs/tr/intlayer_with_remix_3.md +566 -0
- package/docs/uk/benchmark/index.md +4 -1
- package/docs/uk/benchmark/nextjs.md +32 -27
- package/docs/uk/benchmark/solid.md +13 -10
- package/docs/uk/benchmark/svelte.md +12 -9
- package/docs/uk/benchmark/tanstack.md +29 -24
- package/docs/uk/benchmark/vue.md +11 -7
- package/docs/uk/cli/build.md +8 -1
- package/docs/uk/cli/configuration.md +3 -1
- package/docs/uk/cli/doc-review.md +8 -1
- package/docs/uk/cli/doc-translate.md +5 -1
- package/docs/uk/cli/extract.md +2 -1
- package/docs/uk/cli/fill.md +5 -1
- package/docs/uk/cli/index.md +4 -5
- package/docs/uk/cli/live.md +5 -1
- package/docs/uk/cli/login.md +2 -2
- package/docs/uk/cli/pull.md +5 -1
- package/docs/uk/cli/push.md +5 -1
- package/docs/uk/cli/scan.md +5 -1
- package/docs/uk/cli/standalone.md +5 -1
- package/docs/uk/cli/test.md +5 -1
- package/docs/uk/cli/watch.md +5 -1
- package/docs/uk/compat/i18n-js.md +1 -1
- package/docs/uk/compat/i18next.md +1 -1
- package/docs/uk/compat/lingui.md +1 -1
- package/docs/uk/compat/next-i18next.md +1 -1
- package/docs/uk/compat/next-intl.md +1 -1
- package/docs/uk/compat/next-translate.md +1 -1
- package/docs/uk/compat/ngx-translate.md +1 -1
- package/docs/uk/compat/nuxtjs-i18n.md +1 -1
- package/docs/uk/compat/polyglot.md +1 -1
- package/docs/uk/compat/react-i18next.md +1 -1
- package/docs/uk/compat/react-intl.md +1 -1
- package/docs/uk/compat/svelte-i18n.md +1 -1
- package/docs/uk/compat/transloco.md +1 -1
- package/docs/uk/compat/vue-i18n.md +1 -1
- package/docs/uk/intlayer_with_remix_3.md +566 -0
- package/docs/ur/cli/index.md +4 -5
- package/docs/ur/cli/scan.md +5 -1
- package/docs/ur/cli/standalone.md +5 -1
- package/docs/vi/benchmark/index.md +4 -1
- package/docs/vi/benchmark/nextjs.md +32 -27
- package/docs/vi/benchmark/solid.md +13 -10
- package/docs/vi/benchmark/svelte.md +12 -9
- package/docs/vi/benchmark/tanstack.md +29 -24
- package/docs/vi/benchmark/vue.md +11 -7
- package/docs/vi/cli/build.md +8 -1
- package/docs/vi/cli/configuration.md +3 -1
- package/docs/vi/cli/doc-review.md +8 -1
- package/docs/vi/cli/doc-translate.md +5 -1
- package/docs/vi/cli/extract.md +2 -1
- package/docs/vi/cli/fill.md +5 -1
- package/docs/vi/cli/index.md +4 -5
- package/docs/vi/cli/live.md +5 -1
- package/docs/vi/cli/login.md +2 -2
- package/docs/vi/cli/pull.md +5 -1
- package/docs/vi/cli/push.md +5 -1
- package/docs/vi/cli/scan.md +5 -1
- package/docs/vi/cli/standalone.md +5 -1
- package/docs/vi/cli/test.md +5 -1
- package/docs/vi/cli/watch.md +5 -1
- package/docs/vi/compat/i18n-js.md +1 -1
- package/docs/vi/compat/i18next.md +1 -1
- package/docs/vi/compat/lingui.md +1 -1
- package/docs/vi/compat/next-i18next.md +1 -1
- package/docs/vi/compat/next-intl.md +1 -1
- package/docs/vi/compat/next-translate.md +1 -1
- package/docs/vi/compat/ngx-translate.md +1 -1
- package/docs/vi/compat/nuxtjs-i18n.md +1 -1
- package/docs/vi/compat/polyglot.md +1 -1
- package/docs/vi/compat/react-i18next.md +1 -1
- package/docs/vi/compat/react-intl.md +1 -1
- package/docs/vi/compat/svelte-i18n.md +1 -1
- package/docs/vi/compat/transloco.md +1 -1
- package/docs/vi/compat/vue-i18n.md +1 -1
- package/docs/vi/intlayer_with_remix_3.md +566 -0
- package/docs/zh/benchmark/index.md +4 -1
- package/docs/zh/benchmark/nextjs.md +32 -27
- package/docs/zh/benchmark/solid.md +13 -10
- package/docs/zh/benchmark/svelte.md +12 -9
- package/docs/zh/benchmark/tanstack.md +29 -24
- package/docs/zh/benchmark/vue.md +11 -7
- package/docs/zh/cli/build.md +8 -1
- package/docs/zh/cli/configuration.md +3 -1
- package/docs/zh/cli/doc-review.md +8 -1
- package/docs/zh/cli/doc-translate.md +5 -1
- package/docs/zh/cli/extract.md +2 -1
- package/docs/zh/cli/fill.md +5 -1
- package/docs/zh/cli/index.md +4 -5
- package/docs/zh/cli/live.md +5 -1
- package/docs/zh/cli/login.md +2 -2
- package/docs/zh/cli/pull.md +5 -1
- package/docs/zh/cli/push.md +5 -1
- package/docs/zh/cli/scan.md +5 -1
- package/docs/zh/cli/standalone.md +5 -1
- package/docs/zh/cli/test.md +5 -1
- package/docs/zh/cli/watch.md +5 -1
- package/docs/zh/compat/i18n-js.md +1 -1
- package/docs/zh/compat/i18next.md +1 -1
- package/docs/zh/compat/lingui.md +1 -1
- package/docs/zh/compat/next-i18next.md +1 -1
- package/docs/zh/compat/next-intl.md +1 -1
- package/docs/zh/compat/next-translate.md +1 -1
- package/docs/zh/compat/ngx-translate.md +1 -1
- package/docs/zh/compat/nuxtjs-i18n.md +1 -1
- package/docs/zh/compat/polyglot.md +1 -1
- package/docs/zh/compat/react-i18next.md +1 -1
- package/docs/zh/compat/react-intl.md +1 -1
- package/docs/zh/compat/svelte-i18n.md +1 -1
- package/docs/zh/compat/transloco.md +1 -1
- package/docs/zh/compat/vue-i18n.md +1 -1
- package/docs/zh/intlayer_with_remix_3.md +558 -0
- package/package.json +7 -7
- package/src/generated/blog.entry.ts +20 -0
- package/src/generated/docs.entry.ts +0 -20
- package/docs/ar/cli/ci.md +0 -186
- package/docs/de/cli/ci.md +0 -186
- package/docs/en/cli/ci.md +0 -216
- package/docs/en-GB/cli/ci.md +0 -186
- package/docs/es/cli/ci.md +0 -186
- package/docs/fr/cli/ci.md +0 -186
- package/docs/hi/cli/ci.md +0 -186
- package/docs/id/cli/ci.md +0 -186
- package/docs/it/cli/ci.md +0 -186
- package/docs/ja/cli/ci.md +0 -186
- package/docs/ko/cli/ci.md +0 -186
- package/docs/pl/cli/ci.md +0 -186
- package/docs/pt/cli/ci.md +0 -186
- package/docs/ru/cli/ci.md +0 -186
- package/docs/tr/cli/ci.md +0 -186
- package/docs/uk/cli/ci.md +0 -186
- package/docs/vi/cli/ci.md +0 -186
- package/docs/zh/cli/ci.md +0 -186
package/docs/ar/cli/ci.md
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
createdAt: 2026-01-06
|
|
3
|
-
updatedAt: 2026-01-06
|
|
4
|
-
title: أمر CI
|
|
5
|
-
description: تعلم كيفية استخدام أمر Intlayer CI لتشغيل أوامر Intlayer مع بيانات الاعتماد المحقونة تلقائياً في خطوط أنابيب CI/CD والمستودعات الأحادية.
|
|
6
|
-
keywords:
|
|
7
|
-
- CI
|
|
8
|
-
- CI/CD
|
|
9
|
-
- الأتمتة
|
|
10
|
-
- المستودع الأحادي
|
|
11
|
-
- بيانات الاعتماد
|
|
12
|
-
- CLI
|
|
13
|
-
- Intlayer
|
|
14
|
-
slugs:
|
|
15
|
-
- doc
|
|
16
|
-
- concept
|
|
17
|
-
- cli
|
|
18
|
-
- ci
|
|
19
|
-
history:
|
|
20
|
-
- version: 7.5.11
|
|
21
|
-
date: 2026-01-06
|
|
22
|
-
changes: "إضافة أمر CI"
|
|
23
|
-
author: aymericzip
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
# أمر CI
|
|
27
|
-
|
|
28
|
-
```bash packageManager="npm"
|
|
29
|
-
npx intlayer ci <command...>
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
```bash packageManager="yarn"
|
|
33
|
-
yarn intlayer ci <command...>
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
```bash packageManager="pnpm"
|
|
37
|
-
pnpm intlayer ci <command...>
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
```bash packageManager="bun"
|
|
41
|
-
bun x intlayer ci <command...>
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
تم تصميم أمر CI للأتمتة وخطوط أنابيب CI/CD. يقوم بحقن بيانات الاعتماد تلقائياً من متغير البيئة `INTLAYER_PROJECT_CREDENTIALS` ويمكنه تشغيل أوامر Intlayer عبر مشاريع متعددة في مستودع أحادي.
|
|
45
|
-
|
|
46
|
-
## كيفية العمل
|
|
47
|
-
|
|
48
|
-
يعمل أمر CI في وضعين:
|
|
49
|
-
|
|
50
|
-
1. **وضع المشروع الواحد**: إذا كان الدليل الحالي يطابق أحد مسارات المشاريع في `INTLAYER_PROJECT_CREDENTIALS`، فإنه يشغل الأمر فقط لهذا المشروع المحدد.
|
|
51
|
-
|
|
52
|
-
2. **وضع التكرار**: إذا لم يتم اكتشاف سياق مشروع محدد، فإنه يتكرر عبر جميع المشاريع المُكوّنة ويشغل الأمر لكل واحد منها.
|
|
53
|
-
|
|
54
|
-
## متغير البيئة
|
|
55
|
-
|
|
56
|
-
يتطلب الأمر تعيين متغير البيئة `INTLAYER_PROJECT_CREDENTIALS`. يجب أن يحتوي هذا المتغير على كائن JSON يقوم بتعيين مسارات المشاريع إلى بيانات اعتمادها:
|
|
57
|
-
|
|
58
|
-
```json
|
|
59
|
-
{
|
|
60
|
-
"packages/app": {
|
|
61
|
-
"clientId": "your-client-id-1",
|
|
62
|
-
"clientSecret": "your-client-secret-1"
|
|
63
|
-
},
|
|
64
|
-
"packages/admin": {
|
|
65
|
-
"clientId": "your-client-id-2",
|
|
66
|
-
"clientSecret": "your-client-secret-2"
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## اكتشاف مدير الحزم
|
|
72
|
-
|
|
73
|
-
يكتشف أمر CI تلقائياً مدير الحزم المستخدم (npm أو yarn أو pnpm أو bun) بناءً على متغير البيئة `npm_config_user_agent` ويستخدم الأمر المناسب لتنفيذ Intlayer.
|
|
74
|
-
|
|
75
|
-
## الوسائط
|
|
76
|
-
|
|
77
|
-
- **`<command...>`**: أمر Intlayer المراد تنفيذه (على سبيل المثال، `fill` أو `push` أو `build`). يمكنك تمرير أي أمر Intlayer ووسائطه.
|
|
78
|
-
|
|
79
|
-
> مثال: `npx intlayer ci fill --verbose`
|
|
80
|
-
>
|
|
81
|
-
> مثال: `npx intlayer ci push`
|
|
82
|
-
>
|
|
83
|
-
> مثال: `npx intlayer ci build`
|
|
84
|
-
|
|
85
|
-
## أمثلة
|
|
86
|
-
|
|
87
|
-
### تشغيل أمر في وضع المشروع الواحد
|
|
88
|
-
|
|
89
|
-
إذا كنت في دليل مشروع يطابق أحد المسارات في `INTLAYER_PROJECT_CREDENTIALS`:
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
cd packages/app
|
|
93
|
-
npx intlayer ci fill
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
سيقوم هذا بتشغيل أمر `fill` مع حقن بيانات الاعتماد تلقائياً لمشروع `packages/app`.
|
|
97
|
-
|
|
98
|
-
### تشغيل أمر عبر جميع المشاريع
|
|
99
|
-
|
|
100
|
-
إذا كنت في دليل لا يطابق أي مسار مشروع، سيتكرر الأمر عبر جميع المشاريع المُكوّنة:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
cd /path/to/monorepo
|
|
104
|
-
npx intlayer ci push
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
سيقوم هذا بتشغيل أمر `push` لكل مشروع مُكوّن في `INTLAYER_PROJECT_CREDENTIALS`.
|
|
108
|
-
|
|
109
|
-
### تمرير علامات إضافية
|
|
110
|
-
|
|
111
|
-
يمكنك تمرير أي علامات إلى أمر Intlayer الأساسي:
|
|
112
|
-
|
|
113
|
-
```bash packageManager="npm"
|
|
114
|
-
npx intlayer ci fill --verbose --mode complete
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
```bash packageManager="yarn"
|
|
118
|
-
yarn intlayer ci fill --verbose --mode complete
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
```bash packageManager="pnpm"
|
|
122
|
-
pnpm intlayer ci fill --verbose --mode complete
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
```bash packageManager="bun"
|
|
126
|
-
bun x intlayer ci fill --verbose --mode complete
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### الاستخدام في خطوط أنابيب CI/CD
|
|
130
|
-
|
|
131
|
-
تشغيل `intlayer init` ينشئ لك سير عمل GitHub Actions جاهزة للاستخدام (انظر [سير العمل المُنشأ من GitHub Actions](#scaffolded-github-actions) أدناه). يوضح المثال هنا إعداد معادل باستخدام أمر `ci` لـ monorepo، حيث يتم حقن بيانات الاعتماد لكل مشروع من `INTLAYER_PROJECT_CREDENTIALS`.
|
|
132
|
-
|
|
133
|
-
في تكوين CI/CD الخاص بك (على سبيل المثال، GitHub Actions أو GitLab CI)، قم بتعيين `INTLAYER_PROJECT_CREDENTIALS` كسر:
|
|
134
|
-
|
|
135
|
-
```yaml
|
|
136
|
-
# مثال GitHub Actions
|
|
137
|
-
env:
|
|
138
|
-
INTLAYER_PROJECT_CREDENTIALS: ${{ secrets.INTLAYER_PROJECT_CREDENTIALS }}
|
|
139
|
-
|
|
140
|
-
steps:
|
|
141
|
-
- name: ملء القواميس
|
|
142
|
-
run: npx intlayer ci fill
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## إجراءات GitHub المُنشأة تلقائياً
|
|
146
|
-
|
|
147
|
-
عند تشغيل `intlayer init`، يكتشف Intlayer مدير الحزم الخاص بك (npm أو yarn أو pnpm أو bun) وينشئ سير عملين من إجراءات GitHub تحت `.github/workflows/`، مع أوامر تطابق مدير الحزم هذا:
|
|
148
|
-
|
|
149
|
-
- **`intlayer-fill.yml`** — في كل طلب دمج، ينشئ القواميس ويشغل `intlayer fill --git-diff --mode complete` لإنشاء الترجمات المفقودة للقواميس المتغيرة، ثم يرسل النتيجة مرة أخرى إلى فرع طلب الدمج.
|
|
150
|
-
- **`intlayer-test.yml`** — في كل طلب دمج، ينشئ القواموس ويشغل `intlayer test`، ويفشل الفحص عندما تكون الترجمات المطلوبة مفقودة للغات المطلوبة.
|
|
151
|
-
|
|
152
|
-
لن يتم استبدال ملفات سير العمل الموجودة. لتخطي الإنشاء بالكامل، قم بتشغيل:
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
npx intlayer init --no-github-actions
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### توفير وصول الذكاء الاصطناعي لسير العمل fill
|
|
159
|
-
|
|
160
|
-
ملف `intlayer-fill.yml` المُنشأ يتطلب وصول الذكاء الاصطناعي. يتوفر خياران (مُكوّنان في كتلة `env` في سير العمل):
|
|
161
|
-
|
|
162
|
-
1. **مفتاح مزود الذكاء الاصطناعي الخاص بك** — أضف سراً `AI_API_KEY` في إعدادات المستودع (Settings → Secrets and variables → Actions). يقوم سير العمل بإعادة توجيهه عبر `--provider` و `--model` و `--api-key`.
|
|
163
|
-
2. **مفاتيح وصول Intlayer CMS** — أضف أسراراً `INTLAYER_CLIENT_ID` و `INTLAYER_CLIENT_SECRET` وربطها في قسم `editor` الخاص بك في `intlayer.config`. مفاتيح وصول CMS تمنح وصول الذكاء الاصطناعي من خلال خادم Intlayer الخلفي.
|
|
164
|
-
|
|
165
|
-
سير العمل `intlayer-test.yml` لا يتطلب أي وصول للذكاء الاصطناعي.
|
|
166
|
-
|
|
167
|
-
## معالجة الأخطاء
|
|
168
|
-
|
|
169
|
-
- إذا لم يتم تعيين `INTLAYER_PROJECT_CREDENTIALS`، فسيخرج الأمر مع خطأ.
|
|
170
|
-
- إذا لم يكن `INTLAYER_PROJECT_CREDENTIALS` JSON صالحاً، فسيخرج الأمر مع خطأ.
|
|
171
|
-
- إذا لم يكن مسار المشروع موجوداً، فسيتم تخطيه مع تحذير.
|
|
172
|
-
- إذا فشل أي مشروع، فسيخرج الأمر برمز حالة غير صفري.
|
|
173
|
-
|
|
174
|
-
## حالات الاستخدام
|
|
175
|
-
|
|
176
|
-
- **أتمتة المستودع الأحادي**: تشغيل أوامر Intlayer عبر مشاريع متعددة في مستودع أحادي
|
|
177
|
-
- **خطوط أنابيب CI/CD**: أتمتة إدارة القواميس في سير عمل التكامل المستمر
|
|
178
|
-
- **العمليات المجمعة**: تنفيذ نفس العملية على مشاريع Intlayer متعددة في وقت واحد
|
|
179
|
-
- **إدارة الأسرار**: إدارة بيانات الاعتماد بشكل آمن لعدة مشاريع باستخدام متغيرات البيئة
|
|
180
|
-
|
|
181
|
-
## أفضل ممارسات الأمان
|
|
182
|
-
|
|
183
|
-
- قم بتخزين `INTLAYER_PROJECT_CREDENTIALS` كأسرار مشفرة في منصة CI/CD الخاصة بك
|
|
184
|
-
- لا تقم أبداً بإيداع بيانات الاعتماد في التحكم بالإصدارات
|
|
185
|
-
- استخدم بيانات اعتماد خاصة بالبيئة لبيئات النشر المختلفة
|
|
186
|
-
- قم بتدوير بيانات الاعتماد بانتظام
|
package/docs/de/cli/ci.md
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
createdAt: 2026-01-06
|
|
3
|
-
updatedAt: 2026-01-06
|
|
4
|
-
title: CI-Befehl
|
|
5
|
-
description: Erfahren Sie, wie Sie den Intlayer CI-Befehl verwenden, um Intlayer-Befehle mit automatisch injizierten Anmeldedaten in CI/CD-Pipelines und Monorepos auszuführen.
|
|
6
|
-
keywords:
|
|
7
|
-
- CI
|
|
8
|
-
- CI/CD
|
|
9
|
-
- Automatisierung
|
|
10
|
-
- Monorepo
|
|
11
|
-
- Anmeldedaten
|
|
12
|
-
- CLI
|
|
13
|
-
- Intlayer
|
|
14
|
-
slugs:
|
|
15
|
-
- doc
|
|
16
|
-
- concept
|
|
17
|
-
- cli
|
|
18
|
-
- ci
|
|
19
|
-
history:
|
|
20
|
-
- version: 7.5.11
|
|
21
|
-
date: 2026-01-06
|
|
22
|
-
changes: "CI-Befehl hinzufügen"
|
|
23
|
-
author: aymericzip
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
# CI-Befehl
|
|
27
|
-
|
|
28
|
-
```bash packageManager="npm"
|
|
29
|
-
npx intlayer ci <command...>
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
```bash packageManager="yarn"
|
|
33
|
-
yarn intlayer ci <command...>
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
```bash packageManager="pnpm"
|
|
37
|
-
pnpm intlayer ci <command...>
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
```bash packageManager="bun"
|
|
41
|
-
bun x intlayer ci <command...>
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Der CI-Befehl ist für Automatisierung und CI/CD-Pipelines konzipiert. Er injiziert automatisch Anmeldedaten aus der Umgebungsvariable `INTLAYER_PROJECT_CREDENTIALS` und kann Intlayer-Befehle über mehrere Projekte in einem Monorepo ausführen.
|
|
45
|
-
|
|
46
|
-
## Funktionsweise
|
|
47
|
-
|
|
48
|
-
Der CI-Befehl arbeitet in zwei Modi:
|
|
49
|
-
|
|
50
|
-
1. **Einzelprojektmodus**: Wenn das aktuelle Arbeitsverzeichnis mit einem der Projektpfade in `INTLAYER_PROJECT_CREDENTIALS` übereinstimmt, führt er den Befehl nur für dieses spezifische Projekt aus.
|
|
51
|
-
|
|
52
|
-
2. **Iterationsmodus**: Wenn kein spezifischer Projektkontext erkannt wird, iteriert er über alle konfigurierten Projekte und führt den Befehl für jedes aus.
|
|
53
|
-
|
|
54
|
-
## Umgebungsvariable
|
|
55
|
-
|
|
56
|
-
Der Befehl erfordert, dass die Umgebungsvariable `INTLAYER_PROJECT_CREDENTIALS` gesetzt ist. Diese Variable sollte ein JSON-Objekt enthalten, das Projektpfade ihren Anmeldedaten zuordnet:
|
|
57
|
-
|
|
58
|
-
```json
|
|
59
|
-
{
|
|
60
|
-
"packages/app": {
|
|
61
|
-
"clientId": "your-client-id-1",
|
|
62
|
-
"clientSecret": "your-client-secret-1"
|
|
63
|
-
},
|
|
64
|
-
"packages/admin": {
|
|
65
|
-
"clientId": "your-client-id-2",
|
|
66
|
-
"clientSecret": "your-client-secret-2"
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## Paketmanager-Erkennung
|
|
72
|
-
|
|
73
|
-
Der CI-Befehl erkennt automatisch, welcher Paketmanager verwendet wird (npm, yarn, pnpm oder bun), basierend auf der Umgebungsvariable `npm_config_user_agent`, und verwendet den entsprechenden Befehl zur Ausführung von Intlayer.
|
|
74
|
-
|
|
75
|
-
## Argumente
|
|
76
|
-
|
|
77
|
-
- **`<command...>`**: Der auszuführende Intlayer-Befehl (z. B. `fill`, `push`, `build`). Sie können jeden Intlayer-Befehl und seine Argumente übergeben.
|
|
78
|
-
|
|
79
|
-
> Beispiel: `npx intlayer ci fill --verbose`
|
|
80
|
-
>
|
|
81
|
-
> Beispiel: `npx intlayer ci push`
|
|
82
|
-
>
|
|
83
|
-
> Beispiel: `npx intlayer ci build`
|
|
84
|
-
|
|
85
|
-
## Beispiele
|
|
86
|
-
|
|
87
|
-
### Befehl im Einzelprojektmodus ausführen
|
|
88
|
-
|
|
89
|
-
Wenn Sie sich in einem Projektverzeichnis befinden, das mit einem der Pfade in `INTLAYER_PROJECT_CREDENTIALS` übereinstimmt:
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
cd packages/app
|
|
93
|
-
npx intlayer ci fill
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Dies führt den Befehl `fill` mit automatisch injizierten Anmeldedaten für das Projekt `packages/app` aus.
|
|
97
|
-
|
|
98
|
-
### Befehl für alle Projekte ausführen
|
|
99
|
-
|
|
100
|
-
Wenn Sie sich in einem Verzeichnis befinden, das mit keinem Projektpfad übereinstimmt, iteriert der Befehl über alle konfigurierten Projekte:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
cd /path/to/monorepo
|
|
104
|
-
npx intlayer ci push
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
Dies führt den Befehl `push` für jedes in `INTLAYER_PROJECT_CREDENTIALS` konfigurierte Projekt aus.
|
|
108
|
-
|
|
109
|
-
### Zusätzliche Flags übergeben
|
|
110
|
-
|
|
111
|
-
Sie können beliebige Flags an den zugrunde liegenden Intlayer-Befehl übergeben:
|
|
112
|
-
|
|
113
|
-
```bash packageManager="npm"
|
|
114
|
-
npx intlayer ci fill --verbose --mode complete
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
```bash packageManager="yarn"
|
|
118
|
-
yarn intlayer ci fill --verbose --mode complete
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
```bash packageManager="pnpm"
|
|
122
|
-
pnpm intlayer ci fill --verbose --mode complete
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
```bash packageManager="bun"
|
|
126
|
-
bun x intlayer ci fill --verbose --mode complete
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Verwendung in CI/CD-Pipelines
|
|
130
|
-
|
|
131
|
-
Das Ausführen von `intlayer init` erstellt zwei einsatzbereite GitHub Actions-Workflows für Sie (siehe [Scaffolded GitHub Actions](#scaffolded-github-actions) unten). Das Beispiel hier zeigt das äquivalente Setup mit dem `ci`-Befehl für ein Monorepo, bei dem Anmeldedaten pro Projekt aus `INTLAYER_PROJECT_CREDENTIALS` injiziert werden.
|
|
132
|
-
|
|
133
|
-
In Ihrer CI/CD-Konfiguration (z. B. GitHub Actions, GitLab CI) setzen Sie `INTLAYER_PROJECT_CREDENTIALS` als Geheimnis:
|
|
134
|
-
|
|
135
|
-
```yaml
|
|
136
|
-
# GitHub Actions Beispiel
|
|
137
|
-
env:
|
|
138
|
-
INTLAYER_PROJECT_CREDENTIALS: ${{ secrets.INTLAYER_PROJECT_CREDENTIALS }}
|
|
139
|
-
|
|
140
|
-
steps:
|
|
141
|
-
- name: Wörterbücher füllen
|
|
142
|
-
run: npx intlayer ci fill
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## Gerüstete GitHub Actions
|
|
146
|
-
|
|
147
|
-
Wenn Sie `intlayer init` ausführen, erkennt Intlayer Ihren Paketmanager (npm, yarn, pnpm oder bun) und erstellt zwei GitHub Actions-Workflows unter `.github/workflows/` mit Befehlen, die diesem Paketmanager entsprechen:
|
|
148
|
-
|
|
149
|
-
- **`intlayer-fill.yml`** — Bei jedem Pull Request werden die Wörterbücher erstellt und `intlayer fill --git-diff --mode complete` ausgeführt, um fehlende Übersetzungen für die geänderten Wörterbücher zu generieren, und dann wird das Ergebnis auf den PR-Branch committed.
|
|
150
|
-
- **`intlayer-test.yml`** — Bei jedem Pull Request werden die Wörterbücher erstellt und `intlayer test` ausgeführt, wobei die Prüfung fehlschlägt, wenn erforderliche Lokalisierungen fehlende Übersetzungen haben.
|
|
151
|
-
|
|
152
|
-
Vorhandene Workflow-Dateien werden niemals überschrieben. Um das Scaffolding vollständig zu überspringen, führen Sie aus:
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
npx intlayer init --no-github-actions
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### AI-Zugriff für den Fill-Workflow bereitstellen
|
|
159
|
-
|
|
160
|
-
Die gerüstete `intlayer-fill.yml` erfordert AI-Zugriff. Es stehen zwei Optionen zur Verfügung (konfiguriert im `env`-Block des Workflows):
|
|
161
|
-
|
|
162
|
-
1. **Ihr eigener AI-Provider-Schlüssel** — Fügen Sie ein `AI_API_KEY`-Secret in Ihren Repository-Einstellungen hinzu (Settings → Secrets and variables → Actions). Der Workflow leitet ihn über `--provider`, `--model` und `--api-key` weiter.
|
|
163
|
-
2. **Intlayer CMS-Zugangsschlüssel** — Fügen Sie `INTLAYER_CLIENT_ID` und `INTLAYER_CLIENT_SECRET`-Secrets hinzu und verbinden Sie sie mit Ihrem `intlayer.config` `editor`-Abschnitt. CMS-Zugangsschlüssel gewähren AI-Zugriff über das Intlayer-Backend.
|
|
164
|
-
|
|
165
|
-
Der `intlayer-test.yml`-Workflow erfordert keinen AI-Zugriff.
|
|
166
|
-
|
|
167
|
-
## Fehlerbehandlung
|
|
168
|
-
|
|
169
|
-
- Wenn `INTLAYER_PROJECT_CREDENTIALS` nicht gesetzt ist, beendet sich der Befehl mit einem Fehler.
|
|
170
|
-
- Wenn `INTLAYER_PROJECT_CREDENTIALS` kein gültiges JSON ist, beendet sich der Befehl mit einem Fehler.
|
|
171
|
-
- Wenn ein Projektpfad nicht existiert, wird er mit einer Warnung übersprungen.
|
|
172
|
-
- Wenn ein Projekt fehlschlägt, beendet sich der Befehl mit einem Statuscode ungleich null.
|
|
173
|
-
|
|
174
|
-
## Anwendungsfälle
|
|
175
|
-
|
|
176
|
-
- **Monorepo-Automatisierung**: Intlayer-Befehle über mehrere Projekte in einem Monorepo ausführen
|
|
177
|
-
- **CI/CD-Pipelines**: Automatisierung der Wörterbuchverwaltung in Continuous-Integration-Workflows
|
|
178
|
-
- **Massenoperationen**: Dieselbe Operation gleichzeitig für mehrere Intlayer-Projekte durchführen
|
|
179
|
-
- **Geheimnisverwaltung**: Sichere Verwaltung von Anmeldedaten für mehrere Projekte mithilfe von Umgebungsvariablen
|
|
180
|
-
|
|
181
|
-
## Sicherheitsbest Practices
|
|
182
|
-
|
|
183
|
-
- Speichern Sie `INTLAYER_PROJECT_CREDENTIALS` als verschlüsselte Geheimnisse in Ihrer CI/CD-Plattform
|
|
184
|
-
- Committen Sie niemals Anmeldedaten in die Versionskontrolle
|
|
185
|
-
- Verwenden Sie umgebungsspezifische Anmeldedaten für verschiedene Bereitstellungsumgebungen
|
|
186
|
-
- Rotieren Sie Anmeldedaten regelmäßig
|
package/docs/en/cli/ci.md
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
createdAt: 2026-01-06
|
|
3
|
-
updatedAt: 2026-01-06
|
|
4
|
-
title: CI Command
|
|
5
|
-
description: Learn how to use the Intlayer CI command to run Intlayer commands with auto-injected credentials in CI/CD pipelines and monorepos.
|
|
6
|
-
keywords:
|
|
7
|
-
- CI
|
|
8
|
-
- CI/CD
|
|
9
|
-
- Automation
|
|
10
|
-
- Monorepo
|
|
11
|
-
- Credentials
|
|
12
|
-
- CLI
|
|
13
|
-
- Intlayer
|
|
14
|
-
slugs:
|
|
15
|
-
- doc
|
|
16
|
-
- concept
|
|
17
|
-
- cli
|
|
18
|
-
- ci
|
|
19
|
-
history:
|
|
20
|
-
- version: 7.5.11
|
|
21
|
-
date: 2026-01-06
|
|
22
|
-
changes: "Add CI command"
|
|
23
|
-
author: aymericzip
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
# CI Command
|
|
27
|
-
|
|
28
|
-
```bash packageManager="npm"
|
|
29
|
-
npx intlayer ci <command...>
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
```bash packageManager="yarn"
|
|
33
|
-
yarn intlayer ci <command...>
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
```bash packageManager="pnpm"
|
|
37
|
-
pnpm intlayer ci <command...>
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
```bash packageManager="bun"
|
|
41
|
-
bun x intlayer ci <command...>
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
The CI command is designed for automation and CI/CD pipelines. It automatically injects credentials from the `INTLAYER_PROJECT_CREDENTIALS` environment variable and can run Intlayer commands across multiple projects in a monorepo.
|
|
45
|
-
|
|
46
|
-
## How it works
|
|
47
|
-
|
|
48
|
-
The CI command operates in two modes:
|
|
49
|
-
|
|
50
|
-
1. **Single Project Mode**: If the current working directory matches one of the project paths in `INTLAYER_PROJECT_CREDENTIALS`, it runs the command for that specific project only.
|
|
51
|
-
|
|
52
|
-
2. **Iteration Mode**: If no specific project context is detected, it iterates over all configured projects and runs the command for each one.
|
|
53
|
-
|
|
54
|
-
## Environment Variable
|
|
55
|
-
|
|
56
|
-
The command requires the `INTLAYER_PROJECT_CREDENTIALS` environment variable to be set. This variable should contain a JSON object mapping project paths to their credentials:
|
|
57
|
-
|
|
58
|
-
```json
|
|
59
|
-
{
|
|
60
|
-
"packages/app": {
|
|
61
|
-
"clientId": "your-client-id-1",
|
|
62
|
-
"clientSecret": "your-client-secret-1"
|
|
63
|
-
},
|
|
64
|
-
"packages/admin": {
|
|
65
|
-
"clientId": "your-client-id-2",
|
|
66
|
-
"clientSecret": "your-client-secret-2"
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## Package Manager Detection
|
|
72
|
-
|
|
73
|
-
The CI command automatically detects which package manager is being used (npm, yarn, pnpm, or bun) based on the `npm_config_user_agent` environment variable and uses the appropriate command to execute Intlayer.
|
|
74
|
-
|
|
75
|
-
## Arguments
|
|
76
|
-
|
|
77
|
-
- **`<command...>`**: The Intlayer command to execute (e.g., `fill`, `push`, `build`). You can pass any Intlayer command and its arguments.
|
|
78
|
-
|
|
79
|
-
> Example: `npx intlayer ci fill --verbose`
|
|
80
|
-
>
|
|
81
|
-
> Example: `npx intlayer ci push`
|
|
82
|
-
>
|
|
83
|
-
> Example: `npx intlayer ci build`
|
|
84
|
-
|
|
85
|
-
## Examples
|
|
86
|
-
|
|
87
|
-
### Run a command in single project mode
|
|
88
|
-
|
|
89
|
-
If you're in a project directory that matches one of the paths in `INTLAYER_PROJECT_CREDENTIALS`:
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
cd packages/app
|
|
93
|
-
npx intlayer ci fill
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
This will run the `fill` command with credentials automatically injected for the `packages/app` project.
|
|
97
|
-
|
|
98
|
-
### Run a command across all projects
|
|
99
|
-
|
|
100
|
-
If you're in a directory that doesn't match any project path, the command will iterate over all configured projects:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
cd /path/to/monorepo
|
|
104
|
-
npx intlayer ci push
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
This will run the `push` command for each project configured in `INTLAYER_PROJECT_CREDENTIALS`.
|
|
108
|
-
|
|
109
|
-
### Pass additional flags
|
|
110
|
-
|
|
111
|
-
You can pass any flags to the underlying Intlayer command:
|
|
112
|
-
|
|
113
|
-
```bash packageManager="npm"
|
|
114
|
-
npx intlayer ci fill --verbose --mode complete
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
```bash packageManager="yarn"
|
|
118
|
-
yarn intlayer ci fill --verbose --mode complete
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
```bash packageManager="pnpm"
|
|
122
|
-
pnpm intlayer ci fill --verbose --mode complete
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
```bash packageManager="bun"
|
|
126
|
-
bun x intlayer ci fill --verbose --mode complete
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Use in CI/CD pipelines
|
|
130
|
-
|
|
131
|
-
Running `intlayer init` scaffolds two ready-to-use GitHub Actions workflows for you (see [Scaffolded GitHub Actions](#scaffolded-github-actions) below). The example here shows the equivalent setup using the `ci` command for a monorepo, where credentials are injected per project from `INTLAYER_PROJECT_CREDENTIALS`.
|
|
132
|
-
|
|
133
|
-
> **AI access**: The `fill` command needs AI access to generate translations. The credentials injected by `ci` from `INTLAYER_PROJECT_CREDENTIALS` (Intlayer CMS access keys) grant AI access through the Intlayer backend, so no separate AI provider key is required. If you prefer to use your own provider key instead, pass `--provider`, `--model`, and `--api-key` to `intlayer ci fill`. The `test` command does not require AI access.
|
|
134
|
-
|
|
135
|
-
```yaml fileName=".github/workflows/intlayer-ci.yml"
|
|
136
|
-
name: Intlayer CI
|
|
137
|
-
|
|
138
|
-
on:
|
|
139
|
-
pull_request:
|
|
140
|
-
branches:
|
|
141
|
-
- main
|
|
142
|
-
|
|
143
|
-
permissions:
|
|
144
|
-
contents: write
|
|
145
|
-
pull-requests: write
|
|
146
|
-
|
|
147
|
-
jobs:
|
|
148
|
-
intlayer:
|
|
149
|
-
runs-on: ubuntu-latest
|
|
150
|
-
env:
|
|
151
|
-
# CMS access keys per project. They also grant AI access for `fill`.
|
|
152
|
-
INTLAYER_PROJECT_CREDENTIALS: ${{ secrets.INTLAYER_PROJECT_CREDENTIALS }}
|
|
153
|
-
steps:
|
|
154
|
-
- name: ⬇️ Checkout repository
|
|
155
|
-
uses: actions/checkout@v4
|
|
156
|
-
with:
|
|
157
|
-
persist-credentials: true
|
|
158
|
-
fetch-depth: 0
|
|
159
|
-
|
|
160
|
-
- name: 🟢 Setup Node.js
|
|
161
|
-
uses: actions/setup-node@v4
|
|
162
|
-
with:
|
|
163
|
-
node-version: 20
|
|
164
|
-
|
|
165
|
-
- name: 📦 Install dependencies
|
|
166
|
-
run: npm ci
|
|
167
|
-
|
|
168
|
-
- name: 🤖 Fill missing translations
|
|
169
|
-
run: npx intlayer ci fill --git-diff --mode complete
|
|
170
|
-
|
|
171
|
-
- name: 🧪 Test for missing translations
|
|
172
|
-
run: npx intlayer ci test
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## Scaffolded GitHub Actions
|
|
176
|
-
|
|
177
|
-
When you run `intlayer init`, Intlayer detects your package manager (npm, yarn, pnpm, or bun) and scaffolds two GitHub Actions workflows under `.github/workflows/`, with commands matching that package manager:
|
|
178
|
-
|
|
179
|
-
- **`intlayer-fill.yml`** — On every pull request, builds the dictionaries and runs `intlayer fill --git-diff --mode complete` to generate missing translations for the changed dictionaries, then commits the result back to the PR branch.
|
|
180
|
-
- **`intlayer-test.yml`** — On every pull request, builds the dictionaries and runs `intlayer test`, failing the check when required locales are missing translations.
|
|
181
|
-
|
|
182
|
-
Existing workflow files are never overwritten. To skip scaffolding entirely, run:
|
|
183
|
-
|
|
184
|
-
```bash
|
|
185
|
-
npx intlayer init --no-github-actions
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### Providing AI access to the fill workflow
|
|
189
|
-
|
|
190
|
-
The scaffolded `intlayer-fill.yml` requires AI access. Two options are available (configured in the workflow's `env` block):
|
|
191
|
-
|
|
192
|
-
1. **Your own AI provider key** — Add an `AI_API_KEY` secret in your repository settings (Settings → Secrets and variables → Actions). The workflow forwards it via `--provider`, `--model`, and `--api-key`.
|
|
193
|
-
2. **Intlayer CMS access keys** — Add `INTLAYER_CLIENT_ID` and `INTLAYER_CLIENT_SECRET` secrets and wire them into your `intlayer.config` `editor` section. CMS access keys grant AI access through the Intlayer backend.
|
|
194
|
-
|
|
195
|
-
The `intlayer-test.yml` workflow does not require any AI access.
|
|
196
|
-
|
|
197
|
-
## Error Handling
|
|
198
|
-
|
|
199
|
-
- If `INTLAYER_PROJECT_CREDENTIALS` is not set, the command will exit with an error.
|
|
200
|
-
- If `INTLAYER_PROJECT_CREDENTIALS` is not valid JSON, the command will exit with an error.
|
|
201
|
-
- If a project path doesn't exist, it will be skipped with a warning.
|
|
202
|
-
- If any project fails, the command will exit with a non-zero status code.
|
|
203
|
-
|
|
204
|
-
## Use Cases
|
|
205
|
-
|
|
206
|
-
- **Monorepo automation**: Run Intlayer commands across multiple projects in a monorepo
|
|
207
|
-
- **CI/CD pipelines**: Automate dictionary management in continuous integration workflows
|
|
208
|
-
- **Bulk operations**: Perform the same operation on multiple Intlayer projects at once
|
|
209
|
-
- **Secret management**: Securely manage credentials for multiple projects using environment variables
|
|
210
|
-
|
|
211
|
-
## Security Best Practices
|
|
212
|
-
|
|
213
|
-
- Store `INTLAYER_PROJECT_CREDENTIALS` as encrypted secrets in your CI/CD platform
|
|
214
|
-
- Never commit credentials to version control
|
|
215
|
-
- Use environment-specific credentials for different deployment environments
|
|
216
|
-
- Rotate credentials regularly
|