Javascript 定位流星应用程序
我想通过检测浏览器语言来本地化meteor应用程序,并在主页上更改语言选项 为此,我想我检测浏览器语言并设置一个会话值,例如“current_lang”:“en-US”,并使用一些助手方法根据会话值包含的区域设置读取文本。 因此,我在客户端上有一个名为“Resources”的JS对象,其中包含一些数组,例如“en-US”:[res1key:res1value,res2key:res2Value]和一个helper方法来按键检索它们 我的问题是:这是一个很好的本地化meteor应用程序的方法,还是meteor已经有了类似的东西,可以“在引擎盖下”完成?例如,我确信他们到目前为止都在考虑本地化,但我只是在文档中找不到任何相关内容Javascript 定位流星应用程序,javascript,localization,meteor,Javascript,Localization,Meteor,我想通过检测浏览器语言来本地化meteor应用程序,并在主页上更改语言选项 为此,我想我检测浏览器语言并设置一个会话值,例如“current_lang”:“en-US”,并使用一些助手方法根据会话值包含的区域设置读取文本。 因此,我在客户端上有一个名为“Resources”的JS对象,其中包含一些数组,例如“en-US”:[res1key:res1value,res2key:res2Value]和一个helper方法来按键检索它们 我的问题是:这是一个很好的本地化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>