@Inject public I18nConfigurationHandler(Application application, LocaleService localeService) { I18nConfig i18nConfig = application.getConfiguration().get(I18nConfig.class); List<String> additionalLocales = i18nConfig.getAdditionalLocales(); supportedLocales = sortLanguages( W20_BUILTIN_LOCALES, additionalLocales.toArray(new String[additionalLocales.size()]) ); localeMatcher = new LocaleMatcher(LocalePriorityList.add(Joiner.on(',').join(supportedLocales)).build()); this.localeService = localeService; }
/** * Adds rfc2616 list. * * @param acceptLanguageList in rfc2616 format * @return this, for chaining. * @stable ICU 4.4 */ public Builder add(final String acceptLanguageList) { final String[] items = languageSplitter.split(acceptLanguageList.trim()); final Matcher itemMatcher = weightSplitter.matcher(""); for (final String item : items) { if (itemMatcher.reset(item).matches()) { final ULocale language = new ULocale(itemMatcher.group(1)); final double weight = Double.parseDouble(itemMatcher.group(2)); if (!(weight >= D0 && weight <= D1)) { // do ! for NaN throw new IllegalArgumentException("Illegal weight, must be 0..1: " + weight); } add(language, weight); } else if (item.length() != 0) { add(new ULocale(item)); } } return this; } }
ULocale getClosestULocale(String locale) { String defaultLocale = getDefaultLocale(); if (isAvailable(locale)) { return new ULocale(locale); } LocalePriorityList.Builder builder = null; if (defaultLocale != null) { builder = LocalePriorityList.add(defaultLocale); } for (String availableLocale : getAvailableLocales()) { if (defaultLocale == null || !defaultLocale.equals(availableLocale)) { if (builder == null) { builder = LocalePriorityList.add(availableLocale); } builder.add(availableLocale); } } if (builder != null) { LocaleMatcher localeMatcher = new LocaleMatcher(builder.build()); return localeMatcher.getBestMatch(locale); } else { return null; } } }
private ULocale getClosestULocale(String locale) { if (isAvailable(locale)) { return new ULocale(locale); } String defaultLocale = getDefaultLocale(); LocalePriorityList.Builder builder = null; if (defaultLocale != null) { builder = LocalePriorityList.add(defaultLocale); } for (String availableLocale : getAvailableLocales()) { if (defaultLocale == null || !defaultLocale.equals(availableLocale)) { if (builder == null) { builder = LocalePriorityList.add(availableLocale); } builder.add(availableLocale); } } if (builder != null) { LocaleMatcher localeMatcher = new LocaleMatcher(builder.build()); return localeMatcher.getBestMatch(locale); } else { return null; } } }
/** * Adds a LocalePriorityList * * @param languagePriorityList a LocalePriorityList * @return this, for chaining * @stable ICU 4.4 */ public Builder add( final LocalePriorityList languagePriorityList) { for (final ULocale language : languagePriorityList.languagesAndWeights .keySet()) { add(language, languagePriorityList.languagesAndWeights.get(language)); } return this; }
private static LocaleMatcher CreateDefaultMatcher() { LocalePriorityList priorityList = LocalePriorityList.add(ULocale.ROOT).build(); return new LocaleMatcher(priorityList); }
/** * Adds language codes, with each having weight = 1.0. * * @param languageCodes List of language codes. * @return this, for chaining. * @stable ICU 4.4 */ public Builder add(ULocale... languageCodes) { for (final ULocale languageCode : languageCodes) { add(languageCode, D1); } return this; }
/** * Convenience method: Get the best match for a LanguagePriorityList * * @param languageList String form of language priority list * @return best matching language code * @stable ICU 4.4 */ public ULocale getBestMatch(String languageList) { return getBestMatch(LocalePriorityList.add(languageList).build()); }
/** * Create a new language matcher from a String form. The highest-weighted * language is the default. * * @param languagePriorityListString String form of LanguagePriorityList * @stable ICU 4.4 */ public LocaleMatcher(String languagePriorityListString) { this(LocalePriorityList.add(languagePriorityListString).build()); }
/** * @internal * @deprecated This API is ICU internal only. */ @Deprecated public ULocale getBestMatch(ULocale... ulocales) { return getBestMatch(LocalePriorityList.add(ulocales).build()); }
/** * Adds a new language code, with weight = 1.0. * * @param languageCode to add with weight 1.0 * @return this, for chaining * @stable ICU 4.4 */ public Builder add(final ULocale languageCode) { return add(languageCode, D1); }
/** * Add language codes to the list being built, using a string in rfc2616 * (lenient) format, where each language is a valid {@link ULocale}. * * @param acceptLanguageString String in rfc2616 format (but leniently parsed) * @return internal builder, for chaining * @stable ICU 4.4 */ public static Builder add(String acceptLanguageString) { return new Builder().add(acceptLanguageString); }
/** * Add a language code to the list being built, with specified weight. * * @param languageCode locale/language to be added * @param weight value from 0.0 to 1.0 * @return internal builder, for chaining * @stable ICU 4.4 */ public static Builder add(ULocale languageCode, final double weight) { return new Builder().add(languageCode, weight); }
/** * Creates a LocalePriorityList. This is equivalent to * {@link Builder#build(boolean) Builder.build(false)}. * * @return A LocalePriorityList * @stable ICU 4.4 */ public LocalePriorityList build() { return build(false); }