@weglot/translate-react
Przetłumacz swoje
React,
Next.js lub
Vite aplikacja
Bez opakowań typu t(), bez plików JSON. Dodaj wtyczkę do kompilacji oraz klucz API serwisu Weglot : tekst w kodzie JSX zostanie przetłumaczony podczas kompilacji aplikacji, a Twój zespół będzie mógł edytować tłumaczenia na stronie Weglot bez konieczności ingerowania w kod.
Skopiuj polecenie dla · · · zapoznaj się z dokumentacją · zobacz na npm
Ponad 111 368 marek z całego świata powierza firmie Weglot tłumaczenie stron internetowych
// what your users see
Napisany przez Ciebie kod JSX w każdym języku
Wystarczy napisać tekst raz. Weglot tłumaczy go w trakcie kompilacji.
Ten sam przycisk, pięć języków. Szerokości mierzone na bieżąco.
export default function Settings() { return ( <button>Save changes</button> ); } // no key, no t(), no en.json
Żadnych kluczy, żadnego t(). Wpisz tekst w formacie JSX – i to wszystko.
// how it works
Cztery kroki. Twoje komponenty pozostają bez zmian.
Języki źródłowe i docelowe pochodzą z projektu „ Weglot ”, a nie z kodu. Wtyczka odczytuje tekst z pliku JSX w trakcie kompilacji i pobiera jego tłumaczenia.
-
Zainstaluj pakiet i dodaj swój klucz API
Utwórz projekt „ Weglot 2.0”, a następnie skopiuj klucz API z ustawień projektu. Zaczyna się on od
pk_. Zachowaj.envpoza systemem kontroli wersji.terminal · .env$ npm install @weglot/translate-react # .env WEGLOT_API_KEY=pk_your_weglot_api_key
-
Dodaj wtyczkę
Otocz konfigurację Next.js tagami
withWeglot. PunktsourceRootdo folderu, w którym znajdują się Twoje strony i komponenty.Dodaj
weglotPlugindo pliku konfiguracyjnego Vite. W przypadku Webpacka należy zaimportować go z@weglot/translate-react/webpackzamiast tego.next.config.tsimport type { NextConfig } from "next"; import { withWeglot } from "@weglot/translate-react/next"; const nextConfig: NextConfig = {}; export default async function (): Promise<NextConfig> { return await withWeglot(nextConfig, { sourceRoot: "./app" }); }
vite.config.tsimport { defineConfig } from "vite"; import { weglotPlugin } from "@weglot/translate-react/vite"; export default defineConfig({ plugins: [weglotPlugin({ sourceRoot: "src" })], });
-
Dodaj dostawcę
Otocz swój układ główny tagiem
WeglotProviderz punktu wejścia Next.js, dzięki czemu zmiana języka powoduje odświeżenie komponentów serwerowych.Owiń swoją aplikację za pomocą
WeglotProvider, jak najwcześniej.app/layout.tsximport { WeglotProvider } from "@weglot/translate-react/react/next"; export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en"> <body> <WeglotProvider>{children}</WeglotProvider> </body> </html> ); }
src/main.tsximport { WeglotProvider } from "@weglot/translate-react/react"; root.render( <WeglotProvider> <App /> </WeglotProvider>, );
-
Twórz i publikuj w każdym języku używanym w projekcie
Każda kompilacja pobiera brakujące tłumaczenia ze strony Weglot i zapisuje je
public/translations/<locale>.json. Zignoruj ten folder. Dodaj przełącznik języka za pomocąLocaleSwitcherlubuseWeglotContext..gitignorepublic/translations/
// under the hood
Co się dzieje, gdy budujesz
- 01Odczytujekod JSX
- 02 Wysyłanową wiadomość tekstową
- 03Weglot tłumaczenie
- 04Tworzyjeden plik dla każdego języka
// every language of your project
Jedna kompilacja, każdy dodany język
Wybierz języki na stronie Weglot. Zostaną one uwzględnione w kolejnej wersji.
enDodaj język w sekcji „ Weglot ”, a następnie skompiluj aplikację. Pliki tłumaczeń zostaną wdrożone wraz z aplikacją.
// built for coding agents
Twój agent to załatwi
Nie trzeba przerabiać żadnych fragmentów kodu, więc zmiana jest niewielka i łatwa do sprawdzenia.






Dowolny agent do kodowania. Wklej jedno polecenie do agenta, z którego już korzystasz.
Pliki, które mogą odczytywać agenci Docs: indeks llms.txt oraz pliki Markdown dla każdej strony.
package.jsonnext.config.tslayout.tsx.gitignore.envZmiany, które możesz przejrzeć. Żadnych przepisanych ciągów znaków.
Wklej kod Claude’a
Wklej w miejscu kursora (tryb agenta)
Wklej do Codexu$ npm install @weglot/translate-react
Skopiuj polecenie. Postępuj zgodnie z instrukcją zawartą w przewodniku dla początkujących.
// what gets translated
Wtyczka rozpoznaje tekst zawarty w kodzie
export default function Pricing() { return ( <section className="pricing"> <h2>Choose your plan</h2> <input placeholder="Email address" /> <a href="/signup">{"Start free trial"}</a> <span translate="no">Weglot</span> </section> ); }
Tekst został przetłumaczony. Tekst JSX, literały, stałe, atrybuty „alt”, „title”, „placeholder” oraz „aria-label”.
Kod pozostaje bez zmian. Nazwy klas, adresy URL, logika.
Decyzja należy do Ciebie. Możesz pozostawić dowolny element bez zmian lub użyć atrybutu „data-weglot-skip”.
// for your team
Edytuj i sprawdzaj bez ingerencji w kod
Recenzja na stronie Weglot. Treść jest redagowana przez dział produktu, marketingu oraz tłumaczy.
Nie wysyłaj pull requestu tylko po to, by poprawić jedno słowo.
Śledź, co zostało sprawdzone. Sprawdź postępy w nauce każdego języka.
// fit
Kiedy stosować „ Weglot ”, a kiedy nie
Pakiet jest w fazie podglądu. Oto, gdzie obecnie się znajduje.
Router aplikacji Next.js
ObsługiwaneNext.js 15 lub 16.0.4+, React 19.
Vite
ObsługiwaneReact 19, Node 20.9+. Webpack też działa.
Komponenty serwerowe Reacta
ObsługiwaneZmiana języka powoduje odświeżenie komponentów serwera.
Treści CMS i API
ObsługiwaneWraz z tDynamic w komponentach serwerowych Next.js.
Edycja przez osoby niebędące programistami
ObsługiwanePrzejrzyj i edytuj w panelu sterowania „ Weglot ”.
Jeden adres URL na język
Jeszcze nieObecnie język jest zapisany w pliku cookie. Potrzebujesz teraz indeksowanych adresów URL dla poszczególnych języków: skorzystaj z next-intl lub Paraglide JS.
Tłumaczenia w postaci plików repo
Tłumacz akcjęWeglot przetłumaczy Twoje pliki ustawień regionalnych w formacie JSON w GitHub Actions i utworzy pull request. Zobacz dokumentację →
React 18, router Pages
Nie jest obsługiwaneRównież Next.js 14 lub starsze wersje.
CMS lub narzędzie do tworzenia stron internetowych
Nie ta paczkaTwoja strona nie została stworzona w React: skorzystaj z integracji z systemami CMS dostępnych na stronie Weglot.
// compare
A dlaczego nie skorzystać z klasycznej biblioteki i18n?
Biblioteki i18n wymagają zastąpienia każdego ciągu znaków kluczem i utrzymywania jednego pliku dla każdego języka. Program „ Weglot ” odczytuje ciągi znaków, które już zostały napisane. Oto porównanie dostępnych opcji.
| Kryteria | Weglot@weglot/translate-react |
next-intl / i18next | Paraglide JS | Lokalizacja natywna CMS |
|---|---|---|---|---|
| Należy umieścić ciągi znaków w funkcjach typu t() lub funkcjach generujących komunikaty | NieTekst w JSX jest wykrywany w trakcie kompilacji. | Takt("key") dla każdego ciągu znaków. |
Takm.key() funkcje wiadomości. |
Tylko treśćCiągi znaków w kodzie nadal wymagają biblioteki. |
| Pliki tłumaczeń dla poszczególnych języków | Nie ma elementów do utrzymaniaWygenerowano podczas kompilacji, pominięto w git. | TakZazwyczaj jeden plik JSON na każdą lokalizację. | TakJeden plik wiadomości na każdą lokalizację. | Nienie są przechowywane w systemie CMS. |
| Wielojęzyczne przekierowania i SEO (adresy URL dla poszczególnych języków, atrybut hreflang) | Jeszcze nieJęzyk zapisany w pliku cookie. Te same adresy URL dla wszystkich języków, indeksowanie według języka źródłowego. | next-intl: takWbudowane przekierowanie lokalizacyjne. i18next: poprzez konfigurację frameworka. | TakWbudowane zlokalizowane adresy URL: prefiksy regionalne, przetłumaczone ścieżki lub domeny. Tagi hreflang można dodawać samodzielnie. | Interfejs użytkownikaSystem CMS typu headless przechowuje treści według ustawień regionalnych. Adresy URL i atrybuty hreflang pochodzą z interfejsu użytkownika. |
| Tłumaczenia wygenerowane specjalnie dla Ciebie | TakWeglot tłumaczy się za pomocą modelu LLM podczas kompilacji. | NiePrzynieś własne tłumaczenia lub system zarządzania tłumaczeniami (TMS). | Korzystając z narzędziw tłumaczeniu masowym inlang CLI lub za pomocą Twojego agenta programistycznego. | Płatny dodatekTłumaczenie oparte na sztucznej inteligencji w planach płatnych: Contentful AI Actions, Sanity AI Assist, Strapi AI Translations. |
| Edytuj tłumaczenia bez pomocy programisty | TakPrzejrzyj i edytuj w panelu Weglot . | NieEdytuj pliki JSON lub dodaj oddzielny plik TMS. | Dzięki Finkowiw edytorze internetowym inlang, przy użyciu konta GitHub. | TakW edytorze CMS. |
| Utworzone przez agenta programistycznego w ramach jednego polecenia | TakJedna instalacja, dwie zmiany w konfiguracji. Poniżej znajduje się kod do skopiowania. | Długotrwałe zadanieAgent przekształca każdy ciąg znaków w klucze i pliki. | Długie zadanieinit działa bez wyświetlania monitów o podanie agentów, wówczas każdy ciąg znaków staje się m.key() wiadomość. |
nie dotyczySkonfigurowano w systemie CMS. |
FAQ
Czy obsługuje SEO: jeden adres URL na język i atrybut hreflang?
Nie dzisiaj. Język użytkownika jest zapisywany w pliku cookie, a wszystkie wersje językowe są udostępniane pod tymi samymi adresami URL, więc wyszukiwarki indeksują wyłącznie wersję w języku źródłowym.
Możesz przetłumaczyć tytuły stron i opisy za pomocą tDynamicAll w generateMetadata. Jeśli potrzebujesz już teraz zindeksowanych adresów URL dla poszczególnych języków, skorzystaj z biblioteki obsługującej routing oparty na ustawieniach regionalnych, takiej jak next-intl lub Paraglide JS.
Jak przetłumaczyć treści dynamiczne pochodzące z systemu CMS, interfejsu API lub od użytkowników?
Wtyczka tłumaczy wyłącznie tekst zawarty w kodzie. W przypadku treści, do których kod nie ma dostępu, należy wywołać tDynamic, tDynamicAll lub tDynamicHtml z @weglot/translate-react/dynamic w komponentach serwerowych Next.js.
Jeśli wywołanie API trwa dłużej niż 500 ms lub tekst jest żądany po raz pierwszy, zwracany jest tekst źródłowy. Tłumaczenie będzie gotowe przy kolejnym wywołaniu. Jeśli samodzielnie buforujesz dane, dostosuj buforowanie do języka użytkownika.
Next.js czy Vite: co się zmienia?
Next.js wykorzystuje withWeglot z @weglot/translate-react/next oraz WeglotProvider z @weglot/translate-react/react/next. Vite wykorzystuje weglotPlugin z @weglot/translate-react/vite oraz WeglotProvider z @weglot/translate-react/react. Webpack wykorzystuje weglotPlugin z @weglot/translate-react/webpack.
Funkcje dynamicznej treści działają wyłącznie w komponentach serwerowych Next.js.
Czy to działa z komponentami serwerowymi Reacta?
Tak, za pomocą routera aplikacji Next.js. Importuj WeglotProvider z @weglot/translate-react/react/next tak, aby zmiana języka spowodowała odświeżenie komponentów serwera. tDynamic, tDynamicAll oraz tDynamicHtml działają po stronie serwera, w komponentach serwera.
Co się dzieje podczas kompilacji?
Wtyczka wyszukuje tekst w kodzie JSX w sekcji sourceRoot i wysyła zapytanie do interfejsu API Weglot o brakujące tłumaczenia. Serwis Weglot generuje je za pomocą modelu LLM, a proces kompilacji czeka maksymalnie translationTimeout (domyślnie 300 sekund). Następnie zapisuje public/translations/<locale>.json.
Jeśli tłumaczenie się nie powiedzie, kompilacja zakończy się niepowodzeniem, a otrzymane dane zostaną zachowane w lokalnej pamięci podręcznej: należy ponownie uruchomić kompilację, aby kontynuować. Z buildMode: "cache-only", ta kompilacja nie wykonuje żadnych wywołań sieciowych.
Gdzie są przechowywane tłumaczenia?
W projekcie „ Weglot ”, gdzie można je przeglądać i edytować. Każda kompilacja zachowuje również otrzymane tłumaczenia w pliku <sourceRoot>/weglot/cache/<locale>.json. Dodaj ten folder do kompilacji bez wywoływania API albo go zignoruj. public/translations/ jest generowany i trafia do .gitignore.
Co jest tłumaczone i jak mogę coś wykluczyć?
Tekst w JSX, literały łańcuchowe w wyrażeniach JSX, łańcuchy odczytywane ze stałych oraz atrybuty, takie jak title, alt, placeholder oraz aria-label. Kod, adresy URL, nazwy klas i ciągi znaków poza JSX pozostają bez zmian. Dodaj translate="no" lub data-weglot-skip aby zachować element w języku oryginalnym. Zdefiniuj własne właściwości tekstowe za pomocą translatableAttributes.
Spraw, by Twoja aplikacja React była wielojęzyczna bez konieczności jej przepisywania
Zainstaluj pakiet, dodaj swój klucz API i skompiluj.
$ npm install @weglot/translate-react
Wolisz zrobić to samodzielnie? Zapoznaj się z dokumentacją lub sprawdź pakiet na npm