- Imported packages from separate repos: - github.com/Snider/config -> pkg/config - github.com/Snider/display -> pkg/display - github.com/Snider/help -> pkg/help - github.com/Snider/i18n -> pkg/i18n - github.com/Snider/updater -> pkg/updater - Moved core code from root to pkg/core - Flattened nested package structures - Updated all import paths to github.com/Snider/Core/pkg/* - Added Display interface to Core - Updated go.work for workspace modules Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1.7 KiB
Library Usage
The i18n package provides a simple and robust internationalization service for Go applications. It handles locale loading, language detection, and message translation.
Installation
go get github.com/snider/i18n/i18n
Basic Usage
1. Import the Package
import "github.com/snider/i18n/i18n"
2. Initialize the Service
Create a new instance of the i18n service. This will load the embedded locales.
i18nService, err := i18n.New()
if err != nil {
log.Fatal(err)
}
3. Set the Language
Set the desired language for the service. The language tag should be a valid BCP 47 tag (e.g., "en", "es", "fr-CA").
err = i18nService.SetLanguage("es")
if err != nil {
log.Printf("Language not supported: %v", err)
}
4. Translate Messages
Use the Translate method to retrieve localized messages by their ID.
// Simple translation
greeting := i18nService.Translate("greeting")
fmt.Println(greeting)
// Translation with template data
data := map[string]interface{}{
"Name": "Alice",
}
welcome := i18nService.Translate("welcome_message", data)
fmt.Println(welcome)
Managing Locales
Locales are stored as JSON files in the locales directory within the i18n package. The filenames correspond to the language tags (e.g., en.json, es.json).
Example locales/en.json:
{
"greeting": "Hello",
"welcome_message": "Welcome, {{.Name}}!"
}
These files are embedded into the Go binary, so they are available at runtime without needing external file access.
Language Support
The service automatically detects available languages based on the files present in the locales directory. You can use any language defined there.