Javascript 定位流星应用程序

Javascript 定位流星应用程序,javascript,localization,meteor,Javascript,Localization,Meteor,我想通过检测浏览器语言来本地化meteor应用程序,并在主页上更改语言选项 为此,我想我检测浏览器语言并设置一个会话值,例如“current_lang”:“en-US”,并使用一些助手方法根据会话值包含的区域设置读取文本。 因此,我在客户端上有一个名为“Resources”的JS对象,其中包含一些数组,例如“en-US”:[res1key:res1value,res2key:res2Value]和一个helper方法来按键检索它们 我的问题是:这是一个很好的本地化meteor应用程序的方法,还是

我想通过检测浏览器语言来本地化meteor应用程序,并在主页上更改语言选项

为此,我想我检测浏览器语言并设置一个会话值,例如“current_lang”:“en-US”,并使用一些助手方法根据会话值包含的区域设置读取文本。 因此,我在客户端上有一个名为“Resources”的JS对象,其中包含一些数组,例如“en-US”:[res1key:res1value,res2key:res2Value]和一个helper方法来按键检索它们

我的问题是:这是一个很好的本地化meteor应用程序的方法,还是meteor已经有了类似的东西,可以“在引擎盖下”完成?例如,我确信他们到目前为止都在考虑本地化,但我只是在文档中找不到任何相关内容


谢谢。

我总是先检查现有的软件包是否能解决您的问题。大气中似乎有很多陨石包,你们可以试试:


即使它们都不能100%解决您的问题,我通常也会发现扩展这些包中的一个更容易,因为它们总是提供一些看起来有用的东西,而且在github上使用它们非常容易。这样,如果您愿意,您也可以回馈。

这似乎是一个很好的解决方案,可以本地化meteor应用程序:

正在读取模板中的语言资源:

<template name="messages_today">
    <p>{{_ "inbox_status" "Daniel" count=18}}</p>
</template>

在我的meteor应用程序中,我使用的是tap:i18n软件包,有很好的文档记录,请参见:

从我在client/main.js(或客户机上的任何其他init文件)中使用的browserlanguage开始

假设您为您的语言切换器创建了一个模板,如:

<template name="LanguageSwitcher">
  <ul>
    <li class="en">EN</li>
    <li class="nl">NL</li>
    <li class="fr">FR</li>
  </ul>
</template>
我正在使用一个额外的全局会话,因为我发现在我的收藏中使用翻译内容很容易。 最后一件事是创建一些带有翻译的json文件,只需在根文件夹中创建一个名为i18n的文件夹,并在该文件夹中使用以下语法创建文件:[language].i18n.json(例如nl.i18n.json)

现在您可以在模板中使用它,如

<h1>{{_ "original string"}}</h1>
{{{“原始字符串”}

希望这能为您提供一个如何实现国际化的起点。

我不得不删除这个答案上的accept,因为我实际上检查了指定的包,它没有下载,没有github链接,并且与最新的meteor版本不兼容。这很好。不过请注意,在最近从mrt迁移到meteor native的过程中,下载似乎已被重置,一些软件包仍在进行转换。因此,如果您喜欢该软件包,您可能需要在几周后再次查看它们是否升级。
<template name="LanguageSwitcher">
  <ul>
    <li class="en">EN</li>
    <li class="nl">NL</li>
    <li class="fr">FR</li>
  </ul>
</template>
Template.LanguageSwitcher.Oncreated(function(){
  Session.set('language', navigator.language || navigator.userLanguage);
});

Template.LanguageSwitcher.events({
  'click .en' : function(){
    Session.set('language','en');
    TAPi18n.setLanguage('en');  
  },
  'click .nl' : function(){
    Session.set('language','nl');
    TAPi18n.setLanguage('nl');  
  },
  'click .fr' : function(){
    Session.set('language','fr');
    TAPi18n.setLanguage('fr');  
  }  
});
{
  "original string" : "translation"
}
<h1>{{_ "original string"}}</h1>