diff --git a/app/src/processing/app/I18n.java b/app/src/processing/app/I18n.java index d87442c0a..21021fa85 100644 --- a/app/src/processing/app/I18n.java +++ b/app/src/processing/app/I18n.java @@ -13,8 +13,10 @@ package processing.app; -import java.util.*; import java.text.MessageFormat; +import java.util.Locale; +import java.util.MissingResourceException; +import java.util.ResourceBundle; public class I18n { // start using current locale but still allow using the dropdown list later @@ -28,16 +30,21 @@ public class I18n { static String PROMPT_OK; static String PROMPT_BROWSE; - static protected void init (String language) throws MissingResourceException { + static protected void init(String language) throws MissingResourceException { // there might be a null pointer exception ... most likely will never happen but the jvm gets mad try { - if (language != null && language.trim().length() > 0) { - Locale locale = new Locale(language); - i18n = ResourceBundle.getBundle("processing.app.i18n.Resources", locale); - Locale.setDefault(locale); - } else { - i18n = ResourceBundle.getBundle("processing.app.i18n.Resources", Locale.getDefault()); + String[] languageParts = language.split("_"); + Locale locale = Locale.getDefault(); + // both language and country + if (languageParts.length == 2) { + locale = new Locale(languageParts[0], languageParts[1]); + // just language + } else if (languageParts.length == 1 && !"".equals(languageParts[0])) { + locale = new Locale(languageParts[0]); } + // there might be a null pointer exception ... most likely will never happen but the jvm gets mad + Locale.setDefault(locale); + i18n = ResourceBundle.getBundle("processing.app.i18n.Resources", Locale.getDefault()); PROMPT_YES = _("Yes"); PROMPT_NO = _("No"); PROMPT_CANCEL = _("Cancel"); @@ -54,18 +61,18 @@ public class I18n { } catch (MissingResourceException e) { res = s; } - + // The single % is the arguments selector in .PO files. // We must put double %% inside the translations to avoid // getting .PO processing in the way. res = res.replace("%%", "%"); - + return res; } - public static String format(String fmt, Object ... args) { + public static String format(String fmt, Object... args) { // Single quote is used to escape curly bracket arguments. - + // - Prevents strings fixed at translation time to be fixed again fmt = fmt.replace("''", "'"); // - Replace ' with the escaped version '' @@ -73,10 +80,10 @@ public class I18n { return MessageFormat.format(fmt, args); } - + /** * Does nothing. - * + *

* This method is an hack to extract words with gettext tool. */ protected static void unusedStrings() {