skills localize localisation language i18n localization internationalization

localize - localization or localisation



Nombramiento de claves en los archivos de recursos mejores prácticas (5)

+1 para la respuesta de @cherouvim, pero siempre se trata de documentación.

Documente cada valor (utilizando el mecanismo de comentarios que sea compatible con el formato del archivo de fuente de recursos), incluido el tipo de datos de cada parámetro si la cadena es formateable. Por ejemplo, el editor VS para el formato .resx expone un campo de comentarios que lo hace muy fácil.

Así que un mensaje como:

No se puede programar el trabajo {0} antes de {1}.

Sería documentado como algo como:

Mensaje de error registrado, {0}: nombre del trabajo, fecha / hora {1} en formato ISO 8601.

¿Alguien tiene alguna recomendación sobre nombrar claves en los archivos de recursos? Por ejemplo, ¿basa el nombre de su clave en el texto que necesita ser localizado o en el control que usa el texto?

Supongamos que tiene un botón de edición en varias pantallas (una para editar un usuario, otra para editar un grupo). Podrías usar las siguientes teclas:

  • editUserButton.label = Editar usuario ...
  • editGroupButton.label = Editar grupo ...

o

  • editUser = Editar usuario ...
  • editGroup = Editar grupo ...

o

  • user.edit = Editar usuario ...
  • group.edit = Editar grupo ...

¿Qué esquema prefieres y por qué?


Base en el texto en inglés, pero prefija con la ventana / diálogo / lo que tiene en el que aparece la palabra o frase. Al menos cuando el espacio de diseño es limitado, es posible que desee evitar caer en la trampa de tener exactamente la misma cadena en todas partes: esto evita que se abrevie para obtener diseños decentes, especialmente en idiomas polisilábicos como el finlandés.

Por supuesto, aún debes esforzarte por ser consistente en nombrar cosas. Aumentar el número de cadenas también aumentará los costos de traducción si lo hace comercialmente.

Y no ignore el peligro de los homónimos. Proporcionar contexto ayuda a prevenir eso. No tenga miedo de hacer que el nombre del recurso sea más largo que el término en inglés real, esto puede ayudar a los traductores sustancialmente.


Creo que, en primer lugar, deberías usar algún tipo de archivos XML para almacenar ese tipo de datos.

Algo como :

<? xml version = "1.0" encoding = "utf-8" standalone = "yes"?>
<xml>
<botón>
<editar>
<usuario> *** Editar usuario * </usuario>
<grupo> Editar grupo </grupo>
</edit>
</button>
</xml> **

Y luego use una clase "traducida" para obtener (y configurar / guardar) el texto.

Algo como :

myTranslateClass.load (''translate.xml'');
myTranslateClass.get (''botón'', ''editar'', ''usuario'');

Ese es un ejemplo simple.


Lo basamos en la versión en inglés del término. Ej: EditUser Eso fue fácil de leer para nuestros desarrolladores y se puede reutilizar en varias ubicaciones, ese término se requiere en toda la aplicación.


Prefijo mis literales por usecase o action classname. p.ej:

PlaceOrder.invalidId=Invalid id for order {0} PlaceOrder.success=Your order {0} was successful PlaceOrder.fail.visa=Your visa was ... PlaceOrder.fail.communications=We could not... PlaceOrder.submit=Buy now Login=Login Login.fail=Your credentials did not... Login.alread=You are already logged in

De esta manera evitas colisiones:

EditStudent=Edit EditClass=Edit EditCourse=Edit Course

... y también puede encontrar lo que necesita más fácilmente.

Otra forma de agrupar es por entidad:

Person.id=# Person.name=First name Person.surname=Surname

Estos pueden aparecer como encabezados en tablas con las entidades. Te salva en casos como este:

Person.id=# Class.id=# Course.id=Course Id

Por último, al proporcionar contexto en las claves de propiedad, puede ahorrarse las traducciones falsas. Por ejemplo una vez tuve:

no=no

que se usaba como encabezado de la tabla id (#) en la celda superior izquierda, pero nuestro traductor francés hizo esto por el francés:

no=non

... pensó que era la palabra "no" (negativo de sí). :)

El último (pero no menos importante) prefijo con nombre de clase te ayudará cuando quieras refactorizar / renombrar clases y actualizar rápidamente estas claves de propiedad sin tener que mirar las plantillas.