通过示例国际化静态网站

时间:2018-02-21 14:25:09

标签: javascript html5 nginx internationalization

我有一个简单的静态HTML网站(它在这里和那里使用了一些JS库,但没有真正的JS框架,如React,Angular,Node等),它们是通过nginx提供的。我想将它国际化,并想知道一些方法代码用于语言环境检测以及语言文件绑定。

通常,当您对应用程序进行国际化时,您会使用某种i18n库,并将所有面向用户的文本拉出到我所说的" 语言文件"中。这些文件可能是JSON,它们可能是YAML,它们甚至可能是键值对的属性文件。但是这个想法是每种支持的语言都有一个文件,每个文件包含相同的密钥,但每个密钥的值都不同,具体取决于它所实现的语言。

例如,您可能有一个en_US.properties(美国英语)语言文件,如下所示:

greeting=Hello!
initial.display=Welcome to internet

但是,您可能还有一个fr_FR.properties(法语)语言文件,如下所示:

greeting=Bonjour!
initial.display=Bienvenue sur internet

然后,您可能会执行以下操作:

,而不是在HTML中放置面向用户的文本
<h1>${greeting}</h1>
${initial.display}

然后在运行时,使用i18n库检测登录用户的语言环境,并自动选择正确的语言文件加载并绑定到HTML模板中的变量。我推广并可能过度简化它,但这是如何使用应用程序的要点。

但是在这里,我们有一个静态的HTML网站,没有用户:每个人都是匿名的

我想知道:

  • 用于检测/推断首选区域设置的常用策略是什么?我想知道是否有我可以寻找的普遍接受或甚至是标准化的浏览器cookie(例如&#34; preferredLocale&#34;),或者可能使用顶级域名(.com, .fr,.ru)等。或者推荐人的IP地址和映射回到地理位置?和
  • 想知道什么简单(不想拉动重量级框架,如Node,React等)库可能会帮助我完成语言文件绑定(一旦我弄清楚如何确定用户&#39) ; s首选的语言环境)

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

此代码很好(客户端),但我不知道跨浏览器有多成功(无论如何都适用于Firefox):

var lang = navigator.language || navigator.userLanguage;

然后使用区域设置字符串(例如en-US)使用AJAX打开相应的语言文件。

显然你也可以使用服务器端方法来检测语言环境,即Accept-Language HTTP标题,如here所示,但我对此方法一无所知。