translator.go 932 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright 2017 Frédéric Guillot. All rights reserved.
  2. // Use of this source code is governed by the Apache 2.0
  3. // license that can be found in the LICENSE file.
  4. package locale
  5. import (
  6. "encoding/json"
  7. "fmt"
  8. "strings"
  9. )
  10. type Translator struct {
  11. Locales Locales
  12. }
  13. func (t *Translator) AddLanguage(language, translations string) error {
  14. var decodedTranslations Translation
  15. decoder := json.NewDecoder(strings.NewReader(translations))
  16. if err := decoder.Decode(&decodedTranslations); err != nil {
  17. return fmt.Errorf("Invalid JSON file: %v", err)
  18. }
  19. t.Locales[language] = decodedTranslations
  20. return nil
  21. }
  22. func (t *Translator) GetLanguage(language string) *Language {
  23. translations, found := t.Locales[language]
  24. if !found {
  25. return &Language{language: language}
  26. }
  27. return &Language{language: language, translations: translations}
  28. }
  29. func NewTranslator() *Translator {
  30. return &Translator{Locales: make(Locales)}
  31. }