代码之家  ›  专栏  ›  技术社区  ›  Eleanor Holley

如何在JavaScript中使用“最佳匹配”语言环境?

  •  0
  • Eleanor Holley  · 技术社区  · 7 年前

    到目前为止,我对这个问题的理解是:

    我在看书 this MDN document

    去掉所有Unicode扩展后,locales参数被解释为来自应用程序的优先请求。运行时将其与可用的区域设置进行比较,并选择可用的最佳区域设置。存在两种匹配算法:“查找”匹配器遵循BCP 47中指定的查找算法;“最佳匹配”匹配器使运行时提供的区域设置至少比查找算法的结果更适合请求。如果应用程序不提供locales参数,或者运行时没有与请求匹配的区域设置,则使用运行时的默认区域设置。可以使用options参数的属性选择匹配器(请参见下文)。

    new Intl.DateTimeFormat('lookup', options).format(date)
    

    但不是:

    new Intl.DateTimeFormat('best fit', options).format(date)
    

    我使用的是最新版本的Firefox(Ubuntu上为65.0.1 64位),据我所知,Firefox在这个问题上没有任何漏洞,但当我使用 'best fit'

    剩余问题:

    我应该能给你这个机会吗 “最适合” 作为locale参数,或者我只能将其用作 localeMatcher options 论点如果我只能使用 “最适合” 在…内 ,那么我应该指定什么作为 locale ,鉴于 场所 选择权 有人在场吗?

    还是我应该在Bugzilla开一张票?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Randy Casburn    7 年前

    在第一个示例中,一个字符串被传递给 Intl.DateTimeFormat 所以 出现

    第二个示例不起作用,因为字符串没有按照BCP 47进行格式化。

    locales参数必须是包含BCP 47语言的字符串 标记,或此类语言标记的数组。如果locales参数不是

    明确指出第一个参数应该是字符串或(字符串数组),它是/是区域设置标识符。

    那么这个,

    选项参数必须是具有不同属性的对象 在构造函数和函数之间。

    因此,您对的呼叫应如下所示:

    new Intl.DateTimeFormat([],{localeMatcher: "best fit"}).format(date)
    
    推荐文章