@intlayer/docs 9.5.7 → 9.5.8

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.
Files changed (162) hide show
  1. package/blog/ar/is_intlayer_lighter_than_paraglide.md +284 -0
  2. package/blog/de/is_intlayer_lighter_than_paraglide.md +284 -0
  3. package/blog/en/is_intlayer_lighter_than_paraglide.md +288 -0
  4. package/blog/en-GB/is_intlayer_lighter_than_paraglide.md +285 -0
  5. package/blog/es/is_intlayer_lighter_than_paraglide.md +284 -0
  6. package/blog/fr/is_intlayer_lighter_than_paraglide.md +284 -0
  7. package/blog/hi/is_intlayer_lighter_than_paraglide.md +284 -0
  8. package/blog/id/is_intlayer_lighter_than_paraglide.md +284 -0
  9. package/blog/it/is_intlayer_lighter_than_paraglide.md +284 -0
  10. package/blog/ja/is_intlayer_lighter_than_paraglide.md +284 -0
  11. package/blog/ko/is_intlayer_lighter_than_paraglide.md +284 -0
  12. package/blog/pl/is_intlayer_lighter_than_paraglide.md +284 -0
  13. package/blog/pt/is_intlayer_lighter_than_paraglide.md +284 -0
  14. package/blog/ru/is_intlayer_lighter_than_paraglide.md +284 -0
  15. package/blog/tr/is_intlayer_lighter_than_paraglide.md +284 -0
  16. package/blog/uk/is_intlayer_lighter_than_paraglide.md +284 -0
  17. package/blog/vi/is_intlayer_lighter_than_paraglide.md +284 -0
  18. package/blog/zh/is_intlayer_lighter_than_paraglide.md +284 -0
  19. package/dist/cjs/generated/blog.entry.cjs +20 -0
  20. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  21. package/dist/cjs/generated/docs.entry.cjs +20 -0
  22. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  23. package/dist/cjs/index.cjs +2 -2
  24. package/dist/esm/generated/blog.entry.mjs +20 -0
  25. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  26. package/dist/esm/generated/docs.entry.mjs +20 -0
  27. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  28. package/dist/esm/index.mjs +2 -2
  29. package/dist/types/generated/blog.entry.d.ts +1 -0
  30. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  31. package/dist/types/generated/docs.entry.d.ts +1 -0
  32. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  33. package/docs/ar/benchmark/nextjs.md +6 -3
  34. package/docs/ar/benchmark/solid.md +21 -4
  35. package/docs/ar/benchmark/svelte.md +18 -3
  36. package/docs/ar/benchmark/tanstack.md +6 -3
  37. package/docs/ar/benchmark/vue.md +14 -5
  38. package/docs/ar/cli/index.md +6 -1
  39. package/docs/ar/cli/upgrade.md +125 -0
  40. package/docs/de/benchmark/nextjs.md +6 -3
  41. package/docs/de/benchmark/solid.md +21 -4
  42. package/docs/de/benchmark/svelte.md +18 -3
  43. package/docs/de/benchmark/tanstack.md +6 -3
  44. package/docs/de/benchmark/vue.md +14 -5
  45. package/docs/de/cli/index.md +6 -1
  46. package/docs/de/cli/upgrade.md +125 -0
  47. package/docs/en/agent_skills.md +29 -1
  48. package/docs/en/benchmark/nextjs.md +6 -3
  49. package/docs/en/benchmark/solid.md +21 -4
  50. package/docs/en/benchmark/svelte.md +18 -3
  51. package/docs/en/benchmark/tanstack.md +7 -4
  52. package/docs/en/benchmark/vue.md +15 -6
  53. package/docs/en/cli/index.md +6 -1
  54. package/docs/en/cli/upgrade.md +125 -0
  55. package/docs/en-GB/benchmark/nextjs.md +6 -3
  56. package/docs/en-GB/benchmark/solid.md +21 -4
  57. package/docs/en-GB/benchmark/svelte.md +18 -3
  58. package/docs/en-GB/benchmark/tanstack.md +6 -3
  59. package/docs/en-GB/benchmark/vue.md +15 -6
  60. package/docs/en-GB/cli/index.md +6 -1
  61. package/docs/en-GB/cli/upgrade.md +125 -0
  62. package/docs/es/benchmark/nextjs.md +6 -3
  63. package/docs/es/benchmark/solid.md +21 -4
  64. package/docs/es/benchmark/svelte.md +18 -3
  65. package/docs/es/benchmark/tanstack.md +6 -3
  66. package/docs/es/benchmark/vue.md +14 -5
  67. package/docs/es/cli/index.md +6 -1
  68. package/docs/es/cli/upgrade.md +125 -0
  69. package/docs/fr/benchmark/nextjs.md +6 -3
  70. package/docs/fr/benchmark/solid.md +21 -4
  71. package/docs/fr/benchmark/svelte.md +18 -3
  72. package/docs/fr/benchmark/tanstack.md +6 -3
  73. package/docs/fr/benchmark/vue.md +15 -6
  74. package/docs/fr/cli/index.md +6 -1
  75. package/docs/fr/cli/upgrade.md +125 -0
  76. package/docs/hi/benchmark/nextjs.md +6 -3
  77. package/docs/hi/benchmark/solid.md +21 -4
  78. package/docs/hi/benchmark/svelte.md +18 -3
  79. package/docs/hi/benchmark/tanstack.md +6 -3
  80. package/docs/hi/benchmark/vue.md +15 -6
  81. package/docs/hi/cli/index.md +6 -1
  82. package/docs/hi/cli/upgrade.md +125 -0
  83. package/docs/id/benchmark/nextjs.md +6 -3
  84. package/docs/id/benchmark/solid.md +21 -4
  85. package/docs/id/benchmark/svelte.md +18 -3
  86. package/docs/id/benchmark/tanstack.md +6 -3
  87. package/docs/id/benchmark/vue.md +15 -6
  88. package/docs/id/cli/index.md +6 -1
  89. package/docs/id/cli/upgrade.md +125 -0
  90. package/docs/it/benchmark/nextjs.md +6 -3
  91. package/docs/it/benchmark/solid.md +21 -4
  92. package/docs/it/benchmark/svelte.md +18 -3
  93. package/docs/it/benchmark/tanstack.md +6 -3
  94. package/docs/it/benchmark/vue.md +14 -5
  95. package/docs/it/cli/index.md +6 -1
  96. package/docs/it/cli/upgrade.md +125 -0
  97. package/docs/ja/benchmark/nextjs.md +6 -3
  98. package/docs/ja/benchmark/solid.md +21 -4
  99. package/docs/ja/benchmark/svelte.md +18 -3
  100. package/docs/ja/benchmark/tanstack.md +5 -2
  101. package/docs/ja/benchmark/vue.md +14 -5
  102. package/docs/ja/cli/index.md +6 -1
  103. package/docs/ja/cli/upgrade.md +125 -0
  104. package/docs/ko/benchmark/nextjs.md +6 -3
  105. package/docs/ko/benchmark/solid.md +21 -4
  106. package/docs/ko/benchmark/svelte.md +18 -3
  107. package/docs/ko/benchmark/tanstack.md +6 -3
  108. package/docs/ko/benchmark/vue.md +15 -6
  109. package/docs/ko/cli/index.md +6 -1
  110. package/docs/ko/cli/upgrade.md +126 -0
  111. package/docs/pl/benchmark/nextjs.md +6 -3
  112. package/docs/pl/benchmark/solid.md +21 -4
  113. package/docs/pl/benchmark/svelte.md +18 -3
  114. package/docs/pl/benchmark/tanstack.md +6 -3
  115. package/docs/pl/benchmark/vue.md +15 -6
  116. package/docs/pl/cli/index.md +6 -1
  117. package/docs/pl/cli/upgrade.md +125 -0
  118. package/docs/pt/benchmark/nextjs.md +6 -3
  119. package/docs/pt/benchmark/solid.md +21 -4
  120. package/docs/pt/benchmark/svelte.md +18 -3
  121. package/docs/pt/benchmark/tanstack.md +6 -3
  122. package/docs/pt/benchmark/vue.md +14 -5
  123. package/docs/pt/cli/index.md +6 -1
  124. package/docs/pt/cli/upgrade.md +125 -0
  125. package/docs/ru/benchmark/nextjs.md +6 -3
  126. package/docs/ru/benchmark/solid.md +21 -4
  127. package/docs/ru/benchmark/svelte.md +18 -3
  128. package/docs/ru/benchmark/tanstack.md +6 -3
  129. package/docs/ru/benchmark/vue.md +15 -6
  130. package/docs/ru/cli/index.md +6 -1
  131. package/docs/ru/cli/upgrade.md +125 -0
  132. package/docs/tr/benchmark/nextjs.md +6 -3
  133. package/docs/tr/benchmark/solid.md +21 -4
  134. package/docs/tr/benchmark/svelte.md +18 -3
  135. package/docs/tr/benchmark/tanstack.md +6 -3
  136. package/docs/tr/benchmark/vue.md +15 -6
  137. package/docs/tr/cli/index.md +6 -1
  138. package/docs/tr/cli/upgrade.md +125 -0
  139. package/docs/uk/benchmark/nextjs.md +6 -3
  140. package/docs/uk/benchmark/solid.md +21 -4
  141. package/docs/uk/benchmark/svelte.md +18 -3
  142. package/docs/uk/benchmark/tanstack.md +6 -3
  143. package/docs/uk/benchmark/vue.md +15 -6
  144. package/docs/uk/cli/index.md +6 -1
  145. package/docs/uk/cli/upgrade.md +125 -0
  146. package/docs/vi/benchmark/nextjs.md +6 -3
  147. package/docs/vi/benchmark/solid.md +21 -4
  148. package/docs/vi/benchmark/svelte.md +18 -3
  149. package/docs/vi/benchmark/tanstack.md +6 -3
  150. package/docs/vi/benchmark/vue.md +15 -6
  151. package/docs/vi/cli/index.md +6 -1
  152. package/docs/vi/cli/upgrade.md +125 -0
  153. package/docs/zh/benchmark/nextjs.md +6 -3
  154. package/docs/zh/benchmark/solid.md +21 -4
  155. package/docs/zh/benchmark/svelte.md +18 -3
  156. package/docs/zh/benchmark/tanstack.md +5 -2
  157. package/docs/zh/benchmark/vue.md +15 -6
  158. package/docs/zh/cli/index.md +6 -1
  159. package/docs/zh/cli/upgrade.md +125 -0
  160. package/package.json +6 -6
  161. package/src/generated/blog.entry.ts +20 -0
  162. package/src/generated/docs.entry.ts +20 -0
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-23
4
4
  title: Best i18n solution for Vue in 2026 - Benchmark Report
5
- description: Compare Vue internationalization libraries like vue-i18n, fluent-vue, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
5
+ description: Compare Vue internationalization libraries like vue-i18n, fluent-vue, Tolgee, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
6
6
  keywords:
7
7
  - benchmark
8
8
  - i18n
@@ -17,6 +17,9 @@ slugs:
17
17
  author: aymericzip
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-vue-template
19
19
  history:
20
+ - version: 9.5.7
21
+ date: 2026-09-23
22
+ changes: "Update benchmark results and add Tolgee"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Update benchmark results"
@@ -66,6 +69,7 @@ The other impact is on developer experience: how you declare content, types, nam
66
69
  ## TL;DR
67
70
 
68
71
  - **Intlayer**: The most lightweight solution (v9.5.6) with built-in scoping and dynamic loading.
72
+ - **Tolgee**: Effective dynamic loading with zero leakage in dynamic mode, but heavier (~3.7× Intlayer) and lacks built-in compile-time type safety.
69
73
  - **vue-i18n**: The industry standard with a rich ecosystem but can be significantly heavier and harder to optimize for code-splitting in large applications.
70
74
  - **fluent-vue**: Innovative message organization but lacks type safety and is extremely heavy.
71
75
 
@@ -103,6 +107,7 @@ For this benchmark, we compared the following libraries:
103
107
  - [`@intlayer/vue-i18n`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/vue-i18n.md) (v9.5.6)
104
108
  - [`vue-i18n`](https://github.com/intlify/vue-i18n) (v11.4.0)
105
109
  - [`fluent-vue`](https://github.com/fluent-vue/fluent-vue) (v3.8.2)
110
+ - [`@tolgee/vue`](https://github.com/tolgee/tolgee-js) (v7.2.0)
106
111
 
107
112
  The framework is `Vue` with a multilingual app of **10 pages** and **10 languages**.
108
113
 
@@ -146,7 +151,7 @@ I ran the same multilingual app in a real browser for every stack, then wrote do
146
151
 
147
152
  GitHub stars are a strong indicator of a project's popularity, community trust, and long-term relevance. While not a direct measure of technical quality, they reflect how many developers find the project useful, follow its progress, and are likely to adopt it. For estimating the value of a project, stars help compare traction across alternatives and provide insights into ecosystem growth.
148
153
 
149
- [![Star History Chart](https://api.star-history.com/chart?repos=intlify%2Fvue-i18n%2Cfluent-vue%2Ffluent-vue%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#intlify/vue-i18n&fluent-vue/fluent-vue&aymericzip/intlayer)
154
+ [![Star History Chart](https://api.star-history.com/chart?repos=intlify%2Fvue-i18n%2Cfluent-vue%2Ffluent-vue%2Ctolgee%2Ftolgee-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#intlify/vue-i18n&fluent-vue/fluent-vue&tolgee/tolgee-js&aymericzip/intlayer)
150
155
 
151
156
  ## Results in detail
152
157
 
@@ -156,18 +161,22 @@ GitHub stars are a strong indicator of a project's popularity, community trust,
156
161
 
157
162
  ### 2 - Acceptable solutions
158
163
 
164
+ **(Tolgee)** (`@tolgee/vue@7.2.0`):
165
+
166
+ `Tolgee` addresses many of the issues mentioned earlier, offering dynamic loading that successfully eliminates locale and page leakage (dropping page JS down to ~58.8kb). However, it does not provide built-in compile-time type safety for keys out of the box, making catching missing keys harder. Additionally, the library footprint is relatively heavy (~13.8kb, which is about 3.7× `vue-intlayer`).
167
+
159
168
  **(vue-i18n)** (`vue-i18n@11.4.0`):
160
169
 
161
170
  - **vue-i18n** is without contestation the most used i18n library for vue, it has a lot of features and a huge ecosystem. but under the hood the solution is quite heavy. even if vue-i18n integrate lazy loading for messages, it miss a scoping feature. In the case of a classic Vue SPA app there is no issue, but for a nuxt app, using @nuxt/i18n, it leads to including the messages from all pages into a single one. For a big nuxt app including more than 10 pages, it can become really problematic.
162
171
 
163
- The package is very heavy (~24.3kb, which is about 6× `vue-intlayer`).
172
+ The package is very heavy (~24.1kb, which is about 6.5× `vue-intlayer`).
164
173
 
165
174
  **(fluent-vue)** (`fluent-vue@3.8.2`):
166
175
 
167
- - **fluent-vue** offer one inovation attempt thought the .ftl format. the message organization is great, easier to get started. but in practice, the lack of typesafty increase the risk of error and can quickly become time consuming to debug. Moreever, that solution load the messages using a vite plugin that force the loading of all the content in all languages into each page. Additionally this is an extremely heavy solution (~29.7kb, which is about 7.5× `vue-intlayer`).
176
+ - **fluent-vue** offer one inovation attempt thought the .ftl format. the message organization is great, easier to get started. but in practice, the lack of typesafty increase the risk of error and can quickly become time consuming to debug. Moreever, that solution load the messages using a vite plugin that force the loading of all the content in all languages into each page. Additionally this is an extremely heavy solution (~29.7kb, which is about 8× `vue-intlayer`).
168
177
 
169
178
  ### 3 - Recommendations
170
179
 
171
- **(Intlayer)** (`vue-intlayer@9.5.0`):
180
+ **(Intlayer)** (`vue-intlayer@9.5.6`):
172
181
 
173
182
  I will not personally judge `vue-intlayer` for objectivity’s sake, since it is my own solution.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-11
3
- updatedAt: 2026-09-21
3
+ updatedAt: 2026-09-23
4
4
  title: CLI - All Intlayer CLI commands for your multilingual website
5
5
  description: Discover how to use the Intlayer CLI to manage your multilingual website. Follow the steps in this online documentation to set up your project in a few minutes.
6
6
  keywords:
@@ -17,6 +17,9 @@ slugs:
17
17
  - concept
18
18
  - cli
19
19
  history:
20
+ - version: 9.5.8
21
+ date: 2026-09-23
22
+ changes: "Add upgrade command"
20
23
  - version: 9.5.6
21
24
  date: 2026-09-21
22
25
  changes: "Add init infra command"
@@ -155,6 +158,7 @@ To see how to configure available locales, or other parameters, refer to the [co
155
158
 
156
159
  - **[Initialize Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/init.md)** - Set up Intlayer in your project with automatic configuration
157
160
  - **[Set Up Infrastructure](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/infra.md)** - Install the desktop app or self-host the CMS with Docker (all-in-one or Compose)
161
+ - **[Upgrade Intlayer Packages](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/upgrade.md)** - List the Intlayer packages of every `package.json` and upgrade them to the latest version
158
162
  - **[Manage Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/configuration.md)** - Get and push your Intlayer configuration to the CMS
159
163
 
160
164
  ### Documentation Management
@@ -182,6 +186,7 @@ To see how to configure available locales, or other parameters, refer to the [co
182
186
  "scripts": {
183
187
  "intlayer:init": "npx intlayer init",
184
188
  "intlayer:infra": "npx intlayer init infra",
189
+ "intlayer:upgrade": "npx intlayer upgrade",
185
190
  "intlayer:login": "npx intlayer login",
186
191
  "intlayer:build": "npx intlayer build",
187
192
  "intlayer:watch": "npx intlayer build --watch",
@@ -0,0 +1,125 @@
1
+ ---
2
+ createdAt: 2026-09-23
3
+ updatedAt: 2026-09-23
4
+ title: CLI - Upgrade Intlayer packages
5
+ description: Learn how to use the Intlayer CLI upgrade command to list every Intlayer package of your project or monorepo and upgrade them to the latest version.
6
+ keywords:
7
+ - CLI
8
+ - Upgrade
9
+ - Update
10
+ - Packages
11
+ - Monorepo
12
+ - Intlayer
13
+ slugs:
14
+ - doc
15
+ - concept
16
+ - cli
17
+ - upgrade
18
+ history:
19
+ - version: 9.5.8
20
+ date: 2026-09-23
21
+ changes: "Add upgrade command"
22
+ author: aymericzip
23
+ ---
24
+
25
+ # Upgrade Intlayer Packages
26
+
27
+ ```bash packageManager="npm"
28
+ npx intlayer upgrade
29
+ ```
30
+
31
+ ```bash packageManager="yarn"
32
+ yarn intlayer upgrade
33
+ ```
34
+
35
+ ```bash packageManager="pnpm"
36
+ pnpm intlayer upgrade
37
+ ```
38
+
39
+ ```bash packageManager="bun"
40
+ bun x intlayer upgrade
41
+ ```
42
+
43
+ The `upgrade` command lists the Intlayer packages declared in every `package.json` of your project, including monorepo workspaces, and upgrades them to the latest published version. It runs the same package upgrade step as `intlayer init`, on its own.
44
+
45
+ ## Arguments:
46
+
47
+ - `--project-root [projectRoot]` - Optional. The project root directory. By default, the command starts from the nearest `package.json` above the current working directory.
48
+ - `--dry-run` - Optional. Lists the packages and their target version without modifying any file.
49
+ - `--tag <tag>` - Optional. The npm dist-tag to upgrade to (for example `canary`). Defaults to `latest`.
50
+
51
+ ## What it does:
52
+
53
+ 1. **Lists the Intlayer packages** - Scans every `package.json` of the project (skipping `node_modules` and build outputs) for `intlayer`, `@intlayer/*`, `*-intlayer` and `intlayer-*` dependencies and dev dependencies.
54
+ 2. **Fetches the target version** - Reads the version of the selected dist-tag (`latest` by default) of each package from the npm registry.
55
+ 3. **Rewrites the ranges** - Updates each outdated range in place, keeping its operator (`^`, `~` or none) and the file indentation.
56
+ 4. **Installs once** - Runs a single install from the workspace root (the nearest directory with a lock file), using the package manager that owns the lock file:
57
+
58
+ | Lock file | Command |
59
+ | ------------------------------ | -------------- |
60
+ | `bun.lock` / `bun.lockb` | `bun install` |
61
+ | `pnpm-lock.yaml` | `pnpm install` |
62
+ | `yarn.lock` | `yarn install` |
63
+ | `package-lock.json` or no lock | `npm install` |
64
+
65
+ If there is no lock file, the `packageManager` field of `package.json` (for example `"bun@1.2.0"`) is used before falling back to npm.
66
+
67
+ Ranges that do not point to the registry, such as `workspace:*`, `file:`, `link:`, `catalog:` or git URLs, are never modified.
68
+
69
+ ## Examples:
70
+
71
+ ### List the available upgrades without applying them:
72
+
73
+ ```bash packageManager="npm"
74
+ npx intlayer upgrade --dry-run
75
+ ```
76
+
77
+ ```bash packageManager="yarn"
78
+ yarn intlayer upgrade --dry-run
79
+ ```
80
+
81
+ ```bash packageManager="pnpm"
82
+ pnpm intlayer upgrade --dry-run
83
+ ```
84
+
85
+ ```bash packageManager="bun"
86
+ bun x intlayer upgrade --dry-run
87
+ ```
88
+
89
+ ### Upgrade to the canary release:
90
+
91
+ ```bash packageManager="npm"
92
+ npx intlayer upgrade --tag canary
93
+ ```
94
+
95
+ ```bash packageManager="yarn"
96
+ yarn intlayer upgrade --tag canary
97
+ ```
98
+
99
+ ```bash packageManager="pnpm"
100
+ pnpm intlayer upgrade --tag canary
101
+ ```
102
+
103
+ ```bash packageManager="bun"
104
+ bun x intlayer upgrade --tag canary
105
+ ```
106
+
107
+ ## Example output:
108
+
109
+ ```bash
110
+ npx intlayer upgrade
111
+ Intlayer packages:
112
+ package.json
113
+ intlayer ^9.0.0 → ^9.5.7
114
+ apps/web/package.json
115
+ next-intlayer ^9.5.7 (latest)
116
+ vite-intlayer ~9.2.0 → ~9.5.7
117
+ Running bun install...
118
+ ✓ Upgraded 2 Intlayer dependencies to latest
119
+ ```
120
+
121
+ ## Notes:
122
+
123
+ - Run the command from the root of your repository to upgrade every workspace. Run it from a workspace to upgrade that workspace only.
124
+ - Packages whose version cannot be fetched (offline, private or unpublished package) are listed and left unchanged.
125
+ - If the install fails, the upgraded ranges are kept in `package.json`. Run your package manager's install command manually.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-23
4
4
  title: Best i18n solution for Next.js in 2026 - Benchmark Report
5
5
  description: Compare Next.js internationalisation (i18n) libraries like next-intl, next-i18next, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
6
6
  keywords:
@@ -17,6 +17,9 @@ slugs:
17
17
  author: aymericzip
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n
19
19
  history:
20
+ - version: 9.5.7
21
+ date: 2026-09-23
22
+ changes: "Update benchmark results"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Update benchmark results"
@@ -214,7 +217,7 @@ Finally, in comparison of other solutions, Paraglide does not use store (e.g. Re
214
217
 
215
218
  **(Tolgee)** (`@tolgee/react@7.2.0`):
216
219
 
217
- `Tolgee` addresses many of the issues mentioned earlier. I found it harder to adopt than similar tools. It does not provide type safety, which also makes catching missing keys at compile time harder. I had to wrap Tolgee’s functions with my own to add missing-key detection.
220
+ `Tolgee` addresses many of the issues mentioned earlier. I found it harder to adopt than similar tools. It does not provide type safety, which also makes catching missing keys at compile time harder. I had to wrap Tolgee’s functions with my own to add missing-key detection. The package is also relatively heavy (~14.3kb, which is about 2.8× `next-intlayer`).
218
221
 
219
222
  **(Next Intl)** (`next-intl@4.14.2`):
220
223
 
@@ -240,7 +243,7 @@ Message formats also differ: `next-intl` uses ICU MessageFormat, while `i18next`
240
243
 
241
244
  `next-translate` is my main recommendation if you like a `t()`-style API. It is elegant via `next-translate-plugin`, loading namespaces through `getStaticProps` with a Webpack / Turbopack loader. It is also one of the lightest options here (~3.5kb). For namespacing, defining namespaces per page or route in config is well thought out and easier to maintain than main alternatives like **next-intl** or **next-i18next**. In version `3.1.2`, I noted that static rendering did not work; Next.js fell back to dynamic rendering.
242
245
 
243
- **(Intlayer)** (`next-intlayer@9.5.1`):
246
+ **(Intlayer)** (`next-intlayer@9.5.6`):
244
247
 
245
248
  I will not personally judge `next-intlayer` for objectivity’s sake, since it is my own solution.
246
249
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-23
4
4
  title: Best i18n solution for Solid in 2026 - Benchmark Report
5
- description: Compare Solid internationalisation (i18n) libraries like solid-primitives, solid-i18next, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
5
+ description: Compare Solid internationalisation (i18n) libraries like solid-primitives, solid-i18next, Tolgee, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
6
6
  keywords:
7
7
  - benchmark
8
8
  - i18n
@@ -17,6 +17,9 @@ slugs:
17
17
  author: aymericzip
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-solid-template
19
19
  history:
20
+ - version: 9.5.7
21
+ date: 2026-09-23
22
+ changes: "Update benchmark results"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Update benchmark results"
@@ -68,6 +71,7 @@ The other impact is on developer experience: how you declare content, types, nam
68
71
  - **Intlayer**: Recommended choice for professional Solid applications needing advanced features and optimisation (v9.5.6).
69
72
  - **@solid-primitives/i18n**: Excellent lightweight alternative for simple projects, though lacks advanced features like lazy loading.
70
73
  - **solid-i18next**: Standard but heavy option (~3.5× Intlayer) with same downsides as React i18next.
74
+ - **Tolgee**: Feature-rich translation platform, but fairly heavy (~12.7kb, about 3.0× Intlayer), lacks dedicated Solid primitives (relies on @tolgee/web), and in static setups can leak translations across pages (90% page leak).
71
75
  - **Paraglide**: Innovative approach but complex DX and tree-shaking issues in some setups.
72
76
 
73
77
  ## Test your app
@@ -103,6 +107,7 @@ For this benchmark, we compared the following libraries:
103
107
  - [`solid-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/packages/solid-intlayer/exports.md) (v9.5.6)
104
108
  - [`@solid-primitives/i18n`](https://github.com/solidjs-community/solid-primitives/tree/main/packages/i18n) (v2.2.1)
105
109
  - [`i18next`](https://github.com/i18next/i18next) (v26.0.8) + [`@mbarzda/solid-i18next`](https://github.com/mbarzda/solid-i18next) (v1.4.1)
110
+ - [`@tolgee/web`](https://github.com/tolgee/tolgee-js) (v7.2.0)
106
111
  - [`@inlang/paraglide-js`](https://github.com/opral/paraglide-js) (v2.25.1)
107
112
 
108
113
  The framework is `Solid` with a multilingual app of **10 pages** and **10 languages**.
@@ -147,7 +152,7 @@ I ran the same multilingual app in a real browser for every stack, then wrote do
147
152
 
148
153
  GitHub stars are a strong indicator of a project's popularity, community trust, and long-term relevance. While not a direct measure of technical quality, they reflect how many developers find the project useful, follow its progress, and are likely to adopt it. For estimating the value of a project, stars help compare traction across alternatives and provide insights into ecosystem growth.
149
154
 
150
- [![Star History Chart](https://api.star-history.com/chart?repos=solidjs-community%2Fsolid-primitives%2Cmbarzda%2Fsolid-i18next%2Copral%2Fparaglide-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&aymericzip/intlayer)
155
+ [![Star History Chart](https://api.star-history.com/chart?repos=solidjs-community%2Fsolid-primitives%2Cmbarzda%2Fsolid-i18next%2Copral%2Fparaglide-js%2Ctolgee%2Ftolgee-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer)
151
156
 
152
157
  ## Results in detail
153
158
 
@@ -170,6 +175,18 @@ Still, it shares the same major downsides as stacks built on `t('a.b.c')`: optim
170
175
  Solid primitive is extremely light and efficient. I recommend that solution for light projects, but it can quickly become lacking features for professional solutions including cookie management, proxy redirection, formatters etc.
171
176
  It also misses lazy loading and scoping namespaces for page size optimisation.
172
177
 
178
+ **(Tolgee)** (`@tolgee/web@7.2.0`):
179
+
180
+ `Tolgee` provides a feature-rich internationalisation platform with in-context editing capabilities.
181
+
182
+ On Solid, there is currently no dedicated official adapter (such as `@tolgee/solid`), requiring developers to integrate via `@tolgee/web` with custom signals.
183
+
184
+ The package is fairly heavy (~12.7kb, which is about 3.0× `solid-intlayer`).
185
+
186
+ Without a granular per-page splitting mechanism in Solid, all translations load into memory upfront in static setups. This leads to heavy bundle leakage (44.5% locale leakage, 90.0% page leakage) and average page bundle sizes of ~91.8kb (compared to ~35.8kb for Intlayer).
187
+
188
+ Language switch responsiveness is very fast (0.6ms), matching Solid's fine-grained reactivity, though hydration overhead is higher (~5.6ms vs ~3.0ms for Intlayer).
189
+
173
190
  **(Paraglide)** (`@inlang/paraglide-js@2.25.1`):
174
191
 
175
192
  `Paraglide` offers an innovative, well-thought-out approach. Even so, in this benchmark the tree-shaking their company advertises did not work for my implementation. The workflow and DX are also more complex than other options.
@@ -178,7 +195,7 @@ Finally, in comparison with other solutions, Paraglide does not use a store (e.g
178
195
 
179
196
  ### 3 - Recommendations
180
197
 
181
- **(Intlayer)** (`solid-intlayer@9.5.0`):
198
+ **(Intlayer)** (`solid-intlayer@9.5.6`):
182
199
 
183
200
  I will not personally judge `solid-intlayer` for objectivity’s sake, since it is my own solution.
184
201
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-23
4
4
  title: Best i18n solution for Svelte in 2026 - Benchmark Report
5
- description: Compare Svelte internationalisation (i18n) libraries like svelte-i18n, Paraglide, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
5
+ description: Compare Svelte internationalisation (i18n) libraries like svelte-i18n, Paraglide, Tolgee, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
6
6
  keywords:
7
7
  - benchmark
8
8
  - i18n
@@ -17,6 +17,9 @@ slugs:
17
17
  author: aymericzip
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-svelte-template
19
19
  history:
20
+ - version: 9.5.7
21
+ date: 2026-09-23
22
+ changes: "Update benchmark results"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Update benchmark results"
@@ -67,6 +70,7 @@ The other impact is on developer experience: how you declare content, types, nam
67
70
 
68
71
  - **Intlayer**: The most performance-efficient choice (v9.5.6) with the smallest footprint.
69
72
  - **Paraglide**: Strong contender for tree-shaking but has a more complex developer experience and reactivity overhead.
73
+ - **Tolgee**: Feature-rich translation platform with in-context editing, but fairly heavy (~13.0kb, about 3.6× Intlayer), and in static setups exhibits significant bundle leakage across pages (90% page leak).
70
74
  - **svelte-i18n**: Comprehensive and standard for Svelte, but carries much larger bundle weight (~4.5× Intlayer).
71
75
 
72
76
  ## Test your app
@@ -101,6 +105,7 @@ For this benchmark, we compared the following libraries:
101
105
  - `Base App` (No i18n library)
102
106
  - [`svelte-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/packages/svelte-intlayer/exports.md) (v9.5.6)
103
107
  - [`svelte-i18n`](https://github.com/kaisermann/svelte-i18n) (v4.0.1)
108
+ - [`@tolgee/svelte`](https://github.com/tolgee/tolgee-js) (v7.2.1)
104
109
  - [`@inlang/paraglide-js`](https://github.com/opral/paraglide-js) (v2.25.1)
105
110
 
106
111
  The framework is `Svelte` with a multilingual app of **10 pages** and **10 languages**.
@@ -145,7 +150,7 @@ I ran the same multilingual app in a real browser for every stack, then wrote do
145
150
 
146
151
  GitHub stars are a strong indicator of a project's popularity, community trust, and long-term relevance. While not a direct measure of technical quality, they reflect how many developers find the project useful, follow its progress, and are likely to adopt it. For estimating the value of a project, stars help compare traction across alternatives and provide insights into ecosystem growth.
147
152
 
148
- [![Star History Chart](https://api.star-history.com/chart?repos=kaisermann%2Fsvelte-i18n%2Copral%2Fparaglide-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#kaisermann/svelte-i18n&opral/paraglide-js&aymericzip/intlayer)
153
+ [![Star History Chart](https://api.star-history.com/chart?repos=kaisermann%2Fsvelte-i18n%2Copral%2Fparaglide-js%2Ctolgee%2Ftolgee-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#kaisermann/svelte-i18n&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer)
149
154
 
150
155
  ## Results in detail
151
156
 
@@ -165,6 +170,16 @@ Finally, in comparison with other solutions, Paraglide does not use a store (e.g
165
170
 
166
171
  > Note on paraglide: the solution injects code into your codebase for imports; as a result, the 'lib size' metric in the benchmark report is almost 0. Code generation is a good thing, because the function used will include only the necessary logic (prefix everywhere vs no prefix, cookie vs storage, etc.). In comparison, Intlayer performs this filtering via environment variable injections in the build to force the bundler to tree-shake the content depending on the logic. Thanks to this, paraglide and intlayer end up being 6 to 10 times lighter solutions than i18next or next-intl.
167
172
 
173
+ **(Tolgee)** (`@tolgee/svelte@7.2.1`):
174
+
175
+ `Tolgee` provides an all-in-one localisation platform with in-context editing and official Svelte integration via `@tolgee/svelte`.
176
+
177
+ The package is fairly heavy (~13.0kb, which is about 3.6× `svelte-intlayer`).
178
+
179
+ Without granular per-page splitting in Svelte, all translations load into memory upfront in static setups. This causes substantial bundle leakage (50.0% locale leakage, 90.0% page leakage) and average page bundle sizes of ~100.7kb (compared to ~59.0kb for Intlayer).
180
+
181
+ Language switch responsiveness is very fast (0.5ms), benefiting from Svelte's reactive stores, though hydration overhead is slightly higher (~6.2ms vs ~5.5ms for Intlayer).
182
+
168
183
  **(svelte-i18n)** (`svelte-i18n@4.0.1`):
169
184
 
170
185
  This solution answers all i18n needs in a Svelte project. But as it is the case for i18next or other major i18n solutions, it is a bit heavy (~16.6kb, which is about 4.5× `svelte-intlayer`).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-23
4
4
  title: Best i18n solution for TanStack Start in 2026 - Benchmark Report
5
5
  description: Compare TanStack Start internationalisation libraries like react-i18next, use-intl, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
6
6
  keywords:
@@ -17,6 +17,9 @@ slugs:
17
17
  author: aymericzip
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-tanstack-start-template
19
19
  history:
20
+ - version: 9.5.7
21
+ date: 2026-09-23
22
+ changes: "Update benchmark results"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Update benchmark results"
@@ -200,7 +203,7 @@ The idea behind `Wuchale` is interesting but not yet a viable solution. I hit re
200
203
 
201
204
  `Tolgee` addresses many of the issues mentioned earlier. I found it harder to get started with than other tools with similar approaches. It does not provide type safety, which also makes catching missing keys at compile time much harder. I had to wrap Tolgee’s APIs with my own to add missing-key detection.
202
205
 
203
- The package is fairly heavy (~11.1kb, which is more than 2× `react-intlayer`).
206
+ The package is fairly heavy (~13.8 kb, which is more than 2.9× `react-intlayer`).
204
207
 
205
208
  On TanStack Start I also had reactivity problems: on locale change I had to force the provider to rerender and subscribe to locale-change events so loading in another language behaved correctly.
206
209
 
@@ -234,7 +237,7 @@ The package is also heavy (~15.3kb, which is about 3× `react-intlayer`).
234
237
 
235
238
  This TanStack Start benchmark has no direct equivalent to `next-translate` (Next.js plugin + `getStaticProps`). For teams that really want a `t()` API with a mature ecosystem, `react-i18next` and `use-intl` remain “reasonable” choices, but expect to invest a lot of time optimising to avoid leakage.
236
239
 
237
- **(Intlayer)** (`react-intlayer@9.5.1`):
240
+ **(Intlayer)** (`react-intlayer@9.5.6`):
238
241
 
239
242
  I will not personally judge `react-intlayer` for objectivity’s sake, since it is my own solution.
240
243
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-23
4
4
  title: Best i18n solution for Vue in 2026 - Benchmark Report
5
- description: Compare Vue internationalisation (i18n) libraries like vue-i18n, fluent-vue, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
5
+ description: Compare Vue internationalisation (i18n) libraries like vue-i18n, fluent-vue, Tolgee, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
6
6
  keywords:
7
7
  - benchmark
8
8
  - i18n
@@ -17,6 +17,9 @@ slugs:
17
17
  author: aymericzip
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-vue-template
19
19
  history:
20
+ - version: 9.5.7
21
+ date: 2026-09-23
22
+ changes: "Update benchmark results and add Tolgee"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Update benchmark results"
@@ -66,6 +69,7 @@ The other impact is on developer experience: how you declare content, types, nam
66
69
  ## TL;DR
67
70
 
68
71
  - **Intlayer**: The lightest solution (v9.5.6) with built-in scoping and dynamic loading.
72
+ - **Tolgee**: Effective dynamic loading with zero leakage in dynamic mode, but heavier (~3.7× Intlayer) and lacks built-in compile-time type safety.
69
73
  - **vue-i18n**: The industry standard with a rich ecosystem, but can become significantly heavier and harder to optimise for code-splitting in large applications.
70
74
  - **fluent-vue**: Innovative message organisation but lacks type-safety and turns out to be an extremely heavy solution.
71
75
 
@@ -103,6 +107,7 @@ For this benchmark, we compared the following libraries:
103
107
  - [`@intlayer/vue-i18n`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/compat/vue-i18n.md) (v9.5.6)
104
108
  - [`vue-i18n`](https://github.com/intlify/vue-i18n) (v11.4.0)
105
109
  - [`fluent-vue`](https://github.com/fluent-vue/fluent-vue) (v3.8.2)
110
+ - [`@tolgee/vue`](https://github.com/tolgee/tolgee-js) (v7.2.0)
106
111
 
107
112
  The framework is `Vue` with a multilingual app of **10 pages** and **10 languages**.
108
113
 
@@ -146,7 +151,7 @@ I ran the same multilingual app in a real browser for every stack, then wrote do
146
151
 
147
152
  GitHub stars are a strong indicator of a project's popularity, community trust, and long-term relevance. While not a direct measure of technical quality, they reflect how many developers find the project useful, follow its progress, and are likely to adopt it. For estimating the value of a project, stars help compare traction across alternatives and provide insights into ecosystem growth.
148
153
 
149
- [![Star History Chart](https://api.star-history.com/chart?repos=intlify%2Fvue-i18n%2Cfluent-vue%2Ffluent-vue%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#intlify/vue-i18n&fluent-vue/fluent-vue&aymericzip/intlayer)
154
+ [![Star History Chart](https://api.star-history.com/chart?repos=intlify%2Fvue-i18n%2Cfluent-vue%2Ffluent-vue%2Ctolgee%2Ftolgee-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#intlify/vue-i18n&fluent-vue/fluent-vue&tolgee/tolgee-js&aymericzip/intlayer)
150
155
 
151
156
  ## Results in detail
152
157
 
@@ -156,18 +161,22 @@ GitHub stars are a strong indicator of a project's popularity, community trust,
156
161
 
157
162
  ### 2 - Acceptable solutions
158
163
 
164
+ **(Tolgee)** (`@tolgee/vue@7.2.0`):
165
+
166
+ `Tolgee` addresses many of the issues mentioned earlier, offering dynamic loading that successfully eliminates locale and page leakage (dropping page JS down to ~58.8kb). However, it does not provide built-in compile-time type safety for keys out of the box, making catching missing keys harder. Additionally, the library footprint is relatively heavy (~13.8kb, which is about 3.7× `vue-intlayer`).
167
+
159
168
  **(vue-i18n)** (`vue-i18n@11.4.0`):
160
169
 
161
170
  - **vue-i18n** is without contestation the most used i18n library for vue, it has a lot of features and a huge ecosystem. But under the hood the solution is quite heavy. Even if vue-i18n integrates lazy loading for messages, it misses a scoping feature. In the case of a classic Vue SPA app there is no issue, but for a nuxt app, using @nuxt/i18n, it leads to including the messages from all pages into a single one. For a big nuxt app including more than 10 pages, it can become really problematic.
162
171
 
163
- The package is very heavy (~24.3kb, which is about 6× `vue-intlayer`).
172
+ The package is very heavy (~24.1 kb, which is about 6.5× `vue-intlayer`).
164
173
 
165
174
  **(fluent-vue)** (`fluent-vue@3.8.2`):
166
175
 
167
- - **fluent-vue** offer one innovation attempt through the .ftl format. The message organisation is great, easier to get started. But in practice, the lack of typesafety increases the risk of error and can quickly become time consuming to debug. Moreover, that solution load the messages using a vite plugin that force the loading of all the content in all languages into each page. Additionally this is an extremely heavy solution (~29.7kb, which is about 7.5× `vue-intlayer`).
176
+ - **fluent-vue** offer one innovation attempt through the .ftl format. The message organisation is great, easier to get started. But in practice, the lack of typesafety increases the risk of error and can quickly become time consuming to debug. Moreover, that solution load the messages using a vite plugin that force the loading of all the content in all languages into each page. Additionally this is an extremely heavy solution (~29.7kb, which is about 8× `vue-intlayer`).
168
177
 
169
178
  ### 3 - Recommendations
170
179
 
171
- **(Intlayer)** (`vue-intlayer@9.5.0`):
180
+ **(Intlayer)** (`vue-intlayer@9.5.6`):
172
181
 
173
182
  I will not personally judge `vue-intlayer` for objectivity’s sake, since it is my own solution.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-11
3
- updatedAt: 2026-09-21
3
+ updatedAt: 2026-09-23
4
4
  title: CLI - All Intlayer CLI commands for your multilingual website
5
5
  description: Discover how to use the Intlayer CLI to manage your multilingual website. Follow the steps in this online documentation to set up your project in minutes.
6
6
  keywords:
@@ -17,6 +17,9 @@ slugs:
17
17
  - concept
18
18
  - cli
19
19
  history:
20
+ - version: 9.5.8
21
+ date: 2026-09-23
22
+ changes: "Add upgrade command"
20
23
  - version: 9.5.6
21
24
  date: 2026-09-21
22
25
  changes: "Add init infra command"
@@ -155,6 +158,7 @@ To learn how to configure the available languages or other parameters, take a lo
155
158
 
156
159
  - **[Initialise Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/init.md)** - Set up Intlayer in your project with automatic configuration
157
160
  - **[Set Up Infrastructure](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/infra.md)** - Install the desktop app or self-host the CMS with Docker (all-in-one or Compose)
161
+ - **[Upgrade Intlayer Packages](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/upgrade.md)** - List the Intlayer packages of every `package.json` and upgrade them to the latest version
158
162
  - **[Manage Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/configuration.md)** - Get your Intlayer configuration and push it to the CMS
159
163
 
160
164
  ### Doc Management
@@ -182,6 +186,7 @@ To learn how to configure the available languages or other parameters, take a lo
182
186
  "scripts": {
183
187
  "intlayer:init": "npx intlayer init",
184
188
  "intlayer:infra": "npx intlayer init infra",
189
+ "intlayer:upgrade": "npx intlayer upgrade",
185
190
  "intlayer:login": "npx intlayer login",
186
191
  "intlayer:build": "npx intlayer build",
187
192
  "intlayer:watch": "npx intlayer build --watch",