@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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-20
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
4
|
title: Лучшее i18n решение для Solid в 2026 году - Отчет о бенчмарке
|
|
5
|
-
description: Сравните библиотеки интернационализации (i18n) для Solid, такие как solid-primitives, solid-i18next и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
|
|
5
|
+
description: Сравните библиотеки интернационализации (i18n) для Solid, такие как solid-primitives, solid-i18next, Tolgee и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
|
|
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: "Обновление результатов бенчмарка"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Обновление результатов бенчмарка"
|
|
@@ -67,6 +70,7 @@ history:
|
|
|
67
70
|
- **Intlayer**: Рекомендуемый выбор для профессиональных Solid-приложений, требующих расширенных функций и оптимизации (v9.5.6).
|
|
68
71
|
- **@solid-primitives/i18n**: Отличная легкая альтернатива для простых проектов, хотя ей не хватает расширенных функций, таких как ленивая загрузка.
|
|
69
72
|
- **solid-i18next**: Стандартный, но тяжелый вариант (~3.5 раза больше Intlayer) с теми же недостатками, что и React i18next.
|
|
73
|
+
- **Tolgee**: Функциональная платформа переводов, но довольно тяжелая (~12.7 КБ, примерно в 3.0× тяжелее Intlayer), не имеет нативных примитивов для Solid (использует @tolgee/web) и имеет значительные утечки между страницами в статических сборках (90% утечки страниц).
|
|
70
74
|
- **Paraglide**: Инновационный подход, но сложный DX и проблемы с tree-shaking в некоторых конфигурациях.
|
|
71
75
|
|
|
72
76
|
## Проверьте свое приложение
|
|
@@ -102,6 +106,7 @@ history:
|
|
|
102
106
|
- [`solid-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/solid-intlayer/exports.md) (v9.5.6)
|
|
103
107
|
- [`@solid-primitives/i18n`](https://github.com/solidjs-community/solid-primitives/tree/main/packages/i18n) (v2.2.1)
|
|
104
108
|
- [`i18next`](https://github.com/i18next/i18next) (v26.0.8) + [`@mbarzda/solid-i18next`](https://github.com/mbarzda/solid-i18next) (v1.4.1)
|
|
109
|
+
- [`@tolgee/web`](https://github.com/tolgee/tolgee-js) (v7.2.0)
|
|
105
110
|
- [`@inlang/paraglide-js`](https://github.com/opral/paraglide-js) (v2.25.1)
|
|
106
111
|
|
|
107
112
|
Фреймворк - `Solid` с мультиязычным приложением из **10 страниц** и **10 языков**.
|
|
@@ -146,7 +151,7 @@ history:
|
|
|
146
151
|
|
|
147
152
|
Звезды на GitHub - это сильный индикатор популярности проекта, доверия сообщества и долгосрочной актуальности. Хотя они не являются прямым показателем технического качества, они отражают, сколько разработчиков считают проект полезным, следят за его прогрессом и, вероятно, будут его использовать. Для оценки ценности проекта звезды помогают сравнивать популярность альтернатив и дают представление о росте экосистемы.
|
|
148
153
|
|
|
149
|
-
[](https://star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&aymericzip/intlayer)
|
|
154
|
+
[](https://star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer)
|
|
150
155
|
|
|
151
156
|
## Результаты в деталях
|
|
152
157
|
|
|
@@ -169,6 +174,18 @@ history:
|
|
|
169
174
|
Solid primitive чрезвычайно легкий и эффективный. Я рекомендую это решение для небольших проектов, но ему может быстро перестать хватать функций для профессиональных решений, включая управление куки, перенаправление прокси, форматировщики и т. д.
|
|
170
175
|
В нем также отсутствует ленивая загрузка и разделение пространств имен для оптимизации размера страницы.
|
|
171
176
|
|
|
177
|
+
**(Tolgee)** (`@tolgee/web@7.2.0`):
|
|
178
|
+
|
|
179
|
+
`Tolgee` предлагает многофункциональную платформу управления переводами с возможностью контекстного редактирования in-context.
|
|
180
|
+
|
|
181
|
+
В Solid в настоящее время нет официального нативного адаптера (такого как `@tolgee/solid`), поэтому разработчикам приходится интегрировать библиотеку через `@tolgee/web` с пользовательскими сигналами.
|
|
182
|
+
|
|
183
|
+
Пакет довольно тяжелый (~12.7 КБ, что примерно в 3.0× больше `solid-intlayer`).
|
|
184
|
+
|
|
185
|
+
Из-за отсутствия гранулярного разделения страниц в Solid все переводы загружаются в память при старте в статических конфигурациях. Это приводит к сильным утечкам бандла (44.5% утечки локалей, 90.0% утечки страниц) и среднему размеру бандла страницы ~91.8 КБ (по сравнению с ~35.8 КБ у Intlayer).
|
|
186
|
+
|
|
187
|
+
Реактивность при смене языка очень быстрая (0.6 мс), что отлично сочетается с точечной реактивностью Solid, хотя накладные расходы на гидратацию выше (~5.6 мс против ~3.0 мс у Intlayer).
|
|
188
|
+
|
|
172
189
|
**(Paraglide)** (`@inlang/paraglide-js@2.25.1`):
|
|
173
190
|
|
|
174
191
|
`Paraglide` предлагает инновационный, хорошо продуманный подход. Тем не менее, в этом бенчмарке рекламируемый ими tree-shaking не сработал для моей реализации. Процесс работы и DX также сложнее, чем у других вариантов.
|
|
@@ -177,7 +194,7 @@ Solid primitive чрезвычайно легкий и эффективный.
|
|
|
177
194
|
|
|
178
195
|
### 3 - Рекомендации
|
|
179
196
|
|
|
180
|
-
**(Intlayer)** (`solid-intlayer@9.5.
|
|
197
|
+
**(Intlayer)** (`solid-intlayer@9.5.6`):
|
|
181
198
|
|
|
182
199
|
Я не буду лично оценивать `solid-intlayer` ради объективности, так как это мое собственное решение.
|
|
183
200
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-20
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-23
|
|
4
4
|
title: Лучшее i18n решение для Svelte в 2026 году - Отчет о бенчмарке
|
|
5
|
-
description: Сравните библиотеки интернационализации (i18n) для Svelte, такие как svelte-i18n, Paraglide и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
|
|
5
|
+
description: Сравните библиотеки интернационализации (i18n) для Svelte, такие как svelte-i18n, Paraglide, Tolgee и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
|
|
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: "Обновление результатов бенчмарка"
|
|
@@ -67,6 +70,7 @@ style="border:none;"
|
|
|
67
70
|
|
|
68
71
|
- **Intlayer**: Самый эффективный выбор с точки зрения производительности (v9.5.6) с минимальным влиянием на размер.
|
|
69
72
|
- **Paraglide**: Сильный конкурент для tree-shaking, но имеет более сложный опыт разработки и накладные расходы на реактивность.
|
|
73
|
+
- **Tolgee**: Функциональная платформа переводов с возможностью редактирования in-context, но довольно тяжелая (~13.0 КБ, примерно в 3.6× тяжелее Intlayer), с заметными утечками между страницами в статических сборках (90% утечки страниц).
|
|
70
74
|
- **svelte-i18n**: Полнофункциональный и стандартный для Svelte, но имеет гораздо больший вес бандла (~4.5 раз больше Intlayer).
|
|
71
75
|
|
|
72
76
|
## Проверьте свое приложение
|
|
@@ -101,6 +105,7 @@ style="border:none;"
|
|
|
101
105
|
- `Base App` (Без библиотеки i18n)
|
|
102
106
|
- [`svelte-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/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
|
Фреймворк - `Svelte` с мультиязычным приложением из **10 страниц** и **10 языков**.
|
|
@@ -145,7 +150,7 @@ style="border:none;"
|
|
|
145
150
|
|
|
146
151
|
Звезды на GitHub - это сильный индикатор популярности проекта, доверия сообщества и долгосрочной актуальности. Хотя они не являются прямым показателем технического качества, они отражают, сколько разработчиков считают проект полезным, следят за его прогрессом и, вероятно, будут его использовать. Для оценки ценности проекта звезды помогают сравнивать популярность альтернатив и дают представление о росте экосистемы.
|
|
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
|
## Результаты в деталях
|
|
151
156
|
|
|
@@ -165,6 +170,16 @@ style="border:none;"
|
|
|
165
170
|
|
|
166
171
|
> Примечание о paraglide: решение внедряет код в вашу кодовую базу для импорта, в результате чего метрика 'размер библиотеки' в отчете бенчмарка практически равна 0. Генерация кода - это хорошо, потому что используемая функция будет включать только необходимую логику (полный префикс против отсутствия префикса, куки против хранилища и т. д.). Для сравнения, Intlayer выполняет эту фильтрацию с помощью внедрения переменных окружения во время сборки (build time), чтобы заставить бандлер выполнять tree-shaking контента в зависимости от логики. Благодаря этому paraglide и intlayer в итоге оказываются в 6-10 раз легче, чем i18next или next-intl.
|
|
167
172
|
|
|
173
|
+
**(Tolgee)** (`@tolgee/svelte@7.2.1`):
|
|
174
|
+
|
|
175
|
+
`Tolgee` предлагает комплексную платформу локализации с контекстным редактированием in-context и официальной интеграцией со Svelte через `@tolgee/svelte`.
|
|
176
|
+
|
|
177
|
+
Пакет довольно тяжелый (~13.0 КБ, что примерно в 3.6× больше `svelte-intlayer`).
|
|
178
|
+
|
|
179
|
+
Из-за отсутствия гранулярного разделения страниц в Svelte все переводы загружаются в память при старте в статических конфигурациях. Это приводит к существенным утечкам бандла (50.0% утечки локалей, 90.0% утечки страниц) и среднему размеру бандла страницы ~100.7 КБ (по сравнению с ~59.0 КБ у Intlayer).
|
|
180
|
+
|
|
181
|
+
Реактивность при смене языка очень быстрая (0.5 мс) благодаря реактивным хранилищам Svelte, хотя накладные расходы на гидратацию выше (~6.2 мс против ~5.5 мс у Intlayer).
|
|
182
|
+
|
|
168
183
|
**(svelte-i18n)** (`svelte-i18n@4.0.1`):
|
|
169
184
|
|
|
170
185
|
Это решение отвечает всем потребностям i18n в Svelte-проекте. Но, как и в случае с i18next или другими основными решениями i18n, оно немного тяжеловато (~16.6 КБ, что примерно в 4.5 раз больше `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: Лучшее решение i18n для TanStack Start в 2026 году - Отчет о бенчмарке
|
|
5
5
|
description: Сравните библиотеки интернационализации для TanStack Start, такие как react-i18next, use-intl и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
|
|
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: "Обновление результатов бенчмарка"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Обновление результатов бенчмарка"
|
|
@@ -200,7 +203,7 @@ history:
|
|
|
200
203
|
|
|
201
204
|
`Tolgee` решает многие из упомянутых ранее проблем. Мне показалось, что начать работу с ним сложнее, чем с другими инструментами с похожими подходами. Он не обеспечивает типобезопасность, что значительно затрудняет отлов отсутствующих ключей на этапе компиляции. Мне пришлось обернуть API Tolgee своими собственными, чтобы добавить обнаружение отсутствующих ключей.
|
|
202
205
|
|
|
203
|
-
Пакет довольно тяжелый (~
|
|
206
|
+
Пакет довольно тяжелый (~13.8 kb, что более чем в 2.9 раза больше чем `react-intlayer`).
|
|
204
207
|
|
|
205
208
|
На TanStack Start у меня также были проблемы с реактивностью: при смене локали мне приходилось принудительно перерендеривать провайдер и подписываться на события смены локали, чтобы загрузка на другом языке вела себя корректно.
|
|
206
209
|
|
|
@@ -234,7 +237,7 @@ history:
|
|
|
234
237
|
|
|
235
238
|
В этом бенчмарке TanStack Start нет прямого эквивалента `next-translate` (плагин Next.js + `getStaticProps`). Для команд, которые действительно хотят API `t()` со зрелой экосистемой, `react-i18next` и `use-intl` остаются "разумным" выбором, но будьте готовы потратить много времени на оптимизацию, чтобы избежать утечек.
|
|
236
239
|
|
|
237
|
-
**(Intlayer)** (`react-intlayer@9.5.
|
|
240
|
+
**(Intlayer)** (`react-intlayer@9.5.6`):
|
|
238
241
|
|
|
239
242
|
Я не буду лично судить о `react-intlayer` ради объективности, так как это мое собственное решение.
|
|
240
243
|
|
package/docs/ru/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: Лучшее i18n решение для Vue в 2026 году - Отчет о бенчмарке
|
|
5
|
-
description: Сравните библиотеки интернационализации (i18n) для Vue, такие как vue-i18n, fluent-vue и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
|
|
5
|
+
description: Сравните библиотеки интернационализации (i18n) для Vue, такие как vue-i18n, fluent-vue, Tolgee и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
|
|
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: "Обновление результатов бенчмарка и добавление Tolgee"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Обновление результатов бенчмарка"
|
|
@@ -66,6 +69,7 @@ style="border:none;"
|
|
|
66
69
|
## TL;DR
|
|
67
70
|
|
|
68
71
|
- **Intlayer**: Самое легкое решение (v9.5.6) со встроенным разделением (scoping) и динамической загрузкой.
|
|
72
|
+
- **Tolgee**: Эффективная динамическая загрузка с нулевыми утечками в динамическом режиме, но более тяжелое решение (~3.7× Intlayer) без встроенной типобезопасности при компиляции.
|
|
69
73
|
- **vue-i18n**: Индустриальный стандарт с богатой экосистемой, но может быть значительно тяжелее и сложнее в оптимизации для разделения кода в больших приложениях.
|
|
70
74
|
- **fluent-vue**: Инновационная организация сообщений, но не хватает типобезопасности и является чрезвычайно тяжелым решением.
|
|
71
75
|
|
|
@@ -103,6 +107,7 @@ style="border:none;"
|
|
|
103
107
|
- [`@intlayer/vue-i18n`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/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
|
Фреймворк - `Vue` с мультиязычным приложением из **10 страниц** и **10 языков**.
|
|
108
113
|
|
|
@@ -146,7 +151,7 @@ style="border:none;"
|
|
|
146
151
|
|
|
147
152
|
Звезды на GitHub - это сильный индикатор популярности проекта, доверия сообщества и долгосрочной актуальности. Хотя они не являются прямым показателем технического качества, они отражают, сколько разработчиков считают проект полезным, следят за его прогрессом и, вероятно, будут его использовать. Для оценки ценности проекта звезды помогают сравнивать популярность альтернатив и дают представление о росте экосистемы.
|
|
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
|
## Результаты в деталях
|
|
152
157
|
|
|
@@ -156,18 +161,22 @@ style="border:none;"
|
|
|
156
161
|
|
|
157
162
|
### 2 - Приемлемые решения
|
|
158
163
|
|
|
164
|
+
**(Tolgee)** (`@tolgee/vue@7.2.0`):
|
|
165
|
+
|
|
166
|
+
`Tolgee` решает многие из упомянутых ранее проблем, предлагая динамическую загрузку, которая успешно устраняет утечки локалей и страниц (снижая JS страницы примерно до 58.8 КБ). Однако он не обеспечивает встроенной типобезопасности для ключей во время компиляции, что затрудняет обнаружение отсутствующих ключей. Кроме того, размер библиотеки относительно велик (~13.8 КБ, что примерно в 3.7 раза больше `vue-intlayer`).
|
|
167
|
+
|
|
159
168
|
**(vue-i18n)** (`vue-i18n@11.4.0`):
|
|
160
169
|
|
|
161
170
|
- **vue-i18n**, без сомнения, является самой используемой i18n-библиотекой для Vue, у нее много функций и огромная экосистема. Однако внутри это решение довольно тяжелое. Даже если vue-i18n интегрирует ленивую загрузку сообщений, в нем отсутствует функция разделения (scoping). В случае классического Vue SPA приложения это не проблема, но для приложения Nuxt, использующего @nuxt/i18n, это приводит к включению сообщений со всех страниц в одну. Для большого приложения Nuxt, включающего более 10 страниц, это может стать действительно проблематичным.
|
|
162
171
|
|
|
163
|
-
Пакет очень тяжелый (~24.
|
|
172
|
+
Пакет очень тяжелый (~24.1 КБ, что примерно в 6 раз больше `vue-intlayer`).
|
|
164
173
|
|
|
165
174
|
**(fluent-vue)** (`fluent-vue@3.8.2`):
|
|
166
175
|
|
|
167
|
-
- **fluent-vue** предлагает попытку инновации через формат .ftl. Организация сообщений отличная, с ней легче начать работу. Но на практике отсутствие типобезопасности повышает риск ошибок и может быстро стать трудозатратным при отладке. Более того, это решение загружает сообщения с помощью плагина vite, который принудительно загружает весь контент на всех языках в каждую страницу. Кроме того, это чрезвычайно тяжелое решение (~29.7 КБ, что примерно в
|
|
176
|
+
- **fluent-vue** предлагает попытку инновации через формат .ftl. Организация сообщений отличная, с ней легче начать работу. Но на практике отсутствие типобезопасности повышает риск ошибок и может быстро стать трудозатратным при отладке. Более того, это решение загружает сообщения с помощью плагина vite, который принудительно загружает весь контент на всех языках в каждую страницу. Кроме того, это чрезвычайно тяжелое решение (~29.7 КБ, что примерно в 8 раза больше `vue-intlayer`).
|
|
168
177
|
|
|
169
178
|
### 3 - Рекомендации
|
|
170
179
|
|
|
171
|
-
**(Intlayer)** (`vue-intlayer@9.5.
|
|
180
|
+
**(Intlayer)** (`vue-intlayer@9.5.6`):
|
|
172
181
|
|
|
173
182
|
Я не буду лично оценивать `vue-intlayer` ради объективности, так как это мое собственное решение.
|
package/docs/ru/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 - Все команды Intlayer CLI для вашего многоязычного сайта
|
|
5
5
|
description: Узнайте, как использовать Intlayer CLI для управления вашим многоязычным сайтом. Следуйте шагам в этой онлайн-документации, чтобы настроить свой проект за считанные минуты.
|
|
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: "Добавить команду upgrade"
|
|
20
23
|
- version: 9.5.6
|
|
21
24
|
date: 2026-09-21
|
|
22
25
|
changes: "Добавить команду init infra"
|
|
@@ -155,6 +158,7 @@ Intlayer принимает несколько форматов файлов к
|
|
|
155
158
|
|
|
156
159
|
- **[Initialize Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/cli/init.md)** - Настройка Intlayer в вашем проекте с автоматической конфигурацией
|
|
157
160
|
- **[Настройка инфраструктуры](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/cli/infra.md)** - Установите десктопное приложение или запустите CMS на своей инфраструктуре с помощью Docker (all-in-one или Compose)
|
|
161
|
+
- **[Обновление пакетов Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/cli/upgrade.md)** - Вывести список пакетов Intlayer каждого `package.json` и обновить их до последней версии
|
|
158
162
|
- **[Manage Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/cli/configuration.md)** - Получение и отправка вашей конфигурации Intlayer в CMS
|
|
159
163
|
|
|
160
164
|
### Управление документацией
|
|
@@ -182,6 +186,7 @@ Intlayer принимает несколько форматов файлов к
|
|
|
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 - Обновление пакетов Intlayer
|
|
5
|
+
description: Узнайте, как использовать команду upgrade в Intlayer CLI для вывода списка всех пакетов Intlayer вашего проекта или монорепозитория и их обновления до последней версии.
|
|
6
|
+
keywords:
|
|
7
|
+
- CLI
|
|
8
|
+
- Upgrade
|
|
9
|
+
- Обновление
|
|
10
|
+
- Пакеты
|
|
11
|
+
- Монорепозиторий
|
|
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: "Добавить команду upgrade"
|
|
22
|
+
author: aymericzip
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Обновление пакетов 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
|
+
Команда `upgrade` выводит список пакетов Intlayer, объявленных в каждом `package.json` вашего проекта, включая воркспейсы монорепозитория, и обновляет их до последней опубликованной версии. Она автономно выполняет тот же шаг обновления пакетов, что и `intlayer init`.
|
|
44
|
+
|
|
45
|
+
## Аргументы:
|
|
46
|
+
|
|
47
|
+
- `--project-root [projectRoot]` - Необязательно. Корневой каталог проекта. По умолчанию команда начинает поиск с ближайшего `package.json` выше текущего рабочего каталога.
|
|
48
|
+
- `--dry-run` - Необязательно. Выводит список пакетов и их целевую версию без изменения файлов.
|
|
49
|
+
- `--tag <tag>` - Необязательно. npm dist-tag для обновления (например, `canary`). По умолчанию `latest`.
|
|
50
|
+
|
|
51
|
+
## Что делает команда:
|
|
52
|
+
|
|
53
|
+
1. **Составляет список пакетов Intlayer** - Сканирует каждый `package.json` проекта (пропуская `node_modules` и результаты сборки) на наличие зависимостей и dev-зависимостей `intlayer`, `@intlayer/*`, `*-intlayer` и `intlayer-*`.
|
|
54
|
+
2. **Получает целевую версию** - Считывает версию выбранного dist-tag (по умолчанию `latest`) каждого пакета из реестра npm.
|
|
55
|
+
3. **Переписывает диапазоны** - Обновляет каждый устаревший диапазон прямо в файле, сохраняя его оператор (`^`, `~` или без оператора) и форматирование файла.
|
|
56
|
+
4. **Устанавливает за один раз** - Выполняет единую установку из корня воркспейса (ближайшего каталога с lock-файлом), используя пакетный менеджер, которому принадлежит lock-файл:
|
|
57
|
+
|
|
58
|
+
| Lock-файл | Команда |
|
|
59
|
+
| --------------------------- | -------------- |
|
|
60
|
+
| `bun.lock` / `bun.lockb` | `bun install` |
|
|
61
|
+
| `pnpm-lock.yaml` | `pnpm install` |
|
|
62
|
+
| `yarn.lock` | `yarn install` |
|
|
63
|
+
| `package-lock.json` или нет | `npm install` |
|
|
64
|
+
|
|
65
|
+
Если lock-файл отсутствует, используется поле `packageManager` из `package.json` (например, `"bun@1.2.0"`), прежде чем вернуться к npm.
|
|
66
|
+
|
|
67
|
+
Диапазоны, не указывающие на реестр, такие как `workspace:*`, `file:`, `link:`, `catalog:` или git-URL, никогда не изменяются.
|
|
68
|
+
|
|
69
|
+
## Примеры:
|
|
70
|
+
|
|
71
|
+
### Вывести список доступных обновлений без их применения:
|
|
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
|
+
### Обновить до 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
|
+
## Пример вывода:
|
|
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
|
+
## Примечания:
|
|
122
|
+
|
|
123
|
+
- Запустите команду из корня вашего репозитория, чтобы обновить все воркспейсы. Запустите ее из конкретного воркспейса, чтобы обновить только его.
|
|
124
|
+
- Пакеты, версию которых не удалось получить (офлайн, приватный или неопубликованный пакет), выводятся в списке и остаются без изменений.
|
|
125
|
+
- Если установка завершается с ошибкой, обновленные диапазоны сохраняются в `package.json`. Запустите команду установки вашего пакетного менеджера вручную.
|
|
@@ -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'da Next.js için En İyi i18n Çözümü - Benchmark Raporu
|
|
5
5
|
description: next-intl, next-i18next ve Intlayer gibi Next.js uluslararasılaştırma (i18n) kütüphanelerini karşılaştırın. Bundle boyutu, sızıntı ve reaktivite üzerine ayrıntılı performans raporu.
|
|
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: "Benchmark sonuçları güncellendi"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Benchmark sonuçları güncellendi"
|
|
@@ -213,7 +216,7 @@ Son olarak, diğer çözümlerle karşılaştırıldığında Paraglide, içeri
|
|
|
213
216
|
|
|
214
217
|
**(Tolgee)** (`@tolgee/react@7.2.0`):
|
|
215
218
|
|
|
216
|
-
`Tolgee` daha önce bahsedilen sorunların çoğunu ele alıyor. Benzer araçlara göre benimsenmesinin daha zor olduğunu gördüm. Tip güvenliği (type safety) sağlamıyor, bu da eksik anahtarların build zamanında yakalanmasını zorlaştırıyor. Eksik anahtar algılama özelliği eklemek için Tolgee'nin fonksiyonlarını kendi fonksiyonlarımla sarmak zorunda kaldım.
|
|
219
|
+
`Tolgee` daha önce bahsedilen sorunların çoğunu ele alıyor. Benzer araçlara göre benimsenmesinin daha zor olduğunu gördüm. Tip güvenliği (type safety) sağlamıyor, bu da eksik anahtarların build zamanında yakalanmasını zorlaştırıyor. Eksik anahtar algılama özelliği eklemek için Tolgee'nin fonksiyonlarını kendi fonksiyonlarımla sarmak zorunda kaldım. Paket ayrıca nispeten ağırdır (~14.3kb, bu da `next-intlayer` boyutunun yaklaşık 2.8 katıdır).
|
|
217
220
|
|
|
218
221
|
**(Next Intl)** (`next-intl@4.14.2`):
|
|
219
222
|
|
|
@@ -239,7 +242,7 @@ Mesaj formatları da farklıdır: `next-intl` ICU MessageFormat kullanırken, `i
|
|
|
239
242
|
|
|
240
243
|
`t()` stili bir API seviyorsanız `next-translate` ana önerimdir. `next-translate-plugin` aracılığıyla zarif bir şekilde çalışır ve Webpack / Turbopack yükleyicisi ile `getStaticProps` üzerinden ad alanlarını yükler. Ayrıca buradaki en hafif seçeneklerden biridir (~3.5kb). Yapılandırmada sayfa veya rota başına ad alanı tanımlamak iyi düşünülmüştür ve **next-intl** veya **next-i18next** gibi ana alternatiflerden daha kolay bakımı yapılır. `3.1.2` sürümünde statik render'ın çalışmadığını ve Next.js'in dinamik render'a geri döndüğünü fark ettim.
|
|
241
244
|
|
|
242
|
-
**(Intlayer)** (`next-intlayer@9.5.
|
|
245
|
+
**(Intlayer)** (`next-intlayer@9.5.6`):
|
|
243
246
|
|
|
244
247
|
Nesnellik adına kendi çözümüm olan `next-intlayer` hakkında kişisel olarak yorum yapmayacağım.
|
|
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: 2026'da Solid için En İyi i18n Çözümü - Benchmark Raporu
|
|
5
|
-
description: solid-primitives, solid-i18next ve Intlayer gibi Solid uluslararasılaştırma (i18n) kütüphanelerini karşılaştırın. Bundle boyutu, sızıntı ve reaktivite üzerine ayrıntılı performans raporu.
|
|
5
|
+
description: solid-primitives, solid-i18next, Tolgee ve Intlayer gibi Solid uluslararasılaştırma (i18n) kütüphanelerini karşılaştırın. Bundle boyutu, sızıntı ve reaktivite üzerine ayrıntılı performans raporu.
|
|
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: "Benchmark sonuçları güncellendi"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Benchmark sonuçları güncellendi"
|
|
@@ -68,6 +71,7 @@ Diğer etki geliştirici deneyimi (DX) üzerindedir: içeriği nasıl tanımlad
|
|
|
68
71
|
- **Intlayer**: Gelişmiş özelliklere ve optimizasyona ihtiyaç duyan profesyonel Solid uygulamaları için önerilen seçim (v9.5.6).
|
|
69
72
|
- **@solid-primitives/i18n**: Basit projeler için mükemmel hafif bir alternatif, ancak lazy loading gibi gelişmiş özelliklerden yoksundur.
|
|
70
73
|
- **solid-i18next**: Standart ancak ağır bir seçenek (~3.5x Intlayer), React i18next ile aynı dezavantajlara sahiptir.
|
|
74
|
+
- **Tolgee**: Zengin özellikli çeviri platformu, ancak oldukça ağır (~12.7kb, Intlayer'ın yaklaşık 3.0 katı), yerel Solid primitiflerinden yoksun (@tolgee/web kullanır) ve statik kurulumlarda sayfalar arası belirgin sızıntı gösterir (%90 sayfa sızıntısı).
|
|
71
75
|
- **Paraglide**: Yenilikçi yaklaşım ancak karmaşık DX ve bazı kurulumlarda tree-shaking sorunları.
|
|
72
76
|
|
|
73
77
|
## Uygulamanızı test edin
|
|
@@ -103,6 +107,7 @@ Bu benchmark için aşağıdaki kütüphaneleri karşılaştırdık:
|
|
|
103
107
|
- [`solid-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/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
|
Framework, **10 sayfa** ve **10 dilden** oluşan çok dilli bir uygulamaya sahip `Solid`'dir.
|
|
@@ -147,7 +152,7 @@ Aynı çok dilli uygulamayı her stack için gerçek bir tarayıcıda çalışt
|
|
|
147
152
|
|
|
148
153
|
GitHub yıldızları, bir projenin popülerliğinin, topluluk güveninin ve uzun vadeli alakasının güçlü bir göstergesidir. Teknik kalitenin doğrudan bir ölçüsü olmasa da, kaç geliştiricinin projeyi yararlı bulduğunu, ilerlemesini takip ettiğini ve benimseme olasılığını yansıtır. Bir projenin değerini tahmin etmek için yıldızlar, alternatifler arasındaki çekişi karşılaştırmaya yardımcı olur ve ekosistem büyümesi hakkında içgörüler sağlar.
|
|
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
|
## Detaylı sonuçlar
|
|
153
158
|
|
|
@@ -170,6 +175,18 @@ Yine de, `t('a.b.c')` üzerine kurulu yığınlarla aynı ana dezavantajları pa
|
|
|
170
175
|
Solid primitive son derece hafif ve verimlidir. Bu çözümü hafif projeler için öneriyorum, ancak çerez yönetimi, proxy yönlendirme, formatlayıcılar vb. dahil profesyonel çözümler için özellikleri hızla yetersiz kalabilir.
|
|
171
176
|
Ayrıca sayfa boyutu optimizasyonu için lazy loading ve kapsamlı namespace özellikleri de eksiktir.
|
|
172
177
|
|
|
178
|
+
**(Tolgee)** (`@tolgee/web@7.2.0`):
|
|
179
|
+
|
|
180
|
+
`Tolgee`, bağlam içi (in-context) düzenleme özelliklerine sahip kapsamlı bir çeviri yönetim platformu sunar.
|
|
181
|
+
|
|
182
|
+
Solid üzerinde şu anda resmi bir yerel bağdaştırıcı (`@tolgee/solid` gibi) bulunmamaktadır; bu nedenle geliştiricilerin özel sinyallerle `@tolgee/web` üzerinden entegrasyon yapması gerekir.
|
|
183
|
+
|
|
184
|
+
Paket oldukça ağırdır (~12.7kb, `solid-intlayer`'ın yaklaşık 3.0 katı).
|
|
185
|
+
|
|
186
|
+
Solid'de sayfa başına ayrıntılı bölme mekanizması olmadan, statik kurulumlarda tüm çeviriler başlangıçta belleğe yüklenir. Bu durum yüksek paket sızıntısına (%44.5 dil sızıntısı, %90.0 sayfa sızıntısı) ve ortalama ~91.8kb sayfa paketi boyutuna yol açar (Intlayer için ~35.8kb).
|
|
187
|
+
|
|
188
|
+
Dil değiştirme reaktivitesi son derece hızlıdır (0.6ms), Solid'in hassas reaktivitesine tam uyum sağlar; ancak hidrasyon ek yükü biraz daha yüksektir (Intlayer için ~3.0ms iken ~5.6ms).
|
|
189
|
+
|
|
173
190
|
**(Paraglide)** (`@inlang/paraglide-js@2.25.1`):
|
|
174
191
|
|
|
175
192
|
`Paraglide` yenilikçi ve iyi düşünülmüş bir yaklaşım sunuyor. Buna rağmen, bu benchmark'ta şirketlerinin reklamını yaptığı tree-shaking benim uygulamam için çalışmadı. İş akışı ve DX de diğer seçeneklerden daha karmaşıktır.
|
|
@@ -178,7 +195,7 @@ Son olarak, diğer çözümlerle karşılaştırıldığında Paraglide, içeri
|
|
|
178
195
|
|
|
179
196
|
### 3 - Öneriler
|
|
180
197
|
|
|
181
|
-
**(Intlayer)** (`solid-intlayer@9.5.
|
|
198
|
+
**(Intlayer)** (`solid-intlayer@9.5.6`):
|
|
182
199
|
|
|
183
200
|
Kendi çözümüm olduğu için tarafsızlık adına `solid-intlayer`'ı kişisel olarak yargılamayacağım.
|
|
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: 2026'da Svelte için En İyi i18n Çözümü - Benchmark Raporu
|
|
5
|
-
description: svelte-i18n, Paraglide ve Intlayer gibi Svelte uluslararasılaştırma (i18n) kütüphanelerini karşılaştırın. Bundle boyutu, sızıntı ve reaktivite üzerine ayrıntılı performans raporu.
|
|
5
|
+
description: svelte-i18n, Paraglide, Tolgee ve Intlayer gibi Svelte uluslararasılaştırma (i18n) kütüphanelerini karşılaştırın. Bundle boyutu, sızıntı ve reaktivite üzerine ayrıntılı performans raporu.
|
|
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: "Benchmark sonuçları güncellendi"
|
|
@@ -67,6 +70,7 @@ Diğer etki geliştirici deneyimi (DX) üzerindedir: içeriği nasıl tanımlad
|
|
|
67
70
|
|
|
68
71
|
- **Intlayer**: En küçük ayak izine sahip en performans odaklı seçim (v9.5.6).
|
|
69
72
|
- **Paraglide**: Tree-shaking için güçlü bir rakip ancak daha karmaşık bir geliştirici deneyimine ve reaktivite yüküne sahip.
|
|
73
|
+
- **Tolgee**: Bağlam içi düzenleme özelliklerine sahip zengin özellikli çeviri platformu, ancak oldukça ağır (~13.0kb, Intlayer'ın yaklaşık 3.6 katı) ve statik kurulumlarda sayfalar arası belirgin sızıntı gösterir (%90 sayfa sızıntısı).
|
|
70
74
|
- **svelte-i18n**: Svelte için kapsamlı ve standart, ancak çok daha büyük paket ağırlığı taşıyor (~4.5x Intlayer).
|
|
71
75
|
|
|
72
76
|
## Uygulamanızı test edin
|
|
@@ -101,6 +105,7 @@ Bu benchmark için aşağıdaki kütüphaneleri karşılaştırdık:
|
|
|
101
105
|
- `Base App` (i18n kütüphanesi yok)
|
|
102
106
|
- [`svelte-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/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
|
Framework, **10 sayfa** ve **10 dilden** oluşan çok dilli bir uygulamaya sahip `Svelte`'dir.
|
|
@@ -145,7 +150,7 @@ Aynı çok dilli uygulamayı her stack için gerçek bir tarayıcıda çalışt
|
|
|
145
150
|
|
|
146
151
|
GitHub yıldızları, bir projenin popülerliğinin, topluluk güveninin ve uzun vadeli alakasının güçlü bir göstergesidir. Teknik kalitenin doğrudan bir ölçüsü olmasa da, kaç geliştiricinin projeyi yararlı bulduğunu, ilerlemesini takip ettiğini ve benimseme olasılığını yansıtır. Bir projenin değerini tahmin etmek için yıldızlar, alternatifler arasındaki çekişi karşılaştırmaya yardımcı olur ve ekosistem büyümesi hakkında içgörüler sağlar.
|
|
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
|
## Detaylı sonuçlar
|
|
151
156
|
|
|
@@ -165,6 +170,16 @@ Son olarak, diğer çözümlerle karşılaştırıldığında Paraglide, içeri
|
|
|
165
170
|
|
|
166
171
|
> Paraglide üzerine not: çözüm, importlar için kod tabanınıza kod enjekte eder; sonuç olarak, benchmark raporundaki 'lib size' metriği neredeyse 0'dır. Kod üretimi iyi bir şeydir, çünkü kullanılan fonksiyon yalnızca gerekli mantığı (her yerde ön ek vs ön ek yok, çerez vs depolama vb.) içerecektir. Karşılaştırma yapıldığında, Intlayer bu filtrelemeyi mantığa bağlı olarak içeriği tree-shaking yapmaya zorlamak için build sırasında ortam değişkeni enjeksiyonları yoluyla gerçekleştirir. Bu sayede paraglide ve intlayer i18next veya next-intl'den 6 ila 10 kat daha hafif çözümler haline gelir.
|
|
167
172
|
|
|
173
|
+
**(Tolgee)** (`@tolgee/svelte@7.2.1`):
|
|
174
|
+
|
|
175
|
+
`Tolgee`, bağlam içi (in-context) düzenleme ve `@tolgee/svelte` aracılığıyla resmi Svelte entegrasyonu sunan hepsi bir arada bir yerelleştirme platformudur.
|
|
176
|
+
|
|
177
|
+
Paket oldukça ağırdır (~13.0kb, `svelte-intlayer`'ın yaklaşık 3.6 katı).
|
|
178
|
+
|
|
179
|
+
Svelte'te sayfa başına ayrıntılı bölme mekanizması olmadan, statik kurulumlarda tüm çeviriler başlangıçta belleğe yüklenir. Bu durum yüksek paket sızıntısına (%50.0 dil sızıntısı, %90.0 sayfa sızıntısı) ve ortalama ~100.7kb sayfa paketi boyutuna yol açar (Intlayer için ~59.0kb).
|
|
180
|
+
|
|
181
|
+
Dil değiştirme reaktivitesi son derece hızlıdır (0.5ms), Svelte'in reaktif depolarından yararlanır; ancak hidrasyon ek yükü biraz daha yüksektir (Intlayer için ~5.5ms iken ~6.2ms).
|
|
182
|
+
|
|
168
183
|
**(svelte-i18n)** (`svelte-i18n@4.0.1`):
|
|
169
184
|
|
|
170
185
|
Bu çözüm, bir Svelte projesindeki tüm i18n ihtiyaçlarını karşılar. Ancak i18next veya diğer büyük i18n çözümlerinde olduğu gibi, biraz ağırdır (~16.6kb, bu da `svelte-intlayer`'ın yaklaşık 4.5 katıdır).
|
|
@@ -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'da TanStack Start için En İyi i18n Çözümü - Benchmark Raporu
|
|
5
5
|
description: react-i18next, use-intl ve Intlayer gibi TanStack Start uluslararasılaştırma kütüphanelerini karşılaştırın. Bundle boyutu, sızıntı ve reaktivite üzerine ayrıntılı performans raporu.
|
|
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: "Benchmark sonuçları güncellendi"
|
|
20
23
|
- version: 9.5.1
|
|
21
24
|
date: 2026-09-11
|
|
22
25
|
changes: "Benchmark sonuçları güncellendi"
|
|
@@ -200,7 +203,7 @@ Karşılaşılan sorunlar:
|
|
|
200
203
|
|
|
201
204
|
`Tolgee` daha önce bahsedilen sorunların çoğunu ele alıyor. Benzer yaklaşımlara sahip diğer araçlara göre başlamasının daha zor olduğunu gördüm. Tip güvenliği sağlamıyor, bu da eksik anahtarların build zamanında yakalanmasını çok zorlaştırıyor. Eksik anahtar algılama özelliği eklemek için Tolgee'nin API'larını kendi API'larımla sarmak zorunda kaldım.
|
|
202
205
|
|
|
203
|
-
Package oldukça ağır (~
|
|
206
|
+
Package oldukça ağır (~13.8 kb, bu `react-intlayer`'ın 2× katından fazladır).
|
|
204
207
|
|
|
205
208
|
TanStack Start üzerinde de reaktivite problemlerim oldu: yerel ayar değiştiğinde, sağlayıcıyı yeniden render etmeye zorlamam ve yerel ayar değişikliği olaylarına abone olmam gerekiyordu, böylece başka bir dildeki yükleme düzgün davrandı.
|
|
206
209
|
|
|
@@ -234,7 +237,7 @@ Paket ayrıca ağırdır (~15.3kb, bu yaklaşık 3× `react-intlayer`).
|
|
|
234
237
|
|
|
235
238
|
Bu TanStack Start benchmark'ının `next-translate` (Next.js eklentisi + `getStaticProps`) için doğrudan bir karşılığı yoktur. Gerçekten olgun bir ekosisteme sahip bir `t()` API'si isteyen ekipler için `react-i18next` ve `use-intl` "makul" seçenekler olmaya devam ediyor, ancak sızıntıyı önlemek için optimizasyon yapmaya çok zaman ayırmaya hazırlıklı olun.
|
|
236
239
|
|
|
237
|
-
**(Intlayer)** (`react-intlayer@9.5.
|
|
240
|
+
**(Intlayer)** (`react-intlayer@9.5.6`):
|
|
238
241
|
|
|
239
242
|
Nesnellik adına kendi çözümüm olan `react-intlayer` hakkında kişisel olarak yorum yapmayacağım.
|
|
240
243
|
|