Index: lutinutil/src/java/org/codelutin/i18n/LocaleEnum.java diff -u lutinutil/src/java/org/codelutin/i18n/LocaleEnum.java:1.2 lutinutil/src/java/org/codelutin/i18n/LocaleEnum.java:1.3 --- lutinutil/src/java/org/codelutin/i18n/LocaleEnum.java:1.2 Thu Feb 21 23:11:49 2008 +++ lutinutil/src/java/org/codelutin/i18n/LocaleEnum.java Mon Mar 3 13:15:35 2008 @@ -25,25 +25,27 @@ /** * Une énumération pour représenter des locales utilisateurs. - * + *
* TODO add other locales * * @author chemit */ public enum LocaleEnum { - fr(LanguageEnum.fr, CountryEnum.FR, n_("lutinutil.i18n.locale.fr")), - en(LanguageEnum.en, CountryEnum.GB, n_("lutinutil.i18n.locale.en")); + fr(LanguageEnum.fr, CountryEnum.FR, n_("lutinutil.i18n.locale.fr"), Locale.FRANCE, Locale.FRENCH), + en(LanguageEnum.en, CountryEnum.GB, n_("lutinutil.i18n.locale.en"), Locale.ENGLISH, Locale.UK, Locale.US); private CountryEnum country; private LanguageEnum langage; private String libelle; private Locale locale; + private Locale[] acceptingLocales; - LocaleEnum(LanguageEnum language, CountryEnum country, String libelle) { + LocaleEnum(LanguageEnum language, CountryEnum country, String libelle, Locale... acceptingLocales) { this.langage = language; this.country = country; this.libelle = libelle; + this.acceptingLocales = acceptingLocales; } public CountryEnum getCountry() { @@ -54,6 +56,10 @@ return langage; } + public Locale[] getAcceptingLocales() { + return acceptingLocales; + } + public String getLibelle() { return libelle; } @@ -64,7 +70,7 @@ public Locale getLocale() { if (locale == null) { - locale = new Locale(langage.name(),country.name()); + locale = new Locale(langage.name(), country.name()); } return locale; } @@ -78,6 +84,17 @@ } catch (NullPointerException e) { System.err.println(_("lutinutil.error.i18n.unfound.locale", locale, defaultValue)); } + // try in accepting locales + if (localeValue == null) { + for (LocaleEnum localeEnum : values()) { + for (Locale locale1 : localeEnum.getAcceptingLocales()) { + if (locale1.toString().equals(locale)) { + localeValue = localeEnum; + break; + } + } + } + } return localeValue == null ? defaultValue : localeValue; } } \ No newline at end of file