diff --git a/data/editor.config b/data/editor.config index 5158ddeb3e..daafe22cf7 100644 --- a/data/editor.config +++ b/data/editor.config @@ -119,7 +119,7 @@ - + diff --git a/indexer/editable_map_object.cpp b/indexer/editable_map_object.cpp index 0ee084cff2..711e7f6950 100644 --- a/indexer/editable_map_object.cpp +++ b/indexer/editable_map_object.cpp @@ -308,8 +308,23 @@ void EditableMapObject::ForEachMetadataItem( { for (auto const type : m_metadata.GetKeys()) { - auto const attributeName = ToString(type); - fn(attributeName, m_metadata.Get(type)); + // Multilang description may produce several tags with different values. + if (type == feature::Metadata::FMD_DESCRIPTION) + { + auto const multilangDescription = StringUtf8Multilang::FromBuffer(m_metadata.Get(type)); + multilangDescription.ForEach([&fn](int8_t code, string const & value) + { + if (code == StringUtf8Multilang::kDefaultCode) + fn("description", value); + else + fn(string("description:") + StringUtf8Multilang::GetLangByCode(code), value); + }); + } + else + { + string const attributeName = ToString(type); + fn(attributeName, m_metadata.Get(type)); + } } } diff --git a/indexer/feature_meta.cpp b/indexer/feature_meta.cpp index 5b98a31ed4..3937b47521 100644 --- a/indexer/feature_meta.cpp +++ b/indexer/feature_meta.cpp @@ -186,7 +186,8 @@ string ToString(Metadata::EType type) case Metadata::FMD_EMAIL: return "email"; case Metadata::FMD_POSTCODE: return "addr:postcode"; case Metadata::FMD_WIKIPEDIA: return "wikipedia"; - case Metadata::FMD_DESCRIPTION: return "description"; + // Description can store many strings in different languages and is processed separately. + //case Metadata::FMD_DESCRIPTION: return "description:en"; case Metadata::FMD_FLATS: return "addr:flats"; case Metadata::FMD_HEIGHT: return "height"; case Metadata::FMD_MIN_HEIGHT: return "min_height";