2009-02-28 18 views
7

En Apple Docs dicen que un Nib permite la internacionalización simplemente traduciendo el Nib a muchos idiomas. Estoy pensando en un escenario peor pero realista: has creado una gran interfaz de usuario. Luego traduces esto a 25 idiomas. Entonces obtienes 25 diferentes Nibs También obtiene una enorme redundancia en el diseño y la definición de la IU: 25 veces lo mismo. Mismos enlaces, mismo todo. Solo el texto es diferente.internacionalización con nibs. ¿Es realmente una buena idea?

Por lo tanto, realmente creo que este es un enfoque muy malo. En cambio, preferiría simplemente vincular todos los textos de un paquete de recursos o algo así. Solo un archivo con cadenas de texto, que está vinculado en tiempo de ejecución desde el recurso de idioma apropiado. Entonces solo tienes "problemas" para vincular el texto que realmente no te divierte. Pero luego, puede hacer cambios en su UI ONCE sin tener que hacer el mismo paso 25 veces una y otra vez. Un nuevo enlace en cada plumín. Eso sería tan horrible!

Ahora, por favor dime que me equivoqué. Apple no supone que hagamos algo tan crujiente?

Respuesta

9

La situación de localización no es ideal. Aunque los elementos de la interfaz de usuario de Cocoa admiten cierta flexibilidad dinámica en su tamaño (los indicadores de aususación), es muy difícil organizarlos en una vista para que se adapten a cualquier tamaño de texto.

Como señala Heng-Cheong, esto generalmente significa que se requiere algún ajuste en el diseño por ubicación. Apple admite un proceso llamado localización incremental con una herramienta llamada "ibtool", incluida con sus herramientas de desarrollador. El proceso está lejos de ser intuitivo y parece tener algunos errores sutiles, pero ayuda a hacer que el proceso sea más fácil que, por ejemplo, mantener por separado 25 plumillas diferentes de forma manual. El proceso esencialmente implica mapear los cambios que haces en tu plumilla principal en los otros plumones localizados. De Apple describe el proceso con más detalle:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html

Con el fin de evitar este proceso doloroso, algunas personas toman un enfoque diferente. Si pone en peligro el diseño de sus vistas, puede lograr una situación en la que cada elemento de UI acomode la cadena localizada más grande. Usando las características de alineación de los campos de texto, etc., puede organizar un diseño aceptable, aunque el espaciado adicional requerido para la localización con las cadenas más grandes a menudo causa un diseño menos que ideal para el lenguaje cuyas cadenas son más cortas. Si toma este enfoque, debe diseñar sus puntas para que una clase de controlador rellene los elementos de la interfaz de usuario del plumín con las cadenas localizadas correctas en el tiempo de ejecución.

Finalmente, algunos desarrolladores llegan incluso a aplicar su propia retransmisión a los elementos en una punta, optimizándolos para los tamaños de las cuerdas que se les han asignado. Esto sería un refinamiento de la estrategia anterior, donde se usa y manipula una sola punta en tiempo de ejecución para lograr el efecto deseado.

5

A veces, la localización implica más que solo reemplazar el texto, pero también cambios en el diseño. Por ejemplo, las cadenas en una configuración regional/idioma pueden ser significativamente más largas que en otra, lo que obliga a un cambio en el diseño. El lenguaje de derecha a izquierda a menudo significará algunos cambios en el diseño también.

+1

En segundo lugar esto. Si planeas apoyar idiomas de derecha a izquierda, la sustitución simple de cadenas es casi imposible. – sbooth

5

Sobre la base de las dos respuestas anteriores, hay una herramienta llamada iLocalize que tiene como objetivo hacer que el proceso sea más fácil que ibtool (y es más antiguo que ibtool). Nunca lo he usado, pero mi amigo Evan lo usa tanto en Adium como en Growl y lo ama.

Cuestiones relacionadas