catalog.go 844 B

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright 2018 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 // import "miniflux.app/locale"
  5. import (
  6. "encoding/json"
  7. "fmt"
  8. )
  9. type translationDict map[string]interface{}
  10. type catalog map[string]translationDict
  11. var defaultCatalog catalog
  12. func init() {
  13. defaultCatalog = make(catalog)
  14. for language, data := range translations {
  15. messages, err := parseTranslationDict(data)
  16. if err != nil {
  17. panic(err)
  18. }
  19. defaultCatalog[language] = messages
  20. }
  21. }
  22. func parseTranslationDict(data string) (translationDict, error) {
  23. var translations translationDict
  24. if err := json.Unmarshal([]byte(data), &translations); err != nil {
  25. return nil, fmt.Errorf("invalid translation file: %v", err)
  26. }
  27. return translations, nil
  28. }