Documentation
¶
Overview ¶
Package i18n provides a simple, thread-safe internationalization library for Go that supports translation management with template support and pluralization.
This package uses a singleton pattern with a global Manager instance for easy access across your application. It supports template-based message rendering, automatic fallback to default language, and thread-safe concurrent access.
Features:
- Singleton Pattern: Global instance for easy access
- Language Support: Uses golang.org/x/text/language.Tag for robust handling
- Template Support: Go templates for dynamic content injection
- Pluralization: Automatic singular/plural form selection based on count
- Thread-Safe: Safe for concurrent access with appropriate mutexes
- Minimal Dependencies: Only Go standard library + golang.org/x/text
- Fallback Support: Automatic fallback to default language
- Template Caching: Efficient template parsing and caching
Quick Start:
i18n.SetDefaultLanguage(language.English)
i18n.AddTranslation(language.English, "hello", "Hello, {{.Name}}!", "")
msg := i18n.Translate(language.English, "hello", 1, map[string]interface{}{"Name": "World"})
For more advanced usage, see the Manager type and its methods.
Index ¶
- func AddTranslation(lang language.Tag, key, value, plural string) error
- func AddTranslations(lang language.Tag, translations map[string]*Translation) error
- func SetDefaultLanguage(lang language.Tag)
- func Translate(lang language.Tag, key string, count int, data interface{}) string
- func TranslatePlural(lang language.Tag, key string, count int) string
- func TranslateSimple(lang language.Tag, key string) string
- type Manager
- func (m *Manager) AddTranslation(lang language.Tag, key, value, plural string) error
- func (m *Manager) AddTranslations(lang language.Tag, translations map[string]*Translation) error
- func (m *Manager) GetAvailableLanguages() []language.Tag
- func (m *Manager) GetDefaultLanguage() language.Tag
- func (m *Manager) GetTranslationKeys(lang language.Tag) []string
- func (m *Manager) HasTranslation(lang language.Tag, key string) bool
- func (m *Manager) SetDefaultLanguage(lang language.Tag)
- func (m *Manager) Translate(lang language.Tag, key string, count int, data interface{}) string
- func (m *Manager) TranslatePlural(lang language.Tag, key string, count int) string
- func (m *Manager) TranslateSimple(lang language.Tag, key string) string
- type Translation
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddTranslation ¶
AddTranslation adds a translation to the global instance
func AddTranslations ¶
func AddTranslations(lang language.Tag, translations map[string]*Translation) error
AddTranslations adds multiple translations to the global instance
func SetDefaultLanguage ¶
SetDefaultLanguage sets the default language for the global instance
func TranslatePlural ¶
TranslatePlural translates with plural support using the global instance
Types ¶
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager is the singleton manager for all translations
func GetInstance ¶
func GetInstance() *Manager
GetInstance returns the singleton instance of the translation manager
func (*Manager) AddTranslation ¶
AddTranslation adds a new translation for the specified language and key If plural is empty, the singular form will be used for plural as well
func (*Manager) AddTranslations ¶
AddTranslations adds multiple translations for the specified language at once This is more efficient than calling AddTranslation multiple times as it only acquires the lock once translations is a map where keys are translation keys and values are Translation structs If a Translation's Plural field is empty, the Singular form will be used for plural as well
func (*Manager) GetAvailableLanguages ¶
GetAvailableLanguages returns a list of all languages that have translations
func (*Manager) GetDefaultLanguage ¶
GetDefaultLanguage returns the current default language
func (*Manager) GetTranslationKeys ¶
GetTranslationKeys returns all translation keys for a given language
func (*Manager) HasTranslation ¶
HasTranslation checks if a translation exists for the given language and key
func (*Manager) SetDefaultLanguage ¶
SetDefaultLanguage sets the default fallback language
func (*Manager) Translate ¶
Translate retrieves and processes a translation for the given language and key count determines whether to use singular (count == 1) or plural (count != 1) form data is passed to the template for processing
func (*Manager) TranslatePlural ¶
TranslatePlural is a convenience method for plural translations without templates
type Translation ¶
type Translation struct {
Singular string // Template string for singular form
Plural string // Template string for plural form (optional)
}
Translation represents a single translation entry with optional plural form