diff --git a/coding/string_utf8_multilang.cpp b/coding/string_utf8_multilang.cpp index 8639542a9f..2fe62d281e 100644 --- a/coding/string_utf8_multilang.cpp +++ b/coding/string_utf8_multilang.cpp @@ -104,6 +104,9 @@ StringUtf8Multilang::Languages const & StringUtf8Multilang::GetSupportedLanguage // Asserts for generic class constants. ASSERT_EQUAL(kLanguages[kDefaultCode].m_code, string("default"), ()); ASSERT_EQUAL(kLanguages[kInternationalCode].m_code, string("int_name"), ()); + ASSERT_EQUAL(kLanguages[kAltNameCode].m_code, string("alt_name"), ()); + ASSERT_EQUAL(kLanguages[kOldNameCode].m_code, string("old_name"), ()); + ASSERT_EQUAL(kLanguages[kEnglishCode].m_code, string("en"), ()); static StringUtf8Multilang::Languages languages; if (languages.empty()) { diff --git a/coding/string_utf8_multilang.hpp b/coding/string_utf8_multilang.hpp index f786e259d2..46c79f617a 100644 --- a/coding/string_utf8_multilang.hpp +++ b/coding/string_utf8_multilang.hpp @@ -86,6 +86,8 @@ public: static int8_t constexpr kDefaultCode = 0; static int8_t constexpr kEnglishCode = 1; static int8_t constexpr kInternationalCode = 7; + static int8_t constexpr kAltNameCode = 53; + static int8_t constexpr kOldNameCode = 55; /// How many languages we support on indexing stage. See full list in cpp file. /// TODO(AlexZ): Review and replace invalid languages by valid ones. static int8_t constexpr kMaxSupportedLanguages = 64; diff --git a/editor/xml_feature.cpp b/editor/xml_feature.cpp index 310e9315e2..e375ed6737 100644 --- a/editor/xml_feature.cpp +++ b/editor/xml_feature.cpp @@ -92,6 +92,13 @@ char const * const XMLFeature::kDefaultLang = StringUtf8Multilang::GetLangByCode(StringUtf8Multilang::kDefaultCode); char const * const XMLFeature::kIntlLang = StringUtf8Multilang::GetLangByCode(StringUtf8Multilang::kInternationalCode); +char const * const XMLFeature::kAltLang = + StringUtf8Multilang::GetLangByCode(StringUtf8Multilang::kAltNameCode); +char const * const XMLFeature::kOldLang = + StringUtf8Multilang::GetLangByCode(StringUtf8Multilang::kOldNameCode); +char const * const XMLFeature::kIntlName = XMLFeature::kIntlLang; +char const * const XMLFeature::kAltName = XMLFeature::kAltLang; +char const * const XMLFeature::kOldName = XMLFeature::kOldLang; XMLFeature::XMLFeature(Type const type) { @@ -239,6 +246,10 @@ string XMLFeature::GetName(string const & lang) const { if (lang == kIntlLang) return GetTagValue(kIntlName); + if (lang == kAltLang) + return GetTagValue(kAltName); + if (lang == kOldLang) + return GetTagValue(kOldName); auto const suffix = (lang == kDefaultLang || lang.empty()) ? "" : ":" + lang; return GetTagValue(kDefaultName + suffix); } @@ -253,7 +264,17 @@ void XMLFeature::SetName(string const & name) { SetName(kDefaultLang, name); } void XMLFeature::SetName(string const & lang, string const & name) { if (lang == kIntlLang) + { SetTagValue(kIntlName, name); + } + else if (lang == kAltLang) + { + SetTagValue(kAltName, name); + } + else if (lang == kOldLang) + { + SetTagValue(kOldName, name); + } else { auto const suffix = (lang == kDefaultLang || lang.empty()) ? "" : ":" + lang; diff --git a/editor/xml_feature.hpp b/editor/xml_feature.hpp index dfdeda925c..38aa9c901b 100644 --- a/editor/xml_feature.hpp +++ b/editor/xml_feature.hpp @@ -31,10 +31,14 @@ DECLARE_EXCEPTION(NoHeader, XMLFeatureError); class XMLFeature { static constexpr char const * kDefaultName = "name"; - static constexpr char const * kIntlName = "int_name"; static constexpr char const * kLocalName = "name:"; + static char const * const kIntlName; + static char const * const kAltName; + static char const * const kOldName; static char const * const kDefaultLang; static char const * const kIntlLang; + static char const * const kAltLang; + static char const * const kOldLang; public: // Used in point to string serialization.