58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
|
package translation
|
||
|
|
||
|
import (
|
||
|
"github.com/nicksnyder/go-i18n/i18n/language"
|
||
|
)
|
||
|
|
||
|
type singleTranslation struct {
|
||
|
id string
|
||
|
template *template
|
||
|
}
|
||
|
|
||
|
func (st *singleTranslation) MarshalInterface() interface{} {
|
||
|
return map[string]interface{}{
|
||
|
"id": st.id,
|
||
|
"translation": st.template,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
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 {
|
||
|
if st.template == nil || st.template.src == "" {
|
||
|
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{})
|