From e13eaea2930defd63788bb590a47be3ff2258176 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Tue, 24 Dec 2013 23:46:20 +0900 Subject: [PATCH] [ja] Translate 14.5.md into japanese --- ja/ebook/14.5.md | 113 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 ja/ebook/14.5.md diff --git a/ja/ebook/14.5.md b/ja/ebook/14.5.md new file mode 100644 index 00000000..c1d7655b --- /dev/null +++ b/ja/ebook/14.5.md @@ -0,0 +1,113 @@ +# 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>)