V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
aababc
V2EX  ›  程序员

go validator 多语言支持

  •  
  •   aababc · 4 小时 12 分钟前 · 269 次点击

    当前我在使用 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 实例,大家平常在使用这个库的时候是怎么配置的

    2 条回复    2025-03-06 18:50:10 +08:00
    Ayanokouji
        1
    Ayanokouji  
       3 小时 31 分钟前
    自己写: https://zog.dev/packages/i18n
    反正自带我是用不了一点
    aababc
        2
    aababc  
    OP
       2 小时 29 分钟前
    @Ayanokouji #1 哎,现在就像看看能不能直接用它提供的回调,现在看来是不行的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3137 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 13:20 · PVG 21:20 · LAX 05:20 · JFK 08:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.