forked from organicmaps/organicmaps
[generator] modify translation behaviour and tests
This commit is contained in:
parent
f2971e486d
commit
fb8deb0c6d
3 changed files with 18 additions and 8 deletions
|
@ -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"), ());
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue