[generator] modify translation behaviour and tests

This commit is contained in:
LaGrunge 2019-07-03 12:21:26 +03:00
parent f2971e486d
commit fb8deb0c6d
3 changed files with 18 additions and 8 deletions

View file

@ -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"), ());
}

View file

@ -13,8 +13,8 @@ namespace
using Languages = std::vector<std::string>;
const std::unordered_map<generator::LanguageCode, Languages> 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))
{

View file

@ -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);