i18n

package
v0.25.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

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"
)

func (DetectionType) String

func (d DetectionType) String() string

String 返回检测类型的字符串表示

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 Default

func Default() *I18N

Default 创建默认国际化配置

func (*I18N) AddLanguageMapping

func (i *I18N) AddLanguageMapping(from, to string) *I18N

AddLanguageMapping 添加语言映射关系(非标准语言代码映射到标准代码) 例如:AddLanguageMapping("zh-tw", "zh") 将繁体中文映射到简体中文

func (*I18N) AddLanguageMappings

func (i *I18N) AddLanguageMappings(mappings map[string]string) *I18N

AddLanguageMappings 批量添加语言映射关系

func (*I18N) AddLegacyLanguageMapping

func (i *I18N) AddLegacyLanguageMapping(from, to string) *I18N

AddLegacyLanguageMapping 添加遗留语言映射关系(将之前使用的错误代码映射到正确代码) 例如:AddLegacyLanguageMapping("cn", "zh") 将错误的 "cn" 映射到正确的 "zh"

func (*I18N) AddLegacyLanguageMappings

func (i *I18N) AddLegacyLanguageMappings(mappings map[string]string) *I18N

AddLegacyLanguageMappings 批量添加遗留语言映射关系

func (*I18N) Clone

func (i *I18N) Clone() internal.Configurable

Clone 返回配置的副本

func (*I18N) Disable

func (i *I18N) Disable() *I18N

Disable 禁用国际化中间件

func (*I18N) Enable

func (i *I18N) Enable() *I18N

Enable 启用国际化中间件

func (*I18N) Get

func (i *I18N) Get() any

Get 返回配置接口

func (*I18N) GetMappedLanguage

func (i *I18N) GetMappedLanguage(lang string) string

GetMappedLanguage 获取映射后的语言代码,如果没有映射则返回原值

func (*I18N) IsEnabled

func (i *I18N) IsEnabled() bool

IsEnabled 检查是否启用

func (*I18N) IsSupportedLanguage

func (i *I18N) IsSupportedLanguage(lang string) bool

IsSupportedLanguage 检查指定语言是否在支持的语言列表中

func (*I18N) ParseAcceptLanguage

func (i *I18N) ParseAcceptLanguage(acceptLang string) string

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

func (i *I18N) ResolveLanguage(lang string) string

ResolveLanguage 解析语言代码(根据配置的解析顺序进行映射,最后验证是否支持)

处理流程: 1. 按照 ResolutionOrder 配置的顺序依次应用映射(legacy -> standard) 2. 验证映射后的语言是否在支持列表中 3. 如果不支持则返回默认语言

参数:

  • lang: 原始语言代码(如 "cn", "zh-cn", "en-us")

返回:

  • 最终的标准语言代码(如 "zh", "en")

func (*I18N) Set

func (i *I18N) Set(data any)

Set 设置配置数据

func (*I18N) Validate

func (i *I18N) Validate() error

Validate 验证配置

func (*I18N) WithCookieName

func (i *I18N) WithCookieName(cookieName string) *I18N

WithCookieName 设置Cookie名称

func (*I18N) WithDefaultLanguage

func (i *I18N) WithDefaultLanguage(defaultLanguage string) *I18N

WithDefaultLanguage 设置默认语言

func (*I18N) WithLanguageHeader

func (i *I18N) WithLanguageHeader(languageHeader string) *I18N

WithLanguageHeader 设置语言头名称

func (*I18N) WithLanguageParam

func (i *I18N) WithLanguageParam(languageParam string) *I18N

WithLanguageParam 设置语言参数名称

func (*I18N) WithMessagesPath

func (i *I18N) WithMessagesPath(messagesPath string) *I18N

WithMessagesPath 设置消息文件路径

func (*I18N) WithResolutionOrder

func (i *I18N) WithResolutionOrder(order []MappingType) *I18N

WithResolutionOrder 设置语言解析顺序

func (*I18N) WithSupportedLanguages

func (i *I18N) WithSupportedLanguages(supportedLanguages []string) *I18N

WithSupportedLanguages 设置支持的语言

type MappingType

type MappingType string

MappingType 映射类型

const (
	// LegacyMapping 遗留映射
	LegacyMapping MappingType = "legacy"
	// StandardMapping 标准映射
	StandardMapping MappingType = "standard"
)

func (MappingType) String

func (m MappingType) String() string

String 返回映射类型的字符串表示

type MessageLoader

type MessageLoader interface {
	LoadMessages(language string) (map[string]string, error)
}

MessageLoader 消息加载器接口

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL