diff --git a/android/res/values-ru/strings.xml b/android/res/values-ru/strings.xml
index 47f46f449f..3e279ab471 100644
--- a/android/res/values-ru/strings.xml
+++ b/android/res/values-ru/strings.xml
@@ -830,4 +830,8 @@
Загрузить через сотовую связь?
На некоторых тарифных планах или в роуминге это может привести к значительным расходам.
Введите корректный номер дома
+ Количество этажей (максимум %1$s)
+ Редактируйте здания высотой максимум %1$s этажей.
+ Почтовый индекс
+ Введите корректный почтовый индекс
diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml
index fce5778725..4d3768d100 100644
--- a/android/res/values/strings.xml
+++ b/android/res/values/strings.xml
@@ -834,4 +834,6 @@
Download by using a cellular network connection?
This could be considerably expensive with some plans or if roaming.
Enter correct house number
+ ZIP Code
+ Enter correct ZIP Code
diff --git a/indexer/editable_map_object.cpp b/indexer/editable_map_object.cpp
index 7525191bd3..b8cd947c09 100644
--- a/indexer/editable_map_object.cpp
+++ b/indexer/editable_map_object.cpp
@@ -9,6 +9,9 @@
namespace osm
{
+// static
+int8_t const EditableMapObject::kMaximumLevelsEditableByUsers = 25;
+
bool EditableMapObject::IsNameEditable() const { return m_editableProperties.m_name; }
bool EditableMapObject::IsAddressEditable() const { return m_editableProperties.m_address; }
@@ -185,12 +188,16 @@ void EditableMapObject::SetFlats(string const & flats)
m_metadata.Set(feature::Metadata::FMD_FLATS, flats);
}
+// static
+bool EditableMapObject::ValidateBuildingLevels(string const & buildingLevels)
+{
+ uint64_t levels;
+ return strings::to_uint64(buildingLevels, levels) && levels <= kMaximumLevelsEditableByUsers;
+}
+
void EditableMapObject::SetBuildingLevels(string const & buildingLevels)
{
- auto constexpr kMaximumLevelsEditableByUsers = 50;
- uint64_t levels;
- if (strings::to_uint64(buildingLevels, levels) && levels <= kMaximumLevelsEditableByUsers)
- m_metadata.Set(feature::Metadata::FMD_BUILDING_LEVELS, buildingLevels);
+ m_metadata.Set(feature::Metadata::FMD_BUILDING_LEVELS, buildingLevels);
}
LocalizedStreet const & EditableMapObject::GetStreet() const { return m_street; }
diff --git a/indexer/editable_map_object.hpp b/indexer/editable_map_object.hpp
index 8b0e826ca1..eef0ddb55d 100644
--- a/indexer/editable_map_object.hpp
+++ b/indexer/editable_map_object.hpp
@@ -54,6 +54,8 @@ struct LocalizedStreet
class EditableMapObject : public MapObject
{
public:
+ static int8_t const kMaximumLevelsEditableByUsers;
+
bool IsNameEditable() const;
bool IsAddressEditable() const;
@@ -93,6 +95,7 @@ public:
void SetElevation(double ele);
void SetWikipedia(string const & wikipedia);
void SetFlats(string const & flats);
+ static bool ValidateBuildingLevels(string const & buildingLevels);
void SetBuildingLevels(string const & buildingLevels);
/// @param[in] cuisine is a vector of osm cuisine ids.
void SetCuisines(vector const & cuisine);
diff --git a/iphone/Maps/Classes/Editor/MWMEditorViewController.mm b/iphone/Maps/Classes/Editor/MWMEditorViewController.mm
index 7bea4ccb95..421d88e40e 100644
--- a/iphone/Maps/Classes/Editor/MWMEditorViewController.mm
+++ b/iphone/Maps/Classes/Editor/MWMEditorViewController.mm
@@ -39,25 +39,15 @@ vector const kSectionCategoryCellTypes{MWMPlacePageCellTyp
vector const kSectionNameCellTypes{MWMPlacePageCellTypeName};
vector const kSectionAddressCellTypes{
- {MWMPlacePageCellTypeStreet, MWMPlacePageCellTypeBuilding}};
-
-vector const kSectionDetailsCellTypes{
- {MWMPlacePageCellTypeOpenHours, MWMPlacePageCellTypePhoneNumber, MWMPlacePageCellTypeWebsite,
- MWMPlacePageCellTypeEmail, MWMPlacePageCellTypeCuisine, MWMPlacePageCellTypeWiFi}};
-
-using CellTypesSectionMap = pair, MWMEditorSection>;
-
-vector const kCellTypesSectionMap{
- {kSectionCategoryCellTypes, MWMEditorSectionCategory},
- {kSectionNameCellTypes, MWMEditorSectionName},
- {kSectionAddressCellTypes, MWMEditorSectionAddress},
- {kSectionDetailsCellTypes, MWMEditorSectionDetails}};
+ MWMPlacePageCellTypeStreet, MWMPlacePageCellTypeBuilding, MWMPlacePageCellTypeZipCode};
MWMPlacePageCellTypeValueMap const kCellType2ReuseIdentifier{
{MWMPlacePageCellTypeCategory, "MWMEditorCategoryCell"},
{MWMPlacePageCellTypeName, "MWMEditorNameTableViewCell"},
{MWMPlacePageCellTypeStreet, "MWMEditorSelectTableViewCell"},
{MWMPlacePageCellTypeBuilding, "MWMEditorTextTableViewCell"},
+ {MWMPlacePageCellTypeZipCode, "MWMEditorTextTableViewCell"},
+ {MWMPlacePageCellTypeBuildingLevels, "MWMEditorTextTableViewCell"},
{MWMPlacePageCellTypeOpenHours, "MWMPlacePageOpeningHoursCell"},
{MWMPlacePageCellTypePhoneNumber, "MWMEditorTextTableViewCell"},
{MWMPlacePageCellTypeWebsite, "MWMEditorTextTableViewCell"},
@@ -72,6 +62,57 @@ NSString * reuseIdentifier(MWMPlacePageCellType cellType)
ASSERT(haveCell, ());
return haveCell ? @(it->second.c_str()) : @"";
}
+
+vector cellsForProperties(vector const & props)
+{
+ using namespace osm;
+ vector res;
+ for (auto const p : props)
+ {
+ switch (p)
+ {
+ case Props::OpeningHours:
+ res.push_back(MWMPlacePageCellTypeOpenHours);
+ break;
+ case Props::Phone:
+ res.push_back(MWMPlacePageCellTypePhoneNumber);
+ break;
+ case Props::Website:
+ res.push_back(MWMPlacePageCellTypeWebsite);
+ break;
+ case Props::Email:
+ res.push_back(MWMPlacePageCellTypeEmail);
+ break;
+ case Props::Cuisine:
+ res.push_back(MWMPlacePageCellTypeCuisine);
+ break;
+ case Props::Internet:
+ res.push_back(MWMPlacePageCellTypeWiFi);
+ break;
+ case Props::Wikipedia:
+ case Props::Fax:
+ case Props::Stars:
+ case Props::Operator:
+ case Props::Elevation:
+ case Props::Flats:
+ case Props::BuildingLevels:
+ break;
+ }
+ }
+ return res;
+}
+
+void registerCellsForTableView(vector const & cells, UITableView * tv)
+{
+ for (auto const c : cells)
+ {
+ NSString * identifier = reuseIdentifier(c);
+ if (UINib * nib = [UINib nibWithNibName:identifier bundle:nil])
+ [tv registerNib:nib forCellReuseIdentifier:identifier];
+ else
+ ASSERT(false, ("Incorrect cell"));
+ }
+}
} // namespace
@interface MWMEditorViewController() (cell);
+ [tCell configWithDelegate:self
+ icon:nil
+ text:@(m_mapObject.GetPostcode().c_str())
+ placeholder:L(@"editor_zip_code")
+ errorMessage:L(@"error_enter_correct_zip_code")
+ isValid:isValid
+ keyboardType:UIKeyboardTypeDefault];
+ break;
+ }
+ case MWMPlacePageCellTypeBuildingLevels:
+ {
+ NSString * placeholder = [NSString stringWithFormat:L(@"editor_storey_number"),
+ osm::EditableMapObject::kMaximumLevelsEditableByUsers];
+ NSString * errorMessage = [NSString stringWithFormat:L(@"error_enter_correct_storey_number"),
+ osm::EditableMapObject::kMaximumLevelsEditableByUsers];
+ MWMEditorTextTableViewCell * tCell = static_cast(cell);
+ [tCell configWithDelegate:self
+ icon:nil
+ text:@(m_mapObject.GetBuildingLevels().c_str())
+ placeholder:placeholder
+ errorMessage:errorMessage
+ isValid:isValid
+ keyboardType:UIKeyboardTypeNumberPad];
+ break;
+ }
case MWMPlacePageCellTypeCuisine:
{
MWMEditorSelectTableViewCell * tCell = (MWMEditorSelectTableViewCell *)cell;
@@ -385,7 +433,9 @@ NSString * reuseIdentifier(MWMPlacePageCellType cellType)
- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath
{
NSString * reuseIdentifier = [self cellIdentifierForIndexPath:indexPath];
- return [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
+ UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
+ [self fillCell:cell atIndexPath:indexPath];
+ return cell;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView * _Nonnull)tableView
@@ -395,8 +445,7 @@ NSString * reuseIdentifier(MWMPlacePageCellType cellType)
- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section
{
- MWMEditorSection const sec = m_sections[section];
- return m_cells[sec].size();
+ return m_cells[m_sections[section]].size();
}
#pragma mark - UITableViewDelegate
@@ -404,6 +453,7 @@ NSString * reuseIdentifier(MWMPlacePageCellType cellType)
- (CGFloat)tableView:(UITableView * _Nonnull)tableView heightForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath
{
NSString * reuseIdentifier = [self cellIdentifierForIndexPath:indexPath];
+
UITableViewCell * cell = [self offscreenCellForIdentifier:reuseIdentifier];
// TODO(Vlad, IGrechuhin): It's bad idea to fill cells here.
// heightForRowAtIndexPath is called way too often for the table.
@@ -428,11 +478,6 @@ NSString * reuseIdentifier(MWMPlacePageCellType cellType)
}
}
-- (void)tableView:(UITableView * _Nonnull)tableView willDisplayCell:(UITableViewCell * _Nonnull)cell forRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath
-{
- [self fillCell:cell atIndexPath:indexPath];
-}
-
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
switch (m_sections[section])
@@ -525,6 +570,15 @@ NSString * reuseIdentifier(MWMPlacePageCellType cellType)
if (!osm::EditableMapObject::ValidateHouseNumber(val))
[self markCellAsInvalid:indexPath];
break;
+ case MWMPlacePageCellTypeZipCode:
+ m_mapObject.SetPostcode(val);
+ // TODO: Validate postcode.
+ break;
+ case MWMPlacePageCellTypeBuildingLevels:
+ m_mapObject.SetBuildingLevels(val);
+ if (!osm::EditableMapObject::ValidateBuildingLevels(val))
+ [self markCellAsInvalid:indexPath];
+ break;
default: NSAssert(false, @"Invalid field for changeText");
}
}
diff --git a/iphone/Maps/Classes/Editor/MWMObjectsCategorySelectorController.mm b/iphone/Maps/Classes/Editor/MWMObjectsCategorySelectorController.mm
index 274cc24b96..d3d09cbb5e 100644
--- a/iphone/Maps/Classes/Editor/MWMObjectsCategorySelectorController.mm
+++ b/iphone/Maps/Classes/Editor/MWMObjectsCategorySelectorController.mm
@@ -105,7 +105,7 @@ namespace
return c.m_name == category;
});
NSAssert(it != all.end(), @"Incorrect category!");
- self.selectedIndexPath = [NSIndexPath indexPathForRow:(it - all.begin())
+ self.selectedIndexPath = [NSIndexPath indexPathForRow:(distance(all.begin(), it))
inSection:m_categories.m_lastUsed.empty() ? 0 : 1];
}
diff --git a/iphone/Maps/Classes/Editor/Street/MWMStreetEditorViewController.mm b/iphone/Maps/Classes/Editor/Street/MWMStreetEditorViewController.mm
index 1cff3d1565..6db6b2e185 100644
--- a/iphone/Maps/Classes/Editor/Street/MWMStreetEditorViewController.mm
+++ b/iphone/Maps/Classes/Editor/Street/MWMStreetEditorViewController.mm
@@ -59,7 +59,7 @@ namespace
}
else
{
- self.selectedStreet = it - m_streets.begin();
+ self.selectedStreet = distance(m_streets.begin(), it);
}
}
else
diff --git a/iphone/Maps/Classes/MWMPlacePageEntity.h b/iphone/Maps/Classes/MWMPlacePageEntity.h
index 0cbf2a1205..d57a70c4df 100644
--- a/iphone/Maps/Classes/MWMPlacePageEntity.h
+++ b/iphone/Maps/Classes/MWMPlacePageEntity.h
@@ -20,6 +20,8 @@ typedef NS_ENUM(NSUInteger, MWMPlacePageCellType)
MWMPlacePageCellTypeName,
MWMPlacePageCellTypeStreet,
MWMPlacePageCellTypeBuilding,
+ MWMPlacePageCellTypeZipCode,
+ MWMPlacePageCellTypeBuildingLevels,
MWMPlacePageCellTypeCuisine,
MWMPlacePageCellTypeCount
};
diff --git a/iphone/Maps/ar.lproj/Localizable.strings b/iphone/Maps/ar.lproj/Localizable.strings
index e01b7a5308..cd2d270fc3 100644
--- a/iphone/Maps/ar.lproj/Localizable.strings
+++ b/iphone/Maps/ar.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "قد يكون هذا مكلفا جدا لبعض الخطط أو عند التجوال.";
"error_enter_correct_house_number" = "أدخل رقم منزل صحيح";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/cs.lproj/Localizable.strings b/iphone/Maps/cs.lproj/Localizable.strings
index 3b4c0276a1..d8da077270 100644
--- a/iphone/Maps/cs.lproj/Localizable.strings
+++ b/iphone/Maps/cs.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Toto by mohli být s některými tarify nebo roamingem výrazně dražší.";
"error_enter_correct_house_number" = "Zadejte správné číslo domu";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/da.lproj/Localizable.strings b/iphone/Maps/da.lproj/Localizable.strings
index 6b2e01b0f5..013787d9bd 100644
--- a/iphone/Maps/da.lproj/Localizable.strings
+++ b/iphone/Maps/da.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "This could be considerably expensive with some plans or if roaming.";
"error_enter_correct_house_number" = "Skriv det rigtige husnummer";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/de.lproj/Localizable.strings b/iphone/Maps/de.lproj/Localizable.strings
index da2035ccac..95cbf23036 100644
--- a/iphone/Maps/de.lproj/Localizable.strings
+++ b/iphone/Maps/de.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Das könnte mit einigen Tarifen oder beim Roaming sehr teuer werden.";
"error_enter_correct_house_number" = "Richtige Hausnummer eingeben";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/en.lproj/Localizable.strings b/iphone/Maps/en.lproj/Localizable.strings
index c224c79af6..200ae129aa 100644
--- a/iphone/Maps/en.lproj/Localizable.strings
+++ b/iphone/Maps/en.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "This could be considerably expensive with some plans or if roaming.";
"error_enter_correct_house_number" = "Enter correct house number";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/es.lproj/Localizable.strings b/iphone/Maps/es.lproj/Localizable.strings
index 3c8aad1f00..6beacad1f8 100644
--- a/iphone/Maps/es.lproj/Localizable.strings
+++ b/iphone/Maps/es.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Podría ser muy caro con ciertos planes o con itinerancia de datos.";
"error_enter_correct_house_number" = "Introducir el número de domicilio correcto";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/fi.lproj/Localizable.strings b/iphone/Maps/fi.lproj/Localizable.strings
index 18c31dea34..12d2a711ba 100644
--- a/iphone/Maps/fi.lproj/Localizable.strings
+++ b/iphone/Maps/fi.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Tämä vaihtoehto saattaa olla huomattavasti kalliimpi tietyillä sopimuksilla tai roaming-yhteydellä.";
"error_enter_correct_house_number" = "Syötä oikea talon numero";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/fr.lproj/Localizable.strings b/iphone/Maps/fr.lproj/Localizable.strings
index 0dd418297a..c1fa640173 100644
--- a/iphone/Maps/fr.lproj/Localizable.strings
+++ b/iphone/Maps/fr.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Cela pourrait être très cher avec certains abonnements ou si vous êtes en déplacement.";
"error_enter_correct_house_number" = "Saisir un numéro de maison correct";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/hu.lproj/Localizable.strings b/iphone/Maps/hu.lproj/Localizable.strings
index f9783e6c12..d32aad53f7 100644
--- a/iphone/Maps/hu.lproj/Localizable.strings
+++ b/iphone/Maps/hu.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Ez jelentősen drága lehet némely előfizetés vagy roaming keretein belül.";
"error_enter_correct_house_number" = "Helyes házszámot adjon meg";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/id.lproj/Localizable.strings b/iphone/Maps/id.lproj/Localizable.strings
index 5bec842236..7768086751 100644
--- a/iphone/Maps/id.lproj/Localizable.strings
+++ b/iphone/Maps/id.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Ini bisa menjadi jauh mahal pada beberapa paket atau jika roaming.";
"error_enter_correct_house_number" = "Masukkan nomor rumah yang benar";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/it.lproj/Localizable.strings b/iphone/Maps/it.lproj/Localizable.strings
index e2eeecacdd..f2fd2134e5 100644
--- a/iphone/Maps/it.lproj/Localizable.strings
+++ b/iphone/Maps/it.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Quest'operazione potrebbe essere piuttosto costosa con alcuni piani o in roaming.";
"error_enter_correct_house_number" = "Inserisci numero civico corretto";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/ja.lproj/Localizable.strings b/iphone/Maps/ja.lproj/Localizable.strings
index c33fff7a30..fd9e1a36a7 100644
--- a/iphone/Maps/ja.lproj/Localizable.strings
+++ b/iphone/Maps/ja.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "プランによって、またはローミングしている場合、非常に高額になる可能性があります。";
"error_enter_correct_house_number" = "正しい番地を入力してください";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/ko.lproj/Localizable.strings b/iphone/Maps/ko.lproj/Localizable.strings
index 1ec8b12365..7c9b608898 100644
--- a/iphone/Maps/ko.lproj/Localizable.strings
+++ b/iphone/Maps/ko.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "이는 일부 플랜이나 로밍할 경우에 비싸다고 간주될 수 있습니다.";
"error_enter_correct_house_number" = "올바른 집 번호 입력";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/nb.lproj/Localizable.strings b/iphone/Maps/nb.lproj/Localizable.strings
index d698609fae..7de2f3aeb6 100644
--- a/iphone/Maps/nb.lproj/Localizable.strings
+++ b/iphone/Maps/nb.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "This could be considerably expensive with some plans or if roaming.";
"error_enter_correct_house_number" = "Skriv riktig husnummer";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/nl.lproj/Localizable.strings b/iphone/Maps/nl.lproj/Localizable.strings
index e9cb068e03..cd93037bb0 100644
--- a/iphone/Maps/nl.lproj/Localizable.strings
+++ b/iphone/Maps/nl.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Met sommige abonnementen of bij roaming kan dit behoorlijk duur zijn.";
"error_enter_correct_house_number" = "Een juist huisnummer invoeren";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/pl.lproj/Localizable.strings b/iphone/Maps/pl.lproj/Localizable.strings
index 9969140d7c..a75547e728 100644
--- a/iphone/Maps/pl.lproj/Localizable.strings
+++ b/iphone/Maps/pl.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Może to być kosztowne przy niektórych planach taryfowych lub w roamingu.";
"error_enter_correct_house_number" = "Wprowadź poprawny numer domu";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/pt.lproj/Localizable.strings b/iphone/Maps/pt.lproj/Localizable.strings
index 2ef3d0375f..d3d004b9c4 100644
--- a/iphone/Maps/pt.lproj/Localizable.strings
+++ b/iphone/Maps/pt.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Isto pode ser significativamente caro, com alguns planos ou se roaming.";
"error_enter_correct_house_number" = "Introduzir um número de casa correto";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/ro.lproj/Localizable.strings b/iphone/Maps/ro.lproj/Localizable.strings
index 5b424da848..f180ecf80f 100644
--- a/iphone/Maps/ro.lproj/Localizable.strings
+++ b/iphone/Maps/ro.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Aceasta poate fi destul de costisitoare în cazul unor abonamente sau dacă sunteți pe roaming.";
"error_enter_correct_house_number" = "Introduceți numărul corect al casei";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/ru.lproj/Localizable.strings b/iphone/Maps/ru.lproj/Localizable.strings
index 5f8718677c..a2fda9bff1 100644
--- a/iphone/Maps/ru.lproj/Localizable.strings
+++ b/iphone/Maps/ru.lproj/Localizable.strings
@@ -1373,3 +1373,11 @@
"download_over_mobile_message" = "На некоторых тарифных планах или в роуминге это может привести к значительным расходам.";
"error_enter_correct_house_number" = "Введите корректный номер дома";
+
+"editor_storey_number" = "Количество этажей (максимум %1$@)";
+
+"error_enter_correct_storey_number" = "Редактируйте здания высотой максимум %1$@ этажей.";
+
+"editor_zip_code" = "Почтовый индекс";
+
+"error_enter_correct_zip_code" = "Введите корректный почтовый индекс";
diff --git a/iphone/Maps/sk.lproj/Localizable.strings b/iphone/Maps/sk.lproj/Localizable.strings
index e26582778a..61ce04ae06 100644
--- a/iphone/Maps/sk.lproj/Localizable.strings
+++ b/iphone/Maps/sk.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "V prípade niektorých plánov alebo použitím roamingu by to mohlo byť značne nákladné.";
"error_enter_correct_house_number" = "Zadajte správne číslo domu";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/sv.lproj/Localizable.strings b/iphone/Maps/sv.lproj/Localizable.strings
index a0130dbd1e..7330074f6a 100644
--- a/iphone/Maps/sv.lproj/Localizable.strings
+++ b/iphone/Maps/sv.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Detta kan vara mycket dyrt med vissa abonnemang och vid roaming.";
"error_enter_correct_house_number" = "Ange korrekt husnummer";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/th.lproj/Localizable.strings b/iphone/Maps/th.lproj/Localizable.strings
index a863af09f7..bb04399035 100644
--- a/iphone/Maps/th.lproj/Localizable.strings
+++ b/iphone/Maps/th.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "มันอาจมีราคาสูงมากหากใช้แผนโทรศัพท์บางประเภทหรือหากทำการโรมมิ่ง";
"error_enter_correct_house_number" = "กรอกบ้านเลขที่ให้ถูกต้อง";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/tr.lproj/Localizable.strings b/iphone/Maps/tr.lproj/Localizable.strings
index baa332543d..c2644ab4e2 100644
--- a/iphone/Maps/tr.lproj/Localizable.strings
+++ b/iphone/Maps/tr.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Bu işlem bazı planlarla ya da dolaşım ise büyük ölçüde pahalı olabilir.";
"error_enter_correct_house_number" = "Doğru ev numarası girin";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/uk.lproj/Localizable.strings b/iphone/Maps/uk.lproj/Localizable.strings
index b81b2b415a..d45ce6eca2 100644
--- a/iphone/Maps/uk.lproj/Localizable.strings
+++ b/iphone/Maps/uk.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Це може бути задорого за деякими планами або за умовами роумінгу.";
"error_enter_correct_house_number" = "Введіть правильний номер будинку";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/vi.lproj/Localizable.strings b/iphone/Maps/vi.lproj/Localizable.strings
index 4a368f2cff..9df26cc9bd 100644
--- a/iphone/Maps/vi.lproj/Localizable.strings
+++ b/iphone/Maps/vi.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "Như vậy sẽ rất đắt tiền với một số gói dữ liệu hoặc khi chuyển vùng.";
"error_enter_correct_house_number" = "Nhập số nhà chính xác";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/zh-Hans.lproj/Localizable.strings b/iphone/Maps/zh-Hans.lproj/Localizable.strings
index 081952df11..ff4cdba28c 100644
--- a/iphone/Maps/zh-Hans.lproj/Localizable.strings
+++ b/iphone/Maps/zh-Hans.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "用一些方案或漫游的话这可能相当昂贵。";
"error_enter_correct_house_number" = "输入正确的房屋号";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/iphone/Maps/zh-Hant.lproj/Localizable.strings b/iphone/Maps/zh-Hant.lproj/Localizable.strings
index ef8f71036e..38ff3e40dc 100644
--- a/iphone/Maps/zh-Hant.lproj/Localizable.strings
+++ b/iphone/Maps/zh-Hant.lproj/Localizable.strings
@@ -1373,3 +1373,9 @@
"download_over_mobile_message" = "用某些方案或漫遊的話這可能相當昂貴。";
"error_enter_correct_house_number" = "輸入正確的門牌號碼";
+
+
+
+"editor_zip_code" = "ZIP Code";
+
+"error_enter_correct_zip_code" = "Enter correct ZIP Code";
diff --git a/strings.txt b/strings.txt
index f659238e8b..e575f481be 100644
--- a/strings.txt
+++ b/strings.txt
@@ -16236,3 +16236,21 @@
pl = Wprowadź poprawny numer domu
nl = Een juist huisnummer invoeren
pt = Introduzir um número de casa correto
+
+ [editor_storey_number]
+ tags = ios, android
+ ru = Количество этажей (максимум %1$@)
+
+ [error_enter_correct_storey_number]
+ tags = ios, android
+ ru = Редактируйте здания высотой максимум %1$@ этажей.
+
+ [editor_zip_code]
+ tags = ios, android
+ en = ZIP Code
+ ru = Почтовый индекс
+
+ [error_enter_correct_zip_code]
+ tags = ios, android
+ en = Enter correct ZIP Code
+ ru = Введите корректный почтовый индекс