Java UNICODE

Recientemente el eclipse ha dejado de convertir de UTF-8 a unicode mis properties de i18n. En lugar de intentar arreglarlo (acierto), me he puesto a configurar los acentos y eñes en los distintos lenguajes con los que trabajamos, a mano (error).

Aquí esta la tabla con los caracteres específicos del castellano.

Como no tengo tiempo a mas, aquí pongo unos blogs y tutoriales sobre como maneja Java el UNICODE:

Anuncios
Java UNICODE

Traducir un properties de manera semiautomatica

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;
	}
}
Traducir un properties de manera semiautomatica