Vamos a aprender la forma más fiable para obtener el idioma del dispositivo y ademas utilizarlo junto con la libreria de idiomas i18next.

Instalar dependencias
npm install i18next react-i18next @react-native-localize
Si usas TypeScript, instala también los tipos:
npm install -D @types/react-i18next
Estructura recomendada
src/ │ ├── i18n/ │ ├── index.ts # Configuración principal │ ├── translations/ │ │ ├── es.ts │ │ └── en.ts │ └── App.tsx
Crear los archivos de idioma (es.ts, en.ts)
src/i18n/translations/es.ts
export default {
saludo: "Hola",
bienvenido: "Bienvenido a la app",
};
src/i18n/translations/en.ts
export default {
saludo: "Hello",
bienvenido: "Welcome to the app",
};
Configurar i18next con detección automática
src/i18n/index.ts
import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import * as RNLocalize from "react-native-localize";
import es from "./translations/es";
import en from "./translations/en";
// Detectar el idioma del sistema
const locales = RNLocalize.getLocales();
const defaultLanguage = locales[0]?.languageCode || "en";
i18n
.use(initReactI18next)
.init({
compatibilityJSON: "v3",
lng: defaultLanguage,
fallbackLng: "en",
resources: {
es: { translation: es },
en: { translation: en },
},
interpolation: {
escapeValue: false, // React ya hace esto
},
});
export default i18n;
Usar las traducciones en la app
src/App.tsx
import React from "react";
import { Text, View } from "react-native";
import "./i18n"; // Importante: inicializar antes de usar
import { useTranslation } from "react-i18next";
export default function App() {
const { t } = useTranslation();
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Text>{t("saludo")}</Text>
<Text>{t("bienvenido")}</Text>
</View>
);
}
Resultado esperado
Si el idioma del sistema es español, verás:
Hola Bienvenido a la app
Si es inglés:
Hello Welcome to the app
Bonus: Detectar cambio de idioma del sistema en caliente
RNLocalize.addEventListener("change", () => {
const locales = RNLocalize.getLocales();
const newLang = locales[0]?.languageCode || "en";
i18n.changeLanguage(newLang);
});
Alternativas útiles
react-native-localizetambién te permite:- Obtener la zona horaria:
RNLocalize.getTimeZone() - Saber si usa formato 24h:
RNLocalize.uses24HourClock() - Obtener preferencias de calendario, moneda, etc
- Obtener la zona horaria:

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.