Is there a way in Java to create a Locale.LanguageRange from a locale?
I am currently doing this:
List<LanguageRange> ranges =
Locale.LanguageRange.parse(
locale.toString()
.replace('_', '-')
+ ";q=1.0");
He feels dirty and very inelegant.
Is there a better or even standard way to do this? I could not find him.
Minimum working example:
import java.util.Collection;
import java.util.List;
import java.util.Locale;
import java.util.Locale.LanguageRange;
public class LanguageUtil {
public static Locale getClosestMatch(Locale locale, Locale defaultLocale, Collection<Locale> allowedLanguages) {
List<LanguageRange> ranges = Locale.LanguageRange.parse(
locale.toString().replace('_', '-') + ";q=1.0," +
locale.getLanguage() + ";q=0.5," +
defaultLocale.toString().replace('_', '-') + ";q=0.0"));
return Locale.filter(ranges, allowedLanguages).get(0);
}
}
source
share