go validator 多语言支持

182 天前
 aababc

当前我在使用 gin + validator 的过程中,想实现 validator 根据 accept-language 自动切换验证的错误信息,看了一下 validator 的示例代码,感觉完全没有看明白要怎么用?

import (
	"fmt"

	"github.com/go-playground/locales/en"
    "github.com/go-playground/locales/zh"
	ut "github.com/go-playground/universal-translator"
	"github.com/go-playground/validator/v10"
	en_translations "github.com/go-playground/validator/v10/translations/en"
    zh_translations "github.com/go-playground/validator/v10/translations/zh"
)
...
en := en.New()
uni = ut.New(en, zh.New())

// this is usually know or extracted from http 'Accept-Language' header
// also see uni.FindTranslator(...)
trans, _ := uni.GetTranslator("en")

validate = validator.New()
en_translations.RegisterDefaultTranslations(validate, trans)

我按照这个代码测试之后,发现完全不能正常的工作,需有变成这种模式

switch locale {
case "en":
err = enTranslations.RegisterDefaultTranslations(v, trans)
case "zh":
err = zhTranslations.RegisterDefaultTranslations(v, trans)
default:
err = enTranslations.RegisterDefaultTranslations(v, trans)
}

但是这样写就需要构造多个 validator 实例,大家平常在使用这个库的时候是怎么配置的

1122 次点击
所在节点    程序员
2 条回复
Ayanokouji
182 天前
自己写: https://zog.dev/packages/i18n
反正自带我是用不了一点
aababc
182 天前
@Ayanokouji #1 哎,现在就像看看能不能直接用它提供的回调,现在看来是不行的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1116423

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX