package net.prietopalacios.josemanuel.i18n.translate; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.junit.Test; /** * Permite coger la parte a traducir de un properties, posteriormente inserta el texto traducido en el properties */ public class InternacionalizaProperties { @Test public void cogePropertiesEnGallegoYcapturasSoloElTextoATraducir_MeLoPasasEnEsteFicheroDeSalida() throws IOException{ File salida = new File("src/test/resources/salida.txt"); FileInputStream fis = new FileInputStream("src/test/resources/lenguaje_gl_utf-8.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(fis, "UTF-8")); FileWriter fw = new FileWriter(salida.getAbsoluteFile()); BufferedWriter bw = new BufferedWriter(fw); while (true) { String line = br.readLine(); if(line == null) break; if(line.contains("=")){ String[] equals = line.split("="); bw.write(equals[1] + "n"); } } bw.close(); } @Test public void leeElFicheroSalidaAnteriorYMeLoSeparasEnBloquesDe2500Caracteres() throws IOException{ File salida = new File("src/test/resources/salida2.txt"); FileInputStream fis = new FileInputStream("src/test/resources/salida.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(fis, "UTF-8")); FileWriter fw = new FileWriter(salida.getAbsoluteFile()); BufferedWriter bw = new BufferedWriter(fw); String bloque = ""; int cont = 0; int contBloques = 0; while (true) { String line = br.readLine(); if(line == null) break; cont += line.length(); if(cont > 2000){ bw.write(bloque); bw.write("n"); bw.write("n"); bw.write("n"); contBloques++; cont = 0; bloque = line + "n"; cont += line.length(); }else{ bloque += line + "n"; } } bw.write("n"); bw.write("Han sido " + contBloques + " bloques."); bw.close(); } @Test /** * CUIDADO: el traductor de la Xunta hay cosas que no las entiende, como | `... o el codigo html * * @throws IOException */ public void elTextoTraducidoInsertaloEnUnProperties() throws IOException{ File salida = new File("src/test/resources/Language_gl.properties"); FileWriter fw = new FileWriter(salida.getAbsoluteFile()); BufferedWriter bw = new BufferedWriter(fw); FileInputStream fis = new FileInputStream("src/test/resources/lenguaje_gl_utf-8.txt"); BufferedReader original = new BufferedReader(new InputStreamReader(fis, "UTF-8")); FileInputStream fis2 = new FileInputStream("src/test/resources/textEnGalego.txt"); BufferedReader traduccion = new BufferedReader(new InputStreamReader(fis2, "UTF-8")); while (true) { String lineaOriginal = original.readLine(); if(lineaOriginal == null) break; if(lineaOriginal.contains("=")){ String lineaTraducida = traduccion.readLine(); String[] lineasOriginales = lineaOriginal.split("="); bw.write(lineasOriginales[0] + insertaTabComoEnOriginal(lineaOriginal) + "= "); if(lineasOriginales[1].contains(" <a id")){ bw.write(lineasOriginales[1] + "n"); }else{ bw.write(lineaTraducida + "n"); } }else{ bw.write(lineaOriginal + "n"); } } bw.close(); } private String insertaTabComoEnOriginal(String lineaOriginal) { String xtab = ""; for (int i = 0; i < cuentaTabuladores(lineaOriginal); i++) { xtab += "t"; } return xtab; } public int cuentaTabuladores(String linea){ int cont = 0; char[] array = linea.toCharArray(); for (int i = 0; i < array.length; i++) { if(array[i] == '\' && array[i + 1] == 't'){ cont++; } } return cont; } }
Un comentario en “Traducir un properties de manera semiautomatica”
Los comentarios están cerrados.
[…] creado un programa java: translator (basado en el post), que se ejecuta desde consola, para traducir textos o ficheros properties desde el castellano al […]