tengo implementadas varias apps multi-idioma y me encuentro constantes descuidos/olvidos de frases en los ficheros de i18n. No sé cual de estas opciones sería mejor:
a) Asignar identificadores a las frases, y luego ir traduciendolas a cada idioma, ejemplo:
Yo, siempre que he tenido que traducir en iOS, he usado la opción b. Te "olvidas" de mantener el idioma inglés porque es la definición de la clave del diccionario.
Lo de usar librerías externas... Pues no sé, si se te olvida traducir un string, sea cual sea la herramienta que uses, no se te va a traducir mágicamente. :)
Muy cierto, la cosa es que con la opción "a" te das cuenta mucho antes de los olvidos, porque una cadena de tipo "tab_1_title" llama mucho más la atención al probar la App que una cadena "buena" en otro idioma. No obstante se te puede colar igual :P
Yo utilizo la A, pero haciendo referencia a la cadena en inglés, por ejemplo:
NSLocalizedString(@"edit_group", nil)
Por si os sirve yo estoy utilizando twine, una utilidad que permite generar un fichero común para iOS y Android y luego posteriormente te genera los archivos correspondientes de cada plataforma. Es muy útil si son muchos idiomas.
Gracias por el comentario. Finalmente me encuentro que la opción más interesante es la B, pero sigue siendo necesaria la A para casos puntuales, como por ejemplo textos muy largos y sujetos a constantes modificaciones (como por ejemplo textos de intro o de ayuda). Es mas comodo decir NSLocalizedString(@"help_txt1", nil) que decir NSLocalizedString(@"Use this menu to add an alarm, edit your alarms, or store them", nil)
tengo implementadas varias apps multi-idioma y me encuentro constantes descuidos/olvidos de frases en los ficheros de i18n. No sé cual de estas opciones sería mejor:
a) Asignar identificadores a las frases, y luego ir traduciendolas a cada idioma, ejemplo:
"tab_0_title" = "Opciones";
"tab_1_title" = "Pestaña 1";
Y luego referenciarlas como
barButtonItem.title = NSLocalizedString(@"tab_0_title", nil);
b) Directamente codificar las cadenas en Inglés (idioma por defecto), y luego traducirlas a los idiomas restantes, ejemplo:
self.txtTitle.text = NSLocalizedString(@"Click here for details", nil);
Y en el fichero de localización tengo:
"Click here for details" = "Pulsa para detalles";
c) Usar una librería o recurso adicional que se encargue de esto de mejor manera
¿Que opción adoptais vosotros?
Gracias de antemano!
23/10/2014 08:53
Yo, siempre que he tenido que traducir en iOS, he usado la opción b. Te "olvidas" de mantener el idioma inglés porque es la definición de la clave del diccionario.
Lo de usar librerías externas... Pues no sé, si se te olvida traducir un string, sea cual sea la herramienta que uses, no se te va a traducir mágicamente. :)
23/10/2014 10:04
25/10/2014 15:52
30/12/2014 14:26
NSLocalizedString(@"edit_group", nil)
Por si os sirve yo estoy utilizando twine, una utilidad que permite generar un fichero común para iOS y Android y luego posteriormente te genera los archivos correspondientes de cada plataforma. Es muy útil si son muchos idiomas.
30/12/2014 16:46