go-i18n/context_map.go

84 lines
1.6 KiB
Go
Raw Permalink Normal View History

package i18n
import "dappco.re/go/core"
func mapValueString(values any, key string) (string, bool) {
switch m := values.(type) {
case map[string]any:
raw, ok := m[key]
if !ok {
return "", false
}
text := core.Trim(core.Sprintf("%v", raw))
if text == "" {
return "", false
}
return text, true
case map[string]string:
text, ok := m[key]
if !ok {
return "", false
}
text = core.Trim(text)
if text == "" {
return "", false
}
return text, true
default:
return "", false
}
}
func contextMapValues(values any) map[string]any {
switch m := values.(type) {
case map[string]any:
return contextMapValuesAny(m)
case map[string]string:
return contextMapValuesString(m)
default:
return nil
}
}
func contextMapValuesAny(values map[string]any) map[string]any {
if len(values) == 0 {
return nil
}
extra := make(map[string]any, len(values))
for key, value := range values {
switch key {
case "Context", "Gender", "Location", "Formality", "Count", "IsPlural":
continue
case "Extra", "extra", "Extras", "extras":
mergeContextExtra(extra, value)
continue
default:
extra[key] = value
}
}
if len(extra) == 0 {
return nil
}
return extra
}
func contextMapValuesString(values map[string]string) map[string]any {
if len(values) == 0 {
return nil
}
extra := make(map[string]any, len(values))
for key, value := range values {
switch key {
case "Context", "Gender", "Location", "Formality", "Count", "IsPlural",
"Extra", "extra", "Extras", "extras":
continue
default:
extra[key] = value
}
}
if len(extra) == 0 {
return nil
}
return extra
}