Actualizaciones de traducciones over-the-air en React Native
En una app de React Native, los cambios de texto suelen esperar a la siguiente build y a la revisión de la tienda. Esta guía mantiene i18next y react-i18next y añade una función que carga tu última publicación de litei18n al iniciar.
Pasos de configuración
Crea una publicación
En litei18n, confirma tus traducciones y crea una publicación en la página Releases (plan Starter o superior). Copia el ID de tu proyecto de la URL de la publicación que aparece allí. Exporta también tus traducciones en JSON y añádelas a tu app como copia incluida.
Carga la publicación al iniciar la app
Instala i18next y react-i18next. El archivo en inglés incluido es el respaldo, y loadLatest descarga un idioma y lo añade a i18next. keySeparator está desactivado porque las claves de litei18n son nombres planos como home.title.
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;Usa los textos
Usa el hook useTranslation como siempre y llama a loadLatest una vez al iniciar con el idioma del usuario.
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 />; }Cambia textos sin una nueva build
Edita una traducción, confírmala y crea una nueva publicación. La URL latest ya sirve el texto nuevo y tu app lo recoge la próxima vez que cargue las traducciones. Sin nueva build ni revisión en la tienda.
Conviene saber
- Los archivos de las publicaciones se guardan en caché en una CDN, así que una nueva publicación puede tardar unos minutos en verse en todas partes.
- Para fijar una versión de la app a una publicación concreta, usa la URL con versión (…/v3/es.json) en lugar de …/latest/es.json.
- Para conservar el texto descargado sin conexión, guárdalo con AsyncStorage y añádelo a i18next antes de que termine la petición de red.
Empieza a enviar globalmente en 5 minutos
Únete a los desarrolladores que envían sus apps en todos los idiomas con litei18n.
Plan gratuito disponible · Sin tarjeta de crédito · Configuración en menos de 5 minutos