Over-the-Air-Übersetzungen in React Native
Textänderungen in einer React-Native-App warten meist auf den nächsten Build und die Store-Prüfung. Diese Anleitung behält i18next und react-i18next bei und ergänzt eine Funktion, die beim Start dein neuestes litei18n-Release lädt.
Schritte zur Einrichtung
Release erstellen
Committe in litei18n deine Übersetzungen und erstelle auf der Seite Releases ein Release (ab dem Starter-Plan). Kopiere deine Projekt-ID aus der dort angezeigten Release-URL. Exportiere deine Übersetzungen außerdem als JSON und lege sie als mitgelieferte Kopie in deine App.
Release beim App-Start laden
Installiere i18next und react-i18next. Die mitgelieferte englische Datei ist der Rückfall, und loadLatest lädt eine Sprache herunter und fügt sie i18next hinzu. keySeparator ist aus, weil litei18n-Keys flache Namen wie home.title sind.
src/i18n.tsimport i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; import en from './locales/en.json'; const PROJECT_ID = 'YOUR_PROJECT_ID'; const RELEASES = 'https://ttksowxkfdohtprtfarf.supabase.co/storage/v1/object/public/releases/locales'; i18n.use(initReactI18next).init({ lng: 'en', fallbackLng: 'en', resources: { en: { translation: en } }, keySeparator: false, // litei18n keys are flat: "home.title" interpolation: { escapeValue: false }, }); export async function loadLatest(locale: string) { try { const res = await fetch(`${RELEASES}/${PROJECT_ID}/latest/${locale}.json`); if (res.ok) { i18n.addResourceBundle(locale, 'translation', await res.json(), true, true); } } catch { // Offline: the bundled strings stay in place. } await i18n.changeLanguage(locale); } export default i18n;Texte verwenden
Nutze den Hook useTranslation wie gewohnt und rufe loadLatest beim Start einmal mit der Sprache des Nutzers auf.
src/App.tsximport { useEffect } from 'react'; import { Text } from 'react-native'; import { useTranslation } from 'react-i18next'; import { loadLatest } from './i18n'; function Home() { const { t } = useTranslation(); return <Text>{t('home.title')}</Text>; } export default function App() { useEffect(() => { loadLatest('es'); }, []); return <Home />; }Texte ohne neuen Build ändern
Bearbeite eine Übersetzung, committe sie und erstelle ein neues Release. Die latest-URL liefert jetzt den neuen Text, und deine App übernimmt ihn, wenn sie die Übersetzungen das nächste Mal lädt. Kein neuer Build, keine App-Store-Prüfung.
Gut zu wissen
- Release-Dateien werden auf einem CDN zwischengespeichert. Ein neues Release kann daher ein paar Minuten brauchen, bis es überall sichtbar ist.
- Um eine App-Version an ein bestimmtes Release zu binden, nutze die versionierte URL (…/v3/es.json) statt …/latest/es.json.
- Damit der heruntergeladene Text auch offline bleibt, speichere ihn mit AsyncStorage und füge ihn i18next hinzu, bevor die Netzwerkanfrage fertig ist.
Starte in 5 Minuten mit globalem Versand
Schließe dich Entwicklern an, die ihre Apps in jeder Sprache mit litei18n ausliefern.
Kostenloser Plan verfügbar · Keine Kreditkarte · Einrichtung in unter 5 Minuten