0

meteor アプリケーションで複数の言語をサポートするにはどうすればよいですか? 例:中国語、英語。

まず、Handlebars.registerHelper と Session を使用しようとしましたが、失敗しました。

test.js コード:

    Handlebars.registerHelper('language',function(arg){
        var nalization = Session.get('nalization');
        console.log(ナライゼーション);
        var language = Session.get("言語")[最終化];
        もし (!言語){
            console.log("nalization"+nalization+" は未定義です");
            戻る "";
        }
        console.log(引数);
        言語[引数]を返しますか? 言語[引数]:「未定義」;
    });

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

    Deps.autorun(関数 (c) {
        Session.set("言語",{
            cn : {
                こんにちは: "你好",
                言語: "言語"
            }、
            ja : {
                やあやあ"、
                language: "语言"
            }
        });
        c.stop();
    });
    Template.hello.events = {
        "#language_cn をクリック":function(){
            Session.get("ナライゼーション") !== "cn" ? Session.set("確定","cn") : 1=1;
        }、
        "#language_en をクリック":function(){
            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 の値 '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 に答える