package main
import (
"fmt"
"os"
"strings"
"github.com/leonelquinteros/gotext"
)
func main() {
// Set locale from environment
locale := getLocale()
// Configure gettext
gotext.Configure("locales", locale, "default")
// Translate and print
fmt.Println(gotext.Get("Hello World"))
fmt.Println(gotext.Get("Goodbye World"))
}
// Determine locale from environment variables
func getLocale() string {
// Check LC_MESSAGES first
if loc := os.Getenv("LC_MESSAGES"); loc != "" {
return normalizeLocale(loc)
// Fallback to LANG if LC_MESSAGES is empty
if loc := os.Getenv("LANG"); loc != "" {
// Default to English
return "en_US"
// Normalize locale format (es_ES.UTF-8 → es_ES)
func normalizeLocale(loc string) string {
if idx := strings.Index(loc, "."); idx != -1 {
return loc[:idx]
if idx := strings.Index(loc, "@"); idx != -1 {
return loc