Javascript 通过实例实现静态网站的国际化

Javascript 通过实例实现静态网站的国际化,javascript,html,nginx,internationalization,Javascript,Html,Nginx,Internationalization,我有一个简单的静态HTML网站(在这里和那里使用一些JS库,但没有真正的JS框架,如React、Angular、Node等),它是通过nginx提供的。我想将其国际化,并且想知道对于区域设置检测和语言文件绑定,代码的一些方法是什么 通常,当你国际化一个应用程序时,你会使用某种i18n库,将所有面向用户的文本拉入我所谓的“语言文件”。这些文件可能是JSON,可能是YAML,甚至可能是键值对的属性文件。但是我们的想法是,每个支持的语言都有一个文件,每个文件都包含相同的键,但是每个键都有不同的值,这取

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

通常,当你国际化一个应用程序时,你会使用某种i18n库,将所有面向用户的文本拉入我所谓的“语言文件”。这些文件可能是JSON,可能是YAML,甚至可能是键值对的属性文件。但是我们的想法是,每个支持的语言都有一个文件,每个文件都包含相同的键,但是每个键都有不同的值,这取决于它所实现的语言

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

greeting=Hello!
initial.display=Welcome to internet
但是,您可能还有一个
fr\u fr.properties
(法语)语言文件,该文件如下所示:

greeting=Bonjour!
initial.display=Bienvenue sur internet
然后,您可以执行以下操作,而不是将面向用户的文本放入HTML中:

<h1>${greeting}</h1>
${initial.display}
${greeting}
${initial.display}
然后在运行时,使用i18n库检测登录用户的区域设置,它会自动选择正确的语言文件以加载并绑定到HTML模板中的变量。我只是泛化了一下,可能有点过于简单化了,但这就是如何i18n应用程序的要点

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

我想知道:

  • 用于检测/推断首选区域设置的常用策略有哪些?我想知道是否有普遍接受的甚至是标准化的浏览器cookie我可以寻找(例如“
    preferredLocale
    ”),或者可能使用顶级域(.com、.fr、.ru)等,或者可能是引用者IP地址和映射回地理位置?;及
  • 想知道什么样的简单库(而不是像Node、React这样的重量级框架)可以帮助我进行语言文件绑定(一旦我知道如何确定用户的首选区域设置)
有什么想法吗?提前谢谢

这段代码很好(客户端),但我不知道它在跨浏览器方面有多成功(在Firefox上运行良好):

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

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

显然,您也可以使用服务器端方法来检测区域设置,如图所示,即
Accept Language
HTTP头,但我对这种方法一无所知。

Ahh谢谢@d-mac(+1),我以前肯定遇到过基于
Accept Language
的解决方案,我只是忘记了那个!您是否介意显示一个快速简单的AJAX代码片段,打开正确的语言文件并为其选择“
问候语”
”键?再次非常感谢!你说你的网站“到处使用一些JS库”。这包括jQuery吗?jQuery有自己的内置$.ajax方法。我会帮助你的。