This package provides a flexible translation system in Go, supporting multiple translation formats including YAML and PO files.
- Support for multiple translation formats (YAML, PO/MO).
- Thread-safe implementation with
sync.RWMutex. - Supports hierarchical and nested keys for translations.
- Easy registration of multiple translators.
- Dynamic language switching.
go get -u github.com/gouef/translatorpackage main
import (
"fmt"
"log"
"github.com/gouef/translator"
)
func main() {
translator.Init()
// Load YAML translations
yamlTranslator, err := translator.NewYaml("locales")
if err != nil {
log.Fatal(err)
}
translator.Register(yamlTranslator)
// Set active language
err = translator.SetLanguage("cs_CZ")
if err != nil {
log.Fatal(err)
}
// Translate a key
fmt.Println(translator.Translate("hello"))
}package main
import (
"fmt"
"log"
"github.com/gouef/translator"
)
func main() {
translator.Init()
poTranslator, err := translator.NewPO("locales")
if err != nil {
log.Fatal(err)
}
translator.Register(poTranslator)
err = translator.SetLanguage("cs_CZ")
if err != nil {
log.Fatal(err)
}
fmt.Println(translator.Translate("errors.hello"))
}Initializes the translator system by clearing registered translators.
Registers a new translation provider (YAML, PO, etc.). The last registered provider becomes the active one.
Sets the active language for translation.
Returns the currently active language.
Translates a given key using the active translation provider. Supports placeholders with formatting.
Example locales/cs_CZ/messages.yaml:
hello: "Ahoj"
errors:
hello: "Chyba: Ahoj"Example locales/cs_CZ/messages.po:
msgid "hello"
msgstr "Ahoj"
msgid "errors.hello"
msgstr "Chyba: Ahoj"Read Contributing
Click above to join our community on Discord!
