@intlayer/docs 6.1.6-canary.0 → 6.1.6
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/en/next-i18next_vs_next-intl_vs_intlayer.md +71 -80
- package/dist/cjs/generated/docs.entry.cjs +16 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +16 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_with_angular.md +2 -2
- package/docs/ar/intlayer_with_astro.md +246 -0
- package/docs/ar/intlayer_with_create_react_app.md +3 -2
- package/docs/ar/intlayer_with_express.md +2 -2
- package/docs/ar/intlayer_with_nestjs.md +2 -2
- package/docs/ar/intlayer_with_nextjs_14.md +2 -2
- package/docs/ar/intlayer_with_nextjs_15.md +2 -2
- package/docs/ar/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/ar/intlayer_with_nuxt.md +2 -2
- package/docs/ar/intlayer_with_react_native+expo.md +11 -20
- package/docs/ar/intlayer_with_react_router_v7.md +195 -241
- package/docs/ar/intlayer_with_tanstack.md +198 -272
- package/docs/ar/intlayer_with_vite+preact.md +9 -9
- package/docs/ar/intlayer_with_vite+react.md +7 -7
- package/docs/ar/intlayer_with_vite+vue.md +9 -9
- package/docs/de/intlayer_with_angular.md +2 -2
- package/docs/de/intlayer_with_astro.md +246 -0
- package/docs/de/intlayer_with_create_react_app.md +2 -2
- package/docs/de/intlayer_with_express.md +2 -2
- package/docs/de/intlayer_with_nestjs.md +2 -2
- package/docs/de/intlayer_with_nextjs_14.md +2 -2
- package/docs/de/intlayer_with_nextjs_15.md +2 -2
- package/docs/de/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/de/intlayer_with_nuxt.md +2 -2
- package/docs/de/intlayer_with_react_native+expo.md +11 -20
- package/docs/de/intlayer_with_react_router_v7.md +193 -242
- package/docs/de/intlayer_with_tanstack.md +194 -266
- package/docs/de/intlayer_with_vite+preact.md +9 -9
- package/docs/de/intlayer_with_vite+react.md +9 -9
- package/docs/de/intlayer_with_vite+vue.md +11 -11
- package/docs/de/packages/vite-intlayer/index.md +3 -3
- package/docs/en/how_works_intlayer.md +1 -1
- package/docs/en/index.md +1 -1
- package/docs/en/intlayer_cli.md +1 -1
- package/docs/en/intlayer_with_angular.md +4 -4
- package/docs/en/intlayer_with_astro.md +246 -0
- package/docs/en/intlayer_with_create_react_app.md +4 -4
- package/docs/en/intlayer_with_express.md +3 -3
- package/docs/en/intlayer_with_lynx+react.md +1 -1
- package/docs/en/intlayer_with_nestjs.md +2 -2
- package/docs/en/intlayer_with_nextjs_14.md +13 -4
- package/docs/en/intlayer_with_nextjs_15.md +13 -4
- package/docs/en/intlayer_with_nextjs_page_router.md +5 -5
- package/docs/en/intlayer_with_nuxt.md +4 -4
- package/docs/en/intlayer_with_react_native+expo.md +46 -24
- package/docs/en/intlayer_with_react_router_v7.md +164 -211
- package/docs/en/intlayer_with_tanstack.md +166 -241
- package/docs/en/intlayer_with_vite+preact.md +12 -12
- package/docs/en/intlayer_with_vite+react.md +12 -12
- package/docs/en/intlayer_with_vite+solid.md +2 -2
- package/docs/en/intlayer_with_vite+svelte.md +2 -2
- package/docs/en/intlayer_with_vite+vue.md +12 -12
- package/docs/en/introduction.md +1 -1
- package/docs/en/packages/next-intlayer/useDictionary.md +1 -1
- package/docs/en/packages/next-intlayer/useIntlayer.md +1 -1
- package/docs/en/packages/react-intlayer/useDictionary.md +1 -1
- package/docs/en/packages/react-intlayer/useI18n.md +1 -1
- package/docs/en/packages/react-intlayer/useIntlayer.md +1 -1
- package/docs/en/releases/v6.md +1 -0
- package/docs/en/roadmap.md +1 -1
- package/docs/en-GB/intlayer_with_angular.md +3 -3
- package/docs/en-GB/intlayer_with_astro.md +246 -0
- package/docs/en-GB/intlayer_with_create_react_app.md +5 -4
- package/docs/en-GB/intlayer_with_express.md +2 -2
- package/docs/en-GB/intlayer_with_nestjs.md +2 -2
- package/docs/en-GB/intlayer_with_nextjs_14.md +4 -4
- package/docs/en-GB/intlayer_with_nextjs_15.md +2 -2
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/en-GB/intlayer_with_nuxt.md +2 -2
- package/docs/en-GB/intlayer_with_react_native+expo.md +11 -20
- package/docs/en-GB/intlayer_with_react_router_v7.md +171 -220
- package/docs/en-GB/intlayer_with_tanstack.md +174 -248
- package/docs/en-GB/intlayer_with_vite+preact.md +9 -9
- package/docs/en-GB/intlayer_with_vite+react.md +9 -9
- package/docs/en-GB/intlayer_with_vite+vue.md +11 -11
- package/docs/en-GB/packages/next-intlayer/useIntlayer.md +1 -1
- package/docs/en-GB/packages/react-intlayer/useIntlayer.md +1 -1
- package/docs/es/intlayer_with_angular.md +2 -2
- package/docs/es/intlayer_with_astro.md +246 -0
- package/docs/es/intlayer_with_create_react_app.md +3 -2
- package/docs/es/intlayer_with_express.md +2 -2
- package/docs/es/intlayer_with_nextjs_14.md +2 -2
- package/docs/es/intlayer_with_nextjs_15.md +2 -2
- package/docs/es/intlayer_with_react_native+expo.md +11 -20
- package/docs/es/intlayer_with_react_router_v7.md +188 -232
- package/docs/es/intlayer_with_tanstack.md +203 -273
- package/docs/es/intlayer_with_vite+preact.md +7 -7
- package/docs/es/intlayer_with_vite+react.md +7 -7
- package/docs/es/intlayer_with_vite+vue.md +9 -9
- package/docs/fr/intlayer_with_angular.md +2 -2
- package/docs/fr/intlayer_with_astro.md +246 -0
- package/docs/fr/intlayer_with_create_react_app.md +3 -2
- package/docs/fr/intlayer_with_express.md +2 -2
- package/docs/fr/intlayer_with_nestjs.md +2 -2
- package/docs/fr/intlayer_with_nextjs_14.md +2 -2
- package/docs/fr/intlayer_with_react_native+expo.md +11 -20
- package/docs/fr/intlayer_with_react_router_v7.md +188 -248
- package/docs/fr/intlayer_with_tanstack.md +192 -265
- package/docs/fr/intlayer_with_vite+preact.md +7 -7
- package/docs/fr/intlayer_with_vite+react.md +7 -7
- package/docs/fr/intlayer_with_vite+vue.md +9 -9
- package/docs/hi/intlayer_cli.md +1 -4
- package/docs/hi/intlayer_with_angular.md +2 -2
- package/docs/hi/intlayer_with_astro.md +246 -0
- package/docs/hi/intlayer_with_create_react_app.md +2 -2
- package/docs/hi/intlayer_with_express.md +2 -2
- package/docs/hi/intlayer_with_nestjs.md +2 -2
- package/docs/hi/intlayer_with_nextjs_14.md +2 -2
- package/docs/hi/intlayer_with_nextjs_15.md +2 -2
- package/docs/hi/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/hi/intlayer_with_nuxt.md +2 -2
- package/docs/hi/intlayer_with_react_native+expo.md +11 -20
- package/docs/hi/intlayer_with_react_router_v7.md +199 -243
- package/docs/hi/intlayer_with_tanstack.md +210 -285
- package/docs/hi/intlayer_with_vite+preact.md +9 -9
- package/docs/hi/intlayer_with_vite+react.md +9 -9
- package/docs/hi/intlayer_with_vite+solid.md +1 -1
- package/docs/hi/intlayer_with_vite+vue.md +11 -11
- package/docs/it/intlayer_with_angular.md +2 -2
- package/docs/it/intlayer_with_astro.md +246 -0
- package/docs/it/intlayer_with_create_react_app.md +3 -2
- package/docs/it/intlayer_with_express.md +2 -2
- package/docs/it/intlayer_with_nestjs.md +2 -2
- package/docs/it/intlayer_with_nextjs_14.md +2 -2
- package/docs/it/intlayer_with_nextjs_15.md +2 -2
- package/docs/it/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/it/intlayer_with_nuxt.md +2 -2
- package/docs/it/intlayer_with_react_native+expo.md +11 -21
- package/docs/it/intlayer_with_react_router_v7.md +195 -242
- package/docs/it/intlayer_with_tanstack.md +203 -267
- package/docs/it/intlayer_with_vite+preact.md +9 -9
- package/docs/it/intlayer_with_vite+react.md +13 -11
- package/docs/it/intlayer_with_vite+vue.md +11 -11
- package/docs/ja/intlayer_with_angular.md +2 -2
- package/docs/ja/intlayer_with_astro.md +246 -0
- package/docs/ja/intlayer_with_create_react_app.md +3 -2
- package/docs/ja/intlayer_with_express.md +2 -2
- package/docs/ja/intlayer_with_nestjs.md +2 -2
- package/docs/ja/intlayer_with_nextjs_14.md +2 -2
- package/docs/ja/intlayer_with_nextjs_15.md +2 -2
- package/docs/ja/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/ja/intlayer_with_nuxt.md +2 -2
- package/docs/ja/intlayer_with_react_native+expo.md +18 -29
- package/docs/ja/intlayer_with_react_router_v7.md +204 -250
- package/docs/ja/intlayer_with_tanstack.md +218 -286
- package/docs/ja/intlayer_with_vite+preact.md +9 -9
- package/docs/ja/intlayer_with_vite+react.md +11 -11
- package/docs/ja/intlayer_with_vite+vue.md +11 -11
- package/docs/ko/intlayer_with_angular.md +2 -2
- package/docs/ko/intlayer_with_astro.md +246 -0
- package/docs/ko/intlayer_with_create_react_app.md +3 -2
- package/docs/ko/intlayer_with_express.md +2 -2
- package/docs/ko/intlayer_with_nestjs.md +2 -2
- package/docs/ko/intlayer_with_nextjs_14.md +2 -2
- package/docs/ko/intlayer_with_nextjs_15.md +2 -2
- package/docs/ko/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/ko/intlayer_with_nuxt.md +2 -2
- package/docs/ko/intlayer_with_react_native+expo.md +19 -28
- package/docs/ko/intlayer_with_react_router_v7.md +190 -244
- package/docs/ko/intlayer_with_tanstack.md +200 -270
- package/docs/ko/intlayer_with_vite+preact.md +9 -9
- package/docs/ko/intlayer_with_vite+react.md +9 -9
- package/docs/ko/intlayer_with_vite+vue.md +11 -11
- package/docs/pt/intlayer_with_angular.md +2 -2
- package/docs/pt/intlayer_with_astro.md +246 -0
- package/docs/pt/intlayer_with_create_react_app.md +3 -2
- package/docs/pt/intlayer_with_express.md +2 -2
- package/docs/pt/intlayer_with_nestjs.md +2 -2
- package/docs/pt/intlayer_with_nextjs_14.md +2 -2
- package/docs/pt/intlayer_with_nextjs_15.md +2 -2
- package/docs/pt/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/pt/intlayer_with_nuxt.md +2 -2
- package/docs/pt/intlayer_with_react_native+expo.md +11 -20
- package/docs/pt/intlayer_with_react_router_v7.md +7 -13
- package/docs/pt/intlayer_with_tanstack.md +183 -258
- package/docs/pt/intlayer_with_vite+preact.md +9 -9
- package/docs/pt/intlayer_with_vite+react.md +9 -9
- package/docs/pt/intlayer_with_vite+vue.md +9 -9
- package/docs/ru/intlayer_with_angular.md +2 -2
- package/docs/ru/intlayer_with_astro.md +246 -0
- package/docs/ru/intlayer_with_create_react_app.md +3 -2
- package/docs/ru/intlayer_with_express.md +2 -2
- package/docs/ru/intlayer_with_nestjs.md +2 -2
- package/docs/ru/intlayer_with_nextjs_14.md +2 -2
- package/docs/ru/intlayer_with_nextjs_15.md +2 -2
- package/docs/ru/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/ru/intlayer_with_nuxt.md +2 -2
- package/docs/ru/intlayer_with_react_native+expo.md +11 -20
- package/docs/ru/intlayer_with_react_router_v7.md +192 -238
- package/docs/ru/intlayer_with_tanstack.md +197 -269
- package/docs/ru/intlayer_with_vite+preact.md +9 -9
- package/docs/ru/intlayer_with_vite+react.md +9 -9
- package/docs/ru/intlayer_with_vite+vue.md +11 -11
- package/docs/tr/how_works_intlayer.md +1 -1
- package/docs/tr/index.md +1 -1
- package/docs/tr/intlayer_cli.md +1 -1
- package/docs/tr/intlayer_with_angular.md +4 -4
- package/docs/tr/intlayer_with_astro.md +246 -0
- package/docs/tr/intlayer_with_create_react_app.md +4 -4
- package/docs/tr/intlayer_with_express.md +3 -3
- package/docs/tr/intlayer_with_lynx+react.md +1 -1
- package/docs/tr/intlayer_with_nestjs.md +2 -2
- package/docs/tr/intlayer_with_nextjs_14.md +2 -2
- package/docs/tr/intlayer_with_nextjs_15.md +4 -4
- package/docs/tr/intlayer_with_nextjs_page_router.md +5 -5
- package/docs/tr/intlayer_with_nuxt.md +4 -4
- package/docs/tr/intlayer_with_react_native+expo.md +12 -21
- package/docs/tr/intlayer_with_react_router_v7.md +222 -267
- package/docs/tr/intlayer_with_tanstack.md +400 -303
- package/docs/tr/intlayer_with_vite+preact.md +12 -12
- package/docs/tr/intlayer_with_vite+react.md +12 -12
- package/docs/tr/intlayer_with_vite+solid.md +2 -2
- package/docs/tr/intlayer_with_vite+svelte.md +2 -2
- package/docs/tr/intlayer_with_vite+vue.md +12 -12
- package/docs/tr/introduction.md +1 -1
- package/docs/tr/packages/react-intlayer/useDictionary.md +1 -1
- package/docs/tr/packages/react-intlayer/useI18n.md +1 -1
- package/docs/tr/roadmap.md +1 -1
- package/docs/zh/intlayer_with_angular.md +2 -2
- package/docs/zh/intlayer_with_astro.md +246 -0
- package/docs/zh/intlayer_with_create_react_app.md +3 -2
- package/docs/zh/intlayer_with_express.md +2 -2
- package/docs/zh/intlayer_with_nestjs.md +2 -2
- package/docs/zh/intlayer_with_nextjs_14.md +2 -2
- package/docs/zh/intlayer_with_nextjs_15.md +2 -2
- package/docs/zh/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/zh/intlayer_with_nuxt.md +2 -2
- package/docs/zh/intlayer_with_react_native+expo.md +19 -28
- package/docs/zh/intlayer_with_react_router_v7.md +200 -248
- package/docs/zh/intlayer_with_tanstack.md +208 -283
- package/docs/zh/intlayer_with_vite+preact.md +9 -9
- package/docs/zh/intlayer_with_vite+react.md +9 -9
- package/docs/zh/intlayer_with_vite+vue.md +9 -9
- package/package.json +11 -11
- package/src/generated/docs.entry.ts +16 -0
|
@@ -59,7 +59,7 @@ yarn add vite-intlayer --save-dev
|
|
|
59
59
|
|
|
60
60
|
- **intlayer**
|
|
61
61
|
|
|
62
|
-
The core package that provides internationalization tools for configuration management, translation, [content declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
62
|
+
The core package that provides internationalization tools for configuration management, translation, [content declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md), transpilation, and [CLI commands](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_cli.md).
|
|
63
63
|
|
|
64
64
|
- **preact-intlayer**
|
|
65
65
|
The package that integrates Intlayer with Preact application. It provides context providers and hooks for Preact internationalization.
|
|
@@ -374,7 +374,7 @@ module.exports = appContent;
|
|
|
374
374
|
|
|
375
375
|
> Your content declarations can be defined anywhere in your application as soon they are included into the `contentDir` directory (by default, `./src`). And match the content declaration file extension (by default, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
376
376
|
|
|
377
|
-
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
377
|
+
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md).
|
|
378
378
|
|
|
379
379
|
> If your content file includes TSX code, you might need to import `import { h } from "preact";` or ensure your JSX pragma is correctly set for Preact.
|
|
380
380
|
|
|
@@ -1036,40 +1036,40 @@ const App = () => (
|
|
|
1036
1036
|
module.exports = App;
|
|
1037
1037
|
```
|
|
1038
1038
|
|
|
1039
|
-
In parallel, you can also use the `
|
|
1039
|
+
In parallel, you can also use the `intlayerMiddleware` to add server-side routing to your application. This plugin will automatically detect the current locale based on the URL and set the appropriate locale cookie. If no locale is specified, the plugin will determine the most appropriate locale based on the user's browser language preferences. If no locale is detected, it will redirect to the default locale.
|
|
1040
1040
|
|
|
1041
|
-
> Note that to use the `
|
|
1041
|
+
> Note that to use the `intlayerMiddleware` in production, you need to switch the `vite-intlayer` package from `devDependencies` to `dependencies`.
|
|
1042
1042
|
|
|
1043
1043
|
```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
|
|
1044
1044
|
import { defineConfig } from "vite";
|
|
1045
1045
|
import preact from "@preact/preset-vite";
|
|
1046
|
-
import { intlayer,
|
|
1046
|
+
import { intlayer, intlayerMiddleware } from "vite-intlayer";
|
|
1047
1047
|
|
|
1048
1048
|
// https://vitejs.dev/config/
|
|
1049
1049
|
export default defineConfig({
|
|
1050
|
-
plugins: [preact(), intlayer(),
|
|
1050
|
+
plugins: [preact(), intlayer(), intlayerMiddleware()],
|
|
1051
1051
|
});
|
|
1052
1052
|
```
|
|
1053
1053
|
|
|
1054
1054
|
```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
|
|
1055
1055
|
import { defineConfig } from "vite";
|
|
1056
1056
|
import preact from "@preact/preset-vite";
|
|
1057
|
-
import { intlayer,
|
|
1057
|
+
import { intlayer, intlayerMiddleware } from "vite-intlayer";
|
|
1058
1058
|
|
|
1059
1059
|
// https://vitejs.dev/config/
|
|
1060
1060
|
export default defineConfig({
|
|
1061
|
-
plugins: [preact(), intlayer(),
|
|
1061
|
+
plugins: [preact(), intlayer(), intlayerMiddleware()],
|
|
1062
1062
|
});
|
|
1063
1063
|
```
|
|
1064
1064
|
|
|
1065
1065
|
```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
|
|
1066
1066
|
const { defineConfig } = require("vite");
|
|
1067
1067
|
const preact = require("@preact/preset-vite");
|
|
1068
|
-
const { intlayer,
|
|
1068
|
+
const { intlayer, intlayerMiddleware } = require("vite-intlayer");
|
|
1069
1069
|
|
|
1070
1070
|
// https://vitejs.dev/config/
|
|
1071
1071
|
module.exports = defineConfig({
|
|
1072
|
-
plugins: [preact(), intlayer(),
|
|
1072
|
+
plugins: [preact(), intlayer(), intlayerMiddleware()],
|
|
1073
1073
|
});
|
|
1074
1074
|
```
|
|
1075
1075
|
|
|
@@ -1604,9 +1604,9 @@ module.exports = { LocalizedLink, checkIsExternalLink };
|
|
|
1604
1604
|
|
|
1605
1605
|
Intlayer use module augmentation to get benefits of TypeScript and make your codebase stronger.
|
|
1606
1606
|
|
|
1607
|
-

|
|
1608
1608
|
|
|
1609
|
-

|
|
1610
1610
|
|
|
1611
1611
|
Ensure your TypeScript configuration includes the autogenerated types.
|
|
1612
1612
|
|
|
@@ -61,7 +61,7 @@ yarn add vite-intlayer --save-dev
|
|
|
61
61
|
|
|
62
62
|
- **intlayer**
|
|
63
63
|
|
|
64
|
-
The core package that provides internationalization tools for configuration management, translation, [content declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
64
|
+
The core package that provides internationalization tools for configuration management, translation, [content declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md), transpilation, and [CLI commands](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_cli.md).
|
|
65
65
|
|
|
66
66
|
- **react-intlayer**
|
|
67
67
|
The package that integrates Intlayer with React application. It provides context providers and hooks for React internationalization.
|
|
@@ -406,7 +406,7 @@ module.exports = appContent;
|
|
|
406
406
|
|
|
407
407
|
> Your content declarations can be defined anywhere in your application as soon they are included into the `contentDir` directory (by default, `./src`). And match the content declaration file extension (by default, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
408
408
|
|
|
409
|
-
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
409
|
+
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md).
|
|
410
410
|
|
|
411
411
|
> If your content file includes TSX code, you should consider importing `import React from "react";` in your content file.
|
|
412
412
|
|
|
@@ -1004,40 +1004,40 @@ const App = () => (
|
|
|
1004
1004
|
);
|
|
1005
1005
|
```
|
|
1006
1006
|
|
|
1007
|
-
In parallel, you can also use the `
|
|
1007
|
+
In parallel, you can also use the `intlayerMiddleware` to add server-side routing to your application. This plugin will automatically detect the current locale based on the URL and set the appropriate locale cookie. If no locale is specified, the plugin will determine the most appropriate locale based on the user's browser language preferences. If no locale is detected, it will redirect to the default locale.
|
|
1008
1008
|
|
|
1009
|
-
> Note that to use the `
|
|
1009
|
+
> Note that to use the `intlayerMiddleware` in production, you need to switch the `vite-intlayer` package from `devDependencies` to `dependencies`.
|
|
1010
1010
|
|
|
1011
1011
|
```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
|
|
1012
1012
|
import { defineConfig } from "vite";
|
|
1013
1013
|
import react from "@vitejs/plugin-react-swc";
|
|
1014
|
-
import { intlayer,
|
|
1014
|
+
import { intlayer, intlayerMiddleware } from "vite-intlayer";
|
|
1015
1015
|
|
|
1016
1016
|
// https://vitejs.dev/config/
|
|
1017
1017
|
export default defineConfig({
|
|
1018
|
-
plugins: [react(), intlayer(),
|
|
1018
|
+
plugins: [react(), intlayer(), intlayerMiddleware()],
|
|
1019
1019
|
});
|
|
1020
1020
|
```
|
|
1021
1021
|
|
|
1022
1022
|
```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
|
|
1023
1023
|
import { defineConfig } from "vite";
|
|
1024
1024
|
import react from "@vitejs/plugin-react-swc";
|
|
1025
|
-
import { intlayer,
|
|
1025
|
+
import { intlayer, intlayerMiddleware } from "vite-intlayer";
|
|
1026
1026
|
|
|
1027
1027
|
// https://vitejs.dev/config/
|
|
1028
1028
|
export default defineConfig({
|
|
1029
|
-
plugins: [react(), intlayer(),
|
|
1029
|
+
plugins: [react(), intlayer(), intlayerMiddleware()],
|
|
1030
1030
|
});
|
|
1031
1031
|
```
|
|
1032
1032
|
|
|
1033
1033
|
```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
|
|
1034
1034
|
const { defineConfig } = require("vite");
|
|
1035
1035
|
const react = require("@vitejs/plugin-react-swc");
|
|
1036
|
-
const { intlayer,
|
|
1036
|
+
const { intlayer, intlayerMiddleware } = require("vite-intlayer");
|
|
1037
1037
|
|
|
1038
1038
|
// https://vitejs.dev/config/
|
|
1039
1039
|
module.exports = defineConfig({
|
|
1040
|
-
plugins: [react(), intlayer(),
|
|
1040
|
+
plugins: [react(), intlayer(), intlayerMiddleware()],
|
|
1041
1041
|
});
|
|
1042
1042
|
```
|
|
1043
1043
|
|
|
@@ -1571,9 +1571,9 @@ By integrating this `Link` component across your application, you maintain a coh
|
|
|
1571
1571
|
|
|
1572
1572
|
Intlayer use module augmentation to get benefits of TypeScript and make your codebase stronger.
|
|
1573
1573
|
|
|
1574
|
-

|
|
1575
1575
|
|
|
1576
|
-

|
|
1577
1577
|
|
|
1578
1578
|
Ensure your TypeScript configuration includes the autogenerated types.
|
|
1579
1579
|
|
|
@@ -59,7 +59,7 @@ yarn add vite-intlayer --save-dev
|
|
|
59
59
|
|
|
60
60
|
- **intlayer**
|
|
61
61
|
|
|
62
|
-
The core package that provides internationalization tools for configuration management, translation, [content declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
62
|
+
The core package that provides internationalization tools for configuration management, translation, [content declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md), transpilation, and [CLI commands](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_cli.md).
|
|
63
63
|
|
|
64
64
|
- **solid-intlayer**
|
|
65
65
|
The package that integrates Intlayer with Solid application. It provides context providers and hooks for Solid internationalization.
|
|
@@ -217,7 +217,7 @@ module.exports = appContent;
|
|
|
217
217
|
|
|
218
218
|
> Your content declarations can be defined anywhere in your application as soon they are included into the `contentDir` directory (by default, `./src`). And match the content declaration file extension (by default, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
219
219
|
|
|
220
|
-
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
220
|
+
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md).
|
|
221
221
|
|
|
222
222
|
### Step 5: Utilize Intlayer in Your Code
|
|
223
223
|
|
|
@@ -59,7 +59,7 @@ yarn add vite-intlayer --save-dev
|
|
|
59
59
|
|
|
60
60
|
- **intlayer**
|
|
61
61
|
|
|
62
|
-
The core package that provides internationalization tools for configuration management, translation, [content declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
62
|
+
The core package that provides internationalization tools for configuration management, translation, [content declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md), transpilation, and [CLI commands](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_cli.md).
|
|
63
63
|
|
|
64
64
|
- **svelte-intlayer**
|
|
65
65
|
The package that integrates Intlayer with Svelte application. It provides context providers and hooks for Svelte internationalization.
|
|
@@ -217,7 +217,7 @@ module.exports = appContent;
|
|
|
217
217
|
|
|
218
218
|
> Your content declarations can be defined anywhere in your application as soon they are included into the `contentDir` directory (by default, `./src`). And match the content declaration file extension (by default, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
219
219
|
|
|
220
|
-
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
220
|
+
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md).
|
|
221
221
|
|
|
222
222
|
### Step 5: Utilize Intlayer in Your Code
|
|
223
223
|
|
|
@@ -57,7 +57,7 @@ yarn add vite-intlayer --save-dev
|
|
|
57
57
|
|
|
58
58
|
- **intlayer**
|
|
59
59
|
|
|
60
|
-
The core package that provides internationalization tools for configuration management, translation, [content declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
60
|
+
The core package that provides internationalization tools for configuration management, translation, [content declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md), transpilation, and [CLI commands](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_cli.md).
|
|
61
61
|
|
|
62
62
|
- **vue-intlayer**
|
|
63
63
|
The package that integrates Intlayer with Vue application. It provides context providers and composables for Vue internationalization.
|
|
@@ -356,7 +356,7 @@ module.exports = appContent;
|
|
|
356
356
|
|
|
357
357
|
> Your content declarations can be defined anywhere in your application as soon they are included into the `contentDir` directory (by default, `./src`). And match the content declaration file extension (by default, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
358
358
|
|
|
359
|
-
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
359
|
+
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md).
|
|
360
360
|
|
|
361
361
|
### Step 5: Utilize Intlayer in Your Code
|
|
362
362
|
|
|
@@ -645,40 +645,40 @@ import LocaleSwitcher from "@components/LocaleSwitcher.vue";
|
|
|
645
645
|
</template>
|
|
646
646
|
```
|
|
647
647
|
|
|
648
|
-
In parallel, you can also use the `
|
|
648
|
+
In parallel, you can also use the `intlayerMiddleware` to add server-side routing to your application. This plugin will automatically detect the current locale based on the URL and set the appropriate locale cookie. If no locale is specified, the plugin will determine the most appropriate locale based on the user's browser language preferences. If no locale is detected, it will redirect to the default locale.
|
|
649
649
|
|
|
650
|
-
> Note that to use the `
|
|
650
|
+
> Note that to use the `intlayerMiddleware` in production, you need to switch the `vite-intlayer` package from `devDependencies` to `dependencies`.
|
|
651
651
|
|
|
652
652
|
```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
|
|
653
653
|
import { defineConfig } from "vite";
|
|
654
654
|
import vue from "@vitejs/plugin-vue";
|
|
655
|
-
import { intlayer,
|
|
655
|
+
import { intlayer, intlayerMiddleware } from "vite-intlayer";
|
|
656
656
|
|
|
657
657
|
// https://vitejs.dev/config/
|
|
658
658
|
export default defineConfig({
|
|
659
|
-
plugins: [vue(), intlayer(),
|
|
659
|
+
plugins: [vue(), intlayer(), intlayerMiddleware()],
|
|
660
660
|
});
|
|
661
661
|
```
|
|
662
662
|
|
|
663
663
|
```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
|
|
664
664
|
import { defineConfig } from "vite";
|
|
665
665
|
import vue from "@vitejs/plugin-vue";
|
|
666
|
-
import { intlayer,
|
|
666
|
+
import { intlayer, intlayerMiddleware } from "vite-intlayer";
|
|
667
667
|
|
|
668
668
|
// https://vitejs.dev/config/
|
|
669
669
|
export default defineConfig({
|
|
670
|
-
plugins: [vue(), intlayer(),
|
|
670
|
+
plugins: [vue(), intlayer(), intlayerMiddleware()],
|
|
671
671
|
});
|
|
672
672
|
```
|
|
673
673
|
|
|
674
674
|
```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
|
|
675
675
|
const { defineConfig } = require("vite");
|
|
676
676
|
const vue = require("@vitejs/plugin-vue");
|
|
677
|
-
const { intlayer,
|
|
677
|
+
const { intlayer, intlayerMiddleware } = require("vite-intlayer");
|
|
678
678
|
|
|
679
679
|
// https://vitejs.dev/config/
|
|
680
680
|
module.exports = defineConfig({
|
|
681
|
-
plugins: [vue(), intlayer(),
|
|
681
|
+
plugins: [vue(), intlayer(), intlayerMiddleware()],
|
|
682
682
|
});
|
|
683
683
|
```
|
|
684
684
|
|
|
@@ -983,9 +983,9 @@ const { myMarkdownContent } = useIntlayer("my-component");
|
|
|
983
983
|
|
|
984
984
|
Intlayer uses module augmentation to get benefits of TypeScript and make your codebase stronger.
|
|
985
985
|
|
|
986
|
-

|
|
987
987
|
|
|
988
|
-

|
|
989
989
|
|
|
990
990
|
Ensure your TypeScript configuration includes the autogenerated types.
|
|
991
991
|
|
package/docs/en/introduction.md
CHANGED
|
@@ -152,7 +152,7 @@ Intlayer offers a variety of features tailored to meet the needs of modern web d
|
|
|
152
152
|
|
|
153
153
|
Organize your multilingual content close to your code to keep everything consistent and maintainable.
|
|
154
154
|
|
|
155
|
-
- **[Get Started](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
155
|
+
- **[Get Started](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md)**
|
|
156
156
|
Learn the basics of declaring your content in Intlayer.
|
|
157
157
|
|
|
158
158
|
- **[Translation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/translation.md)**
|
|
@@ -65,7 +65,7 @@ The hook accepts two parameters:
|
|
|
65
65
|
|
|
66
66
|
## Dictionary
|
|
67
67
|
|
|
68
|
-
All dictionary objects should be declared in structured content files to ensure type safety and prevent runtime errors. You can find the [setup instructions here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
68
|
+
All dictionary objects should be declared in structured content files to ensure type safety and prevent runtime errors. You can find the [setup instructions here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md). Here's an example of content declaration:
|
|
69
69
|
|
|
70
70
|
```typescript fileName="component.content.ts" codeFormat="typescript"
|
|
71
71
|
import { t, type Dictionary } from "intlayer";
|
|
@@ -65,7 +65,7 @@ Depending on whether you're working on client-side or server-side components in
|
|
|
65
65
|
|
|
66
66
|
It's crucial that all content keys are defined within content declaration files to prevent runtime errors and ensure type safety. This approach also facilitates TypeScript integration for compile-time validation.
|
|
67
67
|
|
|
68
|
-
Instructions for setting up content declaration files are available [here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
68
|
+
Instructions for setting up content declaration files are available [here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md).
|
|
69
69
|
|
|
70
70
|
## Example Usage in Next.js
|
|
71
71
|
|
|
@@ -64,7 +64,7 @@ The hook accepts two parameters:
|
|
|
64
64
|
|
|
65
65
|
## Dictionary
|
|
66
66
|
|
|
67
|
-
All dictionary objects should be declared in structured content files to ensure type safety and prevent runtime errors. You can find the [setup instructions here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
67
|
+
All dictionary objects should be declared in structured content files to ensure type safety and prevent runtime errors. You can find the [setup instructions here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md). Here's an example of content declaration:
|
|
68
68
|
|
|
69
69
|
```typescript fileName="./component.content.ts" contentDeclarationFormat="typescript"
|
|
70
70
|
import { t, type Dictionary } from "intlayer";
|
|
@@ -66,7 +66,7 @@ This hook accepts two parameters:
|
|
|
66
66
|
|
|
67
67
|
## Dictionary
|
|
68
68
|
|
|
69
|
-
All dictionary keys must be declared within content declaration files to enhance type safety and prevent errors. [Configuration instructions can be found here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
69
|
+
All dictionary keys must be declared within content declaration files to enhance type safety and prevent errors. [Configuration instructions can be found here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md).
|
|
70
70
|
|
|
71
71
|
## Usage Examples in React
|
|
72
72
|
|
|
@@ -65,7 +65,7 @@ The hook accepts two parameters:
|
|
|
65
65
|
|
|
66
66
|
## Dictionary
|
|
67
67
|
|
|
68
|
-
All dictionary keys must be declared within content declaration files to enhance type safety and avoid errors. You can find the [setup instructions here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
68
|
+
All dictionary keys must be declared within content declaration files to enhance type safety and avoid errors. You can find the [setup instructions here](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md).
|
|
69
69
|
|
|
70
70
|
## Example Usage in React
|
|
71
71
|
|
package/docs/en/releases/v6.md
CHANGED
|
@@ -277,6 +277,7 @@ To work around this, we dropped the `intlayer watch` command, using the `--with`
|
|
|
277
277
|
- Prefer the new global `content.autoFill` option to generate missing translations at scale.
|
|
278
278
|
- Use `npx intlayer content test` to gate PRs on missing translations.
|
|
279
279
|
- For verbose diagnostics, set `log.mode = 'verbose'`.
|
|
280
|
+
- Use `intlayer` instead of `intlayerPlugin` and `intlayerMiddleware` instead of `intlayerMiddlewarePlugin` in your Vite configuration.
|
|
280
281
|
|
|
281
282
|
---
|
|
282
283
|
|
package/docs/en/roadmap.md
CHANGED
|
@@ -32,7 +32,7 @@ Intlayer is a content management and internationalization solution designed to s
|
|
|
32
32
|
|
|
33
33
|
> Resources:
|
|
34
34
|
>
|
|
35
|
-
> - [Content Declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
35
|
+
> - [Content Declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md)
|
|
36
36
|
|
|
37
37
|
### 2. Internationalization
|
|
38
38
|
|
|
@@ -310,7 +310,7 @@ export default appContent;
|
|
|
310
310
|
|
|
311
311
|
> Your content declarations can be defined anywhere in your application as soon they are included into the `contentDir` directory (by default, `./src`). And match the content declaration file extension (by default, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
312
312
|
|
|
313
|
-
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/
|
|
313
|
+
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md).
|
|
314
314
|
|
|
315
315
|
### Step 5: Utilize Intlayer in Your Code
|
|
316
316
|
|
|
@@ -663,9 +663,9 @@ For more complex scenarios, you can create a pipe to safely render the HTML.
|
|
|
663
663
|
|
|
664
664
|
Intlayer uses module augmentation to get benefits of TypeScript and make your codebase stronger.
|
|
665
665
|
|
|
666
|
-

|
|
667
667
|
|
|
668
|
-

|
|
669
669
|
|
|
670
670
|
Ensure your TypeScript configuration includes the autogenerated types.
|
|
671
671
|
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-03-07
|
|
3
|
+
updatedAt: 2025-10-03
|
|
4
|
+
title: Getting Started with Intlayer in Astro
|
|
5
|
+
description: Learn how to add internationalisation (i18n) to your Vite and React application using Intlayer. Follow this guide to make your app multilingual.
|
|
6
|
+
keywords:
|
|
7
|
+
- Internationalisation
|
|
8
|
+
- Documentation
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Vite
|
|
11
|
+
- React
|
|
12
|
+
- i18n
|
|
13
|
+
- JavaScript
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- environment
|
|
17
|
+
- astro
|
|
18
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-astro-template
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Getting Started Internationalising (i18n) with Intlayer and Astro
|
|
22
|
+
|
|
23
|
+
See [Application Template](https://github.com/aymericzip/intlayer-astro-template) on GitHub.
|
|
24
|
+
|
|
25
|
+
## What is Intlayer?
|
|
26
|
+
|
|
27
|
+
**Intlayer** is an innovative, open-source internationalisation (i18n) library designed to simplify multilingual support in modern web applications.
|
|
28
|
+
|
|
29
|
+
With Intlayer, you can:
|
|
30
|
+
|
|
31
|
+
- **Easily manage translations** using declarative dictionaries at the component level.
|
|
32
|
+
- **Dynamically localise metadata**, routes, and content.
|
|
33
|
+
- **Ensure TypeScript support** with autogenerated types, improving autocompletion and error detection.
|
|
34
|
+
- **Benefit from advanced features**, like dynamic locale detection and switching.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Step-by-Step Guide to Set Up Intlayer in Astro
|
|
39
|
+
|
|
40
|
+
### Step 1: Install Dependencies
|
|
41
|
+
|
|
42
|
+
Install the necessary packages using your package manager:
|
|
43
|
+
|
|
44
|
+
```bash packageManager="npm"
|
|
45
|
+
npm install intlayer astro-intlayer
|
|
46
|
+
# Optional: add React island support
|
|
47
|
+
npm install react react-dom react-intlayer @astrojs/react
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```bash packageManager="pnpm"
|
|
51
|
+
pnpm add intlayer astro-intlayer
|
|
52
|
+
# Optional: add React island support
|
|
53
|
+
pnpm add react react-dom react-intlayer @astrojs/react
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```bash packageManager="yarn"
|
|
57
|
+
yarn add intlayer astro-intlayer
|
|
58
|
+
# Optional: add React island support
|
|
59
|
+
yarn add react react-dom react-intlayer @astrojs/react
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
- **intlayer**
|
|
63
|
+
The core package that provides internationalisation tools for configuration management, translation, [content declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/get_started.md), transpilation, and [CLI commands](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_cli.md).
|
|
64
|
+
|
|
65
|
+
- **astro-intlayer**
|
|
66
|
+
Includes the Astro integration plugin for integrating Intlayer with the [Vite bundler](https://vite.dev/guide/why.html#why-bundle-for-production), as well as middleware for detecting the user's preferred locale, managing cookies, and handling URL redirection.
|
|
67
|
+
|
|
68
|
+
### Step 2: Configuration of your project
|
|
69
|
+
|
|
70
|
+
Create a config file to configure the languages of your application:
|
|
71
|
+
|
|
72
|
+
```typescript fileName="intlayer.config.ts"
|
|
73
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
74
|
+
|
|
75
|
+
const config: IntlayerConfig = {
|
|
76
|
+
internationalization: {
|
|
77
|
+
locales: [
|
|
78
|
+
Locales.ENGLISH,
|
|
79
|
+
Locales.FRENCH,
|
|
80
|
+
Locales.SPANISH,
|
|
81
|
+
// Your other locales
|
|
82
|
+
],
|
|
83
|
+
defaultLocale: Locales.ENGLISH,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export default config;
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
> Through this configuration file, you can set up localised URLs, middleware redirection, cookie names, the location and extension of your content declarations, disable Intlayer logs in the console, and more. For a complete list of available parameters, refer to the [configuration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/configuration.md).
|
|
91
|
+
|
|
92
|
+
### Step 3: Integrate Intlayer in Your Astro Configuration
|
|
93
|
+
|
|
94
|
+
Add the intlayer plugin into your configuration.
|
|
95
|
+
|
|
96
|
+
```typescript fileName="astro.config.ts"
|
|
97
|
+
// @ts-check
|
|
98
|
+
|
|
99
|
+
import { intlayer } from "astro-intlayer";
|
|
100
|
+
import { defineConfig } from "astro/config";
|
|
101
|
+
|
|
102
|
+
// https://astro.build/config
|
|
103
|
+
export default defineConfig({
|
|
104
|
+
integrations: [intlayer()],
|
|
105
|
+
});
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
> The `intlayer()` Astro integration plugin is used to integrate Intlayer with Astro. It ensures the building of content declaration files and monitors them in development mode. It defines Intlayer environment variables within the Astro application. Additionally, it provides aliases to optimise performance.
|
|
109
|
+
|
|
110
|
+
### Step 4: Declare Your Content
|
|
111
|
+
|
|
112
|
+
Create and manage your content declarations to store translations:
|
|
113
|
+
|
|
114
|
+
```tsx fileName="src/app.content.tsx"
|
|
115
|
+
import { t, type Dictionary } from "intlayer";
|
|
116
|
+
import type { ReactNode } from "react";
|
|
117
|
+
|
|
118
|
+
const appContent = {
|
|
119
|
+
key: "app",
|
|
120
|
+
content: {
|
|
121
|
+
title: t({
|
|
122
|
+
en: "Hello World",
|
|
123
|
+
fr: "Bonjour le monde",
|
|
124
|
+
es: "Hola mundo",
|
|
125
|
+
}),
|
|
126
|
+
},
|
|
127
|
+
} satisfies Dictionary;
|
|
128
|
+
|
|
129
|
+
export default appContent;
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
> Your content declarations can be defined anywhere in your application as soon as they are included in the `contentDir` directory (by default, `./src`). And match the content declaration file extension (by default, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
133
|
+
|
|
134
|
+
> For more details, refer to the [content declaration documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/get_started.md).
|
|
135
|
+
|
|
136
|
+
### Step 5: Use your content in Astro
|
|
137
|
+
|
|
138
|
+
You can consume dictionaries directly in `.astro` files using the core helpers exported by `intlayer`.
|
|
139
|
+
|
|
140
|
+
```astro fileName="src/pages/index.astro"
|
|
141
|
+
<!-- astro -->
|
|
142
|
+
---
|
|
143
|
+
import { getIntlayer } from "intlayer";
|
|
144
|
+
import appContent from "../app.content";
|
|
145
|
+
|
|
146
|
+
const { title } = getIntlayer('app');
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
<html lang="en">
|
|
150
|
+
<head>
|
|
151
|
+
<meta charset="utf-8" />
|
|
152
|
+
<meta name="viewport" content="width=device-width" />
|
|
153
|
+
<title>{title}</title>
|
|
154
|
+
</head>
|
|
155
|
+
<body>
|
|
156
|
+
<h1>{title}</h1>
|
|
157
|
+
</body>
|
|
158
|
+
</html>
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Step 6: Localised routing
|
|
162
|
+
|
|
163
|
+
Create a dynamic route segment to serve localised pages, for example `src/pages/[locale]/index.astro`:
|
|
164
|
+
|
|
165
|
+
```astro fileName="src/pages/[locale]/index.astro"
|
|
166
|
+
<!-- astro -->
|
|
167
|
+
---
|
|
168
|
+
import { getIntlayer } from "intlayer";
|
|
169
|
+
|
|
170
|
+
const { title } = getIntlayer('app');
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
<h1>{title}</h1>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
The Astro integration adds a Vite middleware during development that helps with locale-aware routing and environment definitions. You can still link between locales using your own logic, or utility functions like `getLocalizedUrl` from `intlayer`.
|
|
177
|
+
|
|
178
|
+
### Step 7: Continue using your favourite framework
|
|
179
|
+
|
|
180
|
+
Continue using your favourite framework to build your application.
|
|
181
|
+
|
|
182
|
+
- Intlayer + React: [Intlayer with React](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_with_vite+react.md)
|
|
183
|
+
- Intlayer + Vue: [Intlayer with Vue](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_with_vite+vue.md)
|
|
184
|
+
- Intlayer + Svelte: [Intlayer with Svelte](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_with_vite+svelte.md)
|
|
185
|
+
- Intlayer + Solid: [Intlayer with Solid](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_with_vite+solid.md)
|
|
186
|
+
- Intlayer + Preact: [Intlayer with Preact](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_with_vite+preact.md)
|
|
187
|
+
|
|
188
|
+
### Configure TypeScript
|
|
189
|
+
|
|
190
|
+
Intlayer uses module augmentation to benefit from TypeScript and strengthen your codebase.
|
|
191
|
+
|
|
192
|
+

|
|
193
|
+
|
|
194
|
+

|
|
195
|
+
|
|
196
|
+
Ensure your TypeScript configuration includes the autogenerated types.
|
|
197
|
+
|
|
198
|
+
```json5 fileName="tsconfig.json"
|
|
199
|
+
{
|
|
200
|
+
// ... Your existing TypeScript configurations
|
|
201
|
+
"include": [
|
|
202
|
+
// ... Your existing TypeScript configurations
|
|
203
|
+
".intlayer/**/*.ts", // Include the auto-generated types
|
|
204
|
+
],
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Git Configuration
|
|
209
|
+
|
|
210
|
+
It is recommended to ignore the files generated by Intlayer. This allows you to avoid committing them to your Git repository.
|
|
211
|
+
|
|
212
|
+
To do this, you can add the following instructions to your `.gitignore` file:
|
|
213
|
+
|
|
214
|
+
```plaintext
|
|
215
|
+
# Ignore the files generated by Intlayer
|
|
216
|
+
.intlayer
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### VS Code Extension
|
|
220
|
+
|
|
221
|
+
To enhance your development experience with Intlayer, you can install the official **Intlayer VS Code Extension**.
|
|
222
|
+
|
|
223
|
+
[Install from the VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
224
|
+
|
|
225
|
+
This extension provides:
|
|
226
|
+
|
|
227
|
+
- **Autocompletion** for translation keys.
|
|
228
|
+
- **Real-time error detection** for missing translations.
|
|
229
|
+
- **Inline previews** of translated content.
|
|
230
|
+
- **Quick actions** to easily create and update translations.
|
|
231
|
+
|
|
232
|
+
For more details on how to use the extension, refer to the [Intlayer VS Code Extension documentation](https://intlayer.org/doc/vs-code-extension).
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
### Go Further
|
|
237
|
+
|
|
238
|
+
To go further, you can implement the [visual editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_visual_editor.md) or externalise your content using the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md).
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Doc History
|
|
243
|
+
|
|
244
|
+
| Version | Date | Changes |
|
|
245
|
+
| ------- | ---------- | -------------------------------------------- |
|
|
246
|
+
| 6.2.0 | 2025-10-03 | Refresh for Astro integration, config, usage |
|