fckeuspy-go/vendor/fyne.io/fyne/v2/lang/locale.go

57 lines
1.1 KiB
Go

package lang
import (
"github.com/jeandeaual/go-locale"
"golang.org/x/text/language"
"fyne.io/fyne/v2"
)
// SystemLocale returns the primary locale on the current system.
// This may refer to a language that Fyne does not have translations for.
func SystemLocale() fyne.Locale {
loc, err := locale.GetLocale()
if err != nil {
fyne.LogError("Failed to look up user locale", err)
}
if len(loc) < 2 {
loc = "en"
}
tag, err := language.Parse(loc)
if err != nil {
fyne.LogError("Error parsing user locale "+loc, err)
}
return localeFromTag(tag)
}
func closestSupportedLocale(locs []string) fyne.Locale {
matcher := language.NewMatcher(translated)
tags := make([]language.Tag, len(locs))
for i, loc := range locs {
tag, err := language.Parse(loc)
if err != nil {
fyne.LogError("Error parsing user locale "+loc, err)
}
tags[i] = tag
}
best, _, _ := matcher.Match(tags...)
return localeFromTag(best)
}
func localeFromTag(in language.Tag) fyne.Locale {
b, s, r := in.Raw()
ret := b.String()
if r.String() != "ZZ" {
ret += "-" + r.String()
if s.String() != "Zzzz" {
ret += "-" + s.String()
}
}
return fyne.Locale(ret)
}