# 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) } ## 多言語開発の使用 1. 言語および言語パッケージのパスを設定します。その後i18nオブジェクトを初期化します: beego.Lang = "zh" beego.LangPath = "views/lang" beego.InitLang() 2. 多言語パッケージの設計 上ではどのようにして多言語パッケージを初期化するかについてご紹介しました。今から多言語パッケージを設計します。多言語パッケージはjsonファイルです。第10章でご紹介したのと同じように、設計する必要のあるファイルをLangPathの下に置きます。例えばzh.jsonまたはen.jsonといったものです。 # zh.json { "zh": { "submit": "送信", "create": "新規作成" } } # en.json { "en": { "submit": "Submit", "create": "Create" } } 3. 多言語パッケージを使用する controllerの中でコンパイラをコールして対応する翻訳言語を取得することができます。以下に示します: func (this *MainController) Get() { this.Data["create"] = beego.Translation.Translate("create") this.TplNames = "index.tpl" } テンプレートの中で直接対応する翻訳関数をコールしてもかまいません: //直接テキスト翻訳 {{.create | Trans}} //時間の翻訳 {{.time | TransDate}} //通貨の翻訳 {{.money | TransMoney}} ## links * [目次]() * 前へ: [ユーザ認証](<14.4.md>) * 次へ: [pprofのサポート](<14.6.md>)