diff options
author | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2017-03-24 14:22:54 +0300 |
---|---|---|
committer | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2017-03-30 14:53:25 +0300 |
commit | bfdc4ee246347545456116a7ef9e39c160170830 (patch) | |
tree | b92094b7f3a4ccd71658034275dcc79fd8e1a9a1 /indexer/feature_utils.cpp | |
parent | 955d43ea1e4597e138e8ec213688fab4594f6d7f (diff) |
Using a pool of transliterators.
Diffstat (limited to 'indexer/feature_utils.cpp')
-rw-r--r-- | indexer/feature_utils.cpp | 38 |
1 files changed, 3 insertions, 35 deletions
diff --git a/indexer/feature_utils.cpp b/indexer/feature_utils.cpp index f9cf16d51e..ef36b6fa47 100644 --- a/indexer/feature_utils.cpp +++ b/indexer/feature_utils.cpp @@ -8,14 +8,10 @@ #include "geometry/point2d.hpp" #include "coding/multilang_utf8_string.hpp" +#include "coding/transliteration.hpp" #include "base/base.hpp" -#include "3party/icu/i18n/unicode/translit.h" -#include "3party/icu/i18n/unicode/utrans.h" -#include "3party/icu/common/unicode/utypes.h" -#include "3party/icu/common/unicode/unistr.h" - #include "std/vector.hpp" namespace @@ -44,13 +40,13 @@ void GetTransliteratedName(feature::RegionData const & regionData, StringUtf8Mul { if (src.GetString(code, srcName)) { - out = Transliterate(srcName, StringUtf8Multilang::GetLangEnNameByCode(code)); + out = Transliteration::GetInstance().Transliterate(srcName, code); if (!out.empty()) return; } } if (!mwmLangCodes.empty() && src.GetString(StringUtf8Multilang::kDefaultCode, srcName)) - out = Transliterate(srcName, StringUtf8Multilang::GetLangEnNameByCode(mwmLangCodes[0])); + out = Transliteration::GetInstance().Transliterate(srcName, mwmLangCodes[0]); } void GetBestName(StringUtf8Multilang const & src, vector<int8_t> const & priorityList, string & out) @@ -87,34 +83,6 @@ void GetBestName(StringUtf8Multilang const & src, vector<int8_t> const & priorit } } // namespace -void initICU(std::string const & icuDataDir) -{ - u_setDataDirectory(icuDataDir.c_str()); -} - -std::string Transliterate(std::string const & str, std::string const & lang) -{ - UnicodeString ustr(str.c_str()); - UErrorCode status = U_ZERO_ERROR; - - const std::string id = lang + "-Latin/BGN"; - std::unique_ptr<Transliterator> latinTransliterator(Transliterator::createInstance(id.c_str(), UTRANS_FORWARD, status)); - if (latinTransliterator == nullptr) - { - LOG(LWARNING, ("Cannot create transliterator", id)); - return ""; - } - - latinTransliterator->transliterate(ustr); - - std::string resultStr; - ustr.toUTF8String(resultStr); - - LOG(LDEBUG, ("Transliterated", str, "->", resultStr, "id =", id)); - - return resultStr; -} - namespace feature { |