Make sure the package locale pass golint

This commit is contained in:
Frédéric Guillot 2017-11-25 15:56:44 -08:00
parent db77e55119
commit f072439b79
5 changed files with 24 additions and 13 deletions

View file

@ -116,5 +116,5 @@ func main() {
generateFile("js", "static", "Javascript", "server/static/js/*.js", "server/static/js.go")
generateFile("none", "template", "templateViewsMap", "server/template/html/*.html", "server/template/views.go")
generateFile("none", "template", "templateCommonMap", "server/template/html/common/*.html", "server/template/common.go")
generateFile("none", "locale", "Translations", "locale/translations/*.json", "locale/translations.go")
generateFile("none", "locale", "translations", "locale/translations/*.json", "locale/translations.go")
}

View file

@ -6,11 +6,13 @@ package locale
import "fmt"
// Language represents a language in the system.
type Language struct {
language string
translations Translation
}
// Get fetch the translation for the given key.
func (l *Language) Get(key string, args ...interface{}) string {
var translation string
@ -24,11 +26,12 @@ func (l *Language) Get(key string, args ...interface{}) string {
return fmt.Sprintf(translation, args...)
}
// Plural returns the translation of the given key by using the language plural form.
func (l *Language) Plural(key string, n int, args ...interface{}) string {
translation := key
slices, found := l.translations[key]
if found {
if found {
pluralForm, found := pluralForms[l.language]
if !found {
pluralForm = pluralForms["default"]

View file

@ -6,16 +6,19 @@ package locale
import "log"
// Translation is the translation mapping table.
type Translation map[string]interface{}
// Locales represents locales supported by the system.
type Locales map[string]Translation
// Load prepare the locale system by loading all translations.
func Load() *Translator {
translator := NewTranslator()
for language, translations := range Translations {
for language, tr := range translations {
log.Println("Loading translation:", language)
translator.AddLanguage(language, translations)
translator.AddLanguage(language, tr)
}
return translator

View file

@ -1,9 +1,9 @@
// Code generated by go generate; DO NOT EDIT.
// 2017-11-25 10:47:30.371865884 -0800 PST m=+0.027993990
// 2017-11-25 15:50:52.572283626 -0800 PST m=+0.030941705
package locale
var Translations = map[string]string{
var translations = map[string]string{
"en_US": `{
"plural.feed.error_count": [
"%d error",
@ -149,12 +149,13 @@ var Translations = map[string]string{
"Sign in with Google": "Se connecter avec Google",
"Unlink my Google account": "Dissocier mon compte Google",
"Link my Google account": "Associer mon compte Google",
"Category not found for this user.": "Cette catégorie n'existe pas pour cet utilisateur."
"Category not found for this user.": "Cette catégorie n'existe pas pour cet utilisateur.",
"Invalid theme.": "Le thème est invalide."
}
`,
}
var TranslationsChecksums = map[string]string{
var translationsChecksums = map[string]string{
"en_US": "6fe95384260941e8a5a3c695a655a932e0a8a6a572c1e45cb2b1ae8baa01b897",
"fr_FR": "92b360ebbfae5c243897c05f7869e6bef0129a2c8275b6802fbaba0d05410e91",
"fr_FR": "48622d4796fe4a461221565d84f52e22fb167a44a870b08ba32887897bdfbb1a",
}

View file

@ -10,10 +10,12 @@ import (
"strings"
)
// Translator manage supported locales.
type Translator struct {
Locales Locales
locales Locales
}
// AddLanguage loads a new language into the system.
func (t *Translator) AddLanguage(language, translations string) error {
var decodedTranslations Translation
@ -22,12 +24,13 @@ func (t *Translator) AddLanguage(language, translations string) error {
return fmt.Errorf("Invalid JSON file: %v", err)
}
t.Locales[language] = decodedTranslations
t.locales[language] = decodedTranslations
return nil
}
// GetLanguage returns the given language handler.
func (t *Translator) GetLanguage(language string) *Language {
translations, found := t.Locales[language]
translations, found := t.locales[language]
if !found {
return &Language{language: language}
}
@ -35,6 +38,7 @@ func (t *Translator) GetLanguage(language string) *Language {
return &Language{language: language, translations: translations}
}
// NewTranslator creates a new Translator.
func NewTranslator() *Translator {
return &Translator{Locales: make(Locales)}
return &Translator{locales: make(Locales)}
}