mirror of
https://codeberg.org/comaps/comaps
synced 2026-01-07 21:13:55 +00:00
Merge commit '05cc660641' into traffic
# Conflicts: # CMakeLists.txt # android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java # android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.hpp # android/sdk/src/main/cpp/app/organicmaps/sdk/OrganicMaps.cpp # android/sdk/src/main/cpp/app/organicmaps/sdk/util/Config.cpp # libs/indexer/data_source.hpp # libs/indexer/feature.hpp # libs/indexer/ftypes_matcher.hpp # libs/map/framework.cpp # libs/map/traffic_manager.cpp # libs/routing/absent_regions_finder.cpp # libs/routing/edge_estimator.hpp # libs/routing/index_router.cpp # libs/routing/index_router.hpp # libs/routing/routing_session.hpp # libs/routing_common/num_mwm_id.hpp # libs/traffic/traffic_info.cpp # qt/mainwindow.hpp # qt/preferences_dialog.cpp # tools/openlr/helpers.hpp # tools/openlr/openlr_decoder.cpp # tools/openlr/openlr_decoder.hpp # tools/openlr/openlr_stat/openlr_stat.cpp # tools/openlr/router.hpp # tools/openlr/score_candidate_paths_getter.cpp # tools/openlr/score_candidate_paths_getter.hpp # xcode/CoMaps.xcworkspace/contents.xcworkspacedata
This commit is contained in:
@@ -94,7 +94,7 @@ final class ChartPointInfoView: UIView {
|
||||
func update(x: CGFloat, label: String, points: [ChartLineInfo]) {
|
||||
distanceLabel.text = label
|
||||
altitudeLabel.text = altitudeText(points[0])
|
||||
layoutIfNeeded()
|
||||
setNeedsLayout()
|
||||
}
|
||||
|
||||
private func altitudeText(_ point: ChartLineInfo) -> String {
|
||||
|
||||
@@ -16,6 +16,7 @@ public class ChartView: UIView {
|
||||
var showPreview: Bool = false // Set true to show the preview
|
||||
|
||||
private var tapGR: UITapGestureRecognizer!
|
||||
private var selectedPointDistance: Double = 0
|
||||
private var panStartPoint = 0
|
||||
private var panGR: UIPanGestureRecognizer!
|
||||
private var pinchStartLower = 0
|
||||
@@ -142,6 +143,8 @@ public class ChartView: UIView {
|
||||
}
|
||||
|
||||
private func setup() {
|
||||
isUserInteractionEnabled = false
|
||||
|
||||
xAxisView.font = font
|
||||
xAxisView.textColor = textColor
|
||||
yAxisView.font = font
|
||||
@@ -168,6 +171,8 @@ public class ChartView: UIView {
|
||||
}
|
||||
|
||||
public func setSelectedPoint(_ x: Double) {
|
||||
guard selectedPointDistance != x else { return }
|
||||
selectedPointDistance = x
|
||||
let routeLength = chartData.xAxisValueAt(CGFloat(chartData.pointsCount - 1))
|
||||
let upper = chartData.xAxisValueAt(CGFloat(chartPreviewView.maxX))
|
||||
var lower = chartData.xAxisValueAt(CGFloat(chartPreviewView.minX))
|
||||
@@ -244,10 +249,10 @@ public class ChartView: UIView {
|
||||
let lower = max(pinchStartLower + dx, 0)
|
||||
let upper = min(pinchStartUpper - dx, chartData.labels.count - 1)
|
||||
|
||||
if upper - lower < chartData.labels.count / 10 {
|
||||
guard upper - lower > max(1, chartData.labels.count / 10) else {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
chartPreviewView.setX(min: lower, max: upper)
|
||||
xAxisView.setBounds(lower: lower, upper: upper)
|
||||
updateCharts(animationStyle: .none)
|
||||
|
||||
@@ -40,7 +40,7 @@ NS_SWIFT_NAME(FrameworkHelper)
|
||||
+ (MWMMarkGroupID)invalidCategoryId;
|
||||
+ (void)zoomMap:(MWMZoomMode)mode;
|
||||
+ (void)moveMap:(UIOffset)offset;
|
||||
+ (void)scrollMap:(double)distanceX :(double) distanceY;
|
||||
+ (void)scrollMapToDistanceX:(double)x andY:(double)y;
|
||||
+ (void)deactivateMapSelection;
|
||||
+ (void)switchMyPositionMode;
|
||||
+ (void)stopLocationFollow;
|
||||
|
||||
@@ -114,8 +114,9 @@
|
||||
GetFramework().Move(offset.horizontal, offset.vertical, true);
|
||||
}
|
||||
|
||||
+ (void)scrollMap:(double) distanceX :(double) distanceY {
|
||||
GetFramework().Scroll(distanceX, distanceY);
|
||||
+ (void)scrollMapToDistanceX:(double)x andY:(double)y
|
||||
{
|
||||
GetFramework().Scroll(x, y);
|
||||
}
|
||||
|
||||
+ (void)deactivateMapSelection {
|
||||
|
||||
@@ -8,6 +8,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@interface PlacePageInfoData : NSObject
|
||||
|
||||
@property(nonatomic, readonly, nullable) NSString *openingHoursString;
|
||||
@property(nonatomic, readonly, nullable) NSDate *checkDate;
|
||||
@property(nonatomic, readonly, nullable) NSDate *checkDateOpeningHours;
|
||||
@property(nonatomic, readonly, nullable) OpeningHours *openingHours;
|
||||
@property(nonatomic, readonly) NSArray<PlacePagePhone *> *phones;
|
||||
@property(nonatomic, readonly, nullable) NSString *website;
|
||||
@@ -38,6 +40,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property(nonatomic, readonly, nullable) NSString *outdoorSeating;
|
||||
@property(nonatomic, readonly, nullable) NSString *network;
|
||||
|
||||
- (NSDate * _Nullable)getMostRecentCheckDate;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -20,8 +20,41 @@ NSString * GetLocalizedMetadataValueString(MapObject::MetadataID metaID, std::st
|
||||
return ToNSString(platform::GetLocalizedTypeName(feature::ToString(metaID) + "." + value));
|
||||
}
|
||||
|
||||
/// Parse date string in YYYY-MM-DD format to NSDate
|
||||
NSDate * _Nullable ParseDateString(NSString * _Nullable dateString) {
|
||||
if (!dateString || dateString.length == 0) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
static NSDateFormatter *dateFormatter = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
dateFormatter = [[NSDateFormatter alloc] init];
|
||||
dateFormatter.dateFormat = @"yyyy-MM-dd";
|
||||
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
|
||||
dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
|
||||
});
|
||||
|
||||
return [dateFormatter dateFromString:dateString];
|
||||
}
|
||||
|
||||
@implementation PlacePageInfoData
|
||||
|
||||
- (NSDate * _Nullable)getMostRecentCheckDate {
|
||||
// CheckDate can utilize checkDateOpeningHours if that is available
|
||||
// As surveying opening hours would confirm presence
|
||||
if (_checkDate && _checkDateOpeningHours) {
|
||||
// Both available - return the more recent date
|
||||
return [_checkDate compare:_checkDateOpeningHours] == NSOrderedDescending ? _checkDate : _checkDateOpeningHours;
|
||||
} else if (_checkDate) {
|
||||
return _checkDate;
|
||||
} else if (_checkDateOpeningHours) {
|
||||
return _checkDateOpeningHours;
|
||||
} else {
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation PlacePageInfoData (Core)
|
||||
@@ -45,6 +78,12 @@ NSString * GetLocalizedMetadataValueString(MapObject::MetadataID metaID, std::st
|
||||
_openingHours = [[OpeningHours alloc] initWithRawString:_openingHoursString
|
||||
localization:localization];
|
||||
break;
|
||||
case MetadataID::FMD_CHECK_DATE:
|
||||
_checkDate = ParseDateString(ToNSString(value));
|
||||
break;
|
||||
case MetadataID::FMD_CHECK_DATE_OPEN_HOURS:
|
||||
_checkDateOpeningHours = ParseDateString(ToNSString(value));
|
||||
break;
|
||||
case MetadataID::FMD_PHONE_NUMBER:
|
||||
{
|
||||
NSArray<NSString *> *phones = [ToNSString(value) componentsSeparatedByString:@";"];
|
||||
@@ -100,7 +139,7 @@ NSString * GetLocalizedMetadataValueString(MapObject::MetadataID metaID, std::st
|
||||
}
|
||||
});
|
||||
|
||||
_atm = rawData.HasAtm() ? NSLocalizedString(@"type.amenity.atm", nil) : nil;
|
||||
_atm = rawData.HasAtm() ? NSLocalizedStringFromTable(@"type.amenity.atm", @"LocalizableTypes", nil) : nil;
|
||||
|
||||
_address = rawData.GetSecondarySubtitle().empty() ? nil : @(rawData.GetSecondarySubtitle().c_str());
|
||||
_coordFormats = @[@(rawData.GetFormattedCoordinate(place_page::CoordinatesFormat::LatLonDMS).c_str()),
|
||||
|
||||
@@ -115,8 +115,9 @@ static PlacePageRoadType convertRoadType(RoadWarningMarkType roadType) {
|
||||
self.onTrackRecordingProgressUpdate();
|
||||
}
|
||||
|
||||
- (void)handleActiveTrackSelectionPointChanged {
|
||||
if (!self || !rawData().IsTrack())
|
||||
- (void)handleActiveTrackSelectionPointChanged
|
||||
{
|
||||
if (!self || !PlacePageData.hasData || !rawData().IsTrack())
|
||||
return;
|
||||
auto const & trackInfo = GetFramework().GetBookmarkManager().GetTrackSelectionInfo(rawData().GetTrackId());
|
||||
auto const latlon = mercator::ToLatLon(trackInfo.m_trackPoint);
|
||||
|
||||
@@ -7,9 +7,7 @@ final class RangeFirstCell: Cell {
|
||||
contentView.addSubview(rangeBgView)
|
||||
rangeBgView.alignToSuperview(UIEdgeInsets(top: 4, left: 4, bottom: -4, right: 0))
|
||||
rangeBgView.layer.cornerRadius = 8
|
||||
if #available(iOS 13.0, *) {
|
||||
rangeBgView.layer.cornerCurve = .continuous
|
||||
}
|
||||
rangeBgView.layer.cornerCurve = .continuous
|
||||
rangeBgView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner]
|
||||
super.addSubviews()
|
||||
}
|
||||
|
||||
@@ -7,9 +7,7 @@ final class RangeLastCell: Cell {
|
||||
contentView.addSubview(rangeBgView)
|
||||
rangeBgView.alignToSuperview(UIEdgeInsets(top: 4, left: 0, bottom: -4, right: -4))
|
||||
rangeBgView.layer.cornerRadius = 8
|
||||
if #available(iOS 13.0, *) {
|
||||
rangeBgView.layer.cornerCurve = .continuous
|
||||
}
|
||||
rangeBgView.layer.cornerCurve = .continuous
|
||||
rangeBgView.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMaxXMaxYCorner]
|
||||
super.addSubviews()
|
||||
}
|
||||
|
||||
@@ -7,9 +7,7 @@ final class RangeSingleCell: Cell {
|
||||
contentView.addSubview(rangeBgView)
|
||||
rangeBgView.alignToSuperview(UIEdgeInsets(top: 4, left: 4, bottom: -4, right: -4))
|
||||
rangeBgView.layer.cornerRadius = 8
|
||||
if #available(iOS 13.0, *) {
|
||||
rangeBgView.layer.cornerCurve = .continuous
|
||||
}
|
||||
rangeBgView.layer.cornerCurve = .continuous
|
||||
super.addSubviews()
|
||||
}
|
||||
|
||||
|
||||
@@ -7,9 +7,7 @@ class SelectedSingleCell: Cell {
|
||||
contentView.addSubview(selectedBgView)
|
||||
selectedBgView.alignToSuperview(UIEdgeInsets(top: 4, left: 4, bottom: -4, right: -4))
|
||||
selectedBgView.layer.cornerRadius = 8
|
||||
if #available(iOS 13.0, *) {
|
||||
selectedBgView.layer.cornerCurve = .continuous
|
||||
}
|
||||
selectedBgView.layer.cornerCurve = .continuous
|
||||
super.addSubviews()
|
||||
}
|
||||
|
||||
|
||||
@@ -5,9 +5,7 @@ extension CALayer {
|
||||
if let maskedCorners {
|
||||
self.maskedCorners = maskedCorners
|
||||
}
|
||||
if #available(iOS 13.0, *) {
|
||||
cornerCurve = .continuous
|
||||
}
|
||||
cornerCurve = .continuous
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -181,17 +181,15 @@
|
||||
|
||||
- (BOOL)openUrl:(NSString *)urlString externally:(BOOL)externally skipEncoding:(BOOL)skipEncoding
|
||||
{
|
||||
// TODO: This is a temporary workaround to open cyrillic/non-ASCII URLs.
|
||||
// URLs in OSM are stored in UTF-8. NSURL constructor documentation says:
|
||||
// > Must be a URL that conforms to RFC 2396. This method parses URLString according to RFCs 1738 and 1808.
|
||||
// The right way to encode the URL string should be:
|
||||
// 1. Split the (non-ASCII) string into components (host, path, query, fragment, etc.)
|
||||
// 2. Encode each component separately (they have different allowed characters).
|
||||
// 3. Merge them back into the string and create NSURL.
|
||||
NSString * encoded;
|
||||
if (skipEncoding) {
|
||||
encoded = urlString;
|
||||
} else {
|
||||
NSString * encoded = urlString;
|
||||
if (!skipEncoding && ![urlString canBeConvertedToEncoding:NSASCIIStringEncoding]) {
|
||||
// TODO: This is a temporary workaround to open cyrillic/non-ASCII URLs.
|
||||
// URLs in OSM are stored in UTF-8. NSURL constructor documentation says:
|
||||
// > Must be a URL that conforms to RFC 2396. This method parses URLString according to RFCs 1738 and 1808.
|
||||
// The right way to encode the URL string should be:
|
||||
// 1. Split the (non-ASCII) string into components (host, path, query, fragment, etc.)
|
||||
// 2. Encode each component separately (they have different allowed characters).
|
||||
// 3. Merge them back into the string and create NSURL.
|
||||
NSMutableCharacterSet * charset = [[NSMutableCharacterSet alloc] init];
|
||||
[charset formUnionWithCharacterSet:NSCharacterSet.URLHostAllowedCharacterSet];
|
||||
[charset formUnionWithCharacterSet:NSCharacterSet.URLPathAllowedCharacterSet];
|
||||
@@ -200,7 +198,7 @@
|
||||
[charset addCharactersInString:@"#;/?:@&=+$,"];
|
||||
encoded = [urlString stringByAddingPercentEncodingWithAllowedCharacters:charset];
|
||||
}
|
||||
|
||||
|
||||
// Matrix has an url with two hashes which doesn't work for NSURL and NSURLComponent.
|
||||
NSRange const matrixUrl = [encoded rangeOfString:@"#/#"];
|
||||
if (matrixUrl.location != NSNotFound)
|
||||
|
||||
@@ -54,9 +54,7 @@ final class CarPlayService: NSObject {
|
||||
applyBaseRootTemplate()
|
||||
router.restoreTripPreviewOnCarplay(beforeRootTemplateDidAppear: true)
|
||||
}
|
||||
if #available(iOS 13.0, *) {
|
||||
updateContentStyle(configuration.contentStyle)
|
||||
}
|
||||
updateContentStyle(configuration.contentStyle)
|
||||
FrameworkHelper.updatePositionArrowOffset(false, offset: 5)
|
||||
|
||||
CarPlayWindowScaleAdjuster.updateAppearance(
|
||||
@@ -399,31 +397,36 @@ extension CarPlayService: CPMapTemplateDelegate {
|
||||
FrameworkHelper.switchMyPositionMode()
|
||||
}
|
||||
|
||||
func mapTemplate(_ mapTemplate: CPMapTemplate, panEndedWith direction: CPMapTemplate.PanDirection) {
|
||||
@objc(mapTemplate:panEndedWithDirection:)
|
||||
func mapTemplate(_ mapTemplate: CPMapTemplate, panEndedWith direction: Int) {
|
||||
var offset = UIOffset(horizontal: 0.0, vertical: 0.0)
|
||||
let offsetStep: CGFloat = 0.25
|
||||
if direction.contains(.up) { offset.vertical -= offsetStep }
|
||||
if direction.contains(.down) { offset.vertical += offsetStep }
|
||||
if direction.contains(.left) { offset.horizontal += offsetStep }
|
||||
if direction.contains(.right) { offset.horizontal -= offsetStep }
|
||||
let panDirection = CPMapTemplate.PanDirection(rawValue: direction)
|
||||
if panDirection.contains(.up) { offset.vertical -= offsetStep }
|
||||
if panDirection.contains(.down) { offset.vertical += offsetStep }
|
||||
if panDirection.contains(.left) { offset.horizontal += offsetStep }
|
||||
if panDirection.contains(.right) { offset.horizontal -= offsetStep }
|
||||
FrameworkHelper.moveMap(offset)
|
||||
isUserPanMap = true
|
||||
}
|
||||
|
||||
func mapTemplate(_ mapTemplate: CPMapTemplate, panWith direction: CPMapTemplate.PanDirection) {
|
||||
|
||||
@objc(mapTemplate:panWithDirection:)
|
||||
func mapTemplate(_ mapTemplate: CPMapTemplate, panWith direction: Int) {
|
||||
var offset = UIOffset(horizontal: 0.0, vertical: 0.0)
|
||||
let offsetStep: CGFloat = 0.1
|
||||
if direction.contains(.up) { offset.vertical -= offsetStep }
|
||||
if direction.contains(.down) { offset.vertical += offsetStep }
|
||||
if direction.contains(.left) { offset.horizontal += offsetStep }
|
||||
if direction.contains(.right) { offset.horizontal -= offsetStep }
|
||||
let panDirection = CPMapTemplate.PanDirection(rawValue: direction)
|
||||
if panDirection.contains(.up) { offset.vertical -= offsetStep }
|
||||
if panDirection.contains(.down) { offset.vertical += offsetStep }
|
||||
if panDirection.contains(.left) { offset.horizontal += offsetStep }
|
||||
if panDirection.contains(.right) { offset.horizontal -= offsetStep }
|
||||
FrameworkHelper.moveMap(offset)
|
||||
isUserPanMap = true
|
||||
}
|
||||
|
||||
func mapTemplate(_ mapTemplate: CPMapTemplate, didUpdatePanGestureWithTranslation translation: CGPoint, velocity: CGPoint) {
|
||||
let scaleFactor = self.carplayVC?.mapView?.contentScaleFactor ?? 1
|
||||
FrameworkHelper.scrollMap(-scaleFactor * translation.x, -scaleFactor * translation.y);
|
||||
FrameworkHelper.scrollMap(toDistanceX:-scaleFactor * translation.x, andY:-scaleFactor * translation.y);
|
||||
}
|
||||
|
||||
func mapTemplate(_ mapTemplate: CPMapTemplate, startedTrip trip: CPTrip, using routeChoice: CPRouteChoice) {
|
||||
|
||||
@@ -96,14 +96,12 @@ final class ListTemplateBuilder {
|
||||
bookmarkId: bookmark.bookmarkId))
|
||||
return item
|
||||
})
|
||||
if #available(iOS 15.0, *) {
|
||||
let maxItemCount = CPListTemplate.maximumItemCount - 1
|
||||
if items.count >= maxItemCount {
|
||||
items = Array(items.prefix(maxItemCount))
|
||||
let cropWarning = CPListItem(text: L("not_all_shown_bookmarks_carplay"), detailText: L("switch_to_phone_bookmarks_carplay"))
|
||||
cropWarning.isEnabled = false
|
||||
items.append(cropWarning)
|
||||
}
|
||||
let maxItemCount = CPListTemplate.maximumItemCount - 1
|
||||
if items.count >= maxItemCount {
|
||||
items = Array(items.prefix(maxItemCount))
|
||||
let cropWarning = CPListItem(text: L("not_all_shown_bookmarks_carplay"), detailText: L("switch_to_phone_bookmarks_carplay"))
|
||||
cropWarning.isEnabled = false
|
||||
items.append(cropWarning)
|
||||
}
|
||||
let section = CPListSection(items: items)
|
||||
template.updateSections([section])
|
||||
@@ -125,9 +123,9 @@ final class ListTemplateBuilder {
|
||||
private class func buildBarButton(type: BarButtonType, action: ((CPBarButton) -> Void)?) -> CPBarButton {
|
||||
switch type {
|
||||
case .bookmarks:
|
||||
return CPBarButton(image: UIImage(named: "ic_carplay_bookmark")!, handler: action)
|
||||
return CPBarButton(image: UIImage(systemName: "list.star")!, handler: action)
|
||||
case .search:
|
||||
return CPBarButton(image: UIImage(named: "ic_carplay_keyboard")!, handler: action)
|
||||
return CPBarButton(image: UIImage(systemName: "keyboard.fill")!, handler: action)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ final class MapTemplateBuilder {
|
||||
case .recenter:
|
||||
return CPBarButton(title: L("follow_my_position"), handler: action)
|
||||
case .settings:
|
||||
return CPBarButton(image: UIImage(named: "ic_carplay_settings")!, handler: action)
|
||||
return CPBarButton(image: UIImage(systemName: "gearshape.fill")!, handler: action)
|
||||
case .mute:
|
||||
return CPBarButton(image: UIImage(named: "ic_carplay_unmuted")!, handler: action)
|
||||
case .unmute:
|
||||
|
||||
@@ -29,12 +29,7 @@ class CopyableLabel: UILabel {
|
||||
var rect = bounds
|
||||
rect.origin = locationOfTouchInLabel
|
||||
rect.size = CGSize(width: 1, height: 1)
|
||||
if #available(iOS 13, *) {
|
||||
menu.showMenu(from: self, rect: rect)
|
||||
} else {
|
||||
menu.setTargetRect(rect, in: self)
|
||||
menu.setMenuVisible(true, animated: false)
|
||||
}
|
||||
menu.showMenu(from: self, rect: rect)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -117,10 +117,18 @@ NSString *const kNavigationControlViewXibName = @"NavigationControlView";
|
||||
- (void)onRouteReady:(BOOL)hasWarnings {
|
||||
if (self.state != MWMNavigationDashboardStateNavigation)
|
||||
self.state = MWMNavigationDashboardStateReady;
|
||||
if ([MWMRouter hasActiveDrivingOptions]) {
|
||||
self.routePreview.drivingOptionsState = MWMDrivingOptionsStateChange;
|
||||
|
||||
MWMRouterType const routerType = [MWMRouter type];
|
||||
if (routerType == MWMRouterTypePublicTransport || routerType == MWMRouterTypeRuler) {
|
||||
// For Public Transport and Ruler modes, there are no road restrictions, so always hide the button.
|
||||
self.routePreview.drivingOptionsState = MWMDrivingOptionsStateNone;
|
||||
} else {
|
||||
self.routePreview.drivingOptionsState = hasWarnings ? MWMDrivingOptionsStateDefine : MWMDrivingOptionsStateNone;
|
||||
// For all other modes (Vehicle, Pedestrian, Bicycle), show the button.
|
||||
if ([MWMRouter hasActiveDrivingOptions]) {
|
||||
self.routePreview.drivingOptionsState = MWMDrivingOptionsStateChange;
|
||||
} else {
|
||||
self.routePreview.drivingOptionsState = MWMDrivingOptionsStateDefine;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23727" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23721"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
@@ -37,7 +37,7 @@
|
||||
<rect key="frame" x="0.0" y="68" width="320" height="48"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Opi-yT-xIZ">
|
||||
<rect key="frame" x="72.5" y="12" width="175" height="24"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="48"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="12"/>
|
||||
<state key="normal" title="DEFINE ROADS TO AVOID" image="ic_options_warning"/>
|
||||
<connections>
|
||||
@@ -50,9 +50,11 @@
|
||||
<constraints>
|
||||
<constraint firstItem="Opi-yT-xIZ" firstAttribute="centerX" secondItem="l7E-Ns-2Nn" secondAttribute="centerX" id="5DK-9d-8qb"/>
|
||||
<constraint firstItem="Opi-yT-xIZ" firstAttribute="centerY" secondItem="l7E-Ns-2Nn" secondAttribute="centerY" id="JFn-Vg-Wby"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Opi-yT-xIZ" secondAttribute="trailing" constant="16" id="aCy-jn-U2B"/>
|
||||
<constraint firstItem="THL-V3-3xS" firstAttribute="bottom" secondItem="Opi-yT-xIZ" secondAttribute="bottom" id="LbO-Ze-Pwl"/>
|
||||
<constraint firstItem="Opi-yT-xIZ" firstAttribute="top" secondItem="THL-V3-3xS" secondAttribute="top" id="OnE-Yh-Inw"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Opi-yT-xIZ" secondAttribute="trailing" id="aCy-jn-U2B"/>
|
||||
<constraint firstAttribute="height" constant="48" id="mCi-1V-xX4"/>
|
||||
<constraint firstItem="Opi-yT-xIZ" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="l7E-Ns-2Nn" secondAttribute="leading" constant="16" id="vdk-Ef-Kk1"/>
|
||||
<constraint firstItem="Opi-yT-xIZ" firstAttribute="leading" secondItem="l7E-Ns-2Nn" secondAttribute="leading" id="vdk-Ef-Kk1"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="SecondaryBackground"/>
|
||||
@@ -139,10 +141,10 @@
|
||||
</constraints>
|
||||
<variation key="default">
|
||||
<mask key="constraints">
|
||||
<exclude reference="BWr-hr-pwo"/>
|
||||
<exclude reference="Cd3-ev-uFS"/>
|
||||
<exclude reference="Zs5-bj-AR6"/>
|
||||
<exclude reference="qTV-BL-cX4"/>
|
||||
<exclude reference="BWr-hr-pwo"/>
|
||||
<exclude reference="Zs5-bj-AR6"/>
|
||||
</mask>
|
||||
</variation>
|
||||
</view>
|
||||
@@ -282,7 +284,7 @@
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NAs-km-8uw">
|
||||
<rect key="frame" x="20" y="12" width="127" height="24"/>
|
||||
<rect key="frame" x="20" y="12" width="119" height="24"/>
|
||||
<state key="normal" title="ManageRoute" image="ic_24px_manager"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="medium14:MWMBlack"/>
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23727" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23721"/>
|
||||
<capability name="Image references" minToolsVersion="12.0"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
@@ -25,7 +26,7 @@
|
||||
<rect key="frame" x="0.0" y="48" width="320" height="48"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZXA-Og-q2I">
|
||||
<rect key="frame" x="72.5" y="12" width="175" height="24"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="48"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="12"/>
|
||||
<state key="normal" title="DEFINE ROADS TO AVOID" image="ic_options_warning"/>
|
||||
<connections>
|
||||
@@ -35,11 +36,13 @@
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.12156862745098039" green="0.59999999999999998" blue="0.32156862745098036" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ZXA-Og-q2I" secondAttribute="trailing" constant="16" id="9bx-3j-h0U"/>
|
||||
<constraint firstItem="ZXA-Og-q2I" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Ib5-qh-Cmo" secondAttribute="leading" constant="16" id="IYq-Pa-Tai"/>
|
||||
<constraint firstAttribute="trailing" secondItem="ZXA-Og-q2I" secondAttribute="trailing" id="9bx-3j-h0U"/>
|
||||
<constraint firstItem="ZXA-Og-q2I" firstAttribute="leading" secondItem="Ib5-qh-Cmo" secondAttribute="leading" id="IYq-Pa-Tai"/>
|
||||
<constraint firstItem="ZXA-Og-q2I" firstAttribute="centerX" secondItem="Ib5-qh-Cmo" secondAttribute="centerX" id="Uq2-QA-bWZ"/>
|
||||
<constraint firstAttribute="bottom" secondItem="ZXA-Og-q2I" secondAttribute="bottom" id="ga1-Mh-GwC"/>
|
||||
<constraint firstItem="ZXA-Og-q2I" firstAttribute="centerY" secondItem="Ib5-qh-Cmo" secondAttribute="centerY" id="l5z-Dg-joz"/>
|
||||
<constraint firstAttribute="height" constant="48" id="l8l-Ii-g5U"/>
|
||||
<constraint firstItem="ZXA-Og-q2I" firstAttribute="top" secondItem="Ib5-qh-Cmo" secondAttribute="top" id="oca-09-5v4"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="SecondaryBackground"/>
|
||||
|
||||
@@ -81,7 +81,7 @@ double getExactDPI(double contentScaleFactor)
|
||||
if (tempContext != nil)
|
||||
apiVersion = dp::ApiVersion::OpenGLES3;
|
||||
else
|
||||
apiVersion = dp::ApiVersion::OpenGLES2;
|
||||
CHECK(false, ("OpenGL ES3 is not supported"));
|
||||
}
|
||||
|
||||
return apiVersion;
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
final class LoadingOverlayViewController: UIViewController {
|
||||
private var activityIndicator: UIActivityIndicatorView = {
|
||||
let indicator: UIActivityIndicatorView
|
||||
if #available(iOS 13.0, *) {
|
||||
indicator = UIActivityIndicatorView(style: .large)
|
||||
} else {
|
||||
indicator = UIActivityIndicatorView(style: .whiteLarge)
|
||||
}
|
||||
indicator = UIActivityIndicatorView(style: .large)
|
||||
indicator.color = .white
|
||||
indicator.startAnimating()
|
||||
indicator.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
@@ -908,19 +908,29 @@ NSString *const kAboutSegue = @"Map2About";
|
||||
CGPoint translation = [recognizer translationInView:self.view];
|
||||
if (translation.x == 0 && translation.y == 0 && CGPointEqualToPoint(translation, CGPointZero))
|
||||
return;
|
||||
self.userTouchesAction = UserTouchesActionDrag;
|
||||
CGPoint velocity = [recognizer velocityInView:self.view];
|
||||
CGFloat velocityX = ABS(velocity.x * 0.001);
|
||||
velocityX = MAX(1, velocityX);
|
||||
if (velocityX > 2.5) {
|
||||
velocityX = 2.5;
|
||||
|
||||
BOOL isShiftPressed = [recognizer modifierFlags] & UIKeyModifierShift;
|
||||
|
||||
if (isShiftPressed) {
|
||||
self.userTouchesAction = UserTouchesActionScale;
|
||||
static const CGFloat kScaleFactor = 0.9;
|
||||
const CGFloat factor = translation.y > 0 ? kScaleFactor : 1 / kScaleFactor;
|
||||
GetFramework().Scale(factor, [self getZoomPoint], false);
|
||||
} else {
|
||||
self.userTouchesAction = UserTouchesActionDrag;
|
||||
CGPoint velocity = [recognizer velocityInView:self.view];
|
||||
CGFloat velocityX = ABS(velocity.x * 0.001);
|
||||
velocityX = MAX(1, velocityX);
|
||||
if (velocityX > 2.5) {
|
||||
velocityX = 2.5;
|
||||
}
|
||||
CGFloat velocityY = ABS(velocity.y * 0.001);
|
||||
velocityY = MAX(1, velocityY);
|
||||
if (velocityY > 2.5) {
|
||||
velocityY = 2.5;
|
||||
}
|
||||
GetFramework().Scroll((translation.x * velocityX) * -1, (translation.y * velocityY) * -1);
|
||||
}
|
||||
CGFloat velocityY = ABS(velocity.y * 0.001);
|
||||
velocityY = MAX(1, velocityY);
|
||||
if (velocityY > 2.5) {
|
||||
velocityY = 2.5;
|
||||
}
|
||||
GetFramework().Scroll((translation.x * velocityX) * -1, (translation.y * velocityY) * -1);
|
||||
[recognizer setTranslation:CGPointZero inView:self.view];
|
||||
break;
|
||||
}
|
||||
@@ -938,7 +948,7 @@ NSString *const kAboutSegue = @"Map2About";
|
||||
case UIGestureRecognizerStateChanged:
|
||||
{
|
||||
CGPoint translation = [recognizer translationInView:self.view];
|
||||
if (translation.x == 0 && CGPointEqualToPoint(translation, CGPointZero))
|
||||
if (translation.y == 0)
|
||||
return;
|
||||
self.userTouchesAction = UserTouchesActionScale;
|
||||
static const CGFloat kScaleFactor = 0.9;
|
||||
|
||||
@@ -11,34 +11,34 @@ public:
|
||||
: dp::metal::MetalBaseContext(metalLayer.device, screenSize, [this]{ return [m_metalLayer nextDrawable]; })
|
||||
, m_metalLayer(metalLayer)
|
||||
{}
|
||||
|
||||
void Resize(int w, int h) override
|
||||
|
||||
void Resize(uint32_t w, uint32_t h) override
|
||||
{
|
||||
m_metalLayer.drawableSize = CGSize{static_cast<float>(w), static_cast<float>(h)};
|
||||
ResetFrameDrawable();
|
||||
dp::metal::MetalBaseContext::Resize(w, h);
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
CAMetalLayer * m_metalLayer;
|
||||
};
|
||||
|
||||
|
||||
class UploadMetalContext : public dp::metal::MetalBaseContext
|
||||
{
|
||||
public:
|
||||
explicit UploadMetalContext(id<MTLDevice> device)
|
||||
: dp::metal::MetalBaseContext(device, {}, nullptr)
|
||||
{}
|
||||
|
||||
|
||||
void Present() override {}
|
||||
void MakeCurrent() override {}
|
||||
void Resize(int w, int h) override {}
|
||||
void Resize(uint32_t w, uint32_t h) override {}
|
||||
void SetFramebuffer(ref_ptr<dp::BaseFramebuffer> framebuffer) override {}
|
||||
void Init(dp::ApiVersion apiVersion) override
|
||||
{
|
||||
CHECK_EQUAL(apiVersion, dp::ApiVersion::Metal, ());
|
||||
}
|
||||
|
||||
|
||||
void SetClearColor(dp::Color const & color) override {}
|
||||
void Clear(uint32_t clearBits, uint32_t storeBits) override {}
|
||||
void Flush() override {}
|
||||
|
||||
@@ -18,7 +18,7 @@ public:
|
||||
void MakeCurrent() override;
|
||||
void Present() override;
|
||||
void SetFramebuffer(ref_ptr<dp::BaseFramebuffer> framebuffer) override;
|
||||
void Resize(int w, int h) override;
|
||||
void Resize(uint32_t w, uint32_t h) override;
|
||||
void SetPresentAvailable(bool available) override;
|
||||
|
||||
private:
|
||||
|
||||
@@ -17,20 +17,14 @@ iosOGLContext::iosOGLContext(CAEAGLLayer * layer, dp::ApiVersion apiVersion,
|
||||
, m_frameBufferId(0)
|
||||
, m_presentAvailable(true)
|
||||
{
|
||||
EAGLRenderingAPI api;
|
||||
if (m_apiVersion == dp::ApiVersion::OpenGLES3)
|
||||
api = kEAGLRenderingAPIOpenGLES3;
|
||||
else
|
||||
api = kEAGLRenderingAPIOpenGLES2;
|
||||
|
||||
if (contextToShareWith != NULL)
|
||||
{
|
||||
m_nativeContext = [[EAGLContext alloc] initWithAPI:api
|
||||
m_nativeContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3
|
||||
sharegroup: contextToShareWith->m_nativeContext.sharegroup];
|
||||
}
|
||||
else
|
||||
{
|
||||
m_nativeContext = [[EAGLContext alloc] initWithAPI:api];
|
||||
m_nativeContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +81,7 @@ void iosOGLContext::SetFramebuffer(ref_ptr<dp::BaseFramebuffer> framebuffer)
|
||||
}
|
||||
}
|
||||
|
||||
void iosOGLContext::Resize(int w, int h)
|
||||
void iosOGLContext::Resize(uint32_t w, uint32_t h)
|
||||
{
|
||||
if (m_needBuffers && m_hasBuffers)
|
||||
{
|
||||
@@ -95,7 +89,7 @@ void iosOGLContext::Resize(int w, int h)
|
||||
GLint height = 0;
|
||||
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &width);
|
||||
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &height);
|
||||
if (width == w && height == h)
|
||||
if (width == static_cast<GLint>(w) && height == static_cast<GLint>(h))
|
||||
return;
|
||||
|
||||
DestroyBuffers();
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
<array>
|
||||
<string>applinks:comaps.at</string>
|
||||
</array>
|
||||
<key>com.apple.developer.carplay-maps</key>
|
||||
<true/>
|
||||
<key>com.apple.developer.icloud-container-identifiers</key>
|
||||
<array>
|
||||
<string>iCloud.app.comaps.debug</string>
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
<array>
|
||||
<string>applinks:comaps.at</string>
|
||||
</array>
|
||||
<key>com.apple.developer.carplay-maps</key>
|
||||
<true/>
|
||||
<key>com.apple.developer.icloud-container-identifiers</key>
|
||||
<array>
|
||||
<string>iCloud.app.comaps</string>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import Foundation
|
||||
|
||||
var isiPad: Bool {
|
||||
if #available(iOS 14.0, *), ProcessInfo.processInfo.isiOSAppOnMac {
|
||||
if ProcessInfo.processInfo.isiOSAppOnMac {
|
||||
return true
|
||||
}
|
||||
return UIDevice.current.userInterfaceIdiom == .pad
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <functional>
|
||||
#include "editor/osm_editor.hpp"
|
||||
|
||||
@implementation MWMEditorHelper
|
||||
|
||||
@@ -146,6 +146,10 @@ char const *kRenderAltitudeImagesQueueLabel = "mapsme.mwmrouter.renderAltitudeIm
|
||||
_canAutoAddLastLocation = YES;
|
||||
_routingOptions = [MWMRoutingOptions new];
|
||||
_isRestoreProcessCompleted = NO;
|
||||
|
||||
[NSNotificationCenter.defaultCenter addObserverForName:@"RoutingOptionsChanged" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull notification) {
|
||||
[MWMRouter updateRoute];
|
||||
}];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
@@ -570,7 +574,7 @@ char const *kRenderAltitudeImagesQueueLabel = "mapsme.mwmrouter.renderAltitudeIm
|
||||
|
||||
+ (void)updateRoute {
|
||||
MWMRoutingOptions *newOptions = [MWMRoutingOptions new];
|
||||
if ((self.isRoutingActive && !self.isOnRoute) && ![newOptions isEqual:[self router].routingOptions]) {
|
||||
if (self.isRoutingActive && !self.isOnRoute && ![newOptions isEqual:[self router].routingOptions]) {
|
||||
[self rebuildWithBestRouter:YES];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,13 +66,20 @@
|
||||
}
|
||||
case osm::No: {
|
||||
const int minutes = result.GetMinutesUntilOpen();
|
||||
if (minutes < 60) { // less than 1 hour
|
||||
if (minutes < 15) { // less than 15 minutes
|
||||
_openStatusColor = [UIColor colorNamed:@"Base Colors/Yellow Color"];
|
||||
NSString * time = [NSString stringWithFormat:@"%d %@", minutes, L(@"minute")];
|
||||
_openStatusText = [NSString stringWithFormat:L(@"opens_in"), time];
|
||||
} else {
|
||||
}
|
||||
else if (minutes < 60) { // less than an hour (but more than 15 mins)
|
||||
_openStatusColor = [UIColor colorNamed:@"Base Colors/Red Color"];
|
||||
NSString * time = [NSString stringWithFormat:@"%d %@", minutes, L(@"minute")];
|
||||
_openStatusText = [NSString stringWithFormat:L(@"opens_in"), time];
|
||||
}
|
||||
else { // opens later or schedule is unknown
|
||||
_openStatusColor = [UIColor colorNamed:@"Base Colors/Red Color"];
|
||||
_openStatusText = L(@"closed");
|
||||
}
|
||||
_openStatusColor = [UIColor colorNamed:@"Base Colors/Red Color"];
|
||||
break;
|
||||
}
|
||||
case osm::Unknown: {
|
||||
|
||||
@@ -45,10 +45,6 @@
|
||||
listener.applyTheme()
|
||||
}
|
||||
}
|
||||
|
||||
if #available(iOS 13, *) {} else {
|
||||
UISearchBarRenderer.setAppearance()
|
||||
}
|
||||
}
|
||||
|
||||
private func updateView(_ view: UIView?) {
|
||||
|
||||
@@ -10,31 +10,19 @@ final class ThemeManager: NSObject {
|
||||
}
|
||||
|
||||
private func update(theme: MWMTheme) {
|
||||
if #available(iOS 13.0, *) {
|
||||
updateSystemUserInterfaceStyle(theme)
|
||||
}
|
||||
updateSystemUserInterfaceStyle(theme)
|
||||
|
||||
let actualTheme: MWMTheme = { theme in
|
||||
let isVehicleRouting = MWMRouter.isRoutingActive() && (MWMRouter.type() == .vehicle)
|
||||
let isVehicleRouting = MWMRouter.isRoutingActive() && (MWMRouter.type() == .vehicle) && MWMRouter.hasSavedRoute()
|
||||
switch theme {
|
||||
case .day: fallthrough
|
||||
case .vehicleDay: return isVehicleRouting ? .vehicleDay : .day
|
||||
case .night: fallthrough
|
||||
case .vehicleNight: return isVehicleRouting ? .vehicleNight : .night
|
||||
case .auto:
|
||||
if #available(iOS 13.0, *) {
|
||||
let isDarkModeEnabled = UIScreen.main.traitCollection.userInterfaceStyle == .dark
|
||||
guard isVehicleRouting else { return isDarkModeEnabled ? .night : .day }
|
||||
return isDarkModeEnabled ? .vehicleNight : .vehicleDay
|
||||
} else {
|
||||
guard isVehicleRouting else { return .day }
|
||||
switch FrameworkHelper.daytime(at: LocationManager.lastLocation()) {
|
||||
case .day: return .vehicleDay
|
||||
case .night: return .vehicleNight
|
||||
@unknown default:
|
||||
fatalError()
|
||||
}
|
||||
}
|
||||
let isDarkModeEnabled = UIScreen.main.traitCollection.userInterfaceStyle == .dark
|
||||
guard isVehicleRouting else { return isDarkModeEnabled ? .night : .day }
|
||||
return isDarkModeEnabled ? .vehicleNight : .vehicleDay
|
||||
@unknown default:
|
||||
fatalError()
|
||||
}
|
||||
|
||||
@@ -92,13 +92,14 @@ extension MapStyleSheet: IStyleSheet {
|
||||
s.backgroundColor = colors.linkBlue
|
||||
s.cornerRadius = .buttonSmall
|
||||
s.shadowRadius = 2
|
||||
s.shadowColor = colors.blackHintText
|
||||
s.shadowOpacity = 1
|
||||
s.shadowColor = colors.shadow
|
||||
s.shadowOpacity = 0.2
|
||||
s.shadowOffset = CGSize(width: 0, height: 2)
|
||||
}
|
||||
case .mapSecondTurnView:
|
||||
return .addFrom(Self.mapFirstTurnView) { s in
|
||||
s.backgroundColor = colors.white
|
||||
s.shadowColor = colors.blackPrimaryText
|
||||
}
|
||||
case .mapAutoupdateView:
|
||||
return .add { s in
|
||||
|
||||
@@ -15,23 +15,15 @@ class UINavigationBarRenderer: UIViewRenderer {
|
||||
class func render(_ control: UINavigationBar, style: Style) {
|
||||
super.render(control, style: style)
|
||||
if let barTintColor = style.barTintColor {
|
||||
if #available(iOS 13.0, *) {
|
||||
let appearance = UINavigationBarAppearance()
|
||||
appearance.configureWithOpaqueBackground()
|
||||
appearance.backgroundColor = barTintColor
|
||||
control.standardAppearance = appearance
|
||||
control.scrollEdgeAppearance = appearance
|
||||
} else {
|
||||
control.barTintColor = barTintColor
|
||||
}
|
||||
let appearance = UINavigationBarAppearance()
|
||||
appearance.configureWithOpaqueBackground()
|
||||
appearance.backgroundColor = barTintColor
|
||||
control.standardAppearance = appearance
|
||||
control.scrollEdgeAppearance = appearance
|
||||
}
|
||||
if let shadowImage = style.shadowImage {
|
||||
if #available(iOS 13.0, *) {
|
||||
control.standardAppearance.shadowImage = shadowImage
|
||||
control.scrollEdgeAppearance!.shadowImage = shadowImage
|
||||
} else {
|
||||
control.shadowImage = shadowImage
|
||||
}
|
||||
control.standardAppearance.shadowImage = shadowImage
|
||||
control.scrollEdgeAppearance!.shadowImage = shadowImage
|
||||
}
|
||||
|
||||
var attributes = [NSAttributedString.Key: Any]()
|
||||
@@ -41,11 +33,7 @@ class UINavigationBarRenderer: UIViewRenderer {
|
||||
if let fontColor = style.fontColor {
|
||||
attributes[NSAttributedString.Key.foregroundColor] = fontColor
|
||||
}
|
||||
if #available(iOS 13.0, *) {
|
||||
control.standardAppearance.titleTextAttributes = attributes
|
||||
control.scrollEdgeAppearance!.titleTextAttributes = attributes
|
||||
} else {
|
||||
control.titleTextAttributes = attributes
|
||||
}
|
||||
control.standardAppearance.titleTextAttributes = attributes
|
||||
control.scrollEdgeAppearance!.titleTextAttributes = attributes
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,43 +24,34 @@ extension UISearchBar {
|
||||
class UISearchBarRenderer: UIViewRenderer {
|
||||
class func render(_ control: UISearchBar, style: Style) {
|
||||
super.render(control, style: style)
|
||||
if #available(iOS 13, *) {
|
||||
let searchTextField = control.searchTextField
|
||||
// Default search bar implementation adds the grey transparent image for background. This code removes it and updates the corner radius. This is not working on iPad designed for mac.
|
||||
if #available(iOS 14.0, *), ProcessInfo.processInfo.isiOSAppOnMac {
|
||||
} else {
|
||||
control.setSearchFieldBackgroundImage(UIImage(), for: .normal)
|
||||
}
|
||||
searchTextField.layer.setCornerRadius(.buttonDefault)
|
||||
searchTextField.layer.masksToBounds = true
|
||||
// Placeholder color
|
||||
if let placeholder = searchTextField.placeholder {
|
||||
searchTextField.attributedPlaceholder = NSAttributedString(string: placeholder, attributes: [.foregroundColor: UIColor.gray])
|
||||
}
|
||||
if let backgroundColor = style.backgroundColor {
|
||||
searchTextField.backgroundColor = backgroundColor
|
||||
}
|
||||
if let font = style.font {
|
||||
searchTextField.font = font
|
||||
}
|
||||
if let fontColor = style.fontColor {
|
||||
searchTextField.textColor = fontColor
|
||||
}
|
||||
if let tintColor = style.tintColor {
|
||||
searchTextField.leftView?.tintColor = tintColor
|
||||
// Placeholder indicator color
|
||||
searchTextField.tintColor = tintColor
|
||||
// Clear button image
|
||||
let clearButtonImage = UIImage(named: "ic_clear")?.withRenderingMode(.alwaysTemplate).withTintColor(tintColor)
|
||||
control.setImage(clearButtonImage, for: .clear, state: .normal)
|
||||
}
|
||||
} else {
|
||||
// Default search bar implementation for iOS12 adds the dark grey transparent image for background. This code removes it and replace with the custom image accordingly to the documentation - see 'setSearchFieldBackgroundImage'.
|
||||
if let backgroundColor = style.backgroundColor {
|
||||
let image = getSearchBarBackgroundImage(color: backgroundColor)
|
||||
control.setSearchFieldBackgroundImage(image, for: .normal)
|
||||
control.searchTextPositionAdjustment = UIOffset(horizontal: 6.0, vertical: 0.0)
|
||||
}
|
||||
|
||||
let searchTextField = control.searchTextField
|
||||
// Default search bar implementation adds the grey transparent image for background. This code removes it and updates the corner radius. This is not working on iPad designed for mac.
|
||||
if !ProcessInfo.processInfo.isiOSAppOnMac {
|
||||
control.setSearchFieldBackgroundImage(UIImage(), for: .normal)
|
||||
}
|
||||
searchTextField.layer.setCornerRadius(.buttonDefault)
|
||||
searchTextField.layer.masksToBounds = true
|
||||
// Placeholder color
|
||||
if let placeholder = searchTextField.placeholder {
|
||||
searchTextField.attributedPlaceholder = NSAttributedString(string: placeholder, attributes: [.foregroundColor: UIColor.gray])
|
||||
}
|
||||
if let backgroundColor = style.backgroundColor {
|
||||
searchTextField.backgroundColor = backgroundColor
|
||||
}
|
||||
if let font = style.font {
|
||||
searchTextField.font = font
|
||||
}
|
||||
if let fontColor = style.fontColor {
|
||||
searchTextField.textColor = fontColor
|
||||
}
|
||||
if let tintColor = style.tintColor {
|
||||
searchTextField.leftView?.tintColor = tintColor
|
||||
// Placeholder indicator color
|
||||
searchTextField.tintColor = tintColor
|
||||
// Clear button image
|
||||
let clearButtonImage = UIImage(named: "ic_clear")?.withRenderingMode(.alwaysTemplate).withTintColor(tintColor)
|
||||
control.setImage(clearButtonImage, for: .clear, state: .normal)
|
||||
}
|
||||
if let barTintColor = style.barTintColor {
|
||||
let position = control.delegate?.position?(for: control) ?? control.barPosition
|
||||
|
||||
@@ -57,8 +57,6 @@ class UIViewRenderer {
|
||||
if let round = style.round, round == true {
|
||||
control.layer.cornerRadius = control.size.height / 2
|
||||
}
|
||||
if #available(iOS 13.0, *) {
|
||||
control.layer.cornerCurve = .continuous
|
||||
}
|
||||
control.layer.cornerCurve = .continuous
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@ import ActivityKit
|
||||
|
||||
#if canImport(ActivityKit)
|
||||
|
||||
private let kCurrentTrackRecordingLiveActivityIDKey = "kCurrentTrackRecordingLiveActivityIDKey"
|
||||
|
||||
protocol TrackRecordingActivityManager {
|
||||
func start(with info: TrackInfo) throws
|
||||
func update(_ info: TrackInfo)
|
||||
@@ -22,25 +24,39 @@ final class TrackRecordingLiveActivityManager {
|
||||
|
||||
@available(iOS 16.2, *)
|
||||
extension TrackRecordingLiveActivityManager: TrackRecordingActivityManager {
|
||||
|
||||
func start(with info: TrackInfo) throws {
|
||||
guard activity == nil else { return }
|
||||
stop()
|
||||
let state = TrackRecordingLiveActivityAttributes.ContentState(trackInfo: info)
|
||||
let content = ActivityContent<TrackRecordingLiveActivityAttributes.ContentState>(state: state, staleDate: nil)
|
||||
let attributes = TrackRecordingLiveActivityAttributes()
|
||||
activity = try LiveActivityManager.startActivity(attributes, content: content)
|
||||
let activity = try LiveActivityManager.startActivity(attributes, content: content)
|
||||
self.activity = activity
|
||||
UserDefaults.standard.set(activity.id, forKey: kCurrentTrackRecordingLiveActivityIDKey)
|
||||
}
|
||||
|
||||
func update(_ info: TrackInfo) {
|
||||
guard let activity else { return }
|
||||
guard let activity = activity ?? fetchCurrentActivity() else {
|
||||
LOG(.warning, "No active TrackRecordingLiveActivity found to update.")
|
||||
return
|
||||
}
|
||||
let state = TrackRecordingLiveActivityAttributes.ContentState(trackInfo: info)
|
||||
let content = ActivityContent<TrackRecordingLiveActivityAttributes.ContentState>(state: state, staleDate: nil)
|
||||
self.activity = activity
|
||||
LiveActivityManager.update(activity, content: content)
|
||||
}
|
||||
|
||||
func stop() {
|
||||
guard let activity else { return }
|
||||
LiveActivityManager.stop(activity)
|
||||
self.activity = nil
|
||||
let activities = Activity<TrackRecordingLiveActivityAttributes>.activities
|
||||
activities.forEach(LiveActivityManager.stop)
|
||||
activity = nil
|
||||
UserDefaults.standard.removeObject(forKey: kCurrentTrackRecordingLiveActivityIDKey)
|
||||
}
|
||||
|
||||
private func fetchCurrentActivity() -> Activity<TrackRecordingLiveActivityAttributes>? {
|
||||
guard let id = UserDefaults.standard.string(forKey: kCurrentTrackRecordingLiveActivityIDKey) else { return nil }
|
||||
let activities = Activity<TrackRecordingLiveActivityAttributes>.activities
|
||||
return activities.first(where: { $0.id == id })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ final class TrackRecordingManager: NSObject {
|
||||
let locationManager = LocationManager.self
|
||||
var activityManager: TrackRecordingActivityManager? = nil
|
||||
#if canImport(ActivityKit)
|
||||
if #available(iOS 16.2, *) {
|
||||
if #available(iOS 16.2, *), !ProcessInfo.processInfo.isiOSAppOnMac {
|
||||
activityManager = TrackRecordingLiveActivityManager.shared
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -14,6 +14,7 @@ struct CloudMetadataItem: MetadataItem {
|
||||
let fileName: String
|
||||
let fileUrl: URL
|
||||
var isDownloaded: Bool
|
||||
var percentDownloaded: NSNumber
|
||||
var lastModificationDate: TimeInterval
|
||||
let downloadingError: NSError?
|
||||
let uploadingError: NSError?
|
||||
@@ -42,6 +43,7 @@ extension CloudMetadataItem {
|
||||
guard let fileName = metadataItem.value(forAttribute: NSMetadataItemFSNameKey) as? String,
|
||||
let fileUrl = metadataItem.value(forAttribute: NSMetadataItemURLKey) as? URL,
|
||||
let downloadStatus = metadataItem.value(forAttribute: NSMetadataUbiquitousItemDownloadingStatusKey) as? String,
|
||||
let percentDownloaded = metadataItem.value(forAttribute: NSMetadataUbiquitousItemPercentDownloadedKey) as? NSNumber,
|
||||
let lastModificationDate = (metadataItem.value(forAttribute: NSMetadataItemFSContentChangeDateKey) as? Date)?.roundedTime,
|
||||
let hasUnresolvedConflicts = metadataItem.value(forAttribute: NSMetadataUbiquitousItemHasUnresolvedConflictsKey) as? Bool else {
|
||||
let allAttributes = metadataItem.values(forAttributes: metadataItem.attributes)
|
||||
@@ -51,6 +53,7 @@ extension CloudMetadataItem {
|
||||
self.fileName = fileName
|
||||
self.fileUrl = fileUrl.standardizedFileURL
|
||||
self.isDownloaded = downloadStatus == NSMetadataUbiquitousItemDownloadingStatusCurrent
|
||||
self.percentDownloaded = percentDownloaded
|
||||
self.lastModificationDate = lastModificationDate
|
||||
self.hasUnresolvedConflicts = hasUnresolvedConflicts
|
||||
self.downloadingError = metadataItem.value(forAttribute: NSMetadataUbiquitousItemDownloadingErrorKey) as? NSError
|
||||
@@ -65,6 +68,8 @@ extension CloudMetadataItem {
|
||||
.ubiquitousItemDownloadingErrorKey,
|
||||
.ubiquitousItemUploadingErrorKey])
|
||||
guard let downloadStatus = resources.ubiquitousItemDownloadingStatus,
|
||||
// Not used.
|
||||
// let percentDownloaded = resources.ubiquitousItemDownloadingStatus,
|
||||
let lastModificationDate = resources.contentModificationDate?.roundedTime,
|
||||
let hasUnresolvedConflicts = resources.ubiquitousItemHasUnresolvedConflicts else {
|
||||
LOG(.error, "Failed to initialize CloudMetadataItem from \(fileUrl) resources: \(resources.allValues)")
|
||||
@@ -72,7 +77,9 @@ extension CloudMetadataItem {
|
||||
}
|
||||
self.fileName = fileUrl.lastPathComponent
|
||||
self.fileUrl = fileUrl.standardizedFileURL
|
||||
self.isDownloaded = downloadStatus.rawValue == NSMetadataUbiquitousItemDownloadingStatusCurrent
|
||||
let isDownloaded = downloadStatus.rawValue == NSMetadataUbiquitousItemDownloadingStatusCurrent
|
||||
self.isDownloaded = isDownloaded
|
||||
self.percentDownloaded = isDownloaded ? 0.0 : 100.0
|
||||
self.lastModificationDate = lastModificationDate
|
||||
self.hasUnresolvedConflicts = hasUnresolvedConflicts
|
||||
self.downloadingError = resources.ubiquitousItemDownloadingError
|
||||
@@ -115,7 +122,7 @@ extension Array where Element == CloudMetadataItem {
|
||||
}
|
||||
|
||||
var notDownloaded: Self {
|
||||
filter { !$0.isDownloaded }
|
||||
filter { !$0.isDownloaded && $0.percentDownloaded == 0.0 }
|
||||
}
|
||||
|
||||
func withUnresolvedConflicts(_ hasUnresolvedConflicts: Bool) -> Self {
|
||||
|
||||
@@ -39,18 +39,16 @@ final class SynchronizationFileWriter {
|
||||
|
||||
// MARK: - Read/Write/Downloading/Uploading
|
||||
private func startDownloading(_ cloudMetadataItem: CloudMetadataItem, completion: WritingResultCompletionHandler) {
|
||||
var coordinationError: NSError?
|
||||
fileCoordinator.coordinate(writingItemAt: cloudMetadataItem.fileUrl, options: [], error: &coordinationError) { cloudItemUrl in
|
||||
do {
|
||||
LOG(.info, "Start downloading file: \(cloudItemUrl.path)...")
|
||||
try fileManager.startDownloadingUbiquitousItem(at: cloudItemUrl)
|
||||
completion(.success)
|
||||
} catch {
|
||||
completion(.failure(error))
|
||||
LOG(.info, "Start downloading file: \(cloudMetadataItem.fileUrl.path)...")
|
||||
do {
|
||||
if fileManager.isUbiquitousItem(at: cloudMetadataItem.fileUrl) {
|
||||
try fileManager.startDownloadingUbiquitousItem(at: cloudMetadataItem.fileUrl)
|
||||
} else {
|
||||
LOG(.warning, "File \(cloudMetadataItem.fileUrl.path) is not a ubiquitous item. Skipping download.")
|
||||
}
|
||||
}
|
||||
if let coordinationError {
|
||||
completion(.failure(coordinationError))
|
||||
completion(.success)
|
||||
} catch {
|
||||
completion(.failure(error))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "ic_menu_bookmark_track_recordign.png",
|
||||
"filename" : "ic_menu_track_recording.svg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.8 KiB |
@@ -0,0 +1,3 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12 16.25C13.1758 16.25 14.1781 15.8356 15.0069 15.0069C15.8356 14.1781 16.25 13.1758 16.25 12C16.25 10.8242 15.8356 9.82188 15.0069 8.99313C14.1781 8.16438 13.1758 7.75 12 7.75C10.8242 7.75 9.82188 8.16438 8.99312 8.99313C8.16437 9.82188 7.75 10.8242 7.75 12C7.75 13.1758 8.16437 14.1781 8.99312 15.0069C9.82188 15.8356 10.8242 16.25 12 16.25ZM12 20.5C10.8242 20.5 9.71917 20.2769 8.685 19.8306C7.65083 19.3844 6.75125 18.7788 5.98625 18.0138C5.22125 17.2488 4.61563 16.3492 4.16938 15.315C3.72313 14.2808 3.5 13.1758 3.5 12C3.5 10.8242 3.72313 9.71917 4.16938 8.685C4.61563 7.65083 5.22125 6.75125 5.98625 5.98625C6.75125 5.22125 7.65083 4.61563 8.685 4.16938C9.71917 3.72313 10.8242 3.5 12 3.5C13.1758 3.5 14.2808 3.72313 15.315 4.16938C16.3492 4.61563 17.2488 5.22125 18.0138 5.98625C18.7788 6.75125 19.3844 7.65083 19.8306 8.685C20.2769 9.71917 20.5 10.8242 20.5 12C20.5 13.1758 20.2769 14.2808 19.8306 15.315C19.3844 16.3492 18.7788 17.2488 18.0138 18.0138C17.2488 18.7788 16.3492 19.3844 15.315 19.8306C14.2808 20.2769 13.1758 20.5 12 20.5ZM12 18.8C13.8983 18.8 15.5063 18.1413 16.8238 16.8238C18.1413 15.5063 18.8 13.8983 18.8 12C18.8 10.1017 18.1413 8.49375 16.8238 7.17625C15.5063 5.85875 13.8983 5.2 12 5.2C10.1017 5.2 8.49375 5.85875 7.17625 7.17625C5.85875 8.49375 5.2 10.1017 5.2 12C5.2 13.8983 5.85875 15.5063 7.17625 16.8238C8.49375 18.1413 10.1017 18.8 12 18.8Z" fill="#0000FF"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_carplay_bookmark.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_carplay_keyboard.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_carplay_settings.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.961",
|
||||
"green" : "0.961",
|
||||
"red" : "0.961"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.118",
|
||||
"green" : "0.110",
|
||||
"red" : "0.110"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -750,12 +750,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Gestoor";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Meld asseblief aan by OpenStreetMap om al jou kaartwysigings outomaties op te laai. Kom meer te wete";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "hier";
|
||||
"core_entrance" = "Ingang";
|
||||
"error_enter_correct_name" = "Voer asb. ’n korrekte naam in";
|
||||
"bookmark_lists" = "Lyste";
|
||||
@@ -1097,3 +1091,5 @@
|
||||
"pref_maplanguage_title" = "Map Language";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Local Language";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Waterpunt";
|
||||
"type.amenity.water_point.drinking_water_no" = "Waterpunt";
|
||||
"type.barrier" = "Versperring";
|
||||
"type.barrier.yes" = "Versperring";
|
||||
"type.barrier.block" = "Blok";
|
||||
"type.barrier.bollard" = "Bolder";
|
||||
"type.barrier.border_control" = "Grensbeheer";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
|
||||
@@ -750,12 +750,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "تم الحفظ";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "برجاء تسجيل الدخول إلى OpenStreetMap لتحميل جميع تعديلات الخريطة تلقائيًا. تعرف على المزيد";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "هنا";
|
||||
"core_entrance" = "المدخل";
|
||||
"error_enter_correct_name" = "الرجاء إدخال اسم صحيح";
|
||||
"bookmark_lists" = "قوائم";
|
||||
@@ -1097,3 +1091,5 @@
|
||||
"pref_maplanguage_title" = "Map Language";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Local Language";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "نقطة إعادة تعبة قنينة المياه";
|
||||
"type.amenity.water_point.drinking_water_no" = "نقطة إعادة تعبة قنينة المياه";
|
||||
"type.barrier" = "حاجز";
|
||||
"type.barrier.yes" = "حاجز";
|
||||
"type.barrier.block" = "حاجز";
|
||||
"type.barrier.bollard" = "حاجز سيارات";
|
||||
"type.barrier.border_control" = "أمن الحدود";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
|
||||
@@ -218,7 +218,6 @@
|
||||
"osm_profile_register" = "Register at OpenStreetMap";
|
||||
"osm_more_about_url" = "https://wiki.openstreetmap.org/wiki/About_OpenStreetMap";
|
||||
"mi" = "mi";
|
||||
"alert_reauth_message_ios" = "Please login to OpenStreetMap to automatically upload all your map edits. Learn more";
|
||||
"planning_route_remove_title" = "Drag here to remove";
|
||||
"sort_distance" = "Sort by distance";
|
||||
"downloader_search_results" = "Found";
|
||||
@@ -246,7 +245,6 @@
|
||||
"downloader_process" = "Downloading %@…";
|
||||
"bookmark_lists_hide_all" = "Hide all";
|
||||
"downloader_applying" = "Applying %@…";
|
||||
"alert_reauth_link_text_ios" = "here";
|
||||
"bookmarks_error_title_share_empty" = "Sharing error";
|
||||
"bookmarks_error_title_list_name_already_taken" = "This name is already taken";
|
||||
"downloader_percent" = "%@ (%@ of %@)";
|
||||
@@ -589,3 +587,5 @@
|
||||
"pref_maplanguage_title" = "Map Language";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Local Language";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -368,6 +368,7 @@
|
||||
"type.leisure.fitness_centre" = "Fitness Centre";
|
||||
"type.junction.circular" = "Roundabout";
|
||||
"type.barrier" = "Barrier";
|
||||
"type.barrier.yes" = "Barrier";
|
||||
"type.cuisine.italian" = "Italian";
|
||||
"type.shop.erotic" = "Erotic Shop";
|
||||
"type.cuisine.steak_house" = "Steak House";
|
||||
@@ -1295,3 +1296,5 @@
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.amenity.luggage_locker" = "Luggage Locker";
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
|
||||
@@ -754,12 +754,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Saxlandı";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Bütün xəritə redaktələrinizi avtomatik yükləmək üçün OpenStreetMap-a daxil olun";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "burada";
|
||||
"core_entrance" = "Giriş";
|
||||
"error_enter_correct_name" = "Düzgün ad daxil edin";
|
||||
"bookmark_lists" = "Siyahılar";
|
||||
@@ -1083,3 +1077,5 @@
|
||||
"pref_maplanguage_title" = "Map Language";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Local Language";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Karvanlar üçün su nöqtəsi";
|
||||
"type.amenity.water_point.drinking_water_no" = "Karvanlar üçün su nöqtəsi";
|
||||
"type.barrier" = "Maneə";
|
||||
"type.barrier.yes" = "Maneə";
|
||||
"type.barrier.block" = "Blok";
|
||||
"type.barrier.bollard" = "Birbaşa";
|
||||
"type.barrier.border_control" = "Sərhəd Nəzarəti";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
|
||||
@@ -751,12 +751,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Захавана";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Калі ласка, увайдзіце ў OpenStreetMap, каб аўтаматычна загрузіць усе вашыя праўкі карты. Даведайцеся больш";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "тут";
|
||||
"core_entrance" = "Уваход";
|
||||
"error_enter_correct_name" = "Увядзіце правільную назву";
|
||||
"bookmark_lists" = "Спісы";
|
||||
@@ -1097,3 +1091,5 @@
|
||||
"pref_maplanguage_title" = "Map Language";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Local Language";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Вада для аўтадомаў";
|
||||
"type.amenity.water_point.drinking_water_no" = "Вада для аўтадомаў";
|
||||
"type.barrier" = "Barrier";
|
||||
"type.barrier.yes" = "Barrier";
|
||||
"type.barrier.block" = "Block";
|
||||
"type.barrier.bollard" = "Bollard";
|
||||
"type.barrier.border_control" = "Border Control";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
"bookmark_set_name" = "Име на група";
|
||||
|
||||
/* "Bookmark Lists" dialog title */
|
||||
"bookmark_sets" = "Bookmark Lists";
|
||||
"bookmark_sets" = "Списък с отметки";
|
||||
|
||||
/* Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. */
|
||||
"bookmarks" = "Отметки";
|
||||
@@ -148,7 +148,7 @@
|
||||
|
||||
/* Search category for RV facilities; any changes should be duplicated in categories.txt @category_rv! */
|
||||
"category_rv" = "За RV";
|
||||
"share_bookmarks_email_body" = "Hello!\n\nAttached are my bookmarks; please open them in CoMaps. If you don't have it installed you can download it here: https://www.comaps.app/download/\n\nEnjoy travelling with CoMaps!";
|
||||
"share_bookmarks_email_body" = "Здравей!\n\nПрикачени са отметките ми; моля отвори ги в CoMaps. Ако го нямаш инсталирано, можеш да го изтеглиш тук: https://www.comaps.app/download/\n\nПриятно пътуване с CoMaps!";
|
||||
|
||||
/* message title of loading file */
|
||||
"load_kmz_title" = "Зареждане на отметки";
|
||||
@@ -199,7 +199,7 @@
|
||||
"share_my_location" = "Споделяне на местоположение";
|
||||
"prefs_group_route" = "Навигация";
|
||||
"pref_zoom_title" = "Мащабни бутони";
|
||||
"pref_left_button_type" = "Left Main Button";
|
||||
"pref_left_button_type" = "Ляв главен бутон";
|
||||
|
||||
/* Settings «Map» category: «Appearance» title */
|
||||
"pref_appearance_title" = "Изглед";
|
||||
@@ -211,7 +211,7 @@
|
||||
"pref_appearance_dark" = "Тъмен";
|
||||
|
||||
/* Generic «Disabled» string */
|
||||
"disabled" = "Disabled";
|
||||
"disabled" = "Изключено";
|
||||
|
||||
/* Generic «Off» string */
|
||||
"off" = "Изключен";
|
||||
@@ -235,7 +235,7 @@
|
||||
"pref_tts_title" = "Гласови инструкции";
|
||||
|
||||
/* Settings «Route» category: «Tts enable» title */
|
||||
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||
"pref_tts_enable_title" = "Включи гласовите инструкции";
|
||||
|
||||
/* Settings «Route» category: «Tts announce street names» title */
|
||||
"pref_tts_street_names_title" = "Обявете имена на улици";
|
||||
@@ -247,7 +247,7 @@
|
||||
"pref_tts_language_title" = "Език на инструкциите";
|
||||
|
||||
/* Settings «Route» category: «Test Voice Directions» title */
|
||||
"pref_tts_test_voice_title" = "Тестване на гласови указания (TTS, Text-To-Speech)";
|
||||
"pref_tts_test_voice_title" = "Тестване на гласови указания";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Друго";
|
||||
@@ -319,10 +319,10 @@
|
||||
"report_incorrect_map_bug" = "Докладване или поправяне на неправилни данни на картата";
|
||||
|
||||
/* Button in the About screen */
|
||||
"volunteer" = "За доброволчество";
|
||||
"volunteer" = "Доброволчество и подобряване на CoMaps";
|
||||
|
||||
/* "Social media" section header in the About screen */
|
||||
"follow_us" = "Следвайте и се свържете с нас";
|
||||
"follow_us" = "Свържете се с нас";
|
||||
|
||||
/* Alert text */
|
||||
"email_error_body" = "Имейл клиентът не е настроен. Моля, конфигурирайте го или използвайте друг начин, за да се свържете с нас на %@";
|
||||
@@ -343,7 +343,7 @@
|
||||
"downloader_downloaded_subtitle" = "Изтеглено";
|
||||
|
||||
/* Downloaded maps category */
|
||||
"downloader_available_maps" = "Available";
|
||||
"downloader_available_maps" = "Налично";
|
||||
|
||||
/* Country queued for download */
|
||||
"downloader_queued" = "На опашка";
|
||||
@@ -353,7 +353,7 @@
|
||||
"downloader_status_maps" = "Карти";
|
||||
"downloader_download_all_button" = "Изтегляне на всичко";
|
||||
"downloader_downloading" = "Теглене:";
|
||||
"downloader_search_results" = "Found";
|
||||
"downloader_search_results" = "Намерено";
|
||||
|
||||
/* Status of outdated country in the list */
|
||||
"downloader_status_outdated" = "Обновление";
|
||||
@@ -476,7 +476,7 @@
|
||||
"routing_arrive" = "Пристигане в %@";
|
||||
|
||||
/* Text for routing::RouterResultCode::FileTooOld dialog. */
|
||||
"dialog_routing_download_and_update_maps" = "Download and update all map along the projected path to calculate route.";
|
||||
"dialog_routing_download_and_update_maps" = "Изтегли и обнови всичи карти заедно с планирания път за изчисляване на маршрута.";
|
||||
"categories" = "Категории";
|
||||
"history" = "История";
|
||||
"search_not_found" = "За съжаление не са намерени резултати.";
|
||||
@@ -526,9 +526,9 @@
|
||||
"day_off_today" = "Затворено днес";
|
||||
"day_off" = "Затворено";
|
||||
"today" = "Днес";
|
||||
"opens_tomorrow_at" = "Opens tomorrow at %@";
|
||||
"opens_dayoftheweek_at" = "Opens %1$@ at %2$@";
|
||||
"opens_at" = "Opens at %@";
|
||||
"opens_tomorrow_at" = "Отваря утре в %@";
|
||||
"opens_dayoftheweek_at" = "Отваря %1$@ в %2$@";
|
||||
"opens_at" = "Отваря в %@";
|
||||
"opens_in" = "Opens in %@";
|
||||
"closes_at" = "Closes at %@";
|
||||
"closes_in" = "Closes in %@";
|
||||
@@ -751,12 +751,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Запазено";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Моля, влезте в OpenStreetMap, за да качвате автоматично всичките си редакции на картата. Научете повече";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "тук";
|
||||
"core_entrance" = "Вход";
|
||||
"error_enter_correct_name" = "Моля, въведете правилно име";
|
||||
"bookmark_lists" = "Списъци";
|
||||
@@ -1091,9 +1085,11 @@
|
||||
"edit_track" = "Редактиране на маршрут";
|
||||
"osm_profile_view_notes" = "Преглед на бележки";
|
||||
"osm_profile_view_edit_history" = "Преглед на историята на промените";
|
||||
"about_headline" = "Open project powered by the community";
|
||||
"about_proposition_3" = "Transparent and not for profit";
|
||||
"pref_mapappearance_title" = "Map Appearance";
|
||||
"pref_maplanguage_title" = "Map Language";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Local Language";
|
||||
"about_headline" = "Отворен проект, захранван от общността";
|
||||
"about_proposition_3" = "Прозрачен и не за печалба";
|
||||
"pref_mapappearance_title" = "Външен вид на картата";
|
||||
"pref_maplanguage_title" = "Език на Картата";
|
||||
"transliteration_title_disabled_summary" = "Изключено при постоянно използване на локален език за картата";
|
||||
"pref_maplanguage_local" = "Локален Език";
|
||||
"existence_confirmed_time_ago" = "Наличие потвърдено%@";
|
||||
"hours_confirmed_time_ago" = "Потвърдено %@";
|
||||
|
||||
@@ -188,6 +188,7 @@
|
||||
"type.amenity.water_point" = "Остановка за пълнене на водни хранилища";
|
||||
"type.amenity.water_point.drinking_water_no" = "Остановка за пълнене на водни хранилища";
|
||||
"type.barrier" = "Бариера";
|
||||
"type.barrier.yes" = "Бариера";
|
||||
"type.barrier.block" = "Блокова преграда";
|
||||
"type.barrier.bollard" = "Колчета";
|
||||
"type.barrier.border_control" = "Гранична остановка";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Станция за рейнджъри";
|
||||
"type.amenity.luggage_locker" = "Шкафче за багаж";
|
||||
"type.amenity.bicycle_parking.covered" = "Покрит паркинг за колела";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
|
||||
@@ -146,8 +146,6 @@
|
||||
"core_entrance" = "Entrance";
|
||||
"bookmarks_import" = "Import Bookmarks and Tracks";
|
||||
"bookmark_lists_hide_all" = "Hide all";
|
||||
"alert_reauth_link_text_ios" = "here";
|
||||
"alert_reauth_message_ios" = "Please login to OpenStreetMap to automatically upload all your map edits. Learn more";
|
||||
"bookmark_lists" = "Lists";
|
||||
"bookmarks_create_new_group" = "Create a new list";
|
||||
"error_enter_correct_name" = "Please enter a correct name";
|
||||
@@ -589,3 +587,5 @@
|
||||
"pref_maplanguage_title" = "Map Language";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Local Language";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -960,6 +960,7 @@
|
||||
"type.leisure.fitness_centre" = "Fitness Centre";
|
||||
"type.junction.circular" = "Roundabout";
|
||||
"type.barrier" = "Barrier";
|
||||
"type.barrier.yes" = "Barrier";
|
||||
"type.railway.station.subway.santiago" = "Subway Station";
|
||||
"type.cuisine.italian" = "Italian";
|
||||
"type.man_made.bridge" = "Bridge";
|
||||
@@ -1295,3 +1296,5 @@
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.amenity.luggage_locker" = "Luggage Locker";
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
|
||||
@@ -751,12 +751,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "S'ha desat";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Si us plau, inicieu sessió a OpenStreetMap per carregar automàticament totes les edicions de mapes. Més informació";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "aquí";
|
||||
"core_entrance" = "Entrada";
|
||||
"error_enter_correct_name" = "Introduïu un nom correcte";
|
||||
"bookmark_lists" = "Llistes";
|
||||
@@ -1097,3 +1091,5 @@
|
||||
"pref_maplanguage_title" = "Map Language";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Local Language";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Punt d’aigua";
|
||||
"type.amenity.water_point.drinking_water_no" = "Punt d’aigua";
|
||||
"type.barrier" = "Barrera";
|
||||
"type.barrier.yes" = "Barrera";
|
||||
"type.barrier.block" = "Bloc";
|
||||
"type.barrier.bollard" = "Bol·lard";
|
||||
"type.barrier.border_control" = "Control fronterer";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
"category_police" = "Policie";
|
||||
|
||||
/* Search category for WiFi access; any changes should be duplicated in categories.txt @category_wifi! */
|
||||
"category_wifi" = "WiFi";
|
||||
"category_wifi" = "Wi-Fi";
|
||||
|
||||
/* Search category for recycling; any changes should be duplicated in categories.txt @category_recycling! */
|
||||
"category_recycling" = "Recyklace";
|
||||
@@ -325,7 +325,7 @@
|
||||
"report_incorrect_map_bug" = "Nahlášení nebo oprava nesprávných mapových dat";
|
||||
|
||||
/* Button in the About screen */
|
||||
"volunteer" = "Dobrovolnictví";
|
||||
"volunteer" = "Staňte se dobrovolníkem a vylepšete CoMaps";
|
||||
|
||||
/* "Social media" section header in the About screen */
|
||||
"follow_us" = "Spojte se s námi";
|
||||
@@ -448,7 +448,7 @@
|
||||
"dialog_routing_disclaimer_beware" = "Na silnici buďte pozorní a chovejte se bezpečně!";
|
||||
"dialog_routing_check_gps" = "Zkontrolovat signál GPS";
|
||||
"dialog_routing_error_location_not_found" = "Trasu se nepodařilo vytvořit. Nelze zjistit aktuální souřadnice GPS.";
|
||||
"dialog_routing_location_turn_wifi" = "Zkontrolujte signál GPS. Povolením připojení WiFi zpřesníte určení vaší polohy.";
|
||||
"dialog_routing_location_turn_wifi" = "Zkontrolujte signál GPS. Povolením připojení Wi-Fi zlepšíte přesnost určování vaší polohy.";
|
||||
"dialog_routing_location_turn_on" = "Povolit služby určování polohy";
|
||||
"dialog_routing_location_unknown_turn_on" = "Aktuální souřadnice GPS se nepodařilo zjistit. Pro výpočet trasy povolte služby určování polohy.";
|
||||
"dialog_routing_download_files" = "Stáhnout požadované soubory";
|
||||
@@ -757,12 +757,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Uloženo";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Přihlaste se do OpenStreetMap, abyste mohli automaticky nahrávat všechny své úpravy mapy. Více informací";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "zde";
|
||||
"core_entrance" = "Vstup";
|
||||
"error_enter_correct_name" = "Zadejte prosím správný název";
|
||||
"bookmark_lists" = "Seznamy";
|
||||
@@ -1101,3 +1095,5 @@
|
||||
"pref_maplanguage_title" = "Jazyk mapy";
|
||||
"transliteration_title_disabled_summary" = "Neaktivní, pokud se pro mapu vždy používá místní jazyk";
|
||||
"pref_maplanguage_local" = "Místní jazyk";
|
||||
"existence_confirmed_time_ago" = "Existence potvrzena %@";
|
||||
"hours_confirmed_time_ago" = "Potvrzeno %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Doplňovací místo vodní nádrže";
|
||||
"type.amenity.water_point.drinking_water_no" = "Doplňovací místo vodní nádrže";
|
||||
"type.barrier" = "Bariéra";
|
||||
"type.barrier.yes" = "Bariéra";
|
||||
"type.barrier.block" = "Blok";
|
||||
"type.barrier.bollard" = "Sloupek";
|
||||
"type.barrier.border_control" = "Pohraniční kontrola";
|
||||
@@ -280,7 +281,7 @@
|
||||
"type.cuisine.beef_bowl" = "Miska hovězího";
|
||||
"type.cuisine.brazilian" = "Brazilská kuchyně";
|
||||
"type.cuisine.breakfast" = "Snídaně";
|
||||
"type.cuisine.bubble_tea" = "Bubble Tea";
|
||||
"type.cuisine.bubble_tea" = "Bublinkový čaj";
|
||||
"type.cuisine.burger" = "Burger";
|
||||
"type.cuisine.buschenschank" = "Buschenschank";
|
||||
"type.cuisine.cake" = "Dort";
|
||||
@@ -1461,7 +1462,7 @@
|
||||
/* https://wiki.openstreetmap.org/wiki/Tag:leisure=sports_hall */
|
||||
"type.leisure.sports_hall" = "Sportovní hala";
|
||||
"type.amenity.studio" = "Studio";
|
||||
"type.amenity.love_hotel" = "Love Hotel";
|
||||
"type.amenity.love_hotel" = "Hodinový hotel";
|
||||
"type.highway.ladder" = "Žebřík";
|
||||
"type.barrier.guard_rail" = "Svodidla";
|
||||
"type.landuse.plant_nursery" = "Pěstitelská školka";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Správci parku";
|
||||
"type.amenity.bicycle_parking.covered" = "Kryté parkování kol";
|
||||
"type.post_office.post_partner" = "Poštovní partner";
|
||||
"type.amenity.animal_shelter" = "Útulek pro zvířata";
|
||||
"type.barrier.wicket_gate" = "Branka";
|
||||
|
||||
@@ -193,7 +193,6 @@
|
||||
"planning_route_remove_title" = "Drag here to remove";
|
||||
"p2p_your_location" = "Eich Lleoliad";
|
||||
"category_transport" = "Trafnidiaeth";
|
||||
"alert_reauth_link_text_ios" = "here";
|
||||
"text_more_button" = "…more";
|
||||
"downloader_of" = "%1$d o %2$d";
|
||||
"mobile_data_option_ask" = "Gofyn Bob Amser";
|
||||
@@ -256,7 +255,6 @@
|
||||
"pref_appearance_light" = "Golau";
|
||||
"dialog_routing_change_end" = "Addasu cylchfan";
|
||||
"planning_route_manage_route" = "Rheoli Llwybr";
|
||||
"alert_reauth_message_ios" = "Please login to OpenStreetMap to automatically upload all your map edits. Learn more";
|
||||
"place_name" = "Enw Lle";
|
||||
"navigation_stop_button" = "Stopio";
|
||||
"load_kmz_successful" = "Bookmarks loaded successfully! You can find them on the map or on the Bookmarks Manager screen.";
|
||||
@@ -589,3 +587,5 @@
|
||||
"thank_you" = "Diolch";
|
||||
"yes_available" = "Ie";
|
||||
"osm_profile_reauthorize" = "Reconnect with OpenStreetMap";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"type.natural.water.wastewater" = "Wastewater";
|
||||
"type.barrier.bollard" = "Bollard";
|
||||
"type.barrier" = "Barrier";
|
||||
"type.barrier.yes" = "Barrier";
|
||||
"type.barrier.chain" = "Chain";
|
||||
"type.amenity.water_point.drinking_water_no" = "Water Tank Refill Point";
|
||||
"type.barrier.stile" = "Stile";
|
||||
@@ -1295,3 +1296,5 @@
|
||||
"type.place.city" = "City";
|
||||
"type.amenity.parking_entrance.permissive" = "Parking Entrance";
|
||||
"type.cuisine.italian_pizza" = "Italian, Pizza";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
|
||||
@@ -754,12 +754,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Gemt";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Log ind på OpenStreetMap for automatisk at uploade alle dine kortredigeringer. Få mere at vide";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "her";
|
||||
"core_entrance" = "Indgang";
|
||||
"error_enter_correct_name" = "Angiv et korrekt navn";
|
||||
"bookmark_lists" = "Lister";
|
||||
@@ -1099,3 +1093,5 @@
|
||||
"pref_maplanguage_title" = "Kortsprog";
|
||||
"transliteration_title_disabled_summary" = "Deaktiveret, når det lokale sprog altid bruges til kortet";
|
||||
"pref_maplanguage_local" = "Lokalt sprog";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Vandpost";
|
||||
"type.amenity.water_point.drinking_water_no" = "Vandstation";
|
||||
"type.barrier" = "Barriere";
|
||||
"type.barrier.yes" = "Barriere";
|
||||
"type.barrier.block" = "Blokering";
|
||||
"type.barrier.bollard" = "Pullert";
|
||||
"type.barrier.border_control" = "Grænsekontrol";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.post_office.post_partner" = "Postpartner";
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Overdækket cykelparkering";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
|
||||
@@ -325,7 +325,7 @@
|
||||
"report_incorrect_map_bug" = "Falsche Kartendaten melden oder korrigieren";
|
||||
|
||||
/* Button in the About screen */
|
||||
"volunteer" = "Freiwillig helfen";
|
||||
"volunteer" = "Freiwillig helfen und CoMaps verbessern";
|
||||
|
||||
/* "Social media" section header in the About screen */
|
||||
"follow_us" = "Bleib in Kontakt";
|
||||
@@ -759,12 +759,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Gespeichert";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Bitte melde dich bei OpenStreetMap an, um alle deine Kartenbearbeitungen automatisch hochzuladen. Erfahre mehr";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "hier";
|
||||
"core_entrance" = "Eingang";
|
||||
"error_enter_correct_name" = "Bitte geben Sie einen korrekten Namen ein";
|
||||
"bookmark_lists" = "Listen";
|
||||
@@ -1101,3 +1095,5 @@
|
||||
"pref_maplanguage_title" = "Kartensprache";
|
||||
"transliteration_title_disabled_summary" = "Bei der Nutzung der lokalen Sprache für die Karte ausgeschaltet";
|
||||
"pref_maplanguage_local" = "Lokale Sprache";
|
||||
"existence_confirmed_time_ago" = "Existenz bestätigt %@";
|
||||
"hours_confirmed_time_ago" = "Bestätigt %@";
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
"type.amenity.fast_food" = "Fast-Food";
|
||||
"type.amenity.ferry_terminal" = "Fähranleger";
|
||||
"type.amenity.fire_station" = "Feuerwehr";
|
||||
"type.amenity.food_court" = "Food Court";
|
||||
"type.amenity.food_court" = "Gastronomiebereich";
|
||||
"type.amenity.fountain" = "Springbrunnen";
|
||||
"type.amenity.fuel" = "Tankstelle";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Wasseranschluss";
|
||||
"type.amenity.water_point.drinking_water_no" = "Wasseranschluss";
|
||||
"type.barrier" = "Barriere";
|
||||
"type.barrier.yes" = "Barriere";
|
||||
"type.barrier.block" = "Block";
|
||||
"type.barrier.bollard" = "Poller";
|
||||
"type.barrier.border_control" = "Grenzkontrolle";
|
||||
@@ -790,7 +791,7 @@
|
||||
"type.natural.water.lake" = "See";
|
||||
"type.natural.water.lock" = "Schleusenkammer";
|
||||
"type.natural.water.pond" = "Teich";
|
||||
"type.natural.water.reservoir" = "Reservoir";
|
||||
"type.natural.water.reservoir" = "Stausee";
|
||||
"type.natural.water.basin" = "Wasserbecken";
|
||||
"type.natural.water.river" = "Fluss";
|
||||
"type.natural.land" = "Land";
|
||||
@@ -1333,7 +1334,7 @@
|
||||
"type.sport.tennis" = "Tennisplatz";
|
||||
"type.sport.volleyball" = "Volleyball";
|
||||
"type.sport.10pin" = "Bowling";
|
||||
"type.sport.9pin" = "Bowling";
|
||||
"type.sport.9pin" = "Kegeln";
|
||||
"type.sport.padel" = "Padel";
|
||||
"type.sport.futsal" = "Futsal";
|
||||
"type.sport.ice_hockey" = "Eishockey";
|
||||
@@ -1380,7 +1381,7 @@
|
||||
"type.tourism.motel" = "Motel";
|
||||
"type.tourism.museum" = "Museum";
|
||||
"type.tourism.picnic_site" = "Picknickplatz";
|
||||
"type.leisure.resort" = "Resort";
|
||||
"type.leisure.resort" = "Freizeitanlage";
|
||||
"type.tourism.theme_park" = "Freizeitpark";
|
||||
"type.tourism.viewpoint" = "Aussichtspunkt";
|
||||
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Försterstation";
|
||||
"type.amenity.bicycle_parking.covered" = "Überdachter Fahrradparkplatz";
|
||||
"type.post_office.post_partner" = "Postpartner";
|
||||
"type.barrier.wicket_gate" = "Schlupfpforte";
|
||||
"type.amenity.animal_shelter" = "Tierheim";
|
||||
|
||||
@@ -751,12 +751,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Αποθηκεύτηκε";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Παρακαλούμε συνδεθείτε στο OpenStreetMap για να ανεβάσετε αυτόματα όλες τις επεξεργασίες του χάρτη σας. Μάθετε περισσότερα";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "εδώ";
|
||||
"core_entrance" = "Είσοδος";
|
||||
"error_enter_correct_name" = "Εισάγετε ένα σωστό όνομα";
|
||||
"bookmark_lists" = "Λίστες";
|
||||
@@ -1097,3 +1091,5 @@
|
||||
"pref_maplanguage_title" = "Γλώσσα χάρτη";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Τοπική γλώσσα";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Παροχή νερού";
|
||||
"type.amenity.water_point.drinking_water_no" = "Παροχή νερού";
|
||||
"type.barrier" = "Εμπόδιο";
|
||||
"type.barrier.yes" = "Εμπόδιο";
|
||||
"type.barrier.block" = "Εμπόδιο";
|
||||
"type.barrier.bollard" = "Πυλώνας";
|
||||
"type.barrier.border_control" = "Έλεγχος συνόρων";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
|
||||
@@ -533,6 +533,10 @@
|
||||
"editor_report_problem_send_button" = "Send";
|
||||
"autodownload" = "Auto-download maps";
|
||||
|
||||
/* Place page confirmation messages and time ago formatting */
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
/* Place Page opening hours text */
|
||||
"closed_now" = "Closed now";
|
||||
|
||||
@@ -777,12 +781,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Saved";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Please login to OpenStreetMap to automatically upload all your map edits. Learn more";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "here";
|
||||
"core_entrance" = "Entrance";
|
||||
"error_enter_correct_name" = "Please enter a correct name";
|
||||
"bookmark_lists" = "Lists";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Water Tank Refill Point";
|
||||
"type.amenity.water_point.drinking_water_no" = "Water Tank Refill Point";
|
||||
"type.barrier" = "Barrier";
|
||||
"type.barrier.yes" = "Barrier";
|
||||
"type.barrier.block" = "Block";
|
||||
"type.barrier.bollard" = "Bollard";
|
||||
"type.barrier.border_control" = "Border Control";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
|
||||
@@ -346,7 +346,7 @@
|
||||
"report_incorrect_map_bug" = "Report or fix incorrect map data";
|
||||
|
||||
/* Button in the About screen */
|
||||
"volunteer" = "Volunteer";
|
||||
"volunteer" = "Volunteer and improve CoMaps";
|
||||
|
||||
/* "Social media" section header in the About screen */
|
||||
"follow_us" = "Connect with us";
|
||||
@@ -552,6 +552,12 @@
|
||||
"editor_report_problem_send_button" = "Send";
|
||||
"autodownload" = "Auto-download maps";
|
||||
|
||||
|
||||
|
||||
/* Place page confirmation messages and time ago formatting */
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
/* Place Page opening hours text */
|
||||
"closed_now" = "Closed now";
|
||||
|
||||
@@ -797,11 +803,6 @@
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Saved";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Please login to OpenStreetMap to automatically upload all your map edits. Learn more";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "here";
|
||||
"core_entrance" = "Entrance";
|
||||
"error_enter_correct_name" = "Please enter a correct name";
|
||||
"bookmark_lists" = "Lists";
|
||||
|
||||
@@ -197,12 +197,14 @@
|
||||
"type.amenity.vehicle_inspection" = "Vehicle Inspection";
|
||||
"type.amenity.vending_machine.fuel" = "Fuel Pump";
|
||||
"type.amenity.veterinary" = "Veterinary Doctor";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
"type.amenity.waste_basket" = "Trash Bin";
|
||||
"type.amenity.waste_disposal" = "Dumpster";
|
||||
"type.amenity.waste_transfer_station" = "Waste Transfer Station";
|
||||
"type.amenity.water_point" = "Water Tank Refill Point";
|
||||
"type.amenity.water_point.drinking_water_no" = "Water Tank Refill Point";
|
||||
"type.barrier" = "Barrier";
|
||||
"type.barrier.yes" = "Barrier";
|
||||
"type.barrier.block" = "Block";
|
||||
"type.barrier.bollard" = "Bollard";
|
||||
"type.barrier.border_control" = "Border Control";
|
||||
@@ -222,6 +224,7 @@
|
||||
"type.barrier.retaining_wall" = "Retaining Wall";
|
||||
"type.barrier.stile" = "Stile";
|
||||
"type.barrier.turnstile" = "Turnstile";
|
||||
"type.barrier.wicket_gate" = "Wicket Gate";
|
||||
"type.barrier.swing_gate" = "Swing Gate";
|
||||
"type.barrier.toll_booth" = "Toll Booth";
|
||||
"type.barrier.wall" = "Wall";
|
||||
|
||||
@@ -754,12 +754,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Guardado";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Inicie sesión en OpenStreetMap para cargar automáticamente todas las ediciones de su mapa. Obtenga más información";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "aquí";
|
||||
"core_entrance" = "Entrada";
|
||||
"error_enter_correct_name" = "Introduzca el nombre correcto";
|
||||
"bookmark_lists" = "Listas";
|
||||
@@ -1101,3 +1095,5 @@
|
||||
"pref_maplanguage_title" = "Map Language";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Local Language";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Fuente de agua para caravanas";
|
||||
"type.amenity.water_point.drinking_water_no" = "Fuente de agua para caravanas";
|
||||
"type.barrier" = "Barrera";
|
||||
"type.barrier.yes" = "Barrera";
|
||||
"type.barrier.block" = "Bloque";
|
||||
"type.barrier.bollard" = "Bolardo";
|
||||
"type.barrier.border_control" = "Control fronterizo";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
|
||||
@@ -527,7 +527,7 @@
|
||||
"closed_now" = "Cerrado ahora";
|
||||
|
||||
/* Place Page opening hours text */
|
||||
"daily" = "Diario";
|
||||
"daily" = "Diariamente";
|
||||
"twentyfour_seven" = "24/7";
|
||||
"day_off_today" = "Cerrado hoy";
|
||||
"day_off" = "Cerrado";
|
||||
@@ -717,7 +717,7 @@
|
||||
"accept" = "Aceptar";
|
||||
|
||||
/* For the first routing */
|
||||
"decline" = "Declinar";
|
||||
"decline" = "Rechazar";
|
||||
"mobile_data_dialog" = "¿Usar Internet móvil para mostrar información detallada?";
|
||||
"mobile_data_option_always" = "Usar siempre";
|
||||
"mobile_data_option_today" = "Sólo hoy";
|
||||
@@ -757,14 +757,8 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Guardado";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Inicia sesión en OpenStreetMap para cargar automáticamente todas tus ediciones de mapas. Más información";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "aquí";
|
||||
"core_entrance" = "Entrada";
|
||||
"error_enter_correct_name" = "Por favor, introduzca el nombre correcto";
|
||||
"error_enter_correct_name" = "Por favor, introduce un nombre válido";
|
||||
"bookmark_lists" = "Listas";
|
||||
|
||||
/* Do not display all bookmark lists on the map */
|
||||
@@ -903,10 +897,10 @@
|
||||
"mountains" = "Montañas";
|
||||
"animals" = "Animales";
|
||||
"hotels" = "Hoteles";
|
||||
"buildings" = "Edificios";
|
||||
"buildings" = "Edificaciones";
|
||||
"money" = "Dinero";
|
||||
"shops" = "Tiendas";
|
||||
"parkings" = "Estacionamiento";
|
||||
"parkings" = "Aparcamiento";
|
||||
"fuel_places" = "Gasolineras";
|
||||
"medicine" = "Medicina";
|
||||
"search_in_the_list" = "Buscar en la lista";
|
||||
@@ -963,37 +957,37 @@
|
||||
"app_tip_00" = "¡Gracias por utilizar nuestros mapas creados por la comunidad!";
|
||||
|
||||
/* App tip #01 */
|
||||
"app_tip_01" = "¡Con sus donaciones y apoyo, podemos crear los mejores mapas del mundo!";
|
||||
"app_tip_01" = "¡Con tus donaciones y apoyo, podemos crear los mejores mapas del mundo!";
|
||||
|
||||
/* App tip #02 */
|
||||
"app_tip_02" = "¿Le gusta nuestra aplicación? ¡Por favor done para apoyar su desarrollo! ¿Todavía no le gusta? ¡Díganos por qué y lo arreglaremos!";
|
||||
"app_tip_02" = "¿Te gusta nuestra aplicación? ¡Por favor dona para apoyar su desarrollo! ¿Todavía no te gusta? ¡Dinos por qué y lo arreglaremos!";
|
||||
|
||||
/* App tip #03 */
|
||||
"app_tip_03" = "Si conoce a algún desarrollador o desarrolladora de software, le puede pedir que implemente alguna funcionalidad que usted necesite.";
|
||||
|
||||
/* App tip #04 */
|
||||
"app_tip_04" = "Toque en cualquier lugar del mapa para seleccionar cualquier elemento. Mantenga pulsado para ocultar y volver a mostrar la interfaz.";
|
||||
"app_tip_04" = "Toca en cualquier lugar del mapa para seleccionar cualquier elemento. Manten pulsado para ocultar y volver a mostrar la interfaz.";
|
||||
|
||||
/* App tip #05 */
|
||||
"app_tip_05" = "¿Sabía que su ubicación actual en el mapa se puede seleccionar?";
|
||||
"app_tip_05" = "¿Sabías que tu ubicación actual en el mapa se puede seleccionar?";
|
||||
|
||||
/* App tip #06 */
|
||||
"app_tip_06" = "Puede ayudar a traducir nuestra aplicación a su idioma.";
|
||||
"app_tip_06" = "Puedes ayudar a traducir nuestra aplicación a tu idioma.";
|
||||
|
||||
/* App tip #07 */
|
||||
"app_tip_07" = "Nuestra aplicación está desarrollada por unos pocos entusiastas y la comunidad.";
|
||||
|
||||
/* App tip #08 */
|
||||
"app_tip_08" = "Puede arreglar y mejorar fácilmente los datos del mapa.";
|
||||
"app_tip_08" = "Puedes arreglar y mejorar fácilmente los datos del mapa.";
|
||||
|
||||
/* App tip #09 */
|
||||
"app_tip_09" = "Nuestro principal objetivo es crear mapas rápidos, centrados en la privacidad y fáciles de utilizar que le encantarán.";
|
||||
"app_tip_09" = "Nuestro principal objetivo es crear mapas rápidos, centrados en la privacidad y fáciles de utilizar, que te encantarán.";
|
||||
|
||||
/* Text on the Android Auto or CarPlay placeholder screen that maps are displayed on the phone screen */
|
||||
"car_used_on_the_phone_screen" = "Ahora usa CoMaps en la pantalla del teléfono";
|
||||
"car_used_on_the_phone_screen" = "Ahora estás usando CoMaps en la pantalla del teléfono";
|
||||
|
||||
/* Text on the phone placeholder screen that maps are displayed on the car screen */
|
||||
"car_used_on_the_car_screen" = "Ahora usa CoMaps en la pantalla del coche";
|
||||
"car_used_on_the_car_screen" = "Ahora estás usando CoMaps en la pantalla del coche";
|
||||
|
||||
/* Displayed on the phone screen. Button to display maps on the phone screen instead of a car */
|
||||
"car_continue_on_the_phone" = "Pasar al teléfono";
|
||||
@@ -1005,7 +999,7 @@
|
||||
"button_layer_outdoor" = "Senderismo";
|
||||
|
||||
/* Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks */
|
||||
"bookmarks_export" = "Exportar todos los marcadores y trayectos";
|
||||
"bookmarks_export" = "Exportar todos los marcadores y trazas";
|
||||
|
||||
/* Text for the editing the Track's color button. */
|
||||
"change_color" = "Cambiar color";
|
||||
@@ -1101,3 +1095,5 @@
|
||||
"pref_maplanguage_title" = "Idioma del mapa";
|
||||
"transliteration_title_disabled_summary" = "Deshabilitado cuando siempre se usa el idioma local para el mapa";
|
||||
"pref_maplanguage_local" = "Idioma local";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Fuente de agua para caravanas";
|
||||
"type.amenity.water_point.drinking_water_no" = "Fuente de agua para caravanas";
|
||||
"type.barrier" = "Barrera";
|
||||
"type.barrier.yes" = "Barrera";
|
||||
"type.barrier.block" = "Bloque";
|
||||
"type.barrier.bollard" = "Bolardo";
|
||||
"type.barrier.border_control" = "Control fronterizo";
|
||||
@@ -329,19 +330,19 @@
|
||||
"type.cuisine.noodles" = "Fideos";
|
||||
"type.cuisine.oriental" = "Oriental";
|
||||
"type.cuisine.pancake" = "Tortitas";
|
||||
"type.cuisine.pasta" = "Pastas";
|
||||
"type.cuisine.pasta" = "Pasta";
|
||||
"type.cuisine.persian" = "Persa";
|
||||
"type.cuisine.peruvian" = "Peruana";
|
||||
"type.cuisine.pizza" = "Pizzas";
|
||||
"type.cuisine.polish" = "Polaca";
|
||||
"type.cuisine.portuguese" = "Portuguesa";
|
||||
"type.cuisine.ramen" = "Ramen";
|
||||
"type.cuisine.regional" = "Cocina regional";
|
||||
"type.cuisine.regional" = "Regional";
|
||||
"type.cuisine.russian" = "Rusa";
|
||||
"type.cuisine.sandwich" = "Sándwiches";
|
||||
"type.cuisine.sausage" = "Salchichas";
|
||||
"type.cuisine.savory_pancakes" = "Tortitas saladas";
|
||||
"type.cuisine.seafood" = "Mariscos";
|
||||
"type.cuisine.seafood" = "del mar";
|
||||
"type.cuisine.soba" = "Soba";
|
||||
"type.cuisine.spanish" = "Española";
|
||||
"type.cuisine.steak_house" = "Asador";
|
||||
@@ -384,11 +385,11 @@
|
||||
"type.healthcare.sample_collection" = "Muestreo";
|
||||
"type.healthcare.speech_therapist" = "Logopedia";
|
||||
"type.highway" = "Carretera";
|
||||
"type.highway.bridleway" = "Camino de caballos";
|
||||
"type.highway.bridleway" = "Camino ecuestre";
|
||||
|
||||
/* These translations are used for all type.highway.*.bridge. */
|
||||
"type.highway.bridleway.bridge" = "Puente";
|
||||
"type.highway.bridleway.permissive" = "Camino de caballos";
|
||||
"type.highway.bridleway.permissive" = "Camino ecuestre";
|
||||
|
||||
/* These translations are used for all type.highway.*.tunnel. */
|
||||
"type.highway.bridleway.tunnel" = "Túnel";
|
||||
@@ -399,7 +400,7 @@
|
||||
|
||||
/* These translations are used for all type.highway.*.tunnel. */
|
||||
"type.highway.busway.tunnel" = "Túnel";
|
||||
"type.highway.bus_stop" = "Parada de autobús";
|
||||
"type.highway.bus_stop" = "Parada de bus";
|
||||
"type.highway.construction" = "Vía en construcción";
|
||||
"type.highway.cycleway" = "Ciclovía";
|
||||
|
||||
@@ -473,7 +474,7 @@
|
||||
"type.highway.primary.bridge" = "Puente";
|
||||
|
||||
/* These translations are used for all type.highway.*.tunnel. */
|
||||
"type.highway.primary.tunnel" = "Túnel de carretera principal";
|
||||
"type.highway.primary.tunnel" = "Túnel";
|
||||
"type.highway.primary_link" = "Enlace de carretera principal";
|
||||
|
||||
/* These translations are used for all type.highway.*.bridge. */
|
||||
@@ -664,7 +665,7 @@
|
||||
"type.landuse.farmland" = "Tierras agrícolas";
|
||||
"type.landuse.farmyard" = "Granja";
|
||||
"type.landuse.field" = "Campo";
|
||||
"type.landuse.flowerbed" = "Cama de flores";
|
||||
"type.landuse.flowerbed" = "Parterre";
|
||||
"type.landuse.forest" = "Bosque";
|
||||
"type.landuse.forest.coniferous" = "Bosque de coníferas";
|
||||
"type.landuse.forest.deciduous" = "Bosque caducifolio";
|
||||
@@ -863,18 +864,18 @@
|
||||
"type.power.generator" = "Generador";
|
||||
"type.power.generator.solar" = "Generador solar";
|
||||
"type.power.generator.wind" = "Generador de viento";
|
||||
"type.power.generator.gas" = "Planta de energía de turbina de gas";
|
||||
"type.power.generator.hydro" = "Planta de energía hidroeléctrica";
|
||||
"type.power.generator.gas" = "Planta termoeléctrica de gas";
|
||||
"type.power.generator.hydro" = "Planta hidroeléctrica";
|
||||
"type.power.line" = "Línea eléctrica";
|
||||
"type.power.line.underground" = "Línea eléctrica subterránea";
|
||||
"type.power.minor_line" = "Línea eléctrica de baja tensión";
|
||||
"type.power.plant" = "Planta de energía";
|
||||
"type.power.minor_line" = "Línea eléctrica menor";
|
||||
"type.power.plant" = "Planta eléctrica";
|
||||
"type.power.plant.coal" = "Central eléctrica de carbón";
|
||||
"type.power.plant.gas" = "Planta de energía de turbina de gas";
|
||||
"type.power.plant.hydro" = "Planta de energía hidroeléctrica";
|
||||
"type.power.plant.gas" = "Planta termoeléctrica de gas";
|
||||
"type.power.plant.hydro" = "Planta hidroeléctrica";
|
||||
"type.power.plant.solar" = "Planta de energía solar";
|
||||
"type.power.plant.wind" = "Planta eólica";
|
||||
"type.power.substation" = "Subestación eléctrica";
|
||||
"type.power.substation" = "Subestación";
|
||||
|
||||
/* A tower or pylon carrying high voltage electricity cables. */
|
||||
"type.power.tower" = "Torre eléctrica";
|
||||
@@ -901,13 +902,13 @@
|
||||
"type.railway.light_rail" = "Tren ligero";
|
||||
"type.railway.light_rail.bridge" = "Puente de tren ligero";
|
||||
"type.railway.light_rail.tunnel" = "Túnel de tren ligero";
|
||||
"type.railway.monorail" = "Monorraíl";
|
||||
"type.railway.monorail.bridge" = "Puente de monorraíl";
|
||||
"type.railway.monorail.tunnel" = "Túnel de monorraíl";
|
||||
"type.railway.monorail" = "Monorriel";
|
||||
"type.railway.monorail.bridge" = "Puente de monorriel";
|
||||
"type.railway.monorail.tunnel" = "Túnel de monorriel";
|
||||
"type.railway.narrow_gauge" = "Vía férrea estrecha";
|
||||
"type.railway.narrow_gauge.bridge" = "Puente de vía férrea estrecha";
|
||||
"type.railway.narrow_gauge.tunnel" = "Túnel de vía férrea estrecha";
|
||||
"type.railway.platform" = "Plataforma de vía férrea";
|
||||
"type.railway.platform" = "Plataforma ferroviaria";
|
||||
"type.railway.preserved" = "Raíl conservado";
|
||||
"type.railway.preserved.bridge" = "Puente ferroviario conservado";
|
||||
"type.railway.preserved.tunnel" = "Túnel ferroviario conservado";
|
||||
@@ -1245,7 +1246,7 @@
|
||||
"type.shop.mobile_phone" = "Tienda de Móviles";
|
||||
"type.shop.money_lender" = "Prestamista";
|
||||
"type.shop.motorcycle" = "Tienda de motos";
|
||||
"type.shop.motorcycle_repair" = "Reparación de motos";
|
||||
"type.shop.motorcycle_repair" = "Taller de motos";
|
||||
"type.shop.music" = "Tienda de discos";
|
||||
"type.shop.musical_instrument" = "Instrumentos musicales";
|
||||
"type.shop.newsagent" = "Puesto de venta de periódicos";
|
||||
@@ -1263,7 +1264,7 @@
|
||||
"type.shop.seafood" = "Pescadería";
|
||||
"type.shop.second_hand" = "Tienda de segunda mano";
|
||||
"type.shop.shoes" = "Zapatería";
|
||||
"type.shop.sports" = "Artículos de deporte";
|
||||
"type.shop.sports" = "Tienda deportiva";
|
||||
"type.shop.stationery" = "Papelería";
|
||||
"type.shop.supermarket" = "Supermercado";
|
||||
"type.shop.tattoo" = "Estudio de tatuajes";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.luggage_locker" = "Casillero de maletas";
|
||||
"type.amenity.ranger_station" = "Estación de guardabosques";
|
||||
"type.amenity.bicycle_parking.covered" = "Parking de bici cubierto";
|
||||
"type.amenity.animal_shelter" = "Refugio de animales";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
|
||||
@@ -322,7 +322,7 @@
|
||||
"report_incorrect_map_bug" = "Paranda vigaseid kaardiandmeid või teata neist";
|
||||
|
||||
/* Button in the About screen */
|
||||
"volunteer" = "Vabatahtlik kaastöö";
|
||||
"volunteer" = "Osale ühistöös CoMapsi täiendamisel";
|
||||
|
||||
/* "Social media" section header in the About screen */
|
||||
"follow_us" = "Suhtle meiega";
|
||||
@@ -755,12 +755,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Salvestatud";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Oma kaardimuudatuste automaatseks üleslaadimiseks palun logi sisse OpenStreetMappi. Lisateave";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "kuskil siin";
|
||||
"core_entrance" = "Sissepääs";
|
||||
"error_enter_correct_name" = "Palun sisesta korrektne nimi";
|
||||
"bookmark_lists" = "Loendid";
|
||||
@@ -1099,3 +1093,5 @@
|
||||
"pref_maplanguage_title" = "Kaardi keel";
|
||||
"transliteration_title_disabled_summary" = "Kui kaardil on alati kasutusel kohalik keel, siis see eelistus on välja lülitatud";
|
||||
"pref_maplanguage_local" = "Kohalik keel";
|
||||
"existence_confirmed_time_ago" = "Olemasolu on kontrollitud %@";
|
||||
"hours_confirmed_time_ago" = "Kontrollitud %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Joogivee tankimispunkt";
|
||||
"type.amenity.water_point.drinking_water_no" = "Joogivee tankimispunkt";
|
||||
"type.barrier" = "Barjäär";
|
||||
"type.barrier.yes" = "Barjäär";
|
||||
"type.barrier.block" = "Kiviplokk";
|
||||
"type.barrier.bollard" = "Piirdetulp";
|
||||
"type.barrier.border_control" = "Piirikontroll";
|
||||
@@ -304,10 +305,10 @@
|
||||
"type.cuisine.georgian" = "Gruusia";
|
||||
"type.cuisine.german" = "Saksa";
|
||||
"type.cuisine.greek" = "Kreeka";
|
||||
"type.cuisine.grill" = "Grill";
|
||||
"type.cuisine.grill" = "Grillroad";
|
||||
"type.cuisine.heuriger" = "Austria hooajaline veinikõrts (heuriger)";
|
||||
"type.cuisine.hotdog" = "Viinersai";
|
||||
"type.cuisine.hungarian" = "Ungari";
|
||||
"type.cuisine.hungarian" = "Ungari köök";
|
||||
"type.cuisine.ice_cream" = "Jäätis";
|
||||
"type.cuisine.indian" = "India";
|
||||
"type.cuisine.indonesian" = "Indoneesia";
|
||||
@@ -329,7 +330,7 @@
|
||||
"type.cuisine.noodles" = "Nuudliroad";
|
||||
"type.cuisine.oriental" = "Kaug-Ida";
|
||||
"type.cuisine.pancake" = "Pannkoogid";
|
||||
"type.cuisine.pasta" = "Pasta";
|
||||
"type.cuisine.pasta" = "Pastaroad";
|
||||
"type.cuisine.persian" = "Pärsia";
|
||||
"type.cuisine.peruvian" = "Peruu köök";
|
||||
"type.cuisine.pizza" = "Pitsa";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Pargivahi maja";
|
||||
"type.amenity.luggage_locker" = "Pagasihoid";
|
||||
"type.post_office.post_partner" = "Postiteenused partneri juures";
|
||||
"type.barrier.wicket_gate" = "Jalgvärav";
|
||||
"type.amenity.animal_shelter" = "Loomade varjupaik";
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
"search" = "Bilatu";
|
||||
|
||||
/* Used in home screen quick actions. */
|
||||
"bookmarks_and_tracks" = "Markagailuak eta ibilbideak";
|
||||
"bookmarks_and_tracks" = "Markagailuak eta arrastoak";
|
||||
|
||||
/* Used in home screen quick actions. */
|
||||
"route" = "Ibilbidea";
|
||||
|
||||
/* Needed to explain why we always require access to GPS coordinates, and not only when the app is active. */
|
||||
"NSLocationAlwaysUsageDescription" = "Beharrezkoa da inguruneko egungo kokapena definitzea aplikazioaren funtzionaltasunaz guztiz gozatzeko. Ibilbidea jarraitu eta duela gutxi egindako bidea gordetzeko aukeretan erabiltzen da.";
|
||||
"NSLocationAlwaysUsageDescription" = "Beharrezkoa da inguruneko egungo kokapena definitzea aplikazioaren funtzionaltasunaz guztiz gozatzeko. Ibilbidea jarraitu eta duela gutxi egindako arrastoa gordetzeko aukeretan erabiltzen da.";
|
||||
|
||||
/* Needed to explain why we require access to GPS coordinates when the app is active. */
|
||||
"NSLocationWhenInUseUsageDescription" = "Uneko kokapenaren definizioa ibilbidea jarraitu eta duela gutxi egindako bidea gordetzeko aukeretan erabiltzen da.";
|
||||
"NSLocationWhenInUseUsageDescription" = "Uneko kokapenaren definizioa ibilbidea jarraitu eta duela gutxi egindako arrastoa gordetzeko aukeretan erabiltzen da.";
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
"bookmarks" = "Markagailuak";
|
||||
|
||||
/* "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt */
|
||||
"bookmarks_and_tracks" = "Markagailuak eta ibilbideak";
|
||||
"bookmarks_and_tracks" = "Markagailuak eta arrastoak";
|
||||
|
||||
/* Default bookmark list name */
|
||||
"core_my_places" = "Nire tokiak";
|
||||
@@ -195,7 +195,7 @@
|
||||
"version: %@ (%@)\nmap data: %@" = "Bertsioa: %@ (%@)\nMaparen datuak: %@";
|
||||
|
||||
/* Title for tracks category in bookmarks manager */
|
||||
"tracks_title" = "Arrasto";
|
||||
"tracks_title" = "Arrastoak";
|
||||
|
||||
/* Length of track in cell that describes route */
|
||||
"length" = "Luzera";
|
||||
@@ -250,7 +250,7 @@
|
||||
"pref_tts_language_title" = "Ahots hizkuntza";
|
||||
|
||||
/* Settings «Route» category: «Test Voice Directions» title */
|
||||
"pref_tts_test_voice_title" = "Probatu ahots bidezko jarraibideak (TTS, Text-To-Speech)";
|
||||
"pref_tts_test_voice_title" = "Probatu ahots bidezko jarraibideak";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Beste batzuk";
|
||||
@@ -325,7 +325,7 @@
|
||||
"volunteer" = "Boluntario izateko";
|
||||
|
||||
/* "Social media" section header in the About screen */
|
||||
"follow_us" = "Jarraitu eta jarri gurekin harremanetan";
|
||||
"follow_us" = "Jarri gurekin harremanetan";
|
||||
|
||||
/* Alert text */
|
||||
"email_error_body" = "Posta elektronikoko bezeroa ez da konfiguratu. Mesedez, konfigura ezazu edo erabili beste moduren bat gurekin harremanetan jartzeko %@ helbidean";
|
||||
@@ -754,12 +754,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Gordeta";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Hasi saioa OpenStreetMap-en zure mapen aldaketa guztiak automatikoki kargatzeko. Lortu informazio gehiago";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "hemen";
|
||||
"core_entrance" = "Sarrera";
|
||||
"error_enter_correct_name" = "Mesedez, idatzi baliozko izen bat";
|
||||
"bookmark_lists" = "Zerrendak";
|
||||
@@ -770,7 +764,7 @@
|
||||
"bookmarks_create_new_group" = "Sortu zerrenda berria";
|
||||
|
||||
/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */
|
||||
"bookmarks_import" = "Inportatu markagailuak eta ibilbideak";
|
||||
"bookmarks_import" = "Inportatu markagailuak eta arrastoak";
|
||||
"downloader_hide_screen" = "Ezkutatu pantaila";
|
||||
"downloader_percent" = "%@ (%@/%@)";
|
||||
"downloader_process" = "%@ deskargatzen…";
|
||||
@@ -942,7 +936,7 @@
|
||||
"placepage_delete_track_button" = "Ezabatu arrastoa";
|
||||
|
||||
/* The track deletion confirmaion alert message. */
|
||||
"placepage_delete_track_confirmation_alert_message" = "Ziur pista hau ezabatu nahi duzula?";
|
||||
"placepage_delete_track_confirmation_alert_message" = "Ziur arrasto hau ezabatu nahi duzula?";
|
||||
|
||||
/* Placeholder for track name input on track edit screen */
|
||||
"placepage_track_name_hint" = "Arrastoaren izena";
|
||||
@@ -1002,7 +996,7 @@
|
||||
"button_layer_outdoor" = "Landa-eremua";
|
||||
|
||||
/* Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks */
|
||||
"bookmarks_export" = "Esportatu Laster-marka eta Pista guztiak";
|
||||
"bookmarks_export" = "Esportatu markagailu eta arrasto guztiak";
|
||||
|
||||
/* Text for the editing the Track's color button. */
|
||||
"change_color" = "Kolorea aldatu";
|
||||
@@ -1024,7 +1018,7 @@
|
||||
"enable_icloud_synchronization_title" = "Gaitu iCloud sinkronizazioa";
|
||||
|
||||
/* Message for the "Enable iCloud Syncronization" alert. */
|
||||
"enable_icloud_synchronization_message" = "iCloud sinkronizazioa garatzen ari den ezaugarri esperimental bat da. Ziurtatu zure laster-marka eta ibilbide guztien babeskopia egin duzula.";
|
||||
"enable_icloud_synchronization_message" = "iCloud sinkronizazioa garatzen ari den ezaugarri esperimental bat da. Ziurtatu zure markagailu eta arrasto guztien babeskopia egin duzula.";
|
||||
|
||||
/* Title for the "iCloud Is Disabled" alert. */
|
||||
"icloud_disabled_title" = "iCloud desgaituta dago";
|
||||
@@ -1075,10 +1069,10 @@
|
||||
"recover_all" = "Guztia berreskuratu";
|
||||
|
||||
/* Prompt to start recording a track. */
|
||||
"start_track_recording" = "Ibilbidearen grabaketa";
|
||||
"start_track_recording" = "Grabatu arrastoa";
|
||||
|
||||
/* Prompt for stopping a track recording. */
|
||||
"stop_track_recording" = "Gelditu ibilbidearen grabaketa";
|
||||
"stop_track_recording" = "Gelditu arrastoaren grabaketa";
|
||||
|
||||
/* Title for the "Stop Without Saving" action for the alert when saving a track recording. */
|
||||
"stop_without_saving" = "Gelditu gorde gabe";
|
||||
@@ -1087,15 +1081,17 @@
|
||||
"continue_recording" = "Jarraitu grabatzen";
|
||||
|
||||
/* Title for the alert when saving a track recording. */
|
||||
"track_recording_alert_title" = "Ibilbidearen grabaketa markagailuetan eta ibilbideetan gorde nahi duzu?";
|
||||
"track_recording_alert_title" = "Markagailu eta arrastoetan gorde nahi duzu?";
|
||||
|
||||
/* Message for the toast when saving the track recording is finished but nothing to save. */
|
||||
"track_recording_toast_nothing_to_save" = "Ibilbidea hutsik dago; ez dago ezer gordetzeko";
|
||||
"track_recording_toast_nothing_to_save" = "Arrastoa hutsik dago; ez dago ezer gordetzeko";
|
||||
"edit_track" = "Editatu arrastoa";
|
||||
"osm_profile_view_notes" = "Oharrak ikusi";
|
||||
"osm_profile_view_edit_history" = "Aldaketen historia ikusi";
|
||||
"about_proposition_3" = "Transparent and not for profit";
|
||||
"pref_mapappearance_title" = "Map Appearance";
|
||||
"pref_maplanguage_title" = "Map Language";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Local Language";
|
||||
"about_proposition_3" = "Gardena eta irabazi asmorik gabekoa";
|
||||
"pref_mapappearance_title" = "Mapen itxura";
|
||||
"pref_maplanguage_title" = "Mapen hizkuntza";
|
||||
"transliteration_title_disabled_summary" = "Desgaituta maparako hizkuntza lokala beti erabiltzean";
|
||||
"pref_maplanguage_local" = "Hizkuntza lokala";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Ur iturria";
|
||||
"type.amenity.water_point.drinking_water_no" = "Ur iturria";
|
||||
"type.barrier" = "Hesia";
|
||||
"type.barrier.yes" = "Hesia";
|
||||
"type.barrier.block" = "Blokea";
|
||||
"type.barrier.bollard" = "Pibotea";
|
||||
"type.barrier.border_control" = "Muga kontrola";
|
||||
@@ -548,13 +549,13 @@
|
||||
|
||||
/* These translations are used for all type.highway.*.tunnel. */
|
||||
"type.highway.tertiary_link.tunnel" = "Tunel";
|
||||
"type.highway.track" = "Kalea";
|
||||
"type.highway.track.area" = "Kalea";
|
||||
"type.highway.track" = "Arrastoa";
|
||||
"type.highway.track.area" = "Arrastoa";
|
||||
|
||||
/* These translations are used for all type.highway.*.bridge. */
|
||||
"type.highway.track.bridge" = "Zubia";
|
||||
"type.highway.track.grade1" = "Kalea";
|
||||
"type.highway.track.no.access" = "Kalea";
|
||||
"type.highway.track.grade1" = "Arrastoa";
|
||||
"type.highway.track.no.access" = "Arrastoa";
|
||||
|
||||
/* These translations are used for all type.highway.*.tunnel. */
|
||||
"type.highway.track.tunnel" = "Tunel";
|
||||
@@ -593,7 +594,7 @@
|
||||
"type.area_highway.service" = "Kalea";
|
||||
"type.area_highway.tertiary" = "Kalea";
|
||||
"type.area_highway.steps" = "Bidea";
|
||||
"type.area_highway.track" = "Kalea";
|
||||
"type.area_highway.track" = "Arrastoa";
|
||||
"type.area_highway.trunk" = "Kalea";
|
||||
"type.area_highway.unclassified" = "Kalea";
|
||||
"type.historic" = "Objektu historikoa";
|
||||
@@ -718,8 +719,8 @@
|
||||
"type.leisure.stadium" = "Estadioa";
|
||||
"type.leisure.swimming_pool" = "Igerilekua";
|
||||
"type.leisure.swimming_pool.private" = "Igerilekua";
|
||||
"type.leisure.track" = "Pista";
|
||||
"type.leisure.track.area" = "Pista";
|
||||
"type.leisure.track" = "Arrastoa";
|
||||
"type.leisure.track.area" = "Arrastoa";
|
||||
"type.leisure.water_park" = "Ur-parkea";
|
||||
"type.leisure.beach_resort" = "Hondartzako oporleku";
|
||||
"type.man_made" = "Artifiziala";
|
||||
@@ -924,7 +925,7 @@
|
||||
"type.railway.rail.spur" = "Trenbide-spur";
|
||||
|
||||
/* Short service tracks: siding, yard, crossover. */
|
||||
"type.railway.rail.service" = "Trenbide laguntzailea";
|
||||
"type.railway.rail.service" = "Zerbitzuko trenbidea";
|
||||
"type.railway.rail.bridge" = "Trenbide zubia";
|
||||
"type.railway.rail.highspeed.bridge" = "Trenbide zubia";
|
||||
"type.railway.rail.tourism.bridge" = "Trenbide zubia";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Txirrinduen aparkaleku estalia";
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
|
||||
@@ -751,12 +751,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "ذخیره شد";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "لطفاً به OpenStreetMap وارد شوید تا به طور خودکار تمام ویرایش های نقشه خود را آپلود کنید. یادگیری بیشتر";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "اینجا";
|
||||
"core_entrance" = "ورودی";
|
||||
"error_enter_correct_name" = "لطفا نام صحیح را وارد کنید";
|
||||
"bookmark_lists" = "لیستها";
|
||||
@@ -1097,3 +1091,5 @@
|
||||
"pref_maplanguage_title" = "زبان نقشه";
|
||||
"transliteration_title_disabled_summary" = "زمانی که همیشه از زبان محلی برای نقشه استفاده می کنید غیرفعال است";
|
||||
"pref_maplanguage_local" = "زبان محلی";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
"type.addr_interpolation" = "آدرس/بلاک";
|
||||
"type.addr_interpolation.even" = "آدرس/بلاک";
|
||||
"type.addr_interpolation.odd" = "آدرس/بلاک";
|
||||
"type.addr_interpolation" = "نشانی/بست";
|
||||
"type.addr_interpolation.even" = "نشانی/بست";
|
||||
"type.addr_interpolation.odd" = "نشانی/بست";
|
||||
"type.aerialway" = "راه هوایی";
|
||||
"type.aerialway.cable_car" = "ماشین کابلی";
|
||||
"type.aerialway.cable_car" = "خودردو کابلی";
|
||||
"type.aerialway.chair_lift" = "Chair Lift";
|
||||
"type.aerialway.drag_lift" = "Drag Lift";
|
||||
"type.aerialway.gondola" = "Gondola";
|
||||
"type.aerialway.mixed_lift" = "Mixed Lift";
|
||||
"type.aerialway.station" = "ایستگاه راه هوایی";
|
||||
"type.aeroway" = "زیرساخت هوا و فضا";
|
||||
"type.aerialway.station" = "ایستگاه راههوایی";
|
||||
"type.aeroway" = "زیرساخت مرزهوایی";
|
||||
"type.aeroway.aerodrome" = "فرودگاه";
|
||||
"type.aeroway.aerodrome.international" = "فرودگاه";
|
||||
"type.aeroway.apron" = "Apron";
|
||||
"type.aeroway.gate" = "Gate";
|
||||
"type.aeroway.helipad" = "پد فرود بالگرد";
|
||||
"type.aeroway.aerodrome.international" = "فرودگاه فرامرزی";
|
||||
"type.aeroway.apron" = "پیشگاه";
|
||||
"type.aeroway.gate" = "دروازه";
|
||||
"type.aeroway.helipad" = "بالگَردنشین";
|
||||
"type.aeroway.runway" = "Runway";
|
||||
"type.aeroway.taxiway" = "Taxiway";
|
||||
"type.aeroway.terminal" = "Terminal";
|
||||
"type.amenity" = "زیر ساخت";
|
||||
"type.amenity.arts_centre" = "مرکز هنری";
|
||||
"type.aeroway.taxiway" = "رج وزیگ";
|
||||
"type.aeroway.terminal" = "پایانه";
|
||||
"type.amenity" = "امکانات آسایشی";
|
||||
"type.amenity.arts_centre" = "کانون هنری";
|
||||
"type.amenity.atm" = "خودپرداز";
|
||||
"type.amenity.bank" = "بانک";
|
||||
"type.amenity.bar" = "میکده";
|
||||
"type.amenity.bbq" = "منقل کباب";
|
||||
"type.amenity.bench" = "سَکو";
|
||||
"type.amenity.bicycle_parking" = "پارکینگ دوچرخه";
|
||||
"type.amenity.bicycle_rental" = "مکان اجاره دوچرخه";
|
||||
"type.amenity.bar" = "میکده";
|
||||
"type.amenity.bbq" = "اَدیشت کباب";
|
||||
"type.amenity.bench" = "نیمکت";
|
||||
"type.amenity.bicycle_parking" = "ایستگاه دوچرخه";
|
||||
"type.amenity.bicycle_rental" = "جایگاه کرایه دوچرخه";
|
||||
"type.amenity.bicycle_repair_station" = "ایستگاه تعمیر دوچرخه";
|
||||
"type.amenity.biergarten" = "غذا";
|
||||
"type.amenity.brothel" = "فاحشه خانه";
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "شیر آب قابل شرب";
|
||||
"type.amenity.water_point.drinking_water_no" = "شیر آب قابل شرب";
|
||||
"type.barrier" = "Barrier";
|
||||
"type.barrier.yes" = "Barrier";
|
||||
"type.barrier.block" = "بلوک";
|
||||
"type.barrier.bollard" = "ستون";
|
||||
"type.barrier.border_control" = "کنترل مرزی";
|
||||
@@ -1479,5 +1480,7 @@
|
||||
"type.leisure.escape_game" = "Escape Room";
|
||||
"type.amenity.luggage_locker" = "Luggage Locker";
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.amenity.bicycle_parking.covered" = "ایستگاه پوشیدهی دوچرخه";
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
|
||||
@@ -325,7 +325,7 @@
|
||||
"report_incorrect_map_bug" = "Ilmoita tai korjaa virheelliset karttatiedot";
|
||||
|
||||
/* Button in the About screen */
|
||||
"volunteer" = "Vapaaehtoiseksi";
|
||||
"volunteer" = "Ryhdy vapaaehtoiseksi ja auta parantamaan CoMapsia";
|
||||
|
||||
/* "Social media" section header in the About screen */
|
||||
"follow_us" = "Ota yhteyttä";
|
||||
@@ -757,12 +757,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Tallennettu";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Kirjaudu sisään OpenStreetMapiin, jotta voit ladata kaikki karttamuutoksesi automaattisesti. Lisätietoja";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "täältä";
|
||||
"core_entrance" = "Sisäänkäynti";
|
||||
"error_enter_correct_name" = "Anna oikea nimi";
|
||||
"bookmark_lists" = "Luettelot";
|
||||
@@ -1101,3 +1095,5 @@
|
||||
"pref_maplanguage_title" = "Karttakieli";
|
||||
"transliteration_title_disabled_summary" = "Kytke pois käytöstä, jos käytät aina paikallista kieltä kartalle";
|
||||
"pref_maplanguage_local" = "Paikallinen kieli";
|
||||
"existence_confirmed_time_ago" = "Olemassaolo varmistettu %@";
|
||||
"hours_confirmed_time_ago" = "Varmistettu %@";
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"type.aerialway.gondola" = "Gondolihissi";
|
||||
"type.aerialway.mixed_lift" = "Köysirata";
|
||||
"type.aerialway.station" = "Köysirata-asema";
|
||||
"type.aeroway" = "Airspace Infrastructure";
|
||||
"type.aeroway" = "Ilmatilan Infrastruktuuri";
|
||||
"type.aeroway.aerodrome" = "Lentokenttä";
|
||||
"type.aeroway.aerodrome.international" = "Kansainvälinen lentokenttä";
|
||||
"type.aeroway.apron" = "Lentokentän asemataso";
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Vesipiste";
|
||||
"type.amenity.water_point.drinking_water_no" = "Vesipiste";
|
||||
"type.barrier" = "Este";
|
||||
"type.barrier.yes" = "Este";
|
||||
"type.barrier.block" = "Este";
|
||||
"type.barrier.bollard" = "Tolppa";
|
||||
"type.barrier.border_control" = "Rajavalvonta";
|
||||
@@ -687,7 +688,7 @@
|
||||
"type.landuse.salt_pond" = "Suolalampi";
|
||||
"type.landuse.village_green" = "Maa";
|
||||
"type.landuse.vineyard" = "Viinitarha";
|
||||
"type.leisure" = "Leisure";
|
||||
"type.leisure" = "Vapaa-aika";
|
||||
"type.leisure.common" = "Julkinen paikka";
|
||||
"type.leisure.dog_park" = "Koirien ulkoilupaikka";
|
||||
"type.leisure.fitness_centre" = "Kuntosali";
|
||||
@@ -722,7 +723,7 @@
|
||||
"type.leisure.track.area" = "Juoksurata";
|
||||
"type.leisure.water_park" = "Vesipuisto";
|
||||
"type.leisure.beach_resort" = "Rantalomakohde";
|
||||
"type.man_made" = "Man Made";
|
||||
"type.man_made" = "Ihmisen Tekemä";
|
||||
"type.man_made.breakwater" = "Aallonmurtaja";
|
||||
"type.man_made.cairn" = "Kiviröykkiö";
|
||||
"type.man_made.chimney" = "Tehtaan piippu";
|
||||
@@ -809,7 +810,7 @@
|
||||
"type.natural.water" = "Vettä";
|
||||
"type.natural.wetland" = "Soistuva maa";
|
||||
"type.natural.wetland.bog" = "Suo";
|
||||
"type.natural.wetland.marsh" = "Marsh";
|
||||
"type.natural.wetland.marsh" = "Suo";
|
||||
"type.noexit" = "Umpikuja";
|
||||
"type.office" = "Toimisto";
|
||||
"type.office.company" = "Yhtiön toimisto";
|
||||
@@ -1285,7 +1286,7 @@
|
||||
"type.shop.baby_goods" = "Lasten kauppa";
|
||||
"type.shop.bag" = "Laukkukauppa";
|
||||
"type.shop.bed" = "Sänkykauppa";
|
||||
"type.shop.boutique" = "Boutique";
|
||||
"type.shop.boutique" = "Putiikki";
|
||||
"type.shop.charity" = "Hyväntekeväisyysmyymälä";
|
||||
"type.shop.cheese" = "Juustokauppa";
|
||||
"type.shop.craft" = "Käsityöt";
|
||||
@@ -1437,10 +1438,10 @@
|
||||
"type.piste_type.nordic" = "Latu";
|
||||
"type.piste_type.sled" = "Kelkkarata";
|
||||
"type.piste_type.sled.area" = "Kelkkarata";
|
||||
"type.piste_type.snow_park" = "Snow Park";
|
||||
"type.piste_type.snow_park" = "Lumipuisto";
|
||||
"type.piste_type.hike" = "Lumi vaellusreitti";
|
||||
"type.piste_type.connection" = "Pisteen yhteys";
|
||||
"type.piste_type.skitour" = "Skitour Trail";
|
||||
"type.piste_type.skitour" = "Hiihtovaellusreitti";
|
||||
"type.amenity.events_venue" = "Tapahtumakeskus";
|
||||
"type.shop.auction" = "Huutokauppa";
|
||||
"type.shop.collector" = "Keräilyesineet";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.post_office.post_partner" = "Postikumppani";
|
||||
"type.amenity.ranger_station" = "Vartioasema";
|
||||
"type.amenity.bicycle_parking.covered" = "Pyöräkatos";
|
||||
"type.amenity.animal_shelter" = "Eläinsuoja";
|
||||
"type.barrier.wicket_gate" = "Käyntiportti";
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
"measurement_units" = "Unités de mesure";
|
||||
|
||||
/* Search category for cafes, bars, restaurants; any changes should be duplicated in categories.txt @category_eat! */
|
||||
"category_eat" = "Un endroit pour manger";
|
||||
"category_eat" = "Où manger";
|
||||
|
||||
/* Search category for grocery stores; any changes should be duplicated in categories.txt @category_food! */
|
||||
"category_food" = "Épiceries";
|
||||
@@ -172,7 +172,7 @@
|
||||
"unknown_current_position" = "Votre position n'a pas encore été déterminée";
|
||||
|
||||
/* Subject for emailed bookmark */
|
||||
"bookmark_share_email_subject" = "Hé, regardez mon signet sur la carte CoMaps !";
|
||||
"bookmark_share_email_subject" = "Hé, regardez ce lieu dans CoMaps !";
|
||||
|
||||
/* Subject for emailed position */
|
||||
"my_position_share_email_subject" = "Hé, regardez ma position actuelle sur la carte CoMaps !";
|
||||
@@ -250,7 +250,7 @@
|
||||
"pref_tts_street_names_description" = "Quand activé, le nom de la rue ou de la sortie à prendre sera prononcé à haute voix.";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Langue vocale";
|
||||
"pref_tts_language_title" = "Langue des annonces vocales";
|
||||
|
||||
/* Settings «Route» category: «Test Voice Directions» title */
|
||||
"pref_tts_test_voice_title" = "Tester les instructions vocales";
|
||||
@@ -262,7 +262,7 @@
|
||||
"search_show_on_map" = "Voir sur la carte";
|
||||
|
||||
/* Text in menu */
|
||||
"website" = "Site internet";
|
||||
"website" = "Site web";
|
||||
|
||||
/* Text in About menu, opens CoMaps news website */
|
||||
"news" = "Nouvelles";
|
||||
@@ -325,7 +325,7 @@
|
||||
"report_incorrect_map_bug" = "Signaler ou corriger des données cartographiques incorrectes";
|
||||
|
||||
/* Button in the About screen */
|
||||
"volunteer" = "Se porter volontaire";
|
||||
"volunteer" = "Contribuer à CoMaps";
|
||||
|
||||
/* "Social media" section header in the About screen */
|
||||
"follow_us" = "Rentrez en contact avec nous";
|
||||
@@ -441,10 +441,10 @@
|
||||
/* blue gray color */
|
||||
"blue_gray" = "Gris-bleu";
|
||||
"dialog_routing_disclaimer_title" = "Lorsque vous suivez l'itinéraire, gardez à l'esprit les points suivants :";
|
||||
"dialog_routing_disclaimer_priority" = "— Les conditions de circulation, le code de la route et les panneaux de signalisation ont la priorité sur l'appareil de navigation ;";
|
||||
"dialog_routing_disclaimer_precision" = "— La carte peut être imprécise et l'itinéraire proposé n'est pas forcément le plus direct pour arriver à destination ;";
|
||||
"dialog_routing_disclaimer_priority" = "— Les conditions de circulation, le code de la route et les panneaux de signalisation ont la priorité sur les conseils de navigation ;";
|
||||
"dialog_routing_disclaimer_precision" = "— La carte peut être erronée et l'itinéraire proposé n'est pas forcément optimal pour arriver à destination ;";
|
||||
"dialog_routing_disclaimer_recommendations" = "— L'itinéraire proposé doit être considéré comme une simple recommandation ;";
|
||||
"dialog_routing_disclaimer_borders" = "— Faites attention aux itinéraires traversant des zones frontalières : les itinéraires générés par l'application peuvent parfois franchir des frontières étatiques dans des zones interdites ;";
|
||||
"dialog_routing_disclaimer_borders" = "— Faites attention à proximité des zones frontalières : les itinéraires générés par l'application peuvent parfois franchir les frontières entre états dans des zones interdites ;";
|
||||
"dialog_routing_disclaimer_beware" = "Restez vigilants et soyez prudents sur la route !";
|
||||
"dialog_routing_check_gps" = "Vérifiez le signal GPS";
|
||||
"dialog_routing_error_location_not_found" = "Impossible de créer l'itinéraire. Les coordonnées GPS actuelles n'ont pas pu être déterminées.";
|
||||
@@ -467,7 +467,7 @@
|
||||
"dialog_routing_application_error" = "Impossible de créer l'itinéraire à cause d'une erreur dans l'application.";
|
||||
"dialog_routing_try_again" = "Veuillez réessayer";
|
||||
"dialog_routing_download_and_build_cross_route" = "Voulez-vous télécharger la carte et créer un itinéraire plus direct s'étendant sur plus d'une carte ?";
|
||||
"dialog_routing_download_cross_route" = "Téléchargez des cartes supplémentaires pour créer un itinéraire plus direct sortant des limites de cette carte.";
|
||||
"dialog_routing_download_cross_route" = "Téléchargez des cartes supplémentaires pour calculer un meilleur itinéraire sortant des limites de la carte courante.";
|
||||
|
||||
/* «Show» context menu */
|
||||
"show" = "Afficher";
|
||||
@@ -683,7 +683,7 @@
|
||||
"editor_edits_sent_message" = "Ta note sera envoyée à OpenStreetMap";
|
||||
"editor_comment_hint" = "Commentaire…";
|
||||
"editor_reset_edits_message" = "Abandonner toutes les modifications locales ?";
|
||||
"editor_reset_edits_button" = "Réinitialiser";
|
||||
"editor_reset_edits_button" = "Ignorer";
|
||||
"editor_remove_place_message" = "Supprimer le lieu ajouté ?";
|
||||
"editor_remove_place_button" = "Supprimer";
|
||||
"editor_place_doesnt_exist" = "Ce lieu n'existe pas";
|
||||
@@ -692,7 +692,7 @@
|
||||
/* Phone number error message */
|
||||
"error_enter_correct_phone" = "Saisissez un numéro de téléphone valide";
|
||||
"error_enter_correct_web" = "Saisissez une adresse Internet valide";
|
||||
"error_enter_correct_email" = "Saisissez un email valide";
|
||||
"error_enter_correct_email" = "Saisissez une adresse de courriel valide";
|
||||
"refresh" = "Mettre à jour";
|
||||
"placepage_add_place_button" = "Ajouter un lieu sur OpenStreetMap";
|
||||
|
||||
@@ -757,12 +757,6 @@
|
||||
|
||||
/* Title for button when a route was saved. */
|
||||
"saved" = "Enregistré";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */
|
||||
"alert_reauth_message_ios" = "Connecte-toi à OpenStreetMap pour télécharger automatiquement toutes tes modifications de cartes. En savoir plus";
|
||||
|
||||
/* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */
|
||||
"alert_reauth_link_text_ios" = "ici";
|
||||
"core_entrance" = "Entrée";
|
||||
"error_enter_correct_name" = "Veuillez entrer un nom correct";
|
||||
"bookmark_lists" = "Listes";
|
||||
@@ -832,7 +826,7 @@
|
||||
"avoid_ferry" = "Éviter les ferries";
|
||||
"avoid_motorways" = "Éviter les autoroutes";
|
||||
"unable_to_calc_alert_title" = "Impossible de calculer l'itinéraire";
|
||||
"unable_to_calc_alert_subtitle" = "Malheureusement, nous n'avons pas pu créer l'itinéraire avec les options sélectionnées. Modifiez les paramètres et réessayez";
|
||||
"unable_to_calc_alert_subtitle" = "Malheureusement, nous n'avons pas pu créer l'itinéraire avec les options sélectionnées. Modifiez les paramètres et réessayez.";
|
||||
"define_to_avoid_btn" = "Définissez les routes à éviter";
|
||||
"change_driving_options_btn" = "Paramètres d'itinéraire activés";
|
||||
"toll_road" = "Route à péage";
|
||||
@@ -1094,10 +1088,12 @@
|
||||
|
||||
/* Message for the toast when saving the track recording is finished but nothing to save. */
|
||||
"track_recording_toast_nothing_to_save" = "L'itinéraire est vide - il n'y a rien à sauvegarder";
|
||||
"edit_track" = "Modifier le trace";
|
||||
"edit_track" = "Modifier la trace";
|
||||
"osm_profile_view_notes" = "Afficher les notes";
|
||||
"osm_profile_view_edit_history" = "Afficher l'historique des modifications";
|
||||
"pref_mapappearance_title" = "Apparence de la carte";
|
||||
"pref_maplanguage_title" = "Langue de la carte";
|
||||
"transliteration_title_disabled_summary" = "Désactivé lorsque la langue locale est toujours utilisée pour la carte";
|
||||
"pref_maplanguage_local" = "Langue locale";
|
||||
"existence_confirmed_time_ago" = "Existance confirmée %@";
|
||||
"hours_confirmed_time_ago" = "Confirmées %@";
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
"type.amenity.water_point" = "Point d’eau";
|
||||
"type.amenity.water_point.drinking_water_no" = "Point d’eau";
|
||||
"type.barrier" = "Barrière";
|
||||
"type.barrier.yes" = "Barrière";
|
||||
"type.barrier.block" = "Bloc";
|
||||
"type.barrier.bollard" = "Poteau";
|
||||
"type.barrier.border_control" = "Contrôle aux frontières";
|
||||
@@ -208,7 +209,7 @@
|
||||
"type.barrier.retaining_wall" = "Mur de soutènement";
|
||||
"type.barrier.stile" = "Échalier";
|
||||
"type.barrier.turnstile" = "Tourniquet";
|
||||
"type.barrier.swing_gate" = "Barrière tournante";
|
||||
"type.barrier.swing_gate" = "Portail Battant";
|
||||
"type.barrier.toll_booth" = "Poste de péage";
|
||||
"type.barrier.wall" = "Mur";
|
||||
"type.boundary" = "Frontière";
|
||||
@@ -1481,3 +1482,5 @@
|
||||
"type.post_office.post_partner" = "Partenaire de publication";
|
||||
"type.amenity.ranger_station" = "Poste de garde forestier";
|
||||
"type.amenity.bicycle_parking.covered" = "Parking vélo couvert";
|
||||
"type.amenity.animal_shelter" = "Abri pour animaux";
|
||||
"type.barrier.wicket_gate" = "Portillon";
|
||||
|
||||
@@ -366,8 +366,6 @@
|
||||
"planning_route_remove_title" = "Arrastre aquí para eliminar";
|
||||
"placepage_add_stop" = "Engadir parada";
|
||||
"start_from_my_position" = "Empezar desde";
|
||||
"alert_reauth_message_ios" = "Inicia sesión en OpenStreetMap para cargar automaticamente todas as túas edicións de mapas. Más información";
|
||||
"alert_reauth_link_text_ios" = "aquí";
|
||||
"core_entrance" = "Entrada";
|
||||
"error_enter_correct_name" = "Por favor, introduza o nome correcto";
|
||||
"bookmark_lists" = "Listas";
|
||||
@@ -589,3 +587,5 @@
|
||||
"pref_maplanguage_title" = "Map Language";
|
||||
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||
"pref_maplanguage_local" = "Local Language";
|
||||
"hours_confirmed_time_ago" = "Confirmed %@";
|
||||
"existence_confirmed_time_ago" = "Existence confirmed %@";
|
||||
|
||||
@@ -288,6 +288,7 @@
|
||||
"type.amenity.water_point" = "Fonte de auga para caravanas";
|
||||
"type.amenity.water_point.drinking_water_no" = "Fonte de auga para caravanas";
|
||||
"type.barrier" = "Barreira";
|
||||
"type.barrier.yes" = "Barreira";
|
||||
"type.barrier.block" = "Bloque";
|
||||
"type.barrier.bollard" = "Bolardo";
|
||||
"type.barrier.border_control" = "Control fronteirizo";
|
||||
@@ -1295,3 +1296,5 @@
|
||||
"type.amenity.ranger_station" = "Ranger Station";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.post_office.post_partner" = "Post Partner";
|
||||
"type.barrier.wicket_gate" = "Wicket gate";
|
||||
"type.amenity.animal_shelter" = "Animal Shelter";
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user