我试着用金刚写我的第一个包裹。此包只是来自goi18b的包装器结构。请看下面的代码。
i18n.go
package i18n
import (
"fmt"
goi18n "github.com/nicksnyder/go-i18n/i18n"
)
var translateFunc goi18n.TranslateFunc
type I18n struct {
}
func NewI18n(filename string, language string) *I18n {
goi18n.MustLoadTranslationFile(filename)
translateFunc, _ = goi18n.Tfunc(language)
return new(I18n)
}
func (i18n *I18n) ReadText(translationID string, args ...interface{}) string {
fmt.Println(translateFunc("person_unread_email_count", 1, map[string]interface{}{
"Person": "Bob",
}))
return translateFunc(translationID, args)
}和测试文件i18n_test.go
package i18n
import "testing"
import "fmt"
var i18n *I18n = NewI18n("en-us.all.json", "en-US")
func TestComplexText(t *testing.T) {
var str string
str = i18n.ReadText("person_unread_email_count", 1, map[string]interface{}{
"Person": "Bob",
})
fmt.Println(str)
}作为输出我得到了
Bob has 1 unread email.
person_unread_email_count
PASS如您所见,在i18n.go内部,文本将被翻译。
Bob has 1 unread email.但是在i18n_test.go中,我希望得到同样的结果,但我得到了
person_unread_email_count我不能配置,我在这里做错了!
更新:
当我将readtext函数更改为
func (i18n *I18n) ReadText(translationID string, args ...interface{}) string {
fmt.Println(translateFunc(translationID, 1, map[string]interface{}{
"Person": "Bob",
}))
fmt.Println(translateFunc(translationID, args))
return translateFunc(translationID, args)
}作为输出我得到了
Bob has 1 unread email.
person_unread_email_count我认为错误发生在参数args ...interface{}上。当我传递参数args时
fmt.Println(translateFunc(translationID, args))课文不需要翻译。但就像这样,这是要翻译的
fmt.Println(translateFunc(translationID, 1, map[string]interface{}{
"Person": "Bob",
}))为什么?
我忘了发json文件
[
{
"id": "d_days",
"translation": {
"one": "{{.Count}} day",
"other": "{{.Count}} days"
}
},
{
"id": "my_height_in_meters",
"translation": {
"one": "I am {{.Count}} meter tall.",
"other": "I am {{.Count}} meters tall."
}
},
{
"id": "person_greeting",
"translation": "Hello {{.Person}}"
},
{
"id": "person_unread_email_count",
"translation": {
"one": "{{.Person}} has {{.Count}} unread email.",
"other": "{{.Person}} has {{.Count}} unread emails."
}
},
{
"id": "person_unread_email_count_timeframe",
"translation": {
"one": "{{.Person}} has {{.Count}} unread email in the past {{.Timeframe}}.",
"other": "{{.Person}} has {{.Count}} unread emails in the past {{.Timeframe}}."
}
},
{
"id": "program_greeting",
"translation": "Hello world"
},
{
"id": "your_unread_email_count",
"translation": {
"one": "You have {{.Count}} unread email.",
"other": "You have {{.Count}} unread emails."
}
}
]发布于 2014-07-29 13:16:41
默认情况下,go test工具在成功时不会输出任何输出。您可以通过在运行测试时使用来自包log的testing函数和设置-v标志来覆盖这一点。
有关更多详细信息,请参阅标志。
https://stackoverflow.com/questions/25015884
复制相似问题