98 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2018 DeineAgentur UG https://www.deineagentur.com. All rights reserved.
 | 
						|
 * Licensed under the MIT License. See LICENSE file in the project root for full license information.
 | 
						|
 */
 | 
						|
 | 
						|
package gotext
 | 
						|
 | 
						|
// Translation is the struct for the Translations parsed via Po or Mo files and all coming parsers
 | 
						|
type Translation struct {
 | 
						|
	ID       string
 | 
						|
	PluralID string
 | 
						|
	Trs      map[int]string
 | 
						|
	Refs     []string
 | 
						|
 | 
						|
	dirty bool
 | 
						|
}
 | 
						|
 | 
						|
// NewTranslation returns the Translation object and initialized it.
 | 
						|
func NewTranslation() *Translation {
 | 
						|
	return &Translation{
 | 
						|
		Trs: make(map[int]string),
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// NewTranslationWithRefs returns the Translation object and initialized it with references.
 | 
						|
func NewTranslationWithRefs(refs []string) *Translation {
 | 
						|
	return &Translation{
 | 
						|
		Trs:  make(map[int]string),
 | 
						|
		Refs: refs,
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// IsStale returns whether the translation is stale or not
 | 
						|
func (t *Translation) IsStale() bool {
 | 
						|
	return !t.dirty
 | 
						|
}
 | 
						|
 | 
						|
// SetRefs sets the references of the translation
 | 
						|
func (t *Translation) SetRefs(refs []string) {
 | 
						|
	t.Refs = refs
 | 
						|
	t.dirty = true
 | 
						|
}
 | 
						|
 | 
						|
// Set sets the string of the translation
 | 
						|
func (t *Translation) Set(str string) {
 | 
						|
	t.Trs[0] = str
 | 
						|
	t.dirty = true
 | 
						|
}
 | 
						|
 | 
						|
// Get returns the string of the translation
 | 
						|
func (t *Translation) Get() string {
 | 
						|
	// Look for Translation index 0
 | 
						|
	if _, ok := t.Trs[0]; ok {
 | 
						|
		if t.Trs[0] != "" {
 | 
						|
			return t.Trs[0]
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	// Return untranslated id by default
 | 
						|
	return t.ID
 | 
						|
}
 | 
						|
 | 
						|
// SetN sets the string of the plural translation
 | 
						|
func (t *Translation) SetN(n int, str string) {
 | 
						|
	t.Trs[n] = str
 | 
						|
	t.dirty = true
 | 
						|
}
 | 
						|
 | 
						|
// GetN returns the string of the plural translation
 | 
						|
func (t *Translation) GetN(n int) string {
 | 
						|
	// Look for Translation index
 | 
						|
	if _, ok := t.Trs[n]; ok {
 | 
						|
		if t.Trs[n] != "" {
 | 
						|
			return t.Trs[n]
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	// Return untranslated singular if corresponding
 | 
						|
	if n == 0 {
 | 
						|
		return t.ID
 | 
						|
	}
 | 
						|
 | 
						|
	// Return untranslated plural by default
 | 
						|
	return t.PluralID
 | 
						|
}
 | 
						|
 | 
						|
// IsTranslated reports whether a string is translated
 | 
						|
func (t *Translation) IsTranslated() bool {
 | 
						|
	tr, ok := t.Trs[0]
 | 
						|
	return tr != "" && ok
 | 
						|
}
 | 
						|
 | 
						|
// IsTranslatedN reports whether a plural string is translated
 | 
						|
func (t *Translation) IsTranslatedN(n int) bool {
 | 
						|
	tr, ok := t.Trs[n]
 | 
						|
	return tr != "" && ok
 | 
						|
}
 |