Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 关于语言全球化_Meteor - Fatal编程技术网

Meteor 关于语言全球化

Meteor 关于语言全球化,meteor,Meteor,如何使meteor应用程序支持多种语言?例如:中文、英文 首先,我尝试使用Handlebar.registerHelper和Session,但失败了 test.js代码: Handlebars.registerHelper('language',function(arg){ var nalization = Session.get('nalization'); console.log(nalization); var language = Sess

如何使meteor应用程序支持多种语言?例如:中文、英文

首先,我尝试使用Handlebar.registerHelper和Session,但失败了

test.js代码:

Handlebars.registerHelper('language',function(arg){ var nalization = Session.get('nalization'); console.log(nalization); var language = Session.get("language")[nalization]; if (!language){ console.log("nalization"+nalization+" is undefined"); return ""; } console.log(arg); return language[arg] ? language[arg] : "undefined"; }); Template.hello.created = function(){ Session.set('nalization','cn'); } Deps.autorun(function (c) { Session.set("language",{ cn : { hello: "你好", language: "Language" }, en : { hello: "Hello", language: "语言" } }); c.stop(); }); Template.hello.events = { "click #language_cn":function(){ Session.get("nalization") !== "cn" ? Session.set("nalization","cn") : 1=1; }, "click #language_en":function(){ Session.set("nalization","en"); console.log(); } } 车把.注册表帮助器('语言',功能(arg){ var-nalization=Session.get('nalization'); 控制台日志(nalization); var language=Session.get(“语言”)[nalization]; 如果(!语言){ log(“未定义nalization”+未定义nalization+); 返回“”; } 控制台日志(arg); 返回语言[arg]?语言[arg]:“未定义”; }); Template.hello.created=function(){ Session.set('nalization','cn'); } 副自动运行(功能(c){ Session.set(“语言”{ 中国:{ 您好:“你好", 语言:“语言” }, 嗯:{ 你好:“你好”, 语言:“语言" } }); c、 停止(); }); Template.hello.events={ “点击#语言#cn”:函数(){ Session.get(“nalization”)!==“cn”?Session.set(“nalization”,“cn”):1=1; }, “单击语言”:函数(){ Session.set(“名词化”、“en”); console.log(); } } test.html代码:

<body>
  {{> hello}}
</body>

<template name="hello">
<h1>{{#language "hello"}}{{/language}}</h1>
 <label>{{#language "language"}}{{/language}}</label>
  <button id="language_cn">中文</button>
  <button id="language_en">English</button>
</template>

{{>你好}
{{{语言“你好”}{{/语言}
{{{{语言“语言”}{{/语言}
中文
英语
在Seesion by click events中更改了值“nalization”,但在RegisterHelper中该值未更改。html上不会发生任何更改


关于语言全球化有什么想法吗?谢谢。

请看本页最后一段:

Handlebar helper包中有
getText
帮助程序。您可以在该文件末尾看到源代码:

关于您的代码,我不会使用会话来存储语言文件/资源。会话应主要用于创建反应性数据。此外,我也不了解您为什么使用此
Deps.autorun

language=new Meteor.Collection();
Language = new Meteor.Collection();

session.setDeafault("language","EN_US");

Deps.autorun(function(c){
  var languages = [
    {
      name:"EN_US",
      value:{
         username:"username",
         password:"password"
      }
    },
    {
      name:"ZH_CN",
      value:{
         username:"yonghu",
         password:"mima"
      }
    }
  ];
  if(Language.find({}).fetch().length)
      Language.remove({});
  for(index in languages){
    Language.insert(languages[index]);
  }
  c.stop();
});

Handlebars.helpers('language',function(){
  return Language.findOne({name:Session.get("language")}).value;
});

/**
    Change  language by click events
    for example:
    "click #chooseLanguage":function(){
          Session.set("language","ZH_CN");
    }

    in the html:
  <label>  {{language.username}}</label>
  <label>  {{language.password}}</label>

*/
session.setdeafult(“语言”,“EN_US”); 副自动运行(功能(c){ 变量语言=[ { 名称:“恩_US”, 价值:{ 用户名:“用户名”, 密码:“密码” } }, { 名称:“ZH_CN”, 价值:{ 用户名:“永湖”, 密码:“mima” } } ]; if(Language.find({}).fetch().length) 语言。删除({}); for(语言索引){ 语言。插入(语言[索引]); } c、 停止(); }); 把手.助手('language',function()){ 返回Language.findOne({name:Session.get(“Language”)}).value; }); /** 通过单击事件更改语言 例如: “单击#选择语言”:函数(){ Session.set(“语言”、“ZH_CN”); } 在html中: {{language.username} {{language.password}} */
包裹怎么样

其特点是:

被动(字符串将在变量或语言 更改)支持MessageFormat selectformat(例如性别),复数 和偏移扩展完整的翻译Web UI,无需重新部署 当新翻译到达时,您的应用程序可以发送语言数据 初始页面加载,或在需要时按需加载(反应式就绪() 方法是为良好的用户界面(UI)提供的。 例如:


谢谢你的回复。我已经通过车把助手和非同步本地收集完成了。
Language = new Meteor.Collection();

session.setDeafault("language","EN_US");

Deps.autorun(function(c){
  var languages = [
    {
      name:"EN_US",
      value:{
         username:"username",
         password:"password"
      }
    },
    {
      name:"ZH_CN",
      value:{
         username:"yonghu",
         password:"mima"
      }
    }
  ];
  if(Language.find({}).fetch().length)
      Language.remove({});
  for(index in languages){
    Language.insert(languages[index]);
  }
  c.stop();
});

Handlebars.helpers('language',function(){
  return Language.findOne({name:Session.get("language")}).value;
});

/**
    Change  language by click events
    for example:
    "click #chooseLanguage":function(){
          Session.set("language","ZH_CN");
    }

    in the html:
  <label>  {{language.username}}</label>
  <label>  {{language.password}}</label>

*/
$ mrt add messageformat