React Academy · leksjon

Språkvelger og lazy-loading av oversettelser

Bygg en locale-bryter og last inn oversettelsespakker ved behov for å redusere den opprinnelige størrelsen.

Leksjon 4 av 413 trinn

Språkvelger og lazy-loading av oversettelser er en gratis leksjon i React Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i React Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i React Academy inneholder totalt 4 leksjoner.

Velkommen

I denne leksjonen skal du lage en komponent for språkbytte og konfigurere i18next til å laste inn oversettelsespakker ved behov, slik at den innledende JavaScript-mengden blir mindre.

Enkel språkbryter

Kall i18n.changeLanguage() når en knapp klikkes, for å bytte aktivt språk. Alle komponenter som bruker useTranslation, gjengis automatisk på nytt med det nye språket.
function LanguageSwitcher() {
  const { i18n } = useTranslation();
  return (
    <div>
      {['en', 'tr', 'fr'].map(lng => (
        <button
          key={lng}
          onClick={() => i18n.changeLanguage(lng)}
          style={{ fontWeight: i18n.language === lng ? 'bold' : 'normal' }}
        >
          {lng.toUpperCase()}
        </button>
      ))}
    </div>
  );
}

Lagre språkvalget

Lagre det valgte språket i localStorage, slik at valget beholdes når siden lastes inn på nytt. LanguageDetector-pluginen håndterer dette automatisk med detektor-rekkefølgen `localStorage`.
i18n.init({
  detection: {
    order: ['localStorage', 'navigator'],
    caches: ['localStorage'],
  },
});

Hvorfor lazy-loade oversettelser?

Hvis alle oversettelser tas med i JavaScript-pakken, øker den innledende lastetiden. Lazy-loading sender bare standardspråket ved første lasting og henter andre språk først når brukeren bytter språk.

Konfigurere HTTP-backend

i18next-http-backend-pluginen henter oversettelsesfiler fra et URL-mønster. Oversettelsene ligger i `public/`-mappen og leveres som statiske ressurser — ingen kode på serversiden er nødvendig.
import Backend from 'i18next-http-backend';

i18n.use(Backend).init({
  backend: {
    loadPath: '/locales/{{lng}}/{{ns}}.json',
  },
  ns: ['common', 'auth'],
  defaultNS: 'common',
});

Legge til oversettelsesfiler

Opprett én JSON-fil per språk og navnerom i `public/locales/`. HTTP-backend-en henter dem automatisk når språket eller navnerommet trengs for første gang.
public/locales/
  en/common.json
  en/auth.json
  tr/common.json
  tr/auth.json

Vise lastestatus ved språkbytte

Etter at du har kalt changeLanguage(), laster i18next inn filene for det nye språket asynkront. Abonner på `i18n.on('languageChanged')`-hendelsen, eller kontroller `i18n.isInitialized`, for å vise en innlastingsindikator.
const [switching, setSwitching] = useState(false);

const change = async (lng) => {
  setSwitching(true);
  await i18n.changeLanguage(lng);
  setSwitching(false);
};

Lazy-loading av bestemte navnerom

Last inn et navnerom først når det trengs, ved hjelp av `i18n.loadNamespaces(['dashboard'])`. Kall dette i useEffect når en dashboard-rute monteres, slik at det unngås å laste det inn for brukere som ikke er autentiserte.
useEffect(() => {
  i18n.loadNamespaces('dashboard');
}, []);

CDN for oversettelser

I produksjon kan du lagre oversettelsesfiler på et CDN (S3 + CloudFront). Oppdater `loadPath` til CDN-URL-en. Da kan oversettelser oppdateres separat fra kodeutrullinger.
backend: {
  loadPath: 'https://cdn.example.com/locales/{{lng}}/{{ns}}.json',
}

Lokalitet i URL-en

Mange apper inkluderer lokaliteten i URL-en (for eksempel /en/products og /tr/products). Kombiner React Router med i18n: les lokaliteten fra URL-parameteren, kall changeLanguage, og oppdater URL-en når brukeren bytter språk.

Hurtigsjekk

Hva gjør i18next-http-backend-pluginen?

Oppsummering

Lag en språkbryter med i18n.changeLanguage(). Lagre valget med localStorage-detektoren. Bruk i18next-http-backend til lazy-loading av oversettelsesfiler. Vis lastestatus ved språkbytte. Lagre filene på et CDN i produksjon.

Kurset er fullført

Gratulerer! Du har fullført **Internasjonalisering (i18n) i React**. Du kan nå sette opp react-i18next, oversette strenger med navnerom, håndtere flertallsformer og interpolering samt lazy-loade oversettelsesfiler.
Gratis å komme i gang

Lær deg React med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
88
Leksjoner
324

Ofte stilte spørsmål

Er leksjonen «Språkvelger og lazy-loading av oversettelser» gratis?

Ja – hele teksten i «Språkvelger og lazy-loading av oversettelser» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av React Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i React Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Språkvelger og lazy-loading av oversettelser»?

Bygg en locale-bryter og last inn oversettelsespakker ved behov for å redusere den opprinnelige størrelsen. Du øver på React Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med React Academy?

Ingen tidligere erfaring er nødvendig. React Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Språkvelger og lazy-loading av oversettelser»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne React Academy-leksjonen?

Ja. Alle React Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Sette opp react-i18next
  2. Bruke useTranslation-hooken
  3. Flertallsformer og interpolering
  4. Språkvelger og lazy-loading av oversettelser
← Tilbake til React Academy