2009-05-22 11 views
13

Necesito localizar una aplicación de desarrollo para Inglés & español.¿Cómo simplificar la localización de iPhone?

A pesar de que sigo la forma de uso de Apple NSLocalizedString & creo plumillas para ambos, ya perdí la pista de la nueva cadena que necesito localizar y me sorprendió que tengo que volver a hacer los pliegues en español cuando cambiar el maestro

(igual que este http://www.gigliwood.com/weblog/Cocoa/A_Great_Need_for_Be.html)

Me pregunto si existe una manera mejor/alternativo/más automatizado.

Sé el uso de gettext & poedit y me pregunto si algo así se puede utilizar.

O si existe algún script o herramienta para esto.

Respuesta

17

Realmente no hay una solución fácil aquí. Los NIB deben ser diseñados individualmente para cada idioma. Hasta cierto punto, esto mejora la interfaz general del usuario, porque los diferentes idiomas a menudo necesitan un diseño diferente para verse mejor. El ruso y el alemán son idiomas mucho más "grandes" en pantalla que el inglés. Los chinos a menudo pueden ser mucho más pequeños y un diseño diferente se ve mejor con los caracteres chinos. El árabe y el hebreo son de derecha a izquierda y pueden necesitar cambios radicales en el diseño. El diseño automatizado es fácil, pero lo logra variando los niveles de feo en todos los idiomas. Cuando se le da la opción entre fácil para el desarrollador y feo frente a difícil para el desarrollador y hermoso, Apple casi siempre elige lo último. Dicho esto, Apple aún no ha hecho que sea tan fácil como pudieron.

Así que la primera lección aquí es mantener sus NIB simple. Esto es más fácil en iPhone que en Mac porque iPhone no tiene enlaces y los NIB de iPhone son generalmente más simples de todos modos. También puede usar la inyección de texto para NIB que tienen cantidades muy pequeñas de texto (como un título). La "inyección de texto" es una forma elegante de decir "use una salida para la etiqueta y establézcala en el texto localizado cuando cargue la vista".

ibtool es capaz de extraer cadenas de NIB y también volverlas a introducir, lo que puede ser útil. He usado iLocalize, que es útil para trabajar con localizadores de contrato, pero realmente no ayuda con el problema del que está hablando.

Intenté deshacerme de los NIB y simplemente usar el código, pensando que eso facilitaría las cosas, pero realmente no fue así. Era más fácil diseñar cada idioma en el NIB que idear una lógica de diseño que se vería bien en todos los idiomas (véase el primer párrafo). La inyección de texto solo fue útil en un puñado de lugares. Si puede dividir sus NIB en unos que necesitan ser localizados y los que no, eso puede ser útil. En el iPhone, descubrí que menos de la mitad de mis NIB tenían texto o imágenes localizadas en ellos.

Por supuesto deberías leer Internationalization Programming Topics, pero lamento decir que realmente no hay una respuesta fácil a tu problema. Envío de productos localizados en 19 idiomas, siento tu dolor.

2

A veces los NiB se deben diseñar para cada idioma, pero la mayoría de las veces no tienen que volver a configurarse para cada idioma.

Si utilizó ibtool para generar los hilos desde las puntas

ibtool --generate cuerdas corrientes de archivos

Puede importarlos en nuevas puntas para cada idioma.

ibtool --import cuerdas corrientes de archivos

Estas son herramientas de línea de comandos para que se pueden ejecutar scripts. Eche un vistazo a 'man ibtool'

2

Lo que hago es que creo IBOutlets para todos los ui de texto en mi archivo de punta (UILabel, UITextField, UITextView, etc.) y asigno programáticamente sus propiedades text/placeHolder al NSLocalizaedString deseado .

Dado que he proporcionado las traducciones de una cadena en particular en diferentes idiomas, la versión traducida del texto aparecerá en el archivo de punta cuando cambie la configuración regional del iPhone.

Espero que los demás encuentren esto útil

Cuestiones relacionadas