Documentation
¶
Index ¶
- type DetectionType
- type I18N
- func (i *I18N) AddLanguageMapping(from, to string) *I18N
- func (i *I18N) AddLanguageMappings(mappings map[string]string) *I18N
- func (i *I18N) AddLegacyLanguageMapping(from, to string) *I18N
- func (i *I18N) AddLegacyLanguageMappings(mappings map[string]string) *I18N
- func (i *I18N) Clone() internal.Configurable
- func (i *I18N) Disable() *I18N
- func (i *I18N) Enable() *I18N
- func (i *I18N) Get() any
- func (i *I18N) GetMappedLanguage(lang string) string
- func (i *I18N) IsEnabled() bool
- func (i *I18N) IsSupportedLanguage(lang string) bool
- func (i *I18N) ParseAcceptLanguage(acceptLang string) string
- func (i *I18N) ResolveLanguage(lang string) string
- func (i *I18N) Set(data any)
- func (i *I18N) Validate() error
- func (i *I18N) WithCookieName(cookieName string) *I18N
- func (i *I18N) WithDefaultLanguage(defaultLanguage string) *I18N
- func (i *I18N) WithLanguageHeader(languageHeader string) *I18N
- func (i *I18N) WithLanguageParam(languageParam string) *I18N
- func (i *I18N) WithMessagesPath(messagesPath string) *I18N
- func (i *I18N) WithResolutionOrder(order []MappingType) *I18N
- func (i *I18N) WithSupportedLanguages(supportedLanguages []string) *I18N
- type MappingType
- type MessageLoader
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DetectionType ¶
type DetectionType string
DetectionType 语言检测类型
const ( // DetectionHeader 从 HTTP 头检测 DetectionHeader DetectionType = "header" // DetectionQuery 从查询参数检测 DetectionQuery DetectionType = "query" // DetectionCookie 从 Cookie 检测 DetectionCookie DetectionType = "cookie" // DetectionDefault 使用默认语言 DetectionDefault DetectionType = "default" )
type I18N ¶
type I18N struct {
ModuleName string `mapstructure:"module-name" yaml:"module-name" json:"moduleName"` // 模块名称
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"` // 是否启用国际化
DefaultLanguage string `mapstructure:"default-language" yaml:"default-language" json:"defaultLanguage"` // 默认语言
SupportedLanguages []string `mapstructure:"supported-languages" yaml:"supported-languages" json:"supportedLanguages"` // 支持的语言
LanguageMapping map[string]string `mapstructure:"language-mapping" yaml:"language-mapping" json:"languageMapping"` // 语言映射关系(标准映射,如 zh-cn -> zh)
LegacyLanguageMapping map[string]string `mapstructure:"legacy-language-mapping" yaml:"legacy-language-mapping" json:"legacyLanguageMapping"` // 遗留语言映射(将之前使用的错误代码映射到正确代码)
ResolutionOrder []MappingType `mapstructure:"resolution-order" yaml:"resolution-order" json:"resolutionOrder"` // 语言解析顺序(legacy, standard),可自定义顺序和组合
DetectionOrder []DetectionType `mapstructure:"detection-order" yaml:"detection-order" json:"detectionOrder"` // 语言检测顺序
LanguageParam string `mapstructure:"language-param" yaml:"language-param" json:"languageParam"` // 语言参数名称(用于query和cookie)
LanguageHeader string `mapstructure:"language-header" yaml:"language-header" json:"languageHeader"` // 语言头名称
MessagesPath string `mapstructure:"messages-path" yaml:"messages-path" json:"messagesPath"` // 消息文件路径
CustomMessagePaths map[string]string `mapstructure:"custom-message-paths" yaml:"custom-message-paths" json:"customMessagePaths"` // 自定义消息文件路径映射
EnableFallback bool `mapstructure:"enable-fallback" yaml:"enable-fallback" json:"enableFallback"` // 是否启用回退到默认语言
MessageLoader MessageLoader `mapstructure:"-" yaml:"-" json:""` // 自定义消息加载器
CookieName string `mapstructure:"cookie-name" yaml:"cookie-name" json:"cookieName"` // Cookie名称
}
I18N 国际化中间件配置
func (*I18N) AddLanguageMapping ¶
AddLanguageMapping 添加语言映射关系(非标准语言代码映射到标准代码) 例如:AddLanguageMapping("zh-tw", "zh") 将繁体中文映射到简体中文
func (*I18N) AddLanguageMappings ¶
AddLanguageMappings 批量添加语言映射关系
func (*I18N) AddLegacyLanguageMapping ¶
AddLegacyLanguageMapping 添加遗留语言映射关系(将之前使用的错误代码映射到正确代码) 例如:AddLegacyLanguageMapping("cn", "zh") 将错误的 "cn" 映射到正确的 "zh"
func (*I18N) AddLegacyLanguageMappings ¶
AddLegacyLanguageMappings 批量添加遗留语言映射关系
func (*I18N) GetMappedLanguage ¶
GetMappedLanguage 获取映射后的语言代码,如果没有映射则返回原值
func (*I18N) IsSupportedLanguage ¶
IsSupportedLanguage 检查指定语言是否在支持的语言列表中
func (*I18N) ParseAcceptLanguage ¶
ParseAcceptLanguage 解析 Accept-Language 头(支持多语言和权重)
处理流程: 1. 解析语言列表,提取语言代码(忽略权重参数) 2. 按优先级顺序依次尝试解析每个语言 3. 返回第一个支持的语言,如果都不支持则返回默认语言
示例:
- "zh-CN,zh;q=0.9,en;q=0.8" -> 返回 "zh"(如果支持)
- "fr,de;q=0.8" -> 返回默认语言(如果都不支持)
func (*I18N) ResolveLanguage ¶
ResolveLanguage 解析语言代码(根据配置的解析顺序进行映射,最后验证是否支持)
处理流程: 1. 按照 ResolutionOrder 配置的顺序依次应用映射(legacy -> standard) 2. 验证映射后的语言是否在支持列表中 3. 如果不支持则返回默认语言
参数:
- lang: 原始语言代码(如 "cn", "zh-cn", "en-us")
返回:
- 最终的标准语言代码(如 "zh", "en")
func (*I18N) WithCookieName ¶
WithCookieName 设置Cookie名称
func (*I18N) WithDefaultLanguage ¶
WithDefaultLanguage 设置默认语言
func (*I18N) WithLanguageHeader ¶
WithLanguageHeader 设置语言头名称
func (*I18N) WithLanguageParam ¶
WithLanguageParam 设置语言参数名称
func (*I18N) WithMessagesPath ¶
WithMessagesPath 设置消息文件路径
func (*I18N) WithResolutionOrder ¶
func (i *I18N) WithResolutionOrder(order []MappingType) *I18N
WithResolutionOrder 设置语言解析顺序
func (*I18N) WithSupportedLanguages ¶
WithSupportedLanguages 设置支持的语言
type MappingType ¶
type MappingType string
MappingType 映射类型
const ( // LegacyMapping 遗留映射 LegacyMapping MappingType = "legacy" // StandardMapping 标准映射 StandardMapping MappingType = "standard" )