package i18n import ( "context" "github.com/nicksnyder/go-i18n/v2/i18n" "golang.org/x/text/language" ) type ( BundleConfig struct { DefaultLanguage language.Tag // 默认语言 RootPath string // 语言文件根路径 FileLoader Loader // 文件读取器 SortedParameterPrefix string // 自排序参数前缀 TagGetter TagGetter LocalizeConfigGetter LocalizeConfigGetter } // MessageWithParameter 带参消息 MessageWithParameter struct { MessageID string // 消息ID Params []any // 自排序参数 ParamsWithName map[string]any // 带名参数 } // TagGetter 当前language获取器 TagGetter func(context context.Context) string LocalizeConfigGetter func(config BundleConfig, param any) *i18n.LocalizeConfig Loader interface { LoadMessage(path string) ([]byte, error) } LoaderFunc func(path string) ([]byte, error) ) func (f LoaderFunc) LoadMessage(path string) ([]byte, error) { return f(path) }