diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.mm index 0ad1754352..9f18788c6e 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.mm @@ -9,6 +9,7 @@ #include "map/routing_manager.hpp" +#include "platform/localization.hpp" #include "platform/measurement_utils.hpp" @interface MWMNavigationDashboardEntity () @@ -48,8 +49,7 @@ - (NSString *)speedUnits { - auto const units = coreUnits([MWMSettings measurementUnits]); - return [self localizedUnitSpeed:@(measurement_utils::FormatSpeedUnits(units).c_str())]; + return @(platform::GetLocalizedSpeedUnits().c_str()); } - (NSString *)eta { return [NSDateComponentsFormatter etaStringFrom:self.timeToTarget]; } @@ -70,13 +70,4 @@ return [[NSAttributedString alloc] initWithString:@" • " attributes:attributes]; } -- (NSString *)localizedUnitSpeed:(NSString *)speedUnits { - if ([speedUnits isEqualToString:@"mph"]) { - return L(@"miles_per_hour"); - } else if ([speedUnits isEqualToString:@"km/h"]) { - return L(@"kilometers_per_hour"); - } - return speedUnits; -} - @end diff --git a/iphone/Maps/Core/Location/MWMLocationHelpers.h b/iphone/Maps/Core/Location/MWMLocationHelpers.h index 4517c8e73e..ddeed6557e 100644 --- a/iphone/Maps/Core/Location/MWMLocationHelpers.h +++ b/iphone/Maps/Core/Location/MWMLocationHelpers.h @@ -1,5 +1,6 @@ #import "MWMMyPositionMode.h" +#include "platform/localization.hpp" #include "platform/location.hpp" #include "platform/measurement_utils.hpp" #include "platform/settings.hpp" @@ -12,22 +13,9 @@ namespace location_helpers static inline NSString * formattedDistance(double const & meters) { if (meters < 0.) return nil; - - auto units = measurement_utils::Units::Metric; - settings::TryGet(settings::kMeasurementUnits, units); - switch (units) { - case measurement_utils::Units::Imperial: - return @(measurement_utils::FormatDistanceWithLocalization(meters, - [L(@"mile") UTF8String], - [L(@"foot") UTF8String]).c_str()); - break; - case measurement_utils::Units::Metric: - return @(measurement_utils::FormatDistanceWithLocalization(meters, - [L(@"kilometer") UTF8String], - [L(@"meter") UTF8String]).c_str()); - break; - } + auto const localizedUnits = platform::GetLocalizedDistanceUnits(); + return @(measurement_utils::FormatDistanceWithLocalization(meters, localizedUnits.m_high, localizedUnits.m_low).c_str()); } static inline BOOL isMyPositionPendingOrNoPosition() diff --git a/iphone/Maps/Core/Routing/MWMRouter.mm b/iphone/Maps/Core/Routing/MWMRouter.mm index 944b89068d..59fd71161e 100644 --- a/iphone/Maps/Core/Routing/MWMRouter.mm +++ b/iphone/Maps/Core/Routing/MWMRouter.mm @@ -17,6 +17,7 @@ #include #include "platform/local_country_file_utils.hpp" +#include "platform/localization.hpp" using namespace routing; @@ -591,8 +592,10 @@ void logPointEvent(MWMRoutePoint * point, NSString * eventType) imageData = [NSData dataWithBytes:imageRGBAData.data() length:imageRGBAData.size()]; router.altitudeImagesData[sizeValue] = imageData; + auto const localizedUnits = platform::GetLocalizedAltitudeUnits(); auto const height = maxRouteAltitude - minRouteAltitude; - router.altitudeElevation = @(measurement_utils::FormatDistance(height).c_str()); + router.altitudeElevation = + @(measurement_utils::FormatAltitudeWithLocalization(height, localizedUnits.m_low).c_str()); } dispatch_async(dispatch_get_main_queue(), ^{ diff --git a/iphone/Maps/UI/Discovery/View Models/MWMDiscoveryControllerViewModel.mm b/iphone/Maps/UI/Discovery/View Models/MWMDiscoveryControllerViewModel.mm index f3bd414f8d..a045a25a52 100644 --- a/iphone/Maps/UI/Discovery/View Models/MWMDiscoveryControllerViewModel.mm +++ b/iphone/Maps/UI/Discovery/View Models/MWMDiscoveryControllerViewModel.mm @@ -162,10 +162,12 @@ using namespace discovery; - (NSString *)distanceFrom:(m2::PointD const &)startPoint to:(m2::PointD const &)endPoint { + auto const localizedUnits = platform::GetLocalizedDistanceUnits(); auto const f = mercator::ToLatLon(startPoint); auto const t = mercator::ToLatLon(endPoint); auto const distance = ms::DistanceOnEarth(f.m_lat, f.m_lon, t.m_lat, t.m_lon); - return @(measurement_utils::FormatDistance(distance).c_str()); + return @(measurement_utils::FormatDistanceWithLocalization(distance, localizedUnits.m_high, + localizedUnits.m_low).c_str()); } - (NSString *)ratingValueForRating:(float)rating { diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.mm b/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.mm index 314ff0016f..9a9ffbdfb7 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.mm +++ b/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.mm @@ -100,10 +100,12 @@ bool PopularityHasHigherPriority(bool hasPosition, double distanceInMeters) { if (result.HasPoint()) { + auto const localizedUnits = platform::GetLocalizedDistanceUnits(); distanceInMeters = mercator::DistanceOnEarth(lastLocation.mercator, result.GetFeatureCenter()); - std::string distanceStr = measurement_utils::FormatDistance(distanceInMeters); - + std::string distanceStr = measurement_utils::FormatDistanceWithLocalization(distanceInMeters, + localizedUnits.m_high, + localizedUnits.m_low); self.distanceLabel.text = @(distanceStr.c_str()); } } diff --git a/xcode/platform/platform.xcodeproj/project.pbxproj b/xcode/platform/platform.xcodeproj/project.pbxproj index a78b61d125..8e549219a2 100644 --- a/xcode/platform/platform.xcodeproj/project.pbxproj +++ b/xcode/platform/platform.xcodeproj/project.pbxproj @@ -27,6 +27,7 @@ 3D921BB62514CD56002EDB00 /* utils.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3D921BB42514CD56002EDB00 /* utils.hpp */; }; 3D921BB72514CD56002EDB00 /* utils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3D921BB52514CD56002EDB00 /* utils.mm */; }; 3D97F64B1D9C05E800380945 /* http_client.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3D97F64A1D9C05E800380945 /* http_client.cpp */; }; + 3DA587422550116C002E024C /* localization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DA587412550116C002E024C /* localization.cpp */; }; 3DE28A7524BE01A30009465C /* locale.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3DE28A7424BE01A30009465C /* locale.mm */; }; 3DE8B98F1DEC3115000E6083 /* network_policy.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3DE8B98E1DEC3115000E6083 /* network_policy.hpp */; }; 3DEE1AE721F7091100054A91 /* battery_tracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DEE1AE521F7091100054A91 /* battery_tracker.cpp */; }; @@ -161,6 +162,7 @@ 3D921BB42514CD56002EDB00 /* utils.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = utils.hpp; sourceTree = ""; }; 3D921BB52514CD56002EDB00 /* utils.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = utils.mm; sourceTree = ""; }; 3D97F64A1D9C05E800380945 /* http_client.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = http_client.cpp; sourceTree = ""; }; + 3DA587412550116C002E024C /* localization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = localization.cpp; sourceTree = ""; }; 3DE28A7424BE01A30009465C /* locale.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = locale.mm; sourceTree = ""; }; 3DE8B98E1DEC3115000E6083 /* network_policy.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = network_policy.hpp; sourceTree = ""; }; 3DEE1AE521F7091100054A91 /* battery_tracker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = battery_tracker.cpp; sourceTree = ""; }; @@ -397,6 +399,7 @@ 6753437A1A3F5CF500A0A8C3 /* platform */ = { isa = PBXGroup; children = ( + 3DA587412550116C002E024C /* localization.cpp */, 3D921BB42514CD56002EDB00 /* utils.hpp */, 3D921BB52514CD56002EDB00 /* utils.mm */, 3DE28A7424BE01A30009465C /* locale.mm */, @@ -727,6 +730,7 @@ 3DE28A7524BE01A30009465C /* locale.mm in Sources */, F6DF73581EC9EAE700D8BA0B /* string_storage_base.cpp in Sources */, 3D318A062021DD8B007B2607 /* http_uploader_apple.mm in Sources */, + 3DA587422550116C002E024C /* localization.cpp in Sources */, 3D78156E1F3A14090068B6AC /* gui_thread_apple.mm in Sources */, 67247FFD1C60BD6500EDE56A /* writable_dir_changer.cpp in Sources */, 45D7ADBA210F48E500160DE3 /* http_user_agent.cpp in Sources */,