diff --git a/OsmAnd-api/src/net/osmand/aidlapi/map/ALocation.java b/OsmAnd-api/src/net/osmand/aidlapi/map/ALocation.java index 03741138d5..0809944ba9 100644 --- a/OsmAnd-api/src/net/osmand/aidlapi/map/ALocation.java +++ b/OsmAnd-api/src/net/osmand/aidlapi/map/ALocation.java @@ -25,6 +25,24 @@ public class ALocation extends AidlParams { private ALocation() { } + public ALocation(double latitude, double longitude, long time, boolean hasAltitude, double altitude, + boolean hasSpeed, float speed, boolean hasBearing, float bearing, + boolean hasAccuracy, float accuracy, boolean hasVerticalAccuracy, float verticalAccuracy) { + this.latitude = latitude; + this.longitude = longitude; + this.time = time; + this.hasAltitude = hasAltitude; + this.altitude = altitude; + this.hasSpeed = hasSpeed; + this.speed = speed; + this.hasBearing = hasBearing; + this.bearing = bearing; + this.hasAccuracy = hasAccuracy; + this.accuracy = accuracy; + this.hasVerticalAccuracy = hasVerticalAccuracy; + this.verticalAccuracy = verticalAccuracy; + } + public ALocation(Parcel in) { readFromParcel(in); } diff --git a/OsmAnd-java/src/main/java/net/osmand/GPXUtilities.java b/OsmAnd-java/src/main/java/net/osmand/GPXUtilities.java index ed80b55b05..c7b1ebd63b 100644 --- a/OsmAnd-java/src/main/java/net/osmand/GPXUtilities.java +++ b/OsmAnd-java/src/main/java/net/osmand/GPXUtilities.java @@ -1255,6 +1255,10 @@ public class GPXUtilities { return g; } + public boolean containsRoutePoint(WptPt point) { + return getRoutePoints().contains(point); + } + public List getRoutePoints() { List points = new ArrayList<>(); for (int i = 0; i < routes.size(); i++) { diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java index 28c9b11551..7c54388f64 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java @@ -1,42 +1,76 @@ package net.osmand.osm; -public enum RouteActivityType { - WATER("Water", "yellow"), WINTER("Winter", "yellow"), SNOWMOBILE("Snowmobile", "yellow"), RIDING("Riding", "yellow"), RACING("Racing", "yellow"), - MOUNTAINBIKE("Mountainbike", "blue"), CYCLING("Cycling", "blue"), - HIKING("Hiking", "orange"), RUNNING("Running", "orange"), WALKING("Walking", "orange"), - OFFROAD("Off-road", "yellow"), - MOTORBIKE("Motorbike", "green"), CAR("Car", "green"); - // less specific bottom order +import java.util.ArrayList; +import java.util.List; +public class RouteActivityType { + private static final List values = new ArrayList<>(); + public static final String DEFAULT_ICON = "special_marker"; + public static final String DEFAULT_COLOR = "orange"; + + public static final RouteActivityType WATER = createType("water", "yellow").icon("special_kayak").reg(); + public static final RouteActivityType WINTER = createType("winter", "yellow").icon("special_skiing").reg(); + public static final RouteActivityType SNOWMOBILE = createType("snowmobile", "yellow").icon("special_snowmobile").reg(); + public static final RouteActivityType RIDING = createType("riding", "yellow").icon("special_horse").reg(); + public static final RouteActivityType RACING = createType("racing", "yellow").icon("raceway").reg(); + public static final RouteActivityType MOUNTAINBIKE = createType("mountainbike", "blue").icon("sport_cycling").reg(); + public static final RouteActivityType CYCLING = createType("cycling", "blue").icon("special_bicycle").reg(); + public static final RouteActivityType HIKING = createType("hiking", "orange").icon("special_trekking").reg(); + public static final RouteActivityType RUNNING = createType("running", "orange").icon("running").reg(); + public static final RouteActivityType WALKING = createType("walking", "orange").icon("special_walking").reg(); + public static final RouteActivityType OFFROAD = createType("offroad", "yellow").icon("special_offroad").reg(); + public static final RouteActivityType MOTORBIKE = createType("motorbike", "green").icon("special_motorcycle").reg(); + public static final RouteActivityType CAR = createType("car", "green").icon("shop_car").reg(); + // less specific bottom order String name; String color; + String icon; - private RouteActivityType(String nm, String clr) { + RouteActivityType(String nm, String clr) { this.name = nm; this.color = clr; } - + public String getName() { return name; } - + public String getColor() { return color; } - + + public String getIcon() { + return icon; + } + + public static RouteActivityType getOrCreateTypeFromName(String name) { + for (RouteActivityType rat : values) { + if (rat.name.equalsIgnoreCase(name)) { + return rat; + } + } + return createType(name.toLowerCase(), DEFAULT_COLOR).icon(DEFAULT_ICON).reg(); + } + + private static RouteActivityTypeBuilder createType(String name, String color) { + RouteActivityTypeBuilder builder = new RouteActivityTypeBuilder(); + builder.routeActivityType = new RouteActivityType(name, color); + return builder; + } + public static RouteActivityType getTypeFromTags(String[] tags) { RouteActivityType activityType = null; for (String tg : tags) { RouteActivityType rat = RouteActivityType.convertFromOsmGPXTag(tg); if (rat != null) { - if (activityType == null || activityType.ordinal() > rat.ordinal()) { + if (activityType == null || values.indexOf(activityType) > values.indexOf(rat)) { activityType = rat; } } } return activityType; } - + public static RouteActivityType convertFromOsmGPXTag(String tg) { String t = tg.toLowerCase(); if ("mountain hiking".equalsIgnoreCase(t)) { @@ -215,4 +249,18 @@ public enum RouteActivityType { return null; } + public static class RouteActivityTypeBuilder { + + private RouteActivityType routeActivityType; + + public RouteActivityTypeBuilder icon(String icon) { + routeActivityType.icon = icon; + return this; + } + + private RouteActivityType reg() { + values.add(routeActivityType); + return routeActivityType; + } + } } \ No newline at end of file diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java b/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java index 9caa54b55c..bd37de6ba0 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java @@ -21,7 +21,7 @@ import net.osmand.osm.edit.Relation.RelationMember; import net.osmand.util.Algorithms; public class EntityParser { - + public static void parseMapObject(MapObject mo, Entity e, Map tags) { mo.setId(e.getId()); if(mo instanceof Amenity) { @@ -123,7 +123,7 @@ public class EntityParser { mo.setName(ref); } } - + private static void setNameFromBrand(MapObject mo, Map tags) { String ref = tags.get(OSMTagKey.BRAND.getValue()); if(ref != null){ @@ -140,7 +140,7 @@ public class EntityParser { op += " [" + ref + "]"; mo.setName(op); } - + private static String getWebSiteURL(Map tagValues, boolean checkWikipedia) { String siteUrl = null; @@ -170,14 +170,14 @@ public class EntityParser { } return siteUrl; } - - + + public static List parseAmenities(MapPoiTypes poiTypes, Entity entity, Map tags, List amenitiesList) { amenitiesList.clear(); // it could be collection of amenities boolean relation = entity instanceof Relation; - boolean purerelation = relation && + boolean purerelation = relation && !("multipolygon".equals(tags.get("type")) || "boundary".equals(tags.get("type"))); Collection> it = MapRenderingTypes.splitTagsIntoDifferentObjects(tags); for (Map ts : it) { @@ -201,9 +201,7 @@ public class EntityParser { } return amenitiesList; } - - - + private static boolean checkAmenitiesToAdd(Amenity a, List amenitiesList){ // check amenity for duplication for(Amenity b : amenitiesList){ @@ -212,9 +210,9 @@ public class EntityParser { } } return true; - + } - + public static Building parseBuilding(Entity e){ Building b = new Building(); parseMapObject(b, e, e.getTags()); @@ -228,7 +226,7 @@ public class EntityParser { List nodes = ((Way) e).getNodes(); for(int i = 0; i < nodes.size(); i++) { Node node = nodes.get(i); - if(node != null && "yes".equals(node.getTag(OSMTagKey.ENTRANCE)) && + if(node != null && "yes".equals(node.getTag(OSMTagKey.ENTRANCE)) && !Algorithms.isEmpty(node.getTag(OSMTagKey.REF))) { b.addEntrance(node.getTag(OSMTagKey.REF), node.getLatLon()); } @@ -236,11 +234,11 @@ public class EntityParser { } return b; } - + public static City parseCity(Node el) { return parseCity(el, CityType.valueFromString(el.getTag(OSMTagKey.PLACE.getValue()))); } - + public static City parseCity(Entity el, CityType t) { if(t == null) { return null; @@ -252,15 +250,15 @@ public class EntityParser { c.setIsin(isin); return c; } - - + + public static TransportRoute parserRoute(Relation r, String ref){ TransportRoute rt = new TransportRoute(); parseMapObject(rt, r, r.getTags()); rt.setRef(ref); return rt; } - + public static TransportStop parseTransportStop(Entity e){ TransportStop st = new TransportStop(); parseMapObject(st, e, e.getTags()); diff --git a/OsmAnd-telegram/res/values-el/strings.xml b/OsmAnd-telegram/res/values-el/strings.xml index ce8aec1832..ff81d49e6c 100644 --- a/OsmAnd-telegram/res/values-el/strings.xml +++ b/OsmAnd-telegram/res/values-el/strings.xml @@ -36,7 +36,7 @@ Κλείσιμο Ανενεργό Εγκατάσταση - Διαμοιρασμός + Κοινοποίηση Προηγούμενο Συνέχεια Ακύρωση diff --git a/OsmAnd/.gitignore b/OsmAnd/.gitignore index b8c08a2225..3149fb4209 100644 --- a/OsmAnd/.gitignore +++ b/OsmAnd/.gitignore @@ -39,8 +39,6 @@ mx_* valgrind/ bin/ dist/ -res/values/no_translate.xml -res/values/skip_translate.xml assets/specialphrases/* assets/voice/* assets/fonts/* diff --git a/OsmAnd/AndroidManifest-huawei.xml b/OsmAnd/AndroidManifest-huawei.xml index c557d5fe2a..c71b7a3a93 100644 --- a/OsmAnd/AndroidManifest-huawei.xml +++ b/OsmAnd/AndroidManifest-huawei.xml @@ -4,7 +4,7 @@ - - diff --git a/OsmAnd/AndroidManifest-nightlyFree.xml b/OsmAnd/AndroidManifest-nightlyFree.xml index 6ec6d5a12e..d4e57e4b87 100644 --- a/OsmAnd/AndroidManifest-nightlyFree.xml +++ b/OsmAnd/AndroidManifest-nightlyFree.xml @@ -5,9 +5,6 @@ - replaceNoTranslate(line); - } - } - into 'res/values/' -} task validateTranslate { println "Validating translations" @@ -147,10 +138,6 @@ task collectVoiceAssets(type: Sync) { include "**/*.js" } -task cleanNoTranslate(type: Delete) { - delete('res/values/no_translate.xml') -} - task collectFonts(type: Copy) { from "../../resources/fonts" from "../../resources/rendering_styles/fonts" @@ -262,7 +249,6 @@ task collectExternalResources { copyMapShaderIcons, copyMapPOIIcons, copyLargePOIIcons, - updateNoTranslate, validateTranslate, copyWidgetIcons, copyWidgetIconsHdpi, diff --git a/OsmAnd/build-library.gradle b/OsmAnd/build-library.gradle index b8cf0a21a5..c282fa6fa2 100644 --- a/OsmAnd/build-library.gradle +++ b/OsmAnd/build-library.gradle @@ -28,10 +28,6 @@ android { } } -def replaceNoTranslate(line) { - return line; -} - afterEvaluate { android.libraryVariants.all { variant -> variant.javaCompiler.dependsOn(collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore) diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle index ffaa03af01..00e0954c54 100644 --- a/OsmAnd/build.gradle +++ b/OsmAnd/build.gradle @@ -36,9 +36,9 @@ android { defaultConfig { minSdkVersion System.getenv("MIN_SDK_VERSION") ? System.getenv("MIN_SDK_VERSION").toInteger() : 15 - versionCode 390 + versionCode 400 versionCode System.getenv("APK_NUMBER_VERSION") ? System.getenv("APK_NUMBER_VERSION").toInteger() : versionCode - versionName "3.9.0" + versionName "4.0.0" versionName System.getenv("APK_VERSION")? System.getenv("APK_VERSION").toString(): versionName versionName System.getenv("APK_VERSION_SUFFIX")? versionName + System.getenv("APK_VERSION_SUFFIX").toString(): versionName } @@ -105,31 +105,45 @@ android { nightlyFree { dimension "version" applicationId "net.osmand.dev" + resValue "string", "app_name", "OsmAnd Nightly" + resValue "string", "app_edition", System.getenv("APP_EDITION") ? System.getenv("APP_EDITION") : "" // resConfig "en" } androidFull { dimension "version" applicationId "net.osmand.plus" + resValue "string", "app_name", "OsmAnd~" + resValue "string", "app_edition", System.getenv("APP_EDITION") ? System.getenv("APP_EDITION") : "" } gplayFree { dimension "version" applicationId "net.osmand" + resValue "string", "app_name", "OsmAnd" + resValue "string", "app_edition", System.getenv("APP_EDITION") ? System.getenv("APP_EDITION") : "" } gplayFull { dimension "version" applicationId "net.osmand.plus" + resValue "string", "app_name", "OsmAnd+" + resValue "string", "app_edition", System.getenv("APP_EDITION") ? System.getenv("APP_EDITION") : "" } amazonFree { dimension "version" applicationId "net.osmand" + resValue "string", "app_name", "OsmAnd" + resValue "string", "app_edition", "" } amazonFull { dimension "version" applicationId "net.osmand.plus" + resValue "string", "app_name", "OsmAnd+" + resValue "string", "app_edition", "" } huawei { dimension "version" applicationId "net.osmand.huawei" + resValue "string", "app_name", "OsmAnd" + resValue "string", "app_edition", "" } // Build that includes 3D OpenGL release @@ -156,19 +170,6 @@ android { } -def replaceNoTranslate(line) { - if (line.contains("\"app_name\"") && System.getenv("TARGET_APP_NAME")) { - return line.replaceAll(">[^<]*<", ">" + System.getenv("TARGET_APP_NAME") + "<") - } - if (line.contains("\"app_name_free\"") && System.getenv("TARGET_APP_NAME")) { - return line.replaceAll(">[^<]*<", ">" + System.getenv("TARGET_APP_NAME") + "<") - } - if (line.contains("\"app_edition\"") && System.getenv("APP_EDITION")) { - return line.replaceAll(">[^<]*<", ">" + System.getenv("APP_EDITION") + "<") - } - return line; -} - afterEvaluate { android.applicationVariants.all { variant -> variant.javaCompiler.dependsOn(collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore) diff --git a/OsmAnd/res/drawable/bottom_navigation_item_bg_dark.xml b/OsmAnd/res/drawable/bottom_navigation_item_bg_dark.xml new file mode 100644 index 0000000000..f0934052c1 --- /dev/null +++ b/OsmAnd/res/drawable/bottom_navigation_item_bg_dark.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/drawable/bottom_navigation_item_bg_light.xml b/OsmAnd/res/drawable/bottom_navigation_item_bg_light.xml new file mode 100644 index 0000000000..f410c7a1ff --- /dev/null +++ b/OsmAnd/res/drawable/bottom_navigation_item_bg_light.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/drawable/navigation_item_active_bg_dark.xml b/OsmAnd/res/drawable/navigation_item_active_bg_dark.xml new file mode 100644 index 0000000000..de8b54eb6e --- /dev/null +++ b/OsmAnd/res/drawable/navigation_item_active_bg_dark.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/drawable/navigation_item_active_bg_light.xml b/OsmAnd/res/drawable/navigation_item_active_bg_light.xml new file mode 100644 index 0000000000..31d31f1c40 --- /dev/null +++ b/OsmAnd/res/drawable/navigation_item_active_bg_light.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/layout/gpx_overview_fragment.xml b/OsmAnd/res/layout/gpx_overview_fragment.xml index 426633eb83..3b205ae60e 100644 --- a/OsmAnd/res/layout/gpx_overview_fragment.xml +++ b/OsmAnd/res/layout/gpx_overview_fragment.xml @@ -6,6 +6,22 @@ android:layout_height="wrap_content" android:orientation="vertical"> + + + + + + + + + + + + + + - + android:background="?attr/btn_border_bg" + android:layout_marginLeft="@dimen/content_padding_half" + android:layout_marginStart="@dimen/content_padding_half"> + + + + + + + + + + + + @@ -172,7 +224,6 @@ diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 48e89e070c..06d4d70284 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -3355,8 +3355,8 @@ لوحة المفاتيح وندرلينك ببغاء - "المسار: المسافة%1$s، الوقت %2$s. -\nالحساب: %3$.1f ث، %4$d طريق، %5$d تجانب" + المسار: المسافة%1$s، الوقت %2$s. +\nالحساب: %3$.1f ث، %4$d طريق، %5$d تجانب الأوكيتانية ثم %1$s تطبيق فقط على \"%1$s\" @@ -3800,7 +3800,7 @@ التعديل الأخير استيراد المسار فتح مسار موجود - إنشاء مسار جديد + إنشاء طريق جديد حدد المسار للفتح. تم الكتابة فوق المسار @@ -3833,15 +3833,15 @@ أضف إحداثية مسار تسجيل الرحلة حفظ كمسار - تتبع المسار + اتبع المسار اختر مسار للمتابعة اختر ملف المسار للمتابعة أو قم باستيراده من الجهاز. - حدد مسارا آخر + حدد مساراً آخر انتقل من موقعي إلى المسار نقطة المسار للتنقل بداية المسار أقرب نقطة - إرفاق الطرق + إرفاق بالطرق حذف عنوان إضافة عنوان أدخل العنوان @@ -3864,7 +3864,7 @@ فتح المسار المحفوظ محفوظ مسار مبسط - سيتم حفظ خط التوجيه فقط، وسيتم حذف نقاط الطريق. + سيتم حفظ خط الطريق فقط، وسيتم حذف نقاط المسار. اسم الملف الرجاء إضافة نقطتين على الأقل. إعادة @@ -3997,8 +3997,8 @@ \n • دعم ألوان مخصصة للمفضلة ونقاط لمسار الطريق \n \n - وضع أساسي - وضع المستخدم + وضع التطبيق + حساب المستخدم عكس جميع النقاط حدد الوضع الذي سيتم استخدامه في بدء التطبيق. آخر استخدام @@ -4030,7 +4030,7 @@ تحديد مجلد تحديد مجلد أو إضافة واحد جديد فارغ - التحليل حسب الفواصل الزمنية (الفاصل الزمني) + تحليل حسب الفاصل الزمني رفع إلى خريطة الشارع المفتوح تحرير المسار تسمية المسار diff --git a/OsmAnd/res/values-el/phrases.xml b/OsmAnd/res/values-el/phrases.xml index 02aaee6bc2..cd34506f9b 100644 --- a/OsmAnd/res/values-el/phrases.xml +++ b/OsmAnd/res/values-el/phrases.xml @@ -1212,7 +1212,7 @@ Περιγραφή Τηλέφωνο Ιστότοπος - Ηλ. διεύθυνση + Ηλεκτρονικό ταχυδρομείο Τηλεομοιότυπο (φαξ) Facebook Twitter diff --git a/OsmAnd/res/values-el/strings.xml b/OsmAnd/res/values-el/strings.xml index af31956d26..a2601e7c97 100644 --- a/OsmAnd/res/values-el/strings.xml +++ b/OsmAnd/res/values-el/strings.xml @@ -267,7 +267,7 @@ Επεξεργασία χωρίς διαδίκτυο Χρήση πάντα της επεξεργασίας χωρίς διαδίκτυο. Οι αλλαγές στα ΣΕ μέσω της εφαρμογής δεν επηρεάζουν τα ληφθέντα αρχεία χάρτη, οι αλλαγές αποθηκεύονται ως αρχείο στη συσκευή σας. - Αποστολή … + Αποστολή… {0} ΣΕ/Οι σημειώσεις απεστάλησαν Αποστολή όλων Αποστολή επεξεργασίας στο OSM @@ -813,7 +813,7 @@ Διαγραφή αυτού του φίλτρου; Το φίλτρο \'%1$s\' διαγράφηκε Το φίλτρο \'%1$s\' δημιουργήθηκε - ηλ. διεύθυνση + ηλεκτρονικό ταχυδρομείο Ο ενδιάμεσος προορισμός %1$s είναι πολύ μακριά από τον πλησιέστερο δρόμο. Φτάσατε στον ενδιάμεσο προορισμό σας Προσθήκη ως ενδιάμεσου προορισμού @@ -1175,7 +1175,7 @@ Μόνο χειροκίνητα (πατήστε το βέλος) Επανάληψη οδηγιών πλοήγησης Αποθήκευση δεδομένων ως αρχείο GPX ή εισαγωγή σημείων διαδρομής στα \'Αγαπημένα\'; - Διαμοιρασμός + Κοινοποίηση Μη έγκυρη μορφή: %s Διακοπή Διακοπή λειτουργίας παρασκηνίου του GPS; @@ -3385,7 +3385,7 @@ Σύσταση: Είναι δύσκολο να προβλεφθεί τι θα εγγραφεί και τι όχι, ίσως είναι καλύτερο να απενεργοποιήσετε αυτό το φίλτρο. Παρατήρηση: Εάν το GPS είχε απενεργοποιηθεί αμέσως πριν μια εγγραφή, το πρώτο μετρούμενο σημείο μπορεί να έχει μειωμένη ακρίβεια, έτσι μπορεί να θέλουμε να περιμένουμε λιγάκι πριν την καταγραφή σημείου (ή να εγγράψουμε τα καλύτερα 3 διαδοχικά σημεία, κλπ.), αλλά αυτό δεν έχει ακόμα υλοποιηθεί. Αυτό το φίλτρο αποφεύγει διπλά σημεία να εγγραφούν όταν έχει συμβεί πολύ λίγη ενεργή κίνηση, καθιστώντας καλύτερη τη χωροταξική εμφάνιση των ιχνών που δεν επεξεργάζονται αργότερα. - Τιμή + Βαθμολόγηση Παράπλευρα αποτελέσματα: Περίοδοι σε ακινησία δεν καταγράφονται καθόλου ή μόνο με ένα σημείο καθεμιά. Μικρές (πραγματικός κόσμος) κινήσεις (π.χ. πλάγιες, για να σημειώσουν έξοδο στο ταξίδι σας) μπορεί να φιλτραριστούν. Το αρχείο σας περιέχει λιγότερες πληροφορίες για μετεπεξεργασία και έχει χειρότερα στατιστικά φιλτράροντας προφανώς περιττά σημεία κατά τον χρόνο εγγραφής, ενώ δυνητικά διατηρεί παράσιτα που προκαλούνται από κακή λήψη ή επιπτώσεις κυκλωμάτων GPS. Σύσταση: Ρύθμιση 5 μέτρων μπορεί να λειτουργήσει καλά για σας, εάν δεν χρειάζεστε να πιάσετε λεπτομέρειες πιο ακριβείς από αυτό και δεν θέλετε να πάρετε δεδομένα σε ακινησία. Ενδιάμεσος χρόνος diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 7a3d6ee245..e8a03879ba 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -3925,4 +3925,37 @@ \n" Unisci segmenti Spezza + Arrivo a destinazione + Svolta + Avvia registrazione + Mostra il percorso sulla mappa + Sedia a rotelle + Escursionismo + A piedi + Mezzi pesanti + Camion + Scooter + Bici da corsa + MTB + Errore del server: %1$s + Il nome esiste già + Eliminare questo motore di routing online\? + Modifica descrizione + Elimina i waypoint + Aggiungi ai marcatori + Copia nei preferiti + Caricamento + Caricamento completato + Carico %1$d di %2$d + Caricati %1$d di %2$d + Seleziona le modifiche per il caricamento + Hillshade / Pendenza / Linee di contorno + OpenPlaceReviews è un progetto community-driven su luoghi pubblici come ristoranti, hotel, musei, waypoint. Raccoglie tutte le informazioni pubbliche su di essi come foto, recensioni, link ad altri sistemi che collegano OpenStreetMap, Wikipedia. +\n +\nTutti i dati di OpenPlaceReview sono aperti e disponibili a tutti: http://openplacereviews.org/data. +\n +\nPer maggiori informazioni: http://openplacereviews.org + OpenPlaceReviews + Usa test.openplacereviews.org + Accedi a OpenPlaceReviews \ No newline at end of file diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml index 458222fa16..6dd132682f 100644 --- a/OsmAnd/res/values-pt-rBR/phrases.xml +++ b/OsmAnd/res/values-pt-rBR/phrases.xml @@ -3881,4 +3881,14 @@ Túnel para morcego Ponte para morcego Travessia de vida selvagem + Posição de parada da biblioteca móvel + Registro de conferência: não + Registro de conferência: sim + Status da pista: fechada + Status da pista: aberta + Patrulhado: não + Patrulhado: sim + Satisfeito: sim + Nome da pista + Salto de esqui \ No newline at end of file diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml index 9464312798..78b128b95b 100644 --- a/OsmAnd/res/values-uk/phrases.xml +++ b/OsmAnd/res/values-uk/phrases.xml @@ -3881,4 +3881,10 @@ Тунель кажанів Міст кажанів Переправа диких тварин + Стан траси: зачинена + Стан траси: відчинена + Патрулюється: ні + Патрулюється: так + Назва траси + Cтрибки на лижах \ No newline at end of file diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml index 2677e6653a..a7fe870b96 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -3881,4 +3881,14 @@ 蝙蝠隧道 蝙蝠橋 野生動物穿越 + 行動圖書館停放位置 + 峰頂紀錄:否 + 峰頂紀錄:是 + 滑雪道狀態:關閉 + 滑雪道狀態:開放 + 巡邏:否 + 巡邏:是 + 林間空地:是 + 滑雪道名稱 + 跳台滑雪 \ No newline at end of file diff --git a/OsmAnd/res/values/attrs.xml b/OsmAnd/res/values/attrs.xml index c745589ef7..f75867c8e8 100644 --- a/OsmAnd/res/values/attrs.xml +++ b/OsmAnd/res/values/attrs.xml @@ -142,6 +142,7 @@ + diff --git a/OsmAnd/no_translate.xml b/OsmAnd/res/values/no_translate.xml similarity index 89% rename from OsmAnd/no_translate.xml rename to OsmAnd/res/values/no_translate.xml index d5ecc7c149..2ae0fc4ec5 100644 --- a/OsmAnd/no_translate.xml +++ b/OsmAnd/res/values/no_translate.xml @@ -1,7 +1,8 @@ - OsmAnd~ - OsmAnd Nightly + + + @@ -9,11 +10,7 @@ €2,99 €1,39 OsmAnd Live - UA-28342846-2 - 10 - true © OpenStreetMap - support@osmand.net Display language Device language diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index a15fb40cbd..8b1a73aa95 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -12,6 +12,19 @@ --> + Car + Motorbike + Off-road + Walking + Running + Hiking + Cycling + Mountainbike + Racing + Riding + Snowmobile + Winter + Water Login to OpenPlaceReviews Use test.openplacereviews.org OpenPlaceReviews diff --git a/OsmAnd/res/values/styles.xml b/OsmAnd/res/values/styles.xml index 5c074185ef..4648cba1cc 100644 --- a/OsmAnd/res/values/styles.xml +++ b/OsmAnd/res/values/styles.xml @@ -249,6 +249,7 @@ @color/text_input_background_light @drawable/img_help_announcement_time_day @color/switch_button_active_light + @drawable/bottom_navigation_item_bg_light