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のサポート