-
Notifications
You must be signed in to change notification settings - Fork 11
1.x i18n
fkei edited this page Dec 20, 2013
·
1 revision
beezには、国際化(i18n)に対応しています。
JSファイル、テンプレートファイル(Handlebars)で利用出来ます。
利用前に、setup関数を実行する必要があります。
====
var options = {
lang:{
base:'en'
},
message:{
en:{
'hello':'hello'
},
ja:{
'hello':'こんにちは'
}
}
};
var CustomI18n = beez.I18n.extend('custom.i18n', {
// ....
})
beez.i18n.setup(options, CustomI18n);
- options(optional)
- lang.base
- UserAgentで言語取得出来ない場合に利用する、基本言語
- lang.message
- 言語別にメッセージを定義
- 定義されていない言語の場合は、baseが使用されます。baseもない場合は、
enを使用しようとします。 - メッセージは、後入れ可能です。
- CustomI18n(optional)
- I18n自体を継承したい場合に定義
すでに言語が設定されている場合は、マージになります。
// 1言語追加
beez.i18n.addMessage('ja', {
'hello': 'こんにちは',
'test': 'テスト'
});
// 一括追加
beez.i18n.add({
'ja': {
'hello2': 'こんにちは2',
'test2': 'テスト2'
},
'en': {
'hello2': 'hello2',
'test2': 'test2'
}
});
// JS
beez.i18n.getMessage('hello');
beez.i18n.__('hello');
// Handlebars
{{__ 'hello'}} // エスケープなし
{{__e 'hello'}} // エスケープあり
設定されているメッセージを削除します。
beez.i18n.remove()
beez.i18n.getCurrentLang()
メッセージを取得する際に、登録したメッセージに変数を渡すことで可変メッセージとして使用することが出来ます。
var res = i18n.add({
'ja': {
'hello': 'こんにちは {#name} さん [ステータス] : {#status}',
},
'en': {
'hello': 'Hello {#name} [Status] : {#status}',
}
});
// JS
beez.i18n.getMessage('hello', 'fkei', 'fine').length).equal(0);
> Hello fkei [Status] : fine
// Handlebars
{{__ 'hello', 'fkei', 'fine'}}
> Hello fkei [Status] : fine