translator

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 18, 2025 License: BSD-3-Clause Imports: 9 Imported by: 0

README

Translator

This package provides a flexible translation system in Go, supporting multiple translation formats including YAML and PO files.

Static Badge

GoDoc GitHub stars Go Report Card codecov

Versions

Stable Version GitHub Release GitHub Release

Features

  • 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.

Installation

go get -u github.com/gouef/translator

Usage

Initializing the Translator
package 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"))
}
Using PO Translations
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"))
}

API Documentation

translator.Init()

Initializes the translator system by clearing registered translators.

translator.Register(translator Translator)

Registers a new translation provider (YAML, PO, etc.). The last registered provider becomes the active one.

translator.SetLanguage(lang string) error

Sets the active language for translation.

translator.GetLanguage() string

Returns the currently active language.

translator.Translate(key string, args ...interface{}) string

Translates a given key using the active translation provider. Supports placeholders with formatting.

YAML Format

Example locales/cs_CZ/messages.yaml:

hello: "Ahoj"
errors:
  hello: "Chyba: Ahoj"

PO/MO Format

Example locales/cs_CZ/messages.po:

msgid "hello"
msgstr "Ahoj"

msgid "errors.hello"
msgstr "Chyba: Ahoj"

Contributing

Read Contributing

Contributors

actions-user JanGalek

Join our Discord Community! 🎉

Discord

Click above to join our community on Discord!

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetLanguage

func GetLanguage() string

GetLanguage return active language

func Init

func Init()

Init initializing map of translators

func Register

func Register(translator Translator)

Register add Translator

func SetLanguage

func SetLanguage(lang string) error

SetLanguage set active language

func Translate

func Translate(key string, args ...interface{}) string

Translate translating by active language

Types

type PO

type PO struct {
	// contains filtered or unexported fields
}

func NewPO

func NewPO(dir string) (*PO, error)

NewPO create new Translator implementation for PO

func (*PO) GetLanguage

func (p *PO) GetLanguage() string

GetLanguage return active language

func (*PO) SetLanguage

func (p *PO) SetLanguage(lang string) error

SetLanguage set active language

func (*PO) Translate

func (p *PO) Translate(key string, args ...interface{}) (error, string)

Translate translating by active language

type Translator

type Translator interface {
	Translate(key string, args ...interface{}) (error, string)
	SetLanguage(lang string) error
	GetLanguage() string
}

Translator interface for translators

type Yaml

type Yaml struct {
	// contains filtered or unexported fields
}

func NewYaml

func NewYaml(dir string) (*Yaml, error)

NewYaml create new Translator implementation for Yaml

func (*Yaml) GetLanguage

func (p *Yaml) GetLanguage() string

GetLanguage return active language

func (*Yaml) SetLanguage

func (p *Yaml) SetLanguage(lang string) error

SetLanguage set active language

func (*Yaml) Translate

func (p *Yaml) Translate(key string, args ...interface{}) (error, string)

Translate translating by active language

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL