【问题标题】:Node JS - how to detect user languageNode JS - 如何检测用户语言
【发布时间】:2017-09-06 09:59:22
【问题描述】:

我正在尝试检查纯节点 js 中的用户语言,没有来自 npm 的任何扩展。 我使用了进程和全局命令,有很多规范但我找不到系统语言

【问题讨论】:

    标签: node.js


    【解决方案1】:

    这是获取默认语言环境的一种独立于操作系统/节点/浏览器的方法

    Intl.DateTimeFormat().resolvedOptions().locale

    【讨论】:

      【解决方案2】:

      答案就在您的问题中。你不想使用插件,但你可以看看how they do it :)

      答案是environment

      剧透

      function getEnvLocale(env) {
          env = env || process.env;
      
          return env.LC_ALL || env.LC_MESSAGES || env.LANG || env.LANGUAGE;
      }
      

      别忘了适应不同的平台(mac, linux, windows...)

      【讨论】:

      • 另一个你可能错过的环境变量(Linux Mint 18):LC_NAME: 'en_ZA.UTF-8
      • 这是唯一适用于 Windows 的答案之一。
      • 我尝试使用它,它对我有用,但现在突然没有,它们都没有定义,我只是从中得到未定义:(。在 Windows 10,节点 16.3.0 上进行测试跨度>
      【解决方案3】:

      如果您想获取用户的操作系统语言,您可以尝试从环境中获取它:

      const env = process.env;
      const language = env.LANG || env.LANGUAGE || env.LC_ALL || env.LC_MESSAGES;
      

      在大多数情况下process.env.LANG 应该可以工作。它将包含 ISO 639-1 语言代码、ISO 3166-1 国家代码和编码名称。

      示例:en_US.UTF-8uk_UA.UTF-8

      但是它可以被不同的环境变量覆盖,例如LC_ALLLC_MESSAGES 等。

      这是来自Linux ManualLANG 环境变量的描述:

      在不使用时用于区域设置类别的区域设置名称 被 LC_ALL 或更具体的环境变量覆盖 例如 LC_COLLATE、LC_CTYPE、LC_MESSAGES、LC_MONETARY、 LC_NUMERIC 和 LC_TIME。

      【讨论】:

      • 它有效,但仅适用于 linux 或 mac。 windows有类似的东西吗?
      • 据我所知,没有环境变量,甚至没有 CLI 命令来获取 Windows 上的语言环境。也许这个问题会帮助serverfault.com/questions/173630/…
      • 这不是你会得到的服务器端语言吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 2018-11-04
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      相关资源
      最近更新 更多