@intlayer/docs 8.9.6-canary.0 → 8.9.7
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/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/docs/ar/benchmark/nextjs.md +8 -8
- package/docs/ar/benchmark/solid.md +8 -8
- package/docs/ar/benchmark/svelte.md +8 -8
- package/docs/ar/benchmark/tanstack.md +7 -7
- package/docs/ar/benchmark/vue.md +8 -8
- package/docs/ar/interest_of_intlayer.md +107 -80
- package/docs/bn/interest_of_intlayer.md +237 -0
- package/docs/cs/interest_of_intlayer.md +237 -0
- package/docs/de/benchmark/nextjs.md +8 -8
- package/docs/de/benchmark/solid.md +8 -8
- package/docs/de/benchmark/svelte.md +8 -8
- package/docs/de/benchmark/tanstack.md +7 -7
- package/docs/de/benchmark/vue.md +8 -8
- package/docs/de/interest_of_intlayer.md +98 -74
- package/docs/en/benchmark/___nextjs.md +8 -8
- package/docs/en/benchmark/___tanstack.md +6 -6
- package/docs/en/benchmark/nextjs.md +8 -8
- package/docs/en/benchmark/solid.md +8 -8
- package/docs/en/benchmark/svelte.md +8 -8
- package/docs/en/benchmark/tanstack.md +7 -7
- package/docs/en/benchmark/vue.md +8 -8
- package/docs/en/configuration.md +2 -1
- package/docs/en/interest_of_intlayer.md +1 -1
- package/docs/en-GB/benchmark/nextjs.md +8 -8
- package/docs/en-GB/benchmark/solid.md +8 -8
- package/docs/en-GB/benchmark/svelte.md +8 -8
- package/docs/en-GB/benchmark/tanstack.md +7 -7
- package/docs/en-GB/benchmark/vue.md +8 -8
- package/docs/en-GB/configuration.md +2 -1
- package/docs/en-GB/interest_of_intlayer.md +59 -33
- package/docs/es/benchmark/nextjs.md +8 -8
- package/docs/es/benchmark/solid.md +8 -8
- package/docs/es/benchmark/svelte.md +8 -8
- package/docs/es/benchmark/tanstack.md +7 -7
- package/docs/es/benchmark/vue.md +8 -8
- package/docs/es/interest_of_intlayer.md +28 -2
- package/docs/fr/benchmark/nextjs.md +8 -8
- package/docs/fr/benchmark/solid.md +8 -8
- package/docs/fr/benchmark/svelte.md +8 -8
- package/docs/fr/benchmark/tanstack.md +7 -7
- package/docs/fr/benchmark/vue.md +8 -8
- package/docs/fr/interest_of_intlayer.md +47 -21
- package/docs/hi/benchmark/nextjs.md +8 -8
- package/docs/hi/benchmark/solid.md +8 -8
- package/docs/hi/benchmark/svelte.md +8 -8
- package/docs/hi/benchmark/tanstack.md +7 -7
- package/docs/hi/benchmark/vue.md +8 -8
- package/docs/hi/interest_of_intlayer.md +114 -88
- package/docs/id/benchmark/nextjs.md +8 -8
- package/docs/id/benchmark/solid.md +8 -8
- package/docs/id/benchmark/svelte.md +8 -8
- package/docs/id/benchmark/tanstack.md +7 -7
- package/docs/id/benchmark/vue.md +8 -8
- package/docs/id/interest_of_intlayer.md +81 -81
- package/docs/it/benchmark/nextjs.md +8 -8
- package/docs/it/benchmark/solid.md +8 -8
- package/docs/it/benchmark/svelte.md +8 -8
- package/docs/it/benchmark/tanstack.md +7 -7
- package/docs/it/benchmark/vue.md +4 -4
- package/docs/it/interest_of_intlayer.md +96 -69
- package/docs/ja/benchmark/nextjs.md +8 -8
- package/docs/ja/benchmark/solid.md +8 -8
- package/docs/ja/benchmark/svelte.md +8 -8
- package/docs/ja/benchmark/tanstack.md +7 -7
- package/docs/ja/benchmark/vue.md +8 -8
- package/docs/ja/interest_of_intlayer.md +108 -81
- package/docs/ko/benchmark/nextjs.md +8 -8
- package/docs/ko/benchmark/solid.md +8 -8
- package/docs/ko/benchmark/svelte.md +8 -8
- package/docs/ko/benchmark/tanstack.md +7 -7
- package/docs/ko/benchmark/vue.md +8 -8
- package/docs/ko/interest_of_intlayer.md +101 -74
- package/docs/nl/interest_of_intlayer.md +237 -0
- package/docs/pl/benchmark/nextjs.md +8 -8
- package/docs/pl/benchmark/solid.md +8 -8
- package/docs/pl/benchmark/svelte.md +8 -8
- package/docs/pl/benchmark/tanstack.md +7 -7
- package/docs/pl/benchmark/vue.md +8 -8
- package/docs/pl/interest_of_intlayer.md +85 -83
- package/docs/pt/benchmark/nextjs.md +8 -8
- package/docs/pt/benchmark/solid.md +8 -8
- package/docs/pt/benchmark/svelte.md +8 -8
- package/docs/pt/benchmark/tanstack.md +7 -7
- package/docs/pt/benchmark/vue.md +8 -8
- package/docs/pt/interest_of_intlayer.md +91 -67
- package/docs/ru/benchmark/nextjs.md +8 -8
- package/docs/ru/benchmark/solid.md +6 -7
- package/docs/ru/benchmark/svelte.md +8 -8
- package/docs/ru/benchmark/tanstack.md +7 -7
- package/docs/ru/benchmark/vue.md +8 -8
- package/docs/ru/interest_of_intlayer.md +95 -69
- package/docs/tr/benchmark/nextjs.md +8 -8
- package/docs/tr/benchmark/solid.md +8 -8
- package/docs/tr/benchmark/svelte.md +8 -8
- package/docs/tr/benchmark/tanstack.md +7 -7
- package/docs/tr/benchmark/vue.md +8 -8
- package/docs/tr/interest_of_intlayer.md +94 -89
- package/docs/uk/benchmark/nextjs.md +8 -8
- package/docs/uk/benchmark/solid.md +8 -8
- package/docs/uk/benchmark/svelte.md +8 -8
- package/docs/uk/benchmark/tanstack.md +7 -7
- package/docs/uk/benchmark/vue.md +8 -8
- package/docs/uk/interest_of_intlayer.md +94 -96
- package/docs/ur/interest_of_intlayer.md +237 -0
- package/docs/vi/benchmark/nextjs.md +8 -8
- package/docs/vi/benchmark/solid.md +8 -8
- package/docs/vi/benchmark/svelte.md +8 -8
- package/docs/vi/benchmark/tanstack.md +7 -7
- package/docs/vi/benchmark/vue.md +8 -8
- package/docs/vi/interest_of_intlayer.md +82 -79
- package/docs/zh/benchmark/nextjs.md +8 -8
- package/docs/zh/benchmark/solid.md +6 -7
- package/docs/zh/benchmark/svelte.md +7 -7
- package/docs/zh/benchmark/tanstack.md +7 -7
- package/docs/zh/benchmark/vue.md +8 -8
- package/docs/zh/interest_of_intlayer.md +99 -72
- package/docs/zh-TW/interest_of_intlayer.md +237 -0
- package/package.json +6 -6
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-14
|
|
3
3
|
updatedAt: 2025-09-27
|
|
4
|
-
title:
|
|
5
|
-
description: Odkryj korzyści i zalety korzystania z Intlayer w swoich projektach.
|
|
4
|
+
title: Zalety Intlayer
|
|
5
|
+
description: Odkryj korzyści i zalety korzystania z Intlayer w swoich projektach. Dowiedz się, dlaczego Intlayer wyróżnia się na tle innych rozwiązań.
|
|
6
6
|
keywords:
|
|
7
7
|
- Korzyści
|
|
8
8
|
- Zalety
|
|
@@ -13,6 +13,9 @@ slugs:
|
|
|
13
13
|
- doc
|
|
14
14
|
- why
|
|
15
15
|
history:
|
|
16
|
+
- version: 7.3.1
|
|
17
|
+
date: 2025-11-27
|
|
18
|
+
changes: "Wydanie Kompilatora"
|
|
16
19
|
- version: 5.8.0
|
|
17
20
|
date: 2025-08-19
|
|
18
21
|
changes: "Aktualizacja tabeli porównawczej"
|
|
@@ -25,11 +28,11 @@ history:
|
|
|
25
28
|
|
|
26
29
|
## Czym jest Intlayer?
|
|
27
30
|
|
|
28
|
-
**Intlayer** to biblioteka do internacjonalizacji
|
|
31
|
+
**Intlayer** to biblioteka do internacjonalizacji zaprojektowana specjalnie dla programistów JavaScript. Pozwala ona na deklarowanie treści w dowolnym miejscu w kodzie. Przekształca deklaracje treści wielojęzycznych w strukturalne słowniki, które można łatwo zintegrować z kodem. Dzięki zastosowaniu TypeScript, **Intlayer** sprawia, że proces programowania staje się bardziej solidny i wydajny.
|
|
29
32
|
|
|
30
|
-
## Dlaczego
|
|
33
|
+
## Dlaczego powstał Intlayer?
|
|
31
34
|
|
|
32
|
-
Intlayer powstał, aby rozwiązać powszechny problem
|
|
35
|
+
Intlayer powstał, aby rozwiązać powszechny problem dotyczący wszystkich popularnych bibliotek i18n, takich jak `next-intl`, `react-i18next`, `react-intl`, `next-i18next`, `react-intl` czy `vue-i18n`.
|
|
33
36
|
|
|
34
37
|
Wszystkie te rozwiązania stosują scentralizowane podejście do listowania i zarządzania treścią. Na przykład:
|
|
35
38
|
|
|
@@ -46,7 +49,7 @@ Wszystkie te rozwiązania stosują scentralizowane podejście do listowania i za
|
|
|
46
49
|
└── index.tsx
|
|
47
50
|
```
|
|
48
51
|
|
|
49
|
-
Lub
|
|
52
|
+
Lub przy użyciu przestrzeni nazw:
|
|
50
53
|
|
|
51
54
|
```bash
|
|
52
55
|
.
|
|
@@ -67,23 +70,23 @@ Lub tutaj z użyciem przestrzeni nazw:
|
|
|
67
70
|
└── index.tsx
|
|
68
71
|
```
|
|
69
72
|
|
|
70
|
-
Tego typu architektura spowalnia proces
|
|
73
|
+
Tego typu architektura spowalnia proces programowania i komplikuje utrzymanie kodu z kilku powodów:
|
|
71
74
|
|
|
72
|
-
1. **Dla każdego
|
|
75
|
+
1. **Dla każdego nowego komponentu należy:**
|
|
73
76
|
- Utworzyć nowy zasób/przestrzeń nazw w folderze `locales`
|
|
74
|
-
- Pamiętać o zaimportowaniu nowej przestrzeni nazw na
|
|
75
|
-
- Przetłumaczyć
|
|
77
|
+
- Pamiętać o zaimportowaniu nowej przestrzeni nazw na stronie
|
|
78
|
+
- Przetłumaczyć treść (często robione ręcznie poprzez kopiowanie/wklejanie z narzędzi AI)
|
|
76
79
|
|
|
77
|
-
2. **Dla każdej zmiany
|
|
78
|
-
- Wyszukać powiązany zasób/przestrzeń nazw (
|
|
79
|
-
- Przetłumaczyć
|
|
80
|
-
- Upewnić się, że
|
|
81
|
-
- Zweryfikować, czy
|
|
82
|
-
- Upewnić się, że struktura
|
|
80
|
+
2. **Dla każdej zmiany w komponentach należy:**
|
|
81
|
+
- Wyszukać powiązany zasób/przestrzeń nazw (z dala od komponentu)
|
|
82
|
+
- Przetłumaczyć treść
|
|
83
|
+
- Upewnić się, że treść jest aktualna dla wszystkich języków
|
|
84
|
+
- Zweryfikować, czy przestrzeń nazw nie zawiera nieużywanych kluczy/wartości
|
|
85
|
+
- Upewnić się, że struktura plików JSON jest taka sama dla wszystkich języków
|
|
83
86
|
|
|
84
|
-
W profesjonalnych projektach korzystających z tych rozwiązań często używa się platform lokalizacyjnych
|
|
87
|
+
W profesjonalnych projektach korzystających z tych rozwiązań często używa się platform lokalizacyjnych do zarządzania tłumaczeniami. Jednak w przypadku dużych projektów może to szybko stać się kosztowne.
|
|
85
88
|
|
|
86
|
-
Aby rozwiązać ten problem, Intlayer
|
|
89
|
+
Aby rozwiązać ten problem, Intlayer stosuje podejście polegające na ograniczeniu zakresu treści do każdego komponentu i przechowywaniu jej blisko niego, podobnie jak robimy to z CSS (`styled-components`), typami, dokumentacją (`storybook`) czy testami jednostkowymi (`jest`).
|
|
87
90
|
|
|
88
91
|
```bash codeFormat="typescript"
|
|
89
92
|
.
|
|
@@ -142,94 +145,93 @@ export const ComponentExample = () => {
|
|
|
142
145
|
};
|
|
143
146
|
```
|
|
144
147
|
|
|
145
|
-
|
|
148
|
+
Takie podejście pozwala na:
|
|
146
149
|
|
|
147
|
-
1. **Zwiększenie
|
|
150
|
+
1. **Zwiększenie prędkości programowania**
|
|
148
151
|
- Pliki `.content.{{ts|mjs|cjs|json}}` można tworzyć za pomocą rozszerzenia VSCode
|
|
149
|
-
- Narzędzia AI do autouzupełniania w
|
|
152
|
+
- Narzędzia AI do autouzupełniania w IDE (np. GitHub Copilot) mogą pomagać w deklarowaniu treści, ograniczając kopiowanie/wklejanie
|
|
150
153
|
|
|
151
|
-
2. **
|
|
154
|
+
2. **Uporządkowanie kodu**
|
|
152
155
|
- Zmniejszenie złożoności
|
|
153
|
-
- Zwiększenie
|
|
156
|
+
- Zwiększenie łatwości utrzymania
|
|
154
157
|
|
|
155
|
-
3. **Łatwiejsze duplikowanie
|
|
156
|
-
-
|
|
157
|
-
- Poprzez kopiowanie
|
|
158
|
+
3. **Łatwiejsze duplikowanie komponentów wraz z ich treścią (np. komponenty logowania/rejestracji itp.)**
|
|
159
|
+
- Poprzez ograniczenie ryzyka wpływu na treść innych komponentów
|
|
160
|
+
- Poprzez kopiowanie/wklejanie treści z jednej aplikacji do drugiej bez zewnętrznych zależności
|
|
158
161
|
|
|
159
|
-
4. **
|
|
160
|
-
- Jeśli nie używasz komponentu, Intlayer nie zaimportuje
|
|
161
|
-
- Jeśli usuniesz komponent, łatwiej będzie
|
|
162
|
+
4. **Unikanie zaśmiecania kodu nieużywanymi kluczami/wartościami dla nieużywanych komponentów**
|
|
163
|
+
- Jeśli nie używasz komponentu, Intlayer nie zaimportuje powiązanej z nim treści
|
|
164
|
+
- Jeśli usuniesz komponent, łatwiej będzie pamiętać o usunięciu powiązanej z nim treści, ponieważ znajduje się ona w tym samym folderze
|
|
162
165
|
|
|
163
|
-
5. **
|
|
164
|
-
- Agent AI nie będzie musiał skanować
|
|
165
|
-
- Tłumaczenia
|
|
166
|
+
5. **Zmniejszenie kosztów rozumowania dla agentów AI przy deklarowaniu treści wielojęzycznych**
|
|
167
|
+
- Agent AI nie będzie musiał skanować całego kodu, aby wiedzieć, gdzie zaimplementować treść
|
|
168
|
+
- Tłumaczenia można łatwo wykonać za pomocą narzędzi AI do autouzupełniania w IDE (np. GitHub Copilot)
|
|
166
169
|
|
|
167
|
-
6. **
|
|
168
|
-
- Jeśli komponent jest ładowany leniwie (lazy-loaded),
|
|
170
|
+
6. **Optymalizację wydajności ładowania**
|
|
171
|
+
- Jeśli komponent jest ładowany leniwie (lazy-loaded), powiązana z nim treść zostanie załadowana w tym samym czasie
|
|
169
172
|
|
|
170
173
|
## Dodatkowe funkcje Intlayer
|
|
171
174
|
|
|
172
|
-
| Funkcja | Opis
|
|
173
|
-
| ------------------------------------------------------------------------------------------------------------------------- |
|
|
174
|
-
|  | **
|
|
175
|
-
|  | **Zarządzanie treścią oparte na JavaScript**<br><br>Wykorzystaj elastyczność JavaScript do
|
|
176
|
-
|
|
|
177
|
-
|  | **Obsługa wielu frameworków**<br><br>Intlayer jest kompatybilny ze wszystkimi głównymi frameworkami i bibliotekami, w tym Next.js, React, Vite, Vue.js, Nuxt, Preact, Express i innymi. |
|
|
178
|
+
|  | **Zarządzanie treścią oparte na JavaScript**<br><br>Wykorzystaj elastyczność JavaScript do wydajnego definiowania i zarządzania treścią. <br><br> - [Deklarowanie treści](https://intlayer.org/doc/concept/content) |
|
|
179
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Funkcja" width="700"> | **Kompilator**<br><br>Kompilator Intlayer automatycznie wyodrębnia treść z komponentów i generuje pliki słowników.<br><br> - [Kompilator](https://intlayer.org/doc/compiler) |
|
|
180
|
+
|  | **Plik deklaracji treści dla każdego języka**<br><br>Przyspiesz programowanie, deklarując treść raz przed automatycznym generowaniem.<br><br> - [Plik deklaracji treści dla każdego języka](https://intlayer.org/doc/concept/per-locale-file) |
|
|
181
|
+
|  | **Środowisko bezpieczne pod względem typów (Type-Safe)**<br><br>Wykorzystaj TypeScript, aby upewnić się, że definicje treści i kod są wolne od błędów, korzystając jednocześnie z autouzupełniania w IDE.<br><br> - [Konfiguracja TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
|
|
182
|
+
|  | **Uproszczona konfiguracja**<br><br>Szybko rozpocznij pracę dzięki minimalnej konfiguracji. Łatwo dostosuj ustawienia internacjonalizacji, routingu, AI, budowania i obsługi treści. <br><br> - [Poznaj integrację z Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
183
|
+
|  | **Uproszczone pobieranie treści**<br><br>Nie ma potrzeby wywoływania funkcji `t` dla każdego elementu treści. Pobieraj całą treść bezpośrednio za pomocą jednego hooka.<br><br> - [Integracja z React](https://intlayer.org/doc/environment/create-react-app) |
|
|
184
|
+
|  | **Spójna implementacja Server Components**<br><br>Idealnie dopasowana do Next.js Server Components, używaj tej samej implementacji dla komponentów klienckich i serwerowych, bez konieczności przekazywania funkcji `t` przez każdy komponent serwerowy. <br><br> - [Server Components](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
|
|
185
|
+
|  | **Uporządkowany kod**<br><br>Utrzymuj kod w większym porządku: 1 komponent = 1 słownik w tym samym folderze. Tłumaczenia znajdujące się blisko swoich komponentów poprawiają łatwość utrzymania i przejrzystość. <br><br> - [Jak działa Intlayer](https://intlayer.org/doc/concept/how-works-intlayer) |
|
|
186
|
+
|  | **Ulepszony routing**<br><br>Pełne wsparcie dla routingu aplikacji, płynnie dostosowujące się do złożonych struktur aplikacji w Next.js, React, Vite, Vue.js itd.<br><br> - [Poznaj integrację z Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
187
|
+
|  | **Obsługa Markdown**<br><br>Importuj i interpretuj pliki lokalne oraz zdalne pliki Markdown dla treści wielojęzycznych, takich jak polityki prywatności, dokumentacja itp. Interpretuj i udostępniaj metadane Markdown w kodzie.<br><br> - [Pliki treści](https://intlayer.org/doc/concept/content/file) |
|
|
188
|
+
|  | **Darmowy edytor wizualny i CMS**<br><br>Dla autorów treści dostępny jest darmowy edytor wizualny i CMS, eliminujący potrzebę korzystania z platform lokalizacyjnych. Synchronizuj treść za pomocą Git lub całkowicie lub częściowo wyprowadź ją na zewnątrz dzięki CMS.<br><br> - [Edytor Intlayer](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms) |
|
|
189
|
+
|  | **Treść typu Tree-shakable**<br><br>Treść typu tree-shakable, zmniejszająca rozmiar końcowego pakietu. Ładuje treść na poziomie komponentu, wykluczając wszelkie nieużywane treści z pakietu. Obsługuje leniwe ładowanie dla zwiększenia wydajności ładowania aplikacji. <br><br> - [Optymalizacja budowania aplikacji](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
|
|
190
|
+
|  | **Renderowanie statyczne**<br><br>Nie blokuje renderowania statycznego. <br><br> - [Integracja z Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
191
|
+
|  | **Tłumaczenie wspomagane przez AI**<br><br>Przetłumacz swoją stronę na 231 języków jednym kliknięciem, korzystając z zaawansowanych narzędzi tłumaczeniowych AI Intlayer z własnym dostawcą AI/kluczem API. <br><br> - [Integracja CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Auto-fill](https://intlayer.org/doc/concept/auto-fill) |
|
|
192
|
+
|  | **Integracja z Serwerem MCP**<br><br>Zapewnia serwer MCP (Model Context Protocol) do automatyzacji IDE, umożliwiając płynne zarządzanie treścią i przepływy pracy i18n bezpośrednio w środowisku programistycznym. <br><br> - [Serwer MCP](https://github.com/aymericzip/intlayer/blob/main/docs/pl/mcp_server.md) |
|
|
193
|
+
|  | **Rozszerzenie VSCode**<br><br>Intlayer zapewnia rozszerzenie VSCode, które pomaga zarządzać treścią i tłumaczeniami, budować słowniki, tłumaczyć treści i nie tylko. <br><br> - [Rozszerzenie VSCode](https://intlayer.org/doc/vs-code-extension) |
|
|
194
|
+
|  | **Interoperacyjność**<br><br>Umożliwia interoperacyjność z react-i18next, next-i18next, next-intl i react-intl. <br><br> - [Intlayer i react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer i next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer i next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) |
|
|
195
|
+
| Testowanie brakujących tłumaczeń (CLI/CI) | ✅ CLI: npx intlayer content test (audyt przyjazny dla CI) |
|
|
192
196
|
|
|
193
197
|
## Porównanie Intlayer z innymi rozwiązaniami
|
|
194
198
|
|
|
195
|
-
|
|
|
196
|
-
|
|
|
197
|
-
| **Tłumaczenia blisko komponentów**
|
|
198
|
-
| **Integracja z TypeScript**
|
|
199
|
-
| **Wykrywanie brakujących tłumaczeń**
|
|
200
|
-
| **Bogata
|
|
201
|
-
| **Tłumaczenie wspomagane przez AI**
|
|
202
|
-
| **Edytor wizualny**
|
|
203
|
-
| **
|
|
204
|
-
| **
|
|
205
|
-
| **
|
|
206
|
-
| **Formatowanie (daty, liczby, waluty)**
|
|
207
|
-
| **Format treści**
|
|
208
|
-
| **Wsparcie ICU**
|
|
209
|
-
| **
|
|
210
|
-
| **Ekosystem / Społeczność**
|
|
211
|
-
| **
|
|
212
|
-
| **Tree-shaking (ładowanie tylko
|
|
213
|
-
| **Lazy loading**
|
|
214
|
-
| **Usuwanie
|
|
215
|
-
| **Zarządzanie dużymi projektami**
|
|
199
|
+
| Cecha | `intlayer` | `react-i18next` | `react-intl` (FormatJS) | `lingui` | `next-intl` | `next-i18next` | `vue-i18n` |
|
|
200
|
+
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------- |
|
|
201
|
+
| **Tłumaczenia blisko komponentów** | ✅ Tak, treść znajduje się przy każdym komponencie | ❌ Nie | ❌ Nie | ❌ Nie | ❌ Nie | ❌ Nie | ✅ Tak – przy użyciu `Single File Components` (SFCs) |
|
|
202
|
+
| **Integracja z TypeScript** | ✅ Zaawansowana, automatycznie generowane ścisłe typy | ⚠️ Podstawowa; wymaga dodatkowej konfiguracji dla pełnego bezpieczeństwa | ✅ Dobra, ale mniej ścisła | ⚠️ Typowanie wymaga konfiguracji | ✅ Dobra | ⚠️ Podstawowa | ✅ Dobra (typy dostępne; bezpieczeństwo kluczy wymaga konfiguracji) |
|
|
203
|
+
| **Wykrywanie brakujących tłumaczeń** | ✅ Podświetlanie błędów TypeScript oraz błędy/ostrzeżenia w czasie budowania | ⚠️ Głównie ciągi zapasowe (fallback) w czasie wykonywania | ⚠️ Ciągi zapasowe | ⚠️ Wymaga dodatkowej konfiguracji | ⚠️ Fallback w czasie wykonywania | ⚠️ Fallback w czasie wykonywania | ⚠️ Fallback/ostrzeżenia w czasie wykonywania (konfigurowalne) |
|
|
204
|
+
| **Bogata treść (JSX/Markdown/komponenty)** | ✅ Bezpośrednie wsparcie | ⚠️ Ograniczone / tylko interpolacja | ⚠️ Składnia ICU, brak prawdziwego JSX | ⚠️ Ograniczone | ❌ Nie zaprojektowane dla bogatych struktur | ⚠️ Ograniczone | ⚠️ Ograniczone (komponenty przez `<i18n-t>`, Markdown przez pluginy) |
|
|
205
|
+
| **Tłumaczenie wspomagane przez AI** | ✅ Tak, obsługuje wielu dostawców AI. Można używać z własnymi kluczami API. Uwzględnia kontekst aplikacji i zakres treści | ❌ Nie | ❌ Nie | ❌ Nie | ❌ Nie | ❌ Nie | ❌ Nie |
|
|
206
|
+
| **Edytor wizualny** | ✅ Tak, lokalny edytor wizualny + opcjonalny CMS; możliwość wyprowadzenia treści kodu na zewnątrz; możliwość osadzenia | ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne | ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne | ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne | ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne | ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne | ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne |
|
|
207
|
+
| **Zlokalizowany routing** | ✅ Tak, wsparcie dla zlokalizowanych ścieżek "z pudełka" (działa z Next.js i Vite) | ⚠️ Brak wbudowanego, wymaga pluginów (np. `next-i18next`) lub własnej konfiguracji routera | ❌ Nie, tylko formatowanie wiadomości, routing musi być ręczny | ⚠️ Brak wbudowanego, wymaga pluginów lub ręcznej konfiguracji | ✅ Wbudowany, App Router obsługuje segment `[locale]` | ✅ Wbudowany | ✅ Wbudowany |
|
|
208
|
+
| **Dynamiczne generowanie ścieżek** | ✅ Tak | ⚠️ Plugin/ekosystem lub ręczna konfiguracja | ❌ Brak | ⚠️ Plugin/ręcznie | ✅ Tak | ✅ Tak | ❌ Brak (zapewniane przez Nuxt i18n) |
|
|
209
|
+
| **Liczba mnoga** | ✅ Wzorce oparte na wyliczeniach (enums) | ✅ Konfigurowalne (pluginy takie jak i18next-icu) | ✅ (ICU) | ✅ (ICU/messageformat) | ✅ Dobra | ✅ Dobra | ✅ Wbudowane reguły liczby mnogiej |
|
|
210
|
+
| **Formatowanie (daty, liczby, waluty)** | ✅ Zoptymalizowane formatery (Intl pod spodem) | ⚠️ Przez pluginy lub własne użycie Intl | ✅ Formatery ICU | ✅ Helpery ICU/CLI | ✅ Dobra (helpery Intl) | ✅ Dobra (helpery Intl) | ✅ Wbudowane formatery dat/liczb (Intl) |
|
|
211
|
+
| **Format treści** | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml w trakcie prac) | ⚠️ .json | ✅ .json, .js | ⚠️ .po, .json | ✅ .json, .js, .ts | ⚠️ .json | ✅ .json, .js |
|
|
212
|
+
| **Wsparcie ICU** | ⚠️ W trakcie prac | ⚠️ Przez plugin (i18next-icu) | ✅ Tak | ✅ Tak | ✅ Tak | ⚠️ Przez plugin (`i18next-icu`) | ⚠️ Przez własny formater/kompilator |
|
|
213
|
+
| **Helpery SEO (hreflang, sitemap)** | ✅ Wbudowane narzędzia: helpery do sitemap, robots.txt, metadanych | ⚠️ Pluginy społeczności / ręcznie | ❌ Brak w rdzeniu | ❌ Brak w rdzeniu | ✅ Dobra | ✅ Dobra | ❌ Brak w rdzeniu (zapewniane przez Nuxt i18n) |
|
|
214
|
+
| **Ekosystem / Społeczność** | ⚠️ Mniejszy, ale szybko rosnący i responsywny | ✅ Największy i najbardziej dojrzały | ✅ Duży | ⚠️ Mniejszy | ✅ Średniej wielkości, skupiony na Next.js | ✅ Średniej wielkości, skupiony na Next.js | ✅ Duży w ekosystemie Vue |
|
|
215
|
+
| **Server-side Rendering i Server Components** | ✅ Tak, zoptymalizowane pod kątem SSR / React Server Components | ⚠️ Obsługiwane na poziomie strony, ale wymaga przekazywania funkcji `t` w dół drzewa komponentów | ⚠️ Obsługiwane na poziomie strony z dodatkową konfiguracją, ale wymaga przekazywania funkcji `t` w dół drzewa komponentów | ✅ Obsługiwane, wymaga konfiguracji | ⚠️ Obsługiwane na poziomie strony, ale wymaga przekazywania funkcji `t` w dół drzewa komponentów | ⚠️ Obsługiwane na poziomie strony, ale wymaga przekazywania funkcji `t` w dół drzewa komponentów | ✅ Obsługiwane przez Nuxt/Vue SSR (brak RSC) |
|
|
216
|
+
| **Tree-shaking (ładowanie tylko używanej treści)** | ✅ Tak, dla każdego komponentu w czasie budowania przez pluginy Babel/SWC | ⚠️ Zazwyczaj ładuje wszystko (można poprawić przez przestrzenie nazw / code-splitting) | ⚠️ Zazwyczaj ładuje wszystko | ❌ Nie domyślnie | ⚠️ Częściowo | ⚠️ Częściowo | ⚠️ Częściowo (z code-splitting / ręczną konfiguracją) |
|
|
217
|
+
| **Leniwe ładowanie (Lazy loading)** | ✅ Tak, dla każdego języka / słownika | ✅ Tak (np. backendy/przestrzenie nazw na żądanie) | ✅ Tak (dzielenie paczek językowych) | ✅ Tak (dynamiczny import katalogów) | ✅ Tak (na trasę / na język), wymaga zarządzania przestrzeniami nazw | ✅ Tak (na trasę / na język), wymaga zarządzania przestrzeniami nazw | ✅ Tak (asynchroniczne wiadomości językowe) |
|
|
218
|
+
| **Usuwanie nieużywanej treści** | ✅ Tak, dla każdego słownika w czasie budowania | ❌ Nie, tylko przez ręczne dzielenie przestrzeni nazw | ❌ Nie, wszystkie zadeklarowane wiadomości są pakowane | ✅ Tak, nieużywane klucze są wykrywane i usuwane przy budowaniu | ❌ Nie, wymaga ręcznego zarządzania przestrzeniami nazw | ❌ Nie, wymaga ręcznego zarządzania przestrzeniami nazw | ❌ Nie, możliwe tylko przez ręczne leniwe ładowanie |
|
|
219
|
+
| **Zarządzanie dużymi projektami** | ✅ Zachęca do modułowości, odpowiednie dla systemów projektowych (design systems) | ⚠️ Wymaga dużej dyscypliny w organizacji plików | ⚠️ Centralne katalogi mogą stać się bardzo duże | ⚠️ Może stać się skomplikowane | ✅ Modułowość dzięki konfiguracji | ✅ Modułowość dzięki konfiguracji | ✅ Modułowość dzięki konfiguracji Vue Router/Nuxt i18n |
|
|
216
220
|
|
|
217
221
|
---
|
|
218
222
|
|
|
219
|
-
## Gwiazdki
|
|
223
|
+
## Gwiazdki na GitHubie
|
|
220
224
|
|
|
221
|
-
Gwiazdki na
|
|
225
|
+
Gwiazdki na GitHubie są silnym wskaźnikiem popularności projektu, zaufania społeczności i długoterminowego znaczenia. Choć nie są bezpośrednią miarą jakości technicznej, odzwierciedlają, ilu programistów uważa projekt za przydatny, śledzi jego postępy i prawdopodobnie go przyjmie. Przy szacowaniu wartości projektu gwiazdki pomagają porównać zainteresowanie alternatywami i dostarczają wglądu w rozwój ekosystemu.
|
|
222
226
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
[](https://www.star-history.com/#formatjs/formatjs&i18next/react-i18next&i18next/i18next&i18next/next-i18next&lingui/js-lingui&amannn/next-intl&intlify/vue-i18n&opral/monorepo&aymericzip/intlayer)
|
|
227
|
+
[](https://www.star-history.com/#formatjs/formatjs&i18next/react-i18next&i18next/i18next&i18next/next-i18next&lingui/js-lingui&amannn/next-intl&intlify/vue-i18n&opral/paraglide-js&aymericzip/intlayer)
|
|
226
228
|
|
|
227
229
|
---
|
|
228
230
|
|
|
229
231
|
## Interoperacyjność
|
|
230
232
|
|
|
231
|
-
`intlayer` może również pomóc w zarządzaniu
|
|
233
|
+
`intlayer` może również pomóc w zarządzaniu przestrzeniami nazw `react-intl`, `react-i18next`, `next-intl`, `next-i18next` oraz `vue-i18n`.
|
|
232
234
|
|
|
233
|
-
|
|
235
|
+
Korzystając z `intlayer`, możesz zadeklarować swoją treść w formacie ulubionej biblioteki i18n, a intlayer wygeneruje przestrzenie nazw w wybranej przez Ciebie lokalizacji (przykład: `/messages/{{locale}}/{{namespace}}.json`).
|
|
234
236
|
|
|
235
|
-
|
|
237
|
+
Więcej szczegółów znajdziesz w [opcjach `dictionaryOutput` oraz `i18nextResourcesDir`](https://intlayer.org/doc/concept/configuration#content-configuration).
|
|
@@ -36,14 +36,14 @@ Esta página é um relatório de benchmark para soluções i18n no Next.js.
|
|
|
36
36
|
|
|
37
37
|
## Referência de resultados:
|
|
38
38
|
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
<ClickToOpenIframe
|
|
40
|
+
src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-nextjs.md"
|
|
41
|
+
width="100%"
|
|
42
|
+
height="600px"
|
|
43
|
+
style="border:none;"
|
|
44
|
+
/>
|
|
45
45
|
|
|
46
|
-
> https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-nextjs.md
|
|
46
|
+
> [Ver dados completos do benchmark](https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-nextjs.md)
|
|
47
47
|
|
|
48
48
|
Veja o repositório completo do benchmark [aqui](https://github.com/intlayer-org/benchmark-i18n).
|
|
49
49
|
|
|
@@ -72,7 +72,7 @@ O Intlayer tenta otimizar em todas essas dimensões.
|
|
|
72
72
|
|
|
73
73
|
Para trazer à tona esses problemas, construí um scanner gratuito que você pode experimentar [aqui](https://intlayer.org/i18n-seo-scanner).
|
|
74
74
|
|
|
75
|
-
<
|
|
75
|
+
<ClickToOpenIframe src="https://intlayer.org/i18n-seo-scanner" width="100%" height="600px" style="border:none;"/>
|
|
76
76
|
|
|
77
77
|
## O problema
|
|
78
78
|
|
|
@@ -36,14 +36,14 @@ Esta página é um relatório de benchmark para soluções i18n no Solid.
|
|
|
36
36
|
|
|
37
37
|
## Referência de resultados:
|
|
38
38
|
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
<ClickToOpenIframe
|
|
40
|
+
src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_solid.md"
|
|
41
|
+
width="100%"
|
|
42
|
+
height="600px"
|
|
43
|
+
style="border:none;"
|
|
44
|
+
/>
|
|
45
45
|
|
|
46
|
-
> https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_solid.md
|
|
46
|
+
> [Ver dados completos do benchmark](https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_solid.md)
|
|
47
47
|
|
|
48
48
|
Veja o repositório completo do benchmark [aqui](https://github.com/intlayer-org/benchmark-i18n/tree/main).
|
|
49
49
|
|
|
@@ -68,7 +68,7 @@ O outro impacto é na experiência do desenvolvedor (DX): como você declara con
|
|
|
68
68
|
|
|
69
69
|
Para identificar rapidamente problemas de vazamento de i18n, configurei um scanner gratuito disponível [aqui](https://intlayer.org/i18n-seo-scanner).
|
|
70
70
|
|
|
71
|
-
<
|
|
71
|
+
<ClickToOpenIframe src="https://intlayer.org/i18n-seo-scanner" width="100%" height="600px" style="border:none;"/>
|
|
72
72
|
|
|
73
73
|
## O problema
|
|
74
74
|
|
|
@@ -36,14 +36,14 @@ Esta página é um relatório de benchmark para soluções i18n no Svelte.
|
|
|
36
36
|
|
|
37
37
|
## Referência de resultados:
|
|
38
38
|
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
<ClickToOpenIframe
|
|
40
|
+
src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_svelte.md"
|
|
41
|
+
width="100%"
|
|
42
|
+
height="600px"
|
|
43
|
+
style="border:none;"
|
|
44
|
+
/>
|
|
45
45
|
|
|
46
|
-
> https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_svelte.md
|
|
46
|
+
> [Ver dados completos do benchmark](https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_svelte.md)
|
|
47
47
|
|
|
48
48
|
Veja o repositório completo do benchmark [aqui](https://github.com/intlayer-org/benchmark-i18n/tree/main).
|
|
49
49
|
|
|
@@ -67,7 +67,7 @@ O outro impacto é na experiência do desenvolvedor (DX): como você declara con
|
|
|
67
67
|
|
|
68
68
|
Para identificar rapidamente problemas de vazamento de i18n, configurei um scanner gratuito disponível [aqui](https://intlayer.org/i18n-seo-scanner).
|
|
69
69
|
|
|
70
|
-
<
|
|
70
|
+
<ClickToOpenIframe src="https://intlayer.org/i18n-seo-scanner" width="100%" height="600px" style="border:none;"/>
|
|
71
71
|
|
|
72
72
|
## O problema
|
|
73
73
|
|
|
@@ -36,14 +36,14 @@ Esta página é um relatório de benchmark para soluções i18n no TanStack Star
|
|
|
36
36
|
|
|
37
37
|
## Referência de resultados:
|
|
38
38
|
|
|
39
|
-
<
|
|
40
|
-
src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-tanstack.md"
|
|
41
|
-
width="100%"
|
|
39
|
+
<ClickToOpenIframe
|
|
40
|
+
src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-tanstack.md"
|
|
41
|
+
width="100%"
|
|
42
42
|
height="600px"
|
|
43
|
-
style="border:none;"
|
|
44
|
-
|
|
43
|
+
style="border:none;"
|
|
44
|
+
/>
|
|
45
45
|
|
|
46
|
-
> https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-tanstack.md
|
|
46
|
+
> [Ver dados completos do benchmark](https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-tanstack.md)
|
|
47
47
|
|
|
48
48
|
Veja o repositório completo do benchmark [aqui](https://github.com/intlayer-org/benchmark-i18n/tree/main).
|
|
49
49
|
|
|
@@ -68,7 +68,7 @@ O outro impacto é na experência do desenvolvedor: como você declara o conteú
|
|
|
68
68
|
|
|
69
69
|
Para detectar rapidamente problemas de vazamento de i18n, configurei um scanner gratuito disponível [aqui](https://intlayer.org/i18n-seo-scanner).
|
|
70
70
|
|
|
71
|
-
<
|
|
71
|
+
<ClickToOpenIframe src="https://intlayer.org/i18n-seo-scanner" width="100%" height="600px" style="border:none;"/>
|
|
72
72
|
|
|
73
73
|
## O problema
|
|
74
74
|
|
package/docs/pt/benchmark/vue.md
CHANGED
|
@@ -36,14 +36,14 @@ Esta página é um relatório de benchmark para soluções i18n no Vue.
|
|
|
36
36
|
|
|
37
37
|
## Referência de resultados:
|
|
38
38
|
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
<ClickToOpenIframe
|
|
40
|
+
src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_vue.md"
|
|
41
|
+
width="100%"
|
|
42
|
+
height="600px"
|
|
43
|
+
style="border:none;"
|
|
44
|
+
/>
|
|
45
45
|
|
|
46
|
-
> https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_vue.md
|
|
46
|
+
> [Ver dados completos do benchmark](https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_vue.md)
|
|
47
47
|
|
|
48
48
|
Veja o repositório completo do benchmark [aqui](https://github.com/intlayer-org/benchmark-i18n/tree/main).
|
|
49
49
|
|
|
@@ -67,7 +67,7 @@ O outro impacto é na experiência do desenvolvedor (DX): como você declara con
|
|
|
67
67
|
|
|
68
68
|
Para identificar rapidamente problemas de vazamento de i18n, configurei um scanner gratuito disponível [aqui](https://intlayer.org/i18n-seo-scanner).
|
|
69
69
|
|
|
70
|
-
<
|
|
70
|
+
<ClickToOpenIframe src="https://intlayer.org/i18n-seo-scanner" width="100%" height="600px" style="border:none;"/>
|
|
71
71
|
|
|
72
72
|
## O problema
|
|
73
73
|
|