小编tim*_*ley的帖子

在 Java 中从语言环境创建 Locale.LanguageRange 的标准方法

在 Java 中有没有办法从语言环境创建 Locale.LanguageRange?

目前我这样做:

List<LanguageRange> ranges = 
        Locale.LanguageRange.parse(
                locale.toString()  // locale.toString() gives en_GB
                .replace('_', '-') // parse() needs en-GB
                + ";q=1.0");       // weight
Run Code Online (Sandbox Code Playgroud)

感觉很脏,很不雅观。

有没有更好甚至标准的方法来做到这一点?我找不到一个。

最小工作示例:

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," +           //exact match e.g. en-GB -> en-GB
                    locale.getLanguage() + ";q=0.5," +                          //close match e.g. en-US -> en-GB
                    defaultLocale.toString().replace('_', '-') + ";q=0.0"));    //default match …
Run Code Online (Sandbox Code Playgroud)

java localization java-8

5
推荐指数
1
解决办法
1747
查看次数

标签 统计

java ×1

java-8 ×1

localization ×1