| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
- // SPDX-License-Identifier: Apache-2.0
- package locale // import "miniflux.app/v2/internal/locale"
- import (
- "testing"
- )
- func TestParserWithInvalidData(t *testing.T) {
- _, err := parseTranslationMessages([]byte(`{`))
- if err == nil {
- t.Fatal(`An error should be returned when parsing invalid data`)
- }
- }
- func TestParser(t *testing.T) {
- translations, err := parseTranslationMessages([]byte(`{"k": "v"}`))
- if err != nil {
- t.Fatalf(`Unexpected parsing error: %v`, err)
- }
- value, found := translations.singulars["k"]
- if !found {
- t.Fatalf(`The translation %v should contains the defined key`, translations.singulars)
- }
- if value != "v" {
- t.Fatal(`The translation key should contains the defined value`)
- }
- }
- func TestLoadCatalog(t *testing.T) {
- for language := range AvailableLanguages {
- _, err := loadTranslationFile(language)
- if err != nil {
- t.Fatal(err)
- }
- }
- }
- func TestAllKeysHaveValue(t *testing.T) {
- for language := range AvailableLanguages {
- messages, err := loadTranslationFile(language)
- if err != nil {
- t.Fatalf(`Unable to load translation messages for language %q`, language)
- }
- if len(messages.singulars) == 0 {
- t.Fatalf(`The language %q doesn't have any messages for singulars`, language)
- }
- if len(messages.plurals) == 0 {
- t.Fatalf(`The language %q doesn't have any messages for plurals`, language)
- }
- for k, v := range messages.singulars {
- if len(v) == 0 {
- t.Errorf(`The key %q for singulars for the language %q has an empty list as value`, k, language)
- }
- }
- for k, v := range messages.plurals {
- if len(v) == 0 {
- t.Errorf(`The key %q for plurals for the language %q has an empty list as value`, k, language)
- }
- }
- }
- }
- func TestMissingTranslations(t *testing.T) {
- refLang := "en_US"
- references, err := loadTranslationFile(refLang)
- if err != nil {
- t.Fatal(`Unable to parse reference language`)
- }
- for language := range AvailableLanguages {
- if language == refLang {
- continue
- }
- messages, err := loadTranslationFile(language)
- if err != nil {
- t.Fatalf(`Parsing error for language %q`, language)
- }
- for key := range references.singulars {
- if _, found := messages.singulars[key]; !found {
- t.Errorf(`Translation key %q not found in language %q singulars`, key, language)
- }
- }
- for key := range references.plurals {
- if _, found := messages.plurals[key]; !found {
- t.Errorf(`Translation key %q not found in language %q plurals`, key, language)
- }
- }
- }
- }
- func TestTranslationFilePluralForms(t *testing.T) {
- var numberOfPluralFormsPerLanguage = map[string]int{
- "de_DE": 2,
- "el_EL": 2,
- "en_US": 2,
- "es_ES": 2,
- "fi_FI": 2,
- "fr_FR": 2,
- "hi_IN": 2,
- "id_ID": 1,
- "it_IT": 2,
- "ja_JP": 1,
- "nan_Latn_pehoeji": 1,
- "nl_NL": 2,
- "pl_PL": 3,
- "pt_BR": 2,
- "ro_RO": 3,
- "ru_RU": 3,
- "tr_TR": 2,
- "uk_UA": 3,
- "zh_CN": 1,
- "zh_TW": 1,
- }
- for language := range AvailableLanguages {
- messages, err := loadTranslationFile(language)
- if err != nil {
- t.Fatalf(`Unable to load translation messages for language %q`, language)
- }
- for k, v := range messages.plurals {
- if len(v) != numberOfPluralFormsPerLanguage[language] {
- t.Errorf(`The key %q for the language %q does not have the expected number of plurals, got %d instead of %d`, k, language, len(v), numberOfPluralFormsPerLanguage[language])
- }
- }
- }
- }
|