matterbridge/vendor/github.com/mattermost/go-i18n/i18n/translation/single_translation.go

62 lines
1.4 KiB
Go
Raw Normal View History

2016-04-10 21:39:38 +00:00
package translation
import (
2020-08-09 22:29:54 +00:00
"github.com/mattermost/go-i18n/i18n/language"
2016-04-10 21:39:38 +00:00
)
type singleTranslation struct {
id string
template *template
}
func (st *singleTranslation) MarshalInterface() interface{} {
return map[string]interface{}{
"id": st.id,
"translation": st.template,
}
}
2020-08-09 22:29:54 +00:00
func (st *singleTranslation) MarshalFlatInterface() interface{} {
return map[string]interface{}{"other": st.template}
}
2016-04-10 21:39:38 +00:00
func (st *singleTranslation) ID() string {
return st.id
}
func (st *singleTranslation) Template(pc language.Plural) *template {
return st.template
}
func (st *singleTranslation) UntranslatedCopy() Translation {
return &singleTranslation{st.id, mustNewTemplate("")}
}
func (st *singleTranslation) Normalize(language *language.Language) Translation {
return st
}
func (st *singleTranslation) Backfill(src Translation) Translation {
2020-08-09 22:29:54 +00:00
if (st.template == nil || st.template.src == "") && src != nil {
2016-04-10 21:39:38 +00:00
st.template = src.Template(language.Other)
}
return st
}
func (st *singleTranslation) Merge(t Translation) Translation {
other, ok := t.(*singleTranslation)
if !ok || st.ID() != t.ID() {
return t
}
if other.template != nil && other.template.src != "" {
st.template = other.template
}
return st
}
func (st *singleTranslation) Incomplete(l *language.Language) bool {
return st.template == nil || st.template.src == ""
}
var _ = Translation(&singleTranslation{})