diff --git a/generator/generator_tests/translation_test.cpp b/generator/generator_tests/translation_test.cpp index 104fcc0d2f..c6e66d3cfb 100644 --- a/generator/generator_tests/translation_test.cpp +++ b/generator/generator_tests/translation_test.cpp @@ -51,8 +51,8 @@ UNIT_TEST(Transliteration) {"sr", "Мичиген"}, {"ta", "மிச்சிகன்"}, {"th", "รัฐมิชิแกน"}, {"tl", "Misigan"}, {"uk", "Мічиган"}, {"yi", "מישיגן"}, {"zh", "密歇根州"}}; - TEST(TestTransliteration(scotlandTranslations, "Shotlandiya", "en"), ()); + TEST(TestTransliteration(scotlandTranslations, "Scotland", "en"), ()); TEST(TestTransliteration(michiganTranslations, "Michigan", "en"), ()); - TEST(TestTransliteration(scotlandTranslations, "Shotlandiya", "ru"), ()); - TEST(TestTransliteration(michiganTranslations, "Michigan", "ru"), ()); + TEST(TestTransliteration(scotlandTranslations, "Шотландия", "ru"), ()); + TEST(TestTransliteration(michiganTranslations, "Мичиган", "ru"), ()); } diff --git a/generator/translation.cpp b/generator/translation.cpp index 6b5c8ec826..de3de10f02 100644 --- a/generator/translation.cpp +++ b/generator/translation.cpp @@ -13,8 +13,8 @@ namespace using Languages = std::vector; const std::unordered_map kPreferredLanguagesForTransliterate = { - {StringUtf8Multilang::GetLangIndex("ru"), {"en" /*English*/, "ru" /*Русский*/}}, - {StringUtf8Multilang::GetLangIndex("en"), {"en" /*English*/, "ru" /*Русский*/}}}; + {StringUtf8Multilang::GetLangIndex("ru"), {"ru", "uk", "be"}}, + {StringUtf8Multilang::GetLangIndex("en"), {"en", "da", "es", "fr"}}}; Languages kLocalelanguages = {"en", "ru"}; } // namespace @@ -32,7 +32,16 @@ std::string GetTranslatedOrTransliteratedName(StringUtf8Multilang const & name, if (!s.empty() && strings::IsASCIIString(s)) return s; + s = GetName(name, StringUtf8Multilang::kDefaultCode); + if (!s.empty() && strings::IsASCIIString(s)) + return s; + auto const fn = [&s](int8_t code, std::string const & name) { + if (strings::IsASCIIString(name)) { + s = name; + return base::ControlFlow::Break; + } + if (code != StringUtf8Multilang::kDefaultCode && Transliteration::Instance().Transliterate(name, code, s) && strings::IsASCIIString(s)) { diff --git a/generator/translation.hpp b/generator/translation.hpp index e5bfa42556..99c3aa41ae 100644 --- a/generator/translation.hpp +++ b/generator/translation.hpp @@ -20,10 +20,11 @@ inline std::string GetName(StringUtf8Multilang const & name, LanguageCode lang) /// This function will take the following steps: /// 1. Return the |languageCode| name if it exists. -/// 2. Try to get International name -/// 3. Return transliteration trying to use kPreferredLanguagesForTransliterate +/// 2. Try to get international name. +/// 3. Try to check if default name is ASCII and return it if succeeds. +/// 4. Return transliteration trying to use kPreferredLanguagesForTransliterate /// first, then any, if it succeeds. -/// 3. Otherwise, return empty string. +/// 5. Otherwise, return empty string. std::string GetTranslatedOrTransliteratedName(StringUtf8Multilang const & name, LanguageCode languageCode);