2017-06-30 15 views
0

I持っている(ドイツ)作るnodejsで、単純な柔軟な変換機能nodejsで

gb.json(英語)これらの(非常に長い)翻訳ファイル

{ 
    "transHi":"Hello", 
    "transBye":"Goodbye" 
} 

de.json

{ 
    "transHi":"Gutentag", 
    "transBye":"Auf Wiedersehen" 
} 

私はこれらのテキストが必要なときにいつでも呼び出せるように、多くの言語で利用可能なコントローラがたくさんあります。

global.gb = require('../global/language/gb.json'); 
global.de = require('../global/language/de.json'); 

をそして、私はテキストを必要とするとき、私は次のように呼び出します:

明白な方法は、私のapp.jsにこのようなものになり

myText = global.gb.transHi 
myText = global.de.transHi 

しかし!言語は常に変数によって決まります。

usersLanguage = "de" 
myText = global.usersLanguage.transHi 

そして、それはうまくいきません。

私も試してみました:

usersLanguage = "de" 
myText = global.usersLanguage.transHi 

おそらく、私が長いスイッチ構造

var findText = (language,textkey) => { 
    switch(language) { 
     case "gb: 
      return gb.textkey 
      break; 
     case "de: 
      return de.textkey 
      break; 
    } 
} 

myText = translate(usersLanguage, "transHi"); 

を持っている。しかし、私はどちらか、その仕事をするように見えるカント機能とそれを解決することができます。

これを簡単かつ柔軟に行うにはどうすればよいですか?

更新:これは可能ですか?

答えて

1

.でアクセスされるオブジェクトプロパティには、配列インデックス表記[]を使用してアクセスすることもできます。だから、

var langObj = texts.gb; 

.textkeyあなたは、 textkeyと呼ばれるプロパティを取得している、おそらくを使用し、また、テキストキーのために同じ

var lang = "gb"; 
var langObj = texts[lang]; 

と同じである

var langObj = texts["gb"]; 

と同じです存在しません。あなたは、変数textkeyの値に応じて、異なるプロパティを使用する場合は、

var text = langObj[textkey]; 
+0

Arrrrghを行います! hahaha Aurel - それはまさに私が必要なものでした!私は 'global。[lang] .transAboutText'を実行したが、エラーを出した。ありがとう!!!私はheheheheを見ていないために今、馬鹿だと感じる: - D – torbenrudgaard

関連する問題