ut.go 970 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package ut
  2. // UniversalTranslator holds all locale Translator instances
  3. type UniversalTranslator struct {
  4. translators map[string]*Translator
  5. fallback *Translator
  6. }
  7. // New creates a new UniversalTranslator instance.
  8. func New() *UniversalTranslator {
  9. return &UniversalTranslator{}
  10. }
  11. // SetFallback registers the fallback Translator instance when no matching Translator
  12. // can be found via a given locale
  13. func (ut *UniversalTranslator) SetFallback(translator *Translator) {
  14. ut.fallback = translator
  15. }
  16. // LoadTranslator instantiates, if not already exists, the specified translator
  17. // for the given locale
  18. func (ut *UniversalTranslator) LoadTranslator(locale string) (*Translator, error) {
  19. if t, ok := ut.translators[locale]; ok {
  20. return t, nil
  21. }
  22. t, err := newTranslator(locale)
  23. if err != nil {
  24. return nil, err
  25. }
  26. ut.translators[locale] = t
  27. // just to ensure it get's set to something
  28. if ut.fallback == nil {
  29. ut.fallback = t
  30. }
  31. return t, nil
  32. }