@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.
- package/blog/ar/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/de/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/en/is_intlayer_lighter_than_paraglide.md +288 -0
- package/blog/en-GB/is_intlayer_lighter_than_paraglide.md +285 -0
- package/blog/es/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/fr/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/hi/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/id/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/it/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/ja/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/ko/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/pl/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/pt/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/ru/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/tr/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/uk/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/vi/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/zh/is_intlayer_lighter_than_paraglide.md +284 -0
- package/dist/cjs/generated/blog.entry.cjs +20 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +20 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/index.cjs +2 -2
- package/dist/esm/generated/blog.entry.mjs +20 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +20 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/benchmark/nextjs.md +6 -3
- package/docs/ar/benchmark/solid.md +21 -4
- package/docs/ar/benchmark/svelte.md +18 -3
- package/docs/ar/benchmark/tanstack.md +6 -3
- package/docs/ar/benchmark/vue.md +14 -5
- package/docs/ar/cli/index.md +6 -1
- package/docs/ar/cli/upgrade.md +125 -0
- package/docs/de/benchmark/nextjs.md +6 -3
- package/docs/de/benchmark/solid.md +21 -4
- package/docs/de/benchmark/svelte.md +18 -3
- package/docs/de/benchmark/tanstack.md +6 -3
- package/docs/de/benchmark/vue.md +14 -5
- package/docs/de/cli/index.md +6 -1
- package/docs/de/cli/upgrade.md +125 -0
- package/docs/en/agent_skills.md +29 -1
- package/docs/en/benchmark/nextjs.md +6 -3
- package/docs/en/benchmark/solid.md +21 -4
- package/docs/en/benchmark/svelte.md +18 -3
- package/docs/en/benchmark/tanstack.md +7 -4
- package/docs/en/benchmark/vue.md +15 -6
- package/docs/en/cli/index.md +6 -1
- package/docs/en/cli/upgrade.md +125 -0
- package/docs/en-GB/benchmark/nextjs.md +6 -3
- package/docs/en-GB/benchmark/solid.md +21 -4
- package/docs/en-GB/benchmark/svelte.md +18 -3
- package/docs/en-GB/benchmark/tanstack.md +6 -3
- package/docs/en-GB/benchmark/vue.md +15 -6
- package/docs/en-GB/cli/index.md +6 -1
- package/docs/en-GB/cli/upgrade.md +125 -0
- package/docs/es/benchmark/nextjs.md +6 -3
- package/docs/es/benchmark/solid.md +21 -4
- package/docs/es/benchmark/svelte.md +18 -3
- package/docs/es/benchmark/tanstack.md +6 -3
- package/docs/es/benchmark/vue.md +14 -5
- package/docs/es/cli/index.md +6 -1
- package/docs/es/cli/upgrade.md +125 -0
- package/docs/fr/benchmark/nextjs.md +6 -3
- package/docs/fr/benchmark/solid.md +21 -4
- package/docs/fr/benchmark/svelte.md +18 -3
- package/docs/fr/benchmark/tanstack.md +6 -3
- package/docs/fr/benchmark/vue.md +15 -6
- package/docs/fr/cli/index.md +6 -1
- package/docs/fr/cli/upgrade.md +125 -0
- package/docs/hi/benchmark/nextjs.md +6 -3
- package/docs/hi/benchmark/solid.md +21 -4
- package/docs/hi/benchmark/svelte.md +18 -3
- package/docs/hi/benchmark/tanstack.md +6 -3
- package/docs/hi/benchmark/vue.md +15 -6
- package/docs/hi/cli/index.md +6 -1
- package/docs/hi/cli/upgrade.md +125 -0
- package/docs/id/benchmark/nextjs.md +6 -3
- package/docs/id/benchmark/solid.md +21 -4
- package/docs/id/benchmark/svelte.md +18 -3
- package/docs/id/benchmark/tanstack.md +6 -3
- package/docs/id/benchmark/vue.md +15 -6
- package/docs/id/cli/index.md +6 -1
- package/docs/id/cli/upgrade.md +125 -0
- package/docs/it/benchmark/nextjs.md +6 -3
- package/docs/it/benchmark/solid.md +21 -4
- package/docs/it/benchmark/svelte.md +18 -3
- package/docs/it/benchmark/tanstack.md +6 -3
- package/docs/it/benchmark/vue.md +14 -5
- package/docs/it/cli/index.md +6 -1
- package/docs/it/cli/upgrade.md +125 -0
- package/docs/ja/benchmark/nextjs.md +6 -3
- package/docs/ja/benchmark/solid.md +21 -4
- package/docs/ja/benchmark/svelte.md +18 -3
- package/docs/ja/benchmark/tanstack.md +5 -2
- package/docs/ja/benchmark/vue.md +14 -5
- package/docs/ja/cli/index.md +6 -1
- package/docs/ja/cli/upgrade.md +125 -0
- package/docs/ko/benchmark/nextjs.md +6 -3
- package/docs/ko/benchmark/solid.md +21 -4
- package/docs/ko/benchmark/svelte.md +18 -3
- package/docs/ko/benchmark/tanstack.md +6 -3
- package/docs/ko/benchmark/vue.md +15 -6
- package/docs/ko/cli/index.md +6 -1
- package/docs/ko/cli/upgrade.md +126 -0
- package/docs/pl/benchmark/nextjs.md +6 -3
- package/docs/pl/benchmark/solid.md +21 -4
- package/docs/pl/benchmark/svelte.md +18 -3
- package/docs/pl/benchmark/tanstack.md +6 -3
- package/docs/pl/benchmark/vue.md +15 -6
- package/docs/pl/cli/index.md +6 -1
- package/docs/pl/cli/upgrade.md +125 -0
- package/docs/pt/benchmark/nextjs.md +6 -3
- package/docs/pt/benchmark/solid.md +21 -4
- package/docs/pt/benchmark/svelte.md +18 -3
- package/docs/pt/benchmark/tanstack.md +6 -3
- package/docs/pt/benchmark/vue.md +14 -5
- package/docs/pt/cli/index.md +6 -1
- package/docs/pt/cli/upgrade.md +125 -0
- package/docs/ru/benchmark/nextjs.md +6 -3
- package/docs/ru/benchmark/solid.md +21 -4
- package/docs/ru/benchmark/svelte.md +18 -3
- package/docs/ru/benchmark/tanstack.md +6 -3
- package/docs/ru/benchmark/vue.md +15 -6
- package/docs/ru/cli/index.md +6 -1
- package/docs/ru/cli/upgrade.md +125 -0
- package/docs/tr/benchmark/nextjs.md +6 -3
- package/docs/tr/benchmark/solid.md +21 -4
- package/docs/tr/benchmark/svelte.md +18 -3
- package/docs/tr/benchmark/tanstack.md +6 -3
- package/docs/tr/benchmark/vue.md +15 -6
- package/docs/tr/cli/index.md +6 -1
- package/docs/tr/cli/upgrade.md +125 -0
- package/docs/uk/benchmark/nextjs.md +6 -3
- package/docs/uk/benchmark/solid.md +21 -4
- package/docs/uk/benchmark/svelte.md +18 -3
- package/docs/uk/benchmark/tanstack.md +6 -3
- package/docs/uk/benchmark/vue.md +15 -6
- package/docs/uk/cli/index.md +6 -1
- package/docs/uk/cli/upgrade.md +125 -0
- package/docs/vi/benchmark/nextjs.md +6 -3
- package/docs/vi/benchmark/solid.md +21 -4
- package/docs/vi/benchmark/svelte.md +18 -3
- package/docs/vi/benchmark/tanstack.md +6 -3
- package/docs/vi/benchmark/vue.md +15 -6
- package/docs/vi/cli/index.md +6 -1
- package/docs/vi/cli/upgrade.md +125 -0
- package/docs/zh/benchmark/nextjs.md +6 -3
- package/docs/zh/benchmark/solid.md +21 -4
- package/docs/zh/benchmark/svelte.md +18 -3
- package/docs/zh/benchmark/tanstack.md +5 -2
- package/docs/zh/benchmark/vue.md +15 -6
- package/docs/zh/cli/index.md +6 -1
- package/docs/zh/cli/upgrade.md +125 -0
- package/package.json +6 -6
- package/src/generated/blog.entry.ts +20 -0
- package/src/generated/docs.entry.ts +20 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-23
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
|
+
title: CLI - Tingkatkan Paket Intlayer
|
|
5
|
+
description: Pelajari cara menggunakan perintah upgrade Intlayer CLI untuk mencantumkan setiap paket Intlayer dari proyek atau monorepo Anda dan meningkatkannya ke versi terbaru.
|
|
6
|
+
keywords:
|
|
7
|
+
- CLI
|
|
8
|
+
- Upgrade
|
|
9
|
+
- Tingkatkan
|
|
10
|
+
- Paket
|
|
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: "Menambahkan perintah upgrade"
|
|
22
|
+
author: aymericzip
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Tingkatkan Paket Intlayer
|
|
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
|
+
Perintah `upgrade` mencantumkan paket Intlayer yang dideklarasikan di setiap `package.json` proyek Anda, termasuk workspace monorepo, dan meningkatkannya ke versi terbaru yang dipublikasikan. Perintah ini menjalankan langkah peningkatan paket yang sama dengan `intlayer init`, secara mandiri.
|
|
44
|
+
|
|
45
|
+
## Argumen:
|
|
46
|
+
|
|
47
|
+
- `--project-root [projectRoot]` - Opsional. Direktori root proyek. Secara default, perintah dimulai dari `package.json` terdekat di atas direktori kerja saat ini.
|
|
48
|
+
- `--dry-run` - Opsional. Mencantumkan paket beserta versi targetnya tanpa mengubah file apa pun.
|
|
49
|
+
- `--tag <tag>` - Opsional. Dist-tag npm untuk peningkatan (misalnya `canary`). Default adalah `latest`.
|
|
50
|
+
|
|
51
|
+
## Apa yang dilakukannya:
|
|
52
|
+
|
|
53
|
+
1. **Mencantumkan paket Intlayer** - Memindai setiap `package.json` proyek (melewati `node_modules` dan output build) untuk menemukan dependensi dan devDependencies `intlayer`, `@intlayer/*`, `*-intlayer`, dan `intlayer-*`.
|
|
54
|
+
2. **Mengambil versi target** - Membaca versi dist-tag yang dipilih (default `latest`) dari setiap paket dari npm registry.
|
|
55
|
+
3. **Menulis ulang rentang versi** - Memperbarui setiap rentang yang kedaluwarsa langsung di tempat, mempertahankan operatornya (`^`, `~` atau tidak ada) dan indentasi file.
|
|
56
|
+
4. **Menginstal sekali saja** - Menjalankan instalasi tunggal dari root workspace (direktori terdekat dengan file lock), menggunakan manajer paket pemilik file lock:
|
|
57
|
+
|
|
58
|
+
| File lock | Perintah |
|
|
59
|
+
| ----------------------------------- | -------------- |
|
|
60
|
+
| `bun.lock` / `bun.lockb` | `bun install` |
|
|
61
|
+
| `pnpm-lock.yaml` | `pnpm install` |
|
|
62
|
+
| `yarn.lock` | `yarn install` |
|
|
63
|
+
| `package-lock.json` atau tanpa lock | `npm install` |
|
|
64
|
+
|
|
65
|
+
Jika tidak ada file lock, bidang `packageManager` dari `package.json` (misalnya `"bun@1.2.0"`) digunakan sebelum kembali ke npm.
|
|
66
|
+
|
|
67
|
+
Rentang yang tidak mengarah ke registry, seperti `workspace:*`, `file:`, `link:`, `catalog:` atau URL git, tidak pernah diubah.
|
|
68
|
+
|
|
69
|
+
## Contoh:
|
|
70
|
+
|
|
71
|
+
### Mencantumkan peningkatan yang tersedia tanpa menerapkannya:
|
|
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
|
+
### Meningkatkan ke rilis canary:
|
|
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
|
+
## Contoh 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
|
+
## Catatan:
|
|
122
|
+
|
|
123
|
+
- Jalankan perintah dari root repositori Anda untuk meningkatkan setiap workspace. Jalankan dari workspace tertentu untuk hanya meningkatkan workspace tersebut.
|
|
124
|
+
- Paket yang versinya tidak dapat diambil (offline, paket pribadi atau belum dipublikasikan) dicantumkan dan dibiarkan tidak berubah.
|
|
125
|
+
- Jika instalasi gagal, rentang yang telah ditingkatkan tetap dipertahankan di `package.json`. Jalankan perintah instalasi manajer paket Anda secara manual.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-20
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
4
|
title: Migliore soluzione i18n per Next.js nel 2026 - Rapporto Benchmark
|
|
5
5
|
description: Confronta le librerie di internazionalizzazione (i18n) per Next.js come next-intl, next-i18next e Intlayer. Rapporto dettagliato sulle prestazioni relative a dimensioni del bundle, leakage e reattività.
|
|
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: "Aggiornamento dei risultati del benchmark"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Aggiornamento dei risultati del benchmark"
|
|
@@ -213,7 +216,7 @@ Infine, rispetto ad altre soluzioni, Paraglide non usa uno store (es. contesto R
|
|
|
213
216
|
|
|
214
217
|
**(Tolgee)** (`@tolgee/react@7.2.0`):
|
|
215
218
|
|
|
216
|
-
`Tolgee` affronta molti dei problemi menzionati in precedenza. L'ho trovato più difficile da adottare rispetto a strumenti simili. Non fornisce type safety, il che rende anche più difficile individuare le chiavi mancanti a compile time. Ho dovuto avvolgere le funzioni di Tolgee con le mie per aggiungere il rilevamento delle chiavi mancanti.
|
|
219
|
+
`Tolgee` affronta molti dei problemi menzionati in precedenza. L'ho trovato più difficile da adottare rispetto a strumenti simili. Non fornisce type safety, il che rende anche più difficile individuare le chiavi mancanti a compile time. Ho dovuto avvolgere le funzioni di Tolgee con le mie per aggiungere il rilevamento delle chiavi mancanti. Il pacchetto è anche relativamente pesante (~14.3kb, ovvero circa 2.8× `next-intlayer`).
|
|
217
220
|
|
|
218
221
|
**(Next Intl)** (`next-intl@4.14.2`):
|
|
219
222
|
|
|
@@ -239,7 +242,7 @@ I formati dei messaggi differiscono inoltre: `next-intl` usa ICU MessageFormat,
|
|
|
239
242
|
|
|
240
243
|
`next-translate` è la mia raccomandazione principale se ti piace un'API in stile `t()`. È elegante grazie a `next-translate-plugin`, caricando i namespace attraverso `getStaticProps` con un caricatore Webpack / Turbopack. È anche una delle opzioni più leggere qui (~3.5kb). Per il namespacing, la definizione dei namespace per pagina o percorso nella config è ben pensata e più facile da mantenere rispetto alle principali alternative come **next-intl** o **next-i18next**. Nella versione `3.1.2`, ho notato che il rendering statico non funzionava; Next.js ripiegava sul rendering dinamico.
|
|
241
244
|
|
|
242
|
-
**(Intlayer)** (`next-intlayer@9.5.
|
|
245
|
+
**(Intlayer)** (`next-intlayer@9.5.6`):
|
|
243
246
|
|
|
244
247
|
Non giudicherò personalmente `next-intlayer` per motivi di obiettività, essendo la mia propria soluzione.
|
|
245
248
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-20
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
4
|
title: Migliore soluzione i18n per Solid nel 2026 - Rapporto Benchmark
|
|
5
|
-
description: Confronta le librerie di internazionalizzazione (i18n) per Solid come solid-primitives, solid-i18next e Intlayer. Rapporto dettagliato sulle prestazioni in termini di dimensioni del bundle, leak e reattività.
|
|
5
|
+
description: Confronta le librerie di internazionalizzazione (i18n) per Solid come solid-primitives, solid-i18next, Tolgee e Intlayer. Rapporto dettagliato sulle prestazioni in termini di dimensioni del bundle, leak e reattività.
|
|
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: "Aggiornamento dei risultati del benchmark"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Aggiornamento dei risultati del benchmark"
|
|
@@ -68,6 +71,7 @@ L'autre impatto riguarda l'esperienza dello sviluppatore (DX): come si dichiara
|
|
|
68
71
|
- **Intlayer**: Scelta consigliata per applicazioni Solid professionali che necessitano di funzionalità avanzate e ottimizzazione (v9.5.6).
|
|
69
72
|
- **@solid-primitives/i18n**: Eccellente alternativa leggera per progetti semplici, sebbene manchi di funzionalità avanzate come il lazy loading.
|
|
70
73
|
- **solid-i18next**: Opzione standard ma pesante (~3.5× Intlayer) con gli stessi svantaggi di React i18next.
|
|
74
|
+
- **Tolgee**: Piattaforma di traduzione ricca di funzionalità, ma piuttosto pesante (~12.7kb, circa 3.0× Intlayer), priva di primitive Solid native (si affida a @tolgee/web) e con notevole dispersione tra pagine nelle configurazioni statiche (90% di dispersione tra pagine).
|
|
71
75
|
- **Paraglide**: Approccio innovativo ma DX complessa e problemi di tree-shaking in alcune configurazioni.
|
|
72
76
|
|
|
73
77
|
## Testa la tua app
|
|
@@ -103,6 +107,7 @@ Per questo benchmark, abbiamo confrontato le seguenti librerie:
|
|
|
103
107
|
- [`solid-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/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
|
Il framework è `Solid` con un'app multilingue di **10 pagine** e **10 lingue**.
|
|
@@ -147,7 +152,7 @@ Ho eseguito la stessa app multilingue in un vero browser per ogni stack, quindi
|
|
|
147
152
|
|
|
148
153
|
Le stelle di GitHub sono un forte indicatore della popolarità di un progetto, della fiducia della comunità e della pertinenza a lungo termine. Sebbene non siano una misura diretta della qualità tecnica, riflettono quanti sviluppatori trovano il progetto utile, ne seguono i progressi e sono propensi ad adottarlo. Per stimare il valore di un progetto, le stelle aiutano a confrontare la trazione tra le alternative e forniscono approfondimenti sulla crescita dell'ecosistema.
|
|
149
154
|
|
|
150
|
-
[](https://star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&aymericzip/intlayer)
|
|
155
|
+
[](https://star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer)
|
|
151
156
|
|
|
152
157
|
## Risultati in dettaglio
|
|
153
158
|
|
|
@@ -170,6 +175,18 @@ Tuttavia, condivide gli stessi principali svantaggi degli stack costruiti su `t(
|
|
|
170
175
|
Solid primitive è estremamente leggero ed efficiente. Consiglio questa soluzione per progetti leggeri, ma può mancare rapidamente di funzionalità per soluzioni professionali incluse la gestione dei cookie, il reindirizzamento proxy, i formattatori ecc.
|
|
171
176
|
Manca inoltre del lazy loading e dello scoping dei namespace per l'ottimizzazione delle dimensioni della pagina.
|
|
172
177
|
|
|
178
|
+
**(Tolgee)** (`@tolgee/web@7.2.0`):
|
|
179
|
+
|
|
180
|
+
`Tolgee` offre una piattaforma completa di gestione delle traduzioni con funzionalità di modifica in-context.
|
|
181
|
+
|
|
182
|
+
Su Solid non esiste attualmente un adapter nativo ufficiale (come `@tolgee/solid`), richiedendo agli sviluppatori di integrarsi tramite `@tolgee/web` con segnali personalizzati.
|
|
183
|
+
|
|
184
|
+
Il pacchetto è relativamente pesante (~12.7kb, circa 3.0× `solid-intlayer`).
|
|
185
|
+
|
|
186
|
+
Senza un meccanismo di suddivisione granulare per pagina su Solid, tutte le traduzioni vengono caricate in memoria all'avvio nelle configurazioni statiche. Ciò causa un'elevata dispersione nel bundle (44.5% di dispersione delle lingue, 90.0% di dispersione tra pagine) e dimensioni medie del bundle per pagina di ~91.8kb (rispetto a ~35.8kb per Intlayer).
|
|
187
|
+
|
|
188
|
+
La reattività al cambio di lingua è estremamente rapida (0.6ms), sfruttando la reattività a grana fine di Solid, sebbene l'overhead di idratazione sia leggermente superiore (~5.6ms rispetto a ~3.0ms per Intlayer).
|
|
189
|
+
|
|
173
190
|
**(Paraglide)** (`@inlang/paraglide-js@2.25.1`):
|
|
174
191
|
|
|
175
192
|
`Paraglide` offre un approccio innovativo e ben ponderato. Tuttavia, in questo benchmark il tree-shaking pubblicizzato dalla loro azienda non ha funzionato per la mia implementazione. Il workflow e la DX sono inoltre più complessi rispetto ad altre opzioni.
|
|
@@ -178,7 +195,7 @@ Infine, rispetto ad altre soluzioni, Paraglide non utilizza uno store (es. Solid
|
|
|
178
195
|
|
|
179
196
|
### 3 - Raccomandazioni
|
|
180
197
|
|
|
181
|
-
**(Intlayer)** (`solid-intlayer@9.5.
|
|
198
|
+
**(Intlayer)** (`solid-intlayer@9.5.6`):
|
|
182
199
|
|
|
183
200
|
Non giudicherò personalmente `solid-intlayer` per motivi di obiettività, essendo la mia soluzione.
|
|
184
201
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-20
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
4
|
title: Migliore soluzione i18n per Svelte nel 2026 - Rapporto Benchmark
|
|
5
|
-
description: Confronta le librerie di internazionalizzazione (i18n) per Svelte come svelte-i18n, Paraglide e Intlayer. Rapporto dettagliato sulle prestazioni in termini di dimensioni del bundle, leak e reattività.
|
|
5
|
+
description: Confronta le librerie di internazionalizzazione (i18n) per Svelte come svelte-i18n, Paraglide, Tolgee e Intlayer. Rapporto dettagliato sulle prestazioni in termini di dimensioni del bundle, leak e reattività.
|
|
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: "Aggiornamento dei risultati del benchmark"
|
|
@@ -67,6 +70,7 @@ L'altro impatto riguarda l'esperienza dello sviluppatore (DX): come si dichiara
|
|
|
67
70
|
|
|
68
71
|
- **Intlayer**: La scelta più efficiente in termini di prestazioni (v9.5.6) con il footprint più ridotto.
|
|
69
72
|
- **Paraglide**: Forte candidato per il tree-shaking ma presenta una DX più complessa e un overhead di reattività.
|
|
73
|
+
- **Tolgee**: Piattaforma di traduzione ricca di funzionalità con modifica in-context, ma piuttosto pesante (~13.0kb, circa 3.6× Intlayer), con notevole dispersione tra pagine nelle configurazioni statiche (90% di dispersione tra pagine).
|
|
70
74
|
- **svelte-i18n**: Completo e standard per Svelte, ma comporta un peso del bundle molto maggiore (~4.5 volte Intlayer).
|
|
71
75
|
|
|
72
76
|
## Testa la tua app
|
|
@@ -101,6 +105,7 @@ Per questo benchmark, abbiamo confrontato le seguenti librerie:
|
|
|
101
105
|
- `Base App` (Nessuna libreria i18n)
|
|
102
106
|
- [`svelte-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/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
|
Il framework è `Svelte` con un'app multilingue di **10 pagine** e **10 lingue**.
|
|
@@ -145,7 +150,7 @@ Ho eseguito la stessa app multilingue in un vero browser per ogni stack, quindi
|
|
|
145
150
|
|
|
146
151
|
Le stelle di GitHub sono un forte indicatore della popolarità di un progetto, della fiducia della comunità e della pertinenza a lungo termine. Sebbene non siano una misura diretta della qualità tecnica, riflettono quanti sviluppatori trovano il progetto utile, ne seguono i progressi e sono propensi ad adottarlo. Per stimare il valore di un progetto, le stelle aiutano a confrontare la trazione tra le alternative e forniscono approfondimenti sulla crescita dell'ecosistema.
|
|
147
152
|
|
|
148
|
-
[](https://star-history.com/#kaisermann/svelte-i18n&opral/paraglide-js&aymericzip/intlayer)
|
|
153
|
+
[](https://star-history.com/#kaisermann/svelte-i18n&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer)
|
|
149
154
|
|
|
150
155
|
## Risultati in dettaglio
|
|
151
156
|
|
|
@@ -165,6 +170,16 @@ Infine, rispetto ad altre soluzioni, Paraglide non utilizza uno store (es. Svelt
|
|
|
165
170
|
|
|
166
171
|
> Nota su Paraglide: la soluzione inietta codice nella tua codebase per gli import; di conseguenza, la metrica 'lib size' nel rapporto benchmark è quasi 0. La generazione di codice è una cosa buona, perché la funzione utilizzata includerà solo la logica necessaria (prefisso ovunque vs nessun prefisso, cookie vs storage, ecc.). In confronto, Intlayer esegue questo filtraggio tramite iniezioni di variabili d'ambiente durante la build per forzare il bundler a fare tree-shaking del contenuto a seconda della logica. Grazie a ciò, Paraglide e Intlayer finiscono per essere soluzioni da 6 a 10 volte più leggere di i18next o next-intl.
|
|
167
172
|
|
|
173
|
+
**(Tolgee)** (`@tolgee/svelte@7.2.1`):
|
|
174
|
+
|
|
175
|
+
`Tolgee` fornisce una piattaforma di localizzazione all-in-one con modifica in-context e integrazione ufficiale per Svelte tramite `@tolgee/svelte`.
|
|
176
|
+
|
|
177
|
+
Il pacchetto è relativamente pesante (~13.0kb, circa 3.6× `svelte-intlayer`).
|
|
178
|
+
|
|
179
|
+
Senza una suddivisione granulare per pagina in Svelte, tutte le traduzioni vengono caricate in memoria all'avvio nelle configurazioni statiche. Ciò causa una sostanziale dispersione nel bundle (50.0% di dispersione delle lingue, 90.0% di dispersione tra pagine) e dimensioni medie del bundle per pagina di ~100.7kb (rispetto a ~59.0kb per Intlayer).
|
|
180
|
+
|
|
181
|
+
La reattività al cambio di lingua è estremamente rapida (0.5ms), beneficiando degli store reattivi di Svelte, sebbene l'overhead di idratazione sia leggermente superiore (~6.2ms rispetto a ~5.5ms per Intlayer).
|
|
182
|
+
|
|
168
183
|
**(svelte-i18n)** (`svelte-i18n@4.0.1`):
|
|
169
184
|
|
|
170
185
|
Questa soluzione soddisfa tutte le esigenze i18n in un progetto Svelte. Ma come per i18next o altre importanti soluzioni i18n, è un po' pesante (~16.6kb, circa 4.5 volte `svelte-intlayer`).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-20
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
4
|
title: Migliore soluzione i18n per TanStack Start nel 2026 - Rapporto Benchmark
|
|
5
5
|
description: Confronta le librerie di internazionalizzazione per TanStack Start come react-i18next, use-intl e Intlayer. Rapporto dettagliato sulle prestazioni relative a dimensioni del bundle, leakage e reattività.
|
|
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: "Aggiornamento dei risultati del benchmark"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Aggiornamento dei risultati del benchmark"
|
|
@@ -200,7 +203,7 @@ L'idea alla base di `Wuchale` è interessante ma non ancora una soluzione pratic
|
|
|
200
203
|
|
|
201
204
|
`Tolgee` affronta molti dei problemi menzionati in precedenza. L'ho trovato più difficile da avviare rispetto ad altri strumenti con approcci simili. Non fornisce type safety, il che rende anche molto difficile individuare le chiavi mancanti a compile time. Ho dovuto avvolgere le API di Tolgee con le mie per aggiungere il rilevamento delle chiavi mancanti.
|
|
202
205
|
|
|
203
|
-
Il package è abbastanza pesante (~
|
|
206
|
+
Il package è abbastanza pesante (~13.8 kb, che è più di 2.9× `react-intlayer`).
|
|
204
207
|
|
|
205
208
|
Su TanStack Start ho avuto anche problemi di reattività: al cambio di lingua, dovevo forzare il provider a rieseguire il rendering e sottoscrivermi agli eventi di cambio lingua in modo che il caricamento in un'altra lingua si comportasse correttamente.
|
|
206
209
|
|
|
@@ -234,7 +237,7 @@ Il package è anche pesante (~15.3kb, che è circa 3× `react-intlayer`).
|
|
|
234
237
|
|
|
235
238
|
Questo benchmark su TanStack Start non ha un equivalente diretto di `next-translate` (plugin Next.js + `getStaticProps`). Per i team che vogliono davvero un'API `t()` con un ecosistema maturo, `react-i18next` e `use-intl` rimangono scelte "ragionevoli", ma preparatevi a investire molto tempo nell'ottimizzazione per evitare leakage.
|
|
236
239
|
|
|
237
|
-
**(Intlayer)** (`react-intlayer@9.5.
|
|
240
|
+
**(Intlayer)** (`react-intlayer@9.5.6`):
|
|
238
241
|
|
|
239
242
|
Non giudicherò personalmente `react-intlayer` per motivi di obiettività, essendo la mia propria soluzione.
|
|
240
243
|
|
package/docs/it/benchmark/vue.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-20
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
4
|
title: Migliore soluzione i18n per Vue nel 2026 - Rapporto Benchmark
|
|
5
|
-
description: Confronta le librerie di internazionalizzazione (i18n) per Vue come vue-i18n, fluent-vue e Intlayer. Rapporto dettagliato sulle prestazioni in termini di dimensioni del bundle, leak e reattività.
|
|
5
|
+
description: Confronta le librerie di internazionalizzazione (i18n) per Vue come vue-i18n, fluent-vue, Tolgee e Intlayer. Rapporto dettagliato sulle prestazioni in termini di dimensioni del bundle, leak e reattività.
|
|
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: "Aggiornamento dei risultati del benchmark e aggiunta di Tolgee"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Aggiornamento dei risultati del benchmark"
|
|
@@ -66,6 +69,7 @@ L'altro impatto riguarda l'esperienza dello sviluppatore (DX): come si dichiara
|
|
|
66
69
|
## TL;DR
|
|
67
70
|
|
|
68
71
|
- **Intlayer**: La soluzione più leggera (v9.5.6) con scoping e caricamento dinamico nativi.
|
|
72
|
+
- **Tolgee**: Caricamento dinamico efficace con zero perdite in modalità dinamica, ma più pesante (~3.7× Intlayer) e privo di type safety a tempo di compilazione.
|
|
69
73
|
- **vue-i18n**: Lo standard del settore con un ricco ecosistema, ma può essere significativamente più pesante e difficile da ottimizzare per il code-splitting in applicazioni di grandi dimensioni.
|
|
70
74
|
- **fluent-vue**: Organizzazione dei messaggi innovativa ma manca di type-safety e risulta essere una soluzione estremamente pesante.
|
|
71
75
|
|
|
@@ -103,6 +107,7 @@ Per questo benchmark, abbiamo confrontato le seguenti librerie:
|
|
|
103
107
|
- [`@intlayer/vue-i18n`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/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
|
Il framework è `Vue` con un'app multilingue di **10 pagine** e **10 lingue**.
|
|
108
113
|
|
|
@@ -146,7 +151,7 @@ Ho eseguito la stessa app multilingue in un browser reale per ogni stack, poi ho
|
|
|
146
151
|
|
|
147
152
|
Le stelle di GitHub sono un forte indicatore della popolarità di un progetto, della fiducia della comunità e della pertinenza a lungo termine. Sebbene non siano una misura diretta della qualità tecnica, riflettono quanti sviluppatori trovano il progetto utile, ne seguono i progressi e sono propensi ad adottarlo. Per stimare il valore di un progetto, le stelle aiutano a confrontare la trazione tra le alternative e forniscono approfondimenti sulla crescita dell'ecosistema.
|
|
148
153
|
|
|
149
|
-
[](https://star-history.com/#intlify/vue-i18n&fluent-vue/fluent-vue&aymericzip/intlayer)
|
|
154
|
+
[](https://star-history.com/#intlify/vue-i18n&fluent-vue/fluent-vue&tolgee/tolgee-js&aymericzip/intlayer)
|
|
150
155
|
|
|
151
156
|
## Risultati in dettaglio
|
|
152
157
|
|
|
@@ -156,11 +161,15 @@ Le stelle di GitHub sono un forte indicatore della popolarità di un progetto, d
|
|
|
156
161
|
|
|
157
162
|
### 2 - Soluzioni accettabili
|
|
158
163
|
|
|
164
|
+
**(Tolgee)** (`@tolgee/vue@7.2.0`):
|
|
165
|
+
|
|
166
|
+
`Tolgee` affronta molti dei problemi menzionati in precedenza, offrendo un caricamento dinamico che elimina con successo le perdite di locale e di pagina (riducendo il JS della pagina a circa 58.8kb). Tuttavia, non fornisce type safety predefinita in fase di compilazione per le chiavi, rendendo più difficile rilevare le chiavi mancanti. Inoltre, l'impatto della libreria è relativamente pesante (~13.8kb, ovvero circa 3.7× `vue-intlayer`).
|
|
167
|
+
|
|
159
168
|
**(vue-i18n)** (`vue-i18n@11.4.0`):
|
|
160
169
|
|
|
161
170
|
- **vue-i18n** è senza dubbio la libreria i18n più utilizzata per Vue, ha molte funzionalità e un ecosistema immenso. Ma sotto il cofano la soluzione è piuttosto pesante. Anche se vue-i18n integra il caricamento pigro dei messaggi, manca di una funzione di scoping. Nel caso di una classica app Vue SPA non ci sono problemi, ma per un'app Nuxt, utilizzando @nuxt/i18n, ciò porta a includere i messaggi di tutte le pagine in una sola. Per una grande app Nuxt con più di 10 pagine, può diventare davvero problematico.
|
|
162
171
|
|
|
163
|
-
Il pacchetto è molto pesante (~24.
|
|
172
|
+
Il pacchetto è molto pesante (~24.1 kb, circa 6 volte `vue-intlayer`).
|
|
164
173
|
|
|
165
174
|
**(fluent-vue)** (`fluent-vue@3.8.2`):
|
|
166
175
|
|
|
@@ -168,6 +177,6 @@ Il pacchetto è molto pesante (~24.3kb, circa 6 volte `vue-intlayer`).
|
|
|
168
177
|
|
|
169
178
|
### 3 - Raccomandazioni
|
|
170
179
|
|
|
171
|
-
**(Intlayer)** (`vue-intlayer@9.5.
|
|
180
|
+
**(Intlayer)** (`vue-intlayer@9.5.6`):
|
|
172
181
|
|
|
173
182
|
Non giudicherò personalmente `vue-intlayer` per motivi di obiettività, essendo la mia soluzione.
|
package/docs/it/cli/index.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-11
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
4
|
title: CLI - Tutti i comandi della CLI di Intlayer per il tuo sito web multilingue
|
|
5
5
|
description: Scopri come utilizzare la CLI di Intlayer per gestire il tuo sito web multilingue. Segui i passaggi in questa documentazione online per configurare il tuo progetto in pochi minuti.
|
|
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: "Aggiungi il comando upgrade"
|
|
20
23
|
- version: 9.5.6
|
|
21
24
|
date: 2026-09-21
|
|
22
25
|
changes: "Aggiungi il comando init infra"
|
|
@@ -155,6 +158,7 @@ Per vedere come configurare le lingue disponibili o altri parametri, fai riferim
|
|
|
155
158
|
|
|
156
159
|
- **[Inizializza Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/init.md)** - Configura Intlayer nel tuo progetto con la configurazione automatica
|
|
157
160
|
- **[Configura l'infrastruttura](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/infra.md)** - Installa l'applicazione desktop o auto-ospita il CMS con Docker (all-in-one o Compose)
|
|
161
|
+
- **[Aggiorna i pacchetti Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/upgrade.md)** - Elenca i pacchetti Intlayer di ogni `package.json` e aggiornali alla versione più recente
|
|
158
162
|
- **[Gestisci Configurazione](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/configuration.md)** - Ottieni e invia la tua configurazione Intlayer al CMS
|
|
159
163
|
|
|
160
164
|
### Gestione della documentazione
|
|
@@ -182,6 +186,7 @@ Per vedere come configurare le lingue disponibili o altri parametri, fai riferim
|
|
|
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 - Aggiorna i pacchetti Intlayer
|
|
5
|
+
description: Scopri come utilizzare il comando upgrade della CLI di Intlayer per elencare ogni pacchetto Intlayer del tuo progetto o monorepo e aggiornarli alla versione più recente.
|
|
6
|
+
keywords:
|
|
7
|
+
- CLI
|
|
8
|
+
- Upgrade
|
|
9
|
+
- Aggiornamento
|
|
10
|
+
- Pacchetti
|
|
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: "Aggiungi il comando upgrade"
|
|
22
|
+
author: aymericzip
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Aggiorna i pacchetti Intlayer
|
|
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
|
+
Il comando `upgrade` elenca i pacchetti Intlayer dichiarati in ogni `package.json` del tuo progetto, compresi i workspace del monorepo, e li aggiorna all'ultima versione pubblicata. Esegue autonomamente lo stesso passaggio di aggiornamento dei pacchetti di `intlayer init`.
|
|
44
|
+
|
|
45
|
+
## Argomenti:
|
|
46
|
+
|
|
47
|
+
- `--project-root [projectRoot]` - Opzionale. La directory principale del progetto. Per impostazione predefinita, il comando parte dal `package.json` più vicino sopra la directory di lavoro corrente.
|
|
48
|
+
- `--dry-run` - Opzionale. Elenca i pacchetti e la loro versione di destinazione senza modificare alcun file.
|
|
49
|
+
- `--tag <tag>` - Opzionale. Il dist-tag npm a cui aggiornare (ad esempio `canary`). Il valore predefinito è `latest`.
|
|
50
|
+
|
|
51
|
+
## Cosa fa:
|
|
52
|
+
|
|
53
|
+
1. **Elenca i pacchetti Intlayer** - Esegue la scansione di ogni `package.json` del progetto (ignorando `node_modules` e gli output di build) alla ricerca di dipendenze e devDependencies `intlayer`, `@intlayer/*`, `*-intlayer` e `intlayer-*`.
|
|
54
|
+
2. **Recupera la versione di destinazione** - Legge dal registro npm la versione del dist-tag selezionato (`latest` per impostazione predefinita) di ciascun pacchetto.
|
|
55
|
+
3. **Riscrive i range** - Aggiorna ogni intervallo obsoleto direttamente nel file, mantenendo il relativo operatore (`^`, `~` o nessuno) e l'indentazione del file.
|
|
56
|
+
4. **Installa una sola volta** - Esegue una singola installazione dalla root del workspace (la directory più vicina con un lock file), utilizzando il gestore di pacchetti proprietario del lock file:
|
|
57
|
+
|
|
58
|
+
| Lock file | Comando |
|
|
59
|
+
| ----------------------------- | -------------- |
|
|
60
|
+
| `bun.lock` / `bun.lockb` | `bun install` |
|
|
61
|
+
| `pnpm-lock.yaml` | `pnpm install` |
|
|
62
|
+
| `yarn.lock` | `yarn install` |
|
|
63
|
+
| `package-lock.json` o no lock | `npm install` |
|
|
64
|
+
|
|
65
|
+
Se non è presente alcun lock file, viene utilizzato il campo `packageManager` di `package.json` (ad esempio `"bun@1.2.0"`) prima di ricorrere a npm.
|
|
66
|
+
|
|
67
|
+
Gli intervalli che non puntano al registro, come `workspace:*`, `file:`, `link:`, `catalog:` o URL git, non vengono mai modificati.
|
|
68
|
+
|
|
69
|
+
## Esempi:
|
|
70
|
+
|
|
71
|
+
### Elenca gli aggiornamenti disponibili senza applicarli:
|
|
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
|
+
### Aggiorna alla versione canary:
|
|
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
|
+
## Output di esempio:
|
|
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
|
+
## Note:
|
|
122
|
+
|
|
123
|
+
- Esegui il comando dalla directory principale del repository per aggiornare ogni workspace. Eseguilo da un workspace per aggiornare solo quel workspace.
|
|
124
|
+
- I pacchetti la cui versione non può essere recuperata (offline, pacchetto privato o non pubblicato) vengono elencati e lasciati invariati.
|
|
125
|
+
- Se l'installazione fallisce, gli intervalli aggiornati vengono conservati in `package.json`. Esegui manualmente il comando di installazione del tuo gestore di pacchetti.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-20
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
4
|
title: 2026年におけるNext.jsの最適なi18nソリューション - ベンチマークレポート
|
|
5
5
|
description: next-intl、next-i18next、IntlayerなどのNext.js国際化(i18n)ライブラリを比較。バンドルサイズ、リーク、反応性に関する詳細なパフォーマンスレポート。
|
|
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: "ベンチマーク結果を更新"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "ベンチマーク結果を更新"
|
|
@@ -213,7 +216,7 @@ GitHubのスターは、プロジェクトの普及度、コミュニティの
|
|
|
213
216
|
|
|
214
217
|
**(Tolgee)** (`@tolgee/react@7.2.0`):
|
|
215
218
|
|
|
216
|
-
`Tolgee`は前述の問題の多くに対処しています。しかし、同様のツールよりも導入が難しいと感じました。型安全性が提供されていないため、コンパイル時に紛失したキーを見つけることも困難です。キーの不備を検出するために、Tolgeeの関数を自前の関数でラップする必要がありました。
|
|
219
|
+
`Tolgee`は前述の問題の多くに対処しています。しかし、同様のツールよりも導入が難しいと感じました。型安全性が提供されていないため、コンパイル時に紛失したキーを見つけることも困難です。キーの不備を検出するために、Tolgeeの関数を自前の関数でラップする必要がありました。 パッケージも比較的重いです(~14.3kb、これは`next-intlayer`の約2.8倍です)。
|
|
217
220
|
|
|
218
221
|
**(Next Intl)** (`next-intl@4.14.2`):
|
|
219
222
|
|
|
@@ -239,7 +242,7 @@ GitHubのスターは、プロジェクトの普及度、コミュニティの
|
|
|
239
242
|
|
|
240
243
|
`t()`スタイルのAPIがお好みなら、`next-translate`が私の主な推奨事項です。`next-translate-plugin`を介して優雅に動作し、Webpack / Turbopackローダーを使用して`getStaticProps`経由でネームスペースをロードします。また、今回の中で最も軽量な選択肢の一つです(約3.5kb)。ネームスぺーシングについては、設定ファイルでページやルートごとにネームスペースを定義する方法がよく考えられており、**next-intl**や**next-i18next**のような主要な選択肢よりもメンテナンスが容易です。バージョン`3.1.2`では、静的レンダリングが機能せず、Next.jsが動的レンダリングにフォールバックすることに気づきました。
|
|
241
244
|
|
|
242
|
-
**(Intlayer)** (`next-intlayer@9.5.
|
|
245
|
+
**(Intlayer)** (`next-intlayer@9.5.6`):
|
|
243
246
|
|
|
244
247
|
客観性を保つため、自分自身のソリューションである`next-intlayer`については個人的な判断を控えさせていただきます。
|
|
245
248
|
|