43 lines
978 B
Go
43 lines
978 B
Go
package example
|
|
|
|
import (
|
|
"context"
|
|
"embed"
|
|
"fmt"
|
|
|
|
"golang.org/x/text/language"
|
|
"golang.org/x/text/language/display"
|
|
|
|
i18n "github.com/derfenix/goi18n"
|
|
)
|
|
|
|
//go:embed locales/**/*.json
|
|
var locales embed.FS
|
|
|
|
func Basic() {
|
|
if err := i18n.Init(locales); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
printer := i18n.GetPrinter(language.Russian)
|
|
fmt.Println(printer.Sprintf("test", "теста"))
|
|
|
|
printer = i18n.GetPrinter(language.English)
|
|
fmt.Println(printer.Sprintf("test", "beer"))
|
|
|
|
ctx := i18n.ContextWithLang(context.Background(), language.Russian)
|
|
handler(ctx)
|
|
|
|
ctx = i18n.ContextWithLang(context.Background(), language.English)
|
|
handler(ctx)
|
|
}
|
|
|
|
func handler(ctx context.Context) {
|
|
translated := i18n.Sprintf(ctx, "test plural", 2)
|
|
fmt.Println(translated)
|
|
|
|
lang := i18n.LanguageFromContext(ctx)
|
|
script, _ := lang.Script()
|
|
fmt.Println("Использован", display.Languages(language.Russian).Name(lang), "язык,", display.Scripts(language.Russian).Name(script))
|
|
}
|