14.5 多言語サポート
第10章において国際化とローカライゼーションおよびgo-i18nライブラリの開発についてご紹介しました。この節ではこのライブラリをbeegoフレームワークの中にもってくることで、我々のフレームワークにおいて国際化とローカライゼーションをサポートさせます。
i18nの導入
beegoにおいて以下のようにグローバル変数を設定します:
Translation i18n.IL
Lang string //言語パッケージの設定、zh、en
LangPath string //言語パッケージのパスを設定
多言語関数を初期化:
func InitLang(){
beego.Translation:=i18n.NewLocale()
beego.Translation.LoadPath(beego.LangPath)
beego.Translation.SetLocale(beego.Lang)
}
テンプレートにおいて直接多言語パッケージをコールできるよう、3つの関数によって対応する多言語を設計します:
beegoTplFuncMap["Trans"] = i18n.I18nT
beegoTplFuncMap["TransDate"] = i18n.I18nTimeDate
beegoTplFuncMap["TransMoney"] = i18n.I18nMoney
func I18nT(args ...interface{}) string {
ok := false
var s string
if len(args) == 1 {
s, ok = args[0].(string)
}
if !ok {
s = fmt.Sprint(args...)
}
return beego.Translation.Translate(s)
}
func I18nTimeDate(args ...interface{}) string {
ok := false
var s string
if len(args) == 1 {
s, ok = args[0].(string)
}
if !ok {
s = fmt.Sprint(args...)
}
return beego.Translation.Time(s)
}
func I18nMoney(args ...interface{}) string {
ok := false
var s string
if len(args) == 1 {
s, ok = args[0].(string)
}
if !ok {
s = fmt.Sprint(args...)
}
return beego.Translation.Money(s)
}
多言語開発の使用
言語および言語パッケージのパスを設定します。その後i18nオブジェクトを初期化します:
beego.Lang = "zh" beego.LangPath = "views/lang" beego.InitLang()
多言語パッケージの設計
上ではどのようにして多言語パッケージを初期化するかについてご紹介しました。今から多言語パッケージを設計します。多言語パッケージはjsonファイルです。第10章でご紹介したのと同じように、設計する必要のあるファイルをLangPathの下に置きます。例えばzh.jsonまたはen.jsonといったものです。
# zh.json { "zh": { "submit": "送信", "create": "新規作成" } } # en.json { "en": { "submit": "Submit", "create": "Create" } }
多言語パッケージを使用する
controllerの中でコンパイラをコールして対応する翻訳言語を取得することができます。以下に示します:
func (this *MainController) Get() { this.Data["create"] = beego.Translation.Translate("create") this.TplNames = "index.tpl" }
テンプレートの中で直接対応する翻訳関数をコールしてもかまいません:
//直接テキスト翻訳 {{.create | Trans}} //時間の翻訳 {{.time | TransDate}} //通貨の翻訳 {{.money | TransMoney}}
links
- 目次
- 前へ: ユーザ認証
- 次へ: pprofのサポート