0

如何让流星应用支持多种语言?例如:中文,英文。

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

test.js 代码:

    Handlebars.registerHelper('language',function(arg){
        var nalization = Session.get('nalization');
        console.log(最终化);
        var language = Session.get("language")[nalization];
        如果(!语言){
            console.log("nalization"+nalization+" 未定义");
            返回 ””;
        }
        控制台.log(arg);
        返回语言[arg] ? 语言[arg]:“未定义”;
    });

    Template.hello.created = 函数(){
        Session.set('nalization','cn');
    }

    deps.autorun(函数(c){
        Session.set("语言",{
            中国:{
                你好:“你好”,
                语言:“语言”
            },
            恩:{
                你好你好”,
                语言:“语言”
            }
        });
        c.stop();
    });
    模板.hello.events = {
        "点击#language_cn":function(){
            Session.get("nalization") !== "cn" ? Session.set("nalization","cn") : 1=1;
        },
        "点击#language_en":function(){
            Session.set("最终化","en");
            控制台.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中的'nalization'值,但是registerHeloer中的值没有改变。html上没有发生任何事情。

关于语言全球化的任何想法?谢谢。

4

3 回答 3

1

查看本页最后一段:https ://github.com/raix/Meteor-handlebar-helpers

mrt add handlebar-helpers

getTexthandlebars-helper 包中有帮助程序。您可以在此文件末尾查看源代码:https ://github.com/raix/Meteor-handlebar-helpers/blob/master/helpers.operators.js

关于您的代码,我不会使用会话来存储语言文件/资源​​。会话应该主要用于创建反应数据。另外我真的不明白你为什么使用这个Deps.autorun

于 2013-05-26T07:29:21.850 回答
0
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>

*/
于 2013-05-27T08:46:03.713 回答
0

http://messageformat.meteor.com/docs#features怎么样?

$ mrt add messageformat

它的特点是:

反应式(当变量或语言发生变化时,字符串会自行更新) 支持 MessageFormat 选择格式(例如性别)、复数和偏移扩展 完整的翻译 Web UI,当新翻译到达时无需重新部署您的应用程序 可以在初始页面加载时发送语言数据,或在需要时按需提供(为良好的 UI 提供反应式 ready() 方法)。示例在这里: http: //messageformat.meteor.com/examples

于 2015-01-07T22:47:22.813 回答