cli/pkg/i18n/docs/library-usage.md
Snider 4e02d5bc97 refactor: bring external packages home and restructure
- 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>
2026-01-15 15:30:43 +00:00

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.