X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fresources%2FTransBundle.java;h=ec5b2d0af93d7d17a629dca51c1d2a0b365fece0;hb=cd0c27d2e457ea19fcd9def879e1534a528292c2;hp=a3804401034692909302f04c50c39cdcad828e6d;hpb=80383c142f85a7850d0fbea418689608fdccac05;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/resources/TransBundle.java b/src/be/nikiroo/utils/resources/TransBundle.java index a380440..ec5b2d0 100644 --- a/src/be/nikiroo/utils/resources/TransBundle.java +++ b/src/be/nikiroo/utils/resources/TransBundle.java @@ -8,8 +8,6 @@ import java.util.List; import java.util.Locale; import java.util.regex.Pattern; -import be.nikiroo.utils.resources.Bundles; - /** * This class manages a translation-dedicated Bundle. *

@@ -19,6 +17,9 @@ import be.nikiroo.utils.resources.Bundles; *

  • DUMMY will return "[DUMMY]" (maybe with a suffix and/or "NOUTF")
  • * * + * @param + * the enum to use to get values out of this class + * * @author niki */ public class TransBundle> extends Bundle { @@ -35,7 +36,7 @@ public class TransBundle> extends Bundle { * the name of the {@link Bundles} */ public TransBundle(Class type, Enum name) { - super(type, name); + super(type, name, null); setLanguage(null); } @@ -51,7 +52,7 @@ public class TransBundle> extends Bundle { * the language to use */ public TransBundle(Class type, Enum name, String language) { - super(type, name); + super(type, name, null); setLanguage(language); } @@ -126,10 +127,11 @@ public class TransBundle> extends Bundle { result = null; } - if (values != null && values.length > 0 && result != null) + if (values != null && values.length > 0 && result != null) { return String.format(locale, result, values); - else - return result; + } + + return result; } /** @@ -158,7 +160,7 @@ public class TransBundle> extends Bundle { * @return the known language codes */ public List getKnownLanguages() { - return getKnownLanguages(name); + return getKnownLanguages(keyType); } /** @@ -171,12 +173,12 @@ public class TransBundle> extends Bundle { private void setLanguage(String language) { defaultLocale = (language == null || language.length() == 0); locale = getLocaleFor(language); - setBundle(name, locale); + setBundle(keyType, locale, false); } @Override - public void reload() { - setBundle(name, locale); + public void reload(boolean resetToDefault) { + setBundle(keyType, locale, resetToDefault); } @Override @@ -199,16 +201,26 @@ public class TransBundle> extends Bundle { @Override public void updateFile(String path) throws IOException { String prev = locale.getLanguage(); + Object status = takeSnapshot(); - setLanguage(null); // default locale + // default locale + setLanguage(null); + if (prev.equals(getLocaleFor(null).getLanguage())) { + // restore snapshot if default locale = current locale + restoreSnapshot(status); + } super.updateFile(path); for (String lang : getKnownLanguages()) { setLanguage(lang); + if (lang.equals(prev)) { + restoreSnapshot(status); + } super.updateFile(path); } setLanguage(prev); + restoreSnapshot(status); } @Override @@ -216,10 +228,10 @@ public class TransBundle> extends Bundle { String code = locale.toString(); File file = null; if (!defaultLocale && code.length() > 0) { - file = new File(path, name.name() + "_" + code + ".properties"); + file = new File(path, keyType.name() + "_" + code + ".properties"); } else { // Default properties file: - file = new File(path, name.name() + ".properties"); + file = new File(path, keyType.name() + ".properties"); } return file;