- Timestamp:
- 2010-01-09T06:53:00+01:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/tools/I18n.java
r2757 r2785 9 9 import java.util.Comparator; 10 10 import java.util.HashMap; 11 import java.util.LinkedList;12 11 import java.util.Locale; 13 import java.util.MissingResourceException;14 12 import java.util.Vector; 15 13 16 14 import org.openstreetmap.josm.Main; 17 import org.openstreetmap.josm.gui.progress.ProgressMonitor;18 15 19 16 /** … … 24 21 public class I18n { 25 22 private enum PluralMode { MODE_NOTONE, MODE_NONE, MODE_GREATERONE, 26 MODE_CS, MODE_AR, MODE_PL, MODE_RO, MODE_RU, MODE_SK, MODE_SL} 23 MODE_CS, MODE_AR, MODE_PL, MODE_RO, MODE_RU, MODE_SK, MODE_SL} 27 24 private static PluralMode pluralMode = PluralMode.MODE_NOTONE; /* english default */ 28 25 private static HashMap<String, String> strings = null; … … 168 165 169 166 /* try initial language settings, may be changed later again */ 170 if(!load(Locale.getDefault().toString())) 167 if(!load(Locale.getDefault().toString())) { 171 168 Locale.setDefault(Locale.ENGLISH); 169 } 172 170 } 173 171 174 172 private static boolean load(String l) 175 173 { 176 if(l.equals("en")) 177 { 178 strings = null; 179 pstrings = null; 180 pluralMode = PluralMode.MODE_NOTONE; 181 return true; 174 if(l.equals("en") || l.equals("en_US")) 175 { 176 strings = null; 177 pstrings = null; 178 pluralMode = PluralMode.MODE_NOTONE; 179 return true; 182 180 } 183 181 URL en = Main.class.getResource("/data/en.lang"); … … 188 186 { 189 187 int i = l.indexOf('_'); 190 if (i > 0) 188 if (i > 0) { 191 189 l = l.substring(0, i); 190 } 192 191 tr = Main.class.getResource("/data/"+l+".lang"); 193 192 if(tr == null) … … 211 210 string 212 211 } 213 */ 212 */ 214 213 try 215 214 { 216 215 InputStream ens = new BufferedInputStream(en.openStream()); 217 216 InputStream trs = new BufferedInputStream(tr.openStream()); 218 if(ens == null || trs == null)219 return false;220 217 byte[] enlen = new byte[2]; 221 218 byte[] trlen = new byte[2]; … … 230 227 if((ennum == -1 && trnum != -1) || (ennum != -1 && trnum == -1)) /* files do not match */ 231 228 return false; 232 if(ennum == -1) /* EOF */229 if(ennum == -1) { 233 230 break; 231 } 234 232 String[] enstrings = new String[ennum]; 235 233 String[] trstrings = new String[trnum]; … … 240 238 return false; 241 239 val = (enlen[0] < 0 ? 256+enlen[0]:enlen[0])*256+(enlen[1] < 0 ? 256+enlen[1]:enlen[1]); 242 if(val > str.length) 240 if(val > str.length) { 243 241 str = new byte[val]; 242 } 244 243 int rval = ens.read(str, 0, val); 245 244 if(rval != val) /* file corrupt */ … … 253 252 return false; 254 253 val = (trlen[0] < 0 ? 256+trlen[0]:trlen[0])*256+(trlen[1] < 0 ? 256+trlen[1]:trlen[1]); 255 if(val > str.length) 254 if(val > str.length) { 256 255 str = new byte[val]; 256 } 257 257 int rval = trs.read(str, 0, val); 258 258 if(rval != val) /* file corrupt */ … … 260 260 trstrings[i] = new String(str, 0, val, "utf-8"); 261 261 } 262 if(trnum > 0) 262 if(trnum > 0) { 263 263 p.put(enstrings[0], trstrings); 264 } 264 265 } 265 266 else … … 269 270 if(enval != trval) /* files do not match */ 270 271 return false; 271 if(enval == -1) /* EOF */272 if(enval == -1) { 272 273 break; 274 } 273 275 if(enval != 2) /* files corrupt */ 274 276 return false; … … 283 285 else 284 286 { 285 if(enval > str.length) 287 if(enval > str.length) { 286 288 str = new byte[enval]; 287 if(trval > str.length) 289 } 290 if(trval > str.length) { 288 291 str = new byte[trval]; 292 } 289 293 int val = ens.read(str, 0, enval); 290 294 if(val != enval) /* file corrupt */ … … 366 370 case MODE_AR: 367 371 return ((n == 0) ? 0 : ((n == 1) ? 1 : ((n == 2) ? 2 : ((((n % 100) >= 3) 368 && ((n % 100) <= 10)) ? 3 : ((((n % 100) >= 11) && ((n % 100) <= 99)) ? 4 : 5))))); 372 && ((n % 100) <= 10)) ? 3 : ((((n % 100) >= 11) && ((n % 100) <= 99)) ? 4 : 5))))); 369 373 case MODE_PL: 370 374 return ((n == 1) ? 0 : (((((n % 10) >= 2) && ((n % 10) <= 4)) 371 && (((n % 100) < 10) || ((n % 100) >= 20))) ? 1 : 2)); 375 && (((n % 100) < 10) || ((n % 100) >= 20))) ? 1 : 2)); 372 376 case MODE_RO: 373 377 return ((n == 1) ? 0 : ((((n % 100) > 19) || (((n % 100) == 0) && (n != 0))) ? 2 : 1)); 374 378 case MODE_RU: 375 379 return ((((n % 10) == 1) && ((n % 100) != 11)) ? 0 : (((((n % 10) >= 2) 376 && ((n % 10) <= 4)) && (((n % 100) < 10) || ((n % 100) >= 20))) ? 1 : 2)); 380 && ((n % 10) <= 4)) && (((n % 100) < 10) || ((n % 100) >= 20))) ? 1 : 2)); 377 381 case MODE_SK: 378 382 return ((n == 1) ? 1 : (((n >= 2) && (n <= 4)) ? 2 : 0)); 379 383 case MODE_SL: 380 384 return (((n % 100) == 1) ? 1 : (((n % 100) == 2) ? 2 : ((((n % 100) == 3) 381 || ((n % 100) == 4)) ? 3 : 0))); 385 || ((n % 100) == 4)) ? 3 : 0))); 382 386 } 383 387 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.