- 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>
74 lines
1.7 KiB
Markdown
74 lines
1.7 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
go get github.com/snider/i18n/i18n
|
|
```
|
|
|
|
## Basic Usage
|
|
|
|
### 1. Import the Package
|
|
|
|
```go
|
|
import "github.com/snider/i18n/i18n"
|
|
```
|
|
|
|
### 2. Initialize the Service
|
|
|
|
Create a new instance of the i18n service. This will load the embedded locales.
|
|
|
|
```go
|
|
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").
|
|
|
|
```go
|
|
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.
|
|
|
|
```go
|
|
// 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`:**
|
|
```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.
|