Najlepsze rozwiązanie do internacjonalizacji (i18n) w aplikacjach Next.js
Czy chcesz rozszerzyć swoją aplikację Next.js na nowe rynki? TacoTranslate sprawia, że lokalizacja Twojego projektu Next.js jest niezwykle łatwa, umożliwiając dotarcie do globalnej publiczności bez zbędnych trudności.
Dlaczego warto wybrać TacoTranslate dla Next.js?
- Płynna integracja: Zaprojektowany specjalnie dla aplikacji Next.js, TacoTranslate bez trudu integruje się z Twoim dotychczasowym workflow.
- Automatyczne zbieranie tekstów: Koniec z ręcznym zarządzaniem plikami JSON. TacoTranslate automatycznie zbiera teksty z Twojej bazy kodu.
- Tłumaczenia wspomagane AI: Wykorzystaj moc AI, aby uzyskać kontekstowo trafne tłumaczenia, które pasują do tonu Twojej aplikacji.
- Błyskawiczne wsparcie językowe: Dodaj obsługę nowych języków jednym kliknięciem, czyniąc Twoją aplikację dostępną globalnie.
Jak to działa
W miarę jak świat staje się coraz bardziej globalny, dla twórców stron internetowych staje się coraz ważniejsze tworzenie aplikacji, które mogą obsługiwać użytkowników z różnych krajów i kultur. Jednym z kluczowych sposobów na osiągnięcie tego celu jest internacjonalizacja (i18n), która pozwala dostosować Twoją aplikację do różnych języków, walut i formatów dat.
W tym tutorialu pokażemy, jak dodać internacjonalizację do Twojej aplikacji React Next.js, z użyciem renderowania po stronie serwera. TL;DR: Zobacz pełny przykład tutaj.
Ten przewodnik jest przeznaczony dla aplikacji Next.js korzystających z Pages Router.
Jeśli używasz App Router, zapoznaj się zamiast tego z tym przewodnikiem.
Krok 1: Zainstaluj bibliotekę i18n
Aby zaimplementować internacjonalizację w swojej aplikacji Next.js, najpierw wybierzemy bibliotekę i18n. Istnieje kilka popularnych bibliotek, w tym next-intl. Jednak w tym przykładzie użyjemy TacoTranslate.
TacoTranslate automatycznie tłumaczy Twoje stringi na dowolny język, wykorzystując najnowocześniejszą sztuczną inteligencję, i uwalnia Cię od żmudnego zarządzania plikami JSON.
Zainstalujmy go za pomocą npm w terminalu:
npm install tacotranslate
Krok 2: Załóż darmowe konto TacoTranslate
Teraz, gdy masz już zainstalowany moduł, czas utworzyć konto TacoTranslate, projekt tłumaczeniowy oraz powiązane klucze API. Załóż konto tutaj. To bezpłatne i nie wymaga podawania karty kredytowej.
W interfejsie aplikacji TacoTranslate utwórz projekt i przejdź do zakładki z kluczami API. Utwórz jeden klucz read
oraz jeden klucz read/write
. Zapiszemy je jako zmienne środowiskowe. Klucz read
to tak zwany klucz public
, a klucz read/write
to klucz secret
. Na przykład możesz dodać je do pliku .env
w katalogu głównym swojego projektu.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Upewnij się, że nigdy nie ujawnisz sekretnego klucza API read/write
w środowiskach produkcyjnych po stronie klienta.
Dodamy również dwie dodatkowe zmienne środowiskowe: TACOTRANSLATE_DEFAULT_LOCALE
oraz TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: Domyślny kod lokalizacji zapasowej. W tym przykładzie ustawimy go naen
dla języka angielskiego.TACOTRANSLATE_ORIGIN
: „Folder”, w którym będą przechowywane Twoje ciągi znaków, na przykład adres URL Twojej strony internetowej. Dowiedz się więcej o origins tutaj.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Krok 3: Konfiguracja TacoTranslate
Aby zintegrować TacoTranslate ze swoją aplikacją, musisz utworzyć klienta przy użyciu kluczy API z wcześniejszych. Na przykład utwórz plik o nazwie /tacotranslate-client.js
.
const {default: createTacoTranslateClient} = require('tacotranslate');
const tacoTranslate = createTacoTranslateClient({
apiKey:
process.env.TACOTRANSLATE_SECRET_API_KEY ??
process.env.TACOTRANSLATE_PUBLIC_API_KEY ??
process.env.TACOTRANSLATE_API_KEY ??
'',
projectLocale: process.env.TACOTRANSLATE_DEFAULT_LOCALE ?? '',
});
module.exports = tacoTranslate;
Wkrótce automatycznie zdefiniujemy TACOTRANSLATE_API_KEY
.
Tworzenie klienta w oddzielnym pliku ułatwia jego ponowne użycie w przyszłości. Teraz, korzystając z niestandardowego /pages/_app.tsx
, dodamy dostawcę TacoTranslate
.
import React from 'react';
import {type AppProps} from 'next/app';
import {type Origin, type Locale, type Localizations} from 'tacotranslate';
import TacoTranslate from 'tacotranslate/react';
import TacoTranslateHead from 'tacotranslate/next/head';
import tacoTranslate from '../tacotranslate-client';
type PageProperties = {
origin: Origin;
locale: Locale;
locales: Locale[];
localizations: Localizations;
};
export default function App({Component, pageProps}: AppProps<PageProperties>) {
const {origin, locale, locales, localizations} = pageProps;
return (
<TacoTranslate
client={tacoTranslate}
origin={origin}
locale={locale}
localizations={localizations}
>
<TacoTranslateHead rootUrl="https://your-website.com" locales={locales} />
<Component {...pageProps} />
</TacoTranslate>
);
}
Jeśli masz już niestandardowe pageProps
oraz _app.tsx
, proszę rozszerz definicję o właściwości i kod podany powyżej.
Krok 4: Implementacja renderowania po stronie serwera
TacoTranslate umożliwia renderowanie tłumaczeń po stronie serwera. Znacznie poprawia to doświadczenie użytkownika, pokazując przetłumaczoną treść natychmiast, zamiast najpierw błysku nieprzetłumaczonej zawartości. Dodatkowo możemy pominąć żądania sieciowe po stronie klienta, ponieważ mamy już wszystkie potrzebne tłumaczenia.
Zaczniemy od utworzenia lub modyfikacji pliku /next.config.js
.
const withTacoTranslate = require('tacotranslate/next/config').default;
const tacoTranslateClient = require('./tacotranslate-client');
module.exports = async () => {
const config = {};
return withTacoTranslate(config, {
client: tacoTranslateClient,
isProduction:
process.env.TACOTRANSLATE_ENV === 'production' ||
process.env.VERCEL_ENV === 'production' ||
(!(process.env.TACOTRANSLATE_ENV || process.env.VERCEL_ENV) &&
process.env.NODE_ENV === 'production'),
});
};
Zmodyfikuj test isProduction
, aby dopasować go do swojej konfiguracji. Jeśli true
, TacoTranslate wyświetli publiczny klucz API. Jeśli znajdujemy się w środowisku lokalnym, testowym lub testowym (isProduction
is false
), użyjemy klucza tajnego read/write
API, aby upewnić się, że nowe ciągi są wysyłane do tłumaczenia.
Do tej pory skonfigurowaliśmy aplikację Next.js jedynie z listą obsługiwanych języków. Następnym krokiem będzie pobranie tłumaczeń dla wszystkich Twoich stron. W tym celu użyjesz albo getTacoTranslateStaticProps
, albo getTacoTranslateServerSideProps
, w zależności od Twoich potrzeb.
Te funkcje przyjmują trzy argumenty: jeden obiekt Next.js Static Props Context, konfigurację dla TacoTranslate oraz opcjonalne właściwości Next.js. Zauważ, że revalidate
w getTacoTranslateStaticProps
jest domyślnie ustawione na 60, aby twoje tłumaczenia były na bieżąco.
Aby użyć którejkolwiek z tych funkcji na stronie, załóżmy, że masz plik strony taki jak /pages/hello-world.tsx
.
import {Translate} from 'tacotranslate/react';
import getTacoTranslateStaticProps from 'tacotranslate/next/get-static-props';
import tacoTranslateClient from '../tacotranslate-client';
export async function getStaticProps(context) {
return getTacoTranslateStaticProps(context, {client: tacoTranslateClient});
}
export default function Page() {
return <Translate string="Hello, world!"/>;
}
Teraz powinieneś być w stanie używać komponentu Translate
do tłumaczenia tekstów we wszystkich swoich komponentach React.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Krok 5: Wdróż i przetestuj!
Ukończyliśmy! Twoja aplikacja Next.js będzie teraz automatycznie tłumaczona, gdy dodasz jakiekolwiek ciągi tekstowe do komponentu Translate
. Zwróć uwagę, że tylko środowiska z uprawnieniami read/write
do klucza API będą mogły tworzyć nowe ciągi do przetłumaczenia. Zalecamy posiadanie zamkniętego i zabezpieczonego środowiska staging, w którym możesz testować swoją produkcyjną aplikację z takim kluczem API, dodając nowe ciągi przed uruchomieniem na żywo. Zapobiegnie to kradzieży twojego sekretnego klucza API oraz potencjalnemu rozrostowi projektu tłumaczeń przez dodawanie nowych, niepowiązanych ciągów.
Upewnij się, że sprawdziłeś pełny przykład na naszym profilu GitHub. Znajdziesz tam również przykład, jak to zrobić używając App Router! Jeśli napotkasz jakiekolwiek problemy, śmiało skontaktuj się z nami, a z przyjemnością pomożemy.
TacoTranslate pozwala na automatyczną lokalizację Twoich aplikacji React szybko na dowolny język i z powrotem. Zacznij już dziś!