有没有办法在模型中使用gobuffalo i18n翻译器?

时间:2018-04-05 09:03:36

标签: go buffalo

gobuffalo i18n翻译器可以在动作中访问,但我如何在我的模型上访问它?它需要buffalo.Context作为T *i18n.Translator中的参数。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

这是一种解决方法。

1。在models.go中创建以下函数

test$`elem<-`(2, 3)
`$`(test, "elem<-")(2, 3)

在您的init()函数中添加

import "github.com/nicksnyder/go-i18n/i18n"
var Lang = "en"

func t(translationID string, args ...interface{}) string{


   T, _ := i18n.Tfunc(Lang, fmt.Sprintf("locales/models.%s.yaml", Lang))
   return T(translationID,args... ) 

}

您现在可以在模型中使用转换功能 i18n.LoadTranslationFile(fmt.Sprintf("locales/models.fr.yaml")) i18n.LoadTranslationFile(fmt.Sprintf("locales/models.en.yaml")) ... other locale files if needed....

您可以通过简单地设置Lang变量t("translationID")

来更改模型的语言环境