如何查找多种语言的国家代码

How to find a country code in multiple languages

我的问题是我得到了不同语言的国家列表。全部在文本文件中。例如:

pl_PL   Japonia
en_GB   Spain
en_EN   Portugal

我正在寻找一种方法来查找国家代码,知道不同语言的名称,以便我可以用其他语言打印它。例如:

pl_PL   Japonia    -- translate to english -->     en_EN  Japan
en_EN   Portugal   -- translate to polish  -->     pl_PL  Portugalia

我想为每种语言制作一个哈希图,我会在其中放置所有可用的国家和代码,但我不知道如何制作。我已经制作了一张这样的地图,但我不知道如何制作多种语言。

    Locale[] allLocs = Locale.getAvailableLocales();
    Map map = new HashMap();
    String country = null;

    for (int j=0; j<allLocs.length; j++) {
        Locale.setDefault(new Locale(langArray[0]));
        String countryCode = allLocs[j].getCountry();

        if (countryCode.equals("")) continue;
        kraj =  allLocs[j].getDisplayCountry();
        map.put(country , allLocs[j]);
    }

您要查找的内容称为 exonym or xenonym,java、

中没有开箱即用的 class

我建议先创建一对 class,然后再创建一个 map<string, pair>,这样您就可以匹配应用程序中的所有组合

示例:

public class I18N {
    private Map<String, Map<String, String>> languages;
    public static void main(String[] args) {
    new I18N();
    }
    public I18N() {
    this.languages = new HashMap<String, Map<String, String>>();
    Map<String, String> l = new HashMap<String, String>();
    l.put("Spanish", "Japon");
    l.put("Polnish", "Japonia");
    languages.put("Japan", l);
    //
    System.out.println(languages.get("Japan").get("Polnish"));
    }
}

因此此代码段将查找国家/地区日本,然后查找波兰语中的该名称...

不好的部分是您需要填充自己的外来语名目录

可能您的尝试中 Locale 构造出错了。您需要从输入文件中检索以下内容:

    final Locale locale1 = new Locale("pl", "PL");
    final String country1 = "Japonia";

然后给定目标语言环境:

    final Locale locale2 = new Locale("en", "US");

可以像您一样找到国家。在 java 8:

    final Locale[] locales = Locale.getAvailableLocales();
    Optional<String> country2 = Stream.of(locales)
            .filter((loc) -> country1.equals(loc.getDisplayCountry(locale1)))
            .map((cloc) -> cloc.getDisplayCountry(locale2))
            .filter((s) -> !s.isEmpty())
            .findAny();
    System.out.println(country2.orElse("not found"));
  1. 这会以第一语言搜索显示国家/地区的每个位置。
  2. 那么第二语言的显示国家就是用对应国家的那个cloc
  3. 非空。