package publicSettings import ( "path" "testing" "github.com/nicksnyder/go-i18n/i18n" "golang.org/x/text/language" "golang.org/x/text/language/display" "fmt" "strings" "github.com/NyaaPantsu/nyaa/config" ) // run before config/parse.go:init() var _ = func() (_ struct{}) { config.Configpaths[1] = path.Join("..", "..", config.Configpaths[1]) config.Configpaths[0] = path.Join("..", "..", config.Configpaths[0]) config.Reload() return }() func TestInitI18n(t *testing.T) { conf := config.Get().I18n conf.Directory = path.Join("..", "..", conf.Directory) var retriever UserRetriever // not required during initialization err := InitI18n(conf, retriever) if err != nil { t.Errorf("failed to initialize language translations: %v", err) } } func TestLanguages(t *testing.T) { conf := config.Get().I18n conf.Directory = path.Join("..", "..", conf.Directory) var retriever UserRetriever // not required during initialization err := InitI18n(conf, retriever) if err != nil { t.Errorf("failed to initialize language translations: %v", err) } displayLang := language.Make(conf.DefaultLanguage) if displayLang.String() == "und" { t.Errorf("Couldn't find the language display for the language %s", displayLang.String()) } n := display.Tags(displayLang) tags := i18n.LanguageTags() for _, languageTag := range tags { // The matcher will match Swiss German to German. lang := GetParentTag(languageTag) if lang.String() == "und" { t.Errorf("Couldn't find the language root for the language %s", languageTag) } fmt.Printf("Name of the language '%s' natively: %s\n", languageTag, strings.Title(display.Self.Name(lang))) fmt.Printf("Name of the language '%s' in %s: %s\n\n", languageTag, displayLang.String(), n.Name(lang)) } } func TestTranslate(t *testing.T) { conf := config.Get().I18n conf.Directory = path.Join("..", "..", conf.Directory) var retriever UserRetriever // not required during initialization err := InitI18n(conf, retriever) if err != nil { t.Errorf("failed to initialize language translations: %v", err) } T, _ := GetDefaultTfunc() test := []map[string]string{ { "test": "", "result": "", }, { "test": "fr-fr", "result": "French (France)", }, { "test": "fr", "result": "French", }, { "test": "fredfef", "result": "", }, } for _, langTest := range test { result := Translate(langTest["test"], T("language_code")) if result != langTest["result"] { t.Errorf("Result from Translate function different from the expected: have '%s', wants '%s'", result, langTest["result"]) } } }