Ya en su día leí algo sobre el tema de internacionalización de java, eso de que de forma más o menos automática salgan los textos de nuestra aplicación en el idioma del sistema operativo.
Cuando lo leí no me llamó especialmente la atención, ya que pensaba que símplemente era hacer unos ficheros de propiedades en los que se pone etiqueta=valor, donde etiqueta es un nombre que nosotros queramos para cada etiqueta que vayamos a visualizar y valor es el texto que debemos mostrar. En el código bastaba con cargar dicho fichero de propiedades e ir leyendo de ahí las etiquetas que queríamos poner en pantalla.
Sin embargo, hay otra posibilidad que puede pasar desapercibida, al menos, a mí se me paso. Podemos meter esas etiquetas directamente en código, en una clase que herede de ListResourceBundle. Debemos hacer una clase por cada idioma.
De esta forma, si en el código decimos ResourceBundle.getBundle("Etiquetas") y estamos en español de España, java buscará primero una clase Etiquetas_es_ES.class de la que obtener las etiquetas y si no la encuentra buscará el fichero Etiquetas_es_ES.properties
Otra cosa curiosa, es que java busca hasta tres clases o ficheros. En nuestro caso anterior, busca primero Etiquetas_es_ES. Si no lo encuentra, busca Etiquetas_es y si no lo encuentra, busca Etiquetas. De esto, lo realmente interesante es que podemos hacer los tres ficheros o clases con esos nombres y si existen los tres, java buscará la etiqueta en ellos en ese orden, hasta que la encuentre. De esta forma, por ejemplo, podemos poner las etiquetas en españos en Etiquetas_es. Luego, para Argentina, hacemos un Etiquetas_es_AR con sólo aquellas etiquetas que cambien respecto al español de España.
Un tema que me ha resultado más interesante de lo que me pareción en principio y que me ha dado una muestra más de la forma de hacer de java.
Por supuesto, he hecho mi pequeño tutorial de internacionalización en java.