i18n

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2026 License: Apache-2.0, BSD-3-Clause, MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Languages = map[string]Language{
	"en": {
		Code:       "en",
		Name:       "English",
		NativeName: "English",
		RTL:        false,
	},
	"de": {
		Code:       "de",
		Name:       "German",
		NativeName: "Deutsch",
		RTL:        false,
	},
	"fr": {
		Code:       "fr",
		Name:       "French",
		NativeName: "Français",
		RTL:        false,
	},
	"es": {
		Code:       "es",
		Name:       "Spanish",
		NativeName: "Español",
		RTL:        false,
	},
	"it": {
		Code:       "it",
		Name:       "Italian",
		NativeName: "Italiano",
		RTL:        false,
	},
	"pt": {
		Code:       "pt",
		Name:       "Portuguese",
		NativeName: "Português",
		RTL:        false,
	},
	"nl": {
		Code:       "nl",
		Name:       "Dutch",
		NativeName: "Nederlands",
		RTL:        false,
	},
	"pl": {
		Code:       "pl",
		Name:       "Polish",
		NativeName: "Polski",
		RTL:        false,
	},
	"ru": {
		Code:       "ru",
		Name:       "Russian",
		NativeName: "Русский",
		RTL:        false,
	},
	"ja": {
		Code:       "ja",
		Name:       "Japanese",
		NativeName: "日本語",
		RTL:        false,
	},
	"zh": {
		Code:       "zh",
		Name:       "Chinese",
		NativeName: "中文",
		RTL:        false,
	},
	"ko": {
		Code:       "ko",
		Name:       "Korean",
		NativeName: "한국어",
		RTL:        false,
	},
	"ar": {
		Code:       "ar",
		Name:       "Arabic",
		NativeName: "العربية",
		RTL:        true,
	},
	"he": {
		Code:       "he",
		Name:       "Hebrew",
		NativeName: "עברית",
		RTL:        true,
	},
	"fa": {
		Code:       "fa",
		Name:       "Persian",
		NativeName: "فارسی",
		RTL:        true,
	},
	"ur": {
		Code:       "ur",
		Name:       "Urdu",
		NativeName: "اردو",
		RTL:        true,
	},
	"tr": {
		Code:       "tr",
		Name:       "Turkish",
		NativeName: "Türkçe",
		RTL:        false,
	},
	"vi": {
		Code:       "vi",
		Name:       "Vietnamese",
		NativeName: "Tiếng Việt",
		RTL:        false,
	},
	"th": {
		Code:       "th",
		Name:       "Thai",
		NativeName: "ไทย",
		RTL:        false,
	},
	"id": {
		Code:       "id",
		Name:       "Indonesian",
		NativeName: "Bahasa Indonesia",
		RTL:        false,
	},
	"uk": {
		Code:       "uk",
		Name:       "Ukrainian",
		NativeName: "Українська",
		RTL:        false,
	},
	"cs": {
		Code:       "cs",
		Name:       "Czech",
		NativeName: "Čeština",
		RTL:        false,
	},
	"sv": {
		Code:       "sv",
		Name:       "Swedish",
		NativeName: "Svenska",
		RTL:        false,
	},
	"da": {
		Code:       "da",
		Name:       "Danish",
		NativeName: "Dansk",
		RTL:        false,
	},
	"fi": {
		Code:       "fi",
		Name:       "Finnish",
		NativeName: "Suomi",
		RTL:        false,
	},
	"no": {
		Code:       "no",
		Name:       "Norwegian",
		NativeName: "Norsk",
		RTL:        false,
	},
	"hu": {
		Code:       "hu",
		Name:       "Hungarian",
		NativeName: "Magyar",
		RTL:        false,
	},
	"el": {
		Code:       "el",
		Name:       "Greek",
		NativeName: "Ελληνικά",
		RTL:        false,
	},
	"ro": {
		Code:       "ro",
		Name:       "Romanian",
		NativeName: "Română",
		RTL:        false,
	},
	"bg": {
		Code:       "bg",
		Name:       "Bulgarian",
		NativeName: "Български",
		RTL:        false,
	},
	"sk": {
		Code:       "sk",
		Name:       "Slovak",
		NativeName: "Slovenčina",
		RTL:        false,
	},
	"hr": {
		Code:       "hr",
		Name:       "Croatian",
		NativeName: "Hrvatski",
		RTL:        false,
	},
	"sr": {
		Code:       "sr",
		Name:       "Serbian",
		NativeName: "Српски",
		RTL:        false,
	},
	"sl": {
		Code:       "sl",
		Name:       "Slovenian",
		NativeName: "Slovenščina",
		RTL:        false,
	},
	"et": {
		Code:       "et",
		Name:       "Estonian",
		NativeName: "Eesti",
		RTL:        false,
	},
	"lv": {
		Code:       "lv",
		Name:       "Latvian",
		NativeName: "Latviešu",
		RTL:        false,
	},
	"lt": {
		Code:       "lt",
		Name:       "Lithuanian",
		NativeName: "Lietuvių",
		RTL:        false,
	},
}

Languages is the map of all supported languages

Functions

func AllLanguageCodes

func AllLanguageCodes() []string

AllLanguageCodes returns all available language codes

func DefaultSupportedLanguages

func DefaultSupportedLanguages() []string

DefaultSupportedLanguages returns the default list of supported languages

func IsValidLanguageCode

func IsValidLanguageCode(code string) bool

IsValidLanguageCode checks if a language code is valid

func LocalesFS

func LocalesFS() embed.FS

LocalesFS returns the embedded locales filesystem for external use

func RTLLanguages

func RTLLanguages() []string

RTLLanguages returns the list of RTL language codes

func SetLanguageCookie

func SetLanguageCookie(w http.ResponseWriter, lang string)

SetLanguageCookie sets the language preference cookie

Types

type Language

type Language struct {
	Code       string // BCP 47 language code (e.g., "en", "de")
	Name       string // English name (e.g., "English", "German")
	NativeName string // Native name (e.g., "English", "Deutsch")
	RTL        bool   // Right-to-left language
}

Language represents a supported language

func GetLanguage

func GetLanguage(code string) (Language, bool)

GetLanguage returns language info by code

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager handles translations and language detection

func DefaultManager

func DefaultManager() (*Manager, error)

DefaultManager creates a new i18n manager with embedded translations Uses the default supported languages and loads from embedded locales

func NewManager

func NewManager(defaultLang string, supported []string) *Manager

NewManager creates a new i18n manager

func (*Manager) DefaultLanguage

func (m *Manager) DefaultLanguage() string

DefaultLanguage returns the default language code

func (*Manager) DetectLanguage

func (m *Manager) DetectLanguage(r *http.Request) string

DetectLanguage detects the preferred language from the request Priority: 1. Cookie 2. Accept-Language header 3. Default

func (*Manager) IsRTL

func (m *Manager) IsRTL(lang string) bool

IsRTL checks if a language is right-to-left

func (*Manager) IsSupported

func (m *Manager) IsSupported(lang string) bool

IsSupported checks if a language is supported

func (*Manager) LoadFromFS

func (m *Manager) LoadFromFS(fs embed.FS, dir string) error

LoadFromFS loads translations from an embedded filesystem Supports both flat and nested JSON structures Nested keys are flattened with dot notation: {"auth": {"login": "Log In"}} -> "auth.login" = "Log In"

func (*Manager) LoadFromMap

func (m *Manager) LoadFromMap(lang string, translations map[string]string)

LoadFromMap loads translations from a map (useful for testing)

func (*Manager) NewTranslator

func (m *Manager) NewTranslator(lang string) *Translator

NewTranslator creates a translator for a specific language

func (*Manager) SupportedLanguageCodes

func (m *Manager) SupportedLanguageCodes() []string

SupportedLanguageCodes returns the list of supported language codes Used for security.txt Preferred-Languages field per RFC 9116

func (*Manager) SupportedLanguages

func (m *Manager) SupportedLanguages() []Language

SupportedLanguages returns the list of supported languages

func (*Manager) T

func (m *Manager) T(lang, key string, args ...interface{}) string

T translates a key with optional format arguments

func (*Manager) TemplateFuncs

func (m *Manager) TemplateFuncs(lang string) template.FuncMap

TemplateFuncs returns template functions for i18n

type Translator

type Translator struct {
	// contains filtered or unexported fields
}

Translator is a language-specific translator for use in templates

func (*Translator) Dir

func (t *Translator) Dir() string

Dir returns "rtl" or "ltr" based on language direction

func (*Translator) IsRTL

func (t *Translator) IsRTL() bool

IsRTL returns true if the current language is right-to-left

func (*Translator) Lang

func (t *Translator) Lang() string

Lang returns the current language code

func (*Translator) Languages

func (t *Translator) Languages() []Language

Languages returns all supported languages

func (*Translator) T

func (t *Translator) T(key string, args ...interface{}) string

T translates a key

Jump to

Keyboard shortcuts

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