设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

介绍JavaScript国际化API

2014-12-17 11:02| 发布者: joejoe0332| 查看: 3214| 评论: 0|原作者: douxingxiang, 开源中国七里香, daxiang|来自: oschina

摘要: Firefox 29 是在半年之前发布的,所以这篇文章有点过时了。这里我先停一会,讨论一下该桌面版附带的国际化API(已经通过所有得测试)。 大多数的实现是由Norbert Lindenberg 所写,由我审查和维护。(不久Makoto Kat ...


琐碎

  检测某个操作是否支持特定区域,或者一个区域是否被支持,会很有用。Intl在每个构造函数上都提供了supportedLocales()函数,在每个原型上提供了resolvedOptions()函数来公开这些信息。

1
2
3
4
5
6
7
8
9
10
var navajoLocales =
  Intl.Collator.supportedLocalesOf(["nv"], { usage: "sort" });
print(navajoLocales.length > 0
      "Navajo collation supported"
      "Navajo collation not supported"); 
var germanFakeRegion =
  new Intl.DateTimeFormat("de-XX", { timeZone: "UTC" });
var usedOptions = germanFakeRegion.resolvedOptions();
print(usedOptions.locale);   // de
print(usedOptions.timeZone); // UTC

遗留行为

  ES5的toLocaleString和localeCompar函数之前没有特定语义,不接受特定选项,基本上没有任何用处。因此i18n API根据Intl操作重组了它们。现在每个方法都接受附加的尾随locales和options参数,它们会像Intl构造函数一样被解释。(除了toLocaleTimeString 和 toLocaleDateString, 如果options没有,它们就会使用不同的默认组件)

  对并不关心精确行为的简单应用,这没关系,老方法也可以用。但是如果需要更多控制或者多次格式化、比较的话,最好直接使用Intl。


结论

  国际化是个非常有意思的话题,它的复杂性仅在于人们沟通方式的多样性。国际化API解释了这个复杂性的一小部分但是非常有用的部分,使创建区域设置有关的web应用更加方便。所以赶紧使用吧!

  (非常感谢Norbert Lindenberg, Anas El Husseini, Simon Montagu, Gary Kwong, Shu-yu Guo, Ehsan Akhgari, #mozilla.de的成员, 还有我可能忘掉的人[sorry!], 他们对本文提供了反馈或者帮助我编写或批评修正例子。英语和德语的例子已经超过了我的能力,对于其他例子,如果没有他们,我已经不知道怎么做了。如果还有错误,都责怪我吧。再次感谢!)


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部