Sé que muchos desarrolladores simplemente lo hacen así: comienzan a desarrollar su aplicación en inglés, y ponen NSLoclaizedString(@"Tap this to do that!", @"Telling what to do...")
en lugar de simplemente @"Tap this to do that!"
.¿Es seguro usar claves "reales" en NSLocalizedString()? ¿Hay un lenguaje de respaldo garantizado?
Luego ejecutan genstrings
que crea un archivo Localizable.strings de alguna manera extrayendo todas estas cadenas. La parte desordenada: el texto largo utilizado en el código se convierte en la clave. Funciona. Hasta que un día ingresas rápidamente en tu código y cambias la cadena en inglés y te olvidas de la localización y que sirve como la clave para todos esos archivos Localizable.strings.
Por lo tanto, suelo usar teclas "reales" que no se mezclan con cadenas. Para una prueba rápida, creé un proyecto localizado en inglés y francés. Luego configuro el idioma del simulador en alemán. Porque, ya sabes, sería horrible si el usuario alguna vez viera la clave como TTTDT
.
Con solo inglés y alemán en su lugar, inicié la aplicación de demostración. Y lo que obtuve fue el texto en inglés del archivo English Localizable.strings.
Conclusión: Parece que NSLocalizedString vuelve al archivo en inglés si el idioma del sistema operativo no está cubierto por la aplicación.
Pregunta: Suponiendo que siempre haya un archivo Localizable.strings (English)
, y que las claves estén en el archivo junto con los valores formateados correctamente. ¿Hay circunstancias bajo las cuales NSLocalizedString fallaría y luego mostraría la clave directamente?
Buenos puntos. También agregaría un mejor rendimiento. – dontWatchMyProfile