Guía de internacionalización de Java: traduzca aplicaciones Java

Aprenda a configurar la internacionalización en Java, traducir archivos .properties y automatizar su flujo de trabajo de localización en Java.

Cómo funciona la internacionalización de Java

El sistema de i18n de Java se basa en dos elementos:

  • .properties archivos que almacenan sus cadenas traducidas
  • La clase ResourceBundle que carga el archivo correcto en tiempo de ejecución según la configuración regional del usuario

Cuando se ejecuta su aplicación, ResourceBundle comprueba la configuración regional del usuario y carga automáticamente el archivo correspondiente. Si falta una traducción, recurre al archivo predeterminado para que nada falle.

Llamar a una cadena en el código es sencillo:

ResourceBundle bundle = ResourceBundle.getBundle("messages", Locale.FRENCH);
String greeting = bundle.getString("welcome.message");

Ese es todo el mecanismo. El resto del trabajo de localización se realiza en los propios archivos .properties, por lo que estructurarlos correctamente es importante.

Configuración de su paquete de recursos

Un paquete de recursos es un conjunto de archivos .properties que comparten un nombre base común. El nombre base es la parte del nombre del archivo anterior al sufijo de configuración regional, y es lo que ResourceBundle.getBundle() utiliza para encontrar el archivo correcto en tiempo de ejecución.

messages.properties         # default (usually English)
messages_fr.properties      # French
messages_de.properties      # German
messages_es.properties      # Spanish

Aquí, messages es el nombre base. Puede asignarle cualquier nombre, pero debe reflejar lo que contiene el archivo. Las aplicaciones más grandes suelen utilizar varios paquetes de recursos para mantener todo organizado:

src/main/resources/
  messages.properties
  errors.properties
  emails.properties

Java espera un patrón de nomenclatura específico: basename_language.properties o basename_language_COUNTRY.properties para variantes regionales.

messages_fr.properties       # French
messages_fr_CA.properties    # French (Canada)
messages_pt_BR.properties    # Portuguese (Brazil)

Los códigos de idioma siguen la norma ISO 639-1 y los códigos de país siguen la norma ISO 3166-1. Si utiliza un formato incorrecto, ResourceBundle no encontrará el archivo en tiempo de ejecución.

Estructuración de archivos .properties de Java

Cada línea de un archivo .properties es un par clave-valor separado por =.

welcome.message = Welcome to our application
error.login.invalid_credentials = Invalid username or password
form.submit.button = Submit

Además de utilizar pares clave-valor, es importante saber que la forma en que escribe su archivo de origen afecta directamente a la calidad de sus traducciones. Ciertas prácticas recomendadas siempre se aplican, independientemente de si está traduciendo manualmente o utilizando una herramienta de traducción de IA como PTC.

1

Utilice claves claras y descriptivas

Las claves deben dejar claro dónde y cómo se utiliza una cadena. Esto es importante cuando gestiona cientos de cadenas en varios archivos.

Uso incorrecto de claves:

btn1 = Submit 
msg2 = Error

Uso correcto de claves:

form.submit.button = Submit 
error.login.invalid_credentials = Invalid username or password

2

Utilice placeholders para contenido dinámico

Escriba la frase completa en su archivo .properties y utilice marcadores de posición numerados para el contenido variable en lugar de concatenar cadenas en el código.

Incorrecto (en código):

"Hello, " + username + "! You have " + count + " new messages." 

Correcto (en archivo .properties):

dashboard.greeting = Hello, {0}! You have {1} new messages.

Muchos idiomas cambian el orden de las palabras y las reglas de concordancia, por lo que dividir las frases en fragmentos hace imposible una traducción correcta.

3

Gestión de la pluralización con ChoiceFormat

Algunas cadenas cambian según un valor numérico. En lugar de escribir claves separadas para singular y plural, utilice un patrón ChoiceFormat directamente en su archivo .properties:

messages.count = {0,choice,0#no messages|1#one message|1<{0} messages}

Java procesa este patrón en tiempo de ejecución y devuelve la forma correcta según el valor pasado.

4

Escape de caracteres especiales

Caracteres como =, :, # y \ tienen un significado especial en los archivos .properties:

  • = o :separa las claves de los valores
  • # o ! inicia un comentario
  • \ introduce secuencias de escape (como \n para nueva línea)

Si necesita utilizar estos caracteres en una cadena, escápelos con una barra invertida.

support.link = Visit us at https\://support.example.com

5

Guarde los archivos en UTF-8

Guarde siempre .properties los archivos en UTF-8. De lo contrario, los caracteres no ASCII se corrompen y las traducciones se vuelven ilegibles.

6

Mantenga todo el texto visible para el usuario fuera de su código

Si una cadena es visible para los usuarios, pertenece a un .properties archivo. Las cadenas codificadas no se traducirán y su aplicación terminará mostrando una mezcla de idiomas.

Otras consideraciones sobre la localización de Java

No todo lo que necesita localizarse se encuentra en un archivo .properties. Las fechas, horas, números y valores de moneda se formatean en el código en tiempo de ejecución, y hacerlo correctamente es tan importante como sus cadenas traducidas.

Java proporciona clases integradas para esto:

  • DateTimeFormatter para formato de fecha y hora según la configuración regional
  • NumberFormat para números, porcentajes y valores de moneda

Dado que esta guía se centra en los archivos .properties y su traducción, no los cubriremos en profundidad aquí. La documentación oficial de Java para DateTimeFormatter y NumberFormat es un buen punto de partida.

Traducción de archivos .properties de Java

Como muestran los ejemplos anteriores, internacionalizar correctamente una aplicación Java requiere esfuerzo. Estructurar correctamente los paquetes de recursos, gestionar los placeholders y la pluralización, todo debe estar correcto antes de que la traducción pueda siquiera comenzar. PTC está diseñado para encargarse a partir de ese punto.

¿Por qué PTC?

PTC es un sistema de traducción con IA diseñado para equipos de software. Comprende su producto, su terminología y su audiencia. Con PTC, obtendrá:

  • Traducciones conscientes del contexto — PTC lee su estructura de archivos y descripciones para traducir cadenas con precisión, no literalmente
  • Preservación de placeholders y formatos — sus patrones {0}, {1} y cadenas ChoiceFormat se mantienen intactos
  • Precios de pago por uso — sin cuotas de suscripción mensuales y una calculadora de precios para que conozca sus costes antes de comprometerse
  • Integración con Git y CI/CD — conecte su repositorio y mantenga las traducciones sincronizadas automáticamente
  • Prueba gratuita — 20.000 palabras en dos idiomas, sin necesidad de tarjeta de crédito

Primeros pasos

  1. Regístrese para una prueba gratuita
  2. Cargue su archivo .properties de origen y configure las rutas de salida de la traducción
  3. Seleccione sus idiomas de destino
  4. Añada una breve descripción de su aplicación y su audiencia
  5. Descargue sus archivos traducidos desde la pestaña Archivos de recursos y añádalos a src/main/resources

La configuración completa lleva unos 5 minutos. Para una guía detallada, consulte la Guía de inicio rápido.

Un flujo de trabajo de traducción continua para proyectos Java

Traducir su archivo .properties una vez es sencillo. ¿Qué pasa con mantener las traducciones actualizadas a medida que evoluciona su aplicación? Cada vez que añade una nueva cadena, actualiza el texto existente o elimina una clave, sus archivos traducidos deben reflejar ese cambio.

Hacer esto manualmente significa exportar archivos, enviarlos para traducción, esperar y reintegrarlos cada vez, por lo que la mayoría de los equipos terminan automatizándolo.

PTC ofrece dos formas de automatizar el proceso de traducción:

Integración de Git

Conecte su repositorio de GitHub, GitLab o Bitbucket a PTC y este supervisará su archivo de origen .properties para detectar cambios. Cuando se añada o actualice una cadena, PTC la traducirá automáticamente y entregará los archivos de traducción actualizados mediante una pull request. Sus traducciones se mantienen sincronizadas sin pasos manuales.

Integración de CI/CD

Si prefiere mantener todo dentro de su proceso de compilación existente, la API de PTC le permite cargar su archivo de origen y recuperar traducciones como parte de su trabajo de CI. Cada compilación produce traducciones actualizadas automáticamente.

Ambos enfoques significan que añadir un nuevo idioma más adelante es solo un cambio de configuración, no un nuevo proceso manual.

¿Listo para localizar su aplicación Java?

Sus archivos .properties son la base de su flujo de trabajo de localización de Java. Estructúrelos correctamente, mantenga sus traducciones sincronizadas y su aplicación podrá admitir nuevos idiomas sin ralentizar su ciclo de lanzamiento.

Si aún no ha probado PTC, la prueba gratuita es un buen punto de partida. 20.000 palabras, dos idiomas, sin necesidad de tarjeta de crédito.

Ir arriba