SandpointsGitHook/vendor/github.com/gohugoio/localescompressed/locales.go

54 lines
1.2 KiB
Go

// Package localescompressed compresses and wraps all translators in github.com/gohugoio/locales.
// The translators are not created until asked for in Get.
package localescompressed
import (
"strings"
"sync"
"github.com/gohugoio/locales"
"github.com/gohugoio/locales/currency"
)
var (
// One normally only need a small subset of all the languages,
// so delay creation until needed.
mu sync.RWMutex
translatorFuncs = make(map[string]func() locales.Translator)
translators = make(map[string]locales.Translator)
)
// GetTranslator gets the Translator for the given locale, nil if not found.
func GetTranslator(locale string) locales.Translator {
locale = strings.ToLower(strings.ReplaceAll(locale, "-", "_"))
mu.RLock()
t, found := translators[locale]
if found {
mu.RUnlock()
return t
}
fn, found := translatorFuncs[locale]
mu.RUnlock()
if !found {
return nil
}
mu.Lock()
t = fn()
translators[locale] = t
mu.Unlock()
return t
}
// GetCurrency gets the currency for the given ISO 4217 code,
// or -1 if not found.
func GetCurrency(code string) currency.Type {
c, found := currencies[strings.ToUpper(code)]
if !found {
return -1
}
return c
}