有什么方法可以从Windows属性而不是从JVM获取国家ISO-2代码

问题描述

基本上是标题,我已经尝试过:

const NodeCouchDb = require("node-couchdb");

const couch = new NodeCouchDb({
  host: process.env.DB_HOST,protocol: process.env.DB_PROTOCOL,port: process.env.DB_PORT,auth: {
    user: process.env.DB_USER_NAME,pass: process.env.PASSWORD,},});

module.exports = {
  couch
};

当我在寡妇设置中完全设置其他内容时,这一切都会给我美国或英语。 请给我任何建议。 因此,我希望获得Contry代码,例如,如果我在系统中设置了波兰,则ID为“ PL”,但即时消息为“ US”

解决方法

默认Java语言环境不必与系统语言环境相同,因为它可以被覆盖

  • 具有user.countryuser.languageuser.variant系统属性;
  • 通过致电Locale.setDefault()

有用于获取操作系统提供的语言环境信息的非标准未记录API。它在Windows Vista或更高版本上实现。尝试以下代码段。

import sun.util.locale.provider.HostLocaleProviderAdapter;

...

    static String getHostCountry() {
        for (Locale locale : new HostLocaleProviderAdapter().getAvailableLocales()) {
            if (!locale.getCountry().isEmpty()) {
                return locale.getCountry();
            }
        }
        return null;
    }