Aprenda a configurar la internacionalización de Java, traducir archivos .properties y automatizar su flujo de trabajo de localización de Java.
Cómo funciona la internacionalización de Java
El sistema de i18n de Java se basa en dos elementos:
.propertiesarchivos que almacenan sus cadenas traducidas- La clase
ResourceBundleque 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.propertiesJava 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. Utilizar el formato incorrecto significa que 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 = SubmitAdemá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 = ErrorUso correcto de claves:
form.submit.button = Submit
error.login.invalid_credentials = Invalid username or password2
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\npara 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.com5
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:
DateTimeFormatterpara formato de fecha y hora según la configuración regionalNumberFormatpara 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
Una vez que su archivo de origen esté listo, tiene varias opciones para traducirlo. La elección correcta depende de su presupuesto, cronograma y cuánta automatización necesite.
| Opción | Tiempo de respuesta | Coste | Necesidades de mantenimiento |
| Traductores profesionales | Días a semanas | Alto | Exportación, envío, recepción y reintegración manual de cada actualización |
| Scripts de traducción | Minutos | Bajo | Requiere revisión: los marcadores de posición pueden fallar, el contexto de las traducciones puede ser incorrecto |
| Traducción de IA (como PTC) | Minutos | Bajo | Las traducciones contextuales se sincronizan automáticamente mediante Git o CI/CD |
Con PTC, las traducciones con calidad humana están listas en minutos, y no hay suscripción: solo paga por lo que traduce. Para empezar, obtiene 20.000 palabras traducidas a dos idiomas de forma gratuita, sin necesidad de tarjeta de crédito.
Después de registrarse, un asistente de configuración le guiará a través de lo básico: una breve descripción de su aplicación, sus idiomas de destino y su archivo .properties. Todo el proceso dura unos 5 minutos. Para una explicación completa, consulte nuestra guía de inicio.
Una vez que PTC termine de traducir, vaya a la pestaña Resource Files y descargue un archivo ZIP con los archivos .properties traducidos.
Añada estos archivos de nuevo a la carpeta src/main/resources de su proyecto, junto con su archivo de origen original. En tiempo de ejecución, ResourceBundle selecciona automáticamente el archivo correcto según la configuración regional del usuario. No necesita cambiar su código.
Mantener sincronizadas las traducciones de .properties de 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 .properties de origen en busca de cambios. Cuando se añade o actualiza una cadena, PTC la traduce automáticamente y entrega los archivos de traducción actualizados mediante una solicitud de incorporación de cambios. Sus traducciones se mantienen sincronizadas sin ningún paso manual.
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.


Traducción de Java con IA
Obtenga traducciones contextualizadas en minutos
Cargue archivos o automatice mediante la API o la integración de Git