Reglas de inversión de I18nManager e iconos reflejados. Los idiomas de derecha a izquierda (árabe, hebreo, persa, urdu) requieren espejo de diseño - no solo strings traducidas. React Native invierte flexbox y bordes start/end cuando RTL está habilitado; todavía controlas iconos, animaciones y relleno asimétrico.
// Prefiere alineación consciente de la dirección de escritura<Text style={{ textAlign: I18nManager.isRTL ? "right" : "left" }}>{title}</Text>// Mejor: la alineación predeterminada sigue locale cuando es compatible<Text style={styles.body}>{body}</Text>
import { I18nManager, StyleSheet } from "react-native";const styles = StyleSheet.create({ body: { textAlign: "auto" as "auto", // RN 0.86 - sigue la dirección de escritura writingDirection: I18nManager.isRTL ? "rtl" : "ltr", },});
textAlign: "auto" deja que el algoritmo bidi coloque strings mixtos LTR/RTL
Números y emails incrustados en oraciones árabes necesitan cuidado de unicode-bidi - mantén tokens LTR en spans si hay recorte
Lista de verificación de envío RTL:✓ I18nManager alineado con idioma de app en inicio✓ No marginLeft/paddingRight en estilos de característica (auditoría grep)✓ Iconos direccionales reflejados; logos sin tocar✓ Asequibilidad de navegación atrás probada en dispositivo árabe✓ Configuración advierte sobre breve recarga en cambio de idioma✓ Revisión de pseudolocale + captura de pantalla de traducción más larga
paddingLeft en tokens de diseño compartidos - Rompe RTL en todo el sitio. Solución: migra tokens a sufijos Start/End.
Olvidar recarga después de forceRTL - El diseño permanece LTR hasta reiniciar. Solución:Updates.reloadAsync().
Reflejar botones de reproducción y mapas - Confuso e incorrecto. Solución:mirrorInRtl={false} por activo.
Strings concatenadas - La gramática árabe difiere; la interfaz reflejada expone un orden de palabras incómodo. Solución: claves de oración completa - i18n Best Practices.
Sabor de marca solo LTR - Algunos inquilinos pueden deshabilitar RTL - documenta en Theming & Brand Flavors.
No de forma confiable en RN 0.86. Planifica un reloadAsync cuando cruces LTR ↔ RTL. Los cambios menores de strings dentro de la misma dirección no necesitan recarga.
¿NativeWind/Tailwind soporta RTL?
Usa utilidades lógicas ms-, me-, ps-, pe- donde estén disponibles - ve NativeWind. Evita ml-/mr- físicos en componentes compartidos.
¿Cómo pruebo RTL en el simulador?
Establece el idioma del dispositivo a árabe o llama I18nManager.forceRTL(true) detrás de una bandera de menú de desarrollador, luego recarga.
¿Expo Router pestañas en RTL?
El orden de pestañas se refleja con RTL. Verifica que las pestañas solo de icono todavía tengan tabBarAccessibilityLabel traducida.