0Pricing
React Academy · Lekcja

Używanie hooka useTranslation

Zastępowanie zakodowanych na stałe ciągów wywołaniami t() oraz porządkowanie plików JSON z tłumaczeniami.

Używanie hooka useTranslation to bezpłatna lekcja React Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Wprowadzenie

W tej lekcji użyją Państwo hooka useTranslation, aby uzyskać dostęp do funkcji t(), tłumaczyć ciągi znaków w komponentach oraz porządkować pliki tłumaczeń JSON według przestrzeni nazw.

Hook useTranslation

Proszę wywołać useTranslation() wewnątrz komponentu, aby uzyskać funkcję tłumaczącą `t` oraz instancję `i18n`. Jeśli używają Państwo tłumaczeń z przestrzeniami nazw, należy przekazać nazwę przestrzeni nazw.
import { useTranslation } from 'react-i18next';

function Header() {
  const { t } = useTranslation('common');
  return <h1>{t('app_title')}</h1>;
}

Podstawowe klucze tłumaczeń

Proszę utworzyć plik JSON dla każdego języka i każdej przestrzeni nazw. Klucze to ciągi znaków dostępne za pomocą notacji kropkowej. Klucze płaskie są proste, natomiast klucze zagnieżdżone używają notacji kropkowej.
// public/locales/en/common.json
{
  "app_title": "My App",
  "nav": {
    "home": "Home",
    "about": "About"
  }
}

Klucze w notacji kropkowej

Do zagnieżdżonych kluczy należy odwoływać się za pomocą notacji kropkowej w funkcji t(): `t('nav.home')` odczytuje z pliku JSON wartość ze ścieżki `nav -> home`.
const { t } = useTranslation('common');
return <a href="/">{t('nav.home')}</a>;

Domyślna przestrzeń nazw

Proszę skonfigurować `defaultNS` podczas inicjalizacji i18n, aby można było wywoływać useTranslation() bez argumentów, a klucze były automatycznie wyszukiwane w domyślnej przestrzeni nazw.
i18n.init({ defaultNS: 'common', ... });

// No namespace argument needed
const { t } = useTranslation();
t('app_title'); // resolves in 'common'

Dostęp do wielu przestrzeni nazw

Proszę przekazać tablicę do useTranslation, aby uzyskać dostęp do wielu przestrzeni nazw. Klucze należy poprzedzać nazwą przestrzeni nazw, po której występuje dwukropek.
const { t } = useTranslation(['common', 'auth']);

t('common:app_title');
t('auth:login');

Komponent Trans dla treści JSX

Gdy przetłumaczony ciąg znaków zawiera kod HTML lub komponenty React, należy użyć komponentu Trans. Obsługuje on symbole zastępcze mapowane na komponenty React.
import { Trans } from 'react-i18next';

// JSON: "tos": "Read our <1>Terms</1>"
<Trans i18nKey="tos">
  Read our <a href="/terms">Terms</a>
</Trans>

Struktura plików tłumaczeń

Proszę organizować pliki JSON w strukturze `public/locales/{lang}/{ns}.json`. Klucze powinny mieć znaczenie semantyczne i być pogrupowane według funkcji. Należy unikać głęboko zagnieżdżonych kluczy — zazwyczaj wystarczą 2 poziomy.
public/
  locales/
    en/
      common.json
      auth.json
      dashboard.json
    tr/
      common.json
      auth.json

Zmiana języka w czasie działania aplikacji

Proszę użyć `i18n.changeLanguage(lng)`, aby programowo przełączyć aktywny język. Komponenty React korzystające z useTranslation zostaną automatycznie ponownie wyrenderowane.
const { i18n } = useTranslation();

<button onClick={() => i18n.changeLanguage('tr')}>Turkish</button>

Wykrywanie aktywnego języka

Proszę odczytać `i18n.language`, aby uzyskać bieżące aktywne locale. Można go użyć do wyświetlenia flagi lub wyróżnienia przycisku aktywnego języka.
const { i18n } = useTranslation();
return <p>Current lang: {i18n.language}</p>;

Szybkie sprawdzenie

Jak uzyskać dostęp do zagnieżdżonego klucza tłumaczenia 'nav.home' z przestrzeni nazw 'common'?

Podsumowanie

useTranslation udostępnia funkcję t(). Klucze należy organizować w plikach JSON przestrzeni nazw. Dla zagnieżdżonych kluczy należy używać notacji kropkowej. Języki można przełączać za pomocą i18n.changeLanguage. Komponentu Trans należy używać dla ciągów zawierających JSX.

Następnie

Następna lekcja: **Formy liczby mnogiej i interpolacja** — będą Państwo obsługiwać formy zależne od liczby oraz wstawiać dynamiczne wartości do przetłumaczonych ciągów znaków.

Często zadawane pytania

Czy lekcja „Używanie hooka useTranslation” jest bezpłatna?

Tak — pełny tekst „Używanie hooka useTranslation” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Używanie hooka useTranslation”?

Zastępowanie zakodowanych na stałe ciągów wywołaniami t() oraz porządkowanie plików JSON z tłumaczeniami. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Używanie hooka useTranslation”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Konfiguracja react-i18next
  2. Używanie hooka useTranslation
  3. Liczba mnoga i interpolacja
  4. Przełącznik języka i leniwe ładowanie tłumaczeń
← Powrót do React Academy