@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 - Aktualizacja pakietów Intlayer
|
|
5
|
+
description: Dowiedz się, jak używać polecenia upgrade w Intlayer CLI, aby wyświetlić listę wszystkich pakietów Intlayer w projekcie lub monorepo i zaktualizować je do najnowszej wersji.
|
|
6
|
+
keywords:
|
|
7
|
+
- CLI
|
|
8
|
+
- Upgrade
|
|
9
|
+
- Aktualizacja
|
|
10
|
+
- Pakiety
|
|
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: "Dodaj polecenie upgrade"
|
|
22
|
+
author: aymericzip
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Aktualizacja pakietów 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
|
+
Polecenie `upgrade` wyświetla listę pakietów Intlayer zadeklarowanych w każdym pliku `package.json` Twojego projektu, w tym w obszarach roboczych monorepo, i aktualizuje je do najnowszej opublikowanej wersji. Wykonuje samodzielnie ten sam krok aktualizacji pakietów co `intlayer init`.
|
|
44
|
+
|
|
45
|
+
## Argumenty:
|
|
46
|
+
|
|
47
|
+
- `--project-root [projectRoot]` - Opcjonalne. Katalog główny projektu. Domyślnie polecenie rozpoczyna wyszukiwanie od najbliższego pliku `package.json` powyżej bieżącego katalogu roboczego.
|
|
48
|
+
- `--dry-run` - Opcjonalne. Wyświetla listę pakietów i ich wersji docelowych bez modyfikowania jakichkolwiek plików.
|
|
49
|
+
- `--tag <tag>` - Opcjonalne. npm dist-tag, do którego ma nastąpić aktualizacja (np. `canary`). Wartość domyślna to `latest`.
|
|
50
|
+
|
|
51
|
+
## Jak to działa:
|
|
52
|
+
|
|
53
|
+
1. **Wyświetla listę pakietów Intlayer** - Skanuje każdy plik `package.json` w projekcie (pomijając `node_modules` oraz katalogi wyjściowe kompilacji) w poszukiwaniu zależności i devDependencies `intlayer`, `@intlayer/*`, `*-intlayer` oraz `intlayer-*`.
|
|
54
|
+
2. **Pobiera wersję docelową** - Odczytuje wersję wybranego dist-tagu (domyślnie `latest`) dla każdego pakietu z rejestru npm.
|
|
55
|
+
3. **Przepisuje zakresy wersji** - Aktualizuje każdy przestarzały zakres bezpośrednio w pliku, zachowując jego operator (`^`, `~` lub brak) oraz wcięcia pliku.
|
|
56
|
+
4. **Instaluje jednorazowo** - Uruchamia pojedynczą instalację z poziomu katalogu głównego obszaru roboczego (najbliższy katalog z plikiem blokady), używając menedżera pakietów, do którego należy plik blokady:
|
|
57
|
+
|
|
58
|
+
| Plik blokady (Lock file) | Polecenie |
|
|
59
|
+
| ---------------------------------- | -------------- |
|
|
60
|
+
| `bun.lock` / `bun.lockb` | `bun install` |
|
|
61
|
+
| `pnpm-lock.yaml` | `pnpm install` |
|
|
62
|
+
| `yarn.lock` | `yarn install` |
|
|
63
|
+
| `package-lock.json` lub brak pliku | `npm install` |
|
|
64
|
+
|
|
65
|
+
Jeśli nie ma pliku blokady, przed powrotem do npm używane jest pole `packageManager` z pliku `package.json` (na przykład `"bun@1.2.0"`).
|
|
66
|
+
|
|
67
|
+
Zakresy, które nie wskazują na rejestr, takie jak `workspace:*`, `file:`, `link:`, `catalog:` lub adresy URL git, nigdy nie są modyfikowane.
|
|
68
|
+
|
|
69
|
+
## Przykłady:
|
|
70
|
+
|
|
71
|
+
### Wyświetl dostępne aktualizacje bez ich stosowania:
|
|
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
|
+
### Zaktualizuj do wersji 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
|
+
## Przykładowe dane wyjściowe:
|
|
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
|
+
## Uwagi:
|
|
122
|
+
|
|
123
|
+
- Uruchom polecenie z poziomu katalogu głównego repozytorium, aby zaktualizować każdy obszar roboczy. Uruchom je z poziomu danego obszaru roboczego, aby zaktualizować tylko ten obszar roboczy.
|
|
124
|
+
- Pakiety, których wersji nie można pobrać (tryb offline, pakiet prywatny lub nieopublikowany), są wymieniane na liście i pozostawiane bez zmian.
|
|
125
|
+
- Jeśli instalacja się nie powiedzie, zaktualizowane zakresy zostaną zachowane w `package.json`. Uruchom polecenie instalacji menedżera pakietów ręcznie.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-20
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
4
|
title: Melhor solução i18n para Next.js em 2026 - Relatório de Benchmark
|
|
5
5
|
description: Compare bibliotecas de internacionalização (i18n) para Next.js como next-intl, next-i18next e Intlayer. Relatório detalhado de desempenho sobre tamanho do bundle, vazamento e reatividade.
|
|
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: "Atualização dos resultados do benchmark"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Atualização dos resultados do benchmark"
|
|
@@ -213,7 +216,7 @@ Finalmente, em comparação com outras soluções, o Paraglide não usa store (e
|
|
|
213
216
|
|
|
214
217
|
**(Tolgee)** (`@tolgee/react@7.2.0`):
|
|
215
218
|
|
|
216
|
-
O `Tolgee` resolve muitos dos problemas mencionados anteriormente. Achei mais difícil de adotar do que ferramentas semelhantes. Ele não fornece segurança de tipos (type safety), o que também torna mais difícil encontrar chaves ausentes no momento da compilação. Tive que envolver as funções do Tolgee com as minhas para adicionar a detecção de chaves ausentes.
|
|
219
|
+
O `Tolgee` resolve muitos dos problemas mencionados anteriormente. Achei mais difícil de adotar do que ferramentas semelhantes. Ele não fornece segurança de tipos (type safety), o que também torna mais difícil encontrar chaves ausentes no momento da compilação. Tive que envolver as funções do Tolgee com as minhas para adicionar a detecção de chaves ausentes. O pacote também é relativamente pesado (~14.3kb, o que é cerca de 2.8× `next-intlayer`).
|
|
217
220
|
|
|
218
221
|
**(Next Intl)** (`next-intl@4.14.2`):
|
|
219
222
|
|
|
@@ -239,7 +242,7 @@ O `Lingui` é frequentemente elogiado. Pessoalmente, achei o fluxo de trabalho `
|
|
|
239
242
|
|
|
240
243
|
O `next-translate` é minha recomendação principal se você gosta de uma API no estilo `t()`. É elegante via `next-translate-plugin`, carregando namespaces através de `getStaticProps` com um carregador Webpack / Turbopack. É também uma das opções mais leves aqui (~3.5kb). Para os namespaces, definir os namespaces por página ou rota na configuração é bem pensado e mais fácil de manter do que as principais alternativas como **next-intl** ou **next-i18next**. Na versão `3.1.2`, notei que a renderização estática não funcionava; o Next.js recorria à renderização dinâmica.
|
|
241
244
|
|
|
242
|
-
**(Intlayer)** (`next-intlayer@9.5.
|
|
245
|
+
**(Intlayer)** (`next-intlayer@9.5.6`):
|
|
243
246
|
|
|
244
247
|
Não serei eu a julgar pessoalmente o `next-intlayer` por uma questão de objetividade, já que é a minha própria solução.
|
|
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: Melhor solução i18n para Solid em 2026 - Relatório de Benchmark
|
|
5
|
-
description: Compare bibliotecas de internacionalização (i18n) para Solid como solid-primitives, solid-i18next e Intlayer. Relatório de desempenho detalhado sobre tamanho do bundle, vazamento e reatividade.
|
|
5
|
+
description: Compare bibliotecas de internacionalização (i18n) para Solid como solid-primitives, solid-i18next, Tolgee e Intlayer. Relatório de desempenho detalhado sobre tamanho do bundle, vazamento e reatividade.
|
|
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: "Atualização dos resultados do benchmark"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Atualização dos resultados do benchmark"
|
|
@@ -68,6 +71,7 @@ O outro impacto é na experiência do desenvolvedor (DX): como você declara con
|
|
|
68
71
|
- **Intlayer**: Escolha recomendada para aplicações Solid profissionais que precisam de recursos avançados e otimização (v9.5.6).
|
|
69
72
|
- **@solid-primitives/i18n**: Excelente alternativa leve para projetos simples, embora careça de recursos avançados como lazy loading.
|
|
70
73
|
- **solid-i18next**: Opção padrão, mas pesada (~3.5× o Intlayer) com os mesmos pontos negativos do React i18next.
|
|
74
|
+
- **Tolgee**: Plataforma de tradução rica em recursos, mas bastante pesada (~12.7kb, cerca de 3.0× Intlayer), sem primitivas Solid dedicadas (depende de @tolgee/web) e com vazamento considerável entre páginas em configurações estáticas (90% de vazamento de página).
|
|
71
75
|
- **Paraglide**: Abordagem inovadora, mas DX complexa e problemas de tree-shaking em algumas configurações.
|
|
72
76
|
|
|
73
77
|
## Teste seu app
|
|
@@ -103,6 +107,7 @@ Para este benchmark, comparamos as seguintes bibliotecas:
|
|
|
103
107
|
- [`solid-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/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
|
O framework é `Solid` com um app multilíngue de **10 páginas** e **10 idiomas**.
|
|
@@ -147,7 +152,7 @@ Executei o mesmo aplicativo multilíngue em um navegador real para cada stack e
|
|
|
147
152
|
|
|
148
153
|
As estrelas do GitHub são um forte indicador da popularidade de um projeto, da confiança da comunidade e da relevância a longo prazo. Embora não sejam uma medida direta da qualidade técnica, elas refletem quantos desenvolvedores consideram o projeto útil, acompanham seu progresso e têm probabilidade de adotá-lo. Para estimar o valor de um projeto, as estrelas ajudam a comparar a tração entre as alternativas e fornecem insights sobre o crescimento do ecossistema.
|
|
149
154
|
|
|
150
|
-
[](https://star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&aymericzip/intlayer&codingcommons/typesafe-i18n)
|
|
155
|
+
[](https://star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer&codingcommons/typesafe-i18n)
|
|
151
156
|
|
|
152
157
|
## Resultados em detalhes
|
|
153
158
|
|
|
@@ -170,6 +175,18 @@ Ainda assim, compartilha as mesmas principais desvantagens das stacks construíd
|
|
|
170
175
|
O Solid primitive é extremamente leve e eficiente. Recomendo essa solução para projetos leves, mas pode rapidamente carecer de recursos para soluções profissionais que incluam gerenciamento de cookies, redirecionamento de proxy, formatadores etc.
|
|
171
176
|
Também carece de lazy loading e scoping de namespaces para otimização do tamanho da página.
|
|
172
177
|
|
|
178
|
+
**(Tolgee)** (`@tolgee/web@7.2.0`):
|
|
179
|
+
|
|
180
|
+
O `Tolgee` oferece uma plataforma completa de gerenciamento de traduções com recursos de edição in-context.
|
|
181
|
+
|
|
182
|
+
No Solid, atualmente não há um adaptador nativo oficial (como `@tolgee/solid`), exigindo que os desenvolvedores façam a integração via `@tolgee/web` com sinais personalizados.
|
|
183
|
+
|
|
184
|
+
O pacote é relativamente pesado (~12.7kb, cerca de 3.0× `solid-intlayer`).
|
|
185
|
+
|
|
186
|
+
Sem um mecanismo de divisão granular por página no Solid, todas as traduções são carregadas na memória logo na inicialização em configurações estáticas. Isso gera um alto vazamento no bundle (44.5% de vazamento de localidade, 90.0% de vazamento de página) e tamanhos médios de bundle por página de ~91.8kb (em comparação com ~35.8kb para o Intlayer).
|
|
187
|
+
|
|
188
|
+
A reatividade na troca de idioma é muito rápida (0.6ms), aproveitando a reatividade refinada do Solid, embora a sobrecarga de hidratação seja um pouco maior (~5.6ms contra ~3.0ms para o Intlayer).
|
|
189
|
+
|
|
173
190
|
**(Paraglide)** (`@inlang/paraglide-js@2.25.1`):
|
|
174
191
|
|
|
175
192
|
O `Paraglide` oferece uma abordagem inovadora e bem pensada. Ainda assim, neste benchmark, o tree-shaking que a empresa anuncia não funcionou para minha implementação. O fluxo de trabalho e a DX também são mais complexos do que outras opções.
|
|
@@ -178,7 +195,7 @@ Finalmente, em comparação com outras soluções, o Paraglide não usa um store
|
|
|
178
195
|
|
|
179
196
|
### 3 - Recomendações
|
|
180
197
|
|
|
181
|
-
**(Intlayer)** (`solid-intlayer@9.5.
|
|
198
|
+
**(Intlayer)** (`solid-intlayer@9.5.6`):
|
|
182
199
|
|
|
183
200
|
Eu não julgarei pessoalmente o `solid-intlayer` por uma questão de objetividade, já que é minha própria solução.
|
|
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: Melhor solução i18n para Svelte em 2026 - Relatório de Benchmark
|
|
5
|
-
description: Compare bibliotecas de internacionalização (i18n) para Svelte como svelte-i18n, Paraglide e Intlayer. Relatório de desempenho detalhado sobre tamanho do bundle, vazamento e reatividade.
|
|
5
|
+
description: Compare bibliotecas de internacionalização (i18n) para Svelte como svelte-i18n, Paraglide, Tolgee e Intlayer. Relatório de desempenho detalhado sobre tamanho do bundle, vazamento e reatividade.
|
|
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: "Atualização dos resultados do benchmark"
|
|
@@ -67,6 +70,7 @@ O outro impacto é na experiência do desenvolvedor (DX): como você declara con
|
|
|
67
70
|
|
|
68
71
|
- **Intlayer**: A escolha mais eficiente em desempenho (v9.5.6) com o menor footprint.
|
|
69
72
|
- **Paraglide**: Forte candidato para tree-shaking, mas possui uma experiência de desenvolvedor mais complexa e overhead de reatividade.
|
|
73
|
+
- **Tolgee**: Plataforma de tradução rica em recursos com edição in-context, mas bastante pesada (~13.0kb, cerca de 3.6× Intlayer), e em configurações estáticas apresenta vazamento substancial entre páginas (90% de vazamento de página).
|
|
70
74
|
- **svelte-i18n**: Abrangente e padrão para Svelte, mas carrega um peso de bundle muito maior (~4.5× o Intlayer).
|
|
71
75
|
|
|
72
76
|
## Teste seu app
|
|
@@ -101,6 +105,7 @@ Para este benchmark, comparamos as seguintes bibliotecas:
|
|
|
101
105
|
- `Base App` (Sem biblioteca i18n)
|
|
102
106
|
- [`svelte-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/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
|
O framework é `Svelte` com um app multilíngue de **10 páginas** e **10 idiomas**.
|
|
@@ -145,7 +150,7 @@ Executei o mesmo aplicativo multilíngue em um navegador real para cada stack, d
|
|
|
145
150
|
|
|
146
151
|
As estrelas do GitHub são um forte indicador da popularidade de um projeto, da confiança da comunidade e da relevância a longo prazo. Embora não sejam uma medida direta da qualidade técnica, elas refletem quantos desenvolvedores consideram o projeto útil, acompanham seu progresso e têm probabilidade de adotá-lo. Para estimar o valor de um projeto, as estrelas ajudam a comparar a tração entre as alternativas e fornecem insights sobre o crescimento do ecossistema.
|
|
147
152
|
|
|
148
|
-
[](https://star-history.com/#kaisermann/svelte-i18n&opral/paraglide-js&aymericzip/intlayer&codingcommons/typesafe-i18n)
|
|
153
|
+
[](https://star-history.com/#kaisermann/svelte-i18n&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer&codingcommons/typesafe-i18n)
|
|
149
154
|
|
|
150
155
|
## Resultados em detalhes
|
|
151
156
|
|
|
@@ -165,6 +170,16 @@ Finalmente, em comparação com outras soluções, o Paraglide não usa um store
|
|
|
165
170
|
|
|
166
171
|
> Nota sobre o paraglide: a solução injeta código em sua base de código para importações; como resultado, a métrica 'lib size' no relatório de benchmark é quase 0. A geração de código é algo bom, porque a função utilizada incluirá apenas a lógica necessária (prefixo em todos os lugares vs sem prefixo, cookie vs armazenamento, etc.). Em comparação, o Intlayer realiza essa filtragem via injeções de variáveis de ambiente durante o build para forçar o bundler a fazer tree-shaking do conteúdo dependendo da lógica. Graças a isso, o paraglide e o intlayer acabam sendo soluções de 6 a 10 vezes mais leves que o i18next ou o next-intl.
|
|
167
172
|
|
|
173
|
+
**(Tolgee)** (`@tolgee/svelte@7.2.1`):
|
|
174
|
+
|
|
175
|
+
O `Tolgee` oferece uma plataforma completa de localização com edição in-context e integração oficial para o Svelte via `@tolgee/svelte`.
|
|
176
|
+
|
|
177
|
+
O pacote é relativamente pesado (~13.0kb, cerca de 3.6× `svelte-intlayer`).
|
|
178
|
+
|
|
179
|
+
Sem uma divisão granular por página no Svelte, todas as traduções são carregadas na memória logo na inicialização em configurações estáticas. Isso causa um vazamento substancial no bundle (50.0% de vazamento de localidade, 90.0% de vazamento de página) e tamanhos médios de bundle por página de ~100.7kb (em comparação com ~59.0kb para o Intlayer).
|
|
180
|
+
|
|
181
|
+
A reatividade na troca de idioma é muito rápida (0.5ms), beneficiando-se das stores reativas do Svelte, embora a sobrecarga de hidratação seja um pouco maior (~6.2ms contra ~5.5ms para o Intlayer).
|
|
182
|
+
|
|
168
183
|
**(svelte-i18n)** (`svelte-i18n@4.0.1`):
|
|
169
184
|
|
|
170
185
|
Esta solução atende a todas as necessidades de i18n em um projeto Svelte. Mas, como é o caso do i18next ou de outras grandes soluções de i18n, é um pouco pesada (~16.6kb, o que é cerca de 4.5× o `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: Melhor solução i18n para TanStack Start em 2026 - Relatório de Benchmark
|
|
5
5
|
description: Compare bibliotecas de internacionalização para TanStack Start como react-i18next, use-intl e Intlayer. Relatório detalhado de desempenho sobre tamanho do bundle, vazamento e reatividade.
|
|
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: "Atualização dos resultados do benchmark"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Atualização dos resultados do benchmark"
|
|
@@ -200,7 +203,7 @@ O `Paraglide` oferece uma abordagem inovadora e bem pensada. Mesmo assim, neste
|
|
|
200
203
|
|
|
201
204
|
O `Tolgee` resolve muitos dos problemas mencionados anteriormente. Achei mais difícil de começar com ele do que com outras ferramentas com abordagens semelhantes. Ele não fornece segurança de tipos, o que também torna muito difícil encontrar chaves ausentes no momento da compilação. Tive que envolver as APIs do Tolgee com as minhas para adicionar a detecção de chaves ausentes.
|
|
202
205
|
|
|
203
|
-
O package é bastante pesado (~
|
|
206
|
+
O package é bastante pesado (~13.8 kb, o que é mais de 2.9× `react-intlayer`).
|
|
204
207
|
|
|
205
208
|
No TanStack Start também tive problemas de reatividade: na mudança de localidade, tive que forçar o provedor a renderizar novamente e me inscrever em eventos de mudança de localidade para que o carregamento em outro idioma se comportasse corretamente.
|
|
206
209
|
|
|
@@ -234,7 +237,7 @@ O package também é pesado (~15.3kb, o que é cerca de 3× `react-intlayer`).
|
|
|
234
237
|
|
|
235
238
|
Este benchmark do TanStack Start não possui um equivalente direto do `next-translate` (plugin Next.js + `getStaticProps`). Para as equipes que realmente desejam uma API `t()` com um ecossistema maduro, o `react-i18next` e o `use-intl` continuam sendo escolhas "razoáveis", mas espere investir muito tempo otimizando para evitar vazamentos.
|
|
236
239
|
|
|
237
|
-
**(Intlayer)** (`react-intlayer@9.5.
|
|
240
|
+
**(Intlayer)** (`react-intlayer@9.5.6`):
|
|
238
241
|
|
|
239
242
|
Não serei eu a julgar pessoalmente o `react-intlayer` por uma questão de objetividade, já que é a minha própria solução.
|
|
240
243
|
|
package/docs/pt/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: Melhor solução i18n para Vue em 2026 - Relatório de Benchmark
|
|
5
|
-
description: Compare bibliotecas de internacionalização (i18n) para Vue como vue-i18n, fluent-vue e Intlayer. Relatório de desempenho detalhado sobre tamanho do bundle, vazamento e reatividade.
|
|
5
|
+
description: Compare bibliotecas de internacionalização (i18n) para Vue como vue-i18n, fluent-vue, Tolgee e Intlayer. Relatório de desempenho detalhado sobre tamanho do bundle, vazamento e reatividade.
|
|
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: "Atualização dos resultados do benchmark e adição do Tolgee"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Atualização dos resultados do benchmark"
|
|
@@ -66,6 +69,7 @@ O outro impacto é na experiência do desenvolvedor (DX): como você declara con
|
|
|
66
69
|
## TL;DR
|
|
67
70
|
|
|
68
71
|
- **Intlayer**: A solução mais leve (v9.5.6) com escopo (scoping) e carregamento dinâmico integrados.
|
|
72
|
+
- **Tolgee**: Carregamento dinâmico eficaz sem vazamento no modo dinâmico, mas mais pesado (~3.7× Intlayer) e carece de segurança de tipos em tempo de compilação.
|
|
69
73
|
- **vue-i18n**: O padrão da indústria com um rico ecossistema, mas pode se tornar significativamente mais pesado e difícil de otimizar para code-splitting em aplicações de grande porte.
|
|
70
74
|
- **fluent-vue**: Organização de mensagens inovadora, mas carece de segurança de tipos e acaba sendo uma solução extremamente pesada.
|
|
71
75
|
|
|
@@ -103,6 +107,7 @@ Para este benchmark, comparamos as seguintes bibliotecas:
|
|
|
103
107
|
- [`@intlayer/vue-i18n`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/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
|
O framework é `Vue` com um app multilíngue de **10 páginas** e **10 idiomas**.
|
|
108
113
|
|
|
@@ -146,7 +151,7 @@ Executei o mesmo app multilíngue em um navegador real para cada stack e anotei
|
|
|
146
151
|
|
|
147
152
|
As estrelas do GitHub são um forte indicador da popularidade de um projeto, da confiança da comunidade e da relevância a longo prazo. Embora não sejam uma medida direta da qualidade técnica, elas refletem quantos desenvolvedores consideram o projeto útil, acompanham seu progresso e têm probabilidade de adotá-lo. Para estimar o valor de um projeto, as estrelas ajudam a comparar a tração entre as alternativas e fornecem insights sobre o crescimento do ecossistema.
|
|
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
|
## Resultados em detalhes
|
|
152
157
|
|
|
@@ -156,11 +161,15 @@ As estrelas do GitHub são um forte indicador da popularidade de um projeto, da
|
|
|
156
161
|
|
|
157
162
|
### 2 - Soluções aceitáveis
|
|
158
163
|
|
|
164
|
+
**(Tolgee)** (`@tolgee/vue@7.2.0`):
|
|
165
|
+
|
|
166
|
+
O `Tolgee` resolve muitos dos problemas mencionados anteriormente, oferecendo carregamento dinâmico que elimina com sucesso vazamentos de locale e de página (reduzindo o JS da página para ~58.8kb). No entanto, não fornece segurança de tipos em tempo de compilação para chaves nativamente, tornando mais difícil capturar chaves ausentes. Além disso, a biblioteca é relativamente pesada (~13.8kb, o que é cerca de 3.7× `vue-intlayer`).
|
|
167
|
+
|
|
159
168
|
**(vue-i18n)** (`vue-i18n@11.4.0`):
|
|
160
169
|
|
|
161
170
|
- **vue-i18n** é sem contestação a biblioteca i18n mais usada para Vue, possui muitos recursos e um ecossistema enorme. Mas, nos bastidores, a solução é bastante pesada. Mesmo que o vue-i18n integre lazy loading para mensagens, falta um recurso de escopo (scoping). No caso de um app Vue SPA clássico, não há problema, mas para um app Nuxt, usando @nuxt/i18n, isso leva à inclusão das mensagens de todas as páginas em uma única. Para um app Nuxt grande com mais de 10 páginas, isso pode se tornar realmente problemático.
|
|
162
171
|
|
|
163
|
-
O pacote é muito pesado (~24.
|
|
172
|
+
O pacote é muito pesado (~24.1 kb, o que é cerca de 6× o `vue-intlayer`).
|
|
164
173
|
|
|
165
174
|
**(fluent-vue)** (`fluent-vue@3.8.2`):
|
|
166
175
|
|
|
@@ -168,6 +177,6 @@ O pacote é muito pesado (~24.3kb, o que é cerca de 6× o `vue-intlayer`).
|
|
|
168
177
|
|
|
169
178
|
### 3 - Recomendações
|
|
170
179
|
|
|
171
|
-
**(Intlayer)** (`vue-intlayer@9.5.
|
|
180
|
+
**(Intlayer)** (`vue-intlayer@9.5.6`):
|
|
172
181
|
|
|
173
182
|
Eu não julgarei pessoalmente o `vue-intlayer` por uma questão de objetividade, já que é minha própria solução.
|
package/docs/pt/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 - Todos os comandos do CLI Intlayer para o seu site multilíngue
|
|
5
5
|
description: Descubra como utilizar o CLI Intlayer para gerir o seu site multilíngue. Siga os passos nesta documentação online para configurar o seu projeto em poucos minutos.
|
|
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: "Adicionar o comando upgrade"
|
|
20
23
|
- version: 9.5.6
|
|
21
24
|
date: 2026-09-21
|
|
22
25
|
changes: "Adicionar o comando init infra"
|
|
@@ -155,6 +158,7 @@ Para ver como configurar os idiomas disponíveis ou outros parâmetros, consulte
|
|
|
155
158
|
|
|
156
159
|
- **[Inicializar Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/init.md)** - Configure o Intlayer no seu projeto com configuração automática
|
|
157
160
|
- **[Configurar Infraestrutura](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/infra.md)** - Instale o aplicativo desktop ou faça auto-hospedagem do CMS com Docker (tudo-em-um ou Compose)
|
|
161
|
+
- **[Atualizar Pacotes Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/upgrade.md)** - Liste os pacotes Intlayer de cada `package.json` e atualize-os para a versão mais recente
|
|
158
162
|
- **[Gerir Configuração](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/configuration.md)** - Obtenha e envie a sua configuração do Intlayer para o CMS
|
|
159
163
|
|
|
160
164
|
### Gestão de Documentação
|
|
@@ -182,6 +186,7 @@ Para ver como configurar os idiomas disponíveis ou outros parâmetros, consulte
|
|
|
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 - Atualizar pacotes Intlayer
|
|
5
|
+
description: Aprenda a utilizar o comando upgrade do CLI Intlayer para listar todos os pacotes Intlayer do seu projeto ou monorepo e atualizá-los para a versão mais recente.
|
|
6
|
+
keywords:
|
|
7
|
+
- CLI
|
|
8
|
+
- Upgrade
|
|
9
|
+
- Atualizar
|
|
10
|
+
- Pacotes
|
|
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: "Adicionar o comando upgrade"
|
|
22
|
+
author: aymericzip
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Atualizar Pacotes 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
|
+
O comando `upgrade` lista os pacotes Intlayer declarados em cada `package.json` do seu projeto, incluindo workspaces de monorepo, e atualiza-os para a versão publicada mais recente. Executa o mesmo passo de atualização de pacotes que o `intlayer init`, de forma autónoma.
|
|
44
|
+
|
|
45
|
+
## Argumentos:
|
|
46
|
+
|
|
47
|
+
- `--project-root [projectRoot]` - Opcional. O diretório raiz do projeto. Por padrão, o comando inicia a partir do `package.json` mais próximo acima do diretório de trabalho atual.
|
|
48
|
+
- `--dry-run` - Opcional. Lista os pacotes e a respetiva versão de destino sem modificar nenhum ficheiro.
|
|
49
|
+
- `--tag <tag>` - Opcional. A dist-tag npm para a qual atualizar (por exemplo `canary`). O padrão é `latest`.
|
|
50
|
+
|
|
51
|
+
## O que faz:
|
|
52
|
+
|
|
53
|
+
1. **Lista os pacotes Intlayer** - Faz scan a cada `package.json` do projeto (ignorando `node_modules` e saídas de build) à procura de dependências e devDependencies `intlayer`, `@intlayer/*`, `*-intlayer` e `intlayer-*`.
|
|
54
|
+
2. **Obtém a versão de destino** - Lê a versão da dist-tag selecionada (`latest` por padrão) de cada pacote a partir do registo npm.
|
|
55
|
+
3. **Reescreve os intervalos** - Atualiza cada intervalo desatualizado diretamente no ficheiro, mantendo o seu operador (`^`, `~` ou nenhum) e a indentação do ficheiro.
|
|
56
|
+
4. **Instala de uma só vez** - Executa uma única instalação a partir da raiz do workspace (o diretório mais próximo com um lock file), utilizando o gestor de pacotes associado ao 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` ou sem lock | `npm install` |
|
|
64
|
+
|
|
65
|
+
Se não houver nenhum lock file, o campo `packageManager` do `package.json` (por exemplo `"bun@1.2.0"`) é utilizado antes de recorrer ao npm.
|
|
66
|
+
|
|
67
|
+
Intervalos que não apontam para o registo, como `workspace:*`, `file:`, `link:`, `catalog:` ou URLs git, nunca são modificados.
|
|
68
|
+
|
|
69
|
+
## Exemplos:
|
|
70
|
+
|
|
71
|
+
### Listar as atualizações disponíveis sem aplicá-las:
|
|
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
|
+
### Atualizar para a versão 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
|
+
## Exemplo de saída:
|
|
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
|
+
## Notas:
|
|
122
|
+
|
|
123
|
+
- Execute o comando a partir da raiz do seu repositório para atualizar todos os workspaces. Execute-o a partir de um workspace para atualizar apenas esse workspace.
|
|
124
|
+
- Pacotes cuja versão não pode ser obtida (offline, pacote privado ou não publicado) são listados e mantidos inalterados.
|
|
125
|
+
- Se a instalação falhar, os intervalos atualizados são mantidos no `package.json`. Execute manualmente o comando de instalação do seu gestor de pacotes.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-20
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
4
|
title: Лучшее решение i18n для Next.js в 2026 году - Отчет о бенчмарке
|
|
5
5
|
description: Сравните библиотеки интернационализации (i18n) для Next.js, такие как next-intl, next-i18next и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
|
|
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 @@ Intlayer пытается оптимизировать все эти аспек
|
|
|
213
216
|
|
|
214
217
|
**(Tolgee)** (`@tolgee/react@7.2.0`):
|
|
215
218
|
|
|
216
|
-
`Tolgee` решает многие из упомянутых ранее проблем. Мне показалось, что его сложнее внедрить, чем аналогичные инструменты. Он не обеспечивает типобезопасность, что также затрудняет отлов отсутствующих ключей на этапе компиляции. Мне пришлось обернуть функции Tolgee своими собственными, чтобы добавить обнаружение отсутствующих ключей.
|
|
219
|
+
`Tolgee` решает многие из упомянутых ранее проблем. Мне показалось, что его сложнее внедрить, чем аналогичные инструменты. Он не обеспечивает типобезопасность, что также затрудняет отлов отсутствующих ключей на этапе компиляции. Мне пришлось обернуть функции Tolgee своими собственными, чтобы добавить обнаружение отсутствующих ключей. Пакет также относительно тяжелый (~14.3 КБ, что примерно в 2.8 раза больше `next-intlayer`).
|
|
217
220
|
|
|
218
221
|
**(Next Intl)** (`next-intl@4.14.2`):
|
|
219
222
|
|
|
@@ -239,7 +242,7 @@ Intlayer пытается оптимизировать все эти аспек
|
|
|
239
242
|
|
|
240
243
|
`next-translate` - моя основная рекомендация, если вам нравится API в стиле `t()`. Он элегантен благодаря `next-translate-plugin`, загружая пространства имен через `getStaticProps` с помощью загрузчика Webpack / Turbopack. Это также один из самых легких вариантов (~3.5 КБ). Что касается пространств имен, их определение для каждой страницы или маршрута в конфиге хорошо продумано и проще в обслуживании, чем основные альтернативы, такие как **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
|
|