Lo más común en aplicaciones de java es tener los textos externalizados en un fichero .properties (ResourceBundle)
Estos ficheros vienen ISO-8859-1 (lo que da algún quebradero de cabeza) y tienen un sufijo para cada idioma.
Por ejemplo, el idioma por defecto estaría en el fichero messages.properties, el inglés en messages_en.properties, el ruso en messages_ru.properties, el español en messages_es.properties, etc
Pues bien, normalmente con el tiempo esto acaba siendo un lío y todos los textos acaban desordenados y/o no sabes que mensajes faltan por traducir
Si usas eclipse, recomiendo usar el plugin Eclipse ResourceBundle Editor, que te ayuda a ordenar, organizar y ver visualmente qué mensajes faltan por traducir entre unos ficheros y otros.
Pero como a veces esto no es suficiente, a continuación pongo algunos comandos en linux que nos ayudarán
Obtener las claves existentes en un .properties que no estan en otro
sort <FILE_A> | sed s/=[^=]*$// | sed '/^$/d' | sed 's/[ \t]*$//' | sed 's/^[ \t]*//' > /tmp/a sort <FILE_B> | sed s/=[^=]*$// | sed '/^$/d' | sed 's/[ \t]*$//' | sed 's/^[ \t]*//' > /tmp/b diff /tmp/a /tmp/b | tr -d '<>,' | sed 's/^[0-9d]*$//' | sed 's/^[ \t]*//' | sed '/^$/d' > /tmp/diff_ab
Con sort indicamos que nos ordene las líneas del archivo alfabéticamente. Con sed le indicamos que elimine desde el símbolo ‘=’ hasta final de línea (para quedarnos con las claves), que elimine las líneas vacías, y elimine los espacios al principio y al final. Luego redirigimos la salida para guardarlo en un fichero temporal
Esto lo hacemos para cada uno de los archivos en los que queramos ver las diferencias. Luego con diff comparamos los archivos y formateamos la salida para sacar solo el text
Obtener los textos existentes en un .properties que no estan en otro
Partiendo del archivo /tmp/diff_ab que hemos obtenido en la sección anterior, se lo pasamos a grep para obtener los pares clave / valor
grep -f /tmp/diff_ab <FILE_A> > /tmp/messages
Convertir los caracteres unicode (\u xxx) a ascii
Se puede usar la librería native2ascii
native2ascii -reverse /tmp/messages
Si estas interesado en traducir ficheros .properties, yo recomiendo altamente esta rápida y intuitiva herramienta en línea para la localización de software: https://poeditor.com/