diff --git a/.github/ISSUE_TEMPLATE/5-feature-request.md b/.github/ISSUE_TEMPLATE/5-feature-request.md index 9c46069f8c..1315456d77 100644 --- a/.github/ISSUE_TEMPLATE/5-feature-request.md +++ b/.github/ISSUE_TEMPLATE/5-feature-request.md @@ -12,7 +12,7 @@ Existing issues often contain information about workarounds, resolution, or prog GitHub is our main development tool for our developers. There are hundreds of requests a month and there are relatively few developers. So by opening an issue, please know that your issue will be sent out to all developers and acknowledge that it could be closed without explanation or with just a brief message. -Comments on the closed issues are also sent to all developers, so you will definitely will be heard. +Comments on the closed issues are also sent to all developers, so you definitely will be heard. However, there is no guarantee that a developer will pick up the issue to work on it. Please be sure to read our [FAQ](https://osmand.net/help-online) before creating an issue here. diff --git a/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapPoiReaderAdapter.java b/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapPoiReaderAdapter.java index 857eb4f4d3..cb348cf9b4 100644 --- a/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapPoiReaderAdapter.java +++ b/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapPoiReaderAdapter.java @@ -11,8 +11,6 @@ import java.util.Arrays; import java.util.Comparator; import java.util.LinkedList; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; import net.osmand.Collator; import net.osmand.CollatorStringMatcher; @@ -576,13 +574,12 @@ public class BinaryMapPoiReaderAdapter { } } if (!matches) { - Map lt = am.getAdditionalInfo(); - for (Entry e : lt.entrySet()) { - if(!e.getKey().contains("_name") && - !e.getKey().equals("brand")) { + for (String key : am.getAdditionalInfoKeys()) { + if(!key.contains("_name") && + !key.equals("brand")) { continue; } - matches = matcher.matches(e.getValue()); + matches = matcher.matches(am.getAdditionalInfo(key)); if (matches) { break; } @@ -812,7 +809,6 @@ public class BinaryMapPoiReaderAdapter { } private boolean checkCategories(SearchRequest req, PoiRegion region) throws IOException { - StringBuilder subType = new StringBuilder(); while (true) { int t = codedIS.readTag(); int tag = WireFormat.getTagFieldNumber(t); diff --git a/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java b/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java index b0fe44ecfb..4af1596c2c 100644 --- a/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java +++ b/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java @@ -1,17 +1,7 @@ package net.osmand.data; -import net.osmand.Location; -import net.osmand.osm.MapPoiTypes; -import net.osmand.osm.PoiCategory; -import net.osmand.util.Algorithms; - -import org.json.JSONObject; - -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; @@ -21,9 +11,14 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.TreeSet; -import java.util.zip.GZIPInputStream; + +import org.json.JSONObject; import gnu.trove.list.array.TIntArrayList; +import net.osmand.Location; +import net.osmand.osm.MapPoiTypes; +import net.osmand.osm.PoiCategory; +import net.osmand.util.Algorithms; public class Amenity extends MapObject { @@ -96,12 +91,46 @@ public class Amenity extends MapObject { } - public Map getAdditionalInfo() { + // this method should be used carefully + public Map getInternalAdditionalInfoMap() { if (additionalInfo == null) { return Collections.emptyMap(); } return additionalInfo; } + + public Collection getAdditionalInfoValues(boolean excludeZipped) { + if (additionalInfo == null) { + return Collections.emptyList(); + } + boolean zipped = false; + for(String v : additionalInfo.values()) { + if(isContentZipped(v)) { + zipped = true; + break; + } + } + if(zipped) { + List r = new ArrayList<>(additionalInfo.size()); + for(String str : additionalInfo.values()) { + if(excludeZipped && isContentZipped(str)) { + + } else { + r.add(unzipContent(str)); + } + } + return r; + } else { + return additionalInfo.values(); + } + } + + public Collection getAdditionalInfoKeys() { + if (additionalInfo == null) { + return Collections.emptyList(); + } + return additionalInfo.keySet(); + } public void setAdditionalInfo(Map additionalInfo) { this.additionalInfo = null; @@ -182,7 +211,7 @@ public class Amenity extends MapObject { } int maxLen = 0; String lng = defLang; - for (String nm : getAdditionalInfo().keySet()) { + for (String nm : getAdditionalInfoKeys()) { if (nm.startsWith(tag + ":")) { String key = nm.substring(tag.length() + 1); String cnt = getAdditionalInfo(tag + ":" + key); @@ -204,7 +233,7 @@ public class Amenity extends MapObject { public List getNames(String tag, String defTag) { List l = new ArrayList(); - for (String nm : getAdditionalInfo().keySet()) { + for (String nm : getAdditionalInfoKeys()) { if (nm.startsWith(tag + ":")) { l.add(nm.substring(tag.length() + 1)); } else if (nm.equals(tag)) { @@ -229,7 +258,7 @@ public class Amenity extends MapObject { if (!Algorithms.isEmpty(enName)) { return enName; } - for (String nm : getAdditionalInfo().keySet()) { + for (String nm : getAdditionalInfoKeys()) { if (nm.startsWith(tag + ":")) { return getAdditionalInfo(nm); } @@ -345,4 +374,6 @@ public class Amenity extends MapObject { } return a; } + + } diff --git a/OsmAnd-java/src/main/java/net/osmand/data/MapObject.java b/OsmAnd-java/src/main/java/net/osmand/data/MapObject.java index cb121cedfc..d3700896b2 100644 --- a/OsmAnd-java/src/main/java/net/osmand/data/MapObject.java +++ b/OsmAnd-java/src/main/java/net/osmand/data/MapObject.java @@ -13,7 +13,6 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; @@ -351,8 +350,8 @@ public abstract class MapObject implements Comparable { return json; } - public String unzipContent(String str) { - if (str != null && str.startsWith(" gz ")) { + String unzipContent(String str) { + if (isContentZipped(str)) { try { int ind = 4; byte[] bytes = new byte[str.length() - ind]; @@ -369,6 +368,10 @@ public abstract class MapObject implements Comparable { } br.close(); str = bld.toString(); + // ugly fix of temporary problem of map generation + if(isContentZipped(str)) { + str = unzipContent(str); + } } catch (IOException e) { e.printStackTrace(); } @@ -376,6 +379,10 @@ public abstract class MapObject implements Comparable { return str; } + boolean isContentZipped(String str) { + return str != null && str.startsWith(" gz "); + } + protected static void parseJSON(JSONObject json, MapObject o) { if (json.has("name")) { o.name = json.getString("name"); diff --git a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java index becacd2775..e63870b1a7 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java @@ -741,7 +741,7 @@ public class SearchUICore { } } if (Algorithms.isEmpty(object.alternateName) && object.object instanceof Amenity) { - for (String value : ((Amenity) object.object).getAdditionalInfo().values()) { + for (String value : ((Amenity) object.object).getAdditionalInfoValues(true)) { if (phrase.getFirstUnknownNameStringMatcher().matches(value)) { object.alternateName = value; break; diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java index e5c791a780..c221d2ca77 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java @@ -602,7 +602,7 @@ public class SearchCoreFactory { sr.localeName = object.getName(phrase.getSettings().getLang(), phrase.getSettings().isTransliterate()); if (!nm.matches(sr.localeName) && !nm.matches(sr.otherNames) - && !nm.matches(object.getAdditionalInfo().values())) { + && !nm.matches(object.getAdditionalInfoValues(false))) { return false; } sr.object = object; @@ -1059,7 +1059,7 @@ public class SearchCoreFactory { if (!poiAdditionals.isEmpty()) { boolean found = false; for (String add : poiAdditionals) { - if(object.getAdditionalInfo().containsKey(add)) { + if (object.getAdditionalInfoKeys().contains(add)) { found = true; break; } diff --git a/OsmAnd-telegram/res/values-es/strings.xml b/OsmAnd-telegram/res/values-es/strings.xml index 29442e4212..d253eabfff 100644 --- a/OsmAnd-telegram/res/values-es/strings.xml +++ b/OsmAnd-telegram/res/values-es/strings.xml @@ -250,7 +250,7 @@ Elige la hora de visualización Fecha de Inicio — Fin Mensajes guardados - Seleccione la zona horaria que desea mostrar en los mensajes de ubicación. + Seleccione la zona horaria a mostrar en sus mensajes de ubicación. Zona horaria Unidades y formatos Cambia las unidades de longitud. diff --git a/OsmAnd-telegram/res/values-is/strings.xml b/OsmAnd-telegram/res/values-is/strings.xml index 6fa1ae4614..a915a2e4f4 100644 --- a/OsmAnd-telegram/res/values-is/strings.xml +++ b/OsmAnd-telegram/res/values-is/strings.xml @@ -43,8 +43,8 @@ Kílómetrar/metrar Síðasta uppfærsla frá Telegram: Fyrir %1$s síðan Vöktun er óvirk - Staða OsmAnd-rekjara - OsmAnd-rekjari + Staða OsmAnd-rakningar + OsmAnd-rakning Hópur mín/ml Netþjónn @@ -211,12 +211,12 @@ Ekki fundist ennþá Móttók GPX-punkta: %1$s Deili staðsetningu - Hvernig á að slökkva á OsmAnd-rekjaranum úr Telegram + Hvernig á að slökkva á OsmAnd-rakningu úr Telegram Ekki sent ennþá OsmAnd nettengdur GPS-rekjari - Skrá út úr OsmAnd-rekjara\? + Skrá út úr OsmAnd-rakningu\? Kveikt er á deilingu (slökkva) - Hvernig á að slökkva á OsmAnd-rekjaranum úr Telegram + Hvernig á að slökkva á OsmAnd-rakningu úr Telegram Virkjaðu \"Staðsetning\" í stillingunum stýrikerfisins Tengiliðir og hópar sem deila staðsetningu til þín. Tengstu við internetið til að geta skráð þig til fulls út úr Telegram. @@ -234,10 +234,10 @@ Veldu hvaða útgáfu OsmAnd þú vilt nota Gera alla deilingu óvirka Uppfærðu OsmAnd til að skoða gögn á kortinu - Veldu tímabelti til birtingar í staðsetningarskilaboðum þínum + Veldu tímabelti til birtingar í staðsetningarskilaboðum þínum. Veldu eina af staðsetningarþjónustunum til að deila staðsetningu þinni. Stilla tímabil þar sem allir eru sýnilegir - Veldu þá útgáfu OsmAnd sem OsmAnd-rekjarinn notar til að birta staðsetningar. + Veldu þá útgáfu OsmAnd sem OsmAnd-rakningin notar til að birta staðsetningar. Endilega settu upp Telegram og skráðu notandaaðgang. Settu inn Telegram-símanúmerið þitt á alþjóðlegu sniði Virkja vöktun til að vista allar staðsetningar í aðgerðaferli. @@ -260,4 +260,15 @@ Síðasta uppfærða staðsetning: Veldu nafn sem þú hefur ekki þegar notað Ekki mögulegt að senda á Telegram-spjöll: + Til að afturkalla heimildir til deilingar á staðsetningu, opnaðu Telegram, farðu í Stillingar → Gagnaleynd og öryggi → Setur, og bittu enda á setu OsmAnd-rakningar. + Þú getur útbúið og skoðað auðkenningu tækis (device ID) í Telegram-biðlaraforritinu með því að nota %1$s spjallvélmennið. %2$s + Ertu viss að þú viljir skrá þig út úr OsmAnd-rakningu þannig að þú getir ekki lengur deilt þinni staðsetningu eða séð staðsetningu annarra\? + Slokktu á bestun rafhlöðunýtingar fyrir OsmAnd-rakningu svo ekki slökkni á henni þegar forritið fer í bakgrunnsham (t.d. slökkt er á skjá). + OsmAnd-rakning er eitt af biðlaraforritunum sem nota opna Telegram-kerfið. Tengiliðirnir þínir geta notað eitthvað annað Telegram-biðlaraforrit. + OsmAnd-rakning gerir þér kleift að deila staðsetningu þinni og að sjá aðra í OsmAnd.

Forritið notar Telegram API-forritsviðmótið, þannig að þú verður að vera með Telegram-aðgang.
+ Ef þú ætlar að tengja mörg tæki við einn Telegram-notandaaðgang, þarftu að nota annað tæki til að deila staðsetningunni þinni. + Rauntíma + Breyta bestunarstillingum rafhlöðu til að auka stöðugleika í deilingu staðsetningar. + Veldu tímann sem valdir tengiliðir og hópar munu sjá staðsetningu þína í rauntíma. + Rauntíma núna \ No newline at end of file diff --git a/OsmAnd/build.gradle.lib b/OsmAnd/build.gradle.lib new file mode 100644 index 0000000000..b70a881218 --- /dev/null +++ b/OsmAnd/build.gradle.lib @@ -0,0 +1,521 @@ +//apply plugin: 'com.android.application' +apply plugin: 'com.android.library' + +// Global Parameters accepted +// TARGET_APP_NAME - app name +// APK_NUMBER_VERSION - version number of apk +// APK_VERSION_SUFFIX - build number like #99999Z, appended (for dev builds) to Manifest's versionName as X.X.X#99999Z +// Z means flavor: M=-master, D=-main-default, B=-Blackberry, Des=-design, MQA=-main-qt-arm, MQDA=-main-qt-default-arm, S=-sherpafy +// APP_EDITION - date stamp of builds +// APP_FEATURES - features +play_market +gps_status -parking_plugin -blackberry -free_version -amazon + +// 1. To be done Filter fonts +// +// +// +// +// +// +// Less important + +task printc { + configurations.each { if(it.isCanBeResolved()) println it.name } +} + +android { + compileSdkVersion 29 + buildToolsVersion "29.0.3" + // compileNdkVersion "android-ndk-r17b" + + signingConfigs { + development { + storeFile file("../keystores/debug.keystore") + storePassword "android" + keyAlias "androiddebugkey" + keyPassword "android" + } + + publishing { + storeFile file("/var/lib/jenkins/osmand_key") + storePassword System.getenv("OSMAND_APK_PASSWORD") + keyAlias "osmand" + keyPassword System.getenv("OSMAND_APK_PASSWORD") + } + } + + defaultConfig { + minSdkVersion System.getenv("MIN_SDK_VERSION") ? System.getenv("MIN_SDK_VERSION").toInteger() : 15 + targetSdkVersion 29 + versionCode 390 + versionCode System.getenv("APK_NUMBER_VERSION") ? System.getenv("APK_NUMBER_VERSION").toInteger() : versionCode + multiDexEnabled true + versionName "3.9.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 + // Stops the Gradle plugin’s automatic rasterization of vectors + // vectorDrawables.generatedDensities = ['hdpi'] + vectorDrawables.useSupportLibrary = true + } + + lintOptions { + lintConfig file("lint.xml") + abortOnError false + warningsAsErrors false + } + + /* + bundle { + language { + // Specifies that the app bundle should not support + // configuration APKs for language resources. These + // resources are instead packaged with each base and + // dynamic feature APK. + enableSplit = false + } + } + */ + // related to kuromoji + //packagingOptions { + // exclude '/META-INF/CONTRIBUTORS.md' + // exclude '/META-INF/LICENSE.md' + // exclude '/META-INF/NOTICE.md' + //} + + // This is from OsmAndCore_android.aar - for some reason it's not inherited + aaptOptions { + // Don't compress any embedded resources + noCompress "qz" + cruncherEnabled = false + // Flag notifies aapt to keep the attribute IDs around + // additionalParameters "--no-version-vectors" + } + + dexOptions { + javaMaxHeapSize "4g" + } + + sourceSets { + main { + manifest.srcFile "AndroidManifest.xml" + jni.srcDirs = [] + jniLibs.srcDirs = ["libs"] + aidl.srcDirs = ["src"] + java.srcDirs = ["src", "src-google"] + resources.srcDirs = ["src"] + renderscript.srcDirs = ["src"] + res.srcDirs = ["res"] + assets.srcDirs = ["assets"] + } + debug { + manifest.srcFile "AndroidManifest-debug.xml" + } + /* + full { + java.srcDirs = ["src-google"] + } + free { + java.srcDirs = ["src-google"] + manifest.srcFile "AndroidManifest-free.xml" + } + freedev { + java.srcDirs = ["src-google"] + manifest.srcFile "AndroidManifest-freedev.xml" + } + freehuawei { + java.srcDirs = ["src-huawei"] + manifest.srcFile "AndroidManifest-freehuawei.xml" + } + */ + legacy { + jniLibs.srcDirs = ["libc++"] + } + } + + flavorDimensions "coreversion", "abi" + productFlavors { + // ABI + armv7 { + dimension "abi" + ndk { + abiFilter 'armeabi-v7a' + } + } + arm64 { + dimension "abi" + ndk { + abiFilter 'arm64-v8a' + } + } + x86 { + dimension "abi" + ndk { + abiFilters 'x86', 'x86_64' + } + } + armonly { + dimension "abi" + ndk { + abiFilters 'arm64-v8a', 'armeabi-v7a' + } + } + fat { + dimension "abi" + ndk { + abiFilters 'arm64-v8a', 'x86', 'x86_64', 'armeabi-v7a' + } + } + + /* + // Version + freedev { + dimension "version" + applicationId "net.osmand.dev" + // resConfig "en" + } + free { + dimension "version" + applicationId "net.osmand" + } + full { + dimension "version" + applicationId "net.osmand.plus" + } + freehuawei { + dimension "version" + applicationId "net.osmand.huawei" + } + */ + // CoreVersion + // Build that doesn't include 3D OpenGL + legacy { + dimension "coreversion" + } + // Build that includes 3D OpenGL release + qtcore { + dimension "coreversion" + } + // Build that includes 3D OpenGL debug + qtcoredebug { + dimension "coreversion" + } + } + + buildTypes { + debug { + buildConfigField "String", "OPR_BASE_URL", "\"https://test.openplacereviews.org/\"" + buildConfigField "String", "OSM_OAUTH_CONSUMER_KEY", "\"Ti2qq3fo4i4Wmuox3SiWRIGq3obZisBHnxmcM05y\"" + buildConfigField "String", "OSM_OAUTH_CONSUMER_SECRET", "\"lxulb3HYoMmd2cC4xxNe1dyfRMAY8dS0eNihJ0DM\"" + signingConfig signingConfigs.development + } + release { + buildConfigField "String", "OPR_BASE_URL", "\"https://test.openplacereviews.org/\"" + buildConfigField "String", "OSM_OAUTH_CONSUMER_KEY", "\"Ti2qq3fo4i4Wmuox3SiWRIGq3obZisBHnxmcM05y\"" + buildConfigField "String", "OSM_OAUTH_CONSUMER_SECRET", "\"lxulb3HYoMmd2cC4xxNe1dyfRMAY8dS0eNihJ0DM\"" + signingConfig signingConfigs.publishing + } + } + +} + +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") + "<") + } + if (line.contains("\"versionFeatures\"") && System.getenv("APP_FEATURES")) { + return line.replaceAll(">[^<]*<", ">" + System.getenv("APP_FEATURES") + "<") + } + return line; +} + +task updateNoTranslate(type: Copy) { + from('.') { + include 'no_translate.xml' + filter { + line -> replaceNoTranslate(line); + } + } + into 'res/values/' +} + +task validateTranslate { + println "Validating translations" + + file("res").eachFileRecurse groovy.io.FileType.FILES, { + if (it.name == "strings.xml" || it.name == "phrases.xml") { + it.eachLine { line -> + if (line.contains("\$ s") || line.contains("\$ d") || line.contains("\$ f") || + line.contains(" \$s") || line.contains(" \$d") || line.contains(" \$f") || + line.contains("1\$ ") || line.contains("2\$ ") || line.contains("3\$ ") || + line.contains("%1s") || line.contains(" 1\$s") || + (line.contains("% \$") || line.contains("% 1") || line.contains("% 2") || + line.contains("% 3") || line.contains("% s"))) { + throw new GradleException("Incorrect translation " + it.getAbsolutePath() + " " + line); + } + } + } + } +} + +task downloadWorldMiniBasemap { + doLast { + ant.get(src: 'http://builder.osmand.net/basemap/World_basemap_mini_2.obf', dest: 'assets/World_basemap_mini.obf', skipexisting: 'true') + } +} + +task collectVoiceAssets(type: Sync) { + from "../../resources/voice" + into "assets/voice" + include "**/*.js" +} + +task cleanNoTranslate(type: Delete) { + delete('res/values/no_translate.xml') +} + +task collectFonts(type: Copy) { + from "../../resources/fonts" + from "../../resources/rendering_styles/fonts" +// from "../../resources/rendering_styles/fonts/OpenSans" + into "assets/fonts" + include "*.ttf" +} + +task collectHelpContentsStyle(type: Copy) { + from("../../help/website/help/") { + include "style.css" + } + into "assets" +} + +task collectHelpContentsAssets(type: Copy) { + from("../../help/website/help") { + include "about.html" + include "changes.html" + include "faq.html" + include "technical-articles.html" + include "map-legend.html" + } + from("../../help/website/feature_articles") { + include "*.html" + } + from("../../help/website/blog_articles") { + include "osmand-3-8-released.html" + } + into "assets/feature_articles" +} + +task copyPoiCategories(type: Copy) { + from("../../resources/poi") { + include "poi_categories.json" + } + into "assets" +} + +task copyMapShaderIcons(type: Sync) { + // from "../../resources/rendering_styles/style-icons/map-shaders-png" + // into "res/" + from "../../resources/rendering_styles/style-icons/map-shaders-vector" + into "res/drawable" + include "**/*.png", "**/*.xml" + preserve { + include '**/*' + exclude "**/h_*" + } +} + +task copyMapPOIIcons(type: Sync) { + from "../../resources/rendering_styles/style-icons/map-icons-vector" + into "res/drawable/" + // from "../../resources/rendering_styles/style-icons/map-icons-png" + // into "res/" + + include "**/*.png", "**/*.xml" + preserve { + include '**/*' + exclude "**/mm_*" + } +} + +task copyLargePOIIcons(type: Sync) { + from "../../resources/rendering_styles/style-icons/poi-icons-vector" + into "res/drawable/" + include "**/*.png", "**/*.xml" + preserve { + include '**/*' + exclude "**/mx_*" + } +} + +task copyWidgetIconsXhdpi(type: Sync) { + from "res/drawable-xxhdpi/" + into "res/drawable-large-xhdpi/" + include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + preserve { + include '*' + exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + } +} + +task copyWidgetIconsHdpi(type: Sync) { + from "res/drawable-xhdpi/" + into "res/drawable-large-hdpi/" + include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + preserve { + include '*' + exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + } +} + +task copyWidgetIcons(type: Sync) { + from "res/drawable-hdpi/" + into "res/drawable-large/" + include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + preserve { + include '*' + exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + } +} + +task collectExternalResources { + dependsOn collectVoiceAssets, + collectFonts, + collectHelpContentsAssets, + collectHelpContentsStyle, + copyMapShaderIcons, + copyMapPOIIcons, + copyLargePOIIcons, + updateNoTranslate, + validateTranslate, + copyWidgetIcons, + copyWidgetIconsHdpi, + copyWidgetIconsXhdpi, + copyPoiCategories, + downloadWorldMiniBasemap +} + +// Legacy core build +import org.apache.tools.ant.taskdefs.condition.Os + +task buildOsmAndCore(type: Exec) { + Gradle gradle = getGradle() + String tskReqStr = gradle.getStartParameter().getTaskRequests().toString().toLowerCase() + String flavour = ""; + if(!tskReqStr.contains("fat")) { + if(tskReqStr.contains("arm64")) { + flavour = flavour.length() == 0 ? "ARM64_ONLY" : "" + } + if(tskReqStr.contains("armv7")) { + flavour = flavour.length() == 0 ? "ARMV7_ONLY" : "" + } + if(tskReqStr.contains("armonly")) { + flavour = flavour.length() == 0 ? "ARM_ONLY" : "" + } + if(tskReqStr.contains("x86")) { + flavour = flavour.length() == 0 ? "X86_ONLY" : "" + } + } + + description "Build Legacy OsmAndCore" + + if (!Os.isFamily(Os.FAMILY_WINDOWS)) { + if(flavour.length() > 0) { + environment "$flavour", "1" + } + commandLine "bash", file("./old-ndk-build.sh").getAbsolutePath() + } else { + commandLine "cmd", "/c", "echo", "Not supported" + } +} + +task cleanupDuplicatesInCore() { + dependsOn buildOsmAndCore + // doesn't work for legacy debug builds + doLast { + file("libc++/armeabi-v7a").mkdirs() + file("libs/armeabi-v7a/libc++_shared.so").renameTo(file("libc++/armeabi-v7a/libc++_shared.so")) + file("libc++/arm64-v8a").mkdirs() + file("libs/arm64-v8a/libc++_shared.so").renameTo(file("libc++/arm64-v8a/libc++_shared.so")) + file("libc++/x86").mkdirs() + file("libs/x86/libc++_shared.so").renameTo(file("libc++/x86/libc++_shared.so")) + file("libc++/x86_64").mkdirs() + file("libs/x86_64/libc++_shared.so").renameTo(file("libc++/x86_64/libc++_shared.so")) + } +} + +afterEvaluate { + android.libraryVariants.all { variant -> + variant.javaCompiler.dependsOn(collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore) + } + Gradle gradle = getGradle() + String tskReqStr = gradle.getStartParameter().getTaskRequests().toString().toLowerCase() + if (tskReqStr.contains("huawei")) { + apply plugin: 'com.huawei.agconnect' + } +} + +task appStart(type: Exec) { + // linux + commandLine 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity' + // windows + // commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity' +} + +dependencies { + implementation project(path: ':OsmAnd-java', configuration: 'android') + implementation project(':OsmAnd-api') + implementation 'androidx.multidex:multidex:2.0.1' + implementation 'androidx.gridlayout:gridlayout:1.0.0' + implementation 'androidx.cardview:cardview:1.0.0' + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.2.1' + implementation 'androidx.browser:browser:1.0.0' + implementation 'androidx.preference:preference:1.1.0' + implementation fileTree(include: ['gnu-trove-osmand.jar', 'icu4j-49_1_patched.jar'], dir: 'libs') + + implementation group: 'commons-logging', name: 'commons-logging', version: '1.2' + implementation 'commons-codec:commons-codec:1.11' + implementation 'it.unibo.alice.tuprolog:tuprolog:3.2.1' + implementation 'org.apache.commons:commons-compress:1.17' + implementation 'com.moparisthebest:junidecode:0.1.1' + implementation 'org.immutables:gson:2.5.0' + implementation 'com.vividsolutions:jts-core:1.14.0' + implementation 'com.google.openlocationcode:openlocationcode:1.0.4' + implementation 'com.android.billingclient:billing:2.0.3' + // turn off for now + //implementation 'com.atilika.kuromoji:kuromoji-ipadic:0.9.0' + implementation 'com.squareup.picasso:picasso:2.71828' + implementation 'me.zhanghai.android.materialprogressbar:library:1.4.2' + // JS core + implementation group: 'org.mozilla', name: 'rhino', version: '1.7.9' +// size restrictions +// implementation 'com.ibm.icu:icu4j:50.1' +// implementation 'net.sf.trove4j:trove4j:3.0.3' + + qtcoreImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs') + qtcoredebugImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs') + + legacyImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar" + qtcoredebugImplementation "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar" + qtcoredebugImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar" + qtcoreImplementation "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar" + qtcoreImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar" + implementation ("com.getkeepsafe.taptargetview:taptargetview:1.12.0"){ + exclude group: 'com.android.support' + } + implementation 'com.github.PhilJay:MPAndroidChart:v3.0.1' + implementation ("com.github.HITGIF:TextFieldBoxes:1.4.5"){ + exclude group: 'com.android.support' + } + implementation('com.github.scribejava:scribejava-apis:7.1.1'){ + exclude group: "com.fasterxml.jackson.core" + } + implementation 'com.jaredrummler:colorpicker:1.1.0' + + //freehuaweiImplementation 'com.huawei.hms:iap:5.0.2.300' +} diff --git a/OsmAnd/res/drawable/ic_action_plan_route_point_colored.xml b/OsmAnd/res/drawable/ic_action_plan_route_point_colored.xml new file mode 100644 index 0000000000..7fb6be0078 --- /dev/null +++ b/OsmAnd/res/drawable/ic_action_plan_route_point_colored.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/OsmAnd/res/layout/fragment_opr_login.xml b/OsmAnd/res/layout/fragment_opr_login.xml index 3313679aec..5c5d4c23b5 100644 --- a/OsmAnd/res/layout/fragment_opr_login.xml +++ b/OsmAnd/res/layout/fragment_opr_login.xml @@ -1,15 +1,17 @@ - + android:layout_height="match_parent" + android:background="?attr/bg_color" + android:clickable="true" + android:focusable="true" + android:orientation="vertical"> + app:srcCompat="@drawable/ic_arrow_back" + app:tint="@color/icon_color_default_light" /> - + - + + - + + + + + + android:layout_height="wrap_content" + android:layout_marginLeft="@dimen/content_padding" + android:layout_marginTop="@dimen/content_padding_small" + android:layout_marginRight="@dimen/content_padding" + android:layout_marginBottom="@dimen/content_padding_small" + android:layout_alignParentBottom="true" + android:orientation="vertical"> - + android:layout_height="@dimen/dialog_button_height" + android:layout_marginBottom="@dimen/content_padding_small" /> - + android:layout_height="@dimen/dialog_button_height" /> - \ No newline at end of file + \ No newline at end of file diff --git a/OsmAnd/res/layout/opr_add_photo.xml b/OsmAnd/res/layout/opr_add_photo.xml new file mode 100644 index 0000000000..80d43411fe --- /dev/null +++ b/OsmAnd/res/layout/opr_add_photo.xml @@ -0,0 +1,41 @@ + + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/layout/settings_group_title.xml b/OsmAnd/res/layout/settings_group_title.xml new file mode 100644 index 0000000000..269d018021 --- /dev/null +++ b/OsmAnd/res/layout/settings_group_title.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/values-ar/phrases.xml b/OsmAnd/res/values-ar/phrases.xml index e5bc657997..a1560af76a 100644 --- a/OsmAnd/res/values-ar/phrases.xml +++ b/OsmAnd/res/values-ar/phrases.xml @@ -382,7 +382,7 @@ الوصول إلى المراحيض بالكراسي المتحركة: نعم الوصول إلى المراحيض بالكراسي المتحركة: لا الوصول إلى دورة المياة: العملاء فقط - طاولة تغيير الحفائض + طاولة تغيير حفائض الأطفال لا توجد طاولة تغيير الحفاض غرفة تغيير الحفاضات الوقت المحدد لوقوف السيارات @@ -563,7 +563,7 @@ مساحة تجارية حقل عنب مزرعة - مرعى أو مرج + مرعى/مرج/روضة قناة مراقبة مرصد @@ -1396,7 +1396,7 @@ كافتيريا الخدمات نوع الدراجة النارية - موحد + قياسية النوع محطة Aerialway رافعة بالكرسي @@ -1437,7 +1437,7 @@ مسار الزحلقة الحيوانات المسموح بها الغرض - الوجهة: مدخل + الاتجاه: المدخل قوارب مأجرة بئر نفط شبكات الكريكيت @@ -1569,32 +1569,32 @@ دولفين مكان لتغذية الحيوان قدرة تحمل المكان للماء: متين - بروز - تماس - التماس غير مقبول + بروز طبقات الأرض (تفجر أرضي) + تلامس + لا يتم قبول التلامس خطر خطر مواد نووية - خطر التآكل - خطر الانهيار - طريق زلقة + خطر الهيار/التعرية الأرضية + خطر الانهيار الجليدي + طريق زلق خطر فيضانات حقل الغام - أطلال + أطلال/أنقاض/خرائب فئات الترخيص تل تصليح أحذية نعم فقط - خط أنابيب فرعية - الإرسال + محطة فرعية لخطوط الأنابيب + ‌الإرسال/الدفع التوزيع توزيع ثانوي صناعية - مرحلة انتقالية - جر + ناقل + تغذية النقل (المترو/القطار ..) محول التعويض - ضغط + الضغط قياس صمام مجموعة صمامات @@ -1602,14 +1602,14 @@ ميدان تجمع إنتاج حلويات متجر جملة - مختبرات طبية + مختبر طبي التبرع بالدم قصص مصورة أثري ديني أكاديمي أطفال - جزر مرجانية + جزيرة مرجانية جهاز ارسال رسوم الكترونية رعاية أطفال معلم طبيعي @@ -1618,7 +1618,7 @@ قطار باص مترو انفاق - HOV + مركبات فيها أكثر من شخص ترام عبّارة مصدر الطاقة: الكتلة الحيوية @@ -2170,7 +2170,7 @@ رطب صعب المشي فيه،قصب اهوار مستنقع - مرعى أو مرج رطب طوال العام + مرعى/مرج رطب طوال العام الطفة البركانية القصدير حجر @@ -2179,7 +2179,7 @@ النوع: ساحة الطوب النوع: زراعة النوع: متلف/محطم السيارات - النوع: مستودع + النوع: مخزن النوع: مصفاة النوع: خشب النوع: صناعة الغاز @@ -2620,7 +2620,7 @@ النوع: قطع الصخور النوع: رمل النوع: قبر حرب - رِجّم (صخور مركومة) علامة + رِجْم، رجوم (صخور مركومة) عتبات مختلفة أو مائلة عتبات غير متساوية عتبات متساوية @@ -2961,4 +2961,702 @@ تركي عالمي تايلندي + برج رادار + (منطقة وقوف جانب الطريق) + سقيفة + على السطح + بنك ميغروس + بطاقة ما بعد التمويل + السحب النقدي: البطاقات الأجنبية + السحب النقدي: الحد الأدنى للشراء + رسوم السحب النقدي: لا + رسوم السحب النقدي: نعم + السحب النقدي: لا يتطلب الشراء + السحب النقدي: لابد من الشراء + عملة السحب النقدي + حد السحب النقدي + نوع السحب النقدي: الدفع الذاتي + نوع السحب النقدي: الدفع + مشغل السحب النقدي + سحب نقدي + السحب النقدي: نعم + العناية بالحيوانات الأليفة + شحن + نجار/صانع أثاث + مخبز + مبلط/تبليط/أرضيات + نجار + مقاولات/بناء + الغذاء الصحي + مدخل القبو + المعينه/المحدد + نعم + المعينه/المحدد + نعم + للتسليم والتوصيل فقط + المعينه/المحدد + للوصول للوجهة فقط + نعم + المعينه/المحدد + نعم + المعينه/المحدد + نعم + المعينه/المحدد + للوصول للوجهة فقط + نعم + المعينه/المحدد + نعم + المعينه/المحدد + نعم + المعينه/المحدد + نعم + المعينه/المحدد + نعم + خاص مسموح بدخوله + المعينه/المحدد + نعم + السماح بدخول المعاقين: لا + الخيول غير مسموح بها + مسموح بالخيول + السماح بدخول مركبات الأجرة: لا + السماح بدخول مركبات الأجرة: محدد + السماح بدخول مركبات الأجرة: نعم + السماح بدخول المركبات الزراعية: لا + السماح بدخول المركبات الزراعية: نعم + السماح بدخول الزلاجات الآلية: لا + السماح بدخول الزلاجات الآلية: خاص + السماح بدخول الزلاجات: لا + السماح بدخول الزلاجات: نعم + السماح بدخول مدربي القيادة: لا + السماح بدخول مدربي القيادة: نعم + السماح بدخول حافلات السياح: نعم + السماح بدخول حافلات السياح: لا + السماح بدخول حافلات السياح: محدد + السماح بدخول الحافلات: لا + السماح بدخول مركبات الخدمات العامة: لا + السماح بدخول مركبات الخدمات العامة: محدد + السماح بدخول مركبات الخدمات العامة: لا + السماح بدخول المقطورات: لا + السماح بدخول البيوت المتنقلة: لا + السماح بدخول الكرفانات: لا + السماح بدخول المشاة: للعملاء فقط + السماح بدخول المشاة: للعبور إلى الوجهة فقط + السماح بدخول المشاة: لا + السماح بدخول المشاة: خاص + السماح بدخول المشاة: نعم + السماح بدخول الخيول: الخاصة بالغابات + السماح بدخول الخيول: للعبور إلى الوجهة + السماح بدخول الخيول: خاص + السماح بدخول الدراجات: للعملاء فقط + السماح بدخول الدراجات: للعبور إلى الوجهة + السماح بدخول الدراجات: بدون قيادتها (سحبها مشياً) + السماح بدخول الدراجات:خاص + السماح بدخول الدراجات الآلية:لا + السماح بدخول الدبابات الصغيرة:لا + السماح بدخول الدراجات النارية:لا + السماح بدخول الدراجات النارية:خاص + السماح بدخول المركبات الصغيرة:لا + السماح بدخول المركبات الكبيرة:غير ملائم + السماح بدخول المركبات الكبيرة:غير مناسب + السماح بدخول المركبات الكبيرة:الزراعية + السماح بدخول المركبات الكبيرة:لا + السماح بدخول المركبات الكبيرة:خاص + السماح بدخول المركبات الآلية:الزراعية + السماح بدخول المركبات الآلية:الخاصة بالغابات + السماح بدخول المركبات الآلية: للتسليم فقط + السماح بدخول المركبات الآلية:العسكرية + السماح بدخول المركبات الآلية:العملاء فقط + السماح بدخول المركبات الآلية:للوصول إلى الوجهة فقط + السماح بدخول المركبات الآلية:لا + السماح بدخول المركبات الآلية:خاص + السماح بدخول المركبات الآلية:نعم + السماح بدخول السيارات: الخاصة بالغابة + السماح بدخول السيارات: العملاء + ‏‏ خاص مسموح بدخوله + خاص مسموح بدخوله + السماح بدخول المشاة: خاص مسموح بدخوله + السماح بدخول الخيول: خاص مسموح بدخوله + السماح بدخول الدرجات: خاص مسموح بدخوله + السماح بدخول المركبات الآلية: خاص مسموح بدخوله + السماح بدخول السيارات: خاص مسموح بدخوله + السماح بدخول السيارات: للعبور للوجهة + السماح بدخول السيارات: لا + السماح بدخول السيارات:خاص + السماح بدخول السيارات: + السماح بدخول المركبات: الخاصة بالغابات + السماح بدخول المركبات: لتسليم الطلبات + السماح بدخول المركبات: العسكرية + السماح بدخول المركبات: العملاء فقط + السماح بدخول المركبات: خاص مسموح بدخوله + السماح بدخول المركبات: للعبور للوجهة + السماح بدخول المركبات: لا + السماح بدخول المركبات: خاص + السماح بدخول المركبات: نعم + مكتب سيارات الأجرة + رسوم على طاولة تغيير الأطفال: لا + رسوم على طاولة تغيير الأطفال: نعم + عدد طاولات تغيير الأطفال + موقع طاولة تغيير للأطفال: دورة مياة للجنسين + موقع طاولة تغيير للأطفال: دورة مياة النساء + موقع طاولة تغيير للأطفال: دورة مياة الرجال + موقع طاولة تغيير للأطفال: غرفة + طاولة تغيير للأطفال: محدودة (غير رسمية) + طاولة تغيير للأطفال: لا + طاولة تغيير للأطفال: نعم + الموقع (وصف المكان) + الخطر: التلوث + الخطر: حقل ألغام + الخطر: انهيار جليدي + الخطر: فيضان + الخطر: نووي + الخطر: سقوط الصخور + خطر: تآكل/تعرية + صندوق الطوارئ + كائن محذوف + شعلة الغاز ؛ مداخن مضيئة + 3B* + 3B + 3A* + 3A + 2B* + 2B + 2A* + 2A + 1B* + 1B + 1A* + 1A + n/c* + n/c + شوكو + نيما 14-50 + نيما 14-30 + نيما 5-20 + نيما 5-15R + تسلا رودستر + شاحن تسلا + معيار تسلا + شاديمو + النوع 3 + النوع 2 كومبو + النوع 2 + النوع 1 كومبو + النوع 1 + CEE الأحمر 125A + CEE الأحمر 64 أ + CEE الأحمر 32A + CEE الأحمر 16A + CEE الأزرق + متجر قوارب + متجر موقد/مشب + متجر زراعي + أغذية مجمدة + النوع: مرعى + النوع: انتقالي + النوع: دائم + النوع: زراعي + قطر القمة + محيط + طرق التسلق + تسلق قمة الجذوع: لا + تسلق قمة الجذوع: نعم + اتجاه الجدار: شمال غرب + اتجاه الجدار: غرب + اتجاه الجدار: جنوب غرب + اتجاه الجدار: جنوب + اتجاه الجدار: جنوب شرق + اتجاه الجدار: شرق + اتجاه الجدار: شمال شرق + اتجاه الجدار: شمال + المراسي الثابتة: لا + المراسي الثابتة: نعم + جودة التسلق: هشة + جودة التسلق: ثابت + تسلق الصخور: الرخام السماقي + تسلق الصخور: النيس + تسلق الصخور: الكوارتز + تسلق الصخور: الحجر الرملي + تسلق الصخور: الجرانيت + تسلق الصخور: الحجر الجيري + طول الحد الأقصى للتسلق + طول الحد الأدنى للتسلق + طول مساحة التسلق + التسلق الفردي في المياه العميقة: لا + التسلق الفردي في المياه العميقة: نعم + مختلط: لا + مختلط: نعم + الجليد: لا + الجليد: نعم + طرق متعددة : لا + طرق متعددة: نعم + تقليدي: لا + تقليدي: نعم + حبل علوي: لا + حبل علوي: نعم + بولدرينغ: لا + بولدرينغ: نعم + الرياضة: لا + الرياضة: نعم + الرمز البريدي + صندوق الرسائل + مستودع + حجم الخريطة: المنطقة + حجم الخريطة: المدينة + حجم الخريطة: الموقع + نوع الخريطة: الطبوغرافية التي توضح معالم الاتجاهات + نوع الخريطة: مخطط + نوع الخريطة: طبوغرافية + مخرج محطة الشحن + التيار/أمبير + رسوم وقوف السيارات: لا + رسوم وقوف السيارات: نعم + شاحنة: لا + شاحنة: نعم + المقبس: CEE الأحمر 32A: التيار + المقبس: CEE الأحمر 64A: التيار + ‍المقبس: CEE الأحمر 125A: التيار + مأخذ التوصيل: النوع 1: التيار + مأخذ التوصيل: نوع 1 التحرير والسرد: التيار + مأخذ التوصيل: النوع 2: التيار + المقبس: نوع 2 التحرير والسرد: التيار + مأخذ التوصيل: النوع 3: التيار + المقبس: CHAdeMO: التيار + المقبس: تيسلا رودستر: التيار + المقبس: نيما 14-50: التيار + المقبس: CEE الأحمر 16A: التيار + المقبس: CEE الأزرق: التيار + سكوتر: لا + سكوتر: نعم + الدراجة: لا + الدراجة: نعم + السيارة: لا + السيارة: نعم + المقبس: AS / NZS 3112: الإخراج + المقبس: AS / NZS 3112: التيار + المقبس: AS / NZS 3112 + المقبس: BS 1363: الإخراج + مأخذ التوصيل: BS 1363: التيار + المقبس: BS 1363 + المقبس: شوكو: الإخراج + المقبس: Schuko: التيار + المقبس: شوكو + المقبس: نيما 14-50: الإخراج + المقبس: نيما 14-30 + المقبس: نيما 14-30: الإخراج + المقبس: نيما 14-30: التيار + المقبس: نيما 14-30 + المقبس: نيما 5-20: الإخراج + المقبس: نيما 5-20: التيار + المقبس: نيما 5-20 + المقبس: نيما 5-15R: الإخراج + المقبس: نيما 5-15R: التيار + المقبس: نيما 5-15R + المقبس: تسلا رودستر: الإخراج + المقبس: تسلا رودستر + المقبس: تسلا شاحن: الإخراج + المقبس: تسلا شاحن: التيار + المقبس: تسلا سوبر تشارج + المقبس: معيار تسلا: الإخراج + المقبس: معيار تسلا: التيار + المقبس: معيار تسلا + مأخذ التوصيل: CHAdeMO: الإخراج + المقبس: شاديمو + مأخذ التوصيل: النوع 3: الإخراج + المقبس: النوع 3 + المقبس: النوع 2 التحرير والسرد: الإخراج + المقبس: نوع 2 كومبو + مأخذ التوصيل: نوع 2: الإخراج + المقبس: النوع 2 + المقبس: نوع 1 التحرير والسرد: الإخراج + المقبس: نوع 1 كومبو + مأخذ التوصيل: النوع 1: الإخراج + المقبس: النوع 1 + المقبس: CEE الأحمر 125A: الإخراج + المقبس: CEE الأحمر 125A + المقبس: CEE الأحمر 64A: الإخراج + المقبس: CEE الأحمر 64A + المقبس: CEE الأحمر 32A: الإخراج + المقبس: CEE الأحمر 16A + المقبس: CEE الأحمر 16A: الإخراج + المقبس: CEE الأحمر 16A + المقبس: CEE الأزرق: الإخراج + المقبس: CEE الأزرق + عائلات متعددة + العائلة + المجتمع + مياه معبأة + خزان ماء + نقل المياه بالشاحنات + الثقب + مضخة + المياه الجارية + خط انابيب + بئر ماء + أكواتابس + التناضح العكسي + الكلور + بدون + نقطة GPX + الغاز الطبيعي المسال + متجر البندق + خلية نحل + الجدول الزمني + في الوقت الحقيقي + تأخير + نعم + لوحة المغادرين: لا + مصعد + كتلة المدينة + محافظة + صندوق العطايا + أسهم: لا + نعم + نعم + الاهتزاز: لا + حالة المضخة: شعاع مفقود + شفط + مضغوط + مياه جوفية + أنابيب + شبكة تعبئة مياه الشرب + إعادة تعبئة مياه الشرب:لا + نعم + عائق + مستوى الماء: أقل من مستوى الماء + مستوى الماء: فوق متوسط مستوى الماء + مستوى الماء: عائم + مستوى الماء: فيضانات + منسوب الماء: متقاذف/متلاطم + مستوى الماء: يغطي + مستوى الماء: جاف + مستوى الماء: مغمور + مستوى الماء: جزء مغمور + غير صحيح + بدائي + متباين اللون + فقط عندما يسمح بالمشي + لا + نعم + نوع الكشك + كشك + لا + نعم + قاعدة الصيد + رقم مرجع الزحلقة + مركز البولينج + متجر الأمن + إنقاذ الجبال + بينتبول (كرة الطلاء) + دراجة الشبح + عدد الانفجارات + خامل + نشط + في سبات + منطفئ/خامد + آخر ثوران بركاني + طينيه + قبة الحمم البركانية + فوه بركانيه كبيرة + لكن + درع + ستراتوفوكانو + سكوريا + الرابط + أماكن لوقوف السيارات + قبر + جنس المجتمع: ذكر + جنس المجتمع: أنثى + لا + نعم + حمام القدم + بحيرة + نهر + حراري + حمام + أونسن + ينبوع ساخن + بوستبنك + جيروكارد + قدرة تحمل المكان للماء: للطوارئ + معطل + يحتاج إلى صيانة + مقيد + مغلق + مفتوح + الرؤية: المنطقة (أعلى من 50 متر) + الرؤية: الشارع (10-50 متر) + الرؤية: منزل (10 متر) + الموقع: المدخل + الموقع: الجدار + الموقع: الجسر + الموقع: كشك + الموقع: منصة + الموقع: داخلي + الموقع: في الهواء الطلق + الموقع: السطح + الموقع: السقف + الموقع: في الهواء + الموقع: فوق الأرض + الموقع: تحت الماء + الموقع: تحت الارض + شبكة معدنية + DecoTurf + العشب الصناعي + طرطان + طين + منطقة جبلية + أخدود/تلعة + الخدمات الاجتماعية + الضمان الاجتماعي + أرشيف + الشبكة + كانوي: لا + كانوي: نعم + زوارق الكاياك: لا + زوارق الكاياك: نعم + زورق: لا + زورق: نعم + المراكب الشراعية: لا + المراكب الشراعية: نعم + جيتسكي: لا + جيتسكي: نعم + الدواسات: لا + الدواسات: نعم + المراكب: لا + المراكب: نعم + القوارب: لا + القوارب: نعم + تأجير قوارب + أسرة/سرير + الحجز: للأعضاء فقط + الحجز: لا + الحجز: نعم + الحجز المسبق: موصى به + الحجز المسبق: مطلوب + غرفة الشتاء: لا + غرفة الشتاء: نعم + الاتجاه: لأسفل + اتجاه: لأعلى + الاتجاه: عكس اتجاه عقارب الساعة + الاتجاه: اتجاه عقارب الساعة + الاتجاه: للخلف + الاتجاه: إلى الأمام + الاتجاه: الشمال والشمال الغربي + الاتجاه: شمال غربي + الاتجاه: الغرب والشمال الغربي + الاتجاه: الغرب + الاتجاه: الغرب والجنوب الغربي + الاتجاه: جنوب غربي + الاتجاه: الجنوب والجنوب الغربي + الاتجاه: الجنوب + الاتجاه: جنوب-جنوب شرق + الاتجاه: جنوب شرق + الاتجاه: شرق وجنوب شرق + الاتجاه: شرق + الاتجاه: شرق - شمال شرق + الاتجاه: شمال شرقي + الاتجاه: الشمال والشمال الشرقي + الاتجاه: شمال + ميناء فضائي + إطلاق السراح: لا + إطلاق السراح: نعم + التبني: لا + التبني: نعم + مالك + مزدوج + الطرق الوعره + المروحيه + دراجة رياضية + سكوتر + ملابس الدراجات النارية: لا توجد + ملابس الدراجات النارية + إطارات: لا + اطارات + قطع غيار: لا + قطع غيار + إصلاح: لا + إصلاح + تأجير: لا + تأجير + المبيعات: مستعملة + المبيعات: نعم ، مستعملة + مبيعات: لا + مبيعات + منصة + زواحف + صقور + مطير (قفص) + طيور + حديقة سفاري + سياج + حديقة حيوانات برية + حديقة الحيوانات الأليفة + طوق النجاة + مدرسة لغة + مخيم للأطفال + إصلاح الإلكترونيات: الهاتف + إصلاح الإلكترونيات: الأجهزة + إصلاح الإلكترونيات: أجهزة الكمبيوتر + مكتب تجهيزات الطاقة + نعم + مساحة عمل مشتركة + محطة الشحن + البناء: مخفي + البناء: قبة + البناء: طبق + البناء: قائم بذاته + البناء: شبكة فولاذية + النوع: إسطبل مفتوح + النوع:مربط خيول + كومة فحم + متجر الأجهزة + تاريخ الانتهاء + صخرة + دورة + إلكتروني + إبرة + دفتر ملاحظات + رمز + نقطة الختم + نقطة تفتيش للمشاة/الهايكنق + متوسط الميلان + أدنى نقطة + أعلى نقطة + اللسان الجليدي + بقايا + الجرف + صخرة + انهيار الجليد + معلقة + جبل + مياه المد + منفذ + وادي + هضبة + الحقل الجليدي + الغطاء الجليدي + الصعوبة + رقم الكابل + فيا فيراتا (مسار الحديد) + مغامرة التسلق + المسار الإنزلاقي + كفرات/جنوط + الإطارات + إصلاح مكاين/محركات + إصلاح قير + ميزان/وزن أذرعة ومقصات + شكمان/كاتم صوت/دبات + تصليح شاحنات ومعدات ثقيلة + زجاج + الكهربائية + سمكرة وتعديل جسم السيارة + تبريد/مكيفات + بطاريات + قطع غيار السيارات + تشخيص/فحص + مبيعات السيارات الجديدة + فرامل + مبيعات السيارات المستعملة + تغيير زيت + إصلاح السيارات + مكتب مرافق المياه + شواية: نعم + نقطة تسليم المحل + اسم منحدرات النهر + فخار + متجر الأرضيات + منخفض + متوسط + عالي + منخفض + متوسط + عالي + منخفض + متوسط + عالي + منخفض + متوسط + عالي + منخفض + متوسط + عالي + منخفض + متوسط + عالي + AS/NZS 3112 + BS 1363 + طاولة نزهة + وجهة نظر + منطقة دينية + الوصول إلى الإنترنت: رسوم مفروضة + الوصول إلى الإنترنت: نعم + الوصول إلى الإنترنت: خدمة + الوصول إلى الإنترنت: عام + ولوج الإنترنت: سلكي + "ولوج الإنترنت: terminal" + ولوج الإنترنت: wlan + ماهايانا + ماروني + شينجون شو + ارثوذكسي قبطي + موحد + الأرثوذكسية الإثيوبية التوحيدية + الأرثوذكسية الرومانية + عالم + الأرثوذكسية الجورجية + كنيسة المسيح المتحدة + كنيسة المسيح + قديسي اليوم الأخير + اصلاح + رسولي + رسولي أرميني + روحاني + الأرثوذكسية الصربية + المؤمنون القدامى + تجمعي + ناصري + سبتي + غير طائفي + تجميعات الإله + الأرثوذكسية البلغارية + كواكر + مينونايت + توحيد + كنيسة إغليسيا ني كريستو + جيش الخلاص + كنيسة اسكتلندا + الكنيسة الإصلاحية الموحدة + التبت + كاثوليكي يوناني + متحد + الأسقفية + كنيسة إنجلترا + رسولي جديد + سبتي (مؤمن برجوع المسيح في اليوم السابع) + تم إصلاحه + الأرثوذكسية اليونانية + شهود يهوه + المورمون + الأنجليكانية + الزرادشتية + ديانة تينريكيو اليابانية + علم السايونتولوجيا + البهائية + الديانة الجاينية الهندية + التوحيد الكوني + قطار (سياحي) + أرجوحة ملاهي دوارة + التزحلق الصيفي + قطار الملاهي + متاهة + دائري + عجلة فيريس/ملاهي + حيوان (جذب) + جولة تسلية + شيء سياحي + جذب سياحى + منجم تاريخي + حطام سفينة + حجر الشاهد القائم الروني + دبابة تاريخية \ No newline at end of file diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 26b1bd66e3..273570acdf 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -471,7 +471,7 @@ إفريقيا آسيا أستراليا و أوقيانوسيا - الملاحة + التوجيه مع الطرق ضبط خاص لكل وضع من أوضاع الملاحة. إدارة بيانات الخرائط إعدادات عامة @@ -1153,7 +1153,7 @@ حذف إجراء التعديلات وقت وقوف السيارات يقتصر على - أقل + تدلي قائمة منبسطة تعديل OSM فارغ %1$s @@ -2454,7 +2454,7 @@ تصفح الخريطة وإضافة نقاط قياس المسافة الرجاء إضافة نقطة واحدة على الأقل. - اسم مسار الـGPX : + اسم مسار GPX : عرض على الخريطة بعد الحفظ إضافة نقطة حفظ نقطة GPX @@ -3329,7 +3329,7 @@ جولة تزلج طرق لجولات التزلج. تزلج - منحدرات للاستخدام الزلاجات. + منحدرات لاستخدام الزلاجات. السماح بالمسارات المتوسطة طرق أكثر صعوبة مع أقسام أكثر حدة. بعض العقبات التي ينبغي تجنبها. السماح للطرق المتقدمة @@ -3909,10 +3909,10 @@ التوجيه على مرحلتين لملاحة السيارة. تطوير النقل العام المحلي قم بالتبديل إلى Java (الآمن) حساب توجيه النقل العام - قم بتسجيل الدخول إلى OAuth لاستخدام ميزات osmedit + سجّل الدخول باستخدام OAuth لاستخدام ميزات osmedit تسجيل الدخول عبر OAuth مسح رمز OpenStreetMap OAuth - تسجيل الخروج بنجاح + تم تسجيل الخروج تم استيراد الملف بالفعل في أوسماند استخدام خوارزمية توجيه من مرحلتين A* %1$s البيانات المتوفرة فقط على الطرق ، تحتاج إلى حساب طريق باستخدام \"الطريق بين النقاط\" للحصول عليها. @@ -3940,32 +3940,44 @@ انتهت صلاحية اشتراك OsmAnd Live تم إيقاف اشتراك OsmAnd Live مؤقتًا اشتراك OsmAnd Live معلق - تسجيل الدخول إلى خريطة الشارع المفتوح + تسجيل الدخول ل OpenStreetMap تسجيل الدخول إلى OpenStreetMap.org - تحتاج إلى تسجيل الدخول لرفع التغييرات الجديدة أو المعدلة. + قم بتسجيل الدخول لرفع التغييرات الجديدة أو المعدلة. \n -\nيمكنك تسجيل الدخول باستخدام طريقة التفويض الآمنة أو استخدام تسجيل الدخول وكلمة المرور. - استخدام تسجيل الدخول وكلمة المرور +\nإما باستخدام OAuth أو باستخدام اسم المستخدم وكلمة المرور. + سجل الدخول باسم المستخدم وكلمة المرور الحساب - تسجيل الدخول + اسم المستخدم \"إمكانية التتبع\" تعني أن التتبع لا يظهر في أي قوائم عامة ولكن نقاط التتبع المعالجة مع طوابع زمنية صادرة عنها(التي لا يمكن أن تكون مرتبطة بك مباشرة) ستظهر خلال التنزيلات من واجهة برمجة التطبيقات GPS API العامة. سجل تاريخ العلامات أرسل ملف GPX إلى OpenStreetMap أدخل العلامات مفصولة بفاصلة. \"خاص\"يعني أن التتبع لن يظهر في أي قوائم عامة ، ولكن نقاط التتبع الصادرة عنه ستظل متاحة من خلال واجهة برمجة تطبيقات GPS API العامة بدون طوابع زمنية ولكن لن يتم ترتيبها ترتيبًا زمنيًا. - قم بتسجيل الدخول باستخدام OpenStreetMap + سجّل الدخول باستخدام OpenStreetMap عام يعني أنه سيتم عرض التتبع بشكل عام في تتبعات GPS الخاصة بك وفي قوائم تتبع GPS العامة. البيانات المقدمة عبر API لا تشير إلى صفحة التتبع الخاصة بك. الطوابع الزمنية لنقاط التتبع غير متاحة من خلال واجهة برمجة تطبيقات GPS API العامة، والنقاط غير مرتبة ترتيبًا زمنيًا. ومع ذلك، لا يزال المستخدمون الآخرون قادرين على تنزيل التتبع الأولي من قائمة التتبع العامة وأي طوابع زمنية مضمنة فيه. متعرف عليه يعني أنه سيتم عرض التتبع بشكل عام في تتبعات GPS الخاصة بك وفي قوائم تتبع GPS العامة، أي سيتمكن المستخدمون الآخرون من تنزيل التتبع الأولي وربطه باسم المستخدم الخاص بك. ستشير البيانات التي يتم تقديمها عبر API نقاط التتبع إلى صفحة التتبع الأصلية الخاصة بك. الطوابع الزمنية لنقاط التتبع متاحة من خلال واجهة برمجة تطبيقات GPS API العامة. أغلاق ملاحظة OSM تعليق ملاحظة OSM - يمكنك تسجيل الدخول باستخدام طريقة OAuth الآمنة أو استخدام تسجيل الدخول وكلمة المرور الخاصة بك. + قم بتسجيل الدخول باستخدام طريقة OAuth الآمنة أو استخدم اسم المستخدم وكلمة المرور. إضافة صورة سجل في \nOpenPlaceReviews.org - يتم توفير الصور من خلال مشروع البيانات المفتوحة OpenPlaceReviews.org. من أجل رفع الصور الخاصة بك، تحتاج إلى الاشتراك بالموقع. + قم بتسجيل الدخول إلى موقع مشروع البيانات المفتوحة OpenPlaceReviews.org لرفع المزيد من الصور. إنشاء حساب جديد لدي حساب بالفعل كاياك (قوارب صغيرة فردية) زورق سجل البحث + جهازك يحتوي على %1$s فقط متاحة . الرجاء إخلاء بعض المساحة أو إلغاء تحديد بعض العناصر للتصدير. + المصادر + حجم الملف التقريبي + حدد البيانات التي سيتم تصديرها إلى الملف. + مطلوب للاستيراد + لا يوجد مساحة كافية + أضف إلى مابيلاي + إضافة إلى OpenPlaceReviews + ويعرض صورًا من عدة مصادر: +\nOpenPlaceReviews - صور POI ؛ +\nMapillary - صور على مستوى الشارع ؛ +\nالويب / ويكيميديا - صور POI المحددة في بيانات OpenStreetMap. \ No newline at end of file diff --git a/OsmAnd/res/values-az/strings.xml b/OsmAnd/res/values-az/strings.xml index dfafcf937d..42fe8796e1 100644 --- a/OsmAnd/res/values-az/strings.xml +++ b/OsmAnd/res/values-az/strings.xml @@ -1700,8 +1700,8 @@ Proqramı növbəti dəfə başlatdığınızda qrup yox olacaq. Xəritədə oxları göstər Xəritə işarələrindən sil - azalan - artan + Z-A + A-Z Əlavə edildi Sırala: Bütün xəritə işarələri tarixçəyə daşındı @@ -2069,7 +2069,7 @@ Vikisəyahət Üst panel %1$s düzəliş, cəmi %2$s mBTC - Ye + Yeni marşrut yarat Hazırdır Naviqasiya profili OsmAnd Live məlumatları @@ -2090,4 +2090,84 @@ İstifadəçi adı Şəkil əlavə et Yeni hesab yarat + Bərpa et + t + + Daşıma + Xəritələri daşı + %1$d fayl kopyalandı (%2$s). + %1$d fayl daşındı (%2$s). + GPS axtarılır + Proqram profilləri + Profil adı + İcazə ver + Xeyr, təşəkkürlər + İkon + %s saxlandı + Standart + Pulsuz + Üç ay + İl + İl + İl + Ay + Ay + Ay + Həftə + Həftə + Həftə + Gün + Gün + Gün + OsmAnd parametrləri + Qovluq… + %1$s GB boş (%2$s GB-dan) + %1$s kB + %1$s MB + %1$s GB + %1$s TB + Xəritələr + Hesabla + Bütün xəritələri yenilə + + %s endirilir + OSM + İstifadəçi adı və şifrə + Bildiriş + %1$s/%2$s + %1$s — %2$s — %3$s + Menyu + Parametrləri aç + Profillər + Bucaq + Bucaq: %s° + Xüsusi profil + Yeni profil saxlanılır + %2$s-dən %1$s + Dillər + Dil + Bütün dillər + Xüsusi rəng + %1$s / %2$s + OsmAnd + Mapillary + Favoritlər + Naviqasiya profilləri + Profil əlavə et + Proqram profilini dəyiş + Hər zaman + SQLiteDB faylı + Hamısı silinsin\? + Aktiv saxla + Sil + ton + metr + Mapillary-ni göstər/gizlət + Mapillary-ni gizlət + Mapillary-ni göstər + %1$s silindi + Sil və yenidən başlat + Vikipediya xəritələrini endir + Bağlanmış OSM qeydi + Xüsusi + Son düzəliş \ No newline at end of file diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index 374d0b113a..c23e4be8e6 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -1521,7 +1521,7 @@ Délka %2$s
Výškové omezení Zadejte výšku vozidla, která musí být povolena na cestách. Inteligentní přepočítávání trasy - Pro dlouhé cesty přepočítat pouze počáteční úsek trasy. + Přepočítá pouze počáteční úsek trasy. Může se hodit pro dlouhé trasy. Odhlásit Importovat do OsmAnd Přečíst celý článek (on-line) @@ -3090,15 +3090,15 @@ Zobrazená oblast: %1$s x %2$s
Terénní Nastavit profil Profil si udrží své vlastní nastavení - Vybrat výchozí nastavení mapy u profilu - Vybrat výchozí nastavení obrazovky u profilu - Vybrat výchozí nastavení navigace u profilu + Zvolte nastavení mapy pro profil + Zvolte nastavení obrazovky pro profil + Zvolte nastavení navigace pro profil Určete maximální počet přestupů Počet přestupů Probudit na odbočce - Nastavte čas, po který bude obrazovka zapnutá. + Nastavte, jak dlouho bude obrazovka zapnutá. Použít senzor přiblížení - Zamávejte rukou přes horní část obrazovky pro zapnutí obrazovky při navigování. + Zamávání rukou nad obrazovkou ji zapne. 1. třída 2. třída 3. třída @@ -3110,7 +3110,7 @@ Zobrazená oblast: %1$s x %2$s
Obecná klávesnice WunderLINQ Parrot - Prosíme, zapněte alespoň jeden profil aplikace, pro použití tohoto nastavení. + Pro použití tohoto nastavení zapněte prosím alespoň jeden profil aplikace. Zimní cesta Ledová cesta Zimní a ledové cesty @@ -3159,7 +3159,7 @@ Zobrazená oblast: %1$s x %2$s
Nainstalované moduly Nastavení navigace Vzhled aplikace, jednotky, oblast - Upozornění jsou zobrazena vlevo dole během navigace. + Upozornění zobrazená vlevo dole během navigace. Jazyk a výstup Obnovit do základního nastavení Spravovat profily aplikace… @@ -3170,14 +3170,14 @@ Zobrazená oblast: %1$s x %2$s
Mapa během navigace Mapa během navigace Další - Hmotnost, výška, rychlost + Hmotnost, výška, délka, rychlost Parametry vozidla Hlasová oznámení se přehrávají pouze během navigace. Navigační pokyny a oznámení Hlasová oznámení Konfigurace parametrů trasy Parametry trasy - Použito pro odhadnutí času příjezdu u cest s neznámým povrchem a pro omezení rychlosti u všech cest (může ovlivnit trasu) + Odhaduje času příjezdu u cest s neznámým povrchem a omezuje rychlost na všech cestách (může ovlivnit trasu) Nastavení profilu: OsmAnd používá UTM Standard, který je podobný, ale nikoliv identický s UTM NATO formátem. Příklad @@ -3210,8 +3210,8 @@ Zobrazená oblast: %1$s x %2$s
Zadejte cestu k adresáři s OsmAnd daty Změnit adresář pro OsmAnd data\? Přesunout do nového umístění - Vnitřní úložiště, skryté před uživateli a aplikacemi, přístupné výhradně pro OsmAnd - Změnit adresář úložiště dat + Vnitřní úložiště pro OsmAnd (skryté před uživateli a jinými aplikacemi). + Změnit složku pro ukládání dat Typ sjezdovky Nováček Začátečník @@ -3240,44 +3240,44 @@ Zobrazená oblast: %1$s x %2$s Opravdu chcete aktualizovat všechny mapy (%1$d)\? Sdíleno Upřednostňovat nezpevněné cesty - Upřednostňovat nezpevněné cesty. + Pro navigaci upřednostňovat nezpevněné cesty před zpevněnými. OSM úpravy Exportovat profil OsmAnd profil: %1$s - Profil „%1$s“ již existuje. Přepsat\? + \'%1$s\' již existuje. Přepsat\? Profil nelze exportovat. - Import profilu: + Importovat profil Přidejte profil otevřením jeho souboru pomocí OsmAnd. %1$s chyba importu: %2$s - Úspěšně importováno: %1$s + %1$s importován. Prohodit %1$s a %2$s Počáteční bod Trasa uložena - Název souboru je prázdný + Prázdný název souboru Vrátit zpět Vyčistit %1$s\? Dialog stahování map Dialogy a oznámení - Správa vyskakovacích upozornění, oznámení a dialogů zobrazovaných aplikací OsmAnd. + Správa vyskakovacích upozornění, dialogů a oznámení. Navrhované mapy - Tyto mapy je třeba používat s modulem + Tyto mapy jsou potřebné pro modul. Přidané profily - Nový profil přidaný do OsmAnd modulem + Profily přidané modulem Vypnout Přidán nový modul - Přidat nový profil „%1$s“\? + Přidat nový profil \'%1$s\'\? Trasy upravené pro klasické lyžování bez bruslení. Zahrnuje trasy upravené menšími sněžnými vozidly a stopy vytvořené samotnými lyžaři. Povolit pouze trasy pro bruslení na lyžích Sněžný skútr Vlastní modul pro OsmAnd - Změny aplikovány na profil %1$s. - Nelze přečíst %1$s. - Nelze zapsat %1$s. - Nelze importovat %1$s. + Změny aplikovány na profil \'%1$s\'. + Nepodařilo se přečíst z \'%1$s\'. + Nelze zapsat do \'%1$s\'. + Nelze importovat z \'%1$s\'. Stínování svahů Terén Stínované svahy používají tmavé odstíny pro vyjádření svahů, vrcholů a nížin. - Svahy jsou barevné vizualizace terénu. + Svahy využívají barvy k vizualizaci strmosti terénu. Nastavte minimální a maximální úroveň přiblížení, při které bude vrstva zobrazená. Pro zobrazení stínování kopců jsou potřeba další mapy. Pro zobrazení svahů jsou potřeba další mapy. @@ -3285,7 +3285,7 @@ Zobrazená oblast: %1$s x %2$s Průhlednost Úrovně přiblížení Legenda - Zapněte pro zobrazení stínovaných svahů. O tomto typu map se dozvíte více na našich stránkách + Zapněte pro zobrazení stínovaných svahů nebo sklonu svahů. O těchto typech map se dozvíte více na našich stránkách. Všechna data z %1$s jsou naimportovaná, můžete použít tlačítka níže k otevření části aplikace pro jejich správu. Import dokončen Položky přidány @@ -3304,7 +3304,7 @@ Zobrazená oblast: %1$s x %2$s Trasa bude přepočítaná pokud vzdálenost od trasy k aktuální poloze je větší než zvolená hodnota. %1$s z %2$s Svahy - Zobrazit/skrýt terén + Zobrazit nebo skrýt terén Skrýt terén Zobrazit terén Tlačítko pro zobrazení nebo skrytí vrstvy terénu na mapě. @@ -3316,7 +3316,7 @@ Zobrazená oblast: %1$s x %2$s Osmiúhelník Čtverec Min - Nahradit jiný bod tímto + Nahradit jiný bod tímto. Lyžařské okruhy Úhel Úhel: %s° @@ -3333,7 +3333,7 @@ Zobrazená oblast: %1$s x %2$s \nModul zůstane v zařízení i po odstranění aplikace OsmAnd. Modul vypnutý Otevřít nastavení - Vypnout přepočítávání + Žádné přepočítávání Zadejte prosím název profilu Vyberte data k importu. Některé položky již existují @@ -3359,12 +3359,12 @@ Zobrazená oblast: %1$s x %2$s Některé články Wikipedie nemusí být dostupné ve vašem jazyce. Zvolte jazyky, v nichž se články Wikipedie objeví na mapě. \nBěhem čtení článku budete moci přepínat mezi všemi dostupnými jazyky. Pro zobrazení bodů zájmu Wikipedie jsou potřeba další mapy. - Hlavní akce mohou obsahovat pouze 4 tlačítka. + Obsahuje pouze 4 tlačítka. Hlavní akce Položky můžete přesouvat pouze v rámci této kategorie. Modul pro vývojáře Položky - Zvolte jazyky, v nichž se články Wikipedie zobrazí na mapě. Při čtení článku můžete přepínat mezi všemi dostupnými jazyky. + Zvolte jazyky článků Wikipedie na mapě. Při čtení článku můžete přepínat mezi všemi dostupnými jazyky. Některé články Wikipedie nemusí být dostupné ve vašem jazyce. Kantonština Jižní min @@ -3397,9 +3397,9 @@ Zobrazená oblast: %1$s x %2$s %1$s / %2$s Platba bude stržena z vašeho účtu Google Play po potvrzení nákupu. \n -\nPředplatné se automaticky prodlužuje, pokud ho před termínem obnovení nezrušíte. Platba za předplatné (měsíc/tři měsíce/rok) bude stržena vždy jen v den obnovení. +\n Předplatné se automaticky prodlužuje, pokud ho před termínem obnovení nezrušíte. Platba za předplatné (měsíc/tři měsíce/rok) bude stržena vždy jen v den obnovení. \n -\nSvé předplatné můžete spravovat nebo zrušit v nastavení Google Play. +\n Své předplatné můžete spravovat nebo zrušit v nastavení Google Play. Hledat typy bodů zájmu Zkombinujte body zájmu různých kategorií. Klepnutím na přepínač vyberete všechny, klepnutím na levou stranu vyberete kategorie. Další mapy @@ -3447,12 +3447,12 @@ Zobrazená oblast: %1$s x %2$s Mercatorovo zobrazení Formát uložení Nastavte minimální a maximální úroveň přiblížení, při níž se zobrazí nebo načte online mapa. - Tyto parametry ovlivňují zobrazení při použití jako mapy nebo překryvu/podkladu. + Ovlivňuje zobrazení při použití jako mapy nebo překryvu/podkladu. \n -\n%1$s: Zobrazení mapy bude omezeno na vybrané úrovně přiblížení. +\n%1$s: Mapa bude omezena na vybrané úrovně přiblížení. \n -\n%2$s: Úrovně přiblížení, při nichž budou zobrazeny původní dlaždice. Mimo tyto hodnoty se dlaždice přeškálují. - Čas obnovení v minutách. Dlaždice v mezipaměti budou znovu načteny po uplynutí zadaného času. Necháte-li toto pole prázdné, dlaždice z tohoto zdroje se nebudou obnovovat nikdy. +\n%2$s jsou úrovně přiblížení, při nichž budou zobrazeny původní dlaždice. Mimo tyto hodnoty se dlaždice přeškálují. + Dlaždice v mezipaměti budou znovu načteny po uplynutí zadaného počtu minut. Necháte-li toto pole prázdné, dlaždice z tohoto zdroje se nebudou obnovovat nikdy. \n \nJeden den má 1440 minut. \nJeden týden má 10 080 minut. @@ -3465,7 +3465,7 @@ Zobrazená oblast: %1$s x %2$s Pro pokračování je potřeba nastavit pracovní dny Trasa mezi body Naplánovat trasu - Přidat k trase + Přidat ke stopě Zobrazit ikony startu a cíle Zvolte šířku Vyberte interval pro zobrazování značek na trase se vzdáleností nebo časem. @@ -3476,12 +3476,12 @@ Zobrazená oblast: %1$s x %2$s Importovat trasu Otevřít existující trasu Vytvořit novou trasu - Vyberte trasu k otevření. + Vyberte stopu k otevření. Hotovo Zadejte prosím název bodu Současný cílový bod na trase bude smazán. Jestliže to je poslední cíl, navigace se zastaví. Stáhnout Wikipedia mapy - Získejte informace o zájmových bodech z Wikipedie. Je to váš offline kapesní průvodce - zapněte Wikipedia plugin a užívejte si články o objektech okolo Vás. + Získejte informace o zájmových bodech z Wikipedie. Je to váš offline kapesní průvodce - zapněte modul Wikipedia a užívejte si články o objektech okolo vás. Přidaný bod nebude na mapě vidět, protože vybraná skupina je skrytá. Můžete jej najít v \"%s\". Enduro motorka Motorový skútr @@ -3493,7 +3493,7 @@ Zobrazená oblast: %1$s x %2$s Uložit jako soubor trasy Sledovat trasu Zvolte soubor trasy, kterou chcete sledovat - Zvolte soubor trasy, kterou chcete sledovat, nebo jej importujte ze zařízení. + Zvolte soubor stopy, kterou chcete sledovat, nebo jej importujte ze svého zařízení. Zvolit jinou trasu Navigovat z mé polohy k trase Bod trasy pro navigování @@ -3518,12 +3518,12 @@ Zobrazená oblast: %1$s x %2$s Omezení délky Azimut %1$s smazáno - Ke kompletnímu smazání dat o rychlostních radarech je nutný restart. + Restartovat aplikaci pro kompletní smazání dat o rychlostních radarech. Odinstalovat a restartovat Toto zařízení nemá rychlostní kamery. Inline brusle - Smazat následující cílový bod - Umožní ovládat úroveň přiblížení mapy pomocí tlačítek hlasitosti zařízení. + Smazat nejbližší cílový bod + Ovládat úroveň přiblížení mapy pomocí tlačítek hlasitosti zařízení. Tlačítka hlasitosti pro přibližování Mezní vzdálenost Navigační profil @@ -3576,7 +3576,7 @@ Zobrazená oblast: %1$s x %2$s Naposledy změněno Název: Z – A Název: A – Z - Ikony startu/cíle + Ikony startu a cíle Děkujeme za zakoupení modulu \'Vrstevnice\' Přihlásit se pomocí OAuth pro použití funkcí editace OSM Přihlásit pomocí OAuth @@ -3692,11 +3692,11 @@ Zobrazená oblast: %1$s x %2$s Úvodní panel Skrýt veřejnou dopravu Zobrazit veřejnou dopravu - Zobrazit/skrýt veřejnou dopravu + Zobrazit nebo skrýt veřejnou dopravu Tlačítko pro zobrazení nebo skrytí veřejné dopravy na mapě. - Vytvořit / upravit bod zájmu + Vytvořit nebo upravit bod zájmu Parkovací místa - Přidat / upravit oblíbený bod + Přidat nebo upravit oblíbený bod Obnovit výchozí pořadí položek Zpět k úpravám Tlačítko akce přepne mezi zvolenými profily. @@ -3722,7 +3722,7 @@ Zobrazená oblast: %1$s x %2$s Tlačítko napájení Senzor přiblížení Zvolte časový limit vypnutí obrazovky po probuzení (\"%1$s\" znamená bez časového limitu.) - Musíte přidat aspoň dva body. + Musíte přidat aspoň dva body Spravovat předplatné S vaším předplatným je problém. Klikněte na tlačítko pro přechod do nastavení předplatného v Google Play a opravte způsob platby. Předplatné OsmAnd Live skončilo @@ -3902,8 +3902,8 @@ Zobrazená oblast: %1$s x %2$s Účet Přihlašovací jméno Historie značek - Veřejná znamená, že trasa bude veřejně dostupná ve vašich GPS trasách a veřejných seznamech GPS tras. Data poskytnutá prostřednictvím API nebudou odkazovat na vaši stránku s trasou. Časová razítka bodů trasy nebudou dostupná prostřednictvím veřejného GPS API a body nebudou chronologicky seřazeny. Ostatní uživatelé si ale stále budou moci stáhnout nezpracovanou trasu z veřejného seznamu spolu se všemi časovými razítky, které obsahuje. - Soukromá znamená, že trasa se neobjeví v žádném veřejném seznamu a body trasy budou dostupném prostřednictvím veřejného GPS API bez časových razítek, ale nebudou chronologicky seřazeny. + \"Veřejná\" znamená, že trasa je veřejně dostupná ve vašich GPS trasách, ve veřejných seznamech GPS tras a také ve veřejném seznamu stop s nezpracovanými časovými razítky. Data poskytnutá prostřednictvím API nebudou odkazovat na vaši stránku s trasou. Časová razítka bodů trasy nebudou dostupná prostřednictvím veřejného GPS API a body nebudou chronologicky seřazeny. + \"Soukromá\" znamená, že trasa se neobjeví v žádném veřejném seznamu a body trasy budou dostupné prostřednictvím veřejného GPS API bez časových razítek a nebudou chronologicky seřazeny. Odeslat soubor GPX do OpenStreetMap Zadejte značky oddělené čárkou. Sledovatelná znamená, že trasa se neobjeví v žádném veřejném seznamu, ale body trasy budou dostupné prostřednictvím veřejného GPS API s časovými razítky. Ostatní uživatelé si budou moci stáhnout zpracované body z vaší trasy, které ale nebude možné přímo spojit s vámi. @@ -3942,4 +3942,10 @@ Zobrazená oblast: %1$s x %2$s Ve výchozím stavu vypnuto: běží-li OsmAnd na popředí, obrazovka se nevypne. \n \nJe-li zapnuto, OsmAnd vypne obrazovku podle systémového limitu. + Tyto akce jsou dostupné po stisknutí tlačítka “%1$s”. + Importovat nebo nahrát soubory stop + Zadejte interval ukládání pro obecný záznam trasy (aktivovaný přes widget Záznam trasy na mapové obrazovce). + Historie vyhledávání + Kajak + Motorový člun \ No newline at end of file diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 7f1eb79c21..37ed57962e 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -3808,7 +3808,7 @@ Stand type Ja Nej - Signal for at finde stangen + Internetadgang: kunder Kun når det er tilladt at gå Kontrast Primitiv @@ -3852,4 +3852,32 @@ Små elektriske apparater Afgangstavle Genopfyldning af drikkevand + Nej + Ja + Nej + Ja + Nej + Ja + Repræsentantkontor + Kontor + Honorærkonsul + Generalkonsulat + Konsulært agentur + Ledet af en konsul + Bopæl + Højkommissær + Delegation + Afdeling + Ledet af en ambassadør + Forbindelsesofficerer + Ambassade + Radartårn + Tagterrasse + GPX-punkt + Borgerservice + Immigrant visum + Ikke-immigrant visum + Forbindelsesofficerer + Konsulat + Ambassade \ No newline at end of file diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 3943611228..cd1249d5fd 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -3488,7 +3488,7 @@ Vinkel: %s° Vinkel Forbereder - IP typer + IP-typer Intet valgt Genveje Profiler @@ -3549,9 +3549,9 @@ Den importerede profil indeholder yderligere data. Klik på Importer for kun at importere profildata, eller vælg yderligere data, der skal importeres. Ruten vil blive genberegnet, hvis afstanden til ruten er længere end angivet parameter Mindste afstand for at genberegne ruten - OsmAnd har allerede elementer med de samme navne, som dem, der importeres. -\n -\nVælg en aktion. + OsmAnd har allerede elementer med de samme navne som de importerede. +\n +\nVælg en handling. Det angivne %1$s findes allerede. Mindste vinkel mellem placering og rute Ekstra lige segment mellem placering og den beregnede rute vises, indtil ruten genberegnes @@ -3790,4 +3790,6 @@ Start-/slutikoner %1$s — %2$s Hul + Der er ikke plads nok + Længdegrænse \ No newline at end of file diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index e9f39131f9..950388e493 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -3853,4 +3853,34 @@ Dachparkplätze GPX-Wegpunkt Radarturm + nein + ja + nein + ja + nein + ja + Subnationales Büro + Repräsentanzbüro + Verbindungsbüro + Honorarkonsul + Generalkonsulat + Konsularbüro + Konsularagentur + Geleitet von einem Konsul + Residenz + Nuntiatur + Mission + Interessenvertretung + Hochkommissar + Delegation + Niederlassung + Geleitet von einem Botschafter + Verbindungsbüro + Botschaft + Dienstleistungen für Bürger + Einwanderungsvisa + Nicht-Einwanderungsvisa + Verbindungsbüro + Konsulat + Botschaft \ No newline at end of file diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index a17e9b39de..6c002cae3e 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -1928,7 +1928,7 @@ Die App darf nun auf den externen Speicher schreiben, dazu ist aber ein manueller Neustart nötig. Verschieben ↑ Verschieben ↓ - Dateiname beinhaltet nicht erlaubte Zeichen + Nicht erlaubte Zeichen im Dateinamen Keine Wegpunkte gefunden Bitte Kartenmarkierungen über die Karte hinzufügen Fein @@ -2646,7 +2646,7 @@ Ort/POI-Name kopieren Unbenannter Ort Geschlossene Notizen anzeigen - OSM-Notizen auf der Karte ein-/ausblenden. + OSM-Notizen auf der Karte ein- oder ausblenden. GPX - geeignet für den Export in JOSM oder andere OSM-Editoren. OSC - geeignet für den Export nach OSM. GPX-Datei @@ -3104,13 +3104,13 @@ Extrem schwere Routen, mit gefährlichen Hindernissen und schwieriger Umgebung. Nur klassische Routen zulassen Bevorzugter Schwierigkeitsgrad - Ski Alpin/Abfahrtslauf + Ski Alpin und Abfahrtslauf Pisten für Ski Alpin oder Abfahrtslauf und Zugang zu den Skiliften. OsmAnd Download-Dienst Magenta Symbol Erfasste Daten - Skilanglauf/Nordischer Skisport + Skilanglauf und Nordischer Skisport Loipen für Skilangläufer und Nordische Skiläufer. Routen dieser Schwierigkeit bevorzugen, obwohl bei kürzerer Routenführung schwierigere oder einfachere Pisten immer noch möglich sind. Abseits der Piste @@ -3373,7 +3373,7 @@ Startpunkt Schätzt die Ankunftszeit für unbekannte Straßentypen und begrenzt die Geschwindigkeit für alle Straßen (kann die Navigation beeinflussen) Track gespeichert - Dateiname ist leer + Leerer Dateiname Zurücksetzen %1$s löschen\? Vorgeschlagene Karten @@ -3579,7 +3579,7 @@ Eine Schaltfläche zum Ein- und Ausblenden der Geländeebene auf der Karte. Gelände einblenden Gelände ausblenden - Gelände ein- / ausblenden + Gelände ein- oder ausblenden Relief Zoomstufen Transparenz @@ -3697,11 +3697,11 @@ Sie können auf diese Aktionen zugreifen, indem Sie auf die Schaltfläche \"%1$s\" tippen. Öffentliche Verkehrsmittel ausblenden Öffentliche Verkehrsmittel anzeigen - Öffentliche Verkehrsmittel anzeigen/ausblenden + Öffentliche Verkehrsmittel anzeigen oder ausblenden Schaltfläche zum Ein- oder Ausblenden der öffentlichen Verkehrsmittel auf der Karte. - POI erstellen / bearbeiten + POI erstellen oder bearbeiten Parkpositionen - Favorit hinzufügen / bearbeiten + Favorit hinzufügen oder bearbeiten Standard-Reihenfolge der Elemente wiederherstellen Zurück zur Bearbeitung Die Aktionsschaltfläche schaltet zwischen den ausgewählten Profilen um. @@ -3878,7 +3878,7 @@ Track Route Track Datei zum Folgen auswählen, oder vom Gerät importieren. Die GPX-Aufzeichnung wird angehalten, wenn OsmAnd beendet wird (über „zuletzt verwendete Apps“). (Die Hintergrunddienst-Anzeige verschwindet aus der Android-Benachrichtigungsleiste.) - Aufzeichnungsintervall für die generelle Track-Aufzeichnung festlegen (via Schaltfläche \'GPX\' auf dem Kartenbildschirm). + Aufzeichnungsintervall für die generelle Track-Aufzeichnung festlegen (wird über die Schaltfläche \'Routenaufzeichung\' auf dem Kartenbildschirm angeschaltet). Als nächstes können Sie Ihren Track mit einem Ihrer Navigationsprofile auf die nächstgelegene erlaubte Straße einrasten lassen, um diese Option zu nutzen. Track-Wegpunkt hinzufügen %s Track Dateien ausgewählt @@ -3895,7 +3895,7 @@ Wiederholen • Aktualisierte Funktion zum Planen einer Route: erlaubt die Verwendung verschiedener Navigationstypen pro Segment und die Einbeziehung von Tracks \n -\n • Neues Menü zum Erscheinungsbild von Tracks: Wählen Sie Farbe, Dicke, Richtungspfeile, Start-/Ziel-Symbole +\n • Neues Menü zum Erscheinungsbild von Tracks: Wählen Sie Farbe, Dicke, Richtungspfeile, Start- und Zielsymbole \n \n • Verbesserte Darstellung von Fahrradknotenpunkten. \n @@ -3911,7 +3911,7 @@ Zuletzt geändert Name: Z – A Name: A – Z - Start-/Ziel-Symbole + Start- und Zielsymbole Vielen Dank für den Kauf von \'Höhenlinien\' Das Abonnement wird pro ausgewähltem Zeitraum berechnet. Sie können das Abonnement jederzeit über die AppGallery kündigen. Die Bezahlung wird Ihrem AppGallery-Konto bei der Bestätigung des Kaufs belastet. @@ -3928,13 +3928,13 @@ Zwei-Phasen-Routenberechnung für die Autonavigation. Native ÖPNV Entwicklung Wechseln zu Java (sicher) Berechnung des ÖPNV-Routings - Abmeldung erfolgreich + Abgemeldet Datei wurde bereits in OsmAnd importiert Anmelden über OAuth OpenStreetMap OAuth-Token löschen Was ist neu Für das Schneemobilfahren mit speziellen Straßen und Tracks. - Durchführen eines OAuth-Logins zur Nutzung der osmedit-Funktionen + Anmelden mit OAuth zur Nutzung der osmedit-Funktionen 2-Phasen-A*-Routing-Algorithmus verwenden %1$s Daten sind nur auf den Straßen verfügbar, Sie müssen eine Route mit \"Route zwischen Punkten\" berechnen, um sie zu erhalten. %1$s — %2$s @@ -3957,29 +3957,44 @@ OsmAnd Live Abonnement ist abgelaufen OsmAnd Live Abonnement wurde ausgesetzt OsmAnd Live Abonnement liegt auf Eis - Anmeldung bei OpenStreetMap - Anmeldung bei OpenStreetMap.org + Anmeldung für OpenStreetMap + Anmeldung für OpenStreetMap.org Anmelden mit OpenStreetMap - Sie müssen sich anmelden, um Änderungen hochzuladen. + Melden Sie sich an, um Änderungen hochzuladen, \n -\nSie können sich mit der sicheren OAuth-Methode anmelden oder Ihren Benutzernamen und Ihr Passwort verwenden. - Benutzername und Passwort verwenden +\nentweder mit OAuth oder mit Ihrem Benutzernamen und Passwort. + Anmelden mit Benutzername und Passwort Konto - Login + Benutzername Historie der Marker GPX-Datei an OpenStreetMap senden Geben Sie durch Komma getrennte Tags ein. - Öffentlich bedeutet, dass der Track in Ihren GPS-Tracks und in GPS-Track Verzeichnissen öffentlich angezeigt wird. Die über die API bereitgestellten Daten verweisen nicht auf Ihre Track-Seite. Die Zeitstempel der Trackpunkte sind nicht über die öffentliche GPS-API verfügbar, und die Punkte sind nicht chronologisch geordnet. Andere Benutzer können jedoch nach wie vor den Rohtrack aus der öffentlichen Trackliste und alle darin enthaltenen Zeitstempel herunterladen. - Identifizierbar bedeutet, dass der Track in Ihren GPS-Tracks und in öffentlichen GPS-Track Verzeichnissen angezeigt wird. Andere Benutzer können den Rohtrack herunterladen und mit Ihrem Benutzernamen verknüpfen. Daten, die über die Trackpunkte-API geliefert werden, verweisen auf Ihre ursprüngliche Track-Seite. Die Zeitstempel der Trackpunkte sind über die öffentliche GPS-API verfügbar. - Privat bedeutet, dass der Track nicht in öffentlichen Verzeichnissen auftaucht. Punkte des Tracks werden weiterhin über die öffentliche GPS-API ohne Zeitstempel verfügbar sein, aber nicht chronologisch geordnet. - Verfolgbar bedeutet, dass der Track in keiner öffentlichen Auflistung auftaucht, aber Trackpunkte weiterhin über die öffentliche GPS API mit Zeitstempel verfügbar sein werden. Andere Benutzer werden nur verarbeitete Trackpunkte Ihres Tracks herunterladen können, die nicht direkt mit Ihnen in Verbindung gebracht werden können. + \"Öffentlich\" bedeutet, dass der Track öffentlich in Ihren GPS-Tracks und in öffentlichen GPS-Track Verzeichnissen mit Zeitstempeln in Rohform angezeigt wird. Die über die API bereitgestellten Daten verweisen nicht auf Ihre Track-Seite. Die Zeitstempel der Trackpunkte sind nicht über die öffentliche GPS API verfügbar, und die Trackpunkte sind nicht chronologisch geordnet. + \"Identifizierbar\" bedeutet, dass der Track in Ihren GPS-Tracks und in öffentlichen GPS-Track Verzeichnissen angezeigt wird, d.h. andere Benutzer können den Track herunterladen und mit Ihrem Benutzernamen verknüpfen. Öffentliche, mit Zeitstempel versehene Trackpunkt-Daten von der GPS API, die über die Trackpunkt API bereitgestellt werden, verweisen auf Ihre ursprüngliche Trackseite. + \"Privat\" bedeutet, dass der Track nicht in öffentlichen Verzeichnissen auftaucht, aber seine Trackpunkte in nicht chronologischer Reihenfolge über die öffentliche GPS API ohne Zeitstempel verfügbar sind. + \"Verfolgbar\" bedeutet, dass die Spur nicht in öffentlichen Auflistungen auftaucht, aber verarbeitete Trackpunkte mit Zeitstempeln davon (die nicht direkt mit Ihnen in Verbindung gebracht werden können) durch Downloads von der öffentlichen GPS API. OSM Notiz schließen OSM Notiz kommentieren - Sie können sich mit der sicheren OAuth-Methode anmelden oder Ihren Benutzernamen und Passwort verwenden. + Melden Sie sich mit der sicheren OAuth-Methode an oder verwenden Sie Ihren Benutzernamen und Ihr Passwort. Foto hinzufügen Registrieren bei \nOpenPlaceReviews.org - Fotos werden vom offenen Datenprojekt OpenPlaceReviews.org zur Verfügung gestellt. Um Ihre Fotos hochladen zu können, müssen Sie sich auf der Website anmelden. + Melden Sie sich auf der Open Data Website OpenPlaceReviews.org an, um noch mehr Fotos hochzuladen. Neues Konto erstellen Ich habe bereits ein Konto + Suchverlauf + Kajak + Motorboot + Zu Mapillary hinzufügen + Zu OpenPlaceReviews hinzufügen + OsmAnd zeigt Fotos aus verschiedenen Quellen: +\nOpenPlaceReviews - POI Fotos; +\nMapillary - Bilder auf Straßenebene; +\nWeb / Wikimedia - POI Fotos, die in OpenStreetMap Daten angegeben sind. + Quellen + Ungefähre Dateigröße + Wählen Sie die Daten aus, die in die Datei exportiert werden sollen. + Benötigt für Import + Ihr Gerät hat nur %1$s Speicherplatz frei. Bitte machen Sie etwas Platz frei oder heben Sie die Auswahl einiger zu exportierender Objekte auf. + Es gibt nicht genug Speicherplatz \ No newline at end of file diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index ea11a3cdb0..2de782c6c3 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -3966,15 +3966,28 @@ Enigu etikedojn disigitajn per komo (,). “Publika” signifas, ke la GPX‑spuro estos publika videbla en “miaj spuroj” kaj en la publika listo de spuro (GPS‑spuroj). Datumoj liverataj per la API ne ligos al paĝo de via spuro. Tempindikoj de punktoj ne estos akireblaj per la publika API GPS, kaj la punktoj ne estos ordigitaj laŭtempe. Tamen aliaj uzantoj plue povos elŝuti la nepritraktitan spuron el la publika listo de spuroj kune kun ĉiuj ampleksitaj tempindikoj. “Privata” signifas, ke la GPX‑spuro montriĝos en neniu publika listo, sed ĝiaj punktoj plue estos akireblaj per la publika API GPS sen tempindikoj, sed tiuj punktoj estos ordigitaj laŭtempe. - “Identigebla” signifas, ke la GPX‑spuro estos publike videbla en “miaj spuroj” kaj en la publika listo de spuroj (GPS‑spuroj), aliaj uzantoj povos elŝuti vian nepritraktitan spuron kaj ligi ĝin al via uzantnomo. Datumoj liveritaj per la API de spuroj ligos al originala paĝo de via spuro. Tempindikoj de la spuro estos akireblaj per la publika API GPS. - “Spurebla” signifas, ke la GPX‑spuro ne estos montrata en publikaj listoj, sed punktoj el ĝi plue estos akireblaj per la publika API GPS kune kun tempindikoj. Aliaj uzantoj povos elŝuti nur pritraktitajn punktojn el via spuro, kiuj ne povos esti senpere ligitaj al vi. + “Identigebla” signifas, ke la GPX‑spuro estos publike videbla en “miaj spuroj” kaj en la publika listo de spuroj (GPS‑spuroj), aliaj uzantoj povos elŝuti vian nepritraktitan spuron kaj ligi ĝin al via uzantnomo. Publikaj datumoj kun tempindikoj el la API GPS akireblaj per la API de spur‑punktoj indikos al originala paĝo de via spuro. + “Spurebla” signifas, ke la GPX‑spuro ne montriĝos en publikaj listoj, sed pritraktitaj punktoj kun tempindikoj el ĝi (kiuj ne povos esti senpere ligitaj al vi) estos elŝuteblaj per la publika API GPS. Fermi OSM-rimarkon Komenti OSM-rimarkon - Vi povas ensaluti per l sekura metodo OAuth aŭ per uzi uzantnomon kaj pasvorton. + Vi povas ensaluti per la sekura metodo OAuth aŭ per uzi uzantnomon kaj pasvorton. Aldoni foton Registri ĉe \nOpenPlaceReviews.org Fotoj estas liverataj de la malferm‑datuma projekto OpenPlaceReviews.org. Por alŝuti viajn fotojn, vi devas registri ĉe la retejo. Krei novan konton Mi jam havas konton + Serĉi en historio + Kajako + Motorboato + OsmAnd montras fotojn el diversaj fontoj: +\nOpenPlaceReviews – fotoj de interesejoj; +\nMapillary – strat‑nivela fotaro; +\ninterreto, Vikimedio – fotoj de interesejoj difinitaj en OpenStreetMap-datumoj. + Rimedoj + Proksimuma dosiergrando + Elektu datumojn por elporti al dosiero. + Necesa por enporti + En via aparato estas nur %1$s da libera spaco. Liberigu iom da spaco aŭ malelektu iujn elementojn de elporto. + Mankas spaco \ No newline at end of file diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index c72ea55517..fb8d59ac34 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -3857,4 +3857,34 @@ Azotea Punto GPX Torre de radar + No + + No + + No + + Subnacional + Oficina representativa + Oficina + Cónsul honorario + Consulado general + Oficina consular + Agencia consular + Dirigido por un cónsul + Residencia + Nunciatura + Misión + Sección de intereses + Alto comisionado + Delegación + Sucursal;Ramal + Dirigido por un embajador + Enlace + Embajada + Servicios al ciudadano + Visas de inmigrante + Visas de no inmigrante + Enlace + Consulado + Embajada \ No newline at end of file diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 3d4b451190..55884a193c 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -3927,7 +3927,7 @@ Desarrollo nativo del transporte público Cambiar al cálculo de ruta Java (seguro) del transporte público Novedades - Inicia sesión con OAuth para usar las funciones de edición de OSM + Ingresar con OAuth para usar las funciones de edición de OSM Ingresar a través de OAuth Vaciar llave OAuth de OpenStreetMap Sesión finalizada @@ -3958,13 +3958,13 @@ La suscripción a OsmAnd Live se ha pausado La suscripción a OsmAnd Live está en espera Iniciar sesión en OpenStreetMap - Ingresar a OpenStreetMap.org - Debes iniciar sesión para subir cambios nuevos o modificados. + Ingresar en OpenStreetMap.org + Inicia sesión para subir los cambios nuevos o modificados, \n -\nPuedes ingresar usando el método seguro de OAuth o usar el nombre de usuario y contraseña. - Usar nombre de usuario y contraseña +\nya sea con OAuth o usando el nombre de usuario y contraseña. + Ingresar nombre de usuario y contraseña Cuenta - Iniciar sesión + Nombre de usuario Ingresar con OpenStreetMap Historial de marcadores Enviar archivo GPX a OpenStreetMap @@ -3975,14 +3975,26 @@ «Identificable» significa que la traza se mostrará públicamente en tu listado de trazas y en el listado de trazas GPS públicas, es decir que otros usuarios podrán descargar la traza en bruto y asociarla con su nombre de usuario. Los datos servidos a través de la API de conjunto de puntos hará referencia a la página original de la traza. Cerrar nota de OSM Comentar nota de OSM - Puedes iniciar sesión con el método seguro de OAuth o usar el nombre de usuario y contraseña. + Ingresa usando el método seguro de OAuth o usa el nombre de usuario y contraseña. Añadir foto Registrarse en \nOpenPlaceReviews.org - Las fotos son provistas por el proyecto de datos abiertos OpenPlaceReviews.org. Para subir fotos debes registrarte en el sitio web. + Ingresa en el sitio web del proyecto de datos abiertos OpenPlaceReviews.org para subir más fotos. Crear nueva cuenta Ya tengo cuenta Historial de búsqueda Kayak Lancha a motor + Recursos + Tamaño aproximado del archivo + Marca los datos que serán exportados al archivo. + Necesario para importar + El dispositivo sólo tiene %1$s libre. Por favor, libera algo de espacio o desmarca algunos elementos a exportar. + Sin espacio suficiente + Añadir a Mapillary + Añadir a OpenPlaceReviews + OsmAnd muestra fotos de varios repositorios: +\nOpenPlaceReviews (fotos de PDI); +\nMapillary (imágenes a nivel de calle); +\nWeb / Wikimedia (fotos de PDI incluidas en los datos de OpenStreetMap). \ No newline at end of file diff --git a/OsmAnd/res/values-es-rUS/phrases.xml b/OsmAnd/res/values-es-rUS/phrases.xml index 5f62bd195b..1e57d33830 100644 --- a/OsmAnd/res/values-es-rUS/phrases.xml +++ b/OsmAnd/res/values-es-rUS/phrases.xml @@ -3857,4 +3857,34 @@ Azotea Apartadero Punto GPX + Subnacional + Oficina representativa + Oficina + Enlace + Dirigido por un embajador + Residencia + Nunciatura + Misión + Sección de intereses + Alto comisionado + Embajada + Delegación + Sucursal;Ramal + + No + Visas de no inmigrante + + No + Visas de inmigrante + + No + Servicios al ciudadano + Enlace + Embajada + Dirigido por un cónsul + Cónsul honorario + Consulado + Consulado general + Oficina consular + Agencia consular \ No newline at end of file diff --git a/OsmAnd/res/values-es-rUS/strings.xml b/OsmAnd/res/values-es-rUS/strings.xml index dedb0d0009..085b0608e1 100644 --- a/OsmAnd/res/values-es-rUS/strings.xml +++ b/OsmAnd/res/values-es-rUS/strings.xml @@ -1921,7 +1921,7 @@ Informe completo Nombre de usuario y contraseña de OSM Informe - El nombre del archivo contiene caracteres ilegales + Carácter ilegal en el nombre del archivo Añade marcadores a través del mapa No se encontraron puntos de referencia Fino @@ -2462,7 +2462,7 @@ Navega por el mapa y añade puntos Medir distancia Añadir al menos un punto. - Nombre del GPX: + Nombre del archivo GPX: Mostrar en el mapa al guardar Añadir punto de referencia Guardar punto GPX @@ -3085,9 +3085,9 @@ Cambia el zoom del mapa desplazando la rueda hacia arriba y abajo. La tecla «Escape» retrocede a la aplicación WunderLINQ. Controlar con WunderLINQ Añadir al menos un elemento a la lista en los ajustes de «Acción rápida» - Esquí alpino o de descenso + Esquí alpino y de descenso Pistas de esquí alpino o de descenso y acceso a remontes mecánicos. - Esquí de travesía o nórdico + Esquí de travesía y nórdico Senderos para esquí nórdico o de travesía. Esquí de travesía Rutas para esquí de travesía. @@ -3368,7 +3368,7 @@ Estima el tiempo de llegada para los tipos de caminos desconocidos, y limita la velocidad para todos los caminos (puede afectar a la ruta) «%1$s» importado(s). Traza guardada - Nombre del archivo vacío + Nombre de archivo vacío Revertir Un botón para hacer que la pantalla se centre en el punto de partida. Luego define el destino o activa el cálculo de la ruta. Mostrar nodo de la red de rutas ciclistas @@ -3835,7 +3835,7 @@ Elegir otra traza Guardar traza en archivo GPX Grabar la traza automáticamente al navegar - Intervalo de registro para la grabación general de trazas (activar mediante el widget de grabación de viaje sobre el mapa). + Intervalo de registro para la grabación general de trazas (activado desde el widget «Grabación de viaje» en el mapa). Guardar como nueva traza Recalcular toda la traza usando el perfil elegido. A continuación, ajusta la traza al camino permitido más cercano con un perfil de navegación. @@ -3890,7 +3890,7 @@ Rehacer • Se ha actualizado la función «Planificar ruta»: permite utilizar diferentes tipos de navegación por segmento y la inclusión de trazas \n -\n • Nuevo menú con el aspecto de las trazas: elegir el color, el grosor, mostrar las flechas de dirección y los iconos de inicio/fin. +\n • Nuevo menú con el aspecto de las trazas: elegir el color, el grosor, mostrar las flechas de dirección y los iconos de inicio y fin. \n \n • Mejoras en la visibilidad de los nodos de bicicleta. \n @@ -3906,7 +3906,7 @@ Nombre: Z – A Nombre: A – Z Último modificado - Iconos de inicio/fin + Iconos de inicio y fin Gracias por comprar las «Curvas de nivel» La suscripción se cobra por el período elegido. Puedes cancelarlo en cualquier momento en AppGallery. El pago será cargado a la cuenta de AppGallery al confirmar la compra. @@ -3922,7 +3922,7 @@ Datos de «OsmAnd Live» Datos de «OsmAnd Live» Navegación compleja - Inicia sesión con OAuth para usar las funciones de edición de OSM + Ingresar con OAuth para usar las funciones de edición de OSM Ingresar a través de OAuth Sesión finalizada Desarrollo @@ -3948,35 +3948,50 @@ Emergencia Comodidad El archivo ya fue importado en OsmAnd - Iniciar sesión - Usar nombre de usuario y contraseña + Nombre de usuario + Ingresar nombre de usuario y contraseña Hay un problema con la suscripción. Pulsa el botón para ir a los ajustes de la suscripción de Google Play y corregir el método de pago. La suscripción a OsmAnd Live se ha pausado La suscripción a OsmAnd Live está en espera La suscripción a OsmAnd Live ha caducado Ingresar con OpenStreetMap Enviar archivo GPX a OpenStreetMap - Debes iniciar sesión para subir cambios nuevos o modificados. + Inicia sesión para subir los cambios nuevos o modificados, \n -\nPuedes ingresar usando el método seguro de OAuth o usar el nombre de usuario y contraseña. +\nya sea con OAuth o usando el nombre de usuario y contraseña. Debes añadir al menos dos puntos Historial de marcadores Gestionar suscripción - Ingresar a OpenStreetMap.org + Ingresar en OpenStreetMap.org Iniciar sesión en OpenStreetMap Cuenta - Trazable significa que la traza no aparecerá en ninguna lista pública pero el conjunto de puntos estarán disponibles a través de la API pública de GPS y con marcas de tiempo. Otros usuarios sólo podrán descargar el conjunto de puntos procesados de su traza que no se pueden asociar directamente con usted. - Público significa que la traza se mostrará públicamente en tu listado de trazas y en los listados de trazas GPS públicas. Los datos servidos a través de la API no harán referencia a su página de trazas. Las marcas de tiempo de los puntos de la traza no estarán disponible a través de la API pública de GPS, aunque los puntos se ordenan cronológicamente. Sin embargo, otros usuarios podrán descargar la traza en bruto de la lista de trazas públicas y las marcas de tiempo que contiene. - Privado significa que la traza no aparecerá en ninguna lista pública, pero el conjunto de puntos seguirá estando disponible en orden cronológico a través de la API pública de GPS y sin marcas de tiempo. - Identificable significa que la traza se mostrará públicamente en tu listado de trazas y en el listado de trazas GPS públicas, es decir que otros usuarios podrán descargar la traza en bruto y asociarla con su nombre de usuario. Los datos servidos a través de la API de conjunto de puntos hará referencia a la página original de la traza. Las marcas de tiempo de los puntos de la traza estarán disponibles a través de la API pública de GPS. + «Trazable» significa que la traza no aparece en ninguna lista pública, pero el conjunto de puntos procesados con marcas de tiempo (no se pueden asociar directamente con usted) estarán disponibles a través de la API pública de GPS. + «Público» significa que la traza se mostrará públicamente en tu listado de trazas y en los listados de trazas GPS públicas con marcas de tiempo en bruto. Los datos servidos a través de la API no harán referencia a su página de trazas. Las marcas de tiempo de los puntos de la traza no estarán disponible a través de la API pública de GPS, aunque los puntos se ordenan cronológicamente. + «Privado» significa que la traza no aparecerá en ninguna lista pública, pero el conjunto de puntos seguirá estando disponible en orden cronológico a través de la API pública de GPS y sin marcas de tiempo. + «Identificable» significa que la traza se mostrará públicamente en tu listado de trazas y en el listado de trazas GPS públicas, es decir que otros usuarios podrán descargar la traza en bruto y asociarla con su nombre de usuario. Los datos servidos a través de la API de conjunto de puntos hará referencia a la página original de la traza. Ingresa etiquetas separadas por comas. Añadir foto Ya tengo cuenta Crear nueva cuenta - Las fotos son provistas por el proyecto de datos abiertos OpenPlaceReviews.org. Para subir fotos debes registrarte en el sitio web. + Ingresa en el sitio web del proyecto de datos abiertos OpenPlaceReviews.org para subir más fotos. Registrarse en \nOpenPlaceReviews.org - Puedes iniciar sesión con el método seguro de OAuth o usar el nombre de usuario y contraseña. + Ingresa usando el método seguro de OAuth o usa el nombre de usuario y contraseña. Comentar nota de OSM Cerrar nota de OSM + Historial de búsqueda + Recursos + Marca los datos que serán exportados al archivo. + Necesario para importar + El dispositivo sólo tiene %1$s libre. Por favor, libera algo de espacio o desmarca algunos elementos a exportar. + Sin espacio suficiente + Tamaño aproximado del archivo + Lancha a motor + Kayak + Añadir a OpenPlaceReviews + Añadir a Mapillary + OsmAnd muestra fotos de varios repositorios: +\nOpenPlaceReviews (fotos de PDI); +\nMapillary (imágenes a nivel de calle); +\nWeb / Wikimedia (fotos de PDI incluidas en los datos de OpenStreetMap). \ No newline at end of file diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index efe9166106..c4f61547c4 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -3897,4 +3897,48 @@ Último modificado Nombre: Z – A Nombre: A - Z + MGRS + Novedades + MGRS + OsmAnd usa MGRS, que es similar al formato UTM NATO. + Iconos de inicio y fin + Desarollo + El fichero ya está importado en OsmAnd + Mapas locales + %1$s — %2$s + Servicio + Especial + Transporte + Servicio + Símbolos + Deporte + Emergencia + Viajar + Necesita añadir al menos dos puntos + Cuenta + Nombre de usuario + Gestionar suscripción + Enviar fichero GPX a OpenStreetMap + Introduzca las etiquetas separadas por una coma. + Cerrar Nota de OSM + Comentar Nota de OSM + Añadir foto + Registrar en +\nOpenPlaceReviews.org + Crear cuenta nueva + Ya tengo una cuenta + Historial de búsqueda + Kayak + Lancha a motor + Añadir a Mapillary + Añadir a OpenPlaceReviews + OsmAnd muestra fotos de diferentes fuentes: +\nOpenPlaceReviews - fotos POI; +\nMapillary - imágenes a nivel de calle; +\nWeb / Wikimedia - fotos POI especificadas en los datos de OpenStreetMap. + Recursos + Tamaño de fichero aproximado + Seleccione los datos para exportar al fichero. + Necesario para importar + No hay espacio suficiente \ No newline at end of file diff --git a/OsmAnd/res/values-et/phrases.xml b/OsmAnd/res/values-et/phrases.xml index 97af8c5b8c..279982921e 100644 --- a/OsmAnd/res/values-et/phrases.xml +++ b/OsmAnd/res/values-et/phrases.xml @@ -3832,4 +3832,9 @@ Parkimine varjualustes Parkla katusel Radarimast + Residents + Nuntsiatuur + Saatkond + Konsulaat + Saatkond \ No newline at end of file diff --git a/OsmAnd/res/values-eu/phrases.xml b/OsmAnd/res/values-eu/phrases.xml index 0bb27ef42b..5d48a182e9 100644 --- a/OsmAnd/res/values-eu/phrases.xml +++ b/OsmAnd/res/values-eu/phrases.xml @@ -1749,7 +1749,7 @@ Oin-sendagile Zerga aholkularien bulegoa Ice stock kirola - Korfbal + Korfball Paddle tenisa Erraketa (kirol tresna) Errugbi elkartea @@ -2592,7 +2592,7 @@ Motorizatua Bonba gabekoa Minerala - Uraren ezaugarria: lokatza + Lokatza Sulfurikoa Ur-puntua Poste adierazlea @@ -3549,18 +3549,18 @@ Zailtasun-kategoria н/к н/к* - + 1A 1А* - - 1Б* - - 2А* - - 2Б* - - 3А* - - 3Б* + 1B + 1B* + 2A + 2A* + 2B + 2B* + 3A + 3A* + 3B + 3B* Ezabatutako objektua Erradioterapia Bai @@ -3789,7 +3789,7 @@ Kabina mota Bai Ez - Zutoina aurkitzeko seinalea + Internet sarbidea: Bezeroak Ibiltzea baimenduta dagoenean soilik Kontrastatua Primitiboa @@ -3803,7 +3803,7 @@ Ur maila: boladaka Edateko ura betetzeko sarea Edateko ura betetzeko: ez - Edateko ura betetzeko: bai + Bai Trabatzea Ur maila: batezbestekotik behera Ur maila: batezbestekotik gora diff --git a/OsmAnd/res/values-eu/strings.xml b/OsmAnd/res/values-eu/strings.xml index abd30d80ff..42a06769a4 100644 --- a/OsmAnd/res/values-eu/strings.xml +++ b/OsmAnd/res/values-eu/strings.xml @@ -1,15 +1,15 @@ - Deskargatutako zoomak: %1$s - Iraungitze epea (minutuak): %1$s + Deskargatutako zoom mailak: %1$s + Iraungitze denbora (minutuak): %1$s Deskargagarria: %1$s Zoom maximoa: %1$s Zoom minimoa: %1$s Tesela datuak: %1$s %1$s tesela iturburua gorde da - Mercator eliptikoa + Mercator eliptikoa proiekzioa Gehieneko zoom-a - Iraungitze epea (minutuak) + Iraungitze denbora (minutuak) Gutxieneko zoom-a URL Aukeratu badagoena… @@ -21,12 +21,12 @@ EEBB Kanada Europa, Asia, Hego Amerika eta antzekoak - Erresuma Batua, India edo antzekoa + Erresuma Batua, India eta antzekoak Iragarri… - Ezarri iragarpenak: Kaleen izenak, trafiko abisuak (geldialdi behartuak, abiadura mugak), radarren iragarpena. + Ezarri iragarpenak: Kaleen izenak, trafiko abisuak (geldialdi behartuak, abiadura murriztaileak), Abiadura-kameren iragarpena, eta abiadura mugak. Kaleen izenak (TTS) Abiadura muga - Radarrak + Abiadura-kamerak Trafiko abisuak Zehaztu OSM erabiltzailea eta pasahitza \'Ezarpenak\' atalean Garbitu erdibideko puntuak @@ -228,7 +228,7 @@ Turistentzako Gasolina Erakutsi alarmak… - Ezarri trafiko abisuak (abiadura mugak, geldialdi behartuak, abiadura aldaketak, tunelak), abiadura-radar abisuak eta erraien informazioa. + Ezarri trafiko abisuak (abiadura mugak, geldialdi behartuak, abiadura aldaketak, tunelak), abiadura-kameren abisuak eta erraien informazioa. Erabili iparrorratza bestelako norabiderik antzematen ez denean. Erabili iparrorratza Autobiderik ez @@ -238,27 +238,27 @@ Atxikitu errepidera OsmAnd Maps & Nabigazioa Mapa ikusle eta nabigatzaile mugikor globala lineaz kanpoko eta sare bidezko OSM mapetarako - OsmAnd (OSM Automated Navigation Directions) -\n -\nOsmAnd kode irekiko software bidezko nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) mota askotako munduko mapetara sarbidearekin. Mapa guztiak (bektore edo tesela mapak) telefonoaren memoria txartelean gorde daitezke, lineaz kanpoko erabilpena bermatzeko. OsmAndek ere lineaz kanpoko eta sareko ibilbide-kalkulua eskaintzen du, txandakako ahots gidaritzarekin. -\n -\nEzaugarri nagusi batzuk: -\n- Lineaz kanpoko erabateko erabilpena (bektore edo tesela mapak gorde ondoren aukeratu daitezken karpetetan) -\n- Lineaz kanpoko mundu guztiko mapa konpaktuak eskuragarri -\n- Herrialde edo eskualdeetako mapen deskarga, aplikaziotik zuzenean -\n- Gain-geruza desberdin asko ikusi daitezke, GPX edo ibilbide bidea, interes puntuak (POI), gogokoak, sestra-kurbak, garraio publikoaren geltokiak, geruza gardeneko mapa gehigarriak. -\n- Lineaz kanpoko helbide eta lekuen bilatzailea (POI-ak) -\n- Lineaz kanpoko ibilbide-kalkulua distantzia ertainetarako -\n- Kotxea, bizikleta eta oinezkoentzat modua: -\n- Egun/gau ikuspegi automatizatua -\n- Abiaduraren araberako maparen zooma -\n- Maparen lerrokatzea, iparrorratzaren edo norabidearen araberakoa -\n- Errei gidaritza, abiadura muga bistaratzea, grabatutako edo testutik-ahotsera ahotsekin -\n -\nOsmAndeko dohaineko bertsioaren mugak -\n- Mapa kopuruak deskargatzeko muga -\n- Wikipediako POIetara lineaz kanpoko sarbiderik ez -\n + OsmAnd (OSM Automated Navigation Directions) +\n +\nOsmAnd kode irekiko software bidezko nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) mota askotako munduko mapetara sarbidearekin. Mapa guztiak (bektore edo tesela mapak) telefonoaren memoria txartelean gorde daitezke, lineaz kanpoko erabilpena bermatzeko. OsmAndek ere lineaz kanpoko eta sareko ibilbide-kalkulua eskaintzen du, txandakako ahots gidaritzarekin. +\n +\nEzaugarri nagusi batzuk: +\n- Lineaz kanpoko erabateko erabilpena (bektore edo tesela mapak gorde ondoren aukeratu daitezken karpetetan) +\n- Lineaz kanpoko mundu guztiko mapa konpaktuak eskuragarri +\n- Herrialde edo eskualdeetako mapen deskarga, aplikaziotik zuzenean +\n- Gain-geruza desberdin asko ikusi daitezke, GPX edo ibilbide bidea, interesguneak, gogokoak, sestra-kurbak, garraio publikoaren geltokiak, geruza gardeneko mapa gehigarriak. +\n- Lineaz kanpoko helbide eta lekuen bilatzailea (POI-ak) +\n- Lineaz kanpoko ibilbide-kalkulua distantzia ertainetarako +\n- Kotxea, bizikleta eta oinezkoentzat modua: +\n- Egun/gau ikuspegi automatizatua +\n- Abiaduraren araberako maparen zooma +\n- Maparen lerrokatzea, iparrorratzaren edo norabidearen araberakoa +\n- Errei gidaritza, abiadura muga bistaratzea, grabatutako edo testutik-ahotsera ahotsekin +\n +\nOsmAndeko dohaineko bertsioaren mugak +\n- Mapa kopuruak deskargatzeko muga +\n- Wikipediako POIetara lineaz kanpoko sarbiderik ez +\n \nOsmAnd aktiboki garatua izaten ari da eta proiektuaren prozesuak dituen garatze, programatze eta funtzionalitate berrien probak egiteko behar den finantziazio laguntzetan ere oinarritzen da. OsmAnd+ erosiz gero, aplikazioa are zirraragarria izatea laguntzen duzu! Ezaugarri berriak finantzatzea edo dohaintza orokor bat egitea posible da osman.net-en. OsmAnd+ Mapak & Nabigazioa Lineaz Kanpoko eta Sare Bidezko OSM Mapetarako Mapa Ikusle eta Nabigatzaile Mugikor Globala @@ -283,7 +283,7 @@ \n- Aukerazko maparen lerrokatzea, iparrorratzaren edo norabidearen araberakoa \n- Aukerazko errei gidaritza, abiadura muga bistaratzea, grabaketa edo ahots bihurgailua motorra⏎ ⇥ \n - Sortu POI iragazkia + Sortu interesguneen iragazkia Garraio modua: Garraio modua: Egunsentia: %1$s ⏎\nIlunabarra: %2$s @@ -322,7 +322,7 @@ Desblokeatu Pantaila blokeatuta dago Esnatze tartea ezarri: - Radarrak + Abiadura-kamerak Trafiko abisuak Bidesaririk ez Jarraitu aurreko amaitu gabeko nabigazioaren jarraipena egiten? (%1$s segundo) @@ -378,7 +378,7 @@ Erakutsi xehetasun gehiago mapan Ibilbide datuak Formatua - POI (Point of interest) bilaketa + Interesguneen (POI) bilaketa Helbide bilaketa Koordenatuak Bilatu garraio publikoa @@ -411,7 +411,7 @@ Gehigarriak Gehigarriek ezarpen aurreratuak eta funtzionalitate berriak aktibatzen dituzte. Gehigarriak - Egin OSM ekarpenak, esaterako POI objektuak sortzea edo eraldatzea, OSM oharrak irekitzea edo komentatzea, eta sortutako GPX fitxategiak bidaltzea, aplikazioan OSM kredentzialak zehaztuta. OpenStreetMap.org elkarlanean egindako, domeinu publikoko mapa proiektu global bat da. + Egin OSM ekarpenak, esaterako interesgune objektuak sortzea edo eraldatzea, OSM oharrak irekitzea edo komentatzea, eta sortutako GPX fitxategiak bidaltzea, aplikazioan OSM kredentzialak zehaztuta. OpenStreetMap.org elkarlanean egindako, domeinu publikoko mapa proiektu global bat da. Ziurrenik bektore mapak azkarrago kargatu. Baliteke gailu batzuetan ongi ez funtzionatzea. Aukeratu ahotsa eta probatu iragarpenak erreproduzituz: OsmAnd garapena @@ -476,15 +476,15 @@ Gelditu iragarpen automatikoa Hemen nago Aldatu maparen zooma trackball-aren mugimendu horizontalaren bidez. - Trackball-a erabili zooma kontrolatzeko + Erabili trackball-a zooma kontrolatzeko Irisgarritasun hobespenak. Irisgarritasuna Aukeratutako area erakusteko ez dago memoria nahikorik Gain-azal fluoreszenteak Erabili kolore fluoreszenteak lorratzak eta ibilbideak bistaratzeko. Lineaz kanpoko edizioa - Erabili beti lineaz kanpoko edizioa. - Aplikazioaren barneko POI aldaketek ez diete deskargatutako mapa-fitxategiei eragiten, aldaketak zure gailuko fitxategi batean gordetzen dira. + Lineaz kanpoko edizioa aktibatuta badago, aldaketak lokalean gordeko dira eta eskatutakoan igoko dira, bestela aldaketak berehala igoko dira. + Aplikazioan interesguneei egindako aldaketek ez diete deskargatutako mapa-fitxategiei eragiten, aldaketak zure gailuko fitxategi batean gordetzen dira. Igotzen… {0} POI/ohar igo dira Guztia igo @@ -493,15 +493,15 @@ OSM edizio asinkronoa: OSM POI/oharrak gailuan gordeta Erakutsi eta kudeatu gailuko datu-baseko OSM POI/oharrak. - Aukeratu sare bidezko jarraipeneko tartea. - Sare bidezko jarraipen tartea + Zehaztu sare bidezko jarraipenaren tartea. + Sare bidezko jarraipenaren tartea Zehaztu web helbidea ondorengo parametroen sintaxiarekin: lat={0}, lon={1}, timestamp={2}, hdop={3}, altitude={4}, speed={5}, bearing={6}. - Sare bidezko jarraipeneko web helbidea + Sare bidezko jarraipenaren web helbidea Gorde lorratza GPX trepeta erabiliz edo \'Bidaiaren grabaketa\' ezarpenen bidez. Erakutsi uneko lorratza %1$s mapa deskargatu edo eguneratu ditzakezu. Doainezko bertsioa - Erakutsi POI-aren deskripzioa. + Erakutsi interesgunearen deskripzioa. Ipar Amerika Ipar Amerika - Estatu Batuak Amerika zentrala @@ -530,7 +530,7 @@ Aplikazioaren ezarpen globalak Zure OSM erabiltzailea Beharrezkoa openstreetmap.org-eko bidalketentzat. - Zure OSMeko pasahitza + Pasahitza Atzeko plano modua OsmAnd bigarren planoan dabil pantaila itzalia dagoen bitartean. Ez dago leku nahikorik %1$s MB deskargatzeko (%2$s libre). @@ -558,11 +558,11 @@ Simulazioa hasiarazi Ezin da fitxategia izenez aldatu. Badago izen berdineko beste fitxategi bat. - Lotutako hainbat POI kategoria aurkitu dira. + Erlazionatutako hainbat interesgune-kategoria aurkitu dira. Deskargatu lineaz kanpoko datuak interesezko puntuak bilatzeko. Izenez bilatu - \'%1$s\' POI datuen fitxategia erredundantea da eta ezabatua izan daiteke. - POI aldaketak mantentzeko fitxategi lokala ez da aurkitu eta ezin izan da sortu. + \'%1$s\' interesguneen datuen fitxategia erredundantea da eta ezabatu daiteke. + Interesguneen aldaketak mantentzeko fitxategi lokala ez da aurkitu eta ezin izan da sortu. OsmAnd+ berritu Deskargatu aplikazioaren bertsio berria mapa-fitxategi berriak erabili ahal izateko. Izenez aldatu @@ -607,14 +607,14 @@ Aktibatu Desaktibatu Deskargatu - POI datuak + Interesguneen datuak Helbide datuak Garraio publikoaren datuak Mapa datuak Desaktibatuta Ahots iragarpenak (TTS) Ahots iragarpenak (grabatua) - POI datuak + Interesguneen datuak TTS ahotsa Bilaketa Berria Mapako izenen letra-tamaina: @@ -627,12 +627,12 @@ Instalatutako Android TTS (text-to-speech) motorrak ez du aukeratutako hizkuntza jasaten, lehenetsitako TTS hizkuntza erabiliko da. Beste TTS motor bat bilatu nahi duzu merkatuan\? Falta diren datuak Deskargatu hautatutako hizkuntza? - Alderantzikatu GPXaren noranzkoa + Alderantzikatu lorratzaren noranzkoa Erabili uneko helmuga Pasatu lorratz osotik - Lineaz kanpoko bektore mapa bat dago kokapen honentzat. ⏎ -⇥⏎ -⇥Erabiltzeko, aktibatu \'Menua\' -> \'Konfiguratu mapa\' -> \'Maparen Iturburua…\' -> \'Lineaz kanpoko bektore mapak\'. + Lineaz kanpoko bektore mapa bat dago kokapen honentzat. +\n +\nErabiltzeko, aktibatu \'Menua\' -> \'Konfiguratu mapa\' -> \'Maparen Iturburua…\' -> \'Lineaz kanpoko bektore mapak\'. Ahots gidaritzaren irteera Hautatu ahots gidaritzarako bozgorailua. Ahots deiaren audioa (Kotxearen BlueTooth musika ekipoa eteteko) @@ -703,7 +703,7 @@ Garraioa Helbidea indexatzen… Mapa indexatzen… - POI indexatzen… + Interesguneak indexatzen… Garraioa indexatzen… I/O errorea km @@ -756,8 +756,8 @@ Ezin izan da marrazlea kargatu. Bektore marrazlea Aukeratu marrazketaren itxura - Erakutsi POI-aren webgunea - Erakutsi POI-aren telefonoa + Erakutsi interesgunearen webgunea + Erakutsi interesgunearen telefonoa idatzi iragazteko Erresoluzio handiko bistaratzea Ez luzatu (eta lausotu) mapa teselak erresoluzio handiko bistaratzetan. @@ -774,7 +774,7 @@ Aldatu POI-a Ezabatu POI-a Ipar-orratzaren norabidean - Mugimenduaren noranzkoan + Mugimenduaren norabidea Biraketa gabe (iparra beti gorantza) Maparen lerrokatzea: Maparen orientazioa @@ -787,19 +787,19 @@ Ezin izan da GPX kargatu. Bidali informea Ezin izan da deskargatutako maparik aurkitu memoria txartelean. - Idatzi POI bat bilatzeko + Idatzi interesgune bat bilatzeko Edozein Eskerrik asko Yandex trafikoari buruzko informazioagatik. Yandex trafikoa Ibilbidea Gogokoak OSM oharrak (sarean) - POI gainazala… + Interesguneen gainazala… Maparen iturburua… Mapa geruzak Bilatu POI-a Erabili trackball gailu bat mapa mugitzeko. - Trackball-a erabili + Erabili trackball-a Ezarri onartutako gehieneko itxarote denbora kokapenaren irakurketa bakoitzarentzat. Kokapen irakurketarako gehieneko itxarote denbora Non nago? @@ -865,12 +865,12 @@ Garraioa ADOS Erakutsi garraio publikoaren geltokiak mapan. - Erakutsi garraioaren geltokiak + Erakutsi garraio geltokiak OsmAnd nabigazio aplikazioa - POI datuak eguneratuta ({0} kargatu dira) - Ezin izan da POI zerrenda lokala eguneratu. + Interesguneen datuak eguneratuta ({0} kargatu dira) + Ezin izan da interesguneen zerrenda lokala eguneratu. Ezin izan dira datuak zerbitzaritik kargatu. - Ez dago lineaz kanpoko POI daturik area honentzat + Ez dago lineaz kanpoko interesguneen daturik area honentzat Zooma hurbiltzeak POI-ak eguneratzea ahalbidetzen dizu Eguneratu POI-a Eguneratu datu lokalak Internet bidez? @@ -947,8 +947,8 @@ Ezarpenak Gorde uneko lorratza GPX fitxategi gisa orain. Gorde uneko lorratza - Erregistroen tartea nabigazioan - Zehaztu erregistratze maiztasuna nabigazio bitarteko lorratz grabaketarako + Erregistro- tartea nabigazioan zehar + Zehaztu erregistro-tartea nabigazio bitarteko lorratz grabaketarako GPX lorratza automatikoki gordeko da lorratzen direktorioan nabigazioan zehar. Mapa eguneratu Tesela birkargatu @@ -965,8 +965,8 @@ Erakutsi ikuspegiaren norabidea Gaitu maparen 3D ikuspegia. 3D Mapa Ikuspegia - Erakutsi erabilitako azken POI-a gain-azala. - Erakutsi POI gainazala + Erakutsi erabilitako azken interesguneen gainazala. + Erakutsi interesguneen gainazala Aukeratu sareko edo cacheko mapa teselen iturburua. Tesela maparen iturburua Maparen iturburua @@ -1005,7 +1005,7 @@ Eraikina Bidegurutzatzen den kalea Mapa eguneratu - Sortu POI bat + Sortu interesgune bat Bai Utzi Aplikatu @@ -1024,7 +1024,7 @@ Iruzkina gehituta Ezin izan da iruzkina gehitu. Editatu POI-a - Sortu POI bat + Sortu interesgune bat Ezin da nodoa aurkitu, edo zerbitzua hainbat nodoz osatuta dago, eta ez dago horretarako euskarririk oraindik. {0} ezabatu (iruzkina)? Ezabatu POI-a @@ -1038,7 +1038,7 @@ Nodoari buruzko informazioa ez da kargatu Ireki Iruzkina utzi - POI-a aldatzea + Interesgunea aldatzea Beste etiketa guztiak kontserbatu dira Bidali Garbitu @@ -1176,7 +1176,7 @@ %1$s \nPuntu %1$s -Lorratza %2$s +\n%2$s lorratza Gogokoak Nire lekuak arrosa @@ -1456,7 +1456,7 @@ Lorratza %2$s Mapen biltegiratzea Kopiatu Iragazi izenez - Idatzi denetarik bilatzeko + Idatzi bilatzeko Ireki A-GPS informazioa Kudeatu @@ -1548,7 +1548,7 @@ Lorratza %2$s OsmAnd ibilbidearen lineaz kanpoko kalkulua Ibilbidearen kalkulu azkarrak huts egin du (%s), kalkulu motelera aldatzen. Ibilbide birkalkulatze adimentsua - Bidai luzeetan, birkalkulatu ibilbidearen hasierako partea besterik ez. + Ibilbidearen hasierako partea birkalkulatzen du soilik. Bidai luzeetan erabili daiteke. Hautatu nabigazioan saihestu nahi dituzun errepideak. Errepideak besterik ez Errepide estiloa @@ -1596,7 +1596,7 @@ Lorratza %2$s \n{3} MB behar dira une batez, {1} MB behin betiko. ({2} MB eskuragarri.) Igo zure OSM oharra era anonimoan edo zure OpenStreetMap.org profila erabiliz. Bistaratu mendiko bizikletarako bideak - POI ikonoak + Interesguneen ikonoak Grabaketaren banatzea Erabili grabaketaren banatzea Gainidatzi atalak erabilitako espazioa biltegiratze espazioa baino handiagoa bada. @@ -1605,7 +1605,7 @@ Lorratza %2$s Grabatutako atal guztiekin okupatu daitekeen espazioa. Hautatu ahots bidezko gidaritza Hautatu zure hizkuntzaren ahots bidezko gidaritza. - Zehaztu POI mota egokia edo saltatu. + Zehaztu interesgune mota egokia edo saltatu. Menu botoiak kontrol panela abiatzen du, ez menua \'Desgaituta\' dagoenean mapa abiatzen da zuzenean. Bistaratu posizioa beti erdian @@ -1626,8 +1626,8 @@ Lorratza %2$s Mundu oinarri mapa Sareko OSM mapa klasifikazioa irudiekin. - Herrialde askotan (Besteak beste Alemania, Frantzia Italia...) Radar abisuak jasotzea legez debekatuta dago. OsmAndek ez du erantzukizunik onartuko legea jarraitzen ez baduzu. Mesedez sakatu \'Bai\' soilik ezaugarri hau erabiltzeko eskubidea baduzu. - Radarra + Herrialde askotan (Besteak beste Alemania, Frantzia Italia...) abiadura-kameren abisuak jasotzea legez debekatuta dago. OsmAndek ez du erantzukizunik onartuko legea jarraitzen ez baduzu. Mesedez sakatu \'Bai\' soilik ezaugarri hau erabiltzeko eskubidea baduzu. + Abiadura-kamera Koordenatuen formatua Koordenatu geografikoen formatua. Autobus @@ -1653,7 +1653,7 @@ Lorratza %2$s Albaniera (Tosk) OSM POI-a sortuta %1$sko mapa erabili dezakezu orain. - Fitxategiaren izenak karaktere baliogaberen bat du + Fitxategi-izenak karaktere baliogaberen bat du Erakutsi %1$s mapan Bilatu %1$sra OsmAnd bidez partekatua @@ -1749,7 +1749,7 @@ Lorratza %2$s Deskargatu mapa berria Kudeatu Maparen hizkuntza - Garraioaren geltokiak + Garraio geltokiak Zonaldea Eskuragarri Eguneraketak @@ -1807,7 +1807,7 @@ Lorratza %2$s Erakutsi zoom botoiak Gorde gogokoen talde gisa Ezarri helburuak - POI gainazalaren etiketak + Interesguneen gainazalaren etiketak Serbokroaziera Navajoa Tamilera @@ -1829,7 +1829,7 @@ Lorratza %2$s Erradioa Erregistro tarte orokorra Kokaleku orokorra GPX fitxategian erregistratzea gaitu eta desgaitu daiteke mapako GPX erregistro trepetarekin. - Erregistroaren tartea + Erregistro-tartea Gaitu HTTP proxya Konfiguratu HTTP proxya sare eskaera guztietarako. Proxy ostalaria @@ -1867,7 +1867,7 @@ Lorratza %2$s Eguneratu Erabili menua Maparen legenda - Ziur POI puntua mota gabe gorde nahi duzula? + Ziur interesgunea mota gabe gorde nahi duzula\? Eraldatu OSM aldaketa Bertsioak Artikulu teknikoak @@ -1937,14 +1937,14 @@ mapak eta nabigazioa Itxiera ordua Kontaktu informazioa Gehitu irekiera orduak - POI mota + Interesgune mota Paneleko errenkada kopurua %1$s - Zehaztu POI mota mesedez. + Zehaztu interesgune mota mesedez. Lanegunak Azken tokiak Gogokoak Orain hemen gordeta: %1$s - Aldaketak igotzen dituzunean POI-a ezabatuko da + Aldaketak igotzen dituzunean interesgunea ezabatuko da Lerro kopurua Ziur zaude? Gorde gabeko aldaketak galduko dira, Jarraitu? @@ -2015,7 +2015,7 @@ mapak eta nabigazioa Mapak deskargatzeko beharrezkoa da. Kokalekua bilatzen… Espazio librea - OsmAnd datuen biltegiratzea (mapak, GPX fitxategiak, eta abar): %1$s. + OsmAnd datuen biltegiratzea (mapak, lorratz fitxategiak, eta abar): %1$s. Eman baimena Eman kokapena atzitzeko baimena Jaso jarraibideak eta aurkitu toki berriak Internet konexiorik gabe @@ -2044,18 +2044,18 @@ mapak eta nabigazioa Azpikategoriak Transliteratu %1$s izena falta bada Transliteratu izenak - Idatzi hiria, helbidea, POI izena + Idatzi hiria, helbidea, interesgunearen izena Marroi argia Marroi iluna Ingerada marren kolore eskema Errepidearen gainazalaren integritatea Ingerada marren kolore eskema - Gutxieneko abiadura erregistratzeko + Erregistratzeko abiadura minimoa Iragazkia: Ez erregistratu puntuak abiadura honen azpitik. Erregistratzeko desplazamendu minimoa Iragazkia: Ezarri puntu berri bat erregistratzeko gutxieneko distantzia. - Erregistratzearen gutxieneko zehaztasuna - Iragazkia: Ez erregistratu zehaztasun hau ez badago. + Erregistratzeko zehaztasun minimoa + Iragazkia: Ez erregistratu zehaztasun hau lortu arte. Eguberriko POI Eguberria eta urte berria datozela, zerikusia duten puntuak bistaratzea erabaki dezakezu, eguberri zuhaitzak, merkatuak, eta abar. Erakutsi eguberriko puntuak\? @@ -2069,10 +2069,10 @@ mapak eta nabigazioa Bistaratu bidaiaren grabaketa ahalbidetzen duen jakinarazpen bat. Jakinarazpenak Hartu %1$d. irteera eta jarraitu - Igo POI bat + Igo interesgune bat Ibilbidearen kalkulua - Ez duzu GPX fitxategirik oraindik - GPX fitxategiak karpetara gehitu ditzakezu ere + Ez duzu lorratz fitxategirik oraindik + Lorratz fitxategiak karpetara gehitu ditzakezu ere Gehitu gehiago… Itxura Ongi @@ -2130,7 +2130,7 @@ Area honi dagokio: %1$s x %2$s Pantailaren erdian bideo-ohar bat gehitzeko botoia. Pantailaren erdian argazki-ohar bat gehitzeko botoia. Pantailaren erdian OSM ohar bat gehitzeko botoia. - Pantailaren erdian POI bat gehitzeko botoia. + Pantailaren erdian interesgune bat gehitzeko botoia. Nabigazioan ahots bidezko jarraibideak gaitu edo desgaitzeko botoia. Pantailaren erdian aparkaleku bat gehitzeko botoia. " hona gorde da: " @@ -2149,8 +2149,8 @@ Area honi dagokio: %1$s x %2$s Mezua Gogokoa gordetzeko kategoria: Aukeratu hautazko kategoria. - POI zerrenda - Gehitu POI kategoria bat edo gehiago mapan erakusteko. + Interesguneen zerrenda + Gehitu interesguneen kategoria bat edo gehiago mapan erakusteko. Azpiko zerrendaren hurrengo orria erakusteko botoia. Gehitu mapa estilo bat Bete parametro guztiak @@ -2174,7 +2174,7 @@ Area honi dagokio: %1$s x %2$s Ekintzaren izena Bikoizketa ekiditeko ekintza azkarrari %1$s izena jarri zaio. Gogoko puntuak mapan erakutsi edo ezkutatzeko botoia. - POI puntuak mapan erakutsi edo ezkutatzeko botoia. + Interesguneak mapan erakutsi edo ezkutatzeko botoia. Laga hutsik helbidea edo lekuaren izena erabiltzeko. Automatikoki zatitu grabaketa hutsunea eta gero Hasi segmentu berria 6 minututako hutsune bat eta gero, lorratz berria bi ordu eta gero, edo fitxategi berria hutsune luzeago bat eta gero data aldatzean. @@ -2184,7 +2184,7 @@ Area honi dagokio: %1$s x %2$s Puntuak ezabatu dira. Ziur %1$d puntu ezabatu nahi dituzula\? Ibilbide honetan pasatu beharreko bide-gurutzeak - Bide-puntuak, interesezko puntuak, izena duten ezaugarriak + Bide-puntuak, interesguneak, izena duten ezaugarriak Lorratza Gehieneko abiadura Batezbesteko abiadura @@ -2257,9 +2257,9 @@ Area honi dagokio: %1$s x %2$s Berreskuratu erosketak Maparen letra-tipoak Pausatua - OsmAnd (OSM Automated Navigation Directions) mapa eta nabigazio aplikazio bat da. Doako, mundu osoko eta kalitate altuko OSM mapak eskura jartzen dizkizuna. + OsmAnd (OSM Automated Navigation Directions) mapa eta nabigazio aplikazio bat da. Doako, mundu osoko eta kalitate altuko OSM mapak eskura jartzen dizkizuna. \n -\nGozatu ahots bidezko nabigazioa edo nabigazio grafikoa, ikusi interesezko puntuak (POI), sortu eta kudeatu GPX lorratzak, erabili sestra-kurbak eta garaiera datuak (gehigarri baten bidez), aukeratu kotxe, bizikleta eta oinezko moduen artean, editatu OSM, eta askoz gehiago. +\nGozatu ahots bidezko nabigazioa edo nabigazio grafikoa, ikusi interesguneak (POI), sortu eta kudeatu GPX lorratzak, erabili sestra-kurbak eta garaiera datuak (gehigarri baten bidez), aukeratu kotxe, bizikleta eta oinezko moduen artean, editatu OSM, eta askoz gehiago. Idatzi helbidea GPS nabigazioa \n• Lineaz kanpo (Ibiltaritza kargurik ez atzerrian zaudenean) edo konektatuta (azkarragoa) aritzea erabaki dezakezu @@ -2335,7 +2335,7 @@ Area honi dagokio: %1$s x %2$s Piztu \'Nire posizioa\'-ren mugimendu animatua nabigazioan. %1$s barne "Eskiatu -\nOsmAnd eski-mapak gehigarriak eskiatzeko ibilbideak ikustea baimentzen dizu, konplexutasun mailarekin eta bestelako informazio gehigarriarekin, arrasteak eta bestelako zerbitzuak." +\nOsmAnd eski-mapak gehigarriak eskiatzeko pistak ikustea baimentzen dizu, konplexutasun mailarekin eta bestelako informazio gehigarriarekin, arrasteak eta bestelako zerbitzuak." Hartu parte OSMn \n• Eman datuen arazoen berri \n• Igo GPX lorratzak OSMra aplikaziotik bertatik @@ -2362,14 +2362,15 @@ Area honi dagokio: %1$s x %2$s Gora/Behera Denbora mugimenduan Max/Min - Mapa -\n• Bistaratu inguruko interesezko puntuak (POI) -\n• Egokitu mapa zure mugimenduaren (edo iparrorratzaren) norabidera -\n• Non zauden eta nora begiratzen duzun erakusten du -\n• Partekatu zure kokalekua lagunek zu aurkitu ahal izateko -\n• Gorde zuretzat garrantzitsuak diren tokiak gogokoetan -\n• Mapan izenak nola bistaratu aukeratzen uzten dizu: zure hizkuntzan, tokiko hizkuntzan, edo ahoskera fonetikoa -\n• Interneteko tesela mapak erakusten ditu, satelite ikuspegia (Bingek eskainia), hainbat gainazal, esaterako turismorako edo nabigaziorako GPX lorratzak eta azal gehigarriak gardentasun aldagarriarekin + Mapa +\n• Bistaratu inguruko interesguneak (POI) +\n• Egokitu mapa zure mugimenduaren (edo iparrorratzaren) norabidera +\n• Non zauden eta nora begiratzen duzun erakusten du +\n• Partekatu zure kokalekua lagunek zu aurkitu ahal izateko +\n• Gorde zuretzat garrantzitsuak diren tokiak gogokoetan +\n• Mapan izenak nola bistaratu aukeratzen uzten dizu: zure hizkuntzan, tokiko hizkuntzan, edo ahoskera fonetikoa +\n• Interneteko tesela mapak erakusten ditu, satelite ikuspegia (Bingek eskainia), hainbat gainazal, esaterako turismorako edo nabigaziorako GPX lorratzak eta azal gehigarriak gardentasun aldagarriarekin +\n Bizikleta \n• Bizikletentzako bideak aurki ditzakezu mapan \n• Bizikletarako GPS nabigazioak ibilbideak bizikletentzako bideak erabiliz eraikiko du @@ -2452,14 +2453,14 @@ Area honi dagokio: %1$s x %2$s Erakutsi \'nabigazioa amaituta\' elkarrizketa-koadroa Hasi/amaitu nabigazioa Nabigazioa hasi edo amaitzeko botoia. - Lineako jarraipenaren denbora-bufferra + Sare bidezko jarraipenaren denbora-bufferra Zehaztu bidaltzeke dauden kokalekuak gordetzeko denbora-buffer bat Mapillary-ko argazkiak linean besterik ez daude eskuragarri. Saiatu berriro Neurtu distantzia Arakatu mapa eta gehitu puntuak Gehitu puntu bat gutxienez. - GPX fitxategiaren izena: + GPX fitxategi-izena: Erakutsi mapan gorde eta gero Gehitu bide-puntua Gorde GPX bide-puntua @@ -2481,7 +2482,7 @@ Area honi dagokio: %1$s x %2$s Desgaitu maparen animazioak. Jarraitu mapan erakusten Irten gorde gabe? - Gorde puntuak puntu ala lerro gisa. + Gorde puntuak bide-puntu ala lerro gisa. OsmAndek puntuak hautatutako profilaren ibilbideekin lotuko ditu. Hautatu nabigazio profila Gehitu ibilbide-puntuak @@ -2622,16 +2623,16 @@ Area honi dagokio: %1$s x %2$s Negua eta eskia Bidaiatze ikuspegia Nautikoa - POI etiketak + Interesguneen etiketak Bihar irekiko du ordu honetan - Kopiatu kokaleku edo POI-aren izena + Kopiatu kokaleku edo interesgunearen izena Izen gabeko kokalekua Unekoa Tarteko geldialdia gehitzen du Lehen geldialdia gehitzen du Mugitu helburua gora, eta sortu Erakutsi itxitako oharrak - Erakutsi/ezkutatu OSM oharrak mapan. + Erakutsi edo ezkutatu OSM oharrak mapan. GPX - JOSM edo bestelako OSM editoreentzat esportatzeko egokia. OSC - OSM-ra esportatzeko egokia. GPX fitxategia @@ -2751,7 +2752,7 @@ Area honi dagokio: %1$s x %2$s Gogokoa Eskuratu OsmAnd Live ezaugarri guztiak desblokeatzeko: Mapen eguneraketak egunero deskarga mugarik gabe, ordainpeko eta doako gehigarri guztiak, Wikipedia, Wikivoyage eta askoz gehiago. Lehenetsitako itxuraren aldaera, oinezko eta bizikleten bideen kontrastea handitzeko. Mapnik kolore zaharrak erabiltzen ditu. - Errepidetik kanpo gidatzeko, \'Topo\' estiloan oinarritua atzealdean sateliteko irudiekin erabiltzeko. Errepide nagusien zabalera estutua, eta bide, bidexka eta bidegorrien zabalera handitua. + Errepidetik kanpo gidatzeko, \'Topo\' estiloan oinarritua atzealdean sateliteko irudiekin erabiltzeko. Errepide nagusien zabalera estutua, eta pista, bidexka eta bidegorrien zabalera handitua. Nabigazio nautikorako. Ezaugarri nagusiak: Boiak, faroak, ibai bideak, itxas erreiak eta markak, portuak, itsas zerbitzuak, sakonera marrak. Eskiatzeko. Ezaugarri nagusiak: Pistak, arrasteak eta abar. Bestelako mapako objektuak leuntzen dira. Gidatzeko estilo sinplea. Begietara xamurra gau moduan, sestra-kurbak, kontraste handiko errepide laranjak, bestelako mapako objektuak leunduak. @@ -2898,7 +2899,7 @@ Area honi dagokio: %1$s x %2$s Aldatu Erakutsi gehiago Bistaratutako lorratzak - Erakutsi/ezkutatu GPX lorratzak + Erakutsi/ezkutatu lorratzak Gehitu tarteko puntua %1$d transferentzia Gehitu irteera eta helburua @@ -2936,8 +2937,8 @@ Area honi dagokio: %1$s x %2$s Eskailera Bidea Zehaztu gabea - Ezkutatu GPS lorratzak - Erakutsi GPS lorratzak + Ezkutatu lorratzak + Erakutsi lorratzak Gehitu helburua aurretik Aurreko ibilbidea Graduak @@ -2952,7 +2953,7 @@ Area honi dagokio: %1$s x %2$s Trinkotua Zaldi-bidea Bizikletentzako bidea - Hautatutako GPX lorratzak mapan erakutsi edo ezkutatzeko botoia. + Hautatutako lorratzak mapan erakutsi edo ezkutatzeko botoia. Tranbiarik ez Ekidin tranbiak Autobusik ez @@ -3234,7 +3235,7 @@ Area honi dagokio: %1$s x %2$s Mapa nabigazioan zehar Mapa nabigazioan zehar Beste bat - Pisua, altuera, abiadura + Pisua, altuera, luzera, abiadura Ibilgailuaren parametroak Ahots iragarpenak nabigazioan zehar egiten dira soilik. Nabigazio argibideak eta iragarpenak @@ -3310,7 +3311,7 @@ Area honi dagokio: %1$s x %2$s %1$s GB %1$s MB %1$s KB - Lorratzek gordetzeko karpeta + Lorratzak gordetzeko karpeta Lorratzak \'rec\' karpetan edo hilabeteko zein eguneko karpetatan gorde daitezke. Grabatu lorratzak \'rec\' karpetan Grabatu lorratzak eguneko karpetetan @@ -3420,12 +3421,12 @@ Area honi dagokio: %1$s x %2$s Hautatu ikonoa, kolorea eta izena Kokalekua partekatzeko aukera bidai grabaketa erabiliz. Lineako jarraipena - Egunkariaren zehaztasuna + Erregistroaren zehaztasuna Egiaztatu eta partekatu aplikazioaren erregistro zehatzak Baimena beharrezkoa da aukera hau erabiltzeko. - Hau abiadura txikiko atalase iragazkia da, abiadura jakin baten azpitik puntuak ez erregistratzeko. Grabatutako ibilbideak leunagoak izan daitezke mapan ikusitakoan. - Albo-efektua: Zure ibilbidean gutxieneko abiadura irizpidea betetzen ez duten zati guztiak faltako zaizkizu (adibidez, bizikletaz aldapa bat igotzen duzunean). Gainera, ez da atsedenaldi-epeei buruzko informaziorik egongo,. Horrek edozein azterketeta edo post-prozesuri eragingo dio, adibidez, bidaiaren guztizko iraupena, denbora martxan, edo batez besteko abiadura zehazten saiatzean. - Gomendioa: Saiatu lehenbizi mugimenduaren detekzioa erregistroko gutxieneko desplazamendu iragazkiaren bidez (B), emaitza hobeak sor ditzake eta datu gutxiago galduko dituzu. Zure ibilbideak abiadura baxuan zaratatsuak badira, saiatu zeroz kanpoko balioak hemen. Kontuan izan behar da neurketa batzuek ez dutela abiadura balioa emango (sarean oinarritutako metodo batzuk), kasu horretan ez zenuke ezer grabatuko. + Hau abiadura txikiko atalase iragazkia da, abiadura jakin baten azpitik puntuak ez erregistratzeko. Grabatutako lorratzak leunagoak izan daitezke mapan ikusitakoan. + Albo-efektua: Zure lorratzak gutxieneko abiadura irizpidea betetzen ez duten zati guztiak faltako zaizkizu (adibidez, bizikletaz aldapa bat igotzen duzunean). Gainera, ez da atsedenaldi-epeei buruzko informaziorik egongo,. Horrek edozein azterketeta edo post-prozesuri eragingo dio, adibidez, bidaiaren guztizko iraupena, denbora martxan, edo batez besteko abiadura zehazten saiatzean. + Gomendioa: Saiatu lehenbizi mugimenduaren detekzioa erregistroko gutxieneko desplazamendu iragazkiaren bidez (B), emaitza hobeak sor ditzake eta datu gutxiago galduko dituzu. Zure lorratzak abiadura baxuan zaratatsuak badira, saiatu zeroz kanpoko balioak hemen. Kontuan izan behar da neurketa batzuek ez dutela abiadura balioa emango (sarean oinarritutako metodo batzuk), kasu horretan ez zenuke ezer grabatuko. Oharra: abiadura> 0 egiaztatzea: GPS txip gehienek algoritmoak mugimenduan zaudela zehazten duenean bakarrik adierazten dute abiaduraren balioa, eta deus ez bestela. Hori dela eta, iragazki honetan > 0 ezarpena erabiltzean GPS txiparen mugimendua detekzioa erabiltzen duzula esan daiteke. Baina grabaketa garaian hemen iragazi ez bada ere, funtzio hau erabiltzen dugu gure GPX azterketan zuzendutako distantzia zehazteko, hau da, eremu horretan erakutsitako balioa mugimenduan grabatutako distantzia da. Honek gutxieneko zehaztasun adierazlearekin neurtutako puntuak soilik erregistratuko ditu (metro edo oinetan, Android-ek zure txiperako jakinarazi duen moduan). Zehaztasuna neurketa eta egiazko posizioaren arteko hurbiltasuna da, ez dago prezisioarekin lotua, hori errepikatutako neurketen sakabanaketa da. Albo-efektua: Zehaztasunaren arabera iragaztearen ondorioz, puntuak falta daitezke, adibidez, zubien azpian, zuhaitzen azpian, eraikin altuen artean, edo eguraldi jakin batzuekin. @@ -3458,9 +3459,9 @@ Area honi dagokio: %1$s x %2$s \n \n• Beste profil bateko ezarpenak kopiatzeko aukera gehitu da \n -\n• Ordena aldatzeko edo POI kategoriak ezkutatzeko aukera gehitu da +\n• Ordena aldatzeko edo interesgune kategoriak ezkutatzeko aukera gehitu da \n -\n• POI ikonoak mapan behar bezala lerrokatuta +\n• Interesgune ikonoak mapan behar bezala lerrokatuta \n \n• Ilunabarra / egunsentia datuak gehitu da maparen konfigurazioan \n @@ -3509,15 +3510,15 @@ Area honi dagokio: %1$s x %2$s Ibilbidearen birkalkulua Iragarri Erabiltzaile-izena eta pasahitza - Ezarpen hauek profil guztiei aplikatzen zaizkie. + Ezarpen hauek orokorrak dira, eta profil guztiei aplikatzen zaizkie. OSM edizioa - Ikusi zure aldaketak edo oraindik igo gabeko OSM akatsak hemen: %1$s. Igotako puntuak ez dira gehiago erakutsiko. + Oraindik igo gabeko aldaketak edo OSM akatsak hemen ikusi ditzakezu: %1$s. Igotako puntuak ez dira OsmAnd-en erakutsiko. OSM Nabigatu edo mugitzean erakutsitako ikonoa. Atsedenean erakutsitako ikonoa. Ezin izan da \'%s\' geo intent-a errendatu. Oharra: Grabatzen hasi aurretik GPSa itzalita egon bada, neurtutako lehen puntuak zehaztasun txikia izan dezake. Gure kodean puntu bat grabatu aurretik segundo bat itxaron genezake (edo jarraian grabatutako hirutik onena hartu, etab.), baina oraindik ez da hau garatu. - Iragazki honek puntu bikoiztuak grabatzea saihesten du mugimendu txikiegia egon bada. Gero prozesatu ez diren ibilbideetan itxura hobe bat lortzen da. + Iragazki honek puntu bikoiztuak grabatzea saihesten du mugimendu txikiegia egon bada. Gero prozesatu ez diren lorratzetan itxura hobe bat lortzen da. Albo ondorioak: Atseden aldiak ez dira batere erregistratzen edo puntu bakarrarekin erregistratzen dira. Mugimendu txikiak (adibidez, albo batera) iragazi daitezke. Zure fitxategiak informazio gutxiago dauka post-prozesatzeko eta estatistika txarragoakk ditu erregistratzeko garaian puntu erredundanteak iragazi dituelako, agian harrera txarra edo GPS txiparen efektuak eragindako akatsak mantentzen dituen bitartean. Gomendioa: 5 metroko ezarpenak ondo funtziona dezake zuretzat, hori baino gehiagoko xehetasuna behar ez baduzu, eta ez badituzu esplizituki jaso nahi atseden aldiko datuak. Denbora-bufferra @@ -3536,7 +3537,7 @@ Area honi dagokio: %1$s x %2$s Ordenatu kategoriaren arabera Antartika Prestatzen - POI motak + Interesgune motak Ez da ezer hautatu Ekintza azkarrak Profilak @@ -3578,7 +3579,7 @@ Area honi dagokio: %1$s x %2$s Mapako terreno geruza erakutsi edo ezkutatzeko botoia. Erakutsi terrenoa Ezkutatu terrenoa - Erakutsi / ezkutatu terrenoa + Erakutsi edo ezkutatu terrenoa Maldak Erliebea Gaitu erliebea edo malda mapa ikusteko. Mapa mota hauei buruz gehiago irakur dezakezu gure gunean @@ -3611,9 +3612,9 @@ Area honi dagokio: %1$s x %2$s Kolore pertsonalizatua Mapa gehigarriak onartu gabeko ekintza %1$s - Sortu / aldatu POIa + Sortu edo aldatu interesgunea Aparkaleku-posizioak - Gehitu / aldatu gogokoa + Gehitu edo aldatu gogokoa Berrezarri lehenetsitako ordena Itzuli ediziora Ekintza botoiak hautatutako profilen artean txandakatzen du. @@ -3623,12 +3624,12 @@ Area honi dagokio: %1$s x %2$s Munduaren gainbegirada mapa (xehetsua) Onartu gabeko mota Garraio publikoa mapan erakutsi edo ezkutatzen duen botoia. - Hautatu mapan agertuko diren Wikipediako artikuluen hizkuntzak. Hizkuntza eskuragarrien artean txandakatu dezakezu artikulua irakurtzean. + Hautatu mapako Wikipediako artikuluen hizkuntzak. Hizkuntza eskuragarrien artean txandakatu dezakezu artikulua irakurtzean. Wikipediako artikulu batzuk agian ez daude zure hizkuntzan eskuragarri. Malgaxea Aragonera %1$s / %2$s - Bilatu POI motak + Bilatu interesgune motak OsmAnd + Mapillary Ekintza azkarra Erradioaren erregela @@ -3642,8 +3643,8 @@ Area honi dagokio: %1$s x %2$s Nabigazio profilak Ezkutatu garraio publikoa Erakutsi garraio publikoa - Erakutsi/ezkutatu garraio publikoa - OsmAnd Aztarnaria + Erakutsi edo ezkutatu garraio publikoa + OsmAnd aztarnaria Jarraitu Pertsonalizatu \"Tiradera\", \"Konfiguratu mapa\" eta \"Laster-menua\" ataletan dauden elementu kopurua. \n @@ -3695,7 +3696,7 @@ Area honi dagokio: %1$s x %2$s \n Harpidetza automatikoki berrituko da berritze data baino lehen bertan behera uzten ez bada. Berritze-aldian (hilabetea / hiru hilabetea / urtea) kobratuko da kontua. \n \n Zure harpidetzak kudeatu eta bertan behera utzi ditzakezu Google Play ezarpenetara joanez. - Konbinatu kategoria desberdinetako POI motak. Ukitu pizgailua guztiak hautatzeko, ukitu ezkerreko aldea kategoria aukeratzeko. + Konbinatu kategoria desberdinetako interesgune motak. Ukitu pizgailua guztiak hautatzeko, ukitu ezkerreko aldea kategoria aukeratzeko. • Lineaz kanpoko malda-mapa berriak \n \n • Gogokoen eta GPX bide-puntuen pertsonalizazio osoa - kolore, ikono, eta forma pertsonalizatuak @@ -3704,7 +3705,7 @@ Area honi dagokio: %1$s x %2$s \n \n • Wikipedia bereizitako geruza gisa \"Konfiguratu mapa\" atalean, hautatu behar diren hizkuntzak soilik \n -\n • Sortu zure POI iragazkia / mapak malgutasun osoz +\n • Sortu zure interesguneen iragazkia / mapak malgutasun osoz \n \n • Aukerak gehitu profil pertsonalizatuetarako ezarpenak leheneratzeko \n @@ -3739,7 +3740,7 @@ Area honi dagokio: %1$s x %2$s Iraungitze ordua Mercator proiekzioa Biltegiratze formatua - Ezarri zoom maila minimo eta maximoa lineaz kanpoko mapa bistaratu edo kargatzeko. + Ezarri zoom maila minimo eta maximoa sareko mapa bistaratu edo kargatzeko. Parametro hauek bistaratzeari eragingo diote maparen gainazal edo azpiazal gisa erabiltzean. \n \n%1$s: Mapa hautatutako zoom mailetara mugatuko da. @@ -3761,7 +3762,7 @@ Area honi dagokio: %1$s x %2$s Eman zure ibilgailuaren pisua, ibilgailu astunentzako zenbait ibilbide murriztu daitezke. Desgaituta. \"Mantendu pantaila piztuta\" behar da \"Esnatu ondorengo denbora-muga\" atalean. metro - Kontrolatu mapan agertzen diren xehetasun gehigarrien ikusgaitasuna + Erakutsi edo ezkutatu maparen xehetasun gehigarriak Gauerako mapa Erakutsi/ezkutatu Mapillary Ezkutatu Mapillary @@ -3775,28 +3776,226 @@ Area honi dagokio: %1$s x %2$s Gurpil-aulkia Kart Puntuen arteko ibilbidea - Gehitu arrasto batera + Gehitu lorratz batera Hautatu zabalera Hautatu zatiketa aukera: denboraren arabera edo distantziaren arabera. Norabideko geziak Sortu ibilbide berria Distantzia margena - Aukera hau erabiltzeko OsmAnd-ek zure arrastoak mapako errepideetara atxiki behar ditu. -\n -\nHurrengo urratsean, nabigazio profila hautatu beharko duzu baimendutako errepideak eta zure arrastoa errepideetara hurbiltzeko distantzia tartea atzemateko. + Ondoren, lotu zure lorratza baimendutako errepiderik hurbilenera zure nabigazio profil batekin aukera hau erabiltzeko. Editatutako azkena - Inportatu arrastoa - Ireki dagoen arrasto bat - Hautatu irekitzeko arrasto fitxategia - Gainidatzi arrastoa - Gorde arrasto berri gisa + Inportatu lorratza + Ireki dagoen lorratz bat + Hautatu irekitzeko lorratz fitxategia. + Gainidatzi lorratza + Gorde lorratz berri gisa Alderantzizko ibilbidea - Arrasto osoa birkalkulatuko da hautatutako profilaren bidez. - Bakarrik hurrengo segmentua birkalkulatuko da hautatutako profilaren bidez. - Hautatu nola konektatu puntuak, lerro zuzen batez, edo kalkulatu horien arteko ibilbidea hautatutako profilarekin. - Arrasto osoa + Lorratz osoa birkalkulatuko da hautatutako profilaren bidez. + Bakarrik hurrengo segmentua birkalkulatuko da hautatutako profila erabiliz.. + Aukeratu nola konektatu puntuak, lerro zuzen batez, edo kalkulatu horien arteko ibilbidea behean adierazitako moduan. + Lorratz osoa Hurrengo segmentua Nabigazio profila - Hautatu zein arrasto fitxategiari gehituko zaion segmentu berria. - Ezarri behar dituzu lanegunak jarraitzeko + Hautatu zein lorratz fitxategiari gehituko zaion segmentu berria. + Ezarri lanegunak jarraitzeko + Gehitu argazkia + Sortu kontu berria + Kontu bat daukat dagoeneko + Bilaketa-historia + Kayak + Motor itsasontzia + Gehitu Mapillary-ra + Baliabideak + Fitxategiaren tamaina gutxi gorabehera + Hautatu fitxategira esportatuko diren datuak. + Inportatzeko beharrezkoa da + Zure gailuak %1$s soilik ditu libre. Mesedez, askatu espazioa edo desautatu esportatzeko elementu batzuk. + Ez dago espazio nahikorik + Motoa + Zehaztu lorratz orokorreko grabazio erregistroaren tartea (mapan \'Bidaia grabaketa\' trepetaren bidez aktibatuta dago). + Ireki gordetako lorratza + \"Jarraigarria\" esan nahi du lorratza ez dela inolako zerrenda publikoetan agertzen, baina prozesatutako puntuak bere denbora markekin (zurekin zuzenean lotu ezin direnak) GPS API publikoaren deskargen bidez agertzen dira. + + Prestazioa + OpenStreetMap-eko saio hasiera + OpenStreetMap.org-eko saio hasiera + \"Publikoa\" esan nahi du lorratza publikoki erakusten dela zure GPS lorratzen eta GPS lorratz zerrende publikoetan, eta lorratzen zerrenda publikoan denbora markak modu gordinean daudela. APIaren bidez hornitutako datuek ez dute zure lorratz orria aipatzen. Bide-puntuen denbora-zigiluak ez daude eskuragarri GPS API publikoaren bidez, eta bide-puntuak ez daude kronologikoki ordenatuta. + \"Pribatua\" esan nahi du lorratza ez dela inolako zerrenda publikoetan agertzen, baina ordena ez kronologikoan dauden bide-puntuak GPS API publikoaren bidez eskuragarri daude denbora-markarik gabe. + \"Identifikagarria\" esan nahi du lorratza publikoki erakutsiko dela Zure GPS lorratzetan eta GPS lorratz zerrenda publikoetan, hau da, beste erabiltzaileek lorratz gordina deskargatu eta zure erabiltzaile izenarekin lotu ahal izango dute. Bide-puntuen APIaren bidez hornitutako GPS APIaren denbora-markadu bide-puntuak jatorrizko lorratzari egingo diote erreferentzia. + Erregistratu lorratza automatikoki nabigazioan zehar + MGRS + Zer dago berri + Elur-motorra gidatzeko, berezko bide eta lorratzekin. + MGRS + OsmAnd-ek MGRS erabiltzen du, UTM NATO formatuaren antzekoa da. + Eman zure ibilgailuaren luzera, ibilbide batzuetako mugak aplika daitezke ibilgailu luzeentzat. + Herrialde edo eskualde batzuetan, abiadura-kamerak abisatzeko aplikazioak erabiltzea legez debekatuta dago. +\n +\nAukeraketa bat egin behar duzu zure herrialdeko legediaren arabera. +\n +\nAukeratu %1$s eta abiadura-kamerei buruzko alertak eta abisuak jasoko dituzu. +\n +\nAukeratu %2$s eta abiadura-kameraen inguruko datu guztiak, alertak, jakinarazpenak, interesguneak ezabatuko dira OsmAnd erabat berriro instalatu arte. + Mapillary geruza mapan erakutsi edo ezkutatzeko botoia. + Moztu ondoren + • Eguneratutako ibilbidea planifinatzeko funtzioa: Segmentu bakoitzeko nabigazio mota desberdinak erabiltzea eta lorratzak sartzea ahalbidetzen du +\n +\n • Lorratzen itxura menu berria: Hautatu kolorea, lodiera, bistaratzeko norabideko geziak, hasierako eta amaierako ikonoak +\n +\n • Bizikleta nodoen ikusgarritasuna hobetu da. +\n +\n • Orain lorratzetan sakatu daitezke, laster-menua dute oinarrizko informazioarekin. +\n +\n • Bilaketa algoritmoak hobetu dira +\n +\n • Lorratza jarraitzeko aukerak hobetu dira nabigazioan +\n +\n • Profilaren ezarpenak inportatzeko / esportatzeko arazoak konpondu dira +\n +\n + Azken aldaketa + Izena: Z - A + Izena: A - Z + Hasiera eta amaiera ikonoak + Eskerrik asko \"Sestra lerroak\" erosteagatik + Harpidetza kobratuta hautatutako aldirako. Utzi AppGallery-n edozein unetan. + Ordainketa zure AppGallery kontuan kargatuko da erosketa baieztatzean. +\n +\nHarpidetza automatikoki berritzen da, berritze data baino lehen bertan behera utzi ezean. Berritze aldia (hilean / hiru hilean / urtean) berrituko den egunean bertan kobratuko zaizu. +\n +\nHarpidetzak kudeatu eta bertan behera utzi ditzakezu AppGallery-ren ezarpenetara joanda. + Hasi saioa OAuth-ekin osmedit funtzioak erabiltzeko + Hasi saioa OAuth bidez + Garbitu OpenStreetMap OAuth token-a + Saioa amaitu da + Fitxategia dagoeneko OsmAnd-en inportatuta dago + Erabili 2 faseko A* bideratze algoritmoa + Grafikoa + Hasi saioa aldaketak igotzeko, +\n +\nbai OAuth-ekin edo zure erabiltzaile izena eta pasahitza erabiliz. + Hasi saioa erabiltzaile izenarekin eta pasahitzarekin + Kontua + Erabiltzaile-izena + Kudeatu harpidetza + Arazo bat dago zure harpidetzarekin. Egin klik botoian Google Play harpidetzaren ezarpenetara joateko zure ordainketa-metodoa konpontzeko. + OsmAnd Live harpidetza iraungi egin da + OsmAnd Live harpidetza pausatu da + OsmAnd Live harpidetza zain dago + Sartu etiketak komaz bereizita. + Hasi saioa OAuth metodo segurua erabiliz edo erabili zure erabiltzaile izena eta pasahitza. + Erregistratu hemen: +\nOpenPlaceReviews.org + Hasi saioa OpenPlaceReviews.org datu irekien proiektuaren webgunean, argazki gehiago igotzeko. + Gehitu OpenPlaceReviews-era + OsmAnd-ek hainbat iturritako argazkiak erakusten ditu: +\nOpenPlaceReviews - Interesguneen argazkiak; +\nMapillary - Kale mailako irudiak; +\nWeb / Wikimedia - OpenStreetMap datuetan zehaztutako interesguneen argazkiak. + Norabidea + Moztu aurretik + Lorratzaren grabazioa pausatuko du aplikazioa hiltzean (azken aplikazioen bidez). (OsmAnd atzeko planoaren adierazpena Androideko jakinarazpen-barratik desagertzen da.) + Pausatu bidaiaren grabazioa + Berrekin bidaiaren grabazioa + Sisteman lehenetsia + Ondorengo segmentu guztiak + Aurreko segmentua + Aurreko segmentu guztiak + Aukeratutako segmentua soilik birkalkulatuko da hautatutako profila erabiliz. + Ondorengo segmentu guztiak birkalkulatuko dira hautatutako profila erabiliz. + Aurreko segmentu guztiak berriro kalkulatuko dira hautatutako profila erabiliz. + gorde da + Gehitu gutxienez bi puntu. + Berregin + Bidaia + Gutxienez bi puntu gehitu behar dituzu + Hasi saioa OpenStreetMap-ekin + Gehitu lorratzaren bide-puntua + Gehitu lorratzaren bide-puntua + Bidaiaren grabaketa + Gorde lorratz fitxategi gisa + Jarraitu lorratza + Hautatu jarraituko den lorratzaren fitxategia + Aukeratu jarraituko den lorratzaren fitxategia edo inportatu zure gailutik. + Aukeratu beste lorratz bat + Nabigatu nire posiziotik lorratzera + Nabigatzeko lorratzaren puntua + Lorratzaren hasiera + Puntu hurbilena + Erantsi errepideetara + Ezabatu helbidea + Gehitu helbidea + Sartu helbidea + Aldatu ibilbide mota honen aurretik: + Aldatu ibilbide mota honen ondoren: + Lorratz sinplifikatua + Ibilbidearen lerroa bakarrik gordeko da, bide-puntuak ezabatuko dira. + Fitxategi-izena + %s lorratz fitxategi aukeratuta + GRABATU + Saihestu oinezkoen bideak + Saihestu oinezkoen bideak + Garapena + OsmAnd zuzeneko datuak + OsmAnd zuzeneko datuak + Bi faseetako ibilbide kalkulua kotxe bidezko nabigazioarentzat. + Garraio publikoaren garapen natiboa + Aldatu garraio publikoaren ibilbidearen kalkulua Javara (segurua) + %1$s datuak soilik errepideetan soilik daude eskuragarri, eskuratzeko ibilbidea kalkulatu behar duzu \"Puntuen arteko ibilbidea\" erabiliz. + Itxaron ibilbidea berkalkulatu arte. +\nGrafikoa erabilgarri egongo da berkalkulatu ondoren. + Tokiko mapak + %1$s — %2$s + Berezia + Garraioa + Zerbitzua + Sinboloak + Kirola + Larrialdia + Abiadura-kameren interesguneak + Gailu honek ez du abiadura-kamerarik. + Desinstalatu abiadura-kamerak + Legezkoa + Mantendu aktibo + Desinstalatu + Abiadura-kameren alertak herrialde batzuetan legeak debekatuta daude. + tonuak + Gehitu sareko iturria + Aldaketa hauek aplikatzean lauzen iturburu honetako cache datuak garbituko dira + Ezarri ontziaren altuera + Ontziaren altuera ezar dezakezu zubi baxuak ekiditeko. Gogoan izan, zubia mugikorra bada, irekita dagoeneko altuera erabiliko dugula. + Ezarri ontziaren altuera zubi baxuak ekiditeko. Gogoan izan, zubia mugikorra bada, irekita dagoeneko altuera erabiliko dugula. + Ezarri ontziaren zabalera zubi estuak ekiditeko + Zehaztu ibilbideetan baimendutako ibilgailu-luzera. + Luzera muga + %1$s ezabatuta + Berrabiarazi aplikazioa abiadura-kameraren datu guztiak ezabatzeko. + Desinstalatu eta berrabiarazi + Lerroko patinak + Kontrolatu maparen zoom maila gailuaren bolumen botoiekin. + Eman izena puntuari + Deskargatu Wikipediako mapak + Gehitutako puntua ez da mapan ikusiko, hautatutako taldea ezkutatuta dagoelako, \"%s\" atalean aurkitu dezakezu. + Itxitako OSM oharra + Planifikatu ibilbidea + Erakutsi hasierako eta amaierako ikonoak + Aukeratu markatzaileak lorratzean bistaratzeko tartea distantzian edo denboran. + Pertsonalizatua + Solidoa + Kale mailako irudiak + Ziur al zaude aurreikusitako ibilbidean egindako aldaketa guztiak baztertu nahi dituzula eta itxi\? + Alderantzizko norabidearen kasuan + Gorde lorratz fitxategi berri gisa + Gehitu lorratz fitxategi batean + Lorratzak + Lorratzak + Lorratzak + Erregistratu lorratza GPX fitxategian + Lorratz ibilbidea + Gehitu lorratz fitxategiak + Inportatu edo grabatu lorratz fitxategiak + Itxi OSM oharra + Markatzaileen historia + Bidali GPX fitxategia OpenStreetMap-era + Egin iruzkina OSM oharrean \ No newline at end of file diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml index f08461e509..e657b192aa 100644 --- a/OsmAnd/res/values-fa/strings.xml +++ b/OsmAnd/res/values-fa/strings.xml @@ -3980,4 +3980,11 @@ خصوصی یا Private به این معنی است که رد در هیچ‌یک از لیست‌های عمومی نشان داده نمی‌شود اما نقاط رد از طریق API جی‌پی‌اس‌های عمومی بدون مهر زمان و بدون ترتیب زمانی دست‌یافتنی است. قابل‌شناسایی یا Identifiable به این معنی است که رد به‌صورت عمومی در لیست ردهای جی‌پی‌اس شما و لیست عمومی ردهای جی‌پی‌اس نمایش داده می‌شود، یعنی سایر کاربران می‌توانند رد خام را دانلود کنند و بدانند که مربوط به نام کاربری شماست. دادهٔ نقاط رد که از طریق API در دسترس قرار می‌گیرد، به صفحهٔ ردهای شما ارجاع می‌دهد. مهر زمان نقاط رد از طریق API جی‌پی‌اس‌های عمومی دست‌یافتنی است. قابل‌ردیابی یا Trackable به این معنی است که رد در هیچ‌یک از لیست‌های عمومی نشان داده نمی‌شود اما نقاط رد + مهر زمان نقاط از طریق API جی‌پی‌اس‌های عمومی دست‌یافتنی است. سایر کاربران فقط می‌توانند نقاط پردازش‌شدهٔ رد شما را دانلود کنند که مستقیماً امکان ارجاع به نام کاربری شما را ندارد. + افزودن عکس + عکس‌ها از طریق پروژهٔ داده‌باز OpenPlaceReviews.org ارائه می‌شود. برای آپلود عکس‌های خود لازم است در این وبگاه ثبت نام کنید. + ثبت نام در +\nOpenPlaceReviews.org + ساخت حساب جدید + حساب کاربری دارم + تاریخچهٔ جست‌وجو \ No newline at end of file diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index c48a9fb01e..189f7afc8e 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3899,7 +3899,7 @@ Développement du transport public autochtone Connectez-vous avec OAuth Supprimer le jeton OAuth d\'OpenStreetMap - Déconnexion réussie + Déconnecté Le fichier est déjà importé dans OsmAnd Utiliser un algorithme de routage A* à 2 phases Le paiement sera débité de votre compte AppGallery dès confirmation de l\'achat. @@ -3930,10 +3930,10 @@ L\'abonnement OsmAnd Live est en attente L’abonnement OsmAnd Live a expiré L\'abonnement OsmAnd Live a été suspendu - Se connecter à OpenStreetMap - Se connecter à OpenStreetMap.org + Se connecter pour OpenStreetMap + Se connecter pour OpenStreetMap.org Identifiant - Utiliser un identifiant et un mot de passe + Se connecter avec un identifiant et un mot de passe Compte Gérer l\'abonnement Se connecter avec OpenStreetMap @@ -3948,11 +3948,20 @@ \nOpenPlaceReviews.org Créer un nouveau compte J\'ai déjà un compte - Vous devez vous connecter pour envoyer vos modifications. + Connectez-vous pour envoyer vos modifications, \n -\nVous pouvez vous connecter avec la méthode sécurisée OAuth ou utiliser votre identifiant et votre mot de passe. +\nsoit avec OAuth soit avec votre identifiant et mot de passe. Vous pouvez vous connecter avec la méthode sécurisée OAuth ou utiliser votre identifiant et votre mot de passe. Les photos sont fournies par le projet open data OpenPlaceReviews.org. Pour envoyer vos photos, vous devez au préalable être inscrit sur ce site Web. Historique de recherche Kayak + Votre appareil n\'a que %1$s disponible. Veuillez libérer de l\'espace ou désélectionner l\'export pour certains éléments. + Bateau à moteur + Ressources + Taille approximative du fichier + Sélectionnez les données à exporter dans le fichier. + Nécessaire pour l\'import + L\'espace disponible est insuffisant + Ajouter à Mapillary + Ajouter à OpenPlaceReviews \ No newline at end of file diff --git a/OsmAnd/res/values-gl/phrases.xml b/OsmAnd/res/values-gl/phrases.xml index cfb2bee6f2..1b72fedd88 100644 --- a/OsmAnd/res/values-gl/phrases.xml +++ b/OsmAnd/res/values-gl/phrases.xml @@ -796,7 +796,7 @@ Lámpadas eléctricas Poliéster Escola - Universidade + Educación superior Pediatría Tiro con arco Salón de tiro @@ -3843,4 +3843,34 @@ Terrazo Punto GPX Torre de radar + Non + Si + Non + Si + Non + Si + Subnacional + Oficina representativa + Oficina + Cónsul honorario + Consulado xeral + Oficina consular + Axencia consular + Dirixido por un cónsul + Residencia + Nunciatura + Misión + Sección de intereses + Alto comisionado + Delegación + Sucursal + Dirixido por un embaixador + Ligazón + Embaixada + Servizos ó cidadán + Visados de inmigrante + Visados de non inmigrante + Ligazón + Consulado + Embaixada \ No newline at end of file diff --git a/OsmAnd/res/values-gl/strings.xml b/OsmAnd/res/values-gl/strings.xml index f0d735e36c..62847375d7 100644 --- a/OsmAnd/res/values-gl/strings.xml +++ b/OsmAnd/res/values-gl/strings.xml @@ -753,7 +753,7 @@ Sobreposicións fluorescentes Empregar cores fluorescentes para amosar as pistas e rutas. Edición sen conexión - Empregar sempre a edición sen conexión. + Se se activa a edición sen conexión, as modificacións serán gardadas de xeito local primeiro e serán cargadas por solicitude, do contrario as modificacións serán cargadas de xeito inmediato. As modificacións nos puntos de interese (PDI) dentro da aplicación non afectan ós ficheiros dos mapas baixados, pois esas modificacións gárdanse coma un ficheiro no teu dispositivo. Estase a subir… {0} PDI/notas subidos @@ -2063,7 +2063,7 @@ Lon %2$s Número de colaboradores Número de edicións Informe para - O nome do ficheiro contén un carácter incorrecto + Caráter ilegal no nome do ficheiro Acción rápida Acción %d Pantalla %d @@ -2365,7 +2365,7 @@ Lon %2$s Engade unha parada intermedia Engade a primeira parada do percorrido Move o destino cara enriba e crea un novo - Amosar/agochar as notas do OSM no mapa. + Amosar ou agochar as notas do OSM no mapa. GPX - axeitado para exportar a JOSM ou outros editores do OSM. OSC - axeitado para exportar ó OSM. Ficheiro GPX @@ -3115,9 +3115,9 @@ Lon %2$s Muda o achegamento do mapa desprazando a roda cara arriba e abaixo. A tecla «Esc» volta á aplicación WunderLINQ. Controlar co WunderLINQ Engadir polo menos un elemento á listaxe nos axustes de \'Acción rápida\' - Esquí alpino/de descendemento + Esquí alpino e de descendemento Pistas de esquí alpino ou de descendemento e acceso a remontes mecánicos. - Esquí de travesía/nórdico + Esquí de travesía e nórdico Pistas para esquí nórdico ou de travesía. Esquí de travesía Roteiros para esquí de travesía. @@ -3385,7 +3385,7 @@ Lon %2$s Trocar %1$s e %2$s Punto de comezo Pista gardada - O nome do ficheiro está baleiro + Nome do ficheiro baleiro Reverter Un botón para facer que a pantalla se centre no punto de partida. Despois define o destino ou activa o cálculo da ruta. Amosar os nós da rede de sendas ciclistas @@ -3450,7 +3450,7 @@ Lon %2$s Nome de usuario e contrasinal Os axustes deste complemento son globais e aplícanse a todos os perfís Edición do OSM - Podes ollar todas as túas edición non subidas ou erros do OSM en %1$s. Os puntos subidos non se amosan no OsmAnd. + Podes ollar todas as túas edicións aínda non subidas ou erros do OSM en %1$s. Os puntos subidos non se amosan no OsmAnd. OSM A icona amósase mentres se navega ou se move pola pantalla. A icona amósase en asueto. @@ -3647,7 +3647,7 @@ Lon %2$s A ruta será recalculada se a distancia á localización actual é maior que o valor escollido. %1$s de %2$s Pendentes - Amosar / agochar terreo + Amosar ou agochar terreo Agochar terreo Amosar terreo Un botón que amosa ou agocha a capa do terreo no mapa. @@ -3716,11 +3716,11 @@ Lon %2$s Podes acceder a estas accións premendo no botón “%1$s”. Agochar transporte público Amosar transporte público - Amosar/agochar transporte público + Amosar ou agochar transporte público Botón que amosa ou agocha o transporte público no mapa. - Crear / Editar PDI + Crear ou editar PDI Posicións de aparcamento - Engadir / Editar favorito + Engadir ou editar favorito Restabelecer a orde dos elementos predefinidos Voltar á edición O botón de acción troca entre os perfís escollidos. @@ -3854,7 +3854,7 @@ Lon %2$s Refacer • Actualizouse a función \"Planificar ruta\": permite empregar diferentes tipos de navegación por segmento e o engadido de pistas \n -\n • Novo menú coa aparencia das pistas: escoller a cor, o grosor, amosar as frechas de dirección e as iconas de comezo/final. +\n • Novo menú coa aparencia das pistas: escoller a cor, o grosor, amosar as frechas de dirección e as iconas de inicio e final. \n \n • Melloras na visibilidade dos nós de bicicleta. \n @@ -3924,11 +3924,11 @@ Lon %2$s %s ficheiros de pista seleccionados Gravar A gravación da pista deterase ó pechar a aplicación (mediante aplicacións recentes). (A indicación de fondo do OsmAnd, desaparecerá da barra de notificacións do Android.) - Especifica o intre de gravación xeral para pistas (habilitado a través do trebello de gravación no mapa). + Especifica o intre de gravación xeral para pistas (habilitado a través do trebello de \'Gravación no mapa\'). Última modificación Nome: Z – A Nome: A – Z - Iconas de comezo/final + Iconas de inicio e fin Grazas por mercar \'Curvas de nivel\' Subscrición cobrada por período escollido. Cancélaa na AppGallery en calquera intre. O pagamento será cargado na túa conta da AppGallery no mesmo intre da confirmación da compra. @@ -3946,7 +3946,7 @@ Lon %2$s Desenvolvemento do transporte público nativo Activar cálculo de enrutamento de transporte público do Java (seguro) Novidades - Inicia sesión co OAuth para empregar as funcións de edición do OSM + Inicia a sesión co OAuth para empregar as funcións de edición do OSM Entrar polo OAuth Limpar token do OpenStreetMap OAuth Sesión rematada @@ -3977,20 +3977,38 @@ Lon %2$s A subscrición do OsmAnd Live expirou A subscrición do OsmAnd Live foi detida A subscrición do OsmAnd Live está en espera - Público significa que a pista amosarase de xeito público na túa listaxe de pistas e nas listaxes de pistas GPS públicas. Os datos servidos a través da API non farán referencia á túa páxina de pistas. As marcaxes de tempo dos puntos da pista non estarán dispoñíbeis a través da API pública de GPS, aínda que os puntos ordénanse de xeito cronolóxico. Porén, outros usuarios poderán baixar a pista en bruto da listaxe de pistas públicas e as marcaxes de tempo que contén. - Iniciar sesión no OpenStreetMap - Entrar ó OpenStreetMap.org - Entrar co OpenStreetMap - Precisas iniciar sesión para subir modificacións novas. + \"Público\" significa que a pista amosarase de xeito público na túa listaxe de pistas e nas listaxes de pistas GPS públicas con marcas de tempo en bruto. Os datos servidos a través da API no farán referencia á túa pácina de pistas. As marcaxes de tempo dos puntos da pista non estarán dispoñíbeis a través da API pública de GPS, aínda que os puntos son ordenados de xeito cronolóxico. + Iniciar a sesión no OpenStreetMap + Iniciar a sesión no OpenStreetMap.org + Iniciar a sesión co OpenStreetMap + Inicia a sesión para subir as modificacións novas, \n -\nPodes iniciar sesión empregando o método seguro de OAuth ou empregar o nome de usuario e contrasinal. - Empregar nome de usuario e contrasinal +\nxa sexa co OAuth ou empregando o teu nome de usuario e contrasinal. + Iniciar a sesión co nome de usuario e contrasinal Conta - Iniciar sesión + Nome de usuario Historial de marcaxes Enviar ficheiro GPX ó OpenStreetMap Insire etiquetas separadas por comas. - Privado significa que a pista non aparecerá en ningunha listaxe pública, mais o conxunto de puntos seguirá estando dispoñíbel en orde cronolóxica a través da API pública de GPS e sen marcaxes de tempo. - Rastrexábel (ou trazábel) significa que a pista non aparecerá en ningunha listaxe pública pero o conxunto de puntos estarán dispoñíbeis a través da API pública de GPS e con marcaxes de tempo. Outros usuarios só poderán baixar o conxunto de puntos procesados da túa pista que non se poden asociar directamente contigo. - Identificábel significa que a pista amosarase de xeito público na túa listaxe de pistas e na listaxe de pistas GPS públicas, é dicir que outros usuarios poderán baixar a pista en bruto e asociala co teu nome de usuario. Os datos servidos a través da API de conxunto de puntos fará referencia á páxina orixinal da pista. As marcaxes de tempo dos puntos da traza estarán dispoñíbeis a través da API pública de GPS. + \"Privado\" significa que a pista non aparecerá en ningunha listaxe pública, pero o conxunto de puntos seguirá estando dispoñíbel en orde cronolóxica a través da API pública de GPS e sen marcas de tempo. + \"Rastrexábel\" (ou \"trazábel\") significa que a pista non aparece en ningunha listaxe pública, pero o conxunto de puntos procesados con marcas de tempo (non se poden asociar directamente contigo) estarán dispoñíbeis a través da API pública de GPS. + \"Identificábel\" significa que a pista amosarase de xeito público na túa listaxe de pistas e na listaxe de pistas GPS públicas, é dicir que outros usuarios poderán baixar a pista en bruto e asociala co seu nome de usuario. Os datos servidos a través da API de conxunto de puntos fará referencia á páxina orixinal da pista. + Pechar nota do OSM + Comentar nota do OSM + Inicia a sesión co método seguro do OAuth ou emprega o nome de usuario e contrasinal. + Engadir imaxe + Rexistrarse no +\nOpenPlaceReviews.org + Inicia a sesión no sitio web do proxecto de datos abertos do OpenPlaceReviews.org para subir máis imaxes. + Crear nova conta + Xa teño unha conta + Historial de procura + Caiac + Lancha a motor + Recursos + Tamaño aproximado do ficheiro + Marca os datos que serán exportados ó ficheiro. + Necesario para importar + O teu dispositivo só ten %1$s libre. Por favor, libera algo de espazo ou desmarca algúns elementos a exportar. + Sen espazo dabondo \ No newline at end of file diff --git a/OsmAnd/res/values-hu/phrases.xml b/OsmAnd/res/values-hu/phrases.xml index f6fe9f9bfe..771e934b0d 100644 --- a/OsmAnd/res/values-hu/phrases.xml +++ b/OsmAnd/res/values-hu/phrases.xml @@ -3842,4 +3842,5 @@ Internetcsatlakozás: ügyfeleknek Radartorony GPX-pont + Állampolgári szolgáltatások \ No newline at end of file diff --git a/OsmAnd/res/values-is/strings.xml b/OsmAnd/res/values-is/strings.xml index 00458a4f90..8af3d89837 100644 --- a/OsmAnd/res/values-is/strings.xml +++ b/OsmAnd/res/values-is/strings.xml @@ -1772,7 +1772,7 @@ Hve snemma viltu fá tilkynningu um komu? Ekki nægt vinnsluminni til að birta valið svæði Ónettengdar breytingar - Alltaf nota ónettengdar breytingar. + Ef ónettengdar breytingar eru virkar, þá eru breytingar fyrst vistaðar á tækinu og síðan sendar inn samkvæmt beiðni. Annars gerist þetta jafnóðum. Senda breytingu inn til OSM Ósamstilltar (async) OSM-breytingar: Þú getur sótt eða uppfært %1$s kort. @@ -2164,7 +2164,7 @@ Engar v1.9 leiðareglur Ekki nota leiðareglur sem komu til sögunnar í útgáfu 1.9. Leiðir deilileigubíla - Nafn GPX skráar: + Heiti GPX-skráar: Sýna í korti eftir vistun Mæla vegalengd Geyma skráða ferla í undirmöppum fyrir hvern skráningamánuð (svo sem 2018-01). @@ -2514,7 +2514,7 @@ Veldu skráartegund Öll gögn Sýna lokaða minnispunkta - Birta/fela OSM-minnispunkta á kortinu. + Birta eða fela OSM-minnispunkta á kortinu. GPX - hentar til útflutnings fyrir JOSM eða aðra OSM-ritla. OSC - hentar til útflutnings í OSM. Flytja út sem OSM-minnispunkta, merkisstaði, eða bæði. @@ -3086,7 +3086,7 @@ Veldu notkunarsnið sem eiga að vera sýnileg í forriti. Forritssnið Nota WunderLINQ við stýringu - Brun/svigskíði + Brun og svigskíði Ferðaleiðir á skíðum. Brekkur notaðar fyrir sleða. Leyfa millileiðir @@ -3105,7 +3105,7 @@ Breyttu aðdrætti á kort með skruni músarhjóls upp og niður. Escape fer aftur með þig inn í WunderLINQ forritið. Þú verður að skilgreina a.m.k. eitt atriði í listanum í stillingum flýtiaðgerða Brekkur fyrir svigskíði eða brun og aðgangur að skíðalyftum. - Gönguskíði/norræn fjallaskíði + Gönguskíði og norræn fjallaskíði Leiðir fyrir gönguskíði eða norræn fjallaskíði. Leiðir sem troðnar eru einungis fyrir klassískan stíl en án hluta fyrir skautun. Þetta telur einnig með leiðir sem troðnar eru með minni farartækjum og lausari sporum sem jafnvel eru gerð af skíðagöngufólkinu sjálfu. Kjósa leiðir á þessu erfiðleikastigi, þótt leiðarval um erfiðari eða auðveldari leiðir séu mögulegar ef um stutta búta sé að ræða. @@ -3237,7 +3237,7 @@ Birta kort á læsiskjá á meðan leiðsögn stendur. Stillingar leiðarvals í valda sniðinu \"%1$s\". Tímamörk eftir vöknun - Einingar og snið þeirra + Einingar og snið Útlit Útlit landakorts Útlit korts @@ -3374,7 +3374,7 @@ Upphafspunktur Notað til að áætla komutíma á óþekktum gerðum vega og til takmörkunar á hraða á öllum vegum (gæti breytt leiðarvali) Ferill vistaður - Skráarheiti er autt + Vantar skráarheiti Afturkalla Hnappur til að gera miðju skjásins að upphafsstað. Mun síðan spyrja um áfangastað eða setja í gang útreikning á leiðum. Birta hnútanetkerfi fyrir hjólaleiðir @@ -3582,7 +3582,7 @@ Virkja til að sjá hæðaskyggingar eða brekkur á korti. Þú getur lesið meira um þessa eiginleika á vefnum okkar. Hæðaskygging Brekkur - Birta/fela yfirborð + Birta eða fela yfirborð Fela yfirborð Sýna yfirborð Hnappur til að birta eða fela yfirborðslag á kortinu. @@ -3689,7 +3689,7 @@ Nota tímamörk kerfis fyrir skjá Breyta nettengdum gagnagjafa OsmAnd rekjari - Búa til / breyta merkisstað + Búa til eða breyta merkisstað Geymslusnið Rennur út Flýtiaðgerð @@ -3698,7 +3698,7 @@ Þú getur komist í þessar aðgerðir með því að ýta á \"%1$s\"-hnappinn. Áskrift - OsmAnd Live Alltaf - Birta/fela almenningssamgöngur + Birta eða fela almenningssamgöngur Endurheimta sjálfgefna röð atriða Óstudd tegund Leiðsagnarleiðbeiningar @@ -3707,7 +3707,7 @@ Leiðsagnarsnið Halda áfram OsmAnd + Mapillary - Bæta við / breyta eftirlæti + Bæta við eða breyta eftirlæti Birta almenningssamgöngur Sjálfgefin tímamörk fyrir skjá Hnappur til að birta eða fela almenningssamgöngur á kortinu. @@ -3895,7 +3895,7 @@ Síðast breytt Nafn: Ö – A Nafn: A – Ö - Tákn við upphaf/enda + Tákn við upphaf og enda Forðast gangstéttir Forðast gangstéttir Þróun @@ -3911,12 +3911,12 @@ Útskráning tókst %s GPX-skrár valdar Mun setja GPX-skráningu í bið þegar forritið er drepið (slökkt á því í gegnum skjáinn fyrir nýleg forrit - bakgrunnsvísir OsmAnd hverfur þar með úr tilkynningastiku Android-kerfisins.) - Veldu millibil skráninga í almenna leiðarskráningu (virkjað með viðmótshlutanum fyrir GPX-skráningu á kortinu). + Veldu millibil skráninga í almenna leiðarskráningu (virkjað með viðmótshlutanum \'Skráning ferðar\' á kortinu). Setja skráningu í bið Halda áfram með skráningu • Uppfærðar aðgerðir í skipulagningu leiða: mismunandi leiðsögn á hverjum bút auk slóða \n -\n • Ný útlitsvalmynd fyrir slóðir: val á lit, þykkt, birting stefnuörva, táknmynda við upphaf/endi +\n • Ný útlitsvalmynd fyrir slóðir: val á lit, þykkt, birting stefnuörva, táknmynda við upphaf og endi \n \n • Bættur sýnileiki hjólreiðahnúta. \n @@ -3975,4 +3975,20 @@ OsmAnd notar MGRS, sem er svipað og UTM-snið NATO. Sýsla með áskrift MGRS + \"Opinbert\" þýðir að ferillinn birtist í GPS-ferlunum þínum og á opinberum listum yfir GPS-ferla, þar sem ferilpunktar eru með tímamerkjum á frumsniði. Gögn sem eru sótt í gegnum opinbert GPS API-forritsviðmót vísa ekki í ferlasíðuna þína. Tímamerki ferilpunkta eru ekki tiltæk í gegnum opinbera GPS API-forritsviðmótið og er ekki raðað í tímaröð. + Kayak + Bæta við mynd + \"Auðkennanlegt\" þýðir að ferillinn birtist í GPS-ferlunum þínum og á opinberum listum yfir GPS-ferla, sem þýðir að aðrir notendur geta sútt frumferilinn og tengt þær upplýsingar við notandanafnið þitt. Opinberir ferilpunktar með tímamerkjum sem eru sóttir í gegnum opinbera GPS API-forritsviðmótið vísa í ferlasíðuna þína. + Leitarferill + \"Einka\" þýðir að ferillinn birtist ekki á neinum opinberum listum, en ferilpunktar í ótímasettri röð eru tiltækir í gegnum opinbert GPS API-forritsviðmót án tímamerkja. + Loka OSM-minnispunkti + Ég er nú þegar með notandaaðgang + Skráðu þig á +\nOpenPlaceReviews.org + Búa til nýjan notandaaðgang + Þú getur skráð þig inn með öruggu OAuth-aðferðinni eða notað notandanafn og lykilorð innskráningar. + Vélbátar + Ljósmyndir eru í boði frá opna gagnaverkefninu OpenPlaceReviews.org. Til að geta sent inn myndir þarftu að skrá þig á vefsvæðinu. + Gera athugasemd við OSM-minnispunkt + \"Rekjanlegt\" þýðir að ferillinn birtist ekki á neinum opinberum listum, en meðhöndlaðir ferilpunktar með tímamerkjum úr ferlinum (sem ekki er hægt að tengja beint við þig) munu birtast í gögnum sem eru sótt í gegnum opinbert GPS API-forritsviðmót. \ No newline at end of file diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index d46ef2e3c1..f7bb74d54c 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -3417,7 +3417,7 @@ Note fotografiche Ricalcolo del percorso Nome utente e password - Queste impostazioni del plugin sono globali e si applicano a tutti i profili. + Queste impostazioni del plugin sono globali e si applicano a tutti i profili Modifica di OpenStreetMap È possibile visualizzare tutte le modifiche non caricate o le note OSM in %1$s. I punti caricati non vengono visualizzati in OsmAnd. OSM @@ -3945,7 +3945,7 @@ Sport Emergenza Viaggio - Devi aggiungere almeno due punti. + Devi aggiungere almeno due punti Chiudi la nota OSM Commenta la nota OSM Puoi autenticarti con il metodo sicuro OAuth o utilizzare le tue credenziali. @@ -3955,4 +3955,28 @@ Le foto sono fornite dal progetto a sorgente aperto OpenPlaceReviews.org. Per contribuire delle tue foto devi registrarti nel sito. Crea un nuovo account Ho già un account + Cronologia di ricerca + Kayak + Motoscafo + Connettiti a OpenStreetMap + Connettiti a OpenStreetMap.org + Registrati con OpenStreetMap + Devi fare il login per inviare nuove modifiche o dei cambiamenti. +\n +\nPuoi fare login utilizzando il metodo sicuro OAuth o il nomeutente e password. + Usa login e password + Account + Entra + Gestisci la sottoscrizione + C\'è un problema con la tua sottoscrizione. Clicca sul pulsante per andare alle impostazioni di sottoscrizione di Google Play per correggere il tuo metodo di pagamento. + La sottoscrizione di OsmAnd Live è terminata + La sottoscrizione di OsmAnd Live è stata messa in pausa + La sottoscrizione di OsmAnd Live è in sospeso + Cronologia dei marcatori + Invia il file GPX a OpenStreetMap + Immetti le etichette separate dalla virgola. + \"Pubblico\" significa che la traccia è visualizzata pubblicamente nelle tue tracce GPS, nelle liste pubbliche di tracce GPS con le informazioni temporali in forma grezza. I dati forniti attraverso le API non conducono alla tua pagina delle tracce. Le informazioni temporali dei punti traccia non sono disponibili attraverso le API GPS pubbliche, e i punti della traccia non sono ordinati cronologicamente. + \"Privato\" significa che la traccia non è visualizzabile in alcuna lista pubblica ma i suoi punti, in ordine non cronologico, sono disponibili attraverso le API GPS senza le informazioni temporali. + \"Identificabile\" significa che la traccia è visualizzabile nelle Mie tracce GPS e nelle liste pubbliche, es. gli altri utenti potranno scaricare la traccia grezza e associarla con il tuo nome utente. I punti della traccia, con le loro informazioni temporali, saranno riconducibili, attraverso le API GPS, alla tua traccia originale. + \"Tracciabile\" significa che la traccia non è visualizzabile in alcuna lista pubblica, ma solo i suoi punti, processati, con le informazioni temporali (che non possono essere direttamente associati a te) attraverso le API GPS pubbliche. \ No newline at end of file diff --git a/OsmAnd/res/values-iw/strings.xml b/OsmAnd/res/values-iw/strings.xml index 81122d590f..a4d26877ab 100644 --- a/OsmAnd/res/values-iw/strings.xml +++ b/OsmAnd/res/values-iw/strings.xml @@ -3930,7 +3930,7 @@ יש להיכנס עם OAuth כדי להשתמש ביכולות של osmedit להיכנס דרך OAuth למחוק את אסימון ה־OAuth של OpenStreetMap - היציאה הצליחה + יצאת הקובץ כבר ייובא אל OsmAnd להשתמש באלגוריתם חישוב מסלול דו־שלבי A*‎ לנהיגה ברכבי שלג עם דרכים ומסלולים יעודיים. @@ -3952,18 +3952,18 @@ MGRS MGRS עליך להוסיף שתי נקודות לפחות - כניסה ל־OpenStreetMap - כניסה ל־OpenStreetMap.org + כניסה עבור OpenStreetMap + כניסה עבור OpenStreetMap.org כניסה עם OpenStreetMap - להשתמש בשם כניסה וססמה + להיכנס עם שם משתמש וססמה חשבון - כניסה + שם משתמש ניהול מינוי תוקף המינוי ל־OsmAnd Live פג המינוי ל־OsmAnd Live הושהה - עליך להיכנס כדי להעלות דברים חדשים או כאלו ששינית. + עליך להיכנס כדי להעלות שינויים חדשים או כאלו שנערכו. \n -\nניתן להיכנס בשיטת OAuth המאובטחת או להשתמש בשם הכניסה והססמה שלך. +\nאו עם OAuth או באמצעות שם המשתמש והססמה שלך. יש בעיה עם המינוי שלך. יש ללחוץ על הכפתור כדי לגשת להגדרות המינוי של Google Play ולתקן את שיטת התשלום שלך. המינוי ל־OsmAnd Live מוחזק היסטוריית סמנים @@ -3972,14 +3972,27 @@ „ניתן למעקב” משמעו שהמסלול לא מופיע ברישומים ציבוריים אך נקודות המעקב שעובדו עם חותמות זמן ממנו (שלא ניתן לשייך אליך ישירות) תהיינה דרך ההורדות מה־API הציבורי של ה־GPS. סגירת הערת OSM להגיב על הערת OSM - ניתן להיכנס באמצעות שיטת האימות המאובטחת OAuth או להיכנס עם שם הכניסה והססמה שלך. + ניתן להיכנס באמצעות שיטת האימות המאובטחת OAuth או להיכנס עם שם המשתמש והססמה שלך. הוספת תמונה יש להירשם בכתובת \nOpenPlaceReviews.org - תמונות מסופקות על ידי מיזם הנתונים הפתוחים OpenPlaceReviews.org. כדי להעלות את התמונות שלך עליך להירשם לאתר. + יש להיכנס לאתר מיזם הנתונים הפתוחים OpenPlaceReviews.org כדי להעלות אף יותר תמונות. יצירת חשבון חדש כבר יש לי חשבון היסטוריית חיפוש קיאק סירת מנוע + מגדהי + משאבים + גודל קובץ משוערך + נא לבחור את הנתונים שייוצאו לקובץ. + נדרש לייבוא + במכשיר שלך יש רק %1$s פנויים. נא לפנות מקום או לבטל כמה מהפריטים לייצוא. + אין מספיק מקום + הוספה ל־Mapillary + הוספה ל־OpenPlaceReviews + OsmAnd מציג תמונות ממגוון מקורות: +\nOpenPlaceReviews - תמונות של נקודות עניין; +\nMapillary - תמונות ברמת הרחוב; +\nאינטרנט / ויקימדיה - תמונות נקודות עניין שמצוינות בנתונים של OpenStreetMap. \ No newline at end of file diff --git a/OsmAnd/res/values-lt/strings.xml b/OsmAnd/res/values-lt/strings.xml index 36989898e7..049ac26e8c 100644 --- a/OsmAnd/res/values-lt/strings.xml +++ b/OsmAnd/res/values-lt/strings.xml @@ -2777,4 +2777,7 @@ Tai yra puikus būdas paremti OsmAnd ir OSM, jei jie jums patinka. Pridėtas taškas nebus matomas žemėlapyje, nes pasirinkta grupė yra paslėpta, ją galite rasti \"%s\". Pasirinkite intervalą nuo kurio taškas su atstumu ar laiku bus pavaizduojamas ekrane ant trasos. Pasirinkite norima dalinimo variantą: pagal laiką arba pagal atstumą. + Pridėti nuotrauką + Sukurti naują paskyrą + Aš jau turiu paskyrą \ No newline at end of file diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index 8ccc84ede3..5863aba29d 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -1692,7 +1692,7 @@ \n \n OsmAnd utvikles aktivt, og prosjektet vårt og dets videre framdrift avhenger av finansielle bidrag for å drive utviklingen og testingen av nye funksjoner. Overvei å kjøpe OsmAnd+ eller støtte spesifikke nye funksjoner eller bidra med en generell donasjon på https://osmand.net. Last opp ditt OSM-notat anonymt eller ved å bruke din profil hos OpenStreetMap.org. - Du har ingen sporfiler ennå + Du har ingen sporfiler enda Du kan også legge til sporfiler i mappen Legg til flere… Skru på hurtigopptak @@ -1792,7 +1792,7 @@ Start nettbasert sporing Stopp nettbasert sporing Fant ikke noe. Hvis du ikke finner din region, kan du lage den selv (se https://osmand.net). - Spesifiser først en GPX-fil med et langt trykk. + Spesifiser en GPX-fil med et langt trykk først. Oppdelingsintervall Nedstigning/stigning: %1$s Tidsrom: %1$s @@ -3887,7 +3887,7 @@ Nødsfall Reise Du må legge til minst to punkter. - Sporbar betyr at sporet ikke vil vises i offentlige lister, men punkter fra det vil fremdeles ikke være tilgjengelige gjennom det offentlige GPS-API-et med tidsstempel. Andre brukere vil kun ha mulighet til å laste ned behandlede punkter fra ditt spor, noe som ikke kan tilknyttes deg direkte. + \"Sporbar\" betyr at sporet ikke vil vises i offentlige lister, men bearbeidede sporpunkter med tidsstempel (som ikke direkte kan knyttes til deg) vil være tilgjengelig gjennom nedlastinger fra det offentlige GPS-API-et. Logg inn med OpenStreetMap Bruk innlogging og passord Konto diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index 5a3ad96826..f03716f861 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -1922,7 +1922,7 @@ Subskrypcja umożliwia cogodzinne aktualizacje wszystkich map na całym świecie. \n Część dochodów wraca do społeczności OSM i jest wypłacana za każdy wkład OSM. \n Jeśli kochasz OsmAnd i OSM i chcesz je wspierać i wspierać, jest to idealny sposób, aby to zrobić. - Nazwa pliku zawiera niedozwolony znak + Niedozwolony znak w nazwie pliku Domyślny kolor Wybierz kategorię Proszę wprowadzić kategorię @@ -2526,7 +2526,7 @@ Dodaje cel pośredni Dodaje pierwszy cel pośredni Wyświetl zamknięte uwagi - Pokaż/ukryj uwagi OSM na mapie. + Pokaż lub ukryj uwagi OSM na mapie. GPX - odpowiedni do eksportowania danych do JOSM i innych edytorów OSM. OSC - odpowiedni do eksportowania danych do OSM. Plik GPX @@ -3087,7 +3087,7 @@ Użyj WunderLINQ do kontroli Dodaj co najmniej jeden element do listy w ustawieniach \"Szybkiej Akcji\" Stoki narciarskie do narciarstwa alpejskiego i zjazdowego oraz dostęp do wyciągów narciarskich. - Narty biegowe/nordic ski + Biegi narciarskie i narciarstwo klasyczne Trasy do narciarstwa klasycznego lub biegowego. Turystyka narciarska Trasy wycieczek narciarskich. @@ -3570,7 +3570,7 @@ Przycisk do wyświetlania lub ukrywania warstwy terenu na mapie. Pokaż teren Ukryj teren - Pokaż / ukryj teren + Pokaż lub ukryj teren Nachylenie Włącz, aby wyświetlić cieniowanie wzniesień lub stoków. Możesz przeczytać więcej o tego rodzaju mapach na naszej stronie. Legenda @@ -3700,9 +3700,9 @@ Powrót do edycji Ukryj transport publiczny Pokaż transport publiczny - Pokaż/ukryj transport publiczny - Utwórz / Edytuj użyteczne miejsce - Dodaj / Edytuj Ulubione + Pokaż lub ukryj transport publiczny + Utwórz lub edytuj użyteczne miejsce + Dodaj lub edytuj ulubione miejsce Przycisk akcji przełącza między wybranymi profilami. Dodaj profil Zmiana profilu aplikacji @@ -3910,7 +3910,7 @@ Nazwa: Z – A Nazwa: A – Z Co nowego - Ikony start/koniec + Ikony startu i końca Dziękujemy za zakup \"Linii konturowych\" Subskrypcja naliczona za wybrany okres. Anuluj ją w AppGallery w dowolnym momencie. Płatność zostanie pobrana z konta AppGallery po potwierdzeniu zakupu. @@ -3958,14 +3958,14 @@ Musisz dodać co najmniej dwa punkty Wystąpił problem z Twoją subskrypcją. Kliknij przycisk, aby przejść do ustawień subskrypcji Google Play i naprawić metodę płatności. Subskrypcja OsmAnd Live jest wstrzymana - Login + Nazwa użytkownika Zaloguj się do OpenStreetMap Zaloguj się do OpenStreetMap.org Zaloguj się za pomocą OpenStreetMap Musisz się zalogować, aby przesłać nowe lub zmodyfikowane zmiany. \n \nMożesz zalogować się za pomocą bezpiecznej metody autoryzacji OAuth lub użyć swojego loginu i hasła. - Użyj loginu i hasła + Zaloguj się za pomocą nazwy użytkownika i hasła Konto Zamknij uwagę OSM Skomentuj uwagę OSM @@ -3973,7 +3973,7 @@ Wyślij plik GPX do OpenStreetMap Wpisz tagi oddzielone przecinkami. Możliwość śledzenia oznacza, że ślad nie pojawi się na żadnej publicznej liście, ale punkty śledzenia będą nadal dostępne za pośrednictwem publicznego API GPS ze znacznikami czasu. Inni użytkownicy będą mogli pobrać tylko te przetworzone punkty śledzenia z Twojego śladu, których nie można powiązać bezpośrednio z Tobą. - Możesz zalogować się przy użyciu bezpiecznej metody OAuth lub użyć swojego loginu i hasła. + Zaloguj się przy użyciu bezpiecznej metody autoryzacji OAuth lub użyj swojej nazwy użytkownika i hasła. Dodaj zdjęcie Zarejestruj się w \nOpenPlaceReviews.org diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 802205f9e0..75fe84842c 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -2389,7 +2389,7 @@ \n O plugin de mapas de ski Skiing OsmAnd permite que você veja pistas de ski com nível de complexidade e algumas informações adicionais, como localização de elevadores e outras facilidades. Buffer de tempo para rastreamento on-line O nome contém muitas letras maiúsculas. Continuar\? - O nome do arquivo contém caracteres ilegais + Caráter ilegal no nome do arquivo Ação rápida Ação %d Tela %d @@ -2551,7 +2551,7 @@ \n Laociano Mostrar notas encerradas - Mostrar/ocultar notas OSM no mapa. + Mostrar ou ocultar notas OSM no mapa. Arquivo GPX Arquivo OSC Selecione o tipo de arquivo @@ -3078,9 +3078,9 @@ Altere o zoom do mapa rolando a roda para cima e para baixo. Escape retorna para o aplicativo WunderLINQ. Use o WunderLINQ para controle Adicionar ao menos um item à lista nas configurações de \'Ação rápida\' - Esqui alpino/de declínio + Esqui alpino e downhill Pistas de esqui alpino ou de declínio e acesso a teleféricos. - Cross country/esqui nórdico + Cross country e esqui nórdico Trilhas para esqui nórdico ou cross-country. Turismo de esqui Rotas para passeios de esqui. @@ -3359,7 +3359,7 @@ Ponto de partida Estima a hora de chegada de tipos de estradas desconhecidas e limita a velocidade de todas as estradas (pode afetar o roteamento) Trilha salva - O nome do arquivo está vazio + Nome de arquivo vazio Reverter Um botão para fazer com que a tela centralize o ponto de partida. Em seguida, solicitará para definir o destino ou acionar o cálculo da rota. Mostrar os nós da rede de ciclovias @@ -3569,7 +3569,7 @@ Sombras de relevo %1$s de %2$s Encostas - Mostrar / ocultar terreno + Mostrar ou ocultar terreno Ocultar terreno Mostrar terreno Um botão para mostrar ou ocultar a camada do terreno no mapa. @@ -3686,11 +3686,11 @@ Você pode acessar essas ações tocando no botão “%1$s”. Ocultar transporte público Mostrar transporte público - Mostrar/ocultar transporte público + Mostrar ou ocultar transporte público Botão que mostra ou oculta o transporte público no mapa. - Criar / Editar POI + Criar ou editar POI Posições de estacionamento - Adicionar / Editar favorito + Adicionar ou editar favoritos Restaurar ordem de itens padrão Voltar à edição Retomar @@ -3867,7 +3867,7 @@ Nome do arquivo %s arquivos de trilha selecionados Pausará o registro de rastreamento quando o aplicativo for encerrado (por meio de aplicativos recentes). (A indicação de uso em segundo plano do OsmAnd desaparece da barra de notificação do Android.) - Especifique o intervalo de registro para a gravação geral da trilha (habilitado por meio do widget Gravação de viagem no mapa). + Especifique o intervalo de registro para a gravação geral da trilha (ligado por meio do widget de \'gravação de viagem\' no mapa). Pausar gravação de viagem Retomar a gravação da viagem Padrão do sistema @@ -3883,7 +3883,7 @@ Refazer "• Função de planejamento de rota atualizada: permite o uso de diferentes tipos de navegação por segmento e a inclusão de trilhas \n -\n • Novo menu de aparência para trilhas: selecione cor, espessura, setas de direção de exibição, ícones de início / término +\n • Novo menu de aparência para trilhas: selecione cor, espessura, setas de direção de exibição, ícones de início e término \n \n • Melhor visibilidade dos nós da bicicleta. \n @@ -3899,7 +3899,7 @@ Última modificação Nome: Z – A Nome: A – Z - Ícones de início/término + Ícones de início e término Obrigado por adquirir \'curvas de nível\' Assinatura cobrada por período selecionado. Cancele no AppGallery a qualquer momento. O pagamento será cobrado em sua conta AppGallery na confirmação da compra. @@ -3960,10 +3960,10 @@ Histórico de marcadores Enviar arquivo GPX para OpenStreetMap Insira as etiquetas separadas por vírgula. - Público significa que o traçado será mostrado publicamente em Seus traços de GPS e em listas públicas de traços de GPS. Os dados fornecidos por meio da API não fazem referência à sua página de rastreamento. Os carimbos de data/hora dos pontos de rastreamento não estão disponíveis por meio da API GPS pública e os pontos não são ordenados cronologicamente. No entanto, outros usuários ainda podem fazer o download do rastreamento bruto da lista pública de rastreamento e de quaisquer carimbos de data/hora contidos nela. - Privado significa que o rastreamento não aparecerá em nenhuma lista pública, mas os pontos de trilha dele ainda estarão disponíveis por meio da API GPS pública sem carimbos de data/hora, mas não serão ordenados cronologicamente. - Identificável significa que o traço será mostrado publicamente em Seus traços de GPS e em listas públicas de traços de GPS, ou seja, outros usuários poderão fazer download do traço bruto e associá-lo ao seu nome de usuário. Os dados fornecidos por meio da API de pontos de trilha farão referência à sua página de rastreamento original. Os carimbos de data/hora dos pontos de rastreamento estão disponíveis por meio da API GPS pública. - Rastreável significa que o rastreamento não aparecerá em nenhuma lista pública, mas os pontos de trilha dele ainda estarão disponíveis por meio da API GPS pública com carimbos de data/hora. Outros usuários só poderão baixar pontos de trilha processados de seu trace, que não podem ser associados a você diretamente. + \"Público\" significa que o traçado é mostrado publicamente em seus traços GPS e em listagens públicas de traços GPS e na lista pública de traços com carimbos de data/hora em formato bruto. Os dados fornecidos por meio da API não fazem referência à sua página de rastreamento. Os carimbos de data/hora do ponto de rastreamento não estão disponíveis por meio da API GPS pública e os pontos de rastreamento não são ordenados cronologicamente. + \"Privado\" significa que o rastreamento não aparece em nenhuma listagem pública, mas os pontos de trilha dele em ordem não sincronizada estão disponíveis por meio da API GPS pública sem carimbos de data/hora. + \"Identificável\" significa que o traço será mostrado publicamente em Seus traços de GPS e em listas públicas de traços de GPS, ou seja, outros usuários poderão fazer download do traço bruto e associá-lo ao seu nome de usuário. Os dados de pontos de rastreamento com carimbo de data/hora públicos da API GPS servidos por meio da API de pontos de rastreamento farão referência à sua página de rastreamento original. + \"Rastreável\" significa que o rastreamento não aparece em nenhuma listagem pública, mas os pontos de trilha processados com carimbos de data/hora (que não podem ser associados a você diretamente) são feitos por meio de downloads da API GPS pública. Fechar nota do OSM Comentário de nota do OSM Você pode entrar usando o método OAuth seguro ou usar sua entrada e senha. @@ -3973,4 +3973,7 @@ As fotos são fornecidas pelo projeto de dados abertos do OpenPlaceReviews.org. Para carregar suas fotos você precisa se inscrever no site. Criar nova conta Eu já tenho uma conta + Histórico de busca + Caiaque + Lancha \ No newline at end of file diff --git a/OsmAnd/res/values-pt/phrases.xml b/OsmAnd/res/values-pt/phrases.xml index eb04e28ff5..0795fa347c 100644 --- a/OsmAnd/res/values-pt/phrases.xml +++ b/OsmAnd/res/values-pt/phrases.xml @@ -3835,4 +3835,34 @@ Ponto GPX Torre de radar Área de repouso + Não + Sim + Não + Sim + Não + Sim + Subnacional + Escritório de representação + Escritório + Cônsul honorário + Consulado-geral + Escritório consular + Agência consular + Liderado por um cônsul + Residência + Nunciatura + Missão + Secção de interesses + Alta comissão + Delegação + Secção + Liderado por um embaixador + Ligação + Embaixada + Serviços ao cidadão + Vistos de imigrantes + Vistos de não-imigrantes + Ligação + Consulado + Embaixada \ No newline at end of file diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml index 0c7ff7cbac..5cef9b374a 100644 --- a/OsmAnd/res/values-pt/strings.xml +++ b/OsmAnd/res/values-pt/strings.xml @@ -3980,4 +3980,13 @@ As fotos são fornecidas pelo projeto de dados abertos OpenPlaceReviews.org. Para enviar as suas fotos precisa cadastrar-se no site. Criar uma conta Já tenho uma conta + Histórico de pesquisa + Caiaque + Barco a motor + Recursos + Tamanho aproximado do ficheiro + Selecione os dados a serem exportados para o ficheiro. + Necessário para a importação + O seu aparelho só tem %1$s livre. Por favor, libere algum espaço ou desmarque alguns itens para exportar. + Não há espaço suficiente \ No newline at end of file diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index ff47fdaea2..66cbcb543b 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -3836,4 +3836,6 @@ Навесы Точка GPX Радиолокационная вышка + Придорожная стоянка + На крыше \ No newline at end of file diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 66894bb368..8a1df6b5f5 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -398,7 +398,7 @@ Флуоресцентные цвета Использовать флуоресцентные цвета для отображения треков и маршрутов. Локальное редактирование - Всегда использовать редактирование на устройстве. + Если используется редактирование на устройстве, то изменения будут сохранены локально и загружены на сервер только по запросу, иначе они будут загружаться немедленно. Изменение POI в приложении не меняет POI загруженные из интернета, однако все изменения сохраняются в локальный файл на устройстве. Отправка… {0} POI/заметок отправлено @@ -3107,7 +3107,7 @@ Режим пользователя, полученный из: %s Повторяющееся имя BRouter (локально) - Горнолыжные спуски + Альпийские и горные лыжи Склоны для катания и спуска на горных лыжах и доступ к подъёмникам. Лыжные туры Сани @@ -3334,7 +3334,7 @@ Правки OSM Поменять местами %1$s и %2$s Трек сохранён - Не указано имя файла + Пустое имя файла Очистить %1$s\? Узловые сети Предлагаемые карты @@ -3561,7 +3561,7 @@ Пересчитывать маршрут в случае отклонения %1$s из %2$s Настройка минимального и максимального уровней масштабирования, при которых слой будет отображаться. - Показать/скрыть рельеф + Показать или скрыть рельеф Переключатель, чтобы показать или скрыть слой рельефа местности на карте. Показать рельеф Скрыть рельеф @@ -3691,8 +3691,8 @@ Скрыть общественный транспорт Показать общественный транспорт Показать/скрыть общественный транспорт - Добавить/изменить место - Создать/изменить POI + Добавить или изменить избранное + Создать или изменить POI Возврат к редактированию Парковки Переключатель, чтобы показать или скрыть общественный транспорт на карте. @@ -3961,4 +3961,24 @@ Подписка OsmAnd Live приостановлена История маркеров Отправить GPX-файл в OpenStreetMap + Закрыть заметку OSM + Добавить фото + Зарегистрироваться на +\nOpenPlaceReviews.org + Создать новый аккаунт + У меня уже есть аккаунт + История поиска + Моторная лодка + Добавить в OpenPlaceReviews + Добавить в Mapillary + OsmAnd показывает фотографии из нескольких источников: +\nOpenPlaceReviews — фотогорафии POI; +\nMapillary — изображения улиц; +\nWeb / Wikimedia — фотографии POI, указанные в данных OpenStreetMap. + Ресурсы + Примерный размер файла + Требуется для импорта + Выберите данные для экспорта в файл. + На устройстве свободно только %1$s. Освободите место в хранилище или снимите выбор с некоторых экспортируемых элементов. + Недостаточно места \ No newline at end of file diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index 5dcc8b52d1..5998039bd6 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -3846,4 +3846,19 @@ Cobertura Puntu GPX Torre ràdar + Nono + Eja + Nono + Eja + Nono + Eja + Ufìtziu + Consoladu generale + Residèntzia + Missione + Commissione arta + Delegatzione + Ambassada + Consoladu + Ambassada \ No newline at end of file diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index fd038a717f..3a6de6cbea 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -786,7 +786,7 @@ Subrapositziones fluorescentes Imprea colores fluorescentes pro visualizzare rastas e àndalas. Modìficas chene lìnia - Si sa sa modìfica chene lìnia est abilitada, sas modìficas ant a èssere sarvadas in locale, in antis, e carrigadas si benit pedidu. Si nono, ant a èssere carrigadas immediatamente. + Si sa modìfica chene lìnia est abilitada, sas modìficas ant a èssere sarvadas in locale, in antis, e carrigadas si benit pedidu. Si nono, ant a èssere carrigadas immediatamente. Sa modìficas de sos PDI intre s’aplicatzione non tenent efetos in sas mapas iscarrigadas, sunt imbetzes sarvadas in su dispositivu. {0} PDI/notas carrigados/as Càrriga sa modìfica in OSM @@ -2639,7 +2639,7 @@ Còpia sa positzione/su nùmene de su PDI Logu chene nùmene Ammustra sas notas serradas - Ammustra/cua sas notas OSM in sa mapa. + Ammustra o cua sas notas OSM in sa mapa. GPX - adatu pro s\'esportatzione a JOSM o a àteros editores OSM. OSC - adatu pro s\'esportatzione in OpenStreetmap. Documentu GPX @@ -3084,9 +3084,9 @@ Ischerta sos profilos chi cheres chi siant visìbiles in s’aplicatzione. Profilos de s\'aplicatzione Annanghe a su mancu un\'elementu a sa lista in sas impostatziones pro sas atziones lestras - Iscì alpinu/de achirrada + Iscì alpinu e de achirrada Pistas pro iscì alpinu o de achirrada e atzessu a sos impiantos de artiada. - Iscì de fundu/nòrdicu + Iscì de fundu e nòrdicu Pistas pro s\'iscì nòrdicu o de fundu. Iscì-alpinismu Àndalas pro s\'iscì-alpinismu. @@ -3577,7 +3577,7 @@ Umbraduras de sos rilievos %1$s de %2$s Pistas - Ammustra / cua su terrinu + Ammustra o cua su terrinu Cua su terrinu Ammustra su terrinu Unu butone pro ammustrare o cuare s\'istratu de su terrinu in sa mapa. @@ -3695,11 +3695,11 @@ Podes atzèdere a custas atziones incarchende su butone \"%1$s\". Cua sos trasportos pùblicos Ammustra sos trasportos pùblicos - Ammustra/cua sos trasportos pùblicos + Ammustra o cua sos trasportos pùblicos Butone pro ammustrare o cuare sos trasportos pùblicos in sa mapa. - Crea / Modìfica unu PDI + Crea o modìfica unu PDI Logos de parchègiu - Annanghe / Modìfica unu preferidu + Annanghe o modìfica unu preferidu Riprìstina s\'òrdine predefinidu de sos elementos Torra a modificare Su butone de atzione faghet colare dae unu profilu ischertadu a s\'àteru. @@ -3852,7 +3852,7 @@ Sighi cun sa registratzione de su biàgiu Sarva comente documentu de rasta %s documentos de rasta ischertados - Dislinda s’intervallu pro sa registratzione generale de sas rastas (abilitadu pro mèdiu de su widget registratzione GPX in sa mapa). + Dislinda s’intervallu pro sa registratzione generale de sas rastas (allutu pro mèdiu de su widget \'Registratzione GPX\' in sa mapa). Registra Àndala de una rasta Sighi sa rasta @@ -3887,7 +3887,7 @@ Torra a fàghere • Funtzionalidade de pranificatione de un\'àndala agiornada: permitit de impreare castas diferentes de navigatzione pro segmentu e s\'inclusione de rastas \n -\n • Menù de Aparèntzia nou pro sas rastas: ischerta su colore, grussària, visulaizatzione de sas fritzas de diretzione, iconas de incumintzu/fine +\n • Menù de Aparèntzia nou pro sas rastas: ischerta su colore, grussària, visulaizatzione de sas fritzas de diretzione, iconas de incumintzu e fine \n \n • Visibilidade megiorada de sos nodos pro sas bitzicletas. \n @@ -3903,7 +3903,7 @@ Ùrtima modìfica Nùmene: Z – A Nùmene: A – Z - Iconas de incumintzu/fine + Iconas de incumintzu e fine Gràtzias pro àere comporadu \'Curvas de livellu\' Costu periòdicu de s\'abbonamentu. Lu podes anullare in AppGallery cando boles. Su pagamentu at a èssere addebitadu a su contu tuo de AppGallery cando sa còmpora at a èssere cunfirmada. @@ -3923,7 +3923,7 @@ Intra cun OAuth pro impreare sas funtzionalidades osmedit Intra impreende OAuth Iscantzella su getone OAuth de OpenStreetMap - Essida fata chene problemas + Essidu Su documentu est giai importadu in OsmAnd Imprea un\'algoritmu de càrculu de s\'àndala A* a duas fases Pro sa ghia de motoislitas cun caminos e rastas dedicados. @@ -3947,13 +3947,13 @@ Depes annànghere a su mancu duos puntos Intra in OpenStreetMap Intra in OpenStreetMap.org - Identìfica·ti cun OpenStreetMap - Depes intrare pro pòdere carrigare modìficas noas o mudadas. + Intra cun OpenStreetMap + Intra pro carrigare modìficas noas o mudadas, \n -\nPodes intrare impreende su mètodu seguru OAuth o cun s\'identificadore (su nùmene de impreadore) tuo e sa crae de intrada tua. - Imprea un\'identificadore e una crae de intrada +\nimpreende su mètodu seguru OAuth o cun su nùmene de impreadore tuo e sa crae de intrada tua. + Intra cun unu nùmene de impreadore e una crae de intrada Contu - Identificadore + Nùmene impreadore Amministra s\'abbonamentu B\'at unu problema cun s\'abbonamentu tuo. Incarca su butone pro andare a sas impostatziones de sos abbonamentos de Google Play pro acontzare sa manera de pagamentu tua. S\'abbonamentu de OsmAnd Live est iscadidu @@ -3962,17 +3962,32 @@ Cronologia de sos marcadores Imbia unu documentu GPX a OpenStreetMap Inserta sas etichetas iscrobadas dae vìrgulas. - Pùblica cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas e in sas listas de rastas GPS pùblicas. Sos datos frunidos pro mèdiu de s\'API non sunt ligados a sa pàgina de sa rasta tua. Sas datas integradas in sos puntos de rasta no ant a èssere a disponimentu pro mèdiu de s\'API GPS, e sos puntos no ant a èssere ordinados in manera cronològica. Nointames custu sos àteros impreadores ant a pòdere iscarrigare sa rasta su matessi dae sa lista pùblica de sas rastas cun totu sas datas e sas oras integradas. - Privada cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista, ma sos puntos suos ant a èssere a disponimentu su matessi pro mèdiu de s\'API GPS pùblicu chene datas e oras ma no ant a èssere ordinados in manera cronològica. - Identificàbile cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas e in sas listas de rastas GPS pùblicas. Est a nàrrere chi àteros impreadores ant a pòdere iscarrigare sa rasta e l\'ant a pòdere assotziare a su nùmene de impreadore tuo. Sos datos frunidos pro mèdiu de s\'API de sos puntos de sas rastas ant a èssere ligados a sa pàgina de sa rasta originale tua. Sas datas e sas oras de sos puntos ant a èssere a disponimentu pro mèdiu de s\'API GPS pùblicu. - Arrastàbile cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista pùblica ma sos puntos suos ant a èssere a disponimentu su matessi pro mèdiu de s\'API GPS pùblicu cun sas datas. Àteros impreadores ant a pòdere iscarrigare petzi puntos de rasta protzessados dae sa rasta tua chi no ant a èssere assotziados diretamente cun tie. + \"Pùblica\" cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas, in sas listas de rastas GPS pùblicas e in sa lista de rastas pùblicas cun datas e oras in forma originale. Sos datos frunidos pro mèdiu de s\'API non sunt ligados a sa pàgina de sa rasta tua. Sas datas e sas oras integradas in sos puntos de rasta no ant a èssere a disponimentu pro mèdiu de s\'API GPS, e sos puntos no ant a èssere ordinados in manera cronològica. + \"Privada\" cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista, ma sos puntos suos ant a èssere a disponimentu su matessi, in òrdine cronològicu, pro mèdiu de s\'API GPS pùblica chene datas e oras. + \"Identificàbile\" cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas e in sas listas de rastas GPS pùblicas. Est a nàrrere chi àteros impreadores ant a pòdere iscarrigare sa rasta e l\'ant a pòdere assotziare a su nùmene de impreadore tuo. Sos puntos de rastas cun datas e oras dae s\'API GPS frunidos pro mèdiu de s\'API de sos puntos de sas rastas ant a èssere ligados a sa pàgina de sa rasta originale tua. + \"Arrastàbile\" cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista pùblica, ma sos puntos suos cun sas datas (no ant a èssere assotziados diretamente cun tie) l\'ant a èssere pro mèdiu de iscarrigamentos dae s\'API GPS pùblica. Serra sa nota de OSM Cummenta sa nota de OSM - Podes intrare impreende su mètodu seguru OAuth o cun su nùmene tuo e sa crae de intrada tua. + Intra impreende su mètodu seguru OAuth o cun su nùmene de impreadore tuo e sa crae de intrada tua. Annanghe una fotografia Registra·ti in \nOpenPlaceReviews.org - Sas fotografias benint frunidas dae su progetu a datos abertos OpenPlaceReviews.org. Pro pòdere carrigare sas fotografias tuas ti depes registrare in su situ. + Intra in su situ de su progetu a datos abertos OpenPlaceReviews.org. pro carrigare fintzas àteras fotografias. Crea unu contu nou Tèngio giai unu contu + Cronologia de chirca + Kàyak + Motoscafu + Annanghe a Mapillary + Annanghe a OpenPlaceReviews + OsmAnd ammustrat fotografias dae fontes medas: +\nOpenPlaceReviews - fotografias de sos PDI; +\nMapillary - immàgines a livellu de su caminu; +\nWeb / Wikimedia - fotografias de sos PDI dillindadas in sos datos de OpenStreetMap. + Risursas + Mannària aprossimativa de su documentu + Ischerta sos datos de esportare in su documentu. + Netzessàriu pro s\'importatzione + Su dispositivu tuo tenet petzi %1$s a disponimentu. Lìbera unu pagu de memòria o boga s\'ischerta a unos cantos elementos de esportare. + Non b\'at logu bastante \ No newline at end of file diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 2f0404d1dc..2b246edb29 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -1919,7 +1919,7 @@ Aplikácia teraz má povolenie zapisovať do externého úložiska, ale je potrebný reštart aplikácie. Podrobný prehľad Meno a heslo pre OSM - Názov súboru obsahuje nepovolený znak + Nepovolený znak v názve súboru Tenké Stredné Tučné @@ -2636,7 +2636,7 @@ Kopírovať názov bodu/umiestnenia Nepomenované miesto Zobraziť uzavreté poznámky - Zobraziť/skryť OSM poznámky na mape. + Zobraziť alebo skryť OSM poznámky na mape. GPX - vhodné na export do JOSM a iných editorov OSM. OSC - vhodné na export do OSM. Súbor GPX @@ -3080,7 +3080,7 @@ Zmeňte priblíženie mapy pomocou posúvania kolieskom nahor a nadol. Esc vás vráti do aplikácie WunderLINQ. Použiť WunderLINQ na približovanie Pridajte aspoň jednu položku do zoznamu v nastaveniach \'Rýchlej akcie\' - Alpské/zjazdové lyžovanie + Alpské alebo zjazdové lyžovanie Svahy pre alpské a zjazdové lyžovanie a prístup k vlekom. Bežkovanie Trasy pre beh na lyžiach. @@ -3346,7 +3346,7 @@ Zameniť %1$s a %2$s Východzí bod Stopa uložená - Názov súboru je prázdny + Prázdny názov súboru Vrátiť späť Zobraziť sieť cyklotrás Vymazať %1$s\? @@ -3574,7 +3574,7 @@ Trasa bude prepočítaná ak vzdialenosť od trasy k aktuálnej polohe je väčšia ako zvolená hodnota. %1$s z %2$s Sklony svahov - Zobraziť / skryť terén + Zobraziť alebo skryť terén Skryť terén Zobraziť terén Tlačidlo pre zobrazenie alebo skrytie vrstvy terénu na mape. @@ -3693,11 +3693,11 @@ \n Skryť verejnú dopravu Zobraziť verejnú dopravu - Zobraziť/skryť verejnú dopravu + Zobraziť alebo skryť verejnú dopravu Tlačidlo na zobrazenie alebo skrytie verejnej dopravy na mape. - Vytvoriť / Upraviť bod záujmu + Vytvoriť alebo upraviť bod záujmu Parkovacie miesta - Pridať / Upraviť obľúbený bod + Pridať alebo upraviť obľúbený bod Obnoviť predvolené poradie položiek Naspäť k úpravám K týmto akciám sa dostanete stlačením tlačidla “%1$s”. @@ -3904,7 +3904,7 @@ Naposledy zmenené Názov: Z – A Názov: A – Z - Ikony štartu/cieľa + Ikony štartu a cieľa Ďakujeme za zakúpenie modulu \'Vrstevnice\' Predplatné bude spoplatnené v zvolenom intervale. Predplatné zrušte kedykoľvek na AppGallery. Platba bude stiahnutá z vášho účtu AppGallery po potvrdení nákupu. @@ -3974,4 +3974,7 @@ Fotografie sú poskytované projektom OpenPlaceReviews.org s otvorenými dátami. Na odoslanie vašich fotiek sa musíte zaregistrovať na webovej stránke. Vytvoriť nový účet Už mám účet + História hľadania + Kajak + Motorový čln \ No newline at end of file diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml index cc955e79c5..70d6d83d6b 100644 --- a/OsmAnd/res/values-uk/phrases.xml +++ b/OsmAnd/res/values-uk/phrases.xml @@ -3838,4 +3838,34 @@ Дах Точка GPX Радіолокаційна вежа + Багатонаціональне + Нунціатура + Розділ інтересів + Зв\'язок + Послуги для громадян + Імміграційні візи + Неімміграційні візи + Зв\'язок + Ні + Так + Ні + Так + Ні + Так + Представництво + Офіс + Почесний консул + Генеральне консульство + Консульський офіс + Консульський орган + Очолює консул + Резиденція + Місія + Верховний комісаріат + Делегація + Відділення + Очолює посол + Посольство + Консульство + Посольство \ No newline at end of file diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 4abd682cde..a394ed4d31 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -59,7 +59,7 @@ Видимість Теги Опис - Для вивантаження GPX-файлів, будь ласка, вкажіть Ваше ім\'я користувача і пароль в OSM. + Для вивантаження GPX-файлів вкажіть ваше ім\'я користувача і пароль в OSM. Підтримка Підтримати розробку нових функцій Відображати масштаб @@ -1946,7 +1946,7 @@ Це потрібно, щоб надавати Вам відомості про зміни на мапі. Прилюдне імʼя Територія - Будь ласка, введіть прилюдне ім\'я + Введіть загальнодоступне ім\'я Дякуємо за підтримку OsmAnd! \nЩоб задіяти усі нові можливості Вам потрібно перезапустити застосунок. Частина коштів буде спрямована землеписцям OSM, що внесли зміни до мапи в цьому місці. @@ -1956,7 +1956,7 @@ \nЯкщо Вам подобається OsmAnd та OSM, і хочете підтримати і бути підтриманими ними, це ідеальний спосіб зробити це. Надішліть Вашу OSM-нотатку таємно, або скориставшись обліковим записом на OSM.org. Надіслати нотатку в OSM - Ім\'я файлу містить неприпустимі знаки + Неприпустимі знаки в назві файлу Слідкуйте за нами Звукові напрямки Індикація звуком напряму на цільову точку. @@ -2243,7 +2243,7 @@ Рівень масштабування: %1$s Назва групи Зміна кольору - Редагувати ім\'я + Змінити ім\'я Огляд Виберіть вулицю у %1$s @@ -2433,7 +2433,7 @@ Перезавантажити Перезавантажити тайли, щоб переглянути актуальні дані. Тайловий кеш - Невірне ім\'я користувача + Неправильне ім\'я користувача до від Показувати лише додані зображення @@ -2464,7 +2464,7 @@ Перегляньте мапу і додайте точки Вимірювання відстані Необхідно додати хоча б одну точку. - Ім’я GPX файлу: + Назва GPX файлу: Показати на мапі після збереження Додати шляхову точку Зберегти GPX-точку шляху @@ -2633,7 +2633,7 @@ Додає першу зупинку Пересунути призначення далі і створити його Показати закриті нотатки - Показати/приховати OSM-нотатки на мапі. + Показати чи приховати примітки OSM на мапі. GPX — підходить для експорту в JOSM та інші OSM-редактори. OSC — підходить для експорту в OSM. GPX-файл @@ -2663,7 +2663,7 @@ Зх Пд Пн - Необов\'язкове ім\'я точки + Необов\'язкова назва точки Близькі маршрути в межах В межах Відстань: спочатку найдальше @@ -3122,7 +3122,7 @@ Змінюйте масштабування мапи прокручуванням колеса вгору і вниз. Клавіша Escape поверне вас до додатку WunderLINQ. Використовувати WunderLINQ для контролю Потрібно додати принаймні одну річ до списку у налаштуваннях \'Швидкої дії\' - Високогір\'я / гірські лижі + Альпійські та гірські лижі Траси для високогірних і гірських лиж та доступ до лижних підіймачів. Бездоріжжя Налаштувати профіль @@ -3132,7 +3132,7 @@ Оберіть налаштування навігації для профілю Вкажіть верхню межу змін Кількість змін - Бігові лижі / скандинавська ходьба + Бігові лижі та скандинавські лижі Траси для скандинавської ходьби або бігу на лижах. Лижні тури Маршрути для лижних турів. @@ -3364,7 +3364,7 @@ Змінити місцями %1$s та %2$s Початкова точка Трек збережено - Ім\'я файлу порожнє + Порожня назва файлу Повернутися Показати мережеві маршрути циклу вузлів Очистити %1$s\? @@ -3574,7 +3574,7 @@ Пагорб %1$s з %2$s Схили - Показати / приховати місцевість + Показати чи приховати рельєф Сховати місцевість Показати місцевість Кнопка для відображення або приховування шару місцевості на мапі. @@ -3691,10 +3691,10 @@ Розташування припаркованого авто Приховати громадський транспорт Показати громадський транспорт - Показати/приховати громадський транспорт + Показати чи приховати громадський транспорт Кнопка показу або приховування громадського транспорту на мапі. - Створити / змінити POI - Додати / правити вибране + Створити чи змінити POI + Додати чи змінити вибране Відновити усталене впорядкування Повернутися до редагування Ви можете отримати доступ до цих дій, торкнувшись кнопки “%1$s”. @@ -3863,7 +3863,7 @@ Обрізати після Змінити вид маршруту раніше Змінити вид маршруту після - Вкажіть інтервал для загального запису поїздки (включається через віджет запису подорожі на мапі). + Вкажіть інтервал для загального запису поїздки (увімкнено через віджет «Запис подорожі» на мапі). Усталена системна Всі наступні сегменти Попередній сегмент @@ -3884,7 +3884,7 @@ Повторити • Оновлено функції планування маршруту: дозволено застосувати різні типи переходів для кожного сегмента і прив\'язати будь-який трек до доріг \n -\n• Нове меню вигляду треків: вибір кольору, товщина, вигляд стрілки напрямку, значки початку/завершення +\n• Нове меню вигляду треків: вибір кольору, товщина, вигляд стрілки напрямку, піктограми початку та завершення \n \n• Покращено оглядовість велосипедних вузлів \n @@ -3900,7 +3900,7 @@ Востаннє змінено За назвою: Я — А За назвою: А — Я - Значки початку/завершення + Піктограми початку та завершення Дякуємо за придбання «Горизонталей» Що нового Передплата стягується за вибраний період. Скасуйте її в AppGallery у будь-який час. @@ -3914,10 +3914,10 @@ Двофазна маршрутизація для автомобільної навігації. Розвиток власного громадського транспорту Перемкнутися на розрахунок маршруту громадським транспортом за допомогою Java (безпечний) - Виконати вхід OAuth для користування функцією osmedit + Увійти за допомогою OAuth для користування функцією osmedit Увійти через OAuth Очистити токен OAuth OpenStreetMap - Ви успішно вийшли + Ви вийшли OsmAnd дані в реальному часі Уникати пішохідних шляхів Уникати пішохідних шляхів @@ -3951,27 +3951,42 @@ Передплата OsmAnd Live на утриманні Увійти до OpenStreetMap.org Увійти до OpenStreetMap.org - Увійдіть, щоб вивантажити нові або внесені зміни. + Увійдіть, щоб вивантажити нові або внесені зміни, \n -\nВи можете увійти, за допомогою безпечного методу OAuth, або скористатися своїм ім\'ям та паролем. - Використовувати ім\'я і пароль +\nабо за допомогою безпечного методу OAuth або свого ім\'я та паролю. + Увійти за допомогою імені користувача і паролю Обліковий запис Ім\'я користувача Увійти за допомогою OpenStreetMap Історія маркерів Надіслати файл GPX на OpenStreetMap Введіть мітки через коми. - Загальнодоступне означає, що трасування буде показано загальнодоступно у ваших GPS-трасуваннях та у загальнодоступних списках GPS-трасування. Дані, що подаються через API, не посилаються на вашу сторінку трасування. Мітки часу точок трасування недоступні через загальнодоступний API GPS і не впорядковані хронологічно. Однак інші користувачі все ще можуть завантажувати необроблену трасування із загальнодоступного списку трасування та будь-які часові позначки, що містяться всередині. - Приватне означає, що трасування не з\'являтиметься в жодному загальнодоступному списку, але контрольні точки з нього все одно будуть доступні через загальнодоступний API GPS без позначок часу та не впорядковані за хронологією. - Ідентифікований означає, що трасування буде показано публічно у вашому трасуванні GPS і в загальнодоступних списках трасування GPS, тобто інші користувачі зможуть завантажити необроблене трасування та пов\'язати його з вашим ім\'ям користувача. Дані, подані за допомогою API точок відстеження, посилаються на вихідну сторінку трасування. Позначки часу точок трасування доступні через загальнодоступний GPS API. - Відстежуваний означає, що трасування не з\'явиться в жодному загальнодоступному списку, але точки від нього все одно будуть доступні через загальнодоступний API GPS із позначками часу. Інші користувачі зможуть завантажувати лише оброблені контрольні точки з вашого трасування, які не можуть бути безпосередньо пов’язані з вами. + «Загальнодоступне» означає, що трасування показано загальнодоступно у ваших GPS-трасуваннях та у загальнодоступних списках GPS-трасування, а також у загальнодоступному списку трасування з позначками часу в необробленому вигляді.. Дані, що подаються через API, не посилаються на вашу сторінку трасування. Мітки часу точок трасування недоступні через загальнодоступний API GPS і не впорядковані хронологічно. + «Приватне» означає, що трасування не з\'являється в жодному загальнодоступному списку, але контрольні точки з нього в нехронологічному порядку доступні через загальнодоступний API GPS без позначок часу. + «Ідентифікований» означає, що трасування буде показано публічно у вашому трасуванні GPS і в загальнодоступних списках трасування GPS, тобто інші користувачі зможуть завантажити необроблене трасування та пов\'язати його з вашим ім\'ям користувача. Загальнодоступні дані трасування з GPS API, що обслуговуються за допомогою API точок відстеження, посилаються на початкову сторінку трасування. + «Відстежуваний» означає, що трек не з\'явиться в жодному загальнодоступному списку, але обробка точок з позначками часу від нього (які не можуть бути безпосередньо пов’язані з вами) виконується за допомогою завантажень із загальнодоступного API GPS. Закрити примітку OSM Коментувати примітку OSM - Ви можете увійти за допомогою безпечного методу OAuth або застосувавши свої ім\'я користувача й пароль. + Увійдіть за допомогою безпечного методу OAuth або застосувавши свої ім\'я користувача й пароль. Додати світлини Зареєструватися на \nOpenPlaceReviews.org - Світлини надаються проєктом відкритих даних OpenPlaceReviews.org. Щоб завантажити світлини зареєструйтеся на сайті. + Увійдіть на вебсайт проєкту відкритих даних OpenPlaceReviews.org, щоб завантажити ще більше світлин. Створити обліковий запис У мене вже є обліковий запис + Журнал пошуку + Каяк + Моторний човен + Ресурси + Приблизний розмір файлу + Виберіть дані, які потрібно експортувати до файлу. + Необхідно для імпорту + На вашому пристрої лише %1$s вільного простору. Звільніть місце або приберіть позначки з деяких елементів для експорту. + Бракує простору + Додати до Mapillary + Додати до OpenPlaceReviews + OsmAnd демонструє світлини з кількох джерел: +\nOpenPlaceReviews — світлини POI; +\nMapillary - зображення вулиць; +\nМережа / Вікімедіа — світлини POI, вказані в даних OpenStreetMap. \ 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 cd4ea85dee..083311b0c0 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -1579,7 +1579,7 @@ 玩具 冰淇淋 SIM 卡 - 分公司 + 分公司/分店 戰爭紀念碑 牌匾 雕像 @@ -3849,4 +3849,34 @@ 屋頂 GPX 點 雷達塔 + + + + + + + 準外交 + 代表處 + 辦公室 + 名譽領事 + 總領事館 + 領事館 + 領事機構 + 由領事率領 + 住宅 + 代表駐地 + 代表機構 + 利益代表處 + 高級專員 + 代表團 + 分處 + 由大使率領 + 聯絡處 + 大使館 + 公民服務 + 移民簽證 + 非移民簽證 + 聯絡處 + 領事館 + 大使館 \ No newline at end of file diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 0a000f7811..7785c07113 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -1913,7 +1913,7 @@ 完整報告 OSM 的使用者名稱與密碼 報告 - 檔案名稱包含非法字元 + 檔案名稱中有非法字元 現在應用程式允許寫入外部記憶體。但是需要重新啟動程式。 請透過地圖增加地圖標記 未發現任何航點 @@ -2632,7 +2632,7 @@ 複製地點/POI 名稱 無名稱的位置 顯示已關閉的註解 - 在地圖上顯示/隱藏 OSM 的註解。 + 在地圖上顯示或隱藏 OSM 的註解。 GPX - 適合匯出到 JOSM 或其他 OSM 編輯。 OSC - 適合匯出到 OSM。 GPX 檔案 @@ -3078,7 +3078,7 @@ 透過向上或向下捲以變更地圖縮放。Esc 會將您帶回 WunderLINQ 應用程式。 使用 WunderLINQ 來控制 至少在「快速動作」設定中新增一個項目 - 高山/下坡滑雪 + 高山與下坡滑雪 適合高山或下山滑雪的斜坡與滑雪纜車。 越野滑雪 越野滑雪的路線。 @@ -3360,7 +3360,7 @@ 起點 估計未知道路類型的到達時間,並限制所有道路的速度(可能會影響路徑) 已儲存軌跡 - 檔案名稱為空 + 空的檔案名稱 還原 讓出發點置於畫面中央的按鈕。 顯示節點網路自行車路徑 @@ -3571,7 +3571,7 @@ 啟用以檢視地形陰影或坡度圖。您可以在我們的網站上閱讀更多關於這些地圖類型的資訊。 地形陰影 坡度 - 顯示/隱藏地形 + 顯示或隱藏地形 隱藏地形 顯示地形 用於顯示或隱藏地圖上地形圖層的按鈕。 @@ -3689,10 +3689,10 @@ 您可以透過點選「%1$s」按鈕存取這些動作。 隱藏大眾運輸 在地圖上顯示或隱藏大眾運輸的按鈕。 - 顯示/隱藏大眾運輸 - 建立/編輯 POI + 顯示或隱藏大眾運輸 + 建立或編輯 POI 停車位置 - 新增/編輯收藏 + 新增與編輯收藏 恢復預設項目排序 返回編輯 恢復 @@ -3867,7 +3867,7 @@ 檔案名稱 已選定 %s 軌跡檔案 將會在應用程式被砍除時(透過最近的應用程式)暫停軌跡錄製。(OsmAnd 背景指示會從 Android 通知列中消失。) - 指定一般軌跡錄製的記錄間隔(透過地圖上的旅程錄製小工具啟用)。 + 指定一般軌跡錄製的記錄間隔(透過地圖上的旅程錄製小工具開啟)。 暫停旅程錄製 恢復旅程錄製 系統預設 @@ -3883,7 +3883,7 @@ 重做 • 更新「規劃路線」功能:允許每個路段使用不同的導航類型並包含軌跡 \n -\n • 新的軌跡外觀選項:選取顏色、厚度、開啟方向箭頭與開始/結束圖示 +\n • 新的軌跡外觀選項:選取顏色、厚度、開啟方向箭頭與開始與結束圖示 \n \n • 改善自行車節點的能見度 \n @@ -3899,7 +3899,7 @@ 最後修改時間 名稱:Z – A 名稱:A – Z - 開始/結束圖示 + 開始與結束圖示 感謝您購買 \'Contour lines\' 按選定週期收取訂閱費用。隨時在 AppGallery 上取消。 確認購買後將會從您的 AppGallery 帳號中付款。 @@ -3917,10 +3917,10 @@ 原生公共運輸發展 切換到 Java(安全)公共運輸路線計算 有什麼新鮮事 - 執行 OAuth 登入以使用 osmedit 功能 + 以 OAuth 登入以使用 osmedit 功能 透過 OAuth 登入 清除 OpenStreetMap OAuth 權杖 - 成功登出 + 已登出 適用於有專用道路與軌道的雪地摩托車駕駛。 檔案已在 OsmAnd 匯入 使用 2 相的 A* 路線演算法 @@ -3948,29 +3948,44 @@ OsmAnd Live 訂閱已過期 OsmAnd Live 訂閱已暫停 OsmAnd Live 訂閱已暫停 - 登入到 OpenStreetMap - 登入到 OpenStreetMap.org - 您必須登入以上傳新的或修正過的變更。 + 登入 OpenStreetMap + 登入 OpenStreetMap.org + 登入以上傳新的或修正過的變更, \n -\n您可以使用安全的 OAuth 方法或使用您的登入與密碼來登入。 - 使用登入與密碼 +\n以 OAuth 或使用您的使用者名稱與密碼來登入。 + 以使用者名稱與密碼登入 帳號 - 登入 + 使用者名稱 使用 OpenStreetMap 登入 標記歷史 傳送 GPX 檔案到 OpenStreetMap 輸入以逗號分隔的標籤。 - 公開代表軌跡將會公開顯示在您的 GPS 軌跡與公開的 GPS 軌跡清單中。透過 API 取得的 API 不會參考您的軌跡頁面。軌跡點的時間戳不會透過公開的 GPS API 提供,也不會按時間排序。不過,其他使用者仍可以從公開的軌跡清單下載原始軌跡與任何其中包含的時間戳。 - 私有代表了軌跡不會顯示在任何公開的清單中,但其軌跡點仍可透過公開的 GPS API 取得,但沒有時間戳,也不會按時間順序排列。 - 可識別代表軌跡將會在您的 GPS 軌跡與公開 GPS 軌跡清單中顯示,亦即其他使用者將可以下載原始軌跡並將其與您的使用者名稱相關聯。透過軌跡點 API 提供的資料將會參考您的原始軌跡頁面。軌跡點的時間戳可透過公開的 GPS API 取得。 - 可追蹤代表軌跡不會顯示在任何公開的清單中,但其追蹤點仍可以透過帶有時間戳的公開 GPS API 使用。其他使用者將只能從您的軌跡中下載處理過的追蹤點,但這些追蹤點無法直接與與您相關聯。 + 「公開」代表軌跡將會公開顯示在您的 GPS 軌跡與公開的 GPS 軌跡清單中,且在公開軌跡清單中會以帶有原始形式的時間戳顯示。透過 API 取得的資料不會引用您的軌跡頁面。軌跡點的時間戳不會透過公開的 GPS API 提供,也不會按時間排序。 + 「私有」代表軌跡不會顯示在任何公開的清單中,但其軌跡點仍可透過公開的 GPS API 取得,但沒有時間戳,也不會按時間順序排列。 + 「可識別」代表軌跡將會在您的 GPS 軌跡與公開 GPS 軌跡清單中顯示,亦即其他使用者將可以下載原始軌跡並將其與您的使用者名稱相關聯。透過追蹤點 API 提供的 GPS API 中帶有公開時間戳的追蹤點資料將會引用您的原始追蹤頁面。 + 「可追蹤」代表軌跡不會在任何公開的清單中顯示,但帶有時間戳(這並不會與您直接相關聯)的已處理追蹤點可從公開的 GPS API 下載。 關閉 OSM 註記 評論 OSM 註記 - 您可以使用安全的 OAuth 方式或是使用您的帳號與密碼來登入。 + 使用安全的 OAuth 方式或是使用您的使用者名稱與密碼來登入。 新增照片 註冊於 \nOpenPlaceReviews.org - 照片由開放資料專案 OpenPlaceReviews.org 提供。為了上傳您的照片,您必須在網站上註冊。 + 登入開放資料專案網站 OpenPlaceReviews.org 以上傳更多照片。 建立新帳號 我已經有帳號了 + 搜尋歷史紀錄 + 皮艇 + 快艇 + 新增到 Mapillary + 新增到 OpenPlaceReviews + OsmAnd 從多個來源顯示照片: +\nOpenPlaceReviews - POI 照片; +\nMapillary - 街景; +\n網路/維基媒體 - 特定 OpenStreetMap 資料的 POI 照片。 + 資源 + 大約檔案大小 + 選取要匯出到檔案的資料。 + 匯入需要 + 您的裝置僅剩 %1$s 可用空間。請釋出一些空間或取消選取要匯出的部份檔案。 + 空間不足 \ No newline at end of file diff --git a/OsmAnd/res/values/sizes.xml b/OsmAnd/res/values/sizes.xml index 0cb79d23d1..64ab1cc330 100644 --- a/OsmAnd/res/values/sizes.xml +++ b/OsmAnd/res/values/sizes.xml @@ -289,6 +289,7 @@ 1.5 128dp 8dp + 28dp 236dp 68dp diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 7a5a9b759e..b14a87fdbd 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,21 +11,26 @@ Thx - Hardy --> + Select items that will be imported. + Select groups that will be imported. There is not enough space Your device only has %1$s free. Please free up some space or unselect some items to export. Needed for import Select the data to be exported to the file. Approximate file size Resources + OsmAnd shows photos from several sources:\nOpenPlaceReviews - POI photos;\nMapillary - street-level imagery;\nWeb / Wikimedia - POI photos specified in OpenStreetMap data. + Add to OpenPlaceReviews + Add to Mapillary Motorboat Kayak Search history I already have an account Create new account - Photos are provided by open data project OpenPlaceReviews.org. In order to upload your photos you need to sign up on website. + Log in on the open data project website OpenPlaceReviews.org to upload even more photos. Register on\nOpenPlaceReviews.org Add photo - You can log in using the safe OAuth method or use your login and password. + Log in using the safe OAuth method or use your username and password. Comment OSM Note Close OSM Note \"Trackable\" means the trace does not show up in any public listings, but processed trackpoints with timestamps from it (that can\'t be associated with you directly) do through downloads from the public GPS API. @@ -40,15 +45,15 @@ OsmAnd Live subscription has been expired There is a problem with your subscription. Click the button to go to the Google Play subscription settings to fix your payment method. Manage subscription - Login + Username Password Account - Use login and password - You need to login to upload new or modified changes. \n\nYou can log in using the safe OAuth method or use your login and password. + Log in with username and password + Log in to upload new or modified changes,\n\neither with OAuth or using your username and password. You can view all your not yet uploaded edits or OSM bugs in %1$s. Uploaded points don’t show in OsmAnd. - Sign in with OpenStreetMap - Login to OpenStreetMap.org - Login to OpenStreetMap + Log in with OpenStreetMap + Login for OpenStreetMap.org + Login for OpenStreetMap These plugin setting are global, and apply to all profiles You need to add at least two points Travel @@ -67,10 +72,10 @@ Graph Use 2-phase A* routing algorithm File is already imported in OsmAnd - Logout successful + Logged out Clear OpenStreetMap OAuth token Log in via OAuth - Perform an OAuth Login to use osmedit features + Log in with OAuth to use osmedit features Switch to Java (safe) Public Transport routing calculation Native Public Transport development Recalculates only the initial part of the route. Can be used for long trips. diff --git a/OsmAnd/src/net/osmand/plus/OsmAndFormatter.java b/OsmAnd/src/net/osmand/plus/OsmAndFormatter.java index f9d3315bf5..92bcdef9a6 100644 --- a/OsmAnd/src/net/osmand/plus/OsmAndFormatter.java +++ b/OsmAnd/src/net/osmand/plus/OsmAndFormatter.java @@ -14,11 +14,11 @@ import net.osmand.osm.AbstractPoiType; import net.osmand.osm.MapPoiTypes; import net.osmand.osm.PoiCategory; import net.osmand.osm.PoiType; -import net.osmand.plus.settings.backend.ApplicationMode; -import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.helpers.enums.AngularConstants; import net.osmand.plus.helpers.enums.MetricsConstants; import net.osmand.plus.helpers.enums.SpeedConstants; +import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.util.Algorithms; import java.text.DateFormatSymbols; @@ -30,7 +30,6 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Locale; -import java.util.Map.Entry; import static net.osmand.data.PointDescription.getLocationOlcName; @@ -417,7 +416,7 @@ public class OsmAndFormatter { String typeName = amenity.getSubType(); if (pt != null) { typeName = pt.getTranslation(); - } else if(typeName != null){ + } else if (typeName != null) { typeName = Algorithms.capitalizeFirstLetterAndLowercase(typeName.replace('_', ' ')); } List res = new ArrayList<>(); @@ -426,7 +425,7 @@ public class OsmAndFormatter { for (String name : amenity.getAllNames(true)) { addPoiString(typeName, name, res); } - for (String name : amenity.getAdditionalInfo().values()) { + for (String name : amenity.getAdditionalInfoValues(false)) { addPoiString(typeName, name, res); } return res; @@ -444,36 +443,34 @@ public class OsmAndFormatter { public static String getAmenityDescriptionContent(OsmandApplication ctx, Amenity amenity, boolean shortDescription) { StringBuilder d = new StringBuilder(); - if(amenity.getType().isWiki()) { + if (amenity.getType().isWiki()) { return ""; } MapPoiTypes poiTypes = ctx.getPoiTypes(); - for(Entry e : amenity.getAdditionalInfo().entrySet()) { - String key = e.getKey(); - String vl = e.getValue(); - if(key.startsWith("name:")) { + for (String key : amenity.getAdditionalInfoKeys()) { + String vl = amenity.getAdditionalInfo(key); + if (key.startsWith("name:")) { continue; - } else if(vl.length() >= 150) { - if(shortDescription) { + } else if (vl.length() >= 150) { + if (shortDescription) { continue; } - } else if(Amenity.OPENING_HOURS.equals(key)) { + } else if (Amenity.OPENING_HOURS.equals(key)) { d.append(ctx.getString(R.string.opening_hours) + ": "); - } else if(Amenity.PHONE.equals(key)) { + } else if (Amenity.PHONE.equals(key)) { d.append(ctx.getString(R.string.phone) + ": "); - } else if(Amenity.WEBSITE.equals(key)) { + } else if (Amenity.WEBSITE.equals(key)) { d.append(ctx.getString(R.string.website) + ": "); } else { - AbstractPoiType pt = poiTypes.getAnyPoiAdditionalTypeByKey(e.getKey()); + AbstractPoiType pt = poiTypes.getAnyPoiAdditionalTypeByKey(key); if (pt != null) { - if(pt instanceof PoiType && !((PoiType) pt).isText()) { + if (pt instanceof PoiType && !((PoiType) pt).isText()) { vl = pt.getTranslation(); } else { - vl = pt.getTranslation() + ": " + amenity.unzipContent(e.getValue()); + vl = pt.getTranslation() + ": " + vl; } } else { - vl = Algorithms.capitalizeFirstLetterAndLowercase(e.getKey()) + - ": " + amenity.unzipContent(e.getValue()); + vl = Algorithms.capitalizeFirstLetterAndLowercase(key) + ": " + vl; } } d.append(vl).append('\n'); diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java index 9dfe4f46d1..313fa6b917 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java @@ -304,9 +304,6 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven } mapActions = new MapActivityActions(this); mapLayers = new MapActivityLayers(this); - if (mapViewTrackingUtilities == null) { - mapViewTrackingUtilities = new MapViewTrackingUtilities(app); - } dashboardOnMap.createDashboardView(); checkAppInitialization(); diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index b8d4ef0c92..441600bde2 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -819,7 +819,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { } } }); - mapInfoLayer.registerSideWidget(recordControl, new AudioVideoNotesWidgetState(app), "audionotes", false, 32); + mapInfoLayer.registerSideWidget(recordControl, new AudioVideoNotesWidgetState(app, AV_DEFAULT_ACTION), "audionotes", false, 32); mapInfoLayer.recreateControls(); } } @@ -2153,20 +2153,23 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { return DashAudioVideoNotesFragment.FRAGMENT_DATA; } - public class AudioVideoNotesWidgetState extends WidgetState { + public static class AudioVideoNotesWidgetState extends WidgetState { + + private final CommonPreference defaultActionSetting; private static final int AV_WIDGET_STATE_ASK = R.id.av_notes_widget_state_ask; private static final int AV_WIDGET_STATE_AUDIO = R.id.av_notes_widget_state_audio; private static final int AV_WIDGET_STATE_VIDEO = R.id.av_notes_widget_state_video; private static final int AV_WIDGET_STATE_PHOTO = R.id.av_notes_widget_state_photo; - AudioVideoNotesWidgetState(OsmandApplication ctx) { + AudioVideoNotesWidgetState(OsmandApplication ctx, CommonPreference defaultActionSetting) { super(ctx); + this.defaultActionSetting = defaultActionSetting; } @Override public int getMenuTitleId() { - Integer action = AV_DEFAULT_ACTION.get(); + Integer action = defaultActionSetting.get(); switch (action) { case AV_DEFAULT_ACTION_AUDIO: return R.string.av_def_action_audio; @@ -2181,7 +2184,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { @Override public int getMenuIconId() { - Integer action = AV_DEFAULT_ACTION.get(); + Integer action = defaultActionSetting.get(); switch (action) { case AV_DEFAULT_ACTION_AUDIO: return R.drawable.ic_action_micro_dark; @@ -2196,7 +2199,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { @Override public int getMenuItemId() { - Integer action = AV_DEFAULT_ACTION.get(); + Integer action = defaultActionSetting.get(); switch (action) { case AV_DEFAULT_ACTION_AUDIO: return AV_WIDGET_STATE_AUDIO; @@ -2226,19 +2229,14 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { @Override public void changeState(int stateId) { - switch (stateId) { - case AV_WIDGET_STATE_AUDIO: - AV_DEFAULT_ACTION.set(AV_DEFAULT_ACTION_AUDIO); - break; - case AV_WIDGET_STATE_VIDEO: - AV_DEFAULT_ACTION.set(AV_DEFAULT_ACTION_VIDEO); - break; - case AV_WIDGET_STATE_PHOTO: - AV_DEFAULT_ACTION.set(AV_DEFAULT_ACTION_TAKEPICTURE); - break; - default: - AV_DEFAULT_ACTION.set(AV_DEFAULT_ACTION_CHOOSE); - break; + if (stateId == AV_WIDGET_STATE_AUDIO) { + defaultActionSetting.set(AV_DEFAULT_ACTION_AUDIO); + } else if (stateId == AV_WIDGET_STATE_VIDEO) { + defaultActionSetting.set(AV_DEFAULT_ACTION_VIDEO); + } else if (stateId == AV_WIDGET_STATE_PHOTO) { + defaultActionSetting.set(AV_DEFAULT_ACTION_TAKEPICTURE); + } else { + defaultActionSetting.set(AV_DEFAULT_ACTION_CHOOSE); } } } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java index 1aa35b8589..35db3c821e 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java @@ -46,7 +46,7 @@ import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard; import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard.GetImageCardsTask; import net.osmand.plus.mapcontextmenu.builders.cards.NoImagesCard; import net.osmand.plus.mapcontextmenu.controllers.TransportStopController; -import net.osmand.plus.openplacereviews.OprStartFragment; +import net.osmand.plus.openplacereviews.AddPhotosBottomSheetDialogFragment; import net.osmand.plus.poi.PoiUIFilter; import net.osmand.plus.render.RenderingIcons; import net.osmand.plus.transport.TransportStopRoute; @@ -316,7 +316,7 @@ public class MenuBuilder { b.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { - OprStartFragment.showInstance(mapActivity.getSupportFragmentManager()); + AddPhotosBottomSheetDialogFragment.showInstance(mapActivity.getSupportFragmentManager()); } }); b.setTypeface(FontCache.getRobotoRegular(context)); @@ -337,7 +337,7 @@ public class MenuBuilder { b.setText(context.getResources().getString(R.string.shared_string_add_photo)); b.setBackgroundResource(R.drawable.btn_border_light); //TODO This feature is under development - b.setVisibility(View.GONE); + b.setVisibility(View.VISIBLE); b.setTextColor(ContextCompat.getColor(context, R.color.preference_category_title)); return b; } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java index f0d33b68dd..29fb2e578d 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java @@ -32,11 +32,11 @@ import net.osmand.plus.R; import net.osmand.plus.Version; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.helpers.FontCache; +import net.osmand.plus.helpers.enums.MetricsConstants; import net.osmand.plus.mapcontextmenu.CollapsableView; import net.osmand.plus.mapcontextmenu.MenuBuilder; import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.poi.PoiUIFilter; -import net.osmand.plus.helpers.enums.MetricsConstants; import net.osmand.plus.views.layers.POIMapLayer; import net.osmand.plus.widgets.TextViewEx; import net.osmand.plus.widgets.tools.ClickableSpanTouchListener; @@ -344,12 +344,11 @@ public class AmenityMenuBuilder extends MenuBuilder { boolean osmEditingEnabled = OsmandPlugin.getEnabledPlugin(OsmEditingPlugin.class) != null; - for (Map.Entry e : amenity.getAdditionalInfo().entrySet()) { + for (String key : amenity.getAdditionalInfoKeys()) { int iconId = 0; Drawable icon = null; int textColor = 0; - String key = e.getKey(); - String vl = e.getValue(); + String vl = amenity.getAdditionalInfo(key); if (key.equals("image") || key.equals("mapillary") @@ -460,7 +459,7 @@ public class AmenityMenuBuilder extends MenuBuilder { isCuisine = true; iconId = R.drawable.ic_action_cuisine; StringBuilder sb = new StringBuilder(); - for (String c : e.getValue().split(";")) { + for (String c : vl.split(";")) { if (sb.length() > 0) { sb.append(", "); sb.append(poiTypes.getPoiTranslation("cuisine_" + c).toLowerCase()); @@ -502,7 +501,6 @@ public class AmenityMenuBuilder extends MenuBuilder { isText = true; isDescription = iconId == R.drawable.ic_action_note_dark; textPrefix = pType.getTranslation(); - vl = amenity.unzipContent(e.getValue()); if (needIntFormatting) { vl = getFormattedInt(vl); } @@ -519,8 +517,7 @@ public class AmenityMenuBuilder extends MenuBuilder { } else if (poiType != null) { collectedPoiTypes.add(poiType); } else { - textPrefix = Algorithms.capitalizeFirstLetterAndLowercase(e.getKey()); - vl = amenity.unzipContent(e.getValue()); + textPrefix = Algorithms.capitalizeFirstLetterAndLowercase(key); } } @@ -782,11 +779,10 @@ public class AmenityMenuBuilder extends MenuBuilder { @Override protected Map getAdditionalCardParams() { Map params = new HashMap<>(); - Map additionalInfo = amenity.getAdditionalInfo(); - String imageValue = additionalInfo.get("image"); - String mapillaryValue = additionalInfo.get("mapillary"); - String wikidataValue = additionalInfo.get(Amenity.WIKIDATA); - String wikimediaValue = additionalInfo.get(Amenity.WIKIMEDIA_COMMONS); + String imageValue = amenity.getAdditionalInfo("image"); + String mapillaryValue = amenity.getAdditionalInfo("mapillary"); + String wikidataValue = amenity.getAdditionalInfo(Amenity.WIKIDATA); + String wikimediaValue = amenity.getAdditionalInfo(Amenity.WIKIMEDIA_COMMONS); if (!Algorithms.isEmpty(imageValue)) { params.put("osm_image", imageValue); } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AmenityMenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AmenityMenuController.java index aa65a39e90..11564a1b73 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AmenityMenuController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AmenityMenuController.java @@ -12,13 +12,13 @@ import net.osmand.data.TransportStop; import net.osmand.osm.PoiCategory; import net.osmand.osm.PoiFilter; import net.osmand.osm.PoiType; -import net.osmand.plus.mapmarkers.MapMarker; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.mapcontextmenu.MenuBuilder; import net.osmand.plus.mapcontextmenu.MenuController; import net.osmand.plus.mapcontextmenu.builders.AmenityMenuBuilder; +import net.osmand.plus.mapmarkers.MapMarker; import net.osmand.plus.render.RenderingIcons; import net.osmand.plus.transport.TransportStopRoute; import net.osmand.plus.wikipedia.WikipediaDialogFragment; @@ -26,7 +26,6 @@ import net.osmand.util.Algorithms; import net.osmand.util.OpeningHoursParser; import java.util.List; -import java.util.Map; public class AmenityMenuController extends MenuController { @@ -160,12 +159,9 @@ public class AmenityMenuController extends MenuController { String preferredLang = OsmandPlugin.onGetMapObjectPreferredLang(amenity, getPreferredMapAppLang(), getPreferredMapLang()); String name = amenity.getName(preferredLang, isTransliterateNames()); - Map additionalInfo = amenity.getAdditionalInfo(); - if (additionalInfo != null) { - String ref = additionalInfo.get("ref"); - if (!TextUtils.isEmpty(ref) && !ref.equals(name)) { - return name + " (" + ref + ")"; - } + String ref = amenity.getAdditionalInfo("ref"); + if (!TextUtils.isEmpty(ref) && !ref.equals(name)) { + return name + " (" + ref + ")"; } if (Algorithms.isEmpty(name) && amenity.getSubType().equalsIgnoreCase("atm")) { String operator = amenity.getAdditionalInfo("operator"); @@ -247,12 +243,9 @@ public class AmenityMenuController extends MenuController { @Override public Drawable getRightIcon() { - Map addTypes = amenity.getAdditionalInfo(); - if (addTypes != null) { - String region = addTypes.get("subway_region"); - if (region != null) { - return RenderingIcons.getBigIcon(getMapActivity(), "subway_" + region); - } + String region = amenity.getAdditionalInfo("subway_region"); + if (region != null) { + return RenderingIcons.getBigIcon(getMapActivity(), "subway_" + region); } return null; } diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersHelper.java b/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersHelper.java index 9839ccffda..3650f6d820 100644 --- a/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersHelper.java +++ b/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersHelper.java @@ -1083,6 +1083,7 @@ public class MapMarkersHelper { String creationDateStr = point.getExtensionsToRead().get(CREATION_DATE); marker.visitedDate = parseTime(visitedDateStr, format); marker.creationDate = parseTime(creationDateStr, format); + marker.history = history; marker.nextKey = history ? MapMarkersDbHelper.HISTORY_NEXT_VALUE : MapMarkersDbHelper.TAIL_NEXT_VALUE; mapMarkers.add(marker); diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index 16c8e2309c..3b70d79f11 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -722,7 +722,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route MapActivity mapActivity = getMapActivity(); if (mapActivity != null) { if (editingCtx.getPointsCount() > 0) { - if (editingCtx.isNewData() || isInEditMode()) { + if (editingCtx.isNewData()) { if (showDialog) { openSaveAsNewTrackMenu(mapActivity); } else { diff --git a/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java b/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java index c77cfbfc0d..43e1e73cc8 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java @@ -60,6 +60,8 @@ public class FavoritesActivity extends TabActivity { private int tabSize; private ImportHelper importHelper; + private ViewPager viewPager; + private Bundle intentParams = null; @Override @@ -80,7 +82,7 @@ public class FavoritesActivity extends TabActivity { List mTabs = getTabItems(); setTabs(mTabs); - ViewPager mViewPager = (ViewPager) findViewById(R.id.pager); + viewPager = findViewById(R.id.pager); if (savedInstanceState == null) { Intent intent = getIntent(); if (intent != null && intent.hasExtra(MapActivity.INTENT_PARAMS)) { @@ -93,7 +95,7 @@ public class FavoritesActivity extends TabActivity { break; } } - mViewPager.setCurrentItem(pagerItem, false); + viewPager.setCurrentItem(pagerItem, false); } } } @@ -191,6 +193,17 @@ public class FavoritesActivity extends TabActivity { return mTabs; } + public Bundle storeCurrentState() { + int currentItem = viewPager.getCurrentItem(); + if (currentItem >= 0 && currentItem < fragList.size()) { + FavoritesFragmentStateHolder stateHolder = fragList.get(currentItem).get(); + if (stateHolder != null) { + return stateHolder.storeState(); + } + } + return null; + } + @Override public void onAttachFragment(Fragment fragment) { if (fragment instanceof FavoritesFragmentStateHolder) { diff --git a/OsmAnd/src/net/osmand/plus/openplacereviews/AddPhotosBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/openplacereviews/AddPhotosBottomSheetDialogFragment.java new file mode 100644 index 0000000000..dae4fcad4b --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/openplacereviews/AddPhotosBottomSheetDialogFragment.java @@ -0,0 +1,143 @@ +package net.osmand.plus.openplacereviews; + +import android.content.Context; +import android.os.Bundle; +import android.text.SpannableString; +import android.text.Spanned; +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; + +import net.osmand.PlatformUtil; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.R; +import net.osmand.plus.UiUtilities; +import net.osmand.plus.UiUtilities.DialogButtonType; +import net.osmand.plus.base.MenuBottomSheetDialogFragment; +import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; +import net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerSpaceItem; +import net.osmand.plus.helpers.FontCache; +import net.osmand.plus.mapillary.MapillaryPlugin; +import net.osmand.plus.widgets.style.CustomTypefaceSpan; + +import org.apache.commons.logging.Log; + +public class AddPhotosBottomSheetDialogFragment extends MenuBottomSheetDialogFragment { + + public static final String TAG = AddPhotosBottomSheetDialogFragment.class.getSimpleName(); + private static final Log LOG = PlatformUtil.getLog(AddPhotosBottomSheetDialogFragment.class); + + public static final String OPEN_PLACE_REVIEWS = "OpenPlaceReviews"; + public static final String MAPILLARY = "Mapillary"; + public static final String WEB_WIKIMEDIA = "Web / Wikimedia"; + public static final String OPEN_STREET_MAP = "OpenStreetMap"; + + @Override + public void createMenuItems(Bundle savedInstanceState) { + + OsmandApplication app = getMyApplication(); + if (app == null) { + return; + } + View view = View.inflate(UiUtilities.getThemedContext(app, nightMode), + R.layout.opr_add_photo, null); + setDescriptionSpan(view); + items.add(new SimpleBottomSheetItem.Builder() + .setCustomView(view) + .create()); + items.add(new DividerSpaceItem(app, app.getResources().getDimensionPixelSize(R.dimen.text_margin_small))); + } + + private void setDescriptionSpan(View view) { + String desc = requireContext().getString(R.string.add_photos_descr); + BoldSpannableString ss = new BoldSpannableString(desc, view.getContext()); + ss.setBold(OPEN_PLACE_REVIEWS); + ss.setBold(MAPILLARY); + ss.setBold(WEB_WIKIMEDIA); + ss.setBold(OPEN_STREET_MAP); + view.findViewById(R.id.add_photos_descr).setText(ss); + } + + static class BoldSpannableString extends SpannableString { + Context ctx; + + public BoldSpannableString(CharSequence source, Context ctx) { + super(source); + this.ctx = ctx; + } + + public void setBold(String boldText) { + String source = toString(); + setSpan(new CustomTypefaceSpan(FontCache.getRobotoMedium(ctx)), + source.indexOf(boldText), source.indexOf(boldText) + boldText.length(), + Spanned.SPAN_INCLUSIVE_INCLUSIVE); + } + } + + @Override + protected int getThirdBottomButtonTextId() { + return R.string.add_to_opr; + } + + @Override + protected DialogButtonType getThirdBottomButtonType() { + return DialogButtonType.SECONDARY; + } + + @Override + protected int getFirstDividerHeight() { + return getResources().getDimensionPixelSize(R.dimen.bottom_sheet_button_divider_height); + } + + @Override + protected void onThirdBottomButtonClick() { + FragmentActivity activity = getActivity(); + if (activity != null) { + OprStartFragment.showInstance(activity.getSupportFragmentManager()); + } + dismiss(); + } + + @Override + protected int getRightBottomButtonTextId() { + return R.string.add_to_mapillary; + } + + @Override + protected DialogButtonType getRightBottomButtonType() { + return DialogButtonType.SECONDARY; + } + + @Override + protected void onRightBottomButtonClick() { + FragmentActivity activity = getActivity(); + if (activity != null) { + MapillaryPlugin.openMapillary(activity, null); + } + dismiss(); + } + + @Override + protected int getSecondDividerHeight() { + return getResources().getDimensionPixelSize(R.dimen.content_padding_small); + } + + @Override + protected int getDismissButtonTextId() { + return R.string.shared_string_cancel; + } + + public static void showInstance(@NonNull FragmentManager fm) { + try { + if (!fm.isStateSaved()) { + AddPhotosBottomSheetDialogFragment fragment = new AddPhotosBottomSheetDialogFragment(); + fragment.show(fm, TAG); + } + } catch (RuntimeException e) { + LOG.error("showInstance", e); + } + } +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/openplacereviews/OprStartFragment.java b/OsmAnd/src/net/osmand/plus/openplacereviews/OprStartFragment.java index eecd0c3f32..19a4ba57be 100644 --- a/OsmAnd/src/net/osmand/plus/openplacereviews/OprStartFragment.java +++ b/OsmAnd/src/net/osmand/plus/openplacereviews/OprStartFragment.java @@ -1,6 +1,7 @@ package net.osmand.plus.openplacereviews; import android.content.Intent; +import android.graphics.Typeface; import android.os.Bundle; import android.text.SpannableString; import android.text.Spanned; @@ -11,23 +12,41 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; + import net.osmand.PlatformUtil; import net.osmand.plus.R; +import net.osmand.plus.UiUtilities; import net.osmand.plus.base.BaseOsmAndFragment; + import org.apache.commons.logging.Log; public class OprStartFragment extends BaseOsmAndFragment { - private static final String TAG = "fragment_oprstart"; + private static final String TAG = OprStartFragment.class.getSimpleName(); private static final Log LOG = PlatformUtil.getLog(OprStartFragment.class); private static final String openPlaceReviewsUrl = "OpenPlaceReviews.org"; @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + boolean nightMode = getMyApplication().getDaynightHelper().isNightModeForMapControls(); View v = inflater.inflate(R.layout.fragment_opr_login, container, false); - v.findViewById(R.id.register_opr_create_account).setOnClickListener(new View.OnClickListener() { + View createAccount = v.findViewById(R.id.register_opr_create_account); + v.findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + FragmentActivity activity = getActivity(); + if (activity != null) { + activity.getSupportFragmentManager().popBackStack(); + } + } + }); + UiUtilities.setupDialogButton(nightMode, createAccount, UiUtilities.DialogButtonType.PRIMARY, + R.string.register_opr_create_new_account); + createAccount.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(requireContext(), OPRWebviewActivity.class); @@ -36,13 +55,10 @@ public class OprStartFragment extends BaseOsmAndFragment { startActivity(i); } }); - v.findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - getActivity().getSupportFragmentManager().popBackStack(); - } - }); - v.findViewById(R.id.register_opr_have_account).setOnClickListener(new View.OnClickListener() { + View haveAccount = v.findViewById(R.id.register_opr_have_account); + UiUtilities.setupDialogButton(nightMode, haveAccount, UiUtilities.DialogButtonType.SECONDARY, + R.string.register_opr_have_account); + haveAccount.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(requireContext(), OPRWebviewActivity.class); @@ -71,9 +87,10 @@ public class OprStartFragment extends BaseOsmAndFragment { } @Override - public void updateDrawState(TextPaint ds) { + public void updateDrawState(@NonNull TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); + ds.setTypeface(Typeface.DEFAULT_BOLD); } } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapLocalUtil.java b/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapLocalUtil.java index 26eda5f4e5..4d42026026 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapLocalUtil.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapLocalUtil.java @@ -21,7 +21,6 @@ import org.apache.commons.logging.Log; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Set; import static net.osmand.osm.edit.Entity.POI_TYPE_TAG; @@ -136,12 +135,12 @@ public class OpenstreetmapLocalUtil implements OpenstreetmapUtil { if (!Algorithms.isEmpty(amenity.getOpeningHours())) { entity.putTagNoLC(OSMTagKey.OPENING_HOURS.getValue(), amenity.getOpeningHours()); } - for (Map.Entry entry : amenity.getAdditionalInfo().entrySet()) { - AbstractPoiType abstractPoi = MapPoiTypes.getDefault().getAnyPoiAdditionalTypeByKey(entry.getKey()); - if (abstractPoi != null && abstractPoi instanceof PoiType) { + for (String key : amenity.getAdditionalInfoKeys()) { + AbstractPoiType abstractPoi = MapPoiTypes.getDefault().getAnyPoiAdditionalTypeByKey(key); + if (abstractPoi instanceof PoiType) { PoiType p = (PoiType) abstractPoi; if (!p.isNotEditableOsm() && !Algorithms.isEmpty(p.getEditOsmTag())) { - entity.putTagNoLC(p.getEditOsmTag(), entry.getValue()); + entity.putTagNoLC(p.getEditOsmTag(), amenity.getAdditionalInfo(key)); } } } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java index d6156bfcfb..c590f80b95 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java @@ -9,6 +9,8 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; +import androidx.activity.OnBackPressedCallback; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; @@ -50,6 +52,17 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); authorizationAdapter = app.getOsmOAuthHelper().getAuthorizationAdapter(); + + FragmentActivity activity = requireMyActivity(); + activity.getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) { + public void handleOnBackPressed() { + MapActivity mapActivity = getMapActivity(); + if (mapActivity != null) { + mapActivity.launchPrevActivityIntent(); + } + dismiss(); + } + }); } @Override diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java index 324f1f9d13..ecf089c0b1 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java @@ -1,10 +1,16 @@ package net.osmand.plus.osmedit.dialogs; +import android.graphics.Rect; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.text.Editable; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; +import android.view.ViewTreeObserver; +import android.widget.LinearLayout; +import android.widget.ScrollView; import android.widget.TextView; import androidx.annotation.NonNull; @@ -21,21 +27,26 @@ import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.UiUtilities.DialogButtonType; +import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.MenuBottomSheetDialogFragment; import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter; import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionAdapterListener; import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionItem; import net.osmand.plus.myplaces.AvailableGPXFragment.GpxInfo; +import net.osmand.plus.myplaces.FavoritesActivity; import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.osmedit.OsmEditingPlugin.UploadVisibility; import net.osmand.plus.osmedit.UploadGPXFilesTask; import net.osmand.plus.settings.backend.OsmandSettings; +import net.osmand.plus.settings.fragments.BaseSettingsFragment; import net.osmand.util.Algorithms; import java.util.ArrayList; import java.util.List; +import static net.osmand.plus.settings.fragments.BaseSettingsFragment.SettingsScreenType.OPEN_STREET_MAP_EDITING; + public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { public static final String TAG = SendGpxBottomSheetFragment.class.getSimpleName(); @@ -45,6 +56,7 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { private TextInputEditText tagsField; private TextInputEditText messageField; + private int contentHeightPrevious = 0; public void setGpxInfos(GpxInfo[] gpxInfos) { this.gpxInfos = gpxInfos; @@ -57,6 +69,7 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { LayoutInflater themedInflater = UiUtilities.getInflater(app, nightMode); View sendOsmPoiView = themedInflater.inflate(R.layout.send_gpx_fragment, null); + sendOsmPoiView.getViewTreeObserver().addOnGlobalLayoutListener(getOnGlobalLayoutListener()); tagsField = sendOsmPoiView.findViewById(R.id.tags_field); messageField = sendOsmPoiView.findViewById(R.id.message_field); @@ -95,9 +108,18 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { visibilityDescription.setText(selectedUploadVisibility.getDescriptionId()); horizontalSelectionAdapter.notifyDataSetChanged(); } - }); - + LinearLayout account = sendOsmPoiView.findViewById(R.id.account_container); + account.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + FragmentActivity activity = getActivity(); + if (activity != null) { + showOpenStreetMapScreen(activity); + } + dismiss(); + } + }); RecyclerView iconCategoriesRecyclerView = sendOsmPoiView.findViewById(R.id.description_view); iconCategoriesRecyclerView.setAdapter(horizontalSelectionAdapter); iconCategoriesRecyclerView.setLayoutManager(new LinearLayoutManager(app, RecyclerView.HORIZONTAL, false)); @@ -109,6 +131,53 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { items.add(titleItem); } + private ViewTreeObserver.OnGlobalLayoutListener getOnGlobalLayoutListener() { + return new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + Rect visibleDisplayFrame = new Rect(); + int buttonsHeight = getResources().getDimensionPixelSize(R.dimen.dialog_button_ex_max_width); + int shadowHeight = getResources().getDimensionPixelSize(R.dimen.bottom_sheet_top_shadow_height); + final ScrollView scrollView = getView().findViewById(R.id.scroll_view); + scrollView.getWindowVisibleDisplayFrame(visibleDisplayFrame); + int height = scrollView.getHeight(); + int contentHeight = visibleDisplayFrame.bottom - visibleDisplayFrame.top - buttonsHeight; + if (contentHeightPrevious != contentHeight || contentHeight < height) { + if (scrollView.getHeight() + shadowHeight > contentHeight) { + scrollView.getLayoutParams().height = contentHeight; + } else { + scrollView.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT; + } + scrollView.requestLayout(); + int delay = Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP ? 300 : 1000; + scrollView.postDelayed(new Runnable() { + public void run() { + scrollView.scrollTo(0, scrollView.getHeight()); + } + }, delay); + contentHeightPrevious = contentHeight; + } + } + }; + } + + protected static void showOpenStreetMapScreen(@NonNull FragmentActivity activity) { + if (activity instanceof MapActivity) { + BaseSettingsFragment.showInstance(activity, OPEN_STREET_MAP_EDITING); + } else { + Bundle prevIntentParams = null; + if (activity instanceof FavoritesActivity) { + prevIntentParams = ((FavoritesActivity) activity).storeCurrentState(); + } else if (activity.getIntent() != null) { + prevIntentParams = activity.getIntent().getExtras(); + } + Bundle params = new Bundle(); + params.putString(BaseSettingsFragment.OPEN_SETTINGS, OPEN_STREET_MAP_EDITING.name()); + + MapActivity.launchMapActivityMoveToTop(activity, prevIntentParams, null, params); + } + } + @Override protected DialogButtonType getRightBottomButtonType() { return DialogButtonType.PRIMARY; diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java index 5046165ba7..d26c1ac212 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java @@ -14,6 +14,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.widget.SwitchCompat; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import com.google.android.material.textfield.TextInputLayout; @@ -40,6 +41,7 @@ import org.apache.commons.logging.Log; import static net.osmand.plus.UiUtilities.setupDialogButton; import static net.osmand.plus.osmedit.OsmEditingFragment.OSM_LOGIN_DATA; import static net.osmand.plus.osmedit.ValidateOsmLoginDetailsTask.ValidateOsmLoginListener; +import static net.osmand.plus.osmedit.dialogs.SendGpxBottomSheetFragment.showOpenStreetMapScreen; import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.OPENSTREETMAP_POINT; import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.ProgressDialogPoiUploader; import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.SimpleProgressDialogPoiUploader; @@ -129,6 +131,17 @@ public class SendOsmNoteBottomSheetFragment extends MenuBottomSheetDialogFragmen uploadAnonymously.setPadding(paddingSmall, 0, paddingSmall, 0); } }); + LinearLayout account = accountBlockView.findViewById(R.id.account_container); + account.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + FragmentActivity activity = getActivity(); + if (activity != null) { + showOpenStreetMapScreen(activity); + } + dismiss(); + } + }); final SimpleBottomSheetItem bottomSheetItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder() .setCustomView(sendOsmNoteView) .create(); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java index 748d9504f0..42ba887996 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java @@ -6,10 +6,12 @@ import android.view.ContextThemeWrapper; import android.view.View; import android.widget.CompoundButton; import android.widget.EditText; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.widget.SwitchCompat; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import net.osmand.PlatformUtil; @@ -31,7 +33,10 @@ import org.apache.commons.logging.Log; import java.util.HashMap; import java.util.Map; -import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.*; +import static net.osmand.plus.osmedit.dialogs.SendGpxBottomSheetFragment.showOpenStreetMapScreen; +import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.OPENSTREETMAP_POINT; +import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.ProgressDialogPoiUploader; +import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.SimpleProgressDialogPoiUploader; public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment { @@ -84,6 +89,17 @@ public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment { closeChangeSet.setPadding(paddingSmall, 0, paddingSmall, 0); } }); + LinearLayout account = sendOsmPoiView.findViewById(R.id.account_container); + account.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + FragmentActivity activity = getActivity(); + if (activity != null) { + showOpenStreetMapScreen(activity); + } + dismiss(); + } + }); final SimpleBottomSheetItem titleItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder() .setCustomView(sendOsmPoiView) .create(); diff --git a/OsmAnd/src/net/osmand/plus/search/QuickSearchDialogFragment.java b/OsmAnd/src/net/osmand/plus/search/QuickSearchDialogFragment.java index 3c55261668..9badea394e 100644 --- a/OsmAnd/src/net/osmand/plus/search/QuickSearchDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/search/QuickSearchDialogFragment.java @@ -259,6 +259,7 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final MapActivity mapActivity = getMapActivity(); + final UiUtilities iconsCache = app.getUIUtilities(); final View view = inflater.inflate(R.layout.search_dialog_fragment, container, false); toolbarController = new QuickSearchToolbarController(); @@ -325,9 +326,9 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC buttonToolbarView = view.findViewById(R.id.button_toolbar_layout); buttonToolbarImage = (ImageView) view.findViewById(R.id.buttonToolbarImage); - buttonToolbarImage.setImageDrawable(app.getUIUtilities().getThemedIcon(R.drawable.ic_action_marker_dark)); + buttonToolbarImage.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_action_marker_dark)); buttonToolbarFilter = (ImageButton) view.findViewById(R.id.filterButton); - buttonToolbarFilter.setImageDrawable(app.getUIUtilities().getThemedIcon(R.drawable.ic_action_filter)); + buttonToolbarFilter.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_action_filter)); buttonToolbarFilter.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -474,7 +475,7 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC if (!app.getSettings().isLightContent()) { toolbar.setBackgroundColor(ContextCompat.getColor(mapActivity, R.color.app_bar_color_dark)); } - Drawable icBack = app.getUIUtilities().getThemedIcon(AndroidUtils.getNavigationIconResId(app)); + Drawable icBack = iconsCache.getThemedIcon(AndroidUtils.getNavigationIconResId(app)); toolbar.setNavigationIcon(icBack); toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); toolbar.setNavigationOnClickListener( @@ -489,7 +490,7 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC ); toolbarEdit = (Toolbar) view.findViewById(R.id.toolbar_edit); - toolbarEdit.setNavigationIcon(app.getUIUtilities().getIcon(R.drawable.ic_action_remove_dark)); + toolbarEdit.setNavigationIcon(iconsCache.getIcon(R.drawable.ic_action_remove_dark)); toolbarEdit.setNavigationContentDescription(R.string.shared_string_cancel); toolbarEdit.setNavigationOnClickListener( new OnClickListener() { @@ -501,8 +502,7 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC ); titleEdit = (TextView) view.findViewById(R.id.titleEdit); - Drawable shareIcon = app.getUIUtilities().getIcon(R.drawable.ic_action_gshare_dark, - nightMode ? R.color.text_color_secondary_dark : R.color.text_color_secondary_light); + Drawable shareIcon = iconsCache.getIcon(R.drawable.ic_action_gshare_dark, R.color.color_white); shareIcon = AndroidUtils.getDrawableForDirection(app, shareIcon); ImageView shareButton = (ImageView) view.findViewById(R.id.shareButton); shareButton.setImageDrawable(shareIcon); @@ -644,7 +644,7 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC progressBar = (ProgressBar) view.findViewById(R.id.searchProgressBar); clearButton = (ImageButton) view.findViewById(R.id.clearButton); - clearButton.setImageDrawable(app.getUIUtilities().getThemedIcon(R.drawable.ic_action_remove_dark)); + clearButton.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_action_remove_dark)); clearButton.setOnClickListener( new OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/search/QuickSearchHelper.java b/OsmAnd/src/net/osmand/plus/search/QuickSearchHelper.java index 55da1967d0..1213f550c1 100644 --- a/OsmAnd/src/net/osmand/plus/search/QuickSearchHelper.java +++ b/OsmAnd/src/net/osmand/plus/search/QuickSearchHelper.java @@ -436,7 +436,12 @@ public class QuickSearchHelper implements ResourceListener { SearchResult sr = new SearchResult(phrase); PointDescription pd = point.getName(); if (pd.isPoiType()) { - AbstractPoiType pt = MapPoiTypes.getDefault().getAnyPoiTypeByKey(pd.getName()); + String name = pd.getName(); + MapPoiTypes mapPoiTypes = MapPoiTypes.getDefault(); + AbstractPoiType pt = mapPoiTypes.getAnyPoiTypeByKey(name); + if (pt == null) { + pt = mapPoiTypes.getAnyPoiAdditionalTypeByKey(name); + } if (pt != null) { sr.localeName = pt.getTranslation(); sr.object = pt; diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/backup/CollectionSettingsItem.java b/OsmAnd/src/net/osmand/plus/settings/backend/backup/CollectionSettingsItem.java index dea9d51bc8..7140c7826b 100644 --- a/OsmAnd/src/net/osmand/plus/settings/backend/backup/CollectionSettingsItem.java +++ b/OsmAnd/src/net/osmand/plus/settings/backend/backup/CollectionSettingsItem.java @@ -68,6 +68,10 @@ public abstract class CollectionSettingsItem extends SettingsItem { return res; } + public boolean shouldShowDuplicates() { + return true; + } + public abstract boolean isDuplicate(@NonNull T item); @NonNull diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/backup/HistoryMarkersSettingsItem.java b/OsmAnd/src/net/osmand/plus/settings/backend/backup/HistoryMarkersSettingsItem.java index cc152f7ad3..9f441b7ec8 100644 --- a/OsmAnd/src/net/osmand/plus/settings/backend/backup/HistoryMarkersSettingsItem.java +++ b/OsmAnd/src/net/osmand/plus/settings/backend/backup/HistoryMarkersSettingsItem.java @@ -87,7 +87,7 @@ public class HistoryMarkersSettingsItem extends CollectionSettingsItem { public boolean isDuplicate(@NonNull MapMarker mapMarker) { for (MapMarker marker : existingItems) { if (marker.equals(mapMarker) - && Algorithms.objectEquals(marker.getOriginalPointDescription(), mapMarker.getOriginalPointDescription())) { + && Algorithms.objectEquals(marker.getOnlyName(), mapMarker.getOnlyName())) { return true; } } @@ -114,10 +114,13 @@ public class MarkersSettingsItem extends CollectionSettingsItem { int number = 0; while (true) { number++; - String name = item.getOnlyName() + "_" + number; + String name = item.getOnlyName() + " " + number; PointDescription description = new PointDescription(PointDescription.POINT_TYPE_LOCATION, name); - MapMarker renamedMarker = new MapMarker(item.point, description, item.getColor(), item.selected, item.index); + MapMarker renamedMarker = new MapMarker(item.point, description, item.colorIndex, item.selected, item.index); if (!isDuplicate(renamedMarker)) { + renamedMarker.history = false; + renamedMarker.visitedDate = item.visitedDate; + renamedMarker.creationDate = item.creationDate; renamedMarker.nextKey = MapMarkersDbHelper.TAIL_NEXT_VALUE; return renamedMarker; } diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/backup/SearchHistorySettingsItem.java b/OsmAnd/src/net/osmand/plus/settings/backend/backup/SearchHistorySettingsItem.java index a4af84f7ca..70e5db4ba5 100644 --- a/OsmAnd/src/net/osmand/plus/settings/backend/backup/SearchHistorySettingsItem.java +++ b/OsmAnd/src/net/osmand/plus/settings/backend/backup/SearchHistorySettingsItem.java @@ -143,6 +143,11 @@ public class SearchHistorySettingsItem extends CollectionSettingsItem) { - List duplicates = ((CollectionSettingsItem) item).processDuplicateItems(); - if (!duplicates.isEmpty()) { + CollectionSettingsItem settingsItem = (CollectionSettingsItem) item; + List duplicates = settingsItem.processDuplicateItems(); + if (!duplicates.isEmpty() && settingsItem.shouldShowDuplicates()) { duplicateItems.addAll(duplicates); } } else if (item instanceof FileSettingsItem) { @@ -471,13 +472,11 @@ public class SettingsHelper { } public List getFilteredSettingsItems(List settingsTypes, boolean globalExport) { - Map> dataList = getAdditionalData(globalExport); Map> typesMap = new HashMap<>(); - for (List objects : dataList.values()) { - for (ExportDataObject exportObject : objects) { - typesMap.put(exportObject.getType(), exportObject.getItems()); - } - } + typesMap.putAll(getSettingsItems(globalExport)); + typesMap.putAll(getMyPlacesItems()); + typesMap.putAll(getResourcesItems()); + return getFilteredSettingsItems(typesMap, settingsTypes); } @@ -498,67 +497,64 @@ public class SettingsHelper { return settingsItems; } - public Map> getAdditionalData(boolean globalExport) { - Map> dataList = new LinkedHashMap<>(); + public Map getAdditionalData(boolean globalExport) { + Map dataList = new LinkedHashMap<>(); - List settingsItems = getSettingsItems(globalExport); - List myPlacesItems = getMyPlacesItems(); - List resourcesItems = getResourcesItems(); + Map> settingsItems = getSettingsItems(globalExport); + Map> myPlacesItems = getMyPlacesItems(); + Map> resourcesItems = getResourcesItems(); if (!settingsItems.isEmpty()) { - sortExportSettingsObjects(settingsItems); - dataList.put(ExportSettingsCategory.SETTINGS, settingsItems); + dataList.put(ExportSettingsCategory.SETTINGS, new SettingsCategoryItems(settingsItems)); } if (!myPlacesItems.isEmpty()) { - sortExportSettingsObjects(myPlacesItems); - dataList.put(ExportSettingsCategory.MY_PLACES, myPlacesItems); + dataList.put(ExportSettingsCategory.MY_PLACES, new SettingsCategoryItems(myPlacesItems)); } if (!resourcesItems.isEmpty()) { - sortExportSettingsObjects(resourcesItems); - dataList.put(ExportSettingsCategory.RESOURCES, resourcesItems); + dataList.put(ExportSettingsCategory.RESOURCES, new SettingsCategoryItems(resourcesItems)); } return dataList; } - private List getSettingsItems(boolean globalExport) { - List settingsItems = new ArrayList<>(); + private Map> getSettingsItems(boolean globalExport) { + Map> settingsItems = new LinkedHashMap<>(); if (globalExport) { List appModeBeans = new ArrayList<>(); for (ApplicationMode mode : ApplicationMode.allPossibleValues()) { appModeBeans.add(mode.toModeBean()); } - settingsItems.add(new ExportDataObject(ExportSettingsType.PROFILE, appModeBeans)); + settingsItems.put(ExportSettingsType.PROFILE, appModeBeans); } - settingsItems.add(new ExportDataObject(ExportSettingsType.GLOBAL, Collections.singletonList(new GlobalSettingsItem(app.getSettings())))); + settingsItems.put(ExportSettingsType.GLOBAL, Collections.singletonList(new GlobalSettingsItem(app.getSettings()))); QuickActionRegistry registry = app.getQuickActionRegistry(); List actionsList = registry.getQuickActions(); if (!actionsList.isEmpty()) { - settingsItems.add(new ExportDataObject(ExportSettingsType.QUICK_ACTIONS, actionsList)); + settingsItems.put(ExportSettingsType.QUICK_ACTIONS, actionsList); } List poiList = app.getPoiFilters().getUserDefinedPoiFilters(false); if (!poiList.isEmpty()) { - settingsItems.add(new ExportDataObject(ExportSettingsType.POI_TYPES, poiList)); + settingsItems.put(ExportSettingsType.POI_TYPES, poiList); } List historyEntries = SearchHistoryHelper.getInstance(app).getHistoryEntries(false); if (!historyEntries.isEmpty()) { - settingsItems.add(new ExportDataObject(ExportSettingsType.SEARCH_HISTORY, historyEntries)); + settingsItems.put(ExportSettingsType.SEARCH_HISTORY, historyEntries); } Map impassableRoads = app.getAvoidSpecificRoads().getImpassableRoads(); if (!impassableRoads.isEmpty()) { - settingsItems.add(new ExportDataObject(ExportSettingsType.AVOID_ROADS, new ArrayList<>(impassableRoads.values()))); + settingsItems.put(ExportSettingsType.AVOID_ROADS, new ArrayList<>(impassableRoads.values())); } return settingsItems; } - private List getMyPlacesItems() { - List myPlacesItems = new ArrayList<>(); + private Map> getMyPlacesItems() { + Map> myPlacesItems = new LinkedHashMap<>(); List favoriteGroups = app.getFavorites().getFavoriteGroups(); if (!favoriteGroups.isEmpty()) { - myPlacesItems.add(new ExportDataObject(ExportSettingsType.FAVORITES, favoriteGroups)); + myPlacesItems.put(ExportSettingsType.FAVORITES, favoriteGroups); } File gpxDir = app.getAppPath(IndexConstants.GPX_INDEX_DIR); List gpxInfoList = GpxUiHelper.getSortedGPXFilesInfo(gpxDir, null, true); @@ -571,18 +567,18 @@ public class SettingsHelper { } } if (!files.isEmpty()) { - myPlacesItems.add(new ExportDataObject(ExportSettingsType.TRACKS, files)); + myPlacesItems.put(ExportSettingsType.TRACKS, files); } } OsmEditingPlugin osmEditingPlugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class); if (osmEditingPlugin != null) { List notesPointList = osmEditingPlugin.getDBBug().getOsmbugsPoints(); if (!notesPointList.isEmpty()) { - myPlacesItems.add(new ExportDataObject(ExportSettingsType.OSM_NOTES, notesPointList)); + myPlacesItems.put(ExportSettingsType.OSM_NOTES, notesPointList); } List editsPointList = osmEditingPlugin.getDBPOI().getOpenstreetmapPoints(); if (!editsPointList.isEmpty()) { - myPlacesItems.add(new ExportDataObject(ExportSettingsType.OSM_EDITS, editsPointList)); + myPlacesItems.put(ExportSettingsType.OSM_EDITS, editsPointList); } } AudioVideoNotesPlugin plugin = OsmandPlugin.getPlugin(AudioVideoNotesPlugin.class); @@ -595,7 +591,7 @@ public class SettingsHelper { } } if (!files.isEmpty()) { - myPlacesItems.add(new ExportDataObject(ExportSettingsType.MULTIMEDIA_NOTES, files)); + myPlacesItems.put(ExportSettingsType.MULTIMEDIA_NOTES, files); } } List mapMarkers = app.getMapMarkersHelper().getMapMarkersFromDefaultGroups(false); @@ -604,7 +600,7 @@ public class SettingsHelper { String groupId = ExportSettingsType.ACTIVE_MARKERS.name(); MapMarkersGroup markersGroup = new MapMarkersGroup(groupId, name, MapMarkersGroup.ANY_TYPE); markersGroup.setMarkers(mapMarkers); - myPlacesItems.add(new ExportDataObject(ExportSettingsType.ACTIVE_MARKERS, Collections.singletonList(markersGroup))); + myPlacesItems.put(ExportSettingsType.ACTIVE_MARKERS, Collections.singletonList(markersGroup)); } List markersHistory = app.getMapMarkersHelper().getMapMarkersFromDefaultGroups(true); if (!markersHistory.isEmpty()) { @@ -612,23 +608,23 @@ public class SettingsHelper { String groupId = ExportSettingsType.HISTORY_MARKERS.name(); MapMarkersGroup markersGroup = new MapMarkersGroup(groupId, name, MapMarkersGroup.ANY_TYPE); markersGroup.setMarkers(markersHistory); - myPlacesItems.add(new ExportDataObject(ExportSettingsType.HISTORY_MARKERS, Collections.singletonList(markersGroup))); + myPlacesItems.put(ExportSettingsType.HISTORY_MARKERS, Collections.singletonList(markersGroup)); } return myPlacesItems; } - private List getResourcesItems() { - List resourcesItems = new ArrayList<>(); + private Map> getResourcesItems() { + Map> resourcesItems = new LinkedHashMap<>(); Map externalRenderers = app.getRendererRegistry().getExternalRenderers(); if (!externalRenderers.isEmpty()) { - resourcesItems.add(new ExportDataObject(ExportSettingsType.CUSTOM_RENDER_STYLE, new ArrayList<>(externalRenderers.values()))); + resourcesItems.put(ExportSettingsType.CUSTOM_RENDER_STYLE, new ArrayList<>(externalRenderers.values())); } File routingProfilesFolder = app.getAppPath(IndexConstants.ROUTING_PROFILES_DIR); if (routingProfilesFolder.exists() && routingProfilesFolder.isDirectory()) { File[] fl = routingProfilesFolder.listFiles(); if (fl != null && fl.length > 0) { - resourcesItems.add(new ExportDataObject(ExportSettingsType.CUSTOM_ROUTING, Arrays.asList(fl))); + resourcesItems.put(ExportSettingsType.CUSTOM_ROUTING, Arrays.asList(fl)); } } List iTileSources = new ArrayList<>(); @@ -648,22 +644,22 @@ public class SettingsHelper { } } if (!iTileSources.isEmpty()) { - resourcesItems.add(new ExportDataObject(ExportSettingsType.MAP_SOURCES, iTileSources)); + resourcesItems.put(ExportSettingsType.MAP_SOURCES, iTileSources); } List localIndexInfoList = getLocalIndexData(); List files = getFilesByType(localIndexInfoList, LocalIndexType.MAP_DATA, LocalIndexType.TILES_DATA, LocalIndexType.SRTM_DATA, LocalIndexType.WIKI_DATA); if (!files.isEmpty()) { sortLocalFiles(files); - resourcesItems.add(new ExportDataObject(ExportSettingsType.OFFLINE_MAPS, files)); + resourcesItems.put(ExportSettingsType.OFFLINE_MAPS, files); } files = getFilesByType(localIndexInfoList, LocalIndexType.TTS_VOICE_DATA); if (!files.isEmpty()) { - resourcesItems.add(new ExportDataObject(ExportSettingsType.TTS_VOICE, files)); + resourcesItems.put(ExportSettingsType.TTS_VOICE, files); } files = getFilesByType(localIndexInfoList, LocalIndexType.VOICE_DATA); if (!files.isEmpty()) { - resourcesItems.add(new ExportDataObject(ExportSettingsType.VOICE, files)); + resourcesItems.put(ExportSettingsType.VOICE, files); } return resourcesItems; @@ -792,35 +788,32 @@ public class SettingsHelper { return settingsItems; } - public static Map> getSettingsToOperateByCategory(List items, boolean importComplete) { - Map> exportMap = new LinkedHashMap<>(); + public static Map getSettingsToOperateByCategory(List items, boolean importComplete) { + Map exportMap = new LinkedHashMap<>(); Map> settingsToOperate = getSettingsToOperate(items, importComplete); - List settingsItems = new ArrayList<>(); - List myPlacesItems = new ArrayList<>(); - List resourcesItems = new ArrayList<>(); + Map> settingsItems = new LinkedHashMap<>(); + Map> myPlacesItems = new LinkedHashMap<>(); + Map> resourcesItems = new LinkedHashMap<>(); for (Map.Entry> entry : settingsToOperate.entrySet()) { ExportSettingsType type = entry.getKey(); if (type.isSettingsCategory()) { - settingsItems.add(new ExportDataObject(type, entry.getValue())); + settingsItems.put(type, entry.getValue()); } else if (type.isMyPlacesCategory()) { - myPlacesItems.add(new ExportDataObject(type, entry.getValue())); + myPlacesItems.put(type, entry.getValue()); } else if (type.isResourcesCategory()) { - resourcesItems.add(new ExportDataObject(type, entry.getValue())); + resourcesItems.put(type, entry.getValue()); } } if (!settingsItems.isEmpty()) { - sortExportSettingsObjects(settingsItems); - exportMap.put(ExportSettingsCategory.SETTINGS, settingsItems); + exportMap.put(ExportSettingsCategory.SETTINGS, new SettingsCategoryItems(settingsItems)); } if (!myPlacesItems.isEmpty()) { - sortExportSettingsObjects(myPlacesItems); - exportMap.put(ExportSettingsCategory.MY_PLACES, myPlacesItems); + exportMap.put(ExportSettingsCategory.MY_PLACES, new SettingsCategoryItems(myPlacesItems)); } if (!resourcesItems.isEmpty()) { - sortExportSettingsObjects(resourcesItems); - exportMap.put(ExportSettingsCategory.RESOURCES, resourcesItems); + exportMap.put(ExportSettingsCategory.RESOURCES, new SettingsCategoryItems(resourcesItems)); } return exportMap; @@ -1016,15 +1009,4 @@ public class SettingsHelper { } }); } - - private static void sortExportSettingsObjects(List items) { - Collections.sort(items, new Comparator() { - @Override - public int compare(ExportDataObject lhs, ExportDataObject rhs) { - int order1 = lhs.getType().ordinal(); - int order2 = rhs.getType().ordinal(); - return (order1 < order2) ? -1 : ((order1 == order2) ? 0 : 1); - } - }); - } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/DuplicatesSettingsAdapter.java b/OsmAnd/src/net/osmand/plus/settings/fragments/DuplicatesSettingsAdapter.java index 252b685bfc..fc6982a7a6 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/DuplicatesSettingsAdapter.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/DuplicatesSettingsAdapter.java @@ -14,22 +14,22 @@ import net.osmand.IndexConstants; import net.osmand.PlatformUtil; import net.osmand.map.ITileSource; import net.osmand.plus.FavouritesDbHelper.FavoriteGroup; -import net.osmand.plus.audionotes.AudioVideoNotesPlugin; -import net.osmand.plus.helpers.FileNameTranslationHelper; -import net.osmand.plus.helpers.GpxUiHelper; -import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry; -import net.osmand.plus.settings.backend.ApplicationMode; -import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; +import net.osmand.plus.audionotes.AudioVideoNotesPlugin; import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo; -import net.osmand.plus.mapmarkers.MapMarkersGroup; +import net.osmand.plus.helpers.FileNameTranslationHelper; +import net.osmand.plus.helpers.GpxUiHelper; +import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry; +import net.osmand.plus.mapmarkers.MapMarker; import net.osmand.plus.poi.PoiUIFilter; import net.osmand.plus.profiles.ProfileIconColors; import net.osmand.plus.profiles.RoutingProfileDataObject.RoutingProfilesResources; import net.osmand.plus.quickaction.QuickAction; import net.osmand.plus.render.RenderingIcons; +import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean; import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; @@ -157,9 +157,9 @@ public class DuplicatesSettingsAdapter extends RecyclerView.Adapter items; - - public ExportDataObject(@NonNull ExportSettingsType type, @NonNull List items) { - this.type = type; - this.items = items; - } - - public ExportSettingsType getType() { - return type; - } - - public List getItems() { - return items; - } -} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportItemsBottomSheet.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportItemsBottomSheet.java new file mode 100644 index 0000000000..8c62e04ccf --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportItemsBottomSheet.java @@ -0,0 +1,321 @@ +package net.osmand.plus.settings.fragments; + +import android.content.res.ColorStateList; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.core.widget.CompoundButtonCompat; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; + +import net.osmand.AndroidUtils; +import net.osmand.IndexConstants; +import net.osmand.PlatformUtil; +import net.osmand.map.ITileSource; +import net.osmand.map.TileSourceManager.TileSourceTemplate; +import net.osmand.plus.FavouritesDbHelper.FavoriteGroup; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.R; +import net.osmand.plus.SQLiteTileSource; +import net.osmand.plus.UiUtilities; +import net.osmand.plus.audionotes.AudioVideoNotesPlugin; +import net.osmand.plus.base.MenuBottomSheetDialogFragment; +import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem; +import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton; +import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton.Builder; +import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; +import net.osmand.plus.base.bottomsheetmenu.simpleitems.SimpleDividerItem; +import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo; +import net.osmand.plus.helpers.FileNameTranslationHelper; +import net.osmand.plus.helpers.GpxUiHelper; +import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry; +import net.osmand.plus.mapmarkers.MapMarkersGroup; +import net.osmand.plus.osmedit.OpenstreetmapPoint; +import net.osmand.plus.osmedit.OsmEditingPlugin; +import net.osmand.plus.osmedit.OsmNotesPoint; +import net.osmand.plus.poi.PoiUIFilter; +import net.osmand.plus.profiles.ProfileIconColors; +import net.osmand.plus.profiles.RoutingProfileDataObject.RoutingProfilesResources; +import net.osmand.plus.quickaction.QuickAction; +import net.osmand.plus.render.RenderingIcons; +import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean; +import net.osmand.plus.settings.backend.ExportSettingsType; +import net.osmand.plus.settings.backend.backup.FileSettingsItem; +import net.osmand.plus.settings.backend.backup.GlobalSettingsItem; +import net.osmand.plus.settings.fragments.ExportSettingsAdapter.OnItemSelectedListener; +import net.osmand.util.Algorithms; +import net.osmand.view.ThreeStateCheckbox; + +import org.apache.commons.logging.Log; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import static net.osmand.view.ThreeStateCheckbox.State.CHECKED; +import static net.osmand.view.ThreeStateCheckbox.State.MISC; +import static net.osmand.view.ThreeStateCheckbox.State.UNCHECKED; + +public class ExportItemsBottomSheet extends MenuBottomSheetDialogFragment { + + public static final String TAG = ExportItemsBottomSheet.class.getSimpleName(); + private static final Log LOG = PlatformUtil.getLog(ExportItemsBottomSheet.class); + + private OsmandApplication app; + private UiUtilities uiUtilities; + + private ExportSettingsType type; + private List allItems; + private List selectedItems = new ArrayList<>(); + + private TextView selectedSize; + private ThreeStateCheckbox checkBox; + + private int activeColorRes; + private int secondaryColorRes; + + @Override + public void createMenuItems(Bundle savedInstanceState) { + app = requiredMyApplication(); + uiUtilities = app.getUIUtilities(); + activeColorRes = nightMode ? R.color.icon_color_active_dark : R.color.icon_color_active_light; + secondaryColorRes = nightMode ? R.color.icon_color_secondary_dark : R.color.icon_color_secondary_light; + + items.add(createTitleItem()); + items.add(new SimpleDividerItem(app)); + + for (Object object : allItems) { + final BottomSheetItemWithCompoundButton[] item = new BottomSheetItemWithCompoundButton[1]; + Builder builder = (BottomSheetItemWithCompoundButton.Builder) new Builder() + .setChecked(selectedItems.contains(object)) + .setButtonTintList(AndroidUtils.createCheckedColorStateList(app, secondaryColorRes, activeColorRes)) + .setLayoutId(R.layout.bottom_sheet_item_with_descr_and_checkbox_56dp) + .setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + boolean checked = !item[0].isChecked(); + item[0].setChecked(checked); + if (checked) { + selectedItems.add(item[0].getTag()); + } else { + selectedItems.remove(item[0].getTag()); + } + updateTitleView(); + } + }) + .setTag(object); + setupBottomSheetItem(builder, object); + item[0] = (BottomSheetItemWithCompoundButton) builder.create(); + items.add(item[0]); + } + } + + private BaseBottomSheetItem createTitleItem() { + LayoutInflater themedInflater = UiUtilities.getInflater(requireContext(), nightMode); + View view = themedInflater.inflate(R.layout.settings_group_title, null); + + checkBox = view.findViewById(R.id.check_box); + selectedSize = view.findViewById(R.id.selected_size); + TextView textView = view.findViewById(R.id.title); + textView.setText(type.getTitleId()); + view.findViewById(R.id.select_all_button).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + checkBox.performClick(); + boolean checked = checkBox.getState() == CHECKED; + if (checked) { + selectedItems.addAll(allItems); + } else { + selectedItems.clear(); + } + updateTitleView(); + updateItems(checked); + } + }); + setupDescription(view); + updateTitleView(); + + return new SimpleBottomSheetItem.Builder().setCustomView(view).create(); + } + + private void updateTitleView() { + if (Algorithms.isEmpty(selectedItems)) { + checkBox.setState(UNCHECKED); + } else { + checkBox.setState(selectedItems.containsAll(allItems) ? CHECKED : MISC); + } + int checkBoxColor = checkBox.getState() == UNCHECKED ? secondaryColorRes : activeColorRes; + CompoundButtonCompat.setButtonTintList(checkBox, ColorStateList.valueOf(ContextCompat.getColor(app, checkBoxColor))); + + selectedSize.setText(getString(R.string.ltr_or_rtl_combine_via_slash, selectedItems.size(), allItems.size())); + } + + private void updateItems(boolean checked) { + for (BaseBottomSheetItem item : items) { + if (item instanceof BottomSheetItemWithCompoundButton) { + ((BottomSheetItemWithCompoundButton) item).setChecked(checked); + } + } + } + + @Override + protected int getDismissButtonTextId() { + return R.string.shared_string_cancel; + } + + @Override + protected int getRightBottomButtonTextId() { + return R.string.shared_string_apply; + } + + @Override + protected void onRightBottomButtonClick() { + Fragment target = getTargetFragment(); + if (target instanceof OnItemSelectedListener) { + OnItemSelectedListener listener = (OnItemSelectedListener) target; + listener.onItemsSelected(type, selectedItems); + } + dismiss(); + } + + public static void showInstance(@NonNull ExportSettingsType type, List selectedItems, List allItems, @NonNull FragmentManager fm, @Nullable Fragment target) { + try { + if (!fm.isStateSaved() && fm.findFragmentByTag(TAG) == null) { + ExportItemsBottomSheet fragment = new ExportItemsBottomSheet(); + fragment.type = type; + fragment.allItems = (List) allItems; + if (selectedItems != null) { + fragment.selectedItems.addAll(selectedItems); + } + fragment.setTargetFragment(target, 0); + fragment.show(fm, TAG); + } + } catch (RuntimeException e) { + LOG.error("showInstance", e); + } + } + + private String setupDescription(View view) { + TextView description = view.findViewById(R.id.description); + if (type == ExportSettingsType.FAVORITES) { + description.setText(R.string.select_groups_for_import); + } else { + description.setText(R.string.select_items_for_import); + } + return null; + } + + private void setupBottomSheetItem(BottomSheetItemWithCompoundButton.Builder builder, Object object) { + if (object instanceof ApplicationModeBean) { + ApplicationModeBean modeBean = (ApplicationModeBean) object; + String profileName = modeBean.userProfileName; + if (Algorithms.isEmpty(profileName)) { + ApplicationMode appMode = ApplicationMode.valueOfStringKey(modeBean.stringKey, null); + profileName = getString(appMode.getNameKeyResource()); + } + builder.setTitle(profileName); + + String routingProfile = ""; + String routingProfileValue = modeBean.routingProfile; + if (!routingProfileValue.isEmpty()) { + try { + routingProfile = getString(RoutingProfilesResources.valueOf(routingProfileValue.toUpperCase()).getStringRes()); + routingProfile = Algorithms.capitalizeFirstLetterAndLowercase(routingProfile); + } catch (IllegalArgumentException e) { + routingProfile = Algorithms.capitalizeFirstLetterAndLowercase(routingProfileValue); + LOG.error("Error trying to get routing resource for " + routingProfileValue + "\n" + e); + } + } + if (!Algorithms.isEmpty(routingProfile)) { + builder.setDescription(getString(R.string.ltr_or_rtl_combine_via_colon, getString(R.string.nav_type_hint), routingProfile)); + } else { + builder.setDescription(getString(R.string.profile_type_base_string)); + } + int profileIconRes = AndroidUtils.getDrawableId(app, modeBean.iconName); + ProfileIconColors iconColor = modeBean.iconColor; + builder.setIcon(uiUtilities.getIcon(profileIconRes, iconColor.getColor(nightMode))); + } else if (object instanceof QuickAction) { + QuickAction quickAction = (QuickAction) object; + builder.setTitle(quickAction.getName(app)); + builder.setIcon(uiUtilities.getIcon(quickAction.getIconRes(), activeColorRes)); + } else if (object instanceof PoiUIFilter) { + PoiUIFilter poiUIFilter = (PoiUIFilter) object; + builder.setTitle(poiUIFilter.getName()); + int iconRes = RenderingIcons.getBigIconResourceId(poiUIFilter.getIconId()); + builder.setIcon(uiUtilities.getIcon(iconRes != 0 ? iconRes : R.drawable.ic_action_user, activeColorRes)); + } else if (object instanceof TileSourceTemplate || object instanceof SQLiteTileSource) { + ITileSource tileSource = (ITileSource) object; + builder.setTitle(tileSource.getName()); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_map, activeColorRes)); + } else if (object instanceof File) { + setupBottomSheetItemForFile(builder, (File) object); + } else if (object instanceof FileSettingsItem) { + FileSettingsItem fileSettingsItem = (FileSettingsItem) object; + setupBottomSheetItemForFile(builder, fileSettingsItem.getFile()); + } else if (object instanceof AvoidRoadInfo) { + AvoidRoadInfo avoidRoadInfo = (AvoidRoadInfo) object; + builder.setTitle(avoidRoadInfo.name); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_alert, activeColorRes)); + } else if (object instanceof OsmNotesPoint) { + OsmNotesPoint osmNotesPoint = (OsmNotesPoint) object; + builder.setTitle(osmNotesPoint.getText()); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_osm_note_add, activeColorRes)); + } else if (object instanceof OpenstreetmapPoint) { + OpenstreetmapPoint openstreetmapPoint = (OpenstreetmapPoint) object; + builder.setTitle(OsmEditingPlugin.getTitle(openstreetmapPoint, app)); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_info_dark, activeColorRes)); + } else if (object instanceof FavoriteGroup) { + FavoriteGroup group = (FavoriteGroup) object; + builder.setTitle(group.getDisplayName(app)); + int color = group.getColor() == 0 ? ContextCompat.getColor(app, R.color.color_favorite) : group.getColor(); + builder.setIcon(uiUtilities.getPaintedIcon(R.drawable.ic_action_folder, color)); + } else if (object instanceof GlobalSettingsItem) { + GlobalSettingsItem globalSettingsItem = (GlobalSettingsItem) object; + builder.setTitle(globalSettingsItem.getPublicName(app)); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_settings, activeColorRes)); + } else if (object instanceof MapMarkersGroup) { + MapMarkersGroup markersGroup = (MapMarkersGroup) object; + if (ExportSettingsType.ACTIVE_MARKERS.name().equals(markersGroup.getId())) { + builder.setTitle(getString(R.string.map_markers)); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_flag, activeColorRes)); + } else if (ExportSettingsType.HISTORY_MARKERS.name().equals(markersGroup.getId())) { + builder.setTitle(getString(R.string.map_markers)); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_history, activeColorRes)); + } + } else if (object instanceof HistoryEntry) { + HistoryEntry historyEntry = (HistoryEntry) object; + builder.setTitle(historyEntry.getName().getName()); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_history, activeColorRes)); + } + } + + private void setupBottomSheetItemForFile(Builder builder, File file) { + FileSettingsItem.FileSubtype fileSubtype = FileSettingsItem.FileSubtype.getSubtypeByPath(app, file.getPath()); + builder.setTitle(file.getName()); + if (file.getAbsolutePath().contains(IndexConstants.RENDERERS_DIR)) { + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_map_style, activeColorRes)); + } else if (file.getAbsolutePath().contains(IndexConstants.ROUTING_PROFILES_DIR)) { + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_route_distance, activeColorRes)); + } else if (file.getAbsolutePath().contains(IndexConstants.GPX_INDEX_DIR)) { + builder.setTitle(GpxUiHelper.getGpxTitle(file.getName())); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_route_distance, activeColorRes)); + } else if (file.getAbsolutePath().contains(IndexConstants.AV_INDEX_DIR)) { + int iconId = AudioVideoNotesPlugin.getIconIdForRecordingFile(file); + if (iconId == -1) { + iconId = R.drawable.ic_action_photo_dark; + } + builder.setIcon(uiUtilities.getIcon(iconId, activeColorRes)); + } else if (fileSubtype.isMap() + || fileSubtype == FileSettingsItem.FileSubtype.TTS_VOICE + || fileSubtype == FileSettingsItem.FileSubtype.VOICE) { + builder.setTitle(FileNameTranslationHelper.getFileNameWithRegion(app, file.getName())); + builder.setIcon(uiUtilities.getIcon(fileSubtype.getIconId(), activeColorRes)); + } + } +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsAdapter.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsAdapter.java index 65cd471216..452573091e 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsAdapter.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsAdapter.java @@ -21,6 +21,7 @@ import net.osmand.plus.helpers.FontCache; import net.osmand.plus.settings.backend.ExportSettingsCategory; import net.osmand.plus.settings.backend.ExportSettingsType; import net.osmand.plus.settings.backend.backup.FileSettingsItem; +import net.osmand.util.Algorithms; import net.osmand.view.ThreeStateCheckbox; import org.apache.commons.logging.Log; @@ -28,8 +29,6 @@ import org.apache.commons.logging.Log; import java.io.File; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -44,9 +43,9 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { private final OsmandApplication app; private final UiUtilities uiUtilities; - private List itemsTypes = new ArrayList<>(); - private Map> selectedItemsMap = new HashMap<>(); - private Map> itemsMap = new LinkedHashMap<>(); + private List itemsTypes; + private Map> selectedItemsMap; + private Map itemsMap; private final OnItemSelectedListener listener; @@ -73,7 +72,7 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { group = themedInflater.inflate(R.layout.profile_data_list_item_group, parent, false); } final ExportSettingsCategory category = itemsTypes.get(groupPosition); - final List items = itemsMap.get(category); + final SettingsCategoryItems items = itemsMap.get(category); String title = app.getString(category.getTitleId()); TextView titleTv = group.findViewById(R.id.title_tv); @@ -83,9 +82,8 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { subTextTv.setText(getCategoryDescr(category)); int selectedTypes = 0; - for (int i = 0; i < items.size(); i++) { - ExportDataObject object = items.get(i); - if (selectedItemsMap.containsKey(object.getType())) { + for (ExportSettingsType type : items.getTypes()) { + if (!Algorithms.isEmpty(selectedItemsMap.get(type))) { selectedTypes++; } } @@ -93,7 +91,7 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { if (selectedTypes == 0) { checkBox.setState(UNCHECKED); } else { - checkBox.setState(selectedTypes == items.size() ? CHECKED : MISC); + checkBox.setState(selectedTypes == items.getTypes().size() ? CHECKED : MISC); } int checkBoxColor = checkBox.getState() == UNCHECKED ? secondaryColorRes : activeColorRes; CompoundButtonCompat.setButtonTintList(checkBox, ColorStateList.valueOf(ContextCompat.getColor(app, checkBoxColor))); @@ -103,17 +101,6 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { public void onClick(View view) { checkBox.performClick(); boolean selected = checkBox.getState() == CHECKED; - if (selected) { - for (ExportDataObject object : items) { - if (!selectedItemsMap.containsKey(object.getType())) { - selectedItemsMap.put(object.getType(), object.getItems()); - } - } - } else { - for (ExportDataObject object : items) { - selectedItemsMap.remove(object.getType()); - } - } if (listener != null) { listener.onCategorySelected(category, selected); } @@ -136,26 +123,29 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { if (child == null) { child = themedInflater.inflate(R.layout.profile_data_list_item_group, parent, false); } - final ExportDataObject currentItem = itemsMap.get(itemsTypes.get(groupPosition)).get(childPosition); - List selectedItems = selectedItemsMap.get(currentItem.getType()); + final ExportSettingsCategory category = itemsTypes.get(groupPosition); + final SettingsCategoryItems categoryItems = itemsMap.get(category); + final ExportSettingsType type = categoryItems.getTypes().get(childPosition); + final List items = categoryItems.getItemsForType(type); + List selectedItems = selectedItemsMap.get(type); TextView titleTv = child.findViewById(R.id.title_tv); - titleTv.setText(currentItem.getType().getTitleId()); + titleTv.setText(type.getTitleId()); TextView subTextTv = child.findViewById(R.id.sub_text_tv); - subTextTv.setText(getSelectedTypeDescr(currentItem)); + subTextTv.setText(getSelectedTypeDescr(type, items)); ImageView icon = child.findViewById(R.id.explist_indicator); - setupIcon(icon, currentItem.getType().getIconRes(), selectedItems != null); + setupIcon(icon, type.getIconRes(), !Algorithms.isEmpty(selectedItems)); final ThreeStateCheckbox checkBox = child.findViewById(R.id.check_box); if (selectedItems == null) { checkBox.setState(UNCHECKED); - } else if (selectedItems.containsAll(currentItem.getItems())) { + } else if (selectedItems.containsAll(items)) { checkBox.setState(CHECKED); } else { boolean contains = false; - for (Object object : currentItem.getItems()) { + for (Object object : items) { if (selectedItems.contains(object)) { contains = true; break; @@ -163,7 +153,14 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { } checkBox.setState(contains ? MISC : UNCHECKED); } - + child.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (listener != null) { + listener.onTypeClicked(category, type); + } + } + }); int checkBoxColor = checkBox.getState() == UNCHECKED ? secondaryColorRes : activeColorRes; CompoundButtonCompat.setButtonTintList(checkBox, ColorStateList.valueOf(ContextCompat.getColor(app, checkBoxColor))); child.findViewById(R.id.check_box_container).setOnClickListener(new View.OnClickListener() { @@ -171,13 +168,8 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { public void onClick(View view) { checkBox.performClick(); boolean selected = checkBox.getState() == CHECKED; - if (selected) { - selectedItemsMap.put(currentItem.getType(), currentItem.getItems()); - } else { - selectedItemsMap.remove(currentItem.getType()); - } if (listener != null) { - listener.onTypeSelected(currentItem.getType(), selected); + listener.onItemsSelected(type, selected ? items : new ArrayList<>()); } notifyDataSetChanged(); } @@ -195,7 +187,7 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { @Override public int getChildrenCount(int i) { - return itemsMap.get(itemsTypes.get(i)).size(); + return itemsMap.get(itemsTypes.get(i)).getTypes().size(); } @Override @@ -205,7 +197,9 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { @Override public Object getChild(int groupPosition, int childPosition) { - return itemsMap.get(itemsTypes.get(groupPosition)).get(childPosition); + SettingsCategoryItems categoryItems = itemsMap.get(itemsTypes.get(groupPosition)); + ExportSettingsType type = categoryItems.getTypes().get(groupPosition); + return categoryItems.getItemsForType(type).get(childPosition); } @Override @@ -237,19 +231,15 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { } } - public void updateSettingsList(Map> itemsMap) { + public void updateSettingsItems(Map itemsMap, + Map> selectedItemsMap) { this.itemsMap = itemsMap; this.itemsTypes = new ArrayList<>(itemsMap.keySet()); + this.selectedItemsMap = selectedItemsMap; Collections.sort(itemsTypes); notifyDataSetChanged(); } - public void clearSettingsList() { - this.itemsMap.clear(); - this.itemsTypes.clear(); - notifyDataSetChanged(); - } - public boolean hasSelectedData() { return !selectedItemsMap.isEmpty(); } @@ -265,21 +255,20 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { private String getCategoryDescr(ExportSettingsCategory category) { long itemsSize = 0; int selectedTypes = 0; - List items = itemsMap.get(category); - for (int i = 0; i < items.size(); i++) { - ExportDataObject object = items.get(i); - if (selectedItemsMap.containsKey(object.getType())) { + SettingsCategoryItems items = itemsMap.get(category); + for (ExportSettingsType type : items.getTypes()) { + if (!Algorithms.isEmpty(selectedItemsMap.get(type))) { selectedTypes++; - itemsSize += calculateItemsSize(object.getItems()); + itemsSize += calculateItemsSize(items.getItemsForType(type)); } } String description; if (selectedTypes == 0) { description = app.getString(R.string.shared_string_none); - } else if (selectedTypes == items.size()) { + } else if (selectedTypes == items.getTypes().size()) { description = app.getString(R.string.shared_string_all); } else { - description = app.getString(R.string.ltr_or_rtl_combine_via_slash, String.valueOf(selectedTypes), String.valueOf(items.size())); + description = app.getString(R.string.ltr_or_rtl_combine_via_slash, String.valueOf(selectedTypes), String.valueOf(items.getTypes().size())); } String formattedSize = AndroidUtils.formatSize(app, itemsSize); return itemsSize == 0 ? description : app.getString(R.string.ltr_or_rtl_combine_via_comma, description, formattedSize); @@ -297,12 +286,11 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { return itemsSize; } - private String getSelectedTypeDescr(ExportDataObject dataObject) { + private String getSelectedTypeDescr(ExportSettingsType type, List items) { long itemsSize = 0; int selectedTypes = 0; - List items = dataObject.getItems(); - List selectedItems = selectedItemsMap.get(dataObject.getType()); + List selectedItems = selectedItemsMap.get(type); if (selectedItems != null) { for (int i = 0; i < items.size(); i++) { Object object = items.get(i); @@ -333,9 +321,11 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { interface OnItemSelectedListener { + void onItemsSelected(ExportSettingsType type, List selectedItems); + void onCategorySelected(ExportSettingsCategory type, boolean selected); - void onTypeSelected(ExportSettingsType type, boolean selected); + void onTypeClicked(ExportSettingsCategory category, ExportSettingsType type); } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsFragment.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsFragment.java index ce9d1f414e..77960d9cef 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsFragment.java @@ -50,7 +50,10 @@ import org.apache.commons.logging.Log; import java.io.File; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -74,7 +77,9 @@ public class ExportSettingsFragment extends BaseOsmAndFragment implements OnItem private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MM-yy", Locale.US); private OsmandApplication app; - private Map> dataList; + + private Map> selectedItemsMap = new HashMap<>(); + private Map dataList = new LinkedHashMap<>(); private ProgressDialog progress; private ApplicationMode appMode; @@ -179,7 +184,7 @@ public class ExportSettingsFragment extends BaseOsmAndFragment implements OnItem }); adapter = new ExportSettingsAdapter(app, this, nightMode); - adapter.updateSettingsList(dataList); + adapter.updateSettingsItems(dataList, selectedItemsMap); expandableList.setAdapter(adapter); CollapsingToolbarLayout toolbarLayout = root.findViewById(R.id.toolbar_layout); @@ -292,15 +297,32 @@ public class ExportSettingsFragment extends BaseOsmAndFragment implements OnItem } @Override - public void onCategorySelected(ExportSettingsCategory type, boolean selected) { + public void onCategorySelected(ExportSettingsCategory category, boolean selected) { + SettingsCategoryItems categoryItems = dataList.get(category); + for (ExportSettingsType type : categoryItems.getTypes()) { + List selectedItems = selected ? categoryItems.getItemsForType(type) : new ArrayList<>(); + selectedItemsMap.put(type, selectedItems); + } updateAvailableSpace(); } @Override - public void onTypeSelected(ExportSettingsType type, boolean selected) { + public void onItemsSelected(ExportSettingsType type, List selectedItems) { + selectedItemsMap.put(type, selectedItems); + adapter.notifyDataSetChanged(); updateAvailableSpace(); } + @Override + public void onTypeClicked(ExportSettingsCategory category, ExportSettingsType type) { + FragmentManager fragmentManager = getFragmentManager(); + if (fragmentManager != null && type != ExportSettingsType.GLOBAL && type != ExportSettingsType.SEARCH_HISTORY) { + List items = (List) dataList.get(category).getItemsForType(type); + List selectedItems = (List) selectedItemsMap.get(type); + ExportItemsBottomSheet.showInstance(type, selectedItems, items, fragmentManager, this); + } + } + private void prepareFile() { if (app != null) { exportingStarted = true; diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ImportDuplicatesFragment.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ImportDuplicatesFragment.java index 6d5b74cef7..184f71452f 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/ImportDuplicatesFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/ImportDuplicatesFragment.java @@ -33,13 +33,12 @@ import net.osmand.plus.UiUtilities; import net.osmand.plus.base.BaseOsmAndFragment; import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo; import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry; -import net.osmand.plus.mapmarkers.MapMarkersGroup; +import net.osmand.plus.mapmarkers.MapMarker; import net.osmand.plus.osmedit.OpenstreetmapPoint; import net.osmand.plus.osmedit.OsmNotesPoint; import net.osmand.plus.poi.PoiUIFilter; import net.osmand.plus.quickaction.QuickAction; import net.osmand.plus.settings.backend.ApplicationMode; -import net.osmand.plus.settings.backend.ExportSettingsType; import net.osmand.plus.settings.backend.backup.SettingsHelper; import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportAsyncTask; import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportType; @@ -72,7 +71,7 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment { private SettingsHelper settingsHelper; public static void showInstance(@NonNull FragmentManager fm, List duplicatesList, - List settingsItems, File file, Fragment targetFragment) { + List settingsItems, File file, Fragment targetFragment) { ImportDuplicatesFragment fragment = new ImportDuplicatesFragment(); fragment.setTargetFragment(targetFragment, 0); fragment.setDuplicatesList(duplicatesList); @@ -203,8 +202,8 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment { List ttsVoiceFilesList = new ArrayList<>(); List voiceFilesList = new ArrayList<>(); List mapFilesList = new ArrayList<>(); - List markersGroups = new ArrayList<>(); - List markersHistoryGroups = new ArrayList<>(); + List mapMarkers = new ArrayList<>(); + List mapMarkersGroups = new ArrayList<>(); List historyEntries = new ArrayList<>(); for (Object object : duplicatesList) { @@ -242,12 +241,12 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment { osmNotesPointList.add((OsmNotesPoint) object); } else if (object instanceof OpenstreetmapPoint) { osmEditsPointList.add((OpenstreetmapPoint) object); - } else if (object instanceof MapMarkersGroup) { - MapMarkersGroup markersGroup = (MapMarkersGroup) object; - if (ExportSettingsType.ACTIVE_MARKERS.name().equals(markersGroup.getId())) { - markersGroups.add(markersGroup); - } else if (ExportSettingsType.HISTORY_MARKERS.name().equals(markersGroup.getId())) { - markersHistoryGroups.add(markersGroup); + } else if (object instanceof MapMarker) { + MapMarker mapMarker = (MapMarker) object; + if (mapMarker.history) { + mapMarkers.add(mapMarker); + } else { + mapMarkersGroups.add(mapMarker); } } else if (object instanceof HistoryEntry) { historyEntries.add((HistoryEntry) object); @@ -313,17 +312,13 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment { duplicates.add(getString(R.string.local_indexes_cat_voice)); duplicates.addAll(voiceFilesList); } - if (!markersGroups.isEmpty()) { + if (!mapMarkers.isEmpty()) { duplicates.add(getString(R.string.map_markers)); - duplicates.addAll(markersGroups); + duplicates.addAll(mapMarkers); } - if (!markersHistoryGroups.isEmpty()) { + if (!mapMarkersGroups.isEmpty()) { duplicates.add(getString(R.string.markers_history)); - duplicates.addAll(markersHistoryGroups); - } - if (!historyEntries.isEmpty()) { - duplicates.add(getString(R.string.shared_string_search_history)); - duplicates.addAll(historyEntries); + duplicates.addAll(mapMarkersGroups); } return duplicates; } diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java index 816d5517dc..9476470969 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java @@ -38,6 +38,7 @@ import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.SQLiteTileSource; import net.osmand.plus.UiUtilities; +import net.osmand.plus.UiUtilities.DialogButtonType; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.BaseOsmAndFragment; import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo; @@ -54,7 +55,6 @@ import net.osmand.plus.settings.backend.backup.AvoidRoadsSettingsItem; import net.osmand.plus.settings.backend.backup.FavoritesSettingsItem; import net.osmand.plus.settings.backend.backup.FileSettingsItem; import net.osmand.plus.settings.backend.backup.GlobalSettingsItem; -import net.osmand.plus.settings.backend.backup.SearchHistorySettingsItem; import net.osmand.plus.settings.backend.backup.HistoryMarkersSettingsItem; import net.osmand.plus.settings.backend.backup.MapSourcesSettingsItem; import net.osmand.plus.settings.backend.backup.MarkersSettingsItem; @@ -63,12 +63,12 @@ import net.osmand.plus.settings.backend.backup.OsmNotesSettingsItem; import net.osmand.plus.settings.backend.backup.PoiUiFiltersSettingsItem; import net.osmand.plus.settings.backend.backup.ProfileSettingsItem; import net.osmand.plus.settings.backend.backup.QuickActionsSettingsItem; +import net.osmand.plus.settings.backend.backup.SearchHistorySettingsItem; import net.osmand.plus.settings.backend.backup.SettingsHelper; import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportAsyncTask; import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportType; import net.osmand.plus.settings.backend.backup.SettingsItem; import net.osmand.plus.settings.backend.backup.SettingsItemType; -import net.osmand.plus.widgets.TextViewEx; import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; @@ -134,7 +134,7 @@ public class ImportSettingsFragment extends BaseOsmAndFragment { inflater = UiUtilities.getInflater(app, nightMode); View root = inflater.inflate(R.layout.fragment_import, container, false); Toolbar toolbar = root.findViewById(R.id.toolbar); - TextViewEx continueBtn = root.findViewById(R.id.continue_button); + View continueBtn = root.findViewById(R.id.continue_button); toolbarLayout = root.findViewById(R.id.toolbar_layout); expandableList = root.findViewById(R.id.list); buttonsContainer = root.findViewById(R.id.buttons_container); @@ -145,6 +145,7 @@ public class ImportSettingsFragment extends BaseOsmAndFragment { description = header.findViewById(R.id.description); description.setText(R.string.select_data_to_import); expandableList.addHeaderView(header); + UiUtilities.setupDialogButton(nightMode, continueBtn, DialogButtonType.PRIMARY, getString(R.string.shared_string_continue)); continueBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/SettingsCategoryItems.java b/OsmAnd/src/net/osmand/plus/settings/fragments/SettingsCategoryItems.java new file mode 100644 index 0000000000..2f37f9fd0e --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/SettingsCategoryItems.java @@ -0,0 +1,30 @@ +package net.osmand.plus.settings.fragments; + +import androidx.annotation.NonNull; + +import net.osmand.plus.settings.backend.ExportSettingsType; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class SettingsCategoryItems { + + private final Map> itemsMap; + + public SettingsCategoryItems(@NonNull Map> itemsMap) { + this.itemsMap = itemsMap; + } + + public List getTypes() { + return new ArrayList<>(itemsMap.keySet()); + } + + public List getItemsForType(ExportSettingsType type) { + return itemsMap.get(type); + } + + public Map> getItemsMap() { + return itemsMap; + } +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java index 3635aafe89..c142ebcf5c 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java @@ -221,18 +221,13 @@ public class TerrainFragment extends BaseOsmAndFragment implements View.OnClickL @Override public void onClick(View view) { - switch (view.getId()) { - case R.id.switch_compat: - onSwitchClick(); - break; - case R.id.left_button: - setupTerrainMode(HILLSHADE); - break; - case R.id.right_button: - setupTerrainMode(SLOPE); - break; - default: - break; + int id = view.getId(); + if (id == R.id.switch_compat) { + onSwitchClick(); + } else if (id == R.id.left_button) { + setupTerrainMode(HILLSHADE); + } else if (id == R.id.right_button) { + setupTerrainMode(SLOPE); } } diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java index 260f30fa50..475e7879aa 100644 --- a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java +++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java @@ -191,13 +191,13 @@ public class OsmandMapTileView implements IMapDownloaderCallback { private boolean wasZoomInMultiTouch; private float elevationAngle; - public OsmandMapTileView(MapActivity activity, int w, int h) { + public OsmandMapTileView(Activity activity, int w, int h) { this.activity = activity; init(activity, w, h); } // ///////////////////////////// INITIALIZING UI PART /////////////////////////////////// - public void init(final MapActivity ctx, int w, int h) { + public void init(final Activity ctx, int w, int h) { application = (OsmandApplication) ctx.getApplicationContext(); settings = application.getSettings(); @@ -256,7 +256,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback { if (isZoomingAllowed(getZoom(), -1.1f)) { getAnimatedDraggingThread().startZooming(getZoom() - 1, currentViewport.getZoomFloatPart(), false); if (wasMapLinkedBeforeGesture) { - ctx.getMapViewTrackingUtilities().setMapLinkedToLocation(true); + application.getMapViewTrackingUtilities().setMapLinkedToLocation(true); } } } @@ -1318,7 +1318,9 @@ public class OsmandMapTileView implements IMapDownloaderCallback { angle = 90f; } this.elevationAngle = angle; - ((MapActivity) activity).setMapElevation(angle); + if (activity instanceof MapActivity) { + ((MapActivity) activity).setMapElevation(angle); + } } private boolean isZoomingAllowed(int baseZoom, float dz) { @@ -1341,7 +1343,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback { @Override public boolean onDown(MotionEvent e) { // Facilitates better map re-linking for two finger tap zoom out - wasMapLinkedBeforeGesture = ((MapActivity) activity).getMapViewTrackingUtilities().isMapLinkedToLocation(); + wasMapLinkedBeforeGesture = application.getMapViewTrackingUtilities().isMapLinkedToLocation(); return false; } diff --git a/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java b/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java index c54b6afea5..117c2a4777 100644 --- a/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java @@ -37,9 +37,6 @@ import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup; import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem; import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; -import net.osmand.plus.mapmarkers.MapMarkersHelper; -import net.osmand.plus.mapmarkers.MapMarker; -import net.osmand.plus.mapmarkers.MapMarkersGroup; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; @@ -47,6 +44,9 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.PointImageDrawable; import net.osmand.plus.mapcontextmenu.controllers.SelectedGpxMenuController.SelectedGpxPoint; import net.osmand.plus.mapcontextmenu.other.TrackChartPoints; +import net.osmand.plus.mapmarkers.MapMarker; +import net.osmand.plus.mapmarkers.MapMarkersGroup; +import net.osmand.plus.mapmarkers.MapMarkersHelper; import net.osmand.plus.render.OsmandRenderer; import net.osmand.plus.render.OsmandRenderer.RenderingContext; import net.osmand.plus.routepreparationmenu.MapRouteInfoMenu; @@ -353,7 +353,7 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM } private void drawSelectedFilesSplits(Canvas canvas, RotatedTileBox tileBox, List selectedGPXFiles, - DrawSettings settings) { + DrawSettings settings) { if (tileBox.getZoom() >= START_ZOOM) { // request to load OsmandApplication app = view.getApplication(); @@ -634,7 +634,7 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM } private void drawSelectedFilesSegments(Canvas canvas, RotatedTileBox tileBox, - List selectedGPXFiles, DrawSettings settings) { + List selectedGPXFiles, DrawSettings settings) { SelectedGpxFile currentTrack = null; for (SelectedGpxFile selectedGpxFile : selectedGPXFiles) { String width = getTrackWidthName(selectedGpxFile.getGpxFile(), ""); @@ -653,7 +653,7 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM } private void drawSelectedFileSegments(SelectedGpxFile selectedGpxFile, boolean currentTrack, Canvas canvas, - RotatedTileBox tileBox, DrawSettings settings) { + RotatedTileBox tileBox, DrawSettings settings) { List segments = selectedGpxFile.getPointsToDisplay(); for (TrkSegment ts : segments) { String width = getTrackWidthName(selectedGpxFile.getGpxFile(), ""); @@ -1010,8 +1010,8 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM @Override public void applyNewObjectPosition(@NonNull Object o, - @NonNull LatLon position, - @Nullable final ContextMenuLayer.ApplyMovedObjectCallback callback) { + @NonNull LatLon position, + @Nullable final ContextMenuLayer.ApplyMovedObjectCallback callback) { if (o instanceof WptPt) { final WptPt objectInMotion = (WptPt) o; SelectedGpxFile selectedGpxFile = pointFileMap.get(objectInMotion); diff --git a/OsmAnd/src/net/osmand/plus/views/layers/geometry/GeometryWay.java b/OsmAnd/src/net/osmand/plus/views/layers/geometry/GeometryWay.java index 02671e2207..9c7fd1c782 100644 --- a/OsmAnd/src/net/osmand/plus/views/layers/geometry/GeometryWay.java +++ b/OsmAnd/src/net/osmand/plus/views/layers/geometry/GeometryWay.java @@ -338,8 +338,8 @@ public abstract class GeometryWay style : styles) { if (style.hasPathLine()) { hasPathLine = true; @@ -360,7 +360,9 @@ public abstract class GeometryWay