From: Hendrik B. <nh...@us...> - 2011-07-31 22:12:42
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/server/core/engine In directory vz-cvs-4.sog:/tmp/cvs-serv10144/src/games/stendhal/server/core/engine Modified Files: Translate.java Log Message: load language files manually instead of using Properties.load to support unicode and don't require spaces to be escaped Index: Translate.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/core/engine/Translate.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Translate.java 31 Jul 2011 22:03:37 -0000 1.1 --- Translate.java 31 Jul 2011 22:12:40 -0000 1.2 *************** *** 12,19 **** package games.stendhal.server.core.engine; import java.io.IOException; import java.util.HashMap; import java.util.Map; - import java.util.Properties; import marauroa.common.io.UnicodeSupportingInputStreamReader; --- 12,21 ---- package games.stendhal.server.core.engine; + import java.io.BufferedReader; import java.io.IOException; + import java.io.InputStream; + import java.util.Arrays; import java.util.HashMap; import java.util.Map; import marauroa.common.io.UnicodeSupportingInputStreamReader; *************** *** 41,52 **** } ! @SuppressWarnings({ "unchecked", "rawtypes" }) private static void init(String language) { try { ! UnicodeSupportingInputStreamReader reader = new UnicodeSupportingInputStreamReader(Translate.class.getClassLoader().getResourceAsStream("data/language/" + language + ".txt")); ! Properties prop = new Properties(); ! prop.load(reader); reader.close(); ! texts.put(language, new HashMap(prop)); } catch (IOException e) { logger.error(e, e); --- 43,70 ---- } ! /** ! * loads a lauguage file ! * ! * @param language language ! */ private static void init(String language) { try { ! InputStream is = Translate.class.getClassLoader().getResourceAsStream("data/language/" + language + ".txt"); ! BufferedReader reader = new BufferedReader(new UnicodeSupportingInputStreamReader(is)); ! ! // we cannot use Properties.load because that does a) not support unicode and b) splits on the first space ! Map<String, String> map = new HashMap<String, String>(); ! String line = reader.readLine(); ! while (line != null) { ! String[] tokens = line.split("=", 2); ! if (tokens.length != 2) { ! System.err.println(line + "///" + Arrays.toString(tokens)); ! } else { ! map.put(tokens[0], tokens[1]); ! } ! line = reader.readLine(); ! } reader.close(); ! texts.put(language, map); } catch (IOException e) { logger.error(e, e); |