diff --git a/coding/transliteration.cpp b/coding/transliteration.cpp index fc3939d524..5da3b1b9f5 100644 --- a/coding/transliteration.cpp +++ b/coding/transliteration.cpp @@ -81,6 +81,7 @@ void Transliteration::SetMode(Transliteration::Mode mode) bool Transliteration::Transliterate(std::string transliteratorId, UnicodeString & ustr) const { + CHECK(m_inited, ()); CHECK(!transliteratorId.empty(), (transliteratorId)); auto it = m_transliterators.find(transliteratorId); @@ -127,9 +128,10 @@ bool Transliteration::Transliterate(std::string transliteratorId, UnicodeString return true; } -bool Transliteration::Transliterate(std::string const & str, std::string transliteratorId, - std::string & out) const +bool Transliteration::TransliterateForce(std::string const & str, std::string const & transliteratorId, + std::string & out) const { + CHECK(m_inited, ()); UnicodeString ustr(str.c_str()); auto const res = Transliterate(transliteratorId, ustr); if (res) @@ -140,6 +142,7 @@ bool Transliteration::Transliterate(std::string const & str, std::string transli bool Transliteration::Transliterate(std::string const & str, int8_t langCode, std::string & out) const { + CHECK(m_inited, ()); if (m_mode != Mode::Enabled) return false; @@ -152,11 +155,7 @@ bool Transliteration::Transliterate(std::string const & str, int8_t langCode, UnicodeString ustr(str.c_str()); for (auto transliteratorId : transliteratorsIds) - { - if (!Transliterate(transliteratorId, ustr)) - continue; - - } + Transliterate(transliteratorId, ustr); if (ustr.isEmpty()) return false; diff --git a/coding/transliteration.hpp b/coding/transliteration.hpp index e2c1e73fef..b0ede62cc6 100644 --- a/coding/transliteration.hpp +++ b/coding/transliteration.hpp @@ -28,10 +28,14 @@ public: void Init(std::string const & icuDataDir); void SetMode(Mode mode); - bool Transliterate(std::string const & str, std::string transliteratorId, - std::string & out) const; + // Transliterates |str| with transliterators set for |langCode| in StringUtf8Multilang + // if mode is set to Enabled. bool Transliterate(std::string const & str, int8_t langCode, std::string & out) const; + // Transliterates |str| with |transliteratorId|, ignores mode. + bool TransliterateForce(std::string const & str, std::string const & transliteratorId, + std::string & out) const; + private: struct TransliteratorInfo; diff --git a/indexer/search_string_utils.cpp b/indexer/search_string_utils.cpp index c2ef88f840..eb21f42d2c 100644 --- a/indexer/search_string_utils.cpp +++ b/indexer/search_string_utils.cpp @@ -70,7 +70,7 @@ void TransliterateHiraganaToKatakana(UniString & s) InitTransliterationInstanceWithDefaultDirs(); string out; - if (Transliteration::Instance().Transliterate(strings::ToUtf8(s), "Hiragana-Katakana", out)) + if (Transliteration::Instance().TransliterateForce(strings::ToUtf8(s), "Hiragana-Katakana", out)) s = MakeUniString(out); } } // namespace