Merge branch 'masterOrig'

# Conflicts:
#	OsmAnd/src/net/osmand/plus/settings/backend/backup/SettingsHelper.java
This commit is contained in:
Vitaliy 2020-11-23 02:25:24 +02:00
commit bb0099d17a
101 changed files with 3657 additions and 1208 deletions

View file

@ -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.

View file

@ -25,16 +25,16 @@ public class OsmOAuthAuthorizationClient {
private final OsmAndJDKHttpClient httpClient;
public final static Log log = PlatformUtil.getLog(OsmOAuthAuthorizationClient.class);
public OsmOAuthAuthorizationClient(String key, String secret) {
public OsmOAuthAuthorizationClient(String key, String secret, DefaultApi10a api) {
httpClient = new OsmAndJDKHttpClient(JDKHttpClientConfig.defaultConfig());
service = new ServiceBuilder(key)
.apiSecret(secret)
.httpClient(httpClient)
.callback("osmand-oauth://example.com/oauth")
.build(new OsmApi());
.build(api);
}
static class OsmApi extends DefaultApi10a {
public static class OsmApi extends DefaultApi10a {
@Override
public OAuth1SignatureType getSignatureType() {
return OAuth1SignatureType.QUERY_STRING;
@ -56,6 +56,28 @@ public class OsmOAuthAuthorizationClient {
}
}
public static class OsmDevApi extends DefaultApi10a {
@Override
public OAuth1SignatureType getSignatureType() {
return OAuth1SignatureType.QUERY_STRING;
}
@Override
public String getRequestTokenEndpoint() {
return "https://master.apis.dev.openstreetmap.org/oauth/request_token";
}
@Override
public String getAccessTokenEndpoint() {
return "https://master.apis.dev.openstreetmap.org/oauth/access_token";
}
@Override
protected String getAuthorizationBaseUrl() {
return "https://master.apis.dev.openstreetmap.org/oauth/authorize";
}
}
public OsmAndJDKHttpClient getHttpClient() {
return httpClient;
}

View file

@ -250,7 +250,7 @@
<string name="set_time_timeline_descr">Elige la hora de visualización</string>
<string name="start_end_date">Fecha de Inicio — Fin</string>
<string name="saved_messages">Mensajes guardados</string>
<string name="time_zone_descr">Seleccione la zona horaria que desea mostrar en los mensajes de ubicación.</string>
<string name="time_zone_descr">Seleccione la zona horaria a mostrar en sus mensajes de ubicación.</string>
<string name="time_zone">Zona horaria</string>
<string name="units_and_formats">Unidades y formatos</string>
<string name="unit_of_length_descr">Cambia las unidades de longitud.</string>

View file

@ -267,4 +267,8 @@
<string name="last_response_date">Последњи одговор: %1$</string>
<string name="last_update_from_telegram_date">Последње ажурирање из Телеграма: %1$</string>
<string name="shared_string_error_short">Грешка</string>
<string name="shared_string_export">Извези</string>
<string name="logcat_buffer">Logcat бафер</string>
<string name="logcat_buffer_descr">Проверите и поделите детаљне записе апликације</string>
<string name="send_report">Пошаљи извештај</string>
</resources>

View file

@ -198,14 +198,10 @@ android {
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
}
}

521
OsmAnd/build.gradle.lib Normal file
View file

@ -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
// <unzip src="OsmAndCore_android.aar" dest=".">
// <patternset>
// <include name="assets/**/map/fonts/OpenSans/*"/>
// <include name="assets/**/map/fonts/NotoSans/*"/>
// </patternset>
// </unzip>
// 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 plugins 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'
}

View file

@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M22,12C22,17.5228 17.5228,22 12,22C6.4771,22 2,17.5228 2,12C2,6.4771 6.4771,2 12,2C17.5228,2 22,6.4771 22,12Z"
android:fillColor="#000000"
android:fillAlpha="0.1"
android:fillType="evenOdd"/>
<path
android:pathData="M21,12C21,16.9706 16.9706,21 12,21C7.0294,21 3,16.9706 3,12C3,7.0294 7.0294,3 12,3C16.9706,3 21,7.0294 21,12Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M12,17C14.7614,17 17,14.7614 17,12C17,9.2386 14.7614,7 12,7C9.2386,7 7,9.2386 7,12C7,14.7614 9.2386,17 12,17ZM12,19C15.866,19 19,15.866 19,12C19,8.134 15.866,5 12,5C8.134,5 5,8.134 5,12C5,15.866 8.134,19 12,19Z"
android:fillColor="#237BFF"
android:fillType="evenOdd"/>
</vector>

View file

@ -4,7 +4,8 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/custom_radio_buttons"
android:layout_width="match_parent"
android:layout_height="@dimen/dialog_button_height"
android:minHeight="@dimen/dialog_button_height"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginEnd="@dimen/content_padding"
android:background="?attr/btn_bg_border_inactive"
@ -25,27 +26,18 @@
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:textSize="@dimen/default_desc_text_size"
android:textColor="@drawable/radio_flat_text_selector_light"
osmand:typeface="@string/font_roboto_medium"
tools:text="@string/shared_string_left"/>
</FrameLayout>
<FrameLayout
android:id="@+id/center_button_container"
android:layout_width="0dp"
android:id="@+id/buttons_divider"
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:visibility="gone">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/center_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="@string/position_on_map_center"/>
android:layout_weight="0"
android:background="?attr/divider_color">
</FrameLayout>
@ -61,8 +53,9 @@
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:textSize="@dimen/default_desc_text_size"
android:textColor="@drawable/radio_flat_text_selector_light"
osmand:typeface="@string/font_roboto_medium"
android:textSize="@dimen/default_desc_text_size"
tools:text="@string/shared_string_right"/>
</FrameLayout>

View file

@ -30,22 +30,23 @@
<RelativeLayout
android:id="@+id/up_down_row"
android:layout_width="match_parent"
android:layout_height="@dimen/measurement_tool_up_down_row_height"
android:layout_height="wrap_content"
android:minHeight="112dp"
android:background="?attr/selectableItemBackground">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/main_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/measurement_tool_text_button_padding"
android:layout_marginLeft="@dimen/measurement_tool_text_button_padding"
android:layout_marginRight="@dimen/measurement_tool_text_button_padding"
android:layout_alignParentLeft="true"
android:layout_marginStart="@dimen/measurement_tool_text_button_padding"
android:layout_marginLeft="@dimen/measurement_tool_text_button_padding"
android:layout_marginTop="@dimen/bottom_sheet_icon_margin"
android:layout_marginEnd="@dimen/measurement_tool_text_button_padding"
android:layout_marginRight="@dimen/measurement_tool_text_button_padding"
android:background="@null"
tools:src="@drawable/ic_action_ruler"/>
tools:src="@drawable/ic_action_ruler" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/up_down_button"
@ -53,7 +54,7 @@
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginTop="@dimen/bottom_sheet_icon_margin"
android:layout_marginEnd="@dimen/bottom_sheet_content_margin"
android:layout_marginLeft="@dimen/bottom_sheet_content_margin"
android:layout_marginRight="@dimen/bottom_sheet_content_margin"
@ -128,6 +129,17 @@
android:textAppearance="@style/TextAppearance.ListItemTitle"
android:visibility="gone"
tools:text="@string/add_point_after"/>
<include
android:layout_width="match_parent"
android:layout_height="@dimen/measurement_tool_button_height"
android:layout_below="@id/distance_to_center_text_view"
android:layout_marginTop="@dimen/content_padding_half"
android:layout_marginBottom="@dimen/measurement_tool_content_padding_medium"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginEnd="@dimen/content_padding"
layout="@layout/custom_radio_buttons" />
</RelativeLayout>
<LinearLayout
@ -137,8 +149,6 @@
android:orientation="vertical"
android:visibility="gone" >
<include layout="@layout/custom_radio_buttons" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/content_padding_small" />
@ -150,6 +160,11 @@
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider" />
<LinearLayout
android:id="@+id/measure_mode_controls"
android:layout_width="match_parent"

View file

@ -1,15 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:background="@color/color_white"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical"
android:clickable="true"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="?attr/bg_color"
android:clickable="true"
android:focusable="true"
android:orientation="vertical">
<LinearLayout
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_height="@dimen/toolbar_height"
android:layout_marginTop="@dimen/dialog_content_margin">
<androidx.appcompat.widget.AppCompatImageView
@ -19,77 +21,85 @@
android:layout_height="match_parent"
android:layout_gravity="start"
android:contentDescription="@string/shared_string_back"
app:tint="@color/icon_color_default_light"
app:srcCompat="@drawable/ic_arrow_back"/>
app:srcCompat="@drawable/ic_arrow_back"
app:tint="@color/icon_color_default_light" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/opr_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@string/shared_string_back"
app:srcCompat="@drawable/ic_img_logo_openplacereview"/>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/toolbar"
android:layout_above="@id/buttons">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/content_padding"
android:textColor="@color/color_black"
android:textSize="20sp"
android:lineSpacingExtra="5sp"
android:textAlignment="center"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginTop="@dimen/content_padding"
android:layout_marginBottom="@dimen/dashPadding"
android:text="@string/register_on_openplacereviews"
android:gravity="center_horizontal"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/opr_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@string/shared_string_back"
app:srcCompat="@drawable/ic_img_logo_openplacereview" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/start_opr_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dashPadding"
android:layout_marginLeft="@dimen/content_padding"
android:lineSpacingExtra="5sp"
android:textColor="@color/color_black"
android:textColorLink="@color/icon_color_active_light"
android:layout_marginRight="@dimen/content_padding"
android:text="@string/register_on_openplacereviews_desc"/>
<net.osmand.plus.widgets.TextViewEx
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginTop="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginBottom="@dimen/dashPadding"
android:gravity="center_horizontal"
android:lineSpacingMultiplier="@dimen/bottom_sheet_text_spacing_multiplier"
android:text="@string/register_on_openplacereviews"
android:textAlignment="center"
android:textColor="?android:textColorPrimary"
android:textSize="20sp"
app:typeface="@string/font_roboto_medium" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/start_opr_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginTop="@dimen/dashPadding"
android:layout_marginRight="@dimen/content_padding"
android:lineSpacingMultiplier="@dimen/bottom_sheet_text_spacing_multiplier"
app:typeface="@string/font_roboto_regular"
android:text="@string/register_on_openplacereviews_desc"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
android:textColorLink="@color/icon_color_active_light" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<LinearLayout
android:gravity="bottom"
android:orientation="vertical"
android:layout_marginBottom="@dimen/content_padding_small"
android:id="@+id/buttons"
android:layout_width="match_parent"
android:layout_height="match_parent">
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">
<androidx.appcompat.widget.AppCompatButton
<include
android:id="@+id/register_opr_create_account"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginBottom="@dimen/dashPadding"
android:text="@string/register_opr_create_new_account"
android:textColor="@color/color_white"
android:layout_marginTop="@dimen/content_padding_small"
android:background="@color/icon_color_active_light"
layout="@layout/bottom_sheet_dialog_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="@dimen/dialog_button_height"
android:layout_marginBottom="@dimen/content_padding_small" />
<androidx.appcompat.widget.AppCompatButton
<include
android:id="@+id/register_opr_have_account"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginTop="@dimen/dashPadding"
android:layout_gravity="bottom"
android:text="@string/register_opr_have_account"
android:textColor="@color/icon_color_active_light"
android:background="@color/activity_background_color_light"
layout="@layout/bottom_sheet_dialog_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="@dimen/dialog_button_height" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/add_photos_icon"
android:layout_width="@dimen/favorites_icon_outline_size"
android:layout_height="@dimen/favorites_icon_outline_size"
android:layout_marginTop="@dimen/bottom_sheet_icon_margin"
android:layout_gravity="center"
osmand:srcCompat="@drawable/ic_action_photo_upload_colored" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/add_photos_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="@dimen/content_padding_small"
android:layout_marginBottom="@dimen/content_padding_small"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/dialog_header_text_size"
osmand:typeface="@string/font_roboto_medium"
android:text="@string/shared_string_add_photos" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/add_photos_descr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginBottom="@dimen/text_margin_small"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
android:lineSpacingMultiplier="@dimen/bottom_sheet_text_spacing_multiplier"
osmand:typeface="@string/font_roboto_regular"
android:text="@string/add_photos_descr" />
</LinearLayout>

View file

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/bottom_sheet_title_height"
android:paddingLeft="@dimen/content_padding"
android:paddingTop="@dimen/content_padding"
android:paddingRight="@dimen/wikilink_bottom_sheet_padding"
android:paddingBottom="@dimen/wikilink_bottom_sheet_padding">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_weight="1"
android:orientation="vertical">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:minHeight="@dimen/default_title_line_height"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
app:lineHeight="@dimen/default_title_line_height"
app:typeface="@string/font_roboto_medium"
tools:text="Some title" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:letterSpacing="@dimen/description_letter_spacing"
android:minHeight="@dimen/default_desc_line_height"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_desc_text_size"
app:lineHeight="@dimen/default_desc_line_height"
app:typeface="@string/font_roboto_regular"
tools:text="Some description" />
</LinearLayout>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/selected_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:minHeight="@dimen/default_title_line_height"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_list_text_size"
app:lineHeight="@dimen/default_title_line_height"
app:typeface="@string/font_roboto_regular"
tools:text="5/6" />
</LinearLayout>
<LinearLayout
android:id="@+id/select_all_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:gravity="center_vertical"
android:minHeight="@dimen/bottom_sheet_list_item_height"
android:paddingLeft="@dimen/content_padding"
android:paddingTop="@dimen/content_padding_small"
android:paddingRight="@dimen/content_padding"
android:paddingBottom="@dimen/content_padding_small">
<net.osmand.plus.widgets.TextViewEx
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_weight="1"
android:ellipsize="end"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:minHeight="@dimen/default_title_line_height"
android:text="@string/shared_string_select_all"
android:textColor="?attr/active_color_basic"
android:textSize="@dimen/default_list_text_size"
app:lineHeight="@dimen/default_title_line_height"
app:typeface="@string/font_roboto_medium" />
<net.osmand.view.ThreeStateCheckbox
android:id="@+id/check_box"
style="@style/Widget.AppCompat.Toolbar.Button.Navigation"
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:layout_gravity="center"
android:clickable="false"
android:enabled="false"
android:focusable="false" />
</LinearLayout>
</LinearLayout>

View file

@ -471,7 +471,7 @@
<string name="index_name_africa">إفريقيا</string>
<string name="index_name_asia">آسيا</string>
<string name="index_name_oceania">أستراليا و أوقيانوسيا</string>
<string name="routing_settings">الملاحة</string>
<string name="routing_settings">التوجيه مع الطرق</string>
<string name="routing_settings_descr">ضبط خاص لكل وضع من أوضاع الملاحة.</string>
<string name="index_settings">إدارة بيانات الخرائط</string>
<string name="general_settings">إعدادات عامة</string>
@ -1153,7 +1153,7 @@
<string name="action_delete">حذف إجراء</string>
<string name="osm_edits">التعديلات</string>
<string name="parking_place_limited">وقت وقوف السيارات يقتصر على</string>
<string name="shared_string_collapse">أقل</string>
<string name="shared_string_collapse">تدلي</string>
<string name="drawer">قائمة منبسطة</string>
<string name="osm_settings">تعديل OSM</string>
<string name="free">فارغ %1$s</string>
@ -3329,7 +3329,7 @@
<string name="routing_attr_piste_type_skitour_name">جولة تزلج</string>
<string name="routing_attr_piste_type_skitour_description">طرق لجولات التزلج.</string>
<string name="routing_attr_piste_type_sled_name">تزلج</string>
<string name="routing_attr_piste_type_sled_description">منحدرات للاستخدام الزلاجات.</string>
<string name="routing_attr_piste_type_sled_description">منحدرات لاستخدام الزلاجات.</string>
<string name="routing_attr_allow_intermediate_name">السماح بالمسارات المتوسطة</string>
<string name="routing_attr_allow_intermediate_description">طرق أكثر صعوبة مع أقسام أكثر حدة. بعض العقبات التي ينبغي تجنبها.</string>
<string name="routing_attr_allow_advanced_name">السماح للطرق المتقدمة</string>
@ -3909,10 +3909,10 @@
<string name="complex_routing_descr">التوجيه على مرحلتين لملاحة السيارة.</string>
<string name="use_native_pt">تطوير النقل العام المحلي</string>
<string name="use_native_pt_desc">قم بالتبديل إلى Java (الآمن) حساب توجيه النقل العام</string>
<string name="perform_oauth_authorization_description">قم بتسجيل الدخول إلى OAuth لاستخدام ميزات osmedit</string>
<string name="perform_oauth_authorization_description">سجّل الدخول باستخدام OAuth لاستخدام ميزات osmedit</string>
<string name="perform_oauth_authorization">تسجيل الدخول عبر OAuth</string>
<string name="clear_osm_token">مسح رمز OpenStreetMap OAuth</string>
<string name="osm_edit_logout_success">تسجيل الخروج بنجاح</string>
<string name="osm_edit_logout_success">تم تسجيل الخروج</string>
<string name="file_already_imported">تم استيراد الملف بالفعل في أوسماند</string>
<string name="use_two_phase_routing">استخدام خوارزمية توجيه من مرحلتين A*</string>
<string name="message_need_calculate_route_before_show_graph">%1$s البيانات المتوفرة فقط على الطرق ، تحتاج إلى حساب طريق باستخدام \"الطريق بين النقاط\" للحصول عليها.</string>
@ -3940,32 +3940,44 @@
<string name="subscription_expired_title">انتهت صلاحية اشتراك OsmAnd Live</string>
<string name="subscription_paused_title">تم إيقاف اشتراك OsmAnd Live مؤقتًا</string>
<string name="subscription_on_hold_title">اشتراك OsmAnd Live معلق</string>
<string name="login_open_street_map">تسجيل الدخول إلى خريطة الشارع المفتوح</string>
<string name="login_open_street_map">تسجيل الدخول ل OpenStreetMap</string>
<string name="login_open_street_map_org">تسجيل الدخول إلى OpenStreetMap.org</string>
<string name="open_street_map_login_mode">تحتاج إلى تسجيل الدخول لرفع التغييرات الجديدة أو المعدلة.
<string name="open_street_map_login_mode">قم بتسجيل الدخول لرفع التغييرات الجديدة أو المعدلة.
\n
\nيمكنك تسجيل الدخول باستخدام طريقة التفويض الآمنة أو استخدام تسجيل الدخول وكلمة المرور.</string>
<string name="use_login_password">استخدام تسجيل الدخول وكلمة المرور</string>
\nإما باستخدام OAuth أو باستخدام اسم المستخدم وكلمة المرور.</string>
<string name="use_login_password">سجل الدخول باسم المستخدم وكلمة المرور</string>
<string name="login_account">الحساب</string>
<string name="user_login">تسجيل الدخول</string>
<string name="user_login">اسم المستخدم</string>
<string name="gpx_upload_trackable_visibility_descr">\"إمكانية التتبع\" تعني أن التتبع لا يظهر في أي قوائم عامة ولكن نقاط التتبع المعالجة مع طوابع زمنية صادرة عنها(التي لا يمكن أن تكون مرتبطة بك مباشرة) ستظهر خلال التنزيلات من واجهة برمجة التطبيقات GPS API العامة.</string>
<string name="markers_history">سجل تاريخ العلامات</string>
<string name="send_files_to_openstreetmap">أرسل ملف GPX إلى OpenStreetMap</string>
<string name="enter_text_separated">أدخل العلامات مفصولة بفاصلة.</string>
<string name="gpx_upload_private_visibility_descr">\"خاص\"يعني أن التتبع لن يظهر في أي قوائم عامة ، ولكن نقاط التتبع الصادرة عنه ستظل متاحة من خلال واجهة برمجة تطبيقات GPS API العامة بدون طوابع زمنية ولكن لن يتم ترتيبها ترتيبًا زمنيًا.</string>
<string name="sign_in_with_open_street_map">قم بتسجيل الدخول باستخدام OpenStreetMap</string>
<string name="sign_in_with_open_street_map">سجّل الدخول باستخدام OpenStreetMap</string>
<string name="gpx_upload_public_visibility_descr">عام يعني أنه سيتم عرض التتبع بشكل عام في تتبعات GPS الخاصة بك وفي قوائم تتبع GPS العامة. البيانات المقدمة عبر API لا تشير إلى صفحة التتبع الخاصة بك. الطوابع الزمنية لنقاط التتبع غير متاحة من خلال واجهة برمجة تطبيقات GPS API العامة، والنقاط غير مرتبة ترتيبًا زمنيًا. ومع ذلك، لا يزال المستخدمون الآخرون قادرين على تنزيل التتبع الأولي من قائمة التتبع العامة وأي طوابع زمنية مضمنة فيه.</string>
<string name="gpx_upload_identifiable_visibility_descr">متعرف عليه يعني أنه سيتم عرض التتبع بشكل عام في تتبعات GPS الخاصة بك وفي قوائم تتبع GPS العامة، أي سيتمكن المستخدمون الآخرون من تنزيل التتبع الأولي وربطه باسم المستخدم الخاص بك. ستشير البيانات التي يتم تقديمها عبر API نقاط التتبع إلى صفحة التتبع الأصلية الخاصة بك. الطوابع الزمنية لنقاط التتبع متاحة من خلال واجهة برمجة تطبيقات GPS API العامة.</string>
<string name="osm_edit_close_note">أغلاق ملاحظة OSM</string>
<string name="osm_edit_comment_note">تعليق ملاحظة OSM</string>
<string name="osm_login_descr">يمكنك تسجيل الدخول باستخدام طريقة OAuth الآمنة أو استخدام تسجيل الدخول وكلمة المرور الخاصة بك.</string>
<string name="osm_login_descr">قم بتسجيل الدخول باستخدام طريقة OAuth الآمنة أو استخدم اسم المستخدم وكلمة المرور.</string>
<string name="shared_string_add_photo">إضافة صورة</string>
<string name="register_on_openplacereviews">سجل في
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">يتم توفير الصور من خلال مشروع البيانات المفتوحة OpenPlaceReviews.org. من أجل رفع الصور الخاصة بك، تحتاج إلى الاشتراك بالموقع.</string>
<string name="register_on_openplacereviews_desc">قم بتسجيل الدخول إلى موقع مشروع البيانات المفتوحة OpenPlaceReviews.org لرفع المزيد من الصور.</string>
<string name="register_opr_create_new_account">إنشاء حساب جديد</string>
<string name="register_opr_have_account">لدي حساب بالفعل</string>
<string name="app_mode_kayak">كاياك (قوارب صغيرة فردية)</string>
<string name="app_mode_motorboat">زورق</string>
<string name="shared_string_search_history">سجل البحث</string>
<string name="export_not_enough_space_descr">جهازك يحتوي على %1$s فقط متاحة . الرجاء إخلاء بعض المساحة أو إلغاء تحديد بعض العناصر للتصدير.</string>
<string name="shared_string_resources">المصادر</string>
<string name="approximate_file_size">حجم الملف التقريبي</string>
<string name="select_data_to_export">حدد البيانات التي سيتم تصديرها إلى الملف.</string>
<string name="file_size_needed_for_import">مطلوب للاستيراد</string>
<string name="export_not_enough_space">لا يوجد مساحة كافية</string>
<string name="add_to_mapillary">أضف إلى مابيلاي</string>
<string name="add_to_opr">إضافة إلى OpenPlaceReviews</string>
<string name="add_photos_descr">ويعرض صورًا من عدة مصادر:
\nOpenPlaceReviews - صور POI ؛
\nMapillary - صور على مستوى الشارع ؛
\nالويب / ويكيميديا - صور POI المحددة في بيانات OpenStreetMap.</string>
</resources>

View file

@ -89,7 +89,7 @@
<string name="map_online_data_descr">Utilitza mapes en línia (les tessel·les es baixen i es desen a la tarja de memòria).</string>
<string name="shared_string_online_maps">Mapes en línia</string>
<string name="online_map_settings_descr">Seleccioneu les fonts de mapes de tessel·les en línia o a la memòria cau.</string>
<string name="osmand_accessibility_description">"Fa disponible directament des OsmAnd les característiques d\'accessibilitat del dispositiu. Us permet, per exemple, ajustar la velocitat de la veu sintetitzada, configurar la navegació amb cursors, utilitzant un ratolí de bola per controlar el zoom o rebre notificacions amb veu sintetitzada, per exemple per anunciar automàticament la vostra posició."</string>
<string name="osmand_accessibility_description">Fa disponible directament des OsmAnd les característiques d\'accessibilitat del dispositiu. Us permet, per exemple, ajustar la velocitat de la veu sintetitzada, configurar la navegació amb cursors, utilitzant un ratolí de bola per controlar el zoom o rebre notificacions amb veu sintetitzada, per exemple per anunciar automàticament la vostra posició.</string>
<string name="plugins_screen">Gestor de connectors</string>
<string name="poi_search_desc">Cerca de PDI (punt d\'interès)</string>
<string name="prefs_plugins">Gestor de connectors</string>
@ -351,55 +351,38 @@
<string name="application_dir">Carpeta d\'emmagatzematge de dades</string>
<string name="osmand_long_description_1000_chars">OsmAnd (OSM Automated Navigation Directions)
\n
\n
\nOsmAnd és una aplicació de navegació feta amb programari de codi obert amb accés a una gran varietat de dades globals d\'OSM. Totes les dades dels mapes (siguin mapes vectorials o de tessel·les), es poden desar a la targeta de memòria del telèfon pel seu en desconnexió. També calcula rutes, amb connexió o sense, incloent l\'orientació per veu.
\n
\n
\nAlgunes de les característiques principals:
\n
\n- Funcionament complet en desconnexió (desa localment els mapes vectorials i de tessel·les baixats)
\n
\n- Mapes vectorials compactes de tot el món per usar en desconnexió
\n
\n- Baixada de mapes nacionals o regionals directament des de l\'aplicació
\n
\n- Diverses capes de mapes alhora, com traces GPX o de navegació, punts d\'interès, Preferits, parades de transport públic, etc. amb nivell d\'opacitat personalitzada
\n
\n- Cerca, fora de línia, d\'adreces i llocs
\n
\nAlgunes de les característiques principals:
\n- Funcionament complet en desconnexió (desa localment els mapes vectorials i de tessel·les baixats)
\n- Mapes vectorials compactes de tot el món per usar en desconnexió
\n- Baixada de mapes nacionals o regionals directament des de l\'aplicació
\n- Diverses capes de mapes alhora, com traces GPX o de navegació, punts d\'interès, Preferits, parades de transport públic, etc. amb nivell d\'opacitat personalitzada
\n- Cerca, fora de línia, d\'adreces i llocs
\n- Càlcul de rutes fora de línia fins per distàncies d\'abast mitjà.
\n- Modalitats opcionals de cotxe, bicicleta i vianant
\n- Canvi automàtic de vista diürna a nocturna
\n- Escala del mapa en funció de la velocitat
\n- Orientació del mapa segons la brúixola o la direcció del moviment
\n- Indicació de carril, velocitat màxima permesa, veus enregistrades i/o sintetitzades
\n
\n- Modalitats opcionals de cotxe, bicicleta i vianant
\nLimitacions d\'aquesta versió gratuïta de OsmAnd:
\n- Limitació en el nombre de mapes baixats
\n- No hi ha accés als PDIs de la Viquipèdia sense connexió
\n
\n- Canvi automàtic de vista diürna a nocturna
\n
\n- Escala del mapa en funció de la velocitat
\n
\n- Orientació del mapa segons la brúixola o la direcció del moviment
\n
\n- Indicació de carril, velocitat màxima permesa, veus enregistrades i/o sintetitzades
\n
\n
\nLimitacions d\'aquesta versió gratuïta de OsmAnd:
\n
\n- Limitació en el nombre de mapes baixats
\n
\n- No hi ha accés als PDIs de la Viquipèdia sense connexió
\n
\n
\nOsmAnd es desenvolupa activament i el nostre projecte i el seu progrés continu depenen de donacions pel desenvolupament i proves de noves funcions. Si us plau, considereu la compra d\'OsmAnd+ o patrocinar una nova característica concreta, o fer una donació genèrica a la pàgina https\\\\osmand.net.</string>
<string name="osmand_plus_long_description_1000_chars">"OsmAnd+ (OSM Automated Navigation Directions)
<string name="osmand_plus_long_description_1000_chars">OsmAnd+ (OSM Automated Navigation Directions)
\n
\nL\'OsmAnd+ és un programari de navegació de codi obert amb accés a una gran varietat de dades globals de OSM. Totes les dades de mapes (mapes de tessel·les o vectorials) poden emmagatzemar-se a la targeta de memòria del telèfon pel seu ús sense connexió. També proporciona la funcionalitat de càlcul de rutes sigui amb connexió o sense, incloent orientació per veu.
\n
\nL\'OsmAnd+ és la versió de pagament; comprant-la esteu donant suport al projecte, financeu el desenvolupament de noves funcions i rebreu les darreres actualitzacions.
\n
\nAlgunes de les característiques centrals són:
\n- Funcionalitat completa fora de línia (desa en el dispositiu d\'emmagatzemament els mapes vectorials i de mosaic baixats)
\n- Funcionalitat completa fora de línia (desa en el dispositiu d\'emmagatzemament els mapes vectorials i de mosaic baixats)
\n- Mapes vectorials compactes de tot el món disponibles
\n- Baixada il·limitada de mapes nacionals o regionals directament des de l\'aplicació
\n- Disponibilitat sense connexió dels PDI baixats prèviament de Viquipèdia, ideal per fer turisme
\n- Possibilitat de superposar diverses capes de mapes simultànies, com traces GPX o de navegació, Punts d\'interès, Favorits, corbes de nivell, parades de transport públic, mapes addicionals amb nivell de transparència ajustable
\n- Possibilitat de superposar diverses capes de mapes simultànies, com traces GPX o de navegació, Punts d\'interès, Favorits, corbes de nivell, parades de transport públic, mapes addicionals amb nivell de transparència ajustable
\n
\n- Cerca fora de línia d\'adreces i llocs (PDIs)
\n- Càlcul de rutes fora de línia per distàncies d\'abast mitjà
@ -408,7 +391,7 @@
\n- Escala automàtica del mapa segons la velocitat
\n- Orientació del mapa segons la brúixola o la direcció del moviment
\n- Indicacions de carril, velocitat màxima permesa, veus enregistrades i sintetitzades
\n"</string>
\n</string>
<string name="rendering_attr_contourLines_description">Seleccioneu el nivell mínim de zoom per mostrar el mapa si està disponible. Caldrà el fitxer SRTM separat:</string>
<string name="osmand_development_plugin_description">Aquest connector mostra la configuració de característiques per al desenvolupament i depuració com la verificació o simulació de rutes, el rendiment del renderitzat o les indicacions de veu. Aquestes configuracions s\'adrecen a desenvolupadors i no són d\'utilitat per a un usuari normal.</string>
<string name="accessibility_default">En consonància amb la configuració del sistema Android</string>
@ -578,7 +561,7 @@
<string name="map_overlay">Mapa superposat</string>
<string name="choose_auto_follow_route_descr">Temps de sincronització del mapa seguint la nova posició.</string>
<string name="map_underlay">Mapa de fons</string>
<string name="map_underlay_descr">Escolliu mapa de fons.</string>
<string name="map_underlay_descr">Escolliu mapa de fons</string>
<string name="map_overlay_descr">Escolliu el mapa superposat</string>
<string name="preferred_locale_descr">Llengua de visualització de l\'aplicació (s\'actualitzarà quan reinicieu OsmAnd).</string>
<string name="foot">ft</string>
@ -605,7 +588,7 @@
<string name="map_orientation_default">El mateix que el dispositiu</string>
<string name="add_new_rule">Afegir nova regla</string>
<string name="update_poi_no_offline_poi_index">No hi ha dades PDI fora de linía per a aquesta area</string>
<string name="update_poi_error_local">"No s\'ha pogut actualitzar la llista local de PDIs"</string>
<string name="update_poi_error_local">No s\'ha pogut actualitzar la llista local de PDIs.</string>
<string name="max_level_download_tile">Max. zooms en linía</string>
<string name="router_service">Servei de navegació</string>
<string name="downloading_list_indexes">Baixant llista de les regions disponibles…</string>
@ -641,7 +624,7 @@
<string name="poi_edit_title">Edita el PDI</string>
<string name="poi_remove_title">Elimina el PDI</string>
<string name="poi_create_title">Crea un PDI</string>
<string name="first_time_msg">"Gràcies per utilitzar l\'OsmAnd. Baixeu informació regional fora de línia a través de \'Configuració\' → \'Gestió de fitxers de mapes\' per veure mapes, situar adreces, buscar els PDIs, trobar transports públics i més."</string>
<string name="first_time_msg">Gràcies per utilitzar l\'OsmAnd. Baixeu informació regional fora de línia a través de \'Configuració\' → \'Gestió de fitxers de mapes\' per veure mapes, situar adreces, buscar els PDIs, trobar transports públics i més.</string>
<string name="basemap_was_selected_to_download">El mapa mundial de fons necessari per les funcionalitats bàsiques està a la cua de baixades.</string>
<string name="osmand_background_plugin_description">Mostra paràmetres per activar el seguiment i la navegació en procés de fons mitjançant l\'activació periòdica del dispositiu GPS (amb la pantalla apagada).</string>
<string name="accessibility_preferences_descr">Preferències relatives a l\'accessibilitat.</string>
@ -690,7 +673,7 @@
<string name="voice_is_not_available_title">Seleccioneu un paquet de guiatge de veu</string>
<string name="daynight_descr">Ajusteu el criteri de commutació entre el mode nocturn i el diürn.</string>
<string name="maps_could_not_be_downloaded">Aquest mapa podria no haver-se baixat</string>
<string name="rendering_exception">No s\'ha pogut dibuixar l\'àrea triada</string>
<string name="rendering_exception">No s\'ha pogut dibuixar l\'àrea triada.</string>
<string name="show_point_options">Utilitza la ubicació…</string>
<string name="renderer_load_sucess">El renderitzador s\'ha carregat</string>
<string name="fav_points_not_exist">No hi ha punts Preferits</string>
@ -701,8 +684,8 @@
<string name="poi_filter_public_transport">Transport públic</string>
<string name="poi_filter_emergency">Emergències</string>
<string name="poi_filter_restaurants">Restaurants</string>
<string name="osm_editing_plugin_description">"Permet fer contribucions a OSM com la creació o modificació de PDIs d\'OSM, obrir o comentar anotacions OSM i aportar fitxers enregistrats GPX amb OsmAnd en subministrar el vostre usuari i contrasenya. OpenStreetMap.org és un projecte gestionat per una comunitat, de domini públic i de cartografia global."</string>
<string name="tts_language_not_supported">"La llengua seleccionada no està suportada per el motor de TTS (text a veu) d\'Android instal·lat, s\'usarà la llengua del TTS per defecte. Voleu buscar un altre motor TTS a la botiga\?"</string>
<string name="osm_editing_plugin_description">Permet fer contribucions a OSM com la creació o modificació de PDIs d\'OSM, obrir o comentar anotacions OSM i aportar fitxers enregistrats GPX amb OsmAnd en subministrar el vostre usuari i contrasenya. OpenStreetMap.org és un projecte gestionat per una comunitat, de domini públic i de cartografia global.</string>
<string name="tts_language_not_supported">La llengua seleccionada no està suportada per el motor de TTS (text a veu) d\'Android instal·lat, s\'usarà la llengua del TTS per defecte. Voleu buscar un altre motor TTS a la botiga\?</string>
<string name="send_location_way_choose_title">Comparteix l\'ubicació usant</string>
<string name="old_map_index_is_not_supported">Format de mapa «{0}» obsolet, no s\'admet</string>
<string name="select_max_zoom_preload_area">Màxim zoom en precàrrega</string>
@ -711,7 +694,7 @@
<string name="transport_searching_route">Resultats de transport ({0} al destí):</string>
<string name="voice_data_unavailable">La llibreria seleccionada de missatges de veu no està disponible</string>
<string name="search_poi_location">Esperant el senyal…</string>
<string name="opening_hours_not_supported">No es pot canviar el format d\'horaris d\'obertura</string>
<string name="opening_hours_not_supported">No es pot canviar el format d\'horaris d\'obertura.</string>
<string name="transport_to_go_after">prioritza distancia</string>
<string name="hello">Aplicació de navegació OsmAnd</string>
<string name="osmand_rastermaps_plugin_description">Accediu a diferents tipus de mapa (anomenats de tessel·les o de bits), des de les tessel·les predefinides d\'OSM (com Mapnik) a imatges de satèl·lit i capes específiques com mapes meteorològics, climàtics, geològics, de relleu, etc.
@ -793,7 +776,7 @@
<string name="mark_point">Objectiu</string>
<string name="edit_filter_delete_message">El filtre \'%1$s\' s\'ha eliminat</string>
<string name="update_poi_success">Les dades dels PDI s\'han actualitzat (se n\'han carregat {0})</string>
<string name="update_poi_error_loading">No s\'han pogut carregar dades del servidor</string>
<string name="update_poi_error_loading">No s\'han pogut carregar dades del servidor.</string>
<string name="update_poi_is_not_available_for_zoom">Acostar el zoom us permet actualitzar els PDIs</string>
<string name="context_menu_item_update_map_confirm">Voleu actualitzar les dades locals des d\'Internet?</string>
<string name="search_history_building">Edificis: {0}, {1}, {2}</string>
@ -814,7 +797,7 @@
<string name="edit_filter_delete_dialog_title">Voleu eliminar aquest filtre\?</string>
<string name="no_route">Sense ruta</string>
<string name="voice_stream_voice_call">Àudio de trucada telefònica (interrupció de la música Bluetooth del cotxe)</string>
<string name="enable_plugin_monitoring_services">"Habiliteu el connector \"Enregistrament de ruta\" per utilitzar els serveis de registre d\'ubicació (enregistrament GPX, seguiment en directe)"</string>
<string name="enable_plugin_monitoring_services">Habiliteu el connector \"Enregistrament de ruta\" per utilitzar els serveis de registre d\'ubicació (enregistrament GPX, seguiment en directe)</string>
<string name="gps_not_available">Habiliteu el GPS a les preferències</string>
<string name="zxing_barcode_scanner_not_found">L\'aplicació ZXing Barcode Scanner no està instal·lada. La voleu cercar a Google Play?</string>
<string name="rendering_attr_roadColors_name">Esquema de color de carreteres</string>
@ -875,7 +858,7 @@
<string name="index_srtm_parts">peces</string>
<string name="index_srtm_ele">Línies de nivell</string>
<string name="srtm_plugin_name">Corbes de nivell</string>
<string name="download_roads_only_item">"Carreteres "</string>
<string name="download_roads_only_item">Carreteres</string>
<string name="download_regular_maps">Mapes estàndards</string>
<string name="rendering_attr_noAdminboundaries_description">No mostris els límits administratius regionals (nivells 5 a 9).</string>
<string name="map_widget_max_speed">Límit de velocitat</string>
@ -918,7 +901,7 @@
<string name="background_service_wait_int">Espera màxima per corregir</string>
<string name="local_indexes_cat_av">Dades d\'àudio/vídeo</string>
<string name="stop_routing_confirm">Esteu segur què voleu aturar la navegació?</string>
<string name="clear_dest_confirm">"N\'esteu segur que voleu eliminar la vostra destinació (i les vostres fites)?"</string>
<string name="clear_dest_confirm">N\'esteu segur que voleu eliminar la vostra destinació (i les vostres fites)\?</string>
<string name="recording_context_menu_show">Mostra</string>
<string name="recording_photo_description">Fotografia %1$s %2$s</string>
<string name="av_def_action_picture">Fes una fotografia</string>
@ -1091,9 +1074,9 @@
<string name="map_widget_fps_info">Info depuració FPS</string>
<string name="intermediate_items_sort_return">Ordre optimitzat de les fites de la ruta fins a la destinació.</string>
<string name="osmand_distance_planning_plugin_description">Creació d\'itineraris prement el mapa o utilitzant o modificant fitxers GPX existents, per planificar un trajecte i mesurar la distància entre punts. El resultat es pot desar com un fitxer GPX que podreu usar més endavant com una referència.</string>
<string name="android_19_location_disabled">"Des de la versió 4.4 d\'Android (KitKat) no podeu baixar i actualitzar els mapes en l\'antiga carpeta (%s). Voleu copiar tots els fitxers de l\'OsmAnd a la nova destinació?
\n Nota 1: Els vostres fitxers obsolets quedaran intactes (els podeu esborrar manualment).
\n Nota 2: En el nou lloc d\'emmagatzemament no serà possible compartir fitxers entre l\'OsmAnd i l\'OsmAnd+."</string>
<string name="android_19_location_disabled">Des de la versió 4.4 d\'Android (KitKat) no podeu baixar i actualitzar els mapes en l\'antiga carpeta (%s). Voleu copiar tots els fitxers de l\'OsmAnd a la nova destinació\?
\n Nota 1: Els vostres fitxers obsolets quedaran intactes (els podeu esborrar manualment).
\n Nota 2: En el nou lloc d\'emmagatzemament no serà possible compartir fitxers entre l\'OsmAnd i l\'OsmAnd+.</string>
<string name="copying_osmand_one_file_descr">S\'està copiant el fitxer (%s) a la nova destinació…</string>
<string name="copying_osmand_files_descr">S\'estan copiant els fitxers de dades de l\'OsmAnd a la nova destinació (%s)…</string>
<string name="copying_osmand_files">S\'estan copiant fitxers de dades de l\'OsmAnd…</string>
@ -1304,7 +1287,7 @@
<string name="arrival_distance_factor_at_last">Als darrers metres</string>
<string name="rendering_attr_coloredBuildings_name">Edificis amb colors codificats per tipus</string>
<string name="av_camera_pic_size">Mida d\'imatge de la càmera</string>
<string name="av_camera_pic_size_descr">Estableix la mida de la imatge de la càmera.</string>
<string name="av_camera_pic_size_descr">Estableix la mida de la imatge de la càmera</string>
<string name="rendering_value_browse_map_name">Mapa esquemàtic</string>
<string name="rendering_value_car_name">Cotxe</string>
<string name="rendering_value_bicycle_name">Bicicleta</string>
@ -1319,7 +1302,6 @@
<string name="shared_string_all">Tot</string>
<string name="record_plugin_description">Aquest connector activa la funcionalitat d\'enregistrar i desar els vostres trajectes, sigui prement sobre el mapa el giny de gravació GPX, o sigui desant-los tots en un fitxer GPX automàticament.
\n
\n
\nLes rutes enregistrades es poden compartir amb els vostres amics o aportar-les per ser utilitzades a OSM. Els atletes poden utilitzar els seus registres per monitoritzar els seus entrenaments. Es pot fer una anàlisi bàsica de les rutes directament a OsmAnd com la durada de cada volta, velocitat mitjana, etc., i, per descomptat, es poden analitzar amb eines especialitzades de tercers.</string>
<string name="record_plugin_name">Enregistrament de trajectes</string>
<string name="int_hour">h</string>
@ -1373,7 +1355,7 @@
<string name="rendering_category_hide">Amaga</string>
<string name="wake_on_voice">Activa la pantalla</string>
<string name="wake_on_voice_descr">Activa la pantalla del dispositiu (si no ho està) en aproximar-se a un gir.</string>
<string name="lock_screen_request_explanation">"%1$s necessita aquest permís per la funcionalitat de posar la pantalla en mode d\'estalvi d\'energia."</string>
<string name="lock_screen_request_explanation">%1$s necessita aquest permís per la funcionalitat de posar la pantalla en mode d\'estalvi d\'energia.</string>
<string name="shared_string_never">Mai</string>
<string name="home_button">Inici</string>
<string name="search_for">Cerca per</string>
@ -1521,10 +1503,10 @@
<string name="shared_string_do_not_use">No utilitzeu</string>
<string name="shared_string_address">Adreça</string>
<string name="plugin_nautical_descr">Aquest connector completa el mapa OsmAnd i la seva navegació en produir mapes nàutics per cabotatge, regates i altres tipus de esports d\'aigua.
Un complement de mapa específic per OsmAnd us proporcionarà tot tipus de senyals nàutiques i símbols gràfics, per navegació interior o propera a la costa. La descripció de cada senyal de navegació us donarà els detalls que calguin per identificar-les i del seu significat (categoria, forma, color, seqüència, referència, etc.).
Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aquest connector o canviar a com es desitgi &lt;&lt;Estil del Mapa&gt;&gt; dins &lt;&lt;Configuració del Mapa&gt;&gt;. </string>
\n
\nUn complement de mapa específic per OsmAnd us proporcionarà tot tipus de senyals nàutiques i símbols gràfics, per navegació interior o propera a la costa. La descripció de cada senyal de navegació us donarà els detalls que calguin per identificar-les i del seu significat (categoria, forma, color, seqüència, referència, etc.).
\n
\nPer retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aquest connector o canviar a com es desitgi &lt;&lt;Estil del Mapa&gt;&gt; dins &lt;&lt;Configuració del Mapa&gt;&gt;.</string>
<string name="plugin_ski_descr">Aquest connector per l\'OsmAnd us proporciona els detalls de les pistes d\'esquí en baixada, de travessa i alpí així com de telefèrics i remuntadors a tot el món. Les rutes i pistes es mostren amb el codi de colors que els correspon segons la seva dificultat i amb un estil de mapa especial «Hivern» que s\'associa a un paisatge nevat.
\n
\nEn activar aquests canvis de visualització l\'estil del mapa canvia a «Hivern i esquí», i es mostren totes les característiques del paisatge a l\'hivern. Aquesta vista es pot revertir tant en activar-la altra cop com en canviar-la a «Estil del mapa» dins «Configuració del mapa».</string>
@ -1712,7 +1694,7 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu
<string name="favorite_category_dublicate_message">Utilitzeu un nom de categoria que encara no existeixi.</string>
<string name="favorite_category_name">Nom de categoria</string>
<string name="favorite_category_add_new_title">Afegeix una nova categoria</string>
<string name="confirm_download_roadmaps">"El mapa restringit a carreteres no cal, donat que ja teniu el mapa estàndard (complet). Que baixi igualment?"</string>
<string name="confirm_download_roadmaps">El mapa restringit a carreteres no cal, donat que ja teniu el mapa estàndard (complet). Que baixi igualment\?</string>
<string name="value_downloaded_of_max">%1$.1f de %2$.1f MB</string>
<string name="file_size_in_mb">%.1f MB</string>
<string name="update_all">Actualitzeu tot (%1$s MB)</string>
@ -1729,7 +1711,7 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu
<string name="map_downloaded_descr">El mapa de %1$s està a punt per ser utilitzat.</string>
<string name="go_to_map">Mostra el mapa</string>
<string name="world_map_download_descr">El mapa base mundial (d\'abast mundial i poc detall) no es troba o està caducat. Considereu baixar-lo per una tenir una perspectiva global.</string>
<string name="show_on_start_description">Si es desactiva s\'engega amb la pantalla del mapa.</string>
<string name="show_on_start_description">«Desactivat» inicia el mapa directament.</string>
<string name="enter_country_name">Indiqueu el nom del país</string>
<string name="shared_string_upload">Pujada</string>
<string name="osm_edit_created_poi">S\'ha creat un PDI a OSM</string>
@ -1929,11 +1911,10 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu
<string name="active_markers">Marcadors actius</string>
<string name="map_markers">Marcadors de mapa</string>
<string name="map_marker">Marcador de mapa</string>
<string name="file_name_containes_illegal_char">El nom de fitxer inclou un caràcter il·legal</string>
<string name="file_name_containes_illegal_char">Caràcter il·legal en el nom del fitxer</string>
<string name="no_map_markers_found">Afegiu els marcadors de mapa amb el mapa</string>
<string name="osm_live_header">Aquesta subscripció permet actualitzacions horàries de tots els mapes del món.
\nPart dels ingressos es retornen a la comunitat OSM en retribuir cada contribució OSM.
\n
\nSi aprecieu OsmAnd i OSM i els voleu recolzar mentre l\'utilitzeu, aquesta és la via perfecta per fer-ho.</string>
<string name="upload_osm_note_description">Pugeu la vostra nota OSM anònimament o utilitzant el vostre perfil OpenStreetMap.org.</string>
<string name="add_time_span">Afegeix un lapse de temps</string>
@ -2020,7 +2001,7 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu
<string name="no_inet_connection_desc_map">És necessari per baixar mapes.</string>
<string name="search_location">Cercant la localització…</string>
<string name="storage_free_space">Espai lliure</string>
<string name="storage_place_description">"Magatzem de dades d\'OsmAnd (per mapes, fitxers GPX, etc.): %1$s."</string>
<string name="storage_place_description">Magatzem de dades d\'OsmAnd (per mapes, traces, etc.): %1$s.</string>
<string name="give_permission">Autoritza</string>
<string name="allow_access_location">Permet accedir a la localització</string>
<string name="search_my_location">Troba la meva localització</string>
@ -2180,11 +2161,11 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu
<string name="quick_action_map_underlay_switch">S\'ha canviat el mapa de fons a \"%s\".</string>
<string name="navigate_point_olc">Codi de localització obert</string>
<string name="navigate_point_olc_info_invalid">OLC no vàlid
</string>
\n</string>
<string name="navigate_point_olc_info_short">OLC curt
Proporcioneu el codi complet</string>
<string name="navigate_point_olc_info_area">OLC complet vàlid
Abasta l\'àrea: %1$s x %2$s</string>
\nProporcioneu el codi complet</string>
<string name="navigate_point_olc_info_area">OLC complet vàlid
\nRepresenta l\'àrea: %1$s x %2$s</string>
<string name="quick_action_page_list_descr">Un botó per paginar la llista que segueix.</string>
<string name="auto_split_recording_title">Divisió automàtica de les gravacions un cop aturades</string>
<string name="auto_split_recording_descr">Comença un nou segment desprès de 6 min d\'interrupció, una traça nova si es superen les 2 hores o un nou fitxer si encara dura més i ha canviat la data.</string>
@ -2241,7 +2222,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
\n Gaudiu del guiatge visual i de veu, representant PDIs (punts d\'interès), creant i gestionat traces GPX, activant la representació de corbes de nivell i d\'informació d\'elevació (requereix connector), optant entre els modes de conducció amb vehicle, bicicleta o com vianant, editant d\'OSM i molt més.</string>
<string name="restore_purchases">Recupera les compres</string>
<string name="fonts_header">Tipus de lletra</string>
<string name="osmand_extended_description_part2">Navegació GPS
<string name="osmand_extended_description_part2">Navegació GPS
\n• Trieu el mode desconnectat (no hi hauran càrrecs de roaming si sou a l\'estranger) o el mode en línia (més àgil)
\n• El guiatge de veu gir-a-gir us dirigeix pel camí (veus enregistrades i sintètiques)
\n• La ruta es tornarà a calcular si us desvieu de la proposta anterior
@ -2251,7 +2232,8 @@ Abasta l\'àrea: %1$s x %2$s</string>
\n• L\'escala del mapa s\'ajusta a la vostra velocitat
\n• Cerca de destinacions per adreça, tipus (p. ex.: Aparcament, restaurant, hotel, gasolinera, museu), o per les coordenades geogràfiques
\n• Gestiona punts de pas en el vostre itinerari
\n• Enregistreu la vostra o baixeu una traça GPX i seguiu-la</string>
\n• Enregistreu la vostra o baixeu una traça GPX i seguiu-la
\n</string>
<string name="osmand_extended_description_part4">Esquí
\nEl connector de mapes d\'esquí d\'OsmAnd us permet veure les pistes segons la seva dificultat i d\'altres informacions addicionals, com ara la ubicació dels ascensors i altres equipaments.</string>
<string name="osmand_extended_description_part5">Ciclisme
@ -2265,11 +2247,13 @@ Abasta l\'àrea: %1$s x %2$s</string>
\n• La Viquipèdia, en el vostre idioma preferit, us pot ajudar molt visitant una ciutat
\n• Parades de transport públic (autobús, tramvia, tren), incloent-hi noms de línia, suport per la navegació en una ciutat nova
\n• La navegació GPS en mode vianant genera la vostra ruta per on pugueu passar
\n•Baixeu i seguiu una traça GPX o enregistreu i compartiu la vostra</string>
<string name="osmand_extended_description_part7">"Col·laboreu amb Openstreetmap (OSM)
\n• Baixeu i seguiu una traça GPX o enregistreu i compartiu la vostra
\n</string>
<string name="osmand_extended_description_part7">Col·laboreu amb Openstreetmap (OSM)
\n• Informant de dades errònies
\n• Pujant traces GPX a OSM directament des de l\'aplicació
\n• Afegint PDIs i penjar-los a OSM directament (o més tard si no esteu connectats)"</string>
\n• Afegint PDIs i penjar-los a OSM directament (o més tard si no esteu connectats)
\n</string>
<string name="analyze_on_map">Analitza en el mapa</string>
<string name="shared_string_visible">Visible</string>
<string name="osmand_extended_description_part8">OsmAnd es de codi obert i s\'està desenvolupant activament. Tothom pot contribuir a l\'aplicació informant d\'errors, millorant traduccions o aportant codi de noves característiques. A més, el projecte es recolza en contribucions econòmiques per finançar la programació i les proves de noves funcionalitats.
@ -2329,14 +2313,16 @@ Abasta l\'àrea: %1$s x %2$s</string>
\n• Compartiu la vostra ubicació perquè els vostres amics us puguin trobar
\n• Conserveu els vostres llocs més importants a \'Preferits\'
\n• Us permet escollir com es mostrar els noms al mapa: en anglès, la lengua local o amb ortografia fonètica
\n• Mostra representacions especialitzades disponibles a la xarxa, imatges de satèl·lit (Bing), diferents superposicions com traces GPX d\'exploració/navegació i capes addicionals amb un grau transparència variable</string>
\n• Mostra representacions especialitzades disponibles a la xarxa, imatges de satèl·lit (Bing), diferents superposicions com traces GPX d\'exploració/navegació i capes addicionals amb un grau transparència variable
\n</string>
<string name="osmand_plus_extended_description_part2">Navegació
\n• Funciona en línia (ràpid) o sense connexió (sense càrrecs de roaming quan sigueu a l\'estranger)
\n• Indicacions de veu a cada gir (amb missatges gravats i sintetitzats)
\n• Orientació opcional del carril, visualització del nom de la via i el temps estimat d\'arribada
\n• Admet punts de pas intermedis
\n• Revisió automàtica de la ruta quan us aparteu de la ruta proposada
\n• Cerca de llocs per adreça, tipus (per exemple: restaurant, hotel, gasolinera, museu) o coordenades geogràfiques</string>
\n• Cerca de llocs per adreça, tipus (per exemple: restaurant, hotel, gasolinera, museu) o coordenades geogràfiques
\n</string>
<string name="osmand_plus_extended_description_part1">OsmAnd + (OSM Automated Navigation Directions) és una aplicació per consulta de mapes i de navegació, amb accés a les dades obertes d\'OSM, d\'abast mundial i gran qualitat.
\nFruïu la navegació amb indicacions visuals i de veu, mostrant PDIs (punts d\'interès), creant i gestionant traces GPX, disposant de corbes de nivell i cotes puntuals, seleccioneu la navegació per vehicle, bicicleta o com a vianant, editeu OSM i molt més.
\n
@ -2367,24 +2353,25 @@ Abasta l\'àrea: %1$s x %2$s</string>
\n• Mapes vectorials compactes en local que s\'actualitzen un cop al mes, com a mínim
\n
\n• Opció entre dades completes d\'una regió o només la xarxa viària (Exemple: tot el Japó ocupa 700 MB però només 200 MB per a la xarxa viària)</string>
<string name="osmand_plus_extended_description_part5">"Característiques de seguretat
<string name="osmand_plus_extended_description_part5">Característiques de seguretat
\n• Canvi automàtic entre el mode diürn/nocturn (opcional)
\n• Indicacions del límit de velocitat i notificació d\'excés (opcional)
\n• Escala en funció de la velocitat (opcional)
\n• Si compartiu la vostra ubicació, els vostres amics us podran trobar"</string>
\n• Escala en funció de la velocitat (opcional)
\n• Si compartiu la vostra ubicació, els vostres amics us podran trobar
\n</string>
<string name="osmand_plus_extended_description_part6">Característiques per ciclistes i vianants
\n• Visualització de vies per vianants, senderisme i carrils bici, ideal per activitats a l\'aire lliure
\n• Representació i navegació a mida per ciclistes i vianants
\n• Indicació opcional de les parades del transport públic (autobús, tramvia, tren), incloent-hi noms de línia
\n• Enregistrament opcional del trajecte en un fitxer GPX local o a un servei a la xarxa
\n• Indicació opcional de la velocitat i l\'altitud • Visualització de corbes de nivell i ombrejat de relleu (requereix connector)</string>
<string name="osmand_plus_extended_description_part7">"Col·laboreu directament a OSM
<string name="osmand_plus_extended_description_part7">Col·laboreu directament a OSM
\n• Notifiqueu errors en les dades
\n• Pugeu traces GPX directament a OSM des de l\'aplicació
\n• Afegiu PDIs i pugeu-los OSM (o feu-ho més tard si no esteu connectats)
\n• Enregistrament opcional del trajecte, també en segon pla (mentre el dispositiu està bloquejat)
\n• Enregistrament opcional del trajecte, també en segon pla (mentre el dispositiu està bloquejat)
\nOsmAnd és un programari de codi obert que es desenvolupa activament. Tothom pot recolzar l\'aplicació informant d\'errors, millorant traduccions o programant noves característiques. El projecte també es fonamenta en les aportacions econòmiques per patrocinar la programació i validació de noves funcionalitats.
\n"</string>
\n</string>
<string name="shared_string_overview">Visió general</string>
<string name="animate_my_location">Anima la pròpia posició</string>
<string name="animate_my_location_desc">Activa el desplaçament animat del mapa de \'La meva posició\' durant la navegació.</string>
@ -2587,7 +2574,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="show_guide_line_descr">Mostra una línia de direcció entre la vostra ubicació i les dels marcadors actius.</string>
<string name="show_arrows_descr">Mostra una o dues fletxes indicant la direcció dels marcadors actius.</string>
<string name="distance_indication_descr">Seleccioneu com indicar la distància als marcadors actius.</string>
<string name="active_markers_descr">Indiqueu el nombre d\'indicadors de direcció:</string>
<string name="active_markers_descr">Indiqueu el nombre d\'indicadors de direcció.</string>
<string name="shared_string_more_without_dots">Més</string>
<string name="looking_for_tracks_with_waypoints">Cercant traces amb fites</string>
<string name="empty_state_osm_edits">Crea o modifica objectes OSM</string>
@ -2646,14 +2633,14 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="copy_location_name">Copia nom d\'ubicació/PDI</string>
<string name="toast_empty_name_error">Ubicació sense nom</string>
<string name="show_closed_notes">Mostra notes amagades</string>
<string name="switch_osm_notes_visibility_desc">Mostra/amaga notes OSM en el mapa.</string>
<string name="switch_osm_notes_visibility_desc">Mostra o amaga notes OSM en el mapa.</string>
<string name="gpx_file_desc">GPX - adient per exportar-lo a JOSM o a altres editors d\'OSM.</string>
<string name="osc_file_desc">OSC - adient per exportar-lo a OSM.</string>
<string name="shared_string_gpx_file">Arxiu GPX</string>
<string name="osc_file">Arxiu OSC</string>
<string name="choose_file_type">Seleccioneu el tipus de fitxer</string>
<string name="osm_edits_export_desc">Exportació com notes d\'OSM, PDIs o les dues coses.</string>
<string name="all_data">"Totes les dades"</string>
<string name="all_data">Totes les dades</string>
<string name="osm_notes">Notes OSM</string>
<string name="tunnel_warning">Túnel encarat</string>
<string name="show_tunnels">Túnels</string>
@ -2677,7 +2664,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="west_abbreviation">O</string>
<string name="south_abbreviation">S</string>
<string name="north_abbreviation">N</string>
<string name="optional_point_name">"Nom opcional del punt "</string>
<string name="optional_point_name">Nom opcional del punt</string>
<string name="transport_nearby_routes_within">Rutes properes a dins</string>
<string name="transport_nearby_routes">A dins</string>
<string name="enter_the_file_name">Introduïu el nom del fitxer.</string>
@ -2755,7 +2742,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="wikipedia_offline">Viquipèdia sense connexió</string>
<string name="contour_lines_hillshade_maps">Mapes amb corbes de nivell i ombrejat de relleu</string>
<string name="unlock_all_features">Desbloca totes les funcions de OsmAnd</string>
<string name="shared_string_wikivoyage">"Viquiviatges "</string>
<string name="shared_string_wikivoyage">Viquiviatges</string>
<string name="index_item_world_wikivoyage">Articles de Viquiviatges d\'arreu</string>
<string name="open_wikipedia_link_online">Obre l\'enllaç en línia de Viquipèdia</string>
<string name="open_wikipedia_link_online_description">L\'enllaç s\'obrirà en el vostre navegador.</string>
@ -2865,7 +2852,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="osm_live_subscriptions">Subscripcions</string>
<string name="mapillary_menu_title_pano">Només mostra imatges de 360º</string>
<string name="shared_string_launch">Arrenca</string>
<string name="run_full_osmand_msg">"Esteu utilitzant el mapa {0} mitjançant OsmAnd. Voleu iniciar la versió sencera d\'OsmAnd \?"</string>
<string name="run_full_osmand_msg">Esteu utilitzant el mapa {0} mitjançant OsmAnd. Voleu iniciar la versió sencera d\'OsmAnd \?</string>
<string name="run_full_osmand_header">Voleu iniciar OsmAnd\?</string>
<string name="lang_gn_py">Guaraní</string>
<string name="quick_action_switch_day_night_descr">Un botó per canviar entre els modes diürn i nocturn d\'OsmAnd.</string>
@ -3088,7 +3075,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="third_party_routing_type">Navegació de tercers</string>
<string name="application_profiles_descr">Seleccioneu els perfils que voleu que es mostrin a l\'aplicació.</string>
<string name="application_profiles">Perfils d\'aplicació</string>
<string name="routing_attr_piste_type_downhill_name">Esquí alpí/descens</string>
<string name="routing_attr_piste_type_downhill_name">Esquí alpí i de descens</string>
<string name="process_downloading_service">Servei de baixades d\'OsmAnd</string>
<string name="shared_string_color_magenta">Magenta</string>
<string name="shared_string_icon">Icona</string>
@ -3157,7 +3144,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="turn_screen_on_sensor">Utilitza el sensor de proximitat</string>
<string name="base_profile_descr_bicycle">Bicicleta de muntanya, ciclomotor, cavall</string>
<string name="routing_profile_broutrer">BRouter (fora de línia)</string>
<string name="routing_attr_piste_type_nordic_name">Esquí nòrdic o de fons</string>
<string name="routing_attr_piste_type_nordic_name">Esquí nòrdic i de fons</string>
<string name="routing_attr_piste_type_nordic_description">Pistes per a esquí nòrdic o de fons.</string>
<string name="routing_attr_allow_advanced_name">Permet les rutes avançades</string>
<string name="routing_attr_allow_advanced_description">Rutes difícils, amb obstacles perillosos i seccions amb pendents fortes.</string>
@ -3207,8 +3194,8 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="shared_string_default">Per defecte</string>
<string name="lang_oc">Occità</string>
<string name="app_mode_pickup_truck">Camioneta descoberta</string>
<string name="new_route_calculated_dist_dbg">"Ruta: distància %s, durada %s
\nCàlcul: %.1f s, %d vies, %d tessel·les)"</string>
<string name="new_route_calculated_dist_dbg">Ruta: distància %s, durada %s
\nCàlcul: %.1f s, %d vies, %d tessel·les)</string>
<string name="day">Dia</string>
<string name="days_2_4">Dies</string>
<string name="days_5">Dies</string>
@ -3375,7 +3362,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="swap_two_places">Bescanvia %1$s i %2$s</string>
<string name="route_start_point">Punt d\'inici</string>
<string name="track_saved">La traça s\'ha desat</string>
<string name="empty_filename">No hi ha nom de fitxer</string>
<string name="empty_filename">Nom de fitxer buit</string>
<string name="shared_string_revert">Reverteix</string>
<string name="clear_confirmation_msg">Voleu netejar %1$s\?</string>
<string name="dialogs_and_notifications_title">Diàlegs i notificacions</string>
@ -3567,7 +3554,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="quick_action_terrain_descr">Un botó per mostrar o amagar la capa de terreny al mapa.</string>
<string name="quick_action_terrain_show">Mostra el terreny</string>
<string name="quick_action_terrain_hide">Amaga el terreny</string>
<string name="quick_action_show_hide_terrain">Mostra/amaga el relleu</string>
<string name="quick_action_show_hide_terrain">Mostra o amaga el relleu</string>
<string name="shared_string_hillshade">Ombrejat del relleu</string>
<string name="shared_string_legend">Llegenda</string>
<string name="shared_string_zoom_levels">Nivells de zoom</string>
@ -3741,11 +3728,11 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="osmand_purchases_item">Compres OsmAnd</string>
<string name="navigation_profiles_item">Perfils de navegació</string>
<string name="quick_action_transport_hide">Amaga el transport públic</string>
<string name="quick_action_show_hide_transport">Mostra/amaga el transport públic</string>
<string name="quick_action_show_hide_transport">Mostra o amaga el transport públic</string>
<string name="quick_action_transport_descr">Botó que mostra o oculta el transport públic al mapa.</string>
<string name="create_edit_poi">Crea / Edita PDI</string>
<string name="create_edit_poi">Crea o edita PDI</string>
<string name="parking_positions">Posicions daparcament</string>
<string name="add_edit_favorite">Afegeix / Edita Preferits</string>
<string name="add_edit_favorite">Afegeix o edita preferit</string>
<string name="reset_deafult_order">Restableix la ordenació dels elements predeterminats</string>
<string name="back_to_editing">Torna a l\'edició</string>
<string name="turn_screen_on_navigation_instructions_descr">A cada instrucció de navegació s\'activarà la pantalla.</string>
@ -3835,7 +3822,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="turn_screen_on_power_button">Botó d\'activació</string>
<string name="release_3_8">• S\'ha actualitzat la funció Planifica una ruta: permet utilitzar diferents tipus de navegació per segments i afegir traces
\n
\n • Nou menú Aspecte per les traces: seleccioneu color, gruix, representació de les fletxes de direcció, icones inici/fi
\n • Nou menú Aspecte per les traces: seleccioneu color, gruix, representació de les fletxes de direcció, icones d\'inici i final
\n
\n • S\'ha millorat la visibilitat dels nodes ciclistes.
\n
@ -3858,7 +3845,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="development">Desenvolupament</string>
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
<string name="use_native_pt_desc">Canvieu el càlcul de rutes de Transport Public a Java (segur)</string>
<string name="start_finish_icons">Icones d\'Inici/Final</string>
<string name="start_finish_icons">Icones d\'inici i final</string>
<string name="contour_lines_thanks">Gràcies per comprar \'Corbes de nivell\'</string>
<string name="routing_attr_avoid_footways_description">Evita els camins per a vianants</string>
<string name="routing_attr_avoid_footways_name">Evita els camins per a vianants</string>
@ -3868,7 +3855,7 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="perform_oauth_authorization_description">Inicieu la sessió mitjançant OAuth per fer servir les funcionalitats osmedit</string>
<string name="perform_oauth_authorization">Inicieu la sessió via OAuth</string>
<string name="clear_osm_token">Neteja el testimoni OAuth d\'OpenStreetMap</string>
<string name="osm_edit_logout_success">La sessió s\'ha tancat correctament</string>
<string name="osm_edit_logout_success">Sessió tancada</string>
<string name="file_already_imported">El fitxer ja s\'ha importat a OsmAnd</string>
<string name="shared_string_local_maps">Mapes locals</string>
<string name="icon_group_special">Especial</string>
@ -3881,4 +3868,5 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="app_mode_gap">Discontinu</string>
<string name="lenght_limit_description">Proporcioneu la llargada del vostre vehicle, pot haver-hi rutes restringides als vehicles llargs.</string>
<string name="gpx_parse_error">No s\'ha generat correctament l\'arxiu GPX. Indiqueu-ho a l\'equip de suport per continuar investigant.</string>
<string name="save_track_to_gpx">Enregistra automàticament la traça durant la navegació</string>
</resources>

View file

@ -3850,4 +3850,10 @@
<string name="poi_parking_rooftop">Střešní</string>
<string name="poi_gpx_point">Bod GPX</string>
<string name="poi_radar_tower">Radarová věž</string>
<string name="poi_diplomatic_embassy">Ambasáda</string>
<string name="poi_diplomatic_services_citizen_services_filter">Služby občanům</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Imigrační víza</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Neimigrační víza</string>
<string name="poi_consulate_filter">Konzulát</string>
<string name="poi_embassy_filter">Ambasáda</string>
</resources>

View file

@ -2005,7 +2005,7 @@ Délka %2$s</string>
<string name="osmand_plus_banner_desc">Neomezené stahování map, aktualizací a modul Wikipedie.</string>
<string name="si_mi_meters">Míle/metry</string>
<string name="lang_hsb">Hornolužická srbština</string>
<string name="gpx_no_tracks_title">Nemáte zatím žádné GPX soubory</string>
<string name="gpx_no_tracks_title">Nemáte zatím žádné soubory stop</string>
<string name="gpx_no_tracks_title_folder">Do složky můžete také přidat GPX soubory</string>
<string name="gpx_add_track">Přidat další…</string>
<string name="shared_string_appearance">Vzhled</string>
@ -2055,10 +2055,10 @@ Délka %2$s</string>
<string name="upload_poi">Nahrát POI</string>
<string name="legacy_search">Starší vyhledávání</string>
<string name="show_legacy_search">Zobrazit starší způsob vyhledávání</string>
<string name="routing_attr_allow_motorway_name">Povolit dálnice</string>
<string name="routing_attr_allow_motorway_description">Povolit jízdu po dálnicích.</string>
<string name="routing_attr_allow_motorway_name">Použít dálnice</string>
<string name="routing_attr_allow_motorway_description">Povolí jízdu po dálnicích.</string>
<string name="wiki_around">Články Wikipedie v okolí</string>
<string name="search_map_hint">Hledat město nebo oblast</string>
<string name="search_map_hint">Město nebo oblast</string>
<string name="show_legacy_search_desc">Přidat starší hledání do úvodního panelu.</string>
<string name="lang_sr_latn">Srbsky (latinka)</string>
<string name="lang_zh_hk">Čínsky (Hong Kong)</string>
@ -2168,7 +2168,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="routing_attr_height_obstacles_description">Zohlednit převýšení terénu (data od SRTM, ASTER a EU-DEM).</string>
<string name="routing_attr_driving_style_name">Styl jízdy</string>
<string name="select_gpx_folder">Vyberte složku pro soubor GPX</string>
<string name="file_can_not_be_moved">Soubor nemůže být přesunut.</string>
<string name="file_can_not_be_moved">Soubor se nepodařilo přesunout.</string>
<string name="shared_string_move">Přesunout</string>
<string name="shared_string_gpx_tracks">Trasy</string>
<string name="shared_string_time_moving">Doba pohybu</string>
@ -2181,7 +2181,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="average_speed">Průměrná rychlost</string>
<string name="add_new_folder">Přidat nový adresář</string>
<string name="points_delete_multiple_succesful">Bod(y) smazán(y).</string>
<string name="points_delete_multiple">Chystáte se smazat body (%1$d). Určitě smazat?</string>
<string name="points_delete_multiple">Opravdu chcete smazat %1$d bodů\?</string>
<string name="route_points_category_name">Potřebné obraty na trase</string>
<string name="track_points_category_name">Trasové body, body zájmu, pojmenované objekty</string>
<string name="shared_string_gpx_track">Trasa</string>
@ -2201,34 +2201,34 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="parking_options">Možnosti parkování</string>
<string name="full_version_thanks">Děkujeme vám za zakoupení placené verze OsmAnd.</string>
<string name="routing_attr_relief_smoothness_factor_name">Zvolte kolísání výšky</string>
<string name="right_side_navigation">Jízda po pravé straně</string>
<string name="right_side_navigation">Pravostranný provoz</string>
<string name="driving_region_automatic">Automaticky</string>
<string name="restore_purchases">Obnovit nákupy</string>
<string name="fonts_header">Mapová písma</string>
<string name="type_address">Zadejte adresu</string>
<string name="type_city_town">Zadejte město</string>
<string name="type_city_town">Zadejte město/oblast</string>
<string name="type_postcode">Zadejte směrovací číslo</string>
<string name="nearest_cities">Nejbližší města</string>
<string name="select_city">Zvolte město</string>
<string name="select_postcode">Zvolte směrovací číslo</string>
<string name="select_postcode">Hledání PSČ</string>
<string name="quick_action_auto_zoom">Automatické přiblížení mapy</string>
<string name="quick_action_auto_zoom_desc">Klepnutím na toto tlačítko zapnete/vypnete automatické přibližování mapy v závislosti na vaší rychlosti.</string>
<string name="quick_action_auto_zoom_on">Zapnout automatické přiblížení mapy</string>
<string name="quick_action_auto_zoom_off">Vypnout automatické přiblížení mapy</string>
<string name="quick_action_add_destination">Přidat cíl</string>
<string name="quick_action_auto_zoom_desc">Tlačítko pro zapnutí nebo vypnutí automatického přibližování mapy podle rychlosti.</string>
<string name="quick_action_auto_zoom_on">Zapnout automatické přibližování</string>
<string name="quick_action_auto_zoom_off">Vypnout automatické přibližování</string>
<string name="quick_action_add_destination">Zadat cíl</string>
<string name="quick_action_replace_destination">Nahradit cíl</string>
<string name="quick_action_add_first_intermediate">Přidat první mezicíl</string>
<string name="quick_action_osmbugs_show">Zobrazit OSM poznámky</string>
<string name="quick_action_osmbugs_hide">Skrýt OSM poznámky</string>
<string name="quick_action_showhide_osmbugs_descr">Klepnutím na toto tlačítko zobrazíte nebo skryjete OpenStreetMap poznámky na mapě.</string>
<string name="quick_action_showhide_osmbugs_descr">Tlačítko pro zobrazení nebo skrytí OpenStreetMap poznámek na mapě.</string>
<string name="sorted_by_distance">Seřazeno podle vzdálenosti</string>
<string name="search_favorites">Najít Oblíbené</string>
<string name="hillshade_menu_download_descr">Pro zobrazení vrstevnic a stínování kopců je potřeba stáhnout překryvnou mapu této oblasti.</string>
<string name="hillshade_purchase_header">Pro zobrazení vrstevnic a stínování kopců je třeba zakoupit a aktivovat modul \"Vrstevnice\"</string>
<string name="search_favorites">Hledat v Oblíbených</string>
<string name="hillshade_menu_download_descr">Pro zobrazení vertikálního stínování si stáhněte překryvnou mapu stínovaných svahů.</string>
<string name="hillshade_purchase_header">Pro zobrazení výškových stupňů si nainstalujte modul \'Vrstevnice\'.</string>
<string name="hide_from_zoom_level">Skrýt od úrovně přiblížení</string>
<string name="srtm_menu_download_descr">Stáhnout mapu vrstevnic tohoto regionu.</string>
<string name="shared_string_plugin">Modul</string>
<string name="srtm_purchase_header">Chcete-li na mapě vidět vrstevnice, musíte koupit a nainstalovat modul \'Vrstevnice\'</string>
<string name="srtm_purchase_header">Pro zobrazení výškových stupňů si zakupte a nainstalujte modul \'Vrstevnice\'.</string>
<string name="srtm_color_scheme">Barevné schéma</string>
<string name="show_from_zoom_level">Zobrazit od úrovně přiblížení</string>
<string name="routing_attr_allow_private_name">Povolit soukromý přístup</string>
@ -2237,14 +2237,14 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="favorite_group_name">Název skupiny</string>
<string name="change_color">Změnit barvu</string>
<string name="edit_name">Upravit název</string>
<string name="animate_my_location">Animovat moji polohu</string>
<string name="animate_my_location_desc">Povolit animaci mapy \'Mé polohy\' při navigaci.</string>
<string name="animate_my_location">Animovat vlastní polohu</string>
<string name="animate_my_location_desc">Zapnout animovaný posun \'Mé polohy\' na mapě během navigace.</string>
<string name="shared_string_overview">Přehled</string>
<string name="select_street">Vyberte ulici</string>
<string name="shared_string_in_name">v %1$s</string>
<string name="quick_action_add_destination_desc">Stisk tohoto tlačítka přidá střed obrazovky jako nový cíl navádění, z dříve nastaveného cíle se stane poslední mezicíl.</string>
<string name="quick_action_replace_destination_desc">Stisk tohoto tlačítka přidá střed obrazovky jako nový cíl navádění. Pokud byl dříve nastaven jiný cíl, bude nahrazen.</string>
<string name="quick_action_add_first_intermediate_desc">Stisk tohoto tlačítka přidá střed obrazovky jako první mezicíl.</string>
<string name="quick_action_add_destination_desc">Tlačítko pro nastavení středu obrazovky jako nového cíle trasy. Z dříve nastaveného cíle se stane poslední mezicíl.</string>
<string name="quick_action_replace_destination_desc">Tlačítko pro nastavení středu obrazovky jako nového cíle. Pokud byl dříve nastaven jiný cíl, bude nahrazen.</string>
<string name="quick_action_add_first_intermediate_desc">Tlačítko pro nastavení středu obrazovky jako prvního mezicíle.</string>
<string name="no_overlay">Bez překryvné vrstvy</string>
<string name="no_underlay">Bez podkladové vrstvy</string>
<string name="subscribe_email_error">Chyba</string>
@ -2267,19 +2267,19 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="increase_search_radius">Zvětšit okruh hledání</string>
<string name="nothing_found">Nic nalezeno</string>
<string name="nothing_found_descr">Změňte vyhledávací dotaz nebo zvětšete okruh hledání.</string>
<string name="quick_action_showhide_osmbugs_title">Přepnout zobrazení poznámek OSM</string>
<string name="quick_action_showhide_osmbugs_title">Zobrazit nebo skrýt OSM poznámky</string>
<string name="shared_string_permissions">Oprávnění</string>
<string name="import_gpx_failed_descr">OsmAnd nemůže naimportovat soubor. Prosím zkontrolujte, zda má oprávnění číst soubor z tohoto umístění.</string>
<string name="import_gpx_failed_descr">Nepodařilo se naimportovat soubor. Prosím zkontrolujte, zda má OsmAnd oprávnění ke čtení souboru.</string>
<string name="distance_moving">Vzdálenost opravená</string>
<string name="mapillary_image">Obrázek Mapillary</string>
<string name="open_mapillary">Otevřít Mapillary</string>
<string name="shared_string_install">Instalovat</string>
<string name="improve_coverage_mapillary">Zlepšit pokrytí fotografií s Mapillary</string>
<string name="improve_coverage_install_mapillary_desc">Nainstalujte Mapillary a přidejte jednu nebo více fotografií na toto místo v mapě.</string>
<string name="improve_coverage_install_mapillary_desc">Nainstalujte Mapillary a přidejte fotografie na toto místo v mapě.</string>
<string name="online_photos">On-line fotografie</string>
<string name="shared_string_add_photos">Přidat fotografie</string>
<string name="no_photos_descr">Nemáme fotografie pro toto umístění.</string>
<string name="mapillary_action_descr">Přispějte vlastním pohledem na toto místo přes Mapillary z úrovně ulice.</string>
<string name="no_photos_descr">Zde nejsou žádné fotografie.</string>
<string name="mapillary_action_descr">Sdílejte svůj vlastní pohled z úrovně ulice přes Mapillary.</string>
<string name="mapillary_widget_descr">Umožňuje rychle přispět do Mapillary.</string>
<string name="mapillary_descr">On-line fotografie z ulic pro každého. Objevte místa, spolupracujte, zachyťte svět.</string>
<string name="plugin_mapillary_descr">Fotografie z ulic pro každého. Objevte místa, spolupracujte, zachyťte svět.</string>
@ -2307,10 +2307,10 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="max_min">Max/Min</string>
<string name="min_max">Min/Max</string>
<string name="quick_action_resume_pause_navigation">Pozastavit/pokračovat v navigaci</string>
<string name="quick_action_resume_pause_navigation_descr">Stiskněte toto tlačítko na pozastavení, nebo pokračování navigace.</string>
<string name="quick_action_resume_pause_navigation_descr">Tlačítko pro pozastavení nebo pokračování navigace.</string>
<string name="quick_action_show_navigation_finish_dialog">Zobrazit zprávu \"Navigace ukončena\"</string>
<string name="quick_action_start_stop_navigation">Spustit/ukončit navigaci</string>
<string name="quick_action_start_stop_navigation_descr">Stiskněte toto tlačítko pro spuštění, nebo zastavení navigace.</string>
<string name="quick_action_start_stop_navigation_descr">Tlačítko pro spuštění nebo zastavení navigace.</string>
<string name="rendering_value_translucent_pink_name">Průhledná růžová</string>
<string name="none_point_error">Prosím přidejte alespoň jeden bod.</string>
<string name="enter_gpx_name">Název souboru GPX:</string>
@ -2348,7 +2348,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="show_direction">Indikace vzdálenosti</string>
<string name="sort_by">Seřadit podle</string>
<string name="do_not_use_animations">Bez animací</string>
<string name="do_not_use_animations_descr">Zakáže animace v aplikaci.</string>
<string name="do_not_use_animations_descr">Vypne animace mapy.</string>
<string name="keep_showing_on_map">Stále zobrazovat na mapě</string>
<string name="exit_without_saving">Ukončit bez uložení?</string>
<string name="map_orientation_change_in_accordance_with_speed">Práh pro změnu orientace mapy</string>
@ -2365,7 +2365,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="last_seven_days">Posledních 7 dní</string>
<string name="this_year">Tento rok</string>
<string name="use_location">Použít umístění</string>
<string name="add_location_as_first_point_descr">Přidat svou polohu jako startovní bod do plánu ideální trasy.</string>
<string name="add_location_as_first_point_descr">Přidejte svou polohu jako počáteční bod do plánu ideální trasy.</string>
<string name="my_location">Moje poloha</string>
<string name="shared_string_finish">Dokončit</string>
<string name="plan_route">Naplánovat trasu</string>
@ -2377,24 +2377,24 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="show_guide_line">Zobrazit vodicí čáry</string>
<string name="show_arrows_on_the_map">Zobrazit šipky na mapě</string>
<string name="remove_from_map_markers">Odebrat z mapových značek</string>
<string name="descendingly">sestupně</string>
<string name="ascendingly">vzestupně</string>
<string name="date_added">Datum přidání</string>
<string name="descendingly">Z-A</string>
<string name="ascendingly">A-Z</string>
<string name="date_added">Přidáno</string>
<string name="order_by">Seřadit podle:</string>
<string name="shared_string_markers">Značky</string>
<string name="coordinates_format">Formát souřadnic</string>
<string name="use_system_keyboard">Použít systémovou klávesnici</string>
<string name="fast_coordinates_input_descr">Zvolte formát souřadnicového vstupu. Můžete ho kdykoli změnit klepnutím na \'Možnosti\'.</string>
<string name="fast_coordinates_input_descr">Zvolte formát zadávání souřadnic. Můžete ho kdykoliv změnit klepnutím na \'Nastavení.</string>
<string name="fast_coordinates_input">Rychlé zadávání souřadnic</string>
<string name="routing_attr_avoid_ice_roads_fords_name">Vyhnout brodům a ledovým cestám</string>
<string name="routing_attr_avoid_ice_roads_fords_description">Povede trasu mimo brody a ledové cesty.</string>
<string name="routing_attr_avoid_ice_roads_fords_name">Žádné ledové cesty a brody</string>
<string name="routing_attr_avoid_ice_roads_fords_description">Vyhne se ledovým cestám a brodům.</string>
<string name="show_passed">Zobrazit prošlé</string>
<string name="hide_passed">Skrýt prošlé</string>
<string name="marker_show_distance_descr">Vyberte, jak ukazovat vzdálenost a směr k mapovým značkám na obrazovce mapy:</string>
<string name="osn_modify_dialog_error">Nepodařilo se změnit poznámku</string>
<string name="marker_show_distance_descr">Zvolte, jak se bude zobrazovat vzdálenost a směr k mapovým značkám na mapě:</string>
<string name="osn_modify_dialog_error">Nepodařilo se změnit poznámku.</string>
<string name="osn_modify_dialog_title">Upravit poznámku</string>
<string name="context_menu_item_modify_note">Upravit poznámku OSM</string>
<string name="make_round_trip_descr">Přidat počáteční bod také jako cíl pro vytvoření okruhu.</string>
<string name="make_round_trip_descr">Přidat kopii počátečního bodu jako cíl.</string>
<string name="make_round_trip">Vytvořit okružní trasu</string>
<string name="import_gpx_file_description">Může být importováno jako Oblíbené nebo jako GPX soubor.</string>
<string name="import_as_gpx">Importovat jako soubor GPX</string>
@ -2431,7 +2431,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="show_guide_line_descr">Zobrazit vodicí čáry od vaší polohy k aktivním značkám.</string>
<string name="show_arrows_descr">Zobrazit jednu nebo dvě šipky označující směr k aktivním značkám.</string>
<string name="distance_indication_descr">Zvolte způsob zobrazení vzdálenosti k aktivním značkám.</string>
<string name="active_markers_descr">Zvolte, kolik ukazatelů směru se má zobrazit.</string>
<string name="active_markers_descr">Zadejte počet ukazatelů směru.</string>
<string name="digits_quantity">Počet desetinných míst</string>
<string name="shared_string_right">Vpravo</string>
<string name="shared_string_left">Vlevo</string>
@ -2442,19 +2442,19 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="tap_on_map_to_hide_interface_descr">Klepnutí na mapu přepne ovládací tlačítka a nástroje.</string>
<string name="tap_on_map_to_hide_interface">Režim celé obrazovky</string>
<string name="mark_passed">Označit prošlé</string>
<string name="empty_state_osm_edits_descr">Vytvořit nebo upravit OSM POI, otevřít nebo okomentovat OSM poznámky a přispět zaznamenanými GPX soubory.</string>
<string name="empty_state_osm_edits_descr">Vytvořit nebo upravit body zájmu OSM, otevřít nebo okomentovat OSM poznámky a přispět zaznamenanými GPX soubory.</string>
<string name="shared_string_deleted">Odstraněné</string>
<string name="shared_string_edited">Upravené</string>
<string name="shared_string_added">Přidané</string>
<string name="marker_activated">Značka %s aktivována.</string>
<string name="one_tap_active_descr">Klepněte na značku na mapě pro její přesunutí na první místo v aktivních značkách bez otevření kontextové nabídky.</string>
<string name="empty_state_av_notes">Dělejte si poznámky!</string>
<string name="empty_state_av_notes_desc">Přidejte audio, video nebo fotografickou poznámku pro každý bod na mapě, pomocí nástroje nebo kontextového menu.</string>
<string name="notes_by_date">Poznámky podle datumu</string>
<string name="empty_state_av_notes_desc">Přidejte audio, video nebo fotografické poznámky pro libovolný bod na mapě, pomocí nástroje nebo kontextového menu.</string>
<string name="notes_by_date">Multimediální poznámky podle data</string>
<string name="by_date">Podle datumu</string>
<string name="by_type">Podle typu</string>
<string name="empty_state_markers_active_desc">Klepnutím nebo přidržením označte \'Místa\', pak klepněte na tlačítko značky s vlajkou.</string>
<string name="modify_the_search_query">Upravit vyhledávací dotaz.</string>
<string name="modify_the_search_query">Změňte vyhledávací dotaz.</string>
<string name="one_tap_active">Funkce \"Jedním stiskem\" je aktivní</string>
<string name="rendering_attr_hidePOILabels_name">Popisky bodů</string>
<string name="shared_string_without_name">Bez názvu</string>
@ -2482,13 +2482,13 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="osm_recipient_stat">Počet úprav %1$s, součet %2$s mBTC</string>
<string name="lang_lo">Laosky</string>
<string name="show_closed_notes">Zobrazit zavřené poznámky</string>
<string name="switch_osm_notes_visibility_desc">Zobrazit/Skrýt OpenStreetMap poznámky na mapě.</string>
<string name="switch_osm_notes_visibility_desc">Zobrazit nebo skrýt OpenStreetMap poznámky na mapě.</string>
<string name="gpx_file_desc">GPX - vhodné pro export do JOSM nebo jiných editorů OSM.</string>
<string name="osc_file_desc">OSC - vhodné pro export do OpenStreetMap.</string>
<string name="osc_file_desc">OSC - vhodné pro export do OSM.</string>
<string name="shared_string_gpx_file">Soubor GPX</string>
<string name="osc_file">Soubor OSC</string>
<string name="choose_file_type">Zvolte typ souboru</string>
<string name="osm_edits_export_desc">Vyberte typ exportu: OSM poznámky, POI nebo obojí.</string>
<string name="osm_edits_export_desc">Exportujte jako OSM poznámky, body zájmu, nebo obojí.</string>
<string name="all_data">Všechny údaje</string>
<string name="osm_notes">OSM poznámky</string>
<string name="enter_the_file_name">Zadejte název souboru.</string>
@ -2524,8 +2524,8 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="optional_point_name">Volitelný název bodu</string>
<string name="transport_nearby_routes_within">Nejbližší trasy v okruhu</string>
<string name="transport_nearby_routes">V okruhu</string>
<string name="distance_farthest">Vzdálenost: nejvzdálenější jako první</string>
<string name="distance_nearest">Vzdálenost: nejbližší jako první</string>
<string name="distance_farthest">Nejvzdálenější jako první</string>
<string name="distance_nearest">Nejbližší jako první</string>
<string name="rendering_attr_whiteWaterSports_name">Divoká voda</string>
<string name="osmand_extended_description_part2">GPS navigace
\n• Vyberte si mezi offline režimem (bez roamingových poplatků v zahraničí) a online režimem (rychlejší)
@ -2658,7 +2658,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="unlock_all_features">Odemknout všechny funkce OsmAnd</string>
<string name="purchase_dialog_title">Vyberte si předplatné</string>
<string name="purchase_dialog_travel_description">Chcete-li dostávat offline články o cestování, je třeba koupit jednu z následujících položek:</string>
<string name="purchase_dialog_subtitle">Vyberte vhodnou položku:</string>
<string name="purchase_dialog_subtitle">Vyberte vhodnou položku</string>
<string name="shared_string_dont">Nedělat</string>
<string name="shared_string_do">Dělat</string>
<string name="shared_string_only_with_wifi">Pouze na WiFi</string>
@ -2675,7 +2675,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="download_maps_travel">Cestovní průvodce</string>
<string name="shared_string_wikivoyage">Wikivoyage</string>
<string name="article_removed">Článek odstraněn</string>
<string name="wikivoyage_search_hint">Vyhledávání: stát, město, kraj</string>
<string name="wikivoyage_search_hint">Hledejte stát, město nebo kraj</string>
<string name="shared_string_read">Číst</string>
<string name="saved_articles">Články v záložkách</string>
<string name="shared_string_explore">Prozkoumat</string>
@ -2693,8 +2693,8 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="download_file">Stáhnout soubor</string>
<string name="start_editing">Začít s úpravami</string>
<string name="get_unlimited_access">Získejte neomezený přístup</string>
<string name="monthly_map_updates">Aktualizace map: každý měsíc</string>
<string name="daily_map_updates">Aktualizace map: každou hodinu</string>
<string name="monthly_map_updates">Aktualizace map každý měsíc</string>
<string name="daily_map_updates">Aktualizace map každou hodinu</string>
<string name="download_wikipedia_description">Stáhnout články Wikipedie pro %1$s a číst je v režimu offline.</string>
<string name="download_wikipedia_label">Stahování dat z Wikipedie</string>
<string name="open_in_browser_wiki">Otevřít článek online</string>
@ -2718,9 +2718,9 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="quick_action_edit_actions">Upravit akce</string>
<string name="get_osmand_live">Získejte OsmAnd Live pro odemknutí všech funkcí: Denní aktulizace mapových podkladů s neomezeným počtem stahování, všechny placené moduly, propojení s Wikipedia, Wikivoyage a mnoho dalšího.</string>
<string name="thank_you_for_feedback">Děkujeme za Vaši zpětnou vazbu</string>
<string name="poi_cannot_be_found">Na Váš dotaz nebylo nic nalezeno.</string>
<string name="search_no_results_feedback">Žádný výsledek vyhledávání?
\nDejte nám o tom vědět, ať to můžeme zlepšit</string>
<string name="poi_cannot_be_found">Bod nebo cesta nebyly nalezeny.</string>
<string name="search_no_results_feedback">Žádný výsledek vyhledávání\?
\nPoskytněte nám zpětnou vazbu</string>
<string name="release_3_1">• Navigace: Opravený indikátor průběhu, přidána možnost pro rychlé prohození začátku a konce trasy
\n
\n • Mapové značky: Opravena možnost zapnutí/vypnutí skupin, nově možnost skrýt značky na mapě
@ -2737,8 +2737,9 @@ Zobrazená oblast: %1$s x %2$s</string>
\n</string>
<string name="commiting_way">Odesílání cesty…</string>
<string name="increase_search_radius_to">Zvětšit okruh hledání na %1$s</string>
<string name="send_search_query_description">Bude odeslán váš dotaz pro vyhledávání: \"%1$s\" a také vaše poloha. \n
\n Nedochází k žádnému shromažďování osobních údajů. Zaslaná data slouží pouze k vylepšení vyhledávacího algoritmu.</string>
<string name="send_search_query_description">Váš vyhledávací dotaz a poloha budou odeslány na: \"%1$s\".
\n
\n Nedochází k žádnému shromažďování osobních údajů. Zaslaná data slouží pouze k vylepšení vyhledávacího algoritmu.</string>
<string name="send_search_query">Odeslat data?</string>
<string name="shared_string_world">Celý svět</string>
<string name="point_deleted">Bod %1$s byl smazán</string>
@ -2748,7 +2749,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="coord_input_save_as_track_descr">Bylo přidáno %1$s bodů. Zadejte název a klepněte na \"Uložit\".</string>
<string name="unirs_render_descr">Upravený základní styl pro zvýšení kontrastu pěších a cyklistických cest. Používá starší barvy Mapnik.</string>
<string name="shared_string_bookmark">Záložka</string>
<string name="off_road_render_descr">Vhodný pro off-road terénní jízdu. Vhodný pro použití se zelenými satelitními snímky použitými jako podkladová vrstva. Zmenšená tloušťka hlavních cest a naopak zvětšená tloušťka polních cest, pěšin, cyklotras a dalších cest. Založeno na \"Topo\" stylu.</string>
<string name="off_road_render_descr">Pro off-road terénní jízdu, založený na stylu \'Topo\' a pro použití se zelenými satelitními snímky jako podkladovou vrstvou. Zmenšená tloušťka hlavních cest, zvětšená tloušťka polních cest, pěšin, cyklotras a dalších cest.</string>
<string name="open_wikipedia_link_online">Otevřít odkaz Wikipedia na internetu</string>
<string name="open_wikipedia_link_online_description">Odkaz bude otevřen v internetovém prohlížeči.</string>
<string name="read_wikipedia_offline_description">Stahování Wikipedia a Wikivoyage článků pro čtení offline je dostupné pouze předplatitelům OsmAnd Live.</string>
@ -2764,21 +2765,21 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="access_intermediate_arrival_time">Čas příjezdu do mezicíle</string>
<string name="map_widget_intermediate_time">Do průjezdního bodu</string>
<string name="test_voice_desrc">Klepněte na tlačítko pro vyslechnutí odpovídajícího hlasového pokynu, aby jste zjistili chybné nebo chybějící pokyny.</string>
<string name="nautical_render_descr">Plavební navigační styl. Klíčové vlastnosti: Bóje, majáky, plavební cesty, mořské cesty a značky, přístavy, námořní služby, plavební hloubka.</string>
<string name="ski_map_render_descr">Zimní režim. Klíčové vlastnosti: Vykresluje sjezdovky, lyžařské vleky a další praktické objekty pro lyžaře a snowboardisty. Nedůležité objekty jsou na mapě méně výrazné.</string>
<string name="nautical_render_descr">Pro námořní navigaci. Obsahuje bóje, majáky, plavební cesty, mořské cesty a značky, přístavy, námořní služby a hloubkové vrstevnice.</string>
<string name="ski_map_render_descr">Pro lyžování. Obsahuje sjezdovky, lyžařské vleky, běžkařské trasy atd. Nedůležité objekty jsou na mapě méně výrazné.</string>
<string name="welcome_to_open_beta">Vítejte v otevřené beta verzi</string>
<string name="light_rs_render_descr">Jednoduchý a kontrastní styl pro automobilovou navigaci. Příjemný na oči v nočním režimu. Klíčové vlastnosti: Vrstevnice, kontrastní oranžové silnice, druhořadé objekty jsou méně výrazné.</string>
<string name="topo_render_descr">Kontrastní styl určený primárně pro pěší turistiku a cyklistiku v přírodě. Dobrá čitelnost při složitém venkovním osvětlením. Klíčové vlastnosti: kontrastní silnice a přírodních objekty, různé typy tras, vrstevnice s rozšířeným nastavením, více detailů při odpovídající úrovni zvětšení než ve výchozím stylu. Umožňuje rozlišit kvalitu povrchu vozovky. Nemá noční režim.</string>
<string name="mapnik_render_descr">Starý styl vykreslení jako výchozí \"Mapnik\". Klíčové vlastnosti: barvy jsou podobné \"Mapnik\" stylu.</string>
<string name="touring_view_render_descr">Vysoce detailní styl pro účely cestování. Obsahuje všechna nastavení z výchozího stylu a navíc zobrazuje maximum detailů, především všechny silnice, cesty a jiné způsoby cestování. Jasně rozlišuje různé typy cest, podobně jako mnohé cestovní atlasy. Vysoce kontrastní schéma pro venkovní použití, denní a noční režim.</string>
<string name="default_render_descr">Obecný styl. Zjednodušené vykreslování v hustě osídlených městech. Klíčové vlastnosti: vrstevnice, trasy, kvalita povrchu cest, omezení přístupu, čísla cest, značení dle SAC, objekty pro vodní sporty.</string>
<string name="light_rs_render_descr">Jednoduchý styl pro automobilovou navigaci. Příjemný noční režim, vrstevnice, kontrastní oranžové silnice, druhořadé objekty jsou méně výrazné.</string>
<string name="topo_render_descr">Pro pěší turistiku a cyklistiku v přírodě. Dobře čitelný venku. Kontrastní silnice a přírodních objekty, různé typy tras, vrstevnice s rozšířeným nastavením, více detailů. Umožňuje rozlišit kvalitu povrchu vozovky. Nemá noční režim.</string>
<string name="mapnik_render_descr">Starý výchozí styl \'Mapnik\'. Barvy jsou podobné jako styl \'Mapnik\'.</string>
<string name="touring_view_render_descr">Styl pro cestování s vysokým kontrastem a maximálními detaily. Obsahuje všechna nastavení ze základního stylu OsmAnd a navíc zobrazuje maximum detailů, především silnice, cesty a jiné způsoby cestování. Jasně rozlišuje různé typy cest, podobně jako cestovní atlasy. Vhodný pro použití ve dne, v noci i venku.</string>
<string name="default_render_descr">Obecný styl. Čisté vykreslování hustě osídlených měst. Obsahuje vrstevnice, trasy, kvalita povrchu cest, omezení přístupu, čísla cest, značení dle SAC, objekty pro vodní sporty.</string>
<string name="travel_card_download_descr">Stáhněte si cestovní průvodce Wikivoyage a prohlížejte články o místech po celém světě bez připojení na internet.</string>
<string name="start_editing_card_image_text">Bezplatný cestovní průvodce, který může upravovat každý.</string>
<string name="welcome_to_open_beta_description">Cestovní průvodci jsou nyní založené na Wikivoyage. Všechny jejich funkce můžete otestovat zdarma během beta testování. Poté budou zpřístupněny předplatitelům služby OsmAnd Live a uživatelům OsmAnd+.</string>
<string name="start_editing_card_description">Můžete (a měli byste) upravovat libovolný článek na Wikivoyage. Sdílejte znalosti, zkušenosti, talent a svoji pozornost</string>
<string name="start_editing_card_description">Můžete (a měli byste) upravovat libovolný článek na Wikivoyage. Sdílejte znalosti, zkušenosti, talent a svoji pozornost.</string>
<string name="ask_for_location_permission">Pro pokračování prosím udělte OsmAndu oprávnění pro přístup k poloze.</string>
<string name="rendering_value_black_name">Černá</string>
<string name="more_transport_on_stop_hint">Na této zastávce je další provoz.</string>
<string name="more_transport_on_stop_hint">Z této zastávky je možná další doprava.</string>
<string name="release_3_2_pre">• Opraven pád při startu, ke kterému docházelo na některých zařízeních
\n
\n • Nová akce značek: zobraz značky, které již byly projety
@ -2794,7 +2795,7 @@ Zobrazená oblast: %1$s x %2$s</string>
\n• Měření vzdálenosti: tlačítko \"Měření\" přidáno do akcí v kontextovém menu
\n</string>
<string name="search_street">Hledat ulici</string>
<string name="start_search_from_city">Nejprve vyberte město</string>
<string name="start_search_from_city">Nejprve zvolte město/oblast</string>
<string name="shared_string_restore">Obnovit</string>
<string name="keep_passed_markers_descr">Značky, přidané jako skupina oblíbených nebo GPX bodů a označené jako prošlé, zůstanou na mapě. Pokud skupina není aktivní, značky zmizí z mapy.</string>
<string name="keep_passed_markers">Ponechat prošlé značky na mapě</string>
@ -2813,8 +2814,8 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="osm_live_payment_renews_quarterly">Obnovuje se čtvrtletně</string>
<string name="osm_live_payment_renews_annually">Obnovuje se ročně</string>
<string name="default_price_currency_format">%1$.2f %2$s</string>
<string name="osm_live_payment_header">Vyberte si frekvenci plateb, která vám vyhovuje:</string>
<string name="osm_live_payment_contribute_descr">Část příjmů je posílána přispěvatelům OpenStreetMap.</string>
<string name="osm_live_payment_header">Interval plateb:</string>
<string name="osm_live_payment_contribute_descr">Příspěvky pomáhají financovat tvorbu map OSM.</string>
<string name="powered_by_osmand">OsmAnd</string>
<string name="osm_live_subscriptions">Předplatné</string>
<string name="mapillary_menu_title_pano">Zobrazit pouze 360° obrázky</string>
@ -2831,9 +2832,9 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="shared_string_capacity">Kapacita</string>
<string name="shared_string_width">Šířka</string>
<string name="shared_string_height">Výška</string>
<string name="add_destination_point">Přidat cíl</string>
<string name="add_destination_point">Zadat cíl</string>
<string name="add_intermediate_point">Přidat mezicíl</string>
<string name="add_start_point">Přidat počáteční bod</string>
<string name="add_start_point">Zadat počáteční bod</string>
<string name="intermediate_waypoint">Mezicíl</string>
<string name="transfers">přestupy</string>
<string name="on_foot">pěšky</string>
@ -2845,7 +2846,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="show_along_the_route">Ukázat podél trasy</string>
<string name="simulate_navigation">Simulovat navigaci</string>
<string name="choose_track_file_to_follow">Vyberte soubor s trasou, kterou chcete následovat</string>
<string name="voice_announcements">Hlasová oznámení</string>
<string name="voice_announcements">Hlasové výzvy</string>
<string name="intermediate_destinations">Mezicíle</string>
<string name="arrive_at_time">Příjezd v %1$s</string>
<string name="add_destination_query">Nejdříve prosím zadejte cíl</string>
@ -2864,12 +2865,12 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="routeInfo_road_types_name">Typy silnic</string>
<string name="exit_at">Výjezd na</string>
<string name="shared_string_swap">Vyměnit</string>
<string name="quick_action_show_hide_gpx_tracks">Zobrazit/skrýt GPX trasy</string>
<string name="quick_action_show_hide_gpx_tracks_descr">Klepnutím na toto tlačítko akce se zobrazí nebo skryjí vybrané GPX trasy na mapě</string>
<string name="quick_action_gpx_tracks_hide">Skrýt GPX trasy</string>
<string name="quick_action_gpx_tracks_show">Zobrazit GPX trasy</string>
<string name="quick_action_show_hide_gpx_tracks">Zobrazit/skrýt stopy</string>
<string name="quick_action_show_hide_gpx_tracks_descr">Tlačítko pro zobrazení nebo skrytí vybraných stop na mapě</string>
<string name="quick_action_gpx_tracks_hide">Skrýt stopy</string>
<string name="quick_action_gpx_tracks_show">Zobrazit stopy</string>
<string name="transfers_size">%1$d přenosů</string>
<string name="add_start_and_end_points">Přidat počáteční a koncový bod</string>
<string name="add_start_and_end_points">Přidat počáteční a cílový bod</string>
<string name="route_add_start_point">Přidat počáteční bod</string>
<string name="route_descr_select_start_point">Zvolit počáteční bod</string>
<string name="rendering_attr_surface_unpaved_name">Nezpevněný</string>
@ -2926,8 +2927,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="quick_action_day_night_mode">%s režim</string>
<string name="avoid_pt_types">Vyhněte se typům dopravy…</string>
<string name="shared_string_walk">Chůze</string>
<string name="save_poi_value_exceed_length">Maximální délka názvu značky \"%s\" je 255 znaků.
\nPro pokračování zkraťte.</string>
<string name="save_poi_value_exceed_length">Zkraťte délku názvu značky \"%s\" na méně než 255 znaků.</string>
<string name="save_poi_value_exceed_length_title">Délka hodnoty \"%s\"</string>
<string name="release_3_3">"• Nová obrazovka \'Pokyny\': Zobrazuje tlačítka pro cíl Domov a Práce, zkratku pro \'předchozí trasu\', seznam aktivních GPX tras a značek, historii vyhledávání
\n
@ -2951,18 +2951,18 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="shared_string_milliradians">Miliradiány</string>
<string name="angular_measeurement">Úhlová jednotka</string>
<string name="angular_measeurement_descr">Změní jednotku měření azimutu.</string>
<string name="routing_attr_avoid_tram_name">Vyhnout se tramvajím</string>
<string name="routing_attr_avoid_tram_description">Vyhnout se tramvajím</string>
<string name="routing_attr_avoid_bus_name">Vyhnout se autobusům</string>
<string name="routing_attr_avoid_bus_description">Vyhnout se autobusům a trolejbusům</string>
<string name="routing_attr_avoid_share_taxi_name">Vyhnout se sdíleným taxi</string>
<string name="routing_attr_avoid_share_taxi_description">Vyhnout se sdíleným taxi</string>
<string name="routing_attr_avoid_train_name">Vyhnout se vlakům</string>
<string name="routing_attr_avoid_train_description">Vyhnout se vlakům</string>
<string name="routing_attr_avoid_subway_name">Vyhnout se metru</string>
<string name="routing_attr_avoid_tram_name">Žádné tramvaje</string>
<string name="routing_attr_avoid_tram_description">Vyhne se tramvajím</string>
<string name="routing_attr_avoid_bus_name">Žádné autobusy</string>
<string name="routing_attr_avoid_bus_description">Vyhne se autobusům a trolejbusům</string>
<string name="routing_attr_avoid_share_taxi_name">Žádná sdílená taxi</string>
<string name="routing_attr_avoid_share_taxi_description">Vyhne se sdíleným taxi</string>
<string name="routing_attr_avoid_train_name">Žádné vlaky</string>
<string name="routing_attr_avoid_train_description">Vyhne se vlakům</string>
<string name="routing_attr_avoid_subway_name">Žádné metro</string>
<string name="routing_attr_avoid_subway_description">Vyhnout se metru a lehké železniční dopravě</string>
<string name="routing_attr_avoid_ferry_name">Vyhnout se trajektům</string>
<string name="routing_attr_avoid_ferry_description">Vyhnout se trajektům</string>
<string name="routing_attr_avoid_ferry_name">Žádné trajekty</string>
<string name="routing_attr_avoid_ferry_description">Vyhne se trajektům</string>
<string name="release_3_3_7">• Zobrazování času na přestup mezi hromadnou dopravou
\n
\n • Upravené rozhraní detailů trasy
@ -2995,7 +2995,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="collected_data_descr">Určete, která data dovolíte aplikaci OsmAnd sdílet.</string>
<string name="privacy_and_security_change_descr">Klepněte na „Povolit“, pokud souhlasíte s našimi %1$s</string>
<string name="settings_privacy_and_security">Soukromí a zabezpečení</string>
<string name="settings_privacy_and_security_desc">Zvolte, které údaje s námi sdílíte</string>
<string name="settings_privacy_and_security_desc">Zvolte údaje ke sdílení</string>
<string name="shared_string_no_thank_you">Ne, díky</string>
<string name="shared_string_allow">Povolit</string>
<string name="profile_name_hint">Název profilu</string>
@ -3030,12 +3030,12 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="profile_alert_need_save_msg">Nejprve je třeba uložit změny profilu</string>
<string name="profile_alert_delete_title">Odstranit profil</string>
<string name="profile_alert_delete_msg">Opravdu chcete odstranit profil „%s“</string>
<string name="select_base_profile_dialog_title">Zvolte základní profil</string>
<string name="select_base_profile_dialog_title">Zvolte výchozí profil</string>
<string name="select_nav_profile_dialog_title">Vyberte typ navigace</string>
<string name="base_profile_descr_car">Auto, nákladní auto, motocykl</string>
<string name="base_profile_descr_bicycle">Horské kolo, moped, kůň</string>
<string name="base_profile_descr_pedestrian">Chůze, turistika, běh</string>
<string name="base_profile_descr_public_transport">Všechny typy hromadné dopravy</string>
<string name="base_profile_descr_public_transport">Typy hromadné dopravy</string>
<string name="base_profile_descr_boat">Loď, veslování, plachtění</string>
<string name="base_profile_descr_aircraft">Letadlo, plachtění</string>
<string name="routing_profile_geocoding">Geokódování</string>
@ -3071,7 +3071,7 @@ Zobrazená oblast: %1$s x %2$s</string>
\n
\nSvoji volbu můžete kdykoliv změnit v Nastavení &gt; Soukromí a zabezpečení.</string>
<string name="downloaded_maps_collect_descr">Pomozte nám pochopit, které regiony a země jsou v mapách nejpopulárnější.</string>
<string name="visited_screens_collect_descr">Pomozte nám pochopit, které funkce OsmAnd jsou nejpopulárnější.</string>
<string name="visited_screens_collect_descr">Pomůže nám zjistit popularitu funkcí OsmAnd.</string>
<string name="osmand_routing_promo">Můžete přidat vaši vlastní upravenou verzi souboru routing.xml v ..osmand/routing</string>
<string name="press_again_to_change_the_map_orientation">Klepněte znovu pro změnu orientace mapy</string>
<string name="shared_string_min_speed">Min. rychlost</string>
@ -3581,7 +3581,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="perform_oauth_authorization_description">Přihlásit se pomocí OAuth pro použití funkcí editace OSM</string>
<string name="perform_oauth_authorization">Přihlásit pomocí OAuth</string>
<string name="clear_osm_token">Vymazat OpenStreetMap OAuth token</string>
<string name="osm_edit_logout_success">Odhlášení úspěšné</string>
<string name="osm_edit_logout_success">Byli jste odhlášeni</string>
<string name="file_already_imported">Soubor je již importovaný v OsmAnd</string>
<string name="use_two_phase_routing">Použít dvoufázový algoritmus A* pro výpočet trasy</string>
<string name="shared_string_graph">Graf</string>
@ -3740,7 +3740,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="navigate_point_mgrs">MGRS</string>
<string name="simulate_your_location_gpx_descr">Simulovat polohu pomocí zaznamenané stopy GPX.</string>
<string name="what_is_new">Co je nového</string>
<string name="quick_action_directions_from_desc">Tlačítko pro určení středu obrazovky jako výchozího bodu a výpočet trasy do cíle nebo otevření dialogu pro výběr cíle.</string>
<string name="quick_action_directions_from_desc">Tlačítko pro nastavení středu obrazovky jako výchozího bodu a výpočet trasy do cíle nebo otevření dialogu pro výběr cíle.</string>
<string name="snowmobile_render_descr">Pro jízdu na sněžném vozidle na vyhrazených cestách.</string>
<string name="select_base_profile_dialog_message">Vlastní profil založte na jednom ze základních profilů. Ten určí základní nastavení jako viditelnost nástrojů, jednotky rychlosti a vzdálenosti. Toto jsou základní profily aplikace a návrhy vlastních profilů, na které mohou být rozšířeny:</string>
<string name="button_rate">Ohodnotit</string>
@ -3893,28 +3893,28 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="plugin_global_prefs_info">Tato nastavení jsou globální a platí pro všechny profily</string>
<string name="login_open_street_map">Přihlásit se do OpenStreetMap</string>
<string name="login_open_street_map_org">Přihlásit se do OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Zaregistrovat se do OpenStreetMap</string>
<string name="sign_in_with_open_street_map">Přihlásit se do OpenStreetMap</string>
<string name="osm_edits_view_descr">Můžete zobrazit své dosud neodeslané změny či chyby v OSM v %1$s. Odeslané body se již v OsmAnd nezobrazují.</string>
<string name="open_street_map_login_mode">Musíte se přihlásit, abyste mohli odesílat nová nebo změněná data.
<string name="open_street_map_login_mode">Přihlaste se, abyste mohli odesílat nová nebo změněná data,
\n
\nMůžete se přihlásit pomocí bezpečné metody OAuth, nebo pomocí jména a hesla.</string>
<string name="use_login_password">Použít jméno a heslo</string>
\nbuď pomocí bezpečné metody OAuth, nebo pomocí jména a hesla.</string>
<string name="use_login_password">Přihlásit se pomocí jména a hesla</string>
<string name="login_account">Účet</string>
<string name="user_login">Přihlašovací jméno</string>
<string name="user_login">Uživatelské jméno</string>
<string name="markers_history">Historie značek</string>
<string name="gpx_upload_public_visibility_descr">\"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.</string>
<string name="gpx_upload_private_visibility_descr">\"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.</string>
<string name="send_files_to_openstreetmap">Odeslat soubor GPX do OpenStreetMap</string>
<string name="enter_text_separated">Zadejte značky oddělené čárkou.</string>
<string name="gpx_upload_trackable_visibility_descr">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.</string>
<string name="gpx_upload_identifiable_visibility_descr">Identifikovatelná znamená, že trasa bude veřejně dostupná ve vašich GPS trasách a veřejných seznamech GPS tras, tzn. ostatní uživatelé si budou moci stáhnout nezpracovanou trasu a propojit ji s vaším uživatelským jménem. Data poskytnutá prostřednictvím API se budou odkazovat na vaši původní stránku s trasou. Časová razítka bodů trasy budou dostupná prostřednictvím veřejného GPS API.</string>
<string name="gpx_upload_trackable_visibility_descr">\"Sledovatelná\" znamená, že trasa se neobjeví v žádném veřejném seznamu, ale zpracované body trasy s časovými razítky (které nelze přímo spojit s vámi) budou dostupné prostřednictvím veřejného GPS API.</string>
<string name="gpx_upload_identifiable_visibility_descr">\"Identifikovatelná\" znamená, že trasa bude veřejně dostupná ve vašich GPS trasách a veřejných seznamech GPS tras, tzn. ostatní uživatelé si budou moci stáhnout nezpracovanou trasu a propojit ji s vaším uživatelským jménem. Veřejná data bodů trasy s časovými razítky poskytnutá prostřednictvím GPS API se budou odkazovat na vaši původní stránku s trasou.</string>
<string name="osm_edit_close_note">Zavřít OSM poznámku</string>
<string name="osm_edit_comment_note">Komentovat OSM poznámku</string>
<string name="osm_login_descr">Můžete se přihlásit bezpečnou metodou OAuth nebo použít své přihlašovací jméno a heslo.</string>
<string name="osm_login_descr">Přihlaste se bezpečnou metodou OAuth nebo použijte své přihlašovací jméno a heslo.</string>
<string name="shared_string_add_photo">Přidat fotku</string>
<string name="register_on_openplacereviews">Zaregistrovat na
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">Fotografie poskytuje open source projekt OpenPlaceReviews.org. Před odesláním svých fotografií se musíte zaregistrovat na webové stránce.</string>
<string name="register_on_openplacereviews_desc">Přihlaste se na webových stránkách open source projektu OpenPlaceReviews.org a budete moci odesílat ještě více fotografií.</string>
<string name="register_opr_create_new_account">Vytvořit nový účet</string>
<string name="register_opr_have_account">Už mám účet</string>
<string name="ltr_or_rtl_combine_via_colon">%1$s: %2$s</string>
@ -3948,4 +3948,18 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="shared_string_search_history">Historie vyhledávání</string>
<string name="app_mode_kayak">Kajak</string>
<string name="app_mode_motorboat">Motorový člun</string>
<string name="add_to_mapillary">Přidat do Mapillary</string>
<string name="add_to_opr">Přidat do OpenPlaceReviews</string>
<string name="add_photos_descr">OsmAnd zobrazuje fotografie z několika zdrojů:
\nOpenPlaceReviews - fotografie bodů zájmu
\nMapillary - pouliční fotografie
\nWeb / Wikimedia - fotografie bodů zájmu specifikované v OpenStreetMap datech.</string>
<string name="shared_string_resources">Zdroje</string>
<string name="approximate_file_size">Přibližná velikost souboru</string>
<string name="select_data_to_export">Vyberte data k exportu do souboru.</string>
<string name="file_size_needed_for_import">Vyžadováno pro import</string>
<string name="export_not_enough_space_descr">Na vašem zařízení je volných pouze %1$s. Uvolněte prosím nějaké místo nebo zrušte některé položky k exportu.</string>
<string name="export_not_enough_space">Není zde dostatek místa</string>
<string name="select_groups_for_import">Vyberte skupiny, které se mají importovat.</string>
<string name="select_items_for_import">Vyberte položky, které se mají importovat.</string>
</resources>

View file

@ -3808,7 +3808,7 @@
<string name="poi_booth">Stand type</string>
<string name="poi_video_yes">Ja</string>
<string name="poi_video_no">Nej</string>
<string name="poi_internet_access_fee_customers">Signal for at finde stangen</string>
<string name="poi_internet_access_fee_customers">Internetadgang: kunder</string>
<string name="poi_traffic_signals_sound_locate">Kun når det er tilladt at gå</string>
<string name="poi_tactile_paving_contrasted">Kontrast</string>
<string name="poi_tactile_paving_primitive">Primitiv</string>
@ -3852,4 +3852,32 @@
<string name="poi_recycling_small_electrical_appliances">Små elektriske apparater</string>
<string name="poi_departures_board">Afgangstavle</string>
<string name="poi_drinking_water_refill">Genopfyldning af drikkevand</string>
<string name="poi_diplomatic_services_citizen_services_no">Nej</string>
<string name="poi_diplomatic_services_citizen_services_yes">Ja</string>
<string name="poi_diplomatic_services_immigrant_visas_no">Nej</string>
<string name="poi_diplomatic_services_immigrant_visas_yes">Ja</string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">Nej</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes">Ja</string>
<string name="poi_liaison_representative_office">Repræsentantkontor</string>
<string name="poi_liaison_liaison_office">Kontor</string>
<string name="poi_consulate_honorary_consul">Honorærkonsul</string>
<string name="poi_consulate_consulate_general">Generalkonsulat</string>
<string name="poi_consulate_consular_agency">Konsulært agentur</string>
<string name="poi_consulate_yes">Ledet af en konsul</string>
<string name="poi_embassy_residence">Bopæl</string>
<string name="poi_embassy_high_commission">Højkommissær</string>
<string name="poi_embassy_delegation">Delegation</string>
<string name="poi_embassy_branch_embassy">Afdeling</string>
<string name="poi_embassy_yes">Ledet af en ambassadør</string>
<string name="poi_diplomatic_liaison">Forbindelsesofficerer</string>
<string name="poi_diplomatic_embassy">Ambassade</string>
<string name="poi_radar_tower">Radartårn</string>
<string name="poi_parking_rooftop">Tagterrasse</string>
<string name="poi_gpx_point">GPX-punkt</string>
<string name="poi_diplomatic_services_citizen_services_filter">Borgerservice</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Immigrant visum</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Ikke-immigrant visum</string>
<string name="poi_liaison_filter">Forbindelsesofficerer</string>
<string name="poi_consulate_filter">Konsulat</string>
<string name="poi_embassy_filter">Ambassade</string>
</resources>

View file

@ -3488,7 +3488,7 @@
<string name="shared_string_angle_param">Vinkel: %s°</string>
<string name="shared_string_angle">Vinkel</string>
<string name="shared_string_preparing">Forbereder</string>
<string name="shared_string_poi_types">IP typer</string>
<string name="shared_string_poi_types">IP-typer</string>
<string name="shared_string_nothing_selected">Intet valgt</string>
<string name="shared_string_quick_actions">Genveje</string>
<string name="shared_string_profiles">Profiler</string>
@ -3549,9 +3549,9 @@
<string name="import_profile_dialog_description">Den importerede profil indeholder yderligere data. Klik på Importer for kun at importere profildata, eller vælg yderligere data, der skal importeres.</string>
<string name="route_recalculation_dist_descr">Ruten vil blive genberegnet, hvis afstanden til ruten er længere end angivet parameter</string>
<string name="route_recalculation_dist_title">Mindste afstand for at genberegne ruten</string>
<string name="import_duplicates_description">OsmAnd har allerede elementer med de samme navne, som dem, der importeres.
\n
\nVælg en aktion.</string>
<string name="import_duplicates_description">OsmAnd har allerede elementer med de samme navne som de importerede.
\n
\nVælg en handling.</string>
<string name="listed_exist">Det angivne %1$s findes allerede.</string>
<string name="recalc_angle_dialog_title">Mindste vinkel mellem placering og rute</string>
<string name="recalc_angle_dialog_descr">Ekstra lige segment mellem placering og den beregnede rute vises, indtil ruten genberegnes</string>
@ -3790,4 +3790,6 @@
<string name="start_finish_icons">Start-/slutikoner</string>
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
<string name="app_mode_gap">Hul</string>
<string name="export_not_enough_space">Der er ikke plads nok</string>
<string name="routing_attr_length_name">Længdegrænse</string>
</resources>

View file

@ -3853,4 +3853,34 @@
<string name="poi_parking_rooftop">Dachparkplätze</string>
<string name="poi_gpx_point">GPX-Wegpunkt</string>
<string name="poi_radar_tower">Radarturm</string>
<string name="poi_diplomatic_services_citizen_services_no">nein</string>
<string name="poi_diplomatic_services_citizen_services_yes">ja</string>
<string name="poi_diplomatic_services_immigrant_visas_no">nein</string>
<string name="poi_diplomatic_services_immigrant_visas_yes">ja</string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">nein</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes">ja</string>
<string name="poi_liaison_subnational">Subnationales Büro</string>
<string name="poi_liaison_representative_office">Repräsentanzbüro</string>
<string name="poi_liaison_liaison_office">Verbindungsbüro</string>
<string name="poi_consulate_honorary_consul">Honorarkonsul</string>
<string name="poi_consulate_consulate_general">Generalkonsulat</string>
<string name="poi_consulate_consular_office">Konsularbüro</string>
<string name="poi_consulate_consular_agency">Konsularagentur</string>
<string name="poi_consulate_yes">Geleitet von einem Konsul</string>
<string name="poi_embassy_residence">Residenz</string>
<string name="poi_embassy_nunciature">Nuntiatur</string>
<string name="poi_embassy_mission">Mission</string>
<string name="poi_embassy_interests_section">Interessenvertretung</string>
<string name="poi_embassy_high_commission">Hochkommissar</string>
<string name="poi_embassy_delegation">Delegation</string>
<string name="poi_embassy_branch_embassy">Niederlassung</string>
<string name="poi_embassy_yes">Geleitet von einem Botschafter</string>
<string name="poi_diplomatic_liaison">Verbindungsbüro</string>
<string name="poi_diplomatic_embassy">Botschaft</string>
<string name="poi_diplomatic_services_citizen_services_filter">Dienstleistungen für Bürger</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Einwanderungsvisa</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Nicht-Einwanderungsvisa</string>
<string name="poi_liaison_filter">Verbindungsbüro</string>
<string name="poi_consulate_filter">Konsulat</string>
<string name="poi_embassy_filter">Botschaft</string>
</resources>

View file

@ -3928,13 +3928,13 @@
<string name="complex_routing_descr">Zwei-Phasen-Routenberechnung für die Autonavigation.</string>
<string name="use_native_pt">Native ÖPNV Entwicklung</string>
<string name="use_native_pt_desc">Wechseln zu Java (sicher) Berechnung des ÖPNV-Routings</string>
<string name="osm_edit_logout_success">Abmeldung erfolgreich</string>
<string name="osm_edit_logout_success">Abgemeldet</string>
<string name="file_already_imported">Datei wurde bereits in OsmAnd importiert</string>
<string name="perform_oauth_authorization">Anmelden über OAuth</string>
<string name="clear_osm_token">OpenStreetMap OAuth-Token löschen</string>
<string name="what_is_new">Was ist neu</string>
<string name="snowmobile_render_descr">Für das Schneemobilfahren mit speziellen Straßen und Tracks.</string>
<string name="perform_oauth_authorization_description">Durchführen eines OAuth-Logins zur Nutzung der osmedit-Funktionen</string>
<string name="perform_oauth_authorization_description">Anmelden mit OAuth zur Nutzung der osmedit-Funktionen</string>
<string name="use_two_phase_routing">2-Phasen-A*-Routing-Algorithmus verwenden</string>
<string name="message_need_calculate_route_before_show_graph">%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.</string>
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
@ -3957,15 +3957,15 @@
<string name="subscription_expired_title">OsmAnd Live Abonnement ist abgelaufen</string>
<string name="subscription_paused_title">OsmAnd Live Abonnement wurde ausgesetzt</string>
<string name="subscription_on_hold_title">OsmAnd Live Abonnement liegt auf Eis</string>
<string name="login_open_street_map">Anmeldung bei OpenStreetMap</string>
<string name="login_open_street_map_org">Anmeldung bei OpenStreetMap.org</string>
<string name="login_open_street_map">Anmeldung für OpenStreetMap</string>
<string name="login_open_street_map_org">Anmeldung für OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Anmelden mit OpenStreetMap</string>
<string name="open_street_map_login_mode">Sie müssen sich anmelden, um Änderungen hochzuladen.
<string name="open_street_map_login_mode">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.</string>
<string name="use_login_password">Benutzername und Passwort verwenden</string>
\nentweder mit OAuth oder mit Ihrem Benutzernamen und Passwort.</string>
<string name="use_login_password">Anmelden mit Benutzername und Passwort</string>
<string name="login_account">Konto</string>
<string name="user_login">Login</string>
<string name="user_login">Benutzername</string>
<string name="markers_history">Historie der Marker</string>
<string name="send_files_to_openstreetmap">GPX-Datei an OpenStreetMap senden</string>
<string name="enter_text_separated">Geben Sie durch Komma getrennte Tags ein.</string>
@ -3975,14 +3975,26 @@
<string name="gpx_upload_trackable_visibility_descr">\"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.</string>
<string name="osm_edit_close_note">OSM Notiz schließen</string>
<string name="osm_edit_comment_note">OSM Notiz kommentieren</string>
<string name="osm_login_descr">Sie können sich mit der sicheren OAuth-Methode anmelden oder Ihren Benutzernamen und Passwort verwenden.</string>
<string name="osm_login_descr">Melden Sie sich mit der sicheren OAuth-Methode an oder verwenden Sie Ihren Benutzernamen und Ihr Passwort.</string>
<string name="shared_string_add_photo">Foto hinzufügen</string>
<string name="register_on_openplacereviews">Registrieren bei
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">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.</string>
<string name="register_on_openplacereviews_desc">Melden Sie sich auf der Open Data Website OpenPlaceReviews.org an, um noch mehr Fotos hochzuladen.</string>
<string name="register_opr_create_new_account">Neues Konto erstellen</string>
<string name="register_opr_have_account">Ich habe bereits ein Konto</string>
<string name="shared_string_search_history">Suchverlauf</string>
<string name="app_mode_kayak">Kajak</string>
<string name="app_mode_motorboat">Motorboot</string>
<string name="add_to_mapillary">Zu Mapillary hinzufügen</string>
<string name="add_to_opr">Zu OpenPlaceReviews hinzufügen</string>
<string name="add_photos_descr">OsmAnd zeigt Fotos aus verschiedenen Quellen:
\nOpenPlaceReviews - POI Fotos;
\nMapillary - Bilder auf Straßenebene;
\nWeb / Wikimedia - POI Fotos, die in OpenStreetMap Daten angegeben sind.</string>
<string name="shared_string_resources">Quellen</string>
<string name="approximate_file_size">Ungefähre Dateigröße</string>
<string name="select_data_to_export">Wählen Sie die Daten aus, die in die Datei exportiert werden sollen.</string>
<string name="file_size_needed_for_import">Benötigt für Import</string>
<string name="export_not_enough_space_descr">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.</string>
<string name="export_not_enough_space">Es gibt nicht genug Speicherplatz</string>
</resources>

View file

@ -3264,7 +3264,7 @@
<string name="voice_announces_info">Οι φωνητικές ανακοινώσεις να γίνονται μόνο κατά την πλοήγηση.</string>
<string name="voice_announces_descr">Οδηγίες πλοήγησης και ανακοινώσεις</string>
<string name="voice_announces">Φωνητικές ανακοινώσεις</string>
<string name="screen_alerts">Οπτικές προειδοποιήσεις</string>
<string name="screen_alerts">Προειδοποιήσεις οθόνης</string>
<string name="route_parameters_descr">Ρύθμιση παραμέτρων διαδρομής</string>
<string name="route_parameters">Παράμετροι διαδρομής</string>
<string name="default_speed_dialog_msg">Εκτιμά τον χρόνο άφιξης αγνώστων τύπων δρόμων και περιορίζει την ταχύτητα σε όλους τους δρόμους (μπορεί να επηρεάσει τη διαδρομή)</string>

View file

@ -3843,4 +3843,34 @@
<string name="poi_parking_rooftop">tegmento</string>
<string name="poi_gpx_point">GPX-punkto</string>
<string name="poi_radar_tower">Radar-turo</string>
<string name="poi_liaison_liaison_office">oficejo</string>
<string name="poi_consulate_honorary_consul">honora konsulo</string>
<string name="poi_consulate_consulate_general">ĝenerala konsulejo</string>
<string name="poi_consulate_consular_office">konsula oficejo</string>
<string name="poi_consulate_consular_agency">konsula agentejo</string>
<string name="poi_consulate_yes">gvidata de konsulo</string>
<string name="poi_embassy_residence">rezidejo</string>
<string name="poi_embassy_nunciature">nunciejo</string>
<string name="poi_embassy_mission">misio</string>
<string name="poi_embassy_interests_section">sekcio de interesoj</string>
<string name="poi_embassy_high_commission">alta komisario</string>
<string name="poi_embassy_delegation">delegitaro</string>
<string name="poi_embassy_branch_embassy">branĉo</string>
<string name="poi_embassy_yes">gvidata de ambasadestro</string>
<string name="poi_diplomatic_liaison">kvazaŭ-ambasadejo</string>
<string name="poi_diplomatic_embassy">ambaadejo</string>
<string name="poi_diplomatic_services_citizen_services_filter">Servoj por ŝtatanoj</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Vizoj enmigraj</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Vizoj neenmigraj</string>
<string name="poi_liaison_filter">Kvazaŭambasadejo</string>
<string name="poi_consulate_filter">Konsulejo</string>
<string name="poi_embassy_filter">Ambasadejo</string>
<string name="poi_diplomatic_services_citizen_services_no">ne</string>
<string name="poi_diplomatic_services_citizen_services_yes">jes</string>
<string name="poi_diplomatic_services_immigrant_visas_no">ne</string>
<string name="poi_diplomatic_services_immigrant_visas_yes">jes</string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">ne</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes">jes</string>
<string name="poi_liaison_subnational">subŝtata/provinca oficejo</string>
<string name="poi_liaison_representative_office">reprezenta oficejo</string>
</resources>

View file

@ -415,7 +415,7 @@
<string name="open_street_map_login_and_pass">Uzantnomo kaj pasvorto al OSM</string>
<string name="application_dir">Datum-konservada dosierujo</string>
<string name="filter_poi_hint">Filtri laŭ nomo</string>
<string name="search_poi_category_hint">Entajpu ion por serĉi</string>
<string name="search_poi_category_hint">Enigu ion por serĉi</string>
<string name="agps_info">A-GPS informoj</string>
<string name="rendering_attr_OSMMapperAssistant_name">Etikedoj “riparu min!”</string>
<string name="shared_string_manage">Administri</string>
@ -749,9 +749,9 @@
<string name="index_item_world_altitude_correction">Korekto de altitudo</string>
<string name="index_item_world_seamarks">Tutmondaj maraj navigadpunktoj</string>
<string name="access_category_choice">Elektu kategorion</string>
<string name="access_hint_enter_name">Entajpu nomon</string>
<string name="access_hint_enter_category">Entajpu kategorion</string>
<string name="access_hint_enter_description">Entajpu priskribon.</string>
<string name="access_hint_enter_name">Enigu nomon</string>
<string name="access_hint_enter_category">Enigu kategorion</string>
<string name="access_hint_enter_description">Enigu priskribon.</string>
<string name="access_default_color">Norma koloro</string>
<string name="map_widget_magnetic_bearing">Magneta direkto</string>
<string name="map_widget_bearing">Relativa direkto</string>
@ -1596,7 +1596,7 @@
<string name="renderers_descr">Elekti manieron de bildigado de vektora mapo</string>
<string name="poi_context_menu_website">Montri retpaĝon de interesejo</string>
<string name="poi_context_menu_call">Montri telefonon de interesejo</string>
<string name="download_type_to_filter">entajpu tekston por filtri</string>
<string name="download_type_to_filter">enigu tekston por filtri</string>
<string name="use_high_res_maps">Alta ekrandistingivo</string>
<string name="use_high_res_maps_descr">Ne etendi (kaj malklarigi) mapkahelojn ĉe altdistingivaj ekranoj.</string>
<string name="context_menu_item_search_transport">Serĉi transporton publikan</string>
@ -1651,7 +1651,7 @@
<string name="error_occurred_loading_gpx">Ne povas ŝargi GPX.</string>
<string name="send_report">Sendi raporton</string>
<string name="none_region_found">Ne povas trovi iujn elŝutitajn mapojn en la SD-karto.</string>
<string name="poi_namefinder_query_empty">Entajpu serĉatan interesejon</string>
<string name="poi_namefinder_query_empty">Enigu serĉatan interesejon</string>
<string name="any_poi">Ia</string>
<string name="thanks_yandex_traffic">Dankon al Yandex pro informoj pri trafiko.</string>
<string name="layer_yandex_traffic">Yandex - informoj pri trafiko</string>
@ -1805,7 +1805,7 @@
<string name="navigate_point_format_DMS">GGG:MM:SS.S</string>
<string name="search_address_top_text">Adreso</string>
<string name="context_menu_item_create_poi">Krei interesejon</string>
<string name="add_favorite_dialog_top_text">Entajpu nomon de ŝatata ejo</string>
<string name="add_favorite_dialog_top_text">Enigu nomon de ŝatata ejo</string>
<string name="add_favorite_dialog_default_favourite_name">Ŝatataj</string>
<string name="add_favorite_dialog_favourite_added_template">Aldonis ŝatatan punkton “{0}”.</string>
<string name="favourites_context_menu_add">Aldoni al ŝatataj</string>
@ -1905,7 +1905,7 @@
<string name="free_downloads_used">Senpagaj elŝutoj uzitaj</string>
<string name="free_downloads_used_description">Montras nombron da pluaj senpagaj elŝutoj.</string>
<string name="application_dir_description">Bonvolu elekti kie vi volas konservi mapoj kaj aliaj datum-dosieroj.</string>
<string name="enter_country_name">Entajpu nomon de lando</string>
<string name="enter_country_name">Enigu nomon de lando</string>
<string name="new_version">Nova versio</string>
<string name="begin_with_osmand_menu_group">Unuaj paŝoj kun OsmAnd</string>
<string name="features_menu_group">Ebloj</string>
@ -1947,7 +1947,7 @@
<string name="number_of_contributors">Nombro da kontribuintoj</string>
<string name="number_of_edits">Nombro da redaktoj</string>
<string name="reports_for">Raportoj por</string>
<string name="file_name_containes_illegal_char">Dosiernomo enhavas malpermesitan signon</string>
<string name="file_name_containes_illegal_char">Malpermesata signo en dosiernomo</string>
<string name="items_were_selected">{0} elemento(j) elektita(j)</string>
<string name="coords_format">Koordinat-formo</string>
<string name="coords_format_descr">Formo de geografiaj koordinatoj.</string>
@ -2038,7 +2038,7 @@
<string name="subcategories">Subkategorioj</string>
<string name="translit_names">Transliterumi nomojn</string>
<string name="translit_name_if_miss">Transliterumi, se nomo en %1$s mankas</string>
<string name="search_hint">Entajpu urbon, adreson aŭ nomon de interesejo</string>
<string name="search_hint">Enigu urbon, adreson aŭ nomon de interesejo</string>
<string name="rendering_value_light_brown_name">Bronzkolora hela</string>
<string name="rendering_value_dark_brown_name">Bronzkolora malhela</string>
<string name="rendering_attr_contourColorScheme_name">Kolor-skemo de nivelkurboj</string>
@ -2366,12 +2366,12 @@
<string name="quick_action_auto_zoom_on">Aktivigi aŭtomatan map-skaladon</string>
<string name="quick_action_auto_zoom_off">Malaktivigi aŭtomatan map-skaladon</string>
<string name="shared_string_paused">Paŭzigita</string>
<string name="type_city_town">Entajpu urbon aŭ lokon</string>
<string name="type_postcode">Entajpu poŝtkodon</string>
<string name="type_city_town">Enigu urbon aŭ lokon</string>
<string name="type_postcode">Enigu poŝtkodon</string>
<string name="nearest_cities">Proksimaj urboj</string>
<string name="select_city">Elekti urbon</string>
<string name="select_postcode">Serĉi poŝtkodon</string>
<string name="type_address">Entajpu adreson</string>
<string name="type_address">Enigu adreson</string>
<string name="select_street">Elekti straton</string>
<string name="shared_string_in_name">en %1$s</string>
<string name="shared_string_overview">Sumigo</string>
@ -2415,7 +2415,7 @@
<string name="no_photos_descr">Neniuj fotoj tie ĉi.</string>
<string name="shared_string_install">Instali</string>
<string name="improve_coverage_mapillary">Pliigi fotan atingon de Mapillary</string>
<string name="improve_coverage_install_mapillary_desc">Instalu Mapillary por aldoni fotojn al tiu ĉi loko sur la mapo.</string>
<string name="improve_coverage_install_mapillary_desc">Instalu la aplikaĵon Mapillary por aldoni fotojn al tiu ĉi loko sur la mapo.</string>
<string name="open_mapillary">Malfermi Mapillary</string>
<string name="mapillary_image">Mapillary-foto</string>
<string name="distance_moving">Korektita distanco</string>
@ -2430,7 +2430,7 @@
<string name="mapillary_menu_date_from">de</string>
<string name="mapillary_menu_descr_dates">Montri bildojn aldonitajn nur</string>
<string name="mapillary_menu_title_dates">Dato</string>
<string name="mapillary_menu_edit_text_hint">Entajpu uzantnomon</string>
<string name="mapillary_menu_edit_text_hint">Enigu uzantnomon</string>
<string name="mapillary_menu_descr_username">Montri nur bildojn aldonitajn de</string>
<string name="mapillary_menu_title_username">Uzantnomo</string>
<string name="mapillary_menu_filter_description">Filtri bildojn laŭ alŝutinto, laŭ dato aŭ laŭ tipo; aktivaj nur je pligrandigo.</string>
@ -2456,7 +2456,7 @@
<string name="retry">Reprovi</string>
<string name="measurement_tool_action_bar">Esploru mapon kaj aldonu punktojn</string>
<string name="none_point_error">Bonvolu aldoni almenaŭ unu punkton.</string>
<string name="enter_gpx_name">GPX-dosiera nomo:</string>
<string name="enter_gpx_name">Dosiernomo de GPX:</string>
<string name="show_on_map_after_saving">Montri sur mapo post konservi</string>
<string name="add_waypoint">Aldoni navigadpunkton</string>
<string name="save_gpx_waypoint">Konservi GPXnavigadpunkton</string>
@ -2541,7 +2541,7 @@
<string name="plan_route_no_markers_toast">Vi devas aldoni almenaŭ unu markon por uzi tiun ĉi eblon.</string>
<string name="wrong_format">Malĝusta formo</string>
<string name="wrong_input">Malĝusta enigo</string>
<string name="enter_new_name">Entajpu novan nomon</string>
<string name="enter_new_name">Enigu novan nomon</string>
<string name="shared_string_back">Reen</string>
<string name="shared_string_view">Montri</string>
<string name="waypoints_added_to_map_markers">Aldonis intercelojn al mapmarkoj</string>
@ -2634,7 +2634,7 @@
<string name="copy_location_name">Kopii nomon de punkto</string>
<string name="toast_empty_name_error">Sennoma ejo</string>
<string name="show_closed_notes">Montri fermitajn rimarkojn</string>
<string name="switch_osm_notes_visibility_desc">Montri/kaŝi OSMrimarkojn sur la mapo.</string>
<string name="switch_osm_notes_visibility_desc">Montrikaŝi OSMrimarkojn sur la mapo.</string>
<string name="gpx_file_desc">GPX - taŭga por elporti al JOSM aŭ aliaj OSM-redaktiloj.</string>
<string name="osc_file_desc">OSC - taŭga por elporti al OSM.</string>
<string name="shared_string_gpx_file">GPX-dosiero</string>
@ -2652,8 +2652,8 @@
<string name="make_as_start_point">Agordi kiel komencpunkton</string>
<string name="map_import_error">Eraro dum enporti mapon</string>
<string name="map_imported_successfully">Enportis mapon</string>
<string name="enter_the_file_name">Entajpu dosiernomon.</string>
<string name="enter_lon">Entajpu longitudon</string>
<string name="enter_the_file_name">Enigu dosiernomon.</string>
<string name="enter_lon">Enigu longitudon</string>
<string name="enter_lat">Entajpu latitudon</string>
<string name="enter_lat_and_lon">Entajpu latitudon kaj longitudon</string>
<string name="dd_mm_ss_format">GG°MMSS″</string>
@ -2772,7 +2772,7 @@
<string name="coord_input_edit_point">Redakti punkton</string>
<string name="coord_input_add_point">Aldoni punkton</string>
<string name="coord_input_save_as_track">Konservi kiel spuron</string>
<string name="coord_input_save_as_track_descr">Vi aldonis %1$s punktojn. Entajpu dosiernomon kaj frapetu “konservi”.</string>
<string name="coord_input_save_as_track_descr">Vi aldonis %1$s punktojn. Enigu dosiernomon kaj frapetu “konservi”.</string>
<string name="point_deleted">Forigis la punkton %1$s</string>
<string name="shared_string_world">Mondo</string>
<string name="send_search_query_description">Ni sendos vian serĉ-peton: “%1$s” kun via pozicio.
@ -3050,7 +3050,7 @@
<string name="profile_type_base_string">Ĉefa profilo</string>
<string name="profile_alert_need_routing_type_title">Elektu specon de navigado</string>
<string name="profile_alert_need_routing_type_msg">Bonvolu elekti specon de navigo por la nova aplikaĵa profilo</string>
<string name="profile_alert_need_profile_name_title">Entajpu nomon por profilo</string>
<string name="profile_alert_need_profile_name_title">Enigu nomon por profilo</string>
<string name="profile_alert_need_profile_name_msg">Unue devas enigi nomon por profilo.</string>
<string name="profile_alert_duplicate_name_title">Nomo neebla</string>
<string name="profile_alert_duplicate_name_msg">Jam ekzistas profilo kun la sama nomo</string>
@ -3080,9 +3080,9 @@
<string name="zoom_by_wunderlinq_descr">Rulumu supren/malsupren por ŝanĝi pligrandigon de mapo. Eskap-klavo revenas al al aplikaĵo WunderLINQ App.</string>
<string name="zoom_by_wunderlinq">Stiri per WunderLINQ</string>
<string name="quick_action_need_to_add_item_to_list">Aldonu almenaŭ unu elementon al la listo en agordoj de “rapida ago”</string>
<string name="routing_attr_piste_type_downhill_name">Skiado alpa/malsuprenira</string>
<string name="routing_attr_piste_type_downhill_name">Skiado alpa kaj malsuprenira</string>
<string name="routing_attr_piste_type_downhill_description">Skivojoj por skiado alpa (malsuprenira) kaj vojetoj al skitelferoj.</string>
<string name="routing_attr_piste_type_nordic_name">Skiado nordia/skikurada</string>
<string name="routing_attr_piste_type_nordic_name">Skiado nordia kaj skikurada</string>
<string name="routing_attr_piste_type_nordic_description">Skivojoj por skiado nordia (skikurada).</string>
<string name="routing_attr_piste_type_skitour_name">Skiado ekskursa</string>
<string name="routing_attr_piste_type_skitour_description">Skivojoj ekskursaj.</string>
@ -3261,7 +3261,7 @@
<string name="download_detailed_map">Elŝutu la detalan mapon %s, por vidi tiun ĉi areon.</string>
<string name="change_data_storage_full_description">Ĉu movi datumdosierojn OsmAnd al la nova loko\?
\n%1$s → %2$s</string>
<string name="enter_path_to_folder">Entajpu dosierindikon</string>
<string name="enter_path_to_folder">Enigu dosierindikon</string>
<string name="shared_string_select_folder">Dosierujo…</string>
<string name="paste_Osmand_data_folder_path">Algluu dosierindikon por dosierujo de OsmAnddatumoj</string>
<string name="change_osmand_data_folder_question">Ĉu ŝanĝi datumdosierujon OsmAnd\?</string>
@ -3362,7 +3362,7 @@
<string name="swap_start_and_destination">Anstataŭigi komencpunkton per celo</string>
<string name="simulate_your_location_gpx_descr">Simuli vian pozicion uzante registritan GPXkurson.</string>
<string name="track_saved">Konservis kurson</string>
<string name="empty_filename">Dosiernomo estas malplena</string>
<string name="empty_filename">Malplena dosiernomo</string>
<string name="shared_string_revert">Malfari</string>
<string name="quick_action_directions_from_desc">Butono por agordi la ekranan centron kiel komencpunkton. Sekve vi estos petita por agordi finpunkton aŭ ekos kalkulado de kurso.</string>
<string name="rendering_attr_showCycleNodeNetworkRoutes_name">Montri reton de nodoj de biciklaj kursoj</string>
@ -3572,7 +3572,7 @@
<string name="shared_string_legend">Mapklarigo</string>
<string name="shared_string_hillshade">Nivelombrumo</string>
<string name="n_items_of_z">%1$s el %2$s</string>
<string name="quick_action_show_hide_terrain">Montri/kaŝi terenformon</string>
<string name="quick_action_show_hide_terrain">Montrikaŝi terenformon</string>
<string name="quick_action_terrain_hide">Kaŝi terenformon</string>
<string name="quick_action_terrain_show">Montri terenformon</string>
<string name="quick_action_terrain_descr">Butono por montri/kaŝi tavolon de formo de tereno sur la mapo.</string>
@ -3690,10 +3690,10 @@
<string name="additional_actions_descr">Vi povas ekigi tiujn agojn per frapeti la butonon “%1$s”.</string>
<string name="quick_action_transport_hide">Kaŝi publikan transporton</string>
<string name="quick_action_transport_show">Montri publikan transporton</string>
<string name="quick_action_show_hide_transport">Montri/kaŝi publikan transporton</string>
<string name="quick_action_show_hide_transport">Montrikaŝi publikan transporton</string>
<string name="quick_action_transport_descr">Butono por montri/kaŝi publikan transporton sur la mapo.</string>
<string name="create_edit_poi">Krei/redakti interesejon</string>
<string name="add_edit_favorite">Aldoni/forigi ŝatatan ejojn</string>
<string name="create_edit_poi">Kreiredakti interesejon</string>
<string name="add_edit_favorite">Aldoniforigi ŝatatan ejojn</string>
<string name="parking_positions">Pozicioj de parkumado</string>
<string name="reset_deafult_order">Restarigi implicitan ordigon de elementoj</string>
<string name="back_to_editing">Reen al redaktado</string>
@ -3876,7 +3876,7 @@
<string name="shared_string_redo">Refari</string>
<string name="release_3_8">• plibonigoj al “plani kurson”: eblo uzi diversajn specojn de navigo por ĉiu segmento aparte kaj ampleksi spurojn
\n
\n• nova menuo de aspekto por spuroj: eblo elekti koloron kaj dikecon, montri sagetojn de direkto kaj vidigi markojn de komenco/fino de la spuro
\n• nova menuo de aspekto por spuroj: eblo elekti koloron kaj dikecon, montri sagetojn de direkto kaj vidigi markojn de komenco kaj fino de la spuro
\n
\n• plibonigita videblo de biciklaj nodoj
\n
@ -3890,7 +3890,7 @@
\n
\n</string>
<string name="monitoring_control_start">Registri</string>
<string name="save_global_track_interval_descr">Elektu la intervalon de registrado por la ĝenerala registrado de spuro (aktivigata per la fenestraĵo “registri spuron” sur la mapo).</string>
<string name="save_global_track_interval_descr">Elektu la intervalon de registrado por la ĝenerala registrado de spuro (aktivigebla per la fenestraĵo “registri spuron” sur la mapo).</string>
<string name="simplified_track">Simpligita spuro</string>
<string name="simplified_track_description">Nur la linio de kurso estos konservita, la navigadpunktoj estos forigitaj.</string>
<string name="shared_string_file_name">Dosiernomo</string>
@ -3909,7 +3909,7 @@
\n La abono aŭtomate renoviĝos escepte se ĝi estos nuligita antaŭ la dato de renoviĝo. La pago estos prenita por la renoviĝa periodo (monato/tri monatoj/jaro) nur je la dato de renoviĝo.
\n
\n Vi povas administri kaj rezigni viajn abonojn per la agordoj de AppGallery.</string>
<string name="start_finish_icons">Emblemoj komenco/fino</string>
<string name="start_finish_icons">Emblemoj de komenco kaj fino</string>
<string name="contour_lines_thanks">Dankon al vi por aĉeti la kromprogramon “nivelkurboj”</string>
<string name="osm_live_payment_desc_hw">Abonpago prenita por la elektita periodo. VI ĉiam povas rezigni abonon ĉe AppGallery.</string>
<string name="routing_attr_avoid_footways_description">Eviti irejojn</string>
@ -3921,10 +3921,10 @@
<string name="complex_routing_descr">Du-faza difinado de kurso por aŭtomobila navigo.</string>
<string name="use_native_pt">Indiĝena metodo de publik-transporta navigo</string>
<string name="use_native_pt_desc">Aktivigi (sekuran) metodon por kalkuli kursojn de publika transporto uzante programlingvon Java</string>
<string name="perform_oauth_authorization_description">Ensaluti uzante OAuth por redakti la mapon OSM</string>
<string name="perform_oauth_authorization_description">Ensaluti per OAuth por redakti la mapon OSM</string>
<string name="perform_oauth_authorization">Ensaluti per OAuth</string>
<string name="clear_osm_token">Forigi ĵetonon OpenStreetMap OAuth</string>
<string name="osm_edit_logout_success">Sukcese elsalutinta</string>
<string name="osm_edit_logout_success">Elsalutinta</string>
<string name="snowmobile_render_descr">Por veturi per motorsledo sur dediĉitaj vojoj.</string>
<string name="file_already_imported">Dosiero jam estas enportita al OsmAnd</string>
<string name="use_two_phase_routing">Uzi 2-fazan A* algoritmon de navigo</string>
@ -3955,29 +3955,41 @@
<string name="login_open_street_map">Ensaluti al OpenStreetMap</string>
<string name="login_open_street_map_org">Ensaluti al OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Ensaluti per OpenStreetMap</string>
<string name="open_street_map_login_mode">Vi devas ensaluti por alŝuti novajn aŭ modifitajn ŝanĝojn.
<string name="open_street_map_login_mode">Ensalutu por alŝuti novajn aŭ modifitajn ŝanĝojn
\n
\nVi povas ensaluti per la sekura metodo OAuth aŭ per enigi uzantnomon kaj pasvorton.</string>
<string name="use_login_password">Uzi uzantnomon kaj pasvorton</string>
\n per la sekura metodo OAuth aŭ per enigi uzantnomon kaj pasvorton.</string>
<string name="use_login_password">Ensaluti per uzantnomo kaj pasvorto</string>
<string name="login_account">Konto</string>
<string name="user_login">Uzantnomo</string>
<string name="markers_history">Historio de markoj</string>
<string name="send_files_to_openstreetmap">Sendi GPXdosieron al OpenStreetMap</string>
<string name="enter_text_separated">Enigu etikedojn disigitajn per komo (,).</string>
<string name="gpx_upload_public_visibility_descr">“Publika” signifas, ke la GPXspuro estos publika videbla en “miaj spuroj” kaj en la publika listo de spuro (GPSspuroj). 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.</string>
<string name="gpx_upload_private_visibility_descr">“Privata” signifas, ke la GPXspuro 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.</string>
<string name="gpx_upload_public_visibility_descr">“Publika” signifas, ke la GPXspuro estos publike videbla en “miaj spuroj” kaj en la publika listo de spuroj (GPSspuroj) kun tempindikoj kaj en nepritraktita formo. Datumoj liverataj per la API ne ligos al paĝo de via spuro. Tempindikoj de spurpunkto ne estos akireblaj per la publika API GPS, kaj spurpunktoj ne estos laŭtempe ordigitaj.</string>
<string name="gpx_upload_private_visibility_descr">“Privata” signifas, ke la GPXspuro montriĝos en neniu publika listo, sed ĝiaj punktoj neordigitaj laŭtempe estos akireblaj per la publika API GPS sen tempindikoj.</string>
<string name="gpx_upload_identifiable_visibility_descr">“Identigebla” signifas, ke la GPXspuro estos publike videbla en “miaj spuroj” kaj en la publika listo de spuroj (GPSspuroj), 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 spurpunktoj indikos al originala paĝo de via spuro.</string>
<string name="gpx_upload_trackable_visibility_descr">“Spurebla” signifas, ke la GPXspuro 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.</string>
<string name="osm_edit_close_note">Fermi OSM-rimarkon</string>
<string name="osm_edit_comment_note">Komenti OSM-rimarkon</string>
<string name="osm_login_descr">Vi povas ensaluti per la sekura metodo OAuth aŭ per uzi uzantnomon kaj pasvorton.</string>
<string name="osm_login_descr">Ensalutii per la sekura metodo OAuth aŭ per uzi uzantnomon kaj pasvorton.</string>
<string name="shared_string_add_photo">Aldoni foton</string>
<string name="register_on_openplacereviews">Registri ĉe
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">Fotoj estas liverataj de la malfermdatuma projekto OpenPlaceReviews.org. Por alŝuti viajn fotojn, vi devas registri ĉe la retejo.</string>
<string name="register_on_openplacereviews_desc">Ensaluti en la paĝon de la malfermdatuma projekto OpenPlaceReviews.org por alŝuti fotojn.</string>
<string name="register_opr_create_new_account">Krei novan konton</string>
<string name="register_opr_have_account">Mi jam havas konton</string>
<string name="shared_string_search_history">Serĉi en historio</string>
<string name="app_mode_kayak">Kajako</string>
<string name="app_mode_motorboat">Motorboato</string>
<string name="add_photos_descr">OsmAnd montras fotojn el diversaj fontoj:
\nOpenPlaceReviews fotoj de interesejoj;
\nMapillary stratnivela fotaro;
\ninterreto, Vikimedio fotoj de interesejoj difinitaj en OpenStreetMap-datumoj.</string>
<string name="shared_string_resources">Rimedoj</string>
<string name="approximate_file_size">Proksimuma dosiergrando</string>
<string name="select_data_to_export">Elektu datumojn por elporti al dosiero.</string>
<string name="file_size_needed_for_import">Necesa por enporti</string>
<string name="export_not_enough_space_descr">En via aparato estas nur %1$s da libera spaco. Liberigu iom da spaco aŭ malelektu iujn elementojn de elporto.</string>
<string name="export_not_enough_space">Mankas spaco</string>
<string name="add_to_mapillary">Aldoni al Mapillary</string>
<string name="add_to_opr">Aldoni al OpenPlaceReviews</string>
</resources>

View file

@ -3857,4 +3857,34 @@
<string name="poi_parking_rooftop">Azotea</string>
<string name="poi_gpx_point">Punto GPX</string>
<string name="poi_radar_tower">Torre de radar</string>
<string name="poi_diplomatic_services_citizen_services_no">No</string>
<string name="poi_diplomatic_services_citizen_services_yes"></string>
<string name="poi_diplomatic_services_immigrant_visas_no">No</string>
<string name="poi_diplomatic_services_immigrant_visas_yes"></string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">No</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes"></string>
<string name="poi_liaison_subnational">Subnacional</string>
<string name="poi_liaison_representative_office">Oficina representativa</string>
<string name="poi_liaison_liaison_office">Oficina</string>
<string name="poi_consulate_honorary_consul">Cónsul honorario</string>
<string name="poi_consulate_consulate_general">Consulado general</string>
<string name="poi_consulate_consular_office">Oficina consular</string>
<string name="poi_consulate_consular_agency">Agencia consular</string>
<string name="poi_consulate_yes">Dirigido por un cónsul</string>
<string name="poi_embassy_residence">Residencia</string>
<string name="poi_embassy_nunciature">Nunciatura</string>
<string name="poi_embassy_mission">Misión</string>
<string name="poi_embassy_interests_section">Sección de intereses</string>
<string name="poi_embassy_high_commission">Alto comisionado</string>
<string name="poi_embassy_delegation">Delegación</string>
<string name="poi_embassy_branch_embassy">Sucursal;Ramal</string>
<string name="poi_embassy_yes">Dirigido por un embajador</string>
<string name="poi_diplomatic_liaison">Enlace</string>
<string name="poi_diplomatic_embassy">Embajada</string>
<string name="poi_diplomatic_services_citizen_services_filter">Servicios al ciudadano</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Visas de inmigrante</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Visas de no inmigrante</string>
<string name="poi_liaison_filter">Enlace</string>
<string name="poi_consulate_filter">Consulado</string>
<string name="poi_embassy_filter">Embajada</string>
</resources>

View file

@ -3927,7 +3927,7 @@
<string name="use_native_pt">Desarrollo nativo del transporte público</string>
<string name="use_native_pt_desc">Cambiar al cálculo de ruta Java (seguro) del transporte público</string>
<string name="what_is_new">Novedades</string>
<string name="perform_oauth_authorization_description">Inicia sesión con OAuth para usar las funciones de edición de OSM</string>
<string name="perform_oauth_authorization_description">Ingresar con OAuth para usar las funciones de edición de OSM</string>
<string name="perform_oauth_authorization">Ingresar a través de OAuth</string>
<string name="clear_osm_token">Vaciar llave OAuth de OpenStreetMap</string>
<string name="osm_edit_logout_success">Sesión finalizada</string>
@ -3958,13 +3958,13 @@
<string name="subscription_paused_title">La suscripción a OsmAnd Live se ha pausado</string>
<string name="subscription_on_hold_title">La suscripción a OsmAnd Live está en espera</string>
<string name="login_open_street_map">Iniciar sesión en OpenStreetMap</string>
<string name="login_open_street_map_org">Ingresar a OpenStreetMap.org</string>
<string name="open_street_map_login_mode">Debes iniciar sesión para subir cambios nuevos o modificados.
<string name="login_open_street_map_org">Ingresar en OpenStreetMap.org</string>
<string name="open_street_map_login_mode">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.</string>
<string name="use_login_password">Usar nombre de usuario y contraseña</string>
\nya sea con OAuth o usando el nombre de usuario y contraseña.</string>
<string name="use_login_password">Ingresar nombre de usuario y contraseña</string>
<string name="login_account">Cuenta</string>
<string name="user_login">Iniciar sesión</string>
<string name="user_login">Nombre de usuario</string>
<string name="sign_in_with_open_street_map">Ingresar con OpenStreetMap</string>
<string name="markers_history">Historial de marcadores</string>
<string name="send_files_to_openstreetmap">Enviar archivo GPX a OpenStreetMap</string>
@ -3975,14 +3975,26 @@
<string name="gpx_upload_identifiable_visibility_descr">«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.</string>
<string name="osm_edit_close_note">Cerrar nota de OSM</string>
<string name="osm_edit_comment_note">Comentar nota de OSM</string>
<string name="osm_login_descr">Puedes iniciar sesión con el método seguro de OAuth o usar el nombre de usuario y contraseña.</string>
<string name="osm_login_descr">Ingresa usando el método seguro de OAuth o usa el nombre de usuario y contraseña.</string>
<string name="shared_string_add_photo">Añadir foto</string>
<string name="register_on_openplacereviews">Registrarse en
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">Las fotos son provistas por el proyecto de datos abiertos OpenPlaceReviews.org. Para subir fotos debes registrarte en el sitio web.</string>
<string name="register_on_openplacereviews_desc">Ingresa en el sitio web del proyecto de datos abiertos OpenPlaceReviews.org para subir más fotos.</string>
<string name="register_opr_create_new_account">Crear nueva cuenta</string>
<string name="register_opr_have_account">Ya tengo cuenta</string>
<string name="shared_string_search_history">Historial de búsqueda</string>
<string name="app_mode_kayak">Kayak</string>
<string name="app_mode_motorboat">Lancha a motor</string>
<string name="shared_string_resources">Recursos</string>
<string name="approximate_file_size">Tamaño aproximado del archivo</string>
<string name="select_data_to_export">Marca los datos que serán exportados al archivo.</string>
<string name="file_size_needed_for_import">Necesario para importar</string>
<string name="export_not_enough_space_descr">El dispositivo sólo tiene %1$s libre. Por favor, libera algo de espacio o desmarca algunos elementos a exportar.</string>
<string name="export_not_enough_space">Sin espacio suficiente</string>
<string name="add_to_mapillary">Añadir a Mapillary</string>
<string name="add_to_opr">Añadir a OpenPlaceReviews</string>
<string name="add_photos_descr">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).</string>
</resources>

View file

@ -3857,4 +3857,34 @@
<string name="poi_parking_rooftop">Azotea</string>
<string name="poi_parking_layby">Apartadero</string>
<string name="poi_gpx_point">Punto GPX</string>
<string name="poi_liaison_subnational">Subnacional</string>
<string name="poi_liaison_representative_office">Oficina representativa</string>
<string name="poi_liaison_liaison_office">Oficina</string>
<string name="poi_liaison_filter">Enlace</string>
<string name="poi_embassy_yes">Dirigido por un embajador</string>
<string name="poi_embassy_residence">Residencia</string>
<string name="poi_embassy_nunciature">Nunciatura</string>
<string name="poi_embassy_mission">Misión</string>
<string name="poi_embassy_interests_section">Sección de intereses</string>
<string name="poi_embassy_high_commission">Alto comisionado</string>
<string name="poi_embassy_filter">Embajada</string>
<string name="poi_embassy_delegation">Delegación</string>
<string name="poi_embassy_branch_embassy">Sucursal;Ramal</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes"></string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">No</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Visas de no inmigrante</string>
<string name="poi_diplomatic_services_immigrant_visas_yes"></string>
<string name="poi_diplomatic_services_immigrant_visas_no">No</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Visas de inmigrante</string>
<string name="poi_diplomatic_services_citizen_services_yes"></string>
<string name="poi_diplomatic_services_citizen_services_no">No</string>
<string name="poi_diplomatic_services_citizen_services_filter">Servicios al ciudadano</string>
<string name="poi_diplomatic_liaison">Enlace</string>
<string name="poi_diplomatic_embassy">Embajada</string>
<string name="poi_consulate_yes">Dirigido por un cónsul</string>
<string name="poi_consulate_honorary_consul">Cónsul honorario</string>
<string name="poi_consulate_filter">Consulado</string>
<string name="poi_consulate_consulate_general">Consulado general</string>
<string name="poi_consulate_consular_office">Oficina consular</string>
<string name="poi_consulate_consular_agency">Agencia consular</string>
</resources>

View file

@ -1921,7 +1921,7 @@
<string name="full_report">Informe completo</string>
<string name="open_street_map_login_and_pass">Nombre de usuario y contraseña de OSM</string>
<string name="report">Informe</string>
<string name="file_name_containes_illegal_char">El nombre del archivo contiene caracteres ilegales</string>
<string name="file_name_containes_illegal_char">Carácter ilegal en el nombre del archivo</string>
<string name="no_map_markers_found">Añade marcadores a través del mapa</string>
<string name="no_waypoints_found">No se encontraron puntos de referencia</string>
<string name="rendering_value_thin_name">Fino</string>
@ -2462,7 +2462,7 @@
<string name="measurement_tool_action_bar">Navega por el mapa y añade puntos</string>
<string name="measurement_tool">Medir distancia</string>
<string name="none_point_error">Añadir al menos un punto.</string>
<string name="enter_gpx_name">Nombre del GPX:</string>
<string name="enter_gpx_name">Nombre del archivo GPX:</string>
<string name="show_on_map_after_saving">Mostrar en el mapa al guardar</string>
<string name="add_waypoint">Añadir punto de referencia</string>
<string name="save_gpx_waypoint">Guardar punto GPX</string>
@ -3085,9 +3085,9 @@
<string name="zoom_by_wunderlinq_descr">Cambia el zoom del mapa desplazando la rueda hacia arriba y abajo. La tecla «Escape» retrocede a la aplicación WunderLINQ.</string>
<string name="zoom_by_wunderlinq">Controlar con WunderLINQ</string>
<string name="quick_action_need_to_add_item_to_list">Añadir al menos un elemento a la lista en los ajustes de «Acción rápida»</string>
<string name="routing_attr_piste_type_downhill_name">Esquí alpino o de descenso</string>
<string name="routing_attr_piste_type_downhill_name">Esquí alpino y de descenso</string>
<string name="routing_attr_piste_type_downhill_description">Pistas de esquí alpino o de descenso y acceso a remontes mecánicos.</string>
<string name="routing_attr_piste_type_nordic_name">Esquí de travesía o nórdico</string>
<string name="routing_attr_piste_type_nordic_name">Esquí de travesía y nórdico</string>
<string name="routing_attr_piste_type_nordic_description">Senderos para esquí nórdico o de travesía.</string>
<string name="routing_attr_piste_type_skitour_name">Esquí de travesía</string>
<string name="routing_attr_piste_type_skitour_description">Rutas para esquí de travesía.</string>
@ -3368,7 +3368,7 @@
<string name="default_speed_dialog_msg">Estima el tiempo de llegada para los tipos de caminos desconocidos, y limita la velocidad para todos los caminos (puede afectar a la ruta)</string>
<string name="file_imported_successfully">«%1$s» importado(s).</string>
<string name="track_saved">Traza guardada</string>
<string name="empty_filename">Nombre del archivo vacío</string>
<string name="empty_filename">Nombre de archivo vacío</string>
<string name="shared_string_revert">Revertir</string>
<string name="quick_action_directions_from_desc">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.</string>
<string name="rendering_attr_showCycleNodeNetworkRoutes_name">Mostrar nodo de la red de rutas ciclistas</string>
@ -3835,7 +3835,7 @@
<string name="select_another_track">Elegir otra traza</string>
<string name="save_track_to_gpx_globally">Guardar traza en archivo GPX</string>
<string name="save_track_to_gpx">Grabar la traza automáticamente al navegar</string>
<string name="save_global_track_interval_descr">Intervalo de registro para la grabación general de trazas (activar mediante el widget de grabación de viaje sobre el mapa).</string>
<string name="save_global_track_interval_descr">Intervalo de registro para la grabación general de trazas (activado desde el widget «Grabación de viaje» en el mapa).</string>
<string name="save_as_new_track">Guardar como nueva traza</string>
<string name="route_between_points_whole_track_button_desc">Recalcular toda la traza usando el perfil elegido.</string>
<string name="route_between_points_warning_desc">A continuación, ajusta la traza al camino permitido más cercano con un perfil de navegación.</string>
@ -3890,7 +3890,7 @@
<string name="shared_string_redo">Rehacer</string>
<string name="release_3_8">• 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 @@
<string name="sort_name_descending">Nombre: Z A</string>
<string name="sort_name_ascending">Nombre: A Z</string>
<string name="sort_last_modified">Último modificado</string>
<string name="start_finish_icons">Iconos de inicio/fin</string>
<string name="start_finish_icons">Iconos de inicio y fin</string>
<string name="contour_lines_thanks">Gracias por comprar las «Curvas de nivel»</string>
<string name="osm_live_payment_desc_hw">La suscripción se cobra por el período elegido. Puedes cancelarlo en cualquier momento en AppGallery.</string>
<string name="osm_live_payment_subscription_management_hw">El pago será cargado a la cuenta de AppGallery al confirmar la compra.
@ -3922,7 +3922,7 @@
<string name="use_live_routing">Datos de «OsmAnd Live»</string>
<string name="use_live_public_transport">Datos de «OsmAnd Live»</string>
<string name="use_complex_routing">Navegación compleja</string>
<string name="perform_oauth_authorization_description">Inicia sesión con OAuth para usar las funciones de edición de OSM</string>
<string name="perform_oauth_authorization_description">Ingresar con OAuth para usar las funciones de edición de OSM</string>
<string name="perform_oauth_authorization">Ingresar a través de OAuth</string>
<string name="osm_edit_logout_success">Sesión finalizada</string>
<string name="development">Desarrollo</string>
@ -3948,35 +3948,50 @@
<string name="icon_group_emergency">Emergencia</string>
<string name="icon_group_amenity">Comodidad</string>
<string name="file_already_imported">El archivo ya fue importado en OsmAnd</string>
<string name="user_login">Iniciar sesión</string>
<string name="use_login_password">Usar nombre de usuario y contraseña</string>
<string name="user_login">Nombre de usuario</string>
<string name="use_login_password">Ingresar nombre de usuario y contraseña</string>
<string name="subscription_payment_issue_title">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.</string>
<string name="subscription_paused_title">La suscripción a OsmAnd Live se ha pausado</string>
<string name="subscription_on_hold_title">La suscripción a OsmAnd Live está en espera</string>
<string name="subscription_expired_title">La suscripción a OsmAnd Live ha caducado</string>
<string name="sign_in_with_open_street_map">Ingresar con OpenStreetMap</string>
<string name="send_files_to_openstreetmap">Enviar archivo GPX a OpenStreetMap</string>
<string name="open_street_map_login_mode">Debes iniciar sesión para subir cambios nuevos o modificados.
<string name="open_street_map_login_mode">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.</string>
\nya sea con OAuth o usando el nombre de usuario y contraseña.</string>
<string name="message_you_need_add_two_points_to_show_graphs">Debes añadir al menos dos puntos</string>
<string name="markers_history">Historial de marcadores</string>
<string name="manage_subscription">Gestionar suscripción</string>
<string name="login_open_street_map_org">Ingresar a OpenStreetMap.org</string>
<string name="login_open_street_map_org">Ingresar en OpenStreetMap.org</string>
<string name="login_open_street_map">Iniciar sesión en OpenStreetMap</string>
<string name="login_account">Cuenta</string>
<string name="gpx_upload_trackable_visibility_descr">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.</string>
<string name="gpx_upload_public_visibility_descr">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.</string>
<string name="gpx_upload_private_visibility_descr">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.</string>
<string name="gpx_upload_identifiable_visibility_descr">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.</string>
<string name="gpx_upload_trackable_visibility_descr">«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.</string>
<string name="gpx_upload_public_visibility_descr">«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.</string>
<string name="gpx_upload_private_visibility_descr">«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.</string>
<string name="gpx_upload_identifiable_visibility_descr">«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.</string>
<string name="enter_text_separated">Ingresa etiquetas separadas por comas.</string>
<string name="shared_string_add_photo">Añadir foto</string>
<string name="register_opr_have_account">Ya tengo cuenta</string>
<string name="register_opr_create_new_account">Crear nueva cuenta</string>
<string name="register_on_openplacereviews_desc">Las fotos son provistas por el proyecto de datos abiertos OpenPlaceReviews.org. Para subir fotos debes registrarte en el sitio web.</string>
<string name="register_on_openplacereviews_desc">Ingresa en el sitio web del proyecto de datos abiertos OpenPlaceReviews.org para subir más fotos.</string>
<string name="register_on_openplacereviews">Registrarse en
\nOpenPlaceReviews.org</string>
<string name="osm_login_descr">Puedes iniciar sesión con el método seguro de OAuth o usar el nombre de usuario y contraseña.</string>
<string name="osm_login_descr">Ingresa usando el método seguro de OAuth o usa el nombre de usuario y contraseña.</string>
<string name="osm_edit_comment_note">Comentar nota de OSM</string>
<string name="osm_edit_close_note">Cerrar nota de OSM</string>
<string name="shared_string_search_history">Historial de búsqueda</string>
<string name="shared_string_resources">Recursos</string>
<string name="select_data_to_export">Marca los datos que serán exportados al archivo.</string>
<string name="file_size_needed_for_import">Necesario para importar</string>
<string name="export_not_enough_space_descr">El dispositivo sólo tiene %1$s libre. Por favor, libera algo de espacio o desmarca algunos elementos a exportar.</string>
<string name="export_not_enough_space">Sin espacio suficiente</string>
<string name="approximate_file_size">Tamaño aproximado del archivo</string>
<string name="app_mode_motorboat">Lancha a motor</string>
<string name="app_mode_kayak">Kayak</string>
<string name="add_to_opr">Añadir a OpenPlaceReviews</string>
<string name="add_to_mapillary">Añadir a Mapillary</string>
<string name="add_photos_descr">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).</string>
</resources>

View file

@ -3897,4 +3897,48 @@
<string name="sort_last_modified">Último modificado</string>
<string name="sort_name_descending">Nombre: Z A</string>
<string name="sort_name_ascending">Nombre: A - Z</string>
<string name="navigate_point_mgrs">MGRS</string>
<string name="what_is_new">Novedades</string>
<string name="navigate_point_format_mgrs">MGRS</string>
<string name="mgrs_format_descr">OsmAnd usa MGRS, que es similar al formato UTM NATO.</string>
<string name="start_finish_icons">Iconos de inicio y fin</string>
<string name="development">Desarollo</string>
<string name="file_already_imported">El fichero ya está importado en OsmAnd</string>
<string name="shared_string_local_maps">Mapas locales</string>
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
<string name="icon_group_amenity">Servicio</string>
<string name="icon_group_special">Especial</string>
<string name="icon_group_transport">Transporte</string>
<string name="icon_group_service">Servicio</string>
<string name="icon_group_symbols">Símbolos</string>
<string name="icon_group_sport">Deporte</string>
<string name="icon_group_emergency">Emergencia</string>
<string name="icon_group_travel">Viajar</string>
<string name="message_you_need_add_two_points_to_show_graphs">Necesita añadir al menos dos puntos</string>
<string name="login_account">Cuenta</string>
<string name="user_login">Nombre de usuario</string>
<string name="manage_subscription">Gestionar suscripción</string>
<string name="send_files_to_openstreetmap">Enviar fichero GPX a OpenStreetMap</string>
<string name="enter_text_separated">Introduzca las etiquetas separadas por una coma.</string>
<string name="osm_edit_close_note">Cerrar Nota de OSM</string>
<string name="osm_edit_comment_note">Comentar Nota de OSM</string>
<string name="shared_string_add_photo">Añadir foto</string>
<string name="register_on_openplacereviews">Registrar en
\nOpenPlaceReviews.org</string>
<string name="register_opr_create_new_account">Crear cuenta nueva</string>
<string name="register_opr_have_account">Ya tengo una cuenta</string>
<string name="shared_string_search_history">Historial de búsqueda</string>
<string name="app_mode_kayak">Kayak</string>
<string name="app_mode_motorboat">Lancha a motor</string>
<string name="add_to_mapillary">Añadir a Mapillary</string>
<string name="add_to_opr">Añadir a OpenPlaceReviews</string>
<string name="add_photos_descr">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.</string>
<string name="shared_string_resources">Recursos</string>
<string name="approximate_file_size">Tamaño de fichero aproximado</string>
<string name="select_data_to_export">Seleccione los datos para exportar al fichero.</string>
<string name="file_size_needed_for_import">Necesario para importar</string>
<string name="export_not_enough_space">No hay espacio suficiente</string>
</resources>

View file

@ -3832,4 +3832,9 @@
<string name="poi_parking_sheds">Parkimine varjualustes</string>
<string name="poi_parking_rooftop">Parkla katusel</string>
<string name="poi_radar_tower">Radarimast</string>
<string name="poi_embassy_residence">Residents</string>
<string name="poi_embassy_nunciature">Nuntsiatuur</string>
<string name="poi_diplomatic_embassy">Saatkond</string>
<string name="poi_consulate_filter">Konsulaat</string>
<string name="poi_embassy_filter">Saatkond</string>
</resources>

View file

@ -1749,7 +1749,7 @@
<string name="poi_podiatrist">Oin-sendagile</string>
<string name="poi_tax_advisor">Zerga aholkularien bulegoa</string>
<string name="poi_ice_stock">Ice stock kirola</string>
<string name="poi_korfbal">Korfbal</string>
<string name="poi_korfbal">Korfball</string>
<string name="poi_paddle_tennis">Paddle tenisa</string>
<string name="poi_racquet">Erraketa (kirol tresna)</string>
<string name="poi_rugby_union">Errugbi elkartea</string>
@ -2592,7 +2592,7 @@
<string name="poi_pump_powered">Motorizatua</string>
<string name="poi_pump_no">Bonba gabekoa</string>
<string name="poi_water_characteristic_mineral">Minerala</string>
<string name="poi_water_characteristic_mud">Uraren ezaugarria: lokatza</string>
<string name="poi_water_characteristic_mud">Lokatza</string>
<string name="poi_water_characteristic_sulfuric">Sulfurikoa</string>
<string name="poi_water_point">Ur-puntua</string>
<string name="poi_information_guidepost">Poste adierazlea</string>
@ -3549,18 +3549,18 @@
<string name="poi_rtsa_scale_filter">Zailtasun-kategoria</string>
<string name="poi_rtsa_scale_nc">н/к</string>
<string name="poi_rtsa_scale_nc_asterisk">н/к*</string>
<string name="poi_rtsa_scale_1a">1А</string>
<string name="poi_rtsa_scale_1a">1A</string>
<string name="poi_rtsa_scale_1a_asterisk">1А*</string>
<string name="poi_rtsa_scale_1b">1Б</string>
<string name="poi_rtsa_scale_1b_asterisk">1Б*</string>
<string name="poi_rtsa_scale_2a">2А</string>
<string name="poi_rtsa_scale_2a_asterisk">2А*</string>
<string name="poi_rtsa_scale_2b">2Б</string>
<string name="poi_rtsa_scale_2b_asterisk">2Б*</string>
<string name="poi_rtsa_scale_3a">3А</string>
<string name="poi_rtsa_scale_3a_asterisk">3А*</string>
<string name="poi_rtsa_scale_3b">3Б</string>
<string name="poi_rtsa_scale_3b_asterisk">3Б*</string>
<string name="poi_rtsa_scale_1b">1B</string>
<string name="poi_rtsa_scale_1b_asterisk">1B*</string>
<string name="poi_rtsa_scale_2a">2A</string>
<string name="poi_rtsa_scale_2a_asterisk">2A*</string>
<string name="poi_rtsa_scale_2b">2B</string>
<string name="poi_rtsa_scale_2b_asterisk">2B*</string>
<string name="poi_rtsa_scale_3a">3A</string>
<string name="poi_rtsa_scale_3a_asterisk">3A*</string>
<string name="poi_rtsa_scale_3b">3B</string>
<string name="poi_rtsa_scale_3b_asterisk">3B*</string>
<string name="poi_change_delete">Ezabatutako objektua</string>
<string name="poi_health_specialty_radiotherapy_yes">Erradioterapia</string>
<string name="poi_climbing_crag">Bai</string>
@ -3789,7 +3789,7 @@
<string name="poi_booth">Kabina mota</string>
<string name="poi_video_yes">Bai</string>
<string name="poi_video_no">Ez</string>
<string name="poi_internet_access_fee_customers">Zutoina aurkitzeko seinalea</string>
<string name="poi_internet_access_fee_customers">Internet sarbidea: Bezeroak</string>
<string name="poi_traffic_signals_sound_locate">Ibiltzea baimenduta dagoenean soilik</string>
<string name="poi_tactile_paving_contrasted">Kontrastatua</string>
<string name="poi_tactile_paving_primitive">Primitiboa</string>
@ -3803,7 +3803,7 @@
<string name="poi_seamark_water_level_awash">Ur maila: boladaka</string>
<string name="poi_drinking_water_refill_network">Edateko ura betetzeko sarea</string>
<string name="poi_drinking_water_refill_no">Edateko ura betetzeko: ez</string>
<string name="poi_drinking_water_refill_yes">Edateko ura betetzeko: bai</string>
<string name="poi_drinking_water_refill_yes">Bai</string>
<string name="poi_seamark_obstruction">Trabatzea</string>
<string name="poi_seamark_water_level_below_mwl">Ur maila: batezbestekotik behera</string>
<string name="poi_seamark_water_level_above_mwl">Ur maila: batezbestekotik gora</string>

File diff suppressed because it is too large Load diff

View file

@ -655,7 +655,7 @@
<string name="poi_club">Club</string>
<string name="poi_cafe_and_restaurant">Restaurant et café</string>
<string name="poi_craft">Artisanat</string>
<string name="poi_filling_station">Station essence</string>
<string name="poi_filling_station">Station service</string>
<string name="poi_personal_transport">Transport individuel</string>
<string name="poi_water_supply">Alimentation en eau potable</string>
<string name="poi_trash_disposal">Traitement des ordures ménagères</string>
@ -3272,8 +3272,8 @@
<string name="poi_generator_source_biomass">Source d\'énergie : biomasse</string>
<string name="poi_rtsa_scale_nc">н/к</string>
<string name="poi_rtsa_scale_nc_asterisk">н/к*</string>
<string name="poi_rtsa_scale_1a">1А</string>
<string name="poi_rtsa_scale_1a_asterisk">1А*</string>
<string name="poi_rtsa_scale_1a">1A</string>
<string name="poi_rtsa_scale_1a_asterisk">1A*</string>
<string name="poi_rtsa_scale_1b"></string>
<string name="poi_rtsa_scale_1b_asterisk">1Б*</string>
<string name="poi_rtsa_scale_2a">2А</string>
@ -3844,4 +3844,8 @@
<string name="poi_departures_board_no">Tableau des départs : non</string>
<string name="poi_elevator">Ascenseur</string>
<string name="poi_departures_board">Tableau des départs</string>
<string name="poi_liaison_filter">Liaison</string>
<string name="poi_consulate_filter">Consulat</string>
<string name="poi_embassy_filter">Ambassade</string>
<string name="poi_drinking_water_refill">Point d\'eau potable</string>
</resources>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="offline_edition">Modifications hors-ligne</string>
<string name="offline_edition_descr">Toujours utiliser l\'édition hors-ligne.</string>
<string name="offline_edition_descr">Si le mode d\'édition hors-ligne est activé, les modifications seront enregistrées localement puis envoyées à la demande. Sinon, les modifications seront envoyées immédiatement.</string>
<string name="update_poi_does_not_change_indexes">Les modifications de points d\'intérêt dans l\'application sont sans effet sur les cartes téléchargées, les modifications sont enregistrées dans un fichier de votre appareil.</string>
<string name="local_openstreetmap_uploading">Téléversement…</string>
<string name="local_openstreetmap_were_uploaded">{0} Points d\'intérêt / Notes ont été téléversés</string>
@ -695,8 +695,8 @@
<string name="asap">Dès que possible</string>
<string name="gpxup_public">Public</string>
<string name="gpxup_identifiable">Identifiable</string>
<string name="gpxup_trackable">Suivi</string>
<string name="gpxup_private">Privé</string>
<string name="gpxup_trackable">Traçable</string>
<string name="gpxup_private">Privée</string>
<string name="osmand_parking_event">Récupérer le véhicule au parking</string>
<string name="osmand_parking_warning">Avertissement</string>
<string name="osmand_parking_warning_text">Un rappel pour récupérer votre véhicule a été ajouté à votre agenda. Vous pouvez modifier ou supprimer ce rappel.</string>
@ -3899,7 +3899,7 @@
<string name="use_native_pt">Développement du transport public autochtone</string>
<string name="perform_oauth_authorization">Connectez-vous avec OAuth</string>
<string name="clear_osm_token">Supprimer le jeton OAuth d\'OpenStreetMap</string>
<string name="osm_edit_logout_success">Déconnexion réussie</string>
<string name="osm_edit_logout_success">Déconnecté</string>
<string name="file_already_imported">Le fichier est déjà importé dans OsmAnd</string>
<string name="use_two_phase_routing">Utiliser un algorithme de routage A* à 2 phases</string>
<string name="osm_live_payment_subscription_management_hw">Le paiement sera débité de votre compte AppGallery dès confirmation de l\'achat.
@ -3930,10 +3930,10 @@
<string name="subscription_on_hold_title">L\'abonnement OsmAnd Live est en attente</string>
<string name="subscription_expired_title">Labonnement OsmAnd Live a expiré</string>
<string name="subscription_paused_title">L\'abonnement OsmAnd Live a été suspendu</string>
<string name="login_open_street_map">Se connecter à OpenStreetMap</string>
<string name="login_open_street_map_org">Se connecter à OpenStreetMap.org</string>
<string name="login_open_street_map">Se connecter pour OpenStreetMap</string>
<string name="login_open_street_map_org">Se connecter pour OpenStreetMap.org</string>
<string name="user_login">Identifiant</string>
<string name="use_login_password">Utiliser un identifiant et un mot de passe</string>
<string name="use_login_password">Se connecter avec un identifiant et un mot de passe</string>
<string name="login_account">Compte</string>
<string name="manage_subscription">Gérer l\'abonnement</string>
<string name="sign_in_with_open_street_map">Se connecter avec OpenStreetMap</string>
@ -3948,11 +3948,29 @@
\nOpenPlaceReviews.org</string>
<string name="register_opr_create_new_account">Créer un nouveau compte</string>
<string name="register_opr_have_account">J\'ai déjà un compte</string>
<string name="open_street_map_login_mode">Vous devez vous connecter pour envoyer vos modifications.
<string name="open_street_map_login_mode">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.</string>
<string name="osm_login_descr">Vous pouvez vous connecter avec la méthode sécurisée OAuth ou utiliser votre identifiant et votre mot de passe.</string>
<string name="register_on_openplacereviews_desc">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.</string>
\nsoit avec OAuth soit avec votre identifiant et mot de passe.</string>
<string name="osm_login_descr">Connectez-vous avec la méthode sécurisée OAuth ou utilisez votre identifiant et votre mot de passe.</string>
<string name="register_on_openplacereviews_desc">Connectez-vous au site web du projet OpenPlaceReviews.org pour ajouter des photos.</string>
<string name="shared_string_search_history">Historique de recherche</string>
<string name="app_mode_kayak">Kayak</string>
<string name="export_not_enough_space_descr">Votre appareil n\'a que %1$s disponible. Veuillez libérer de l\'espace ou désélectionner l\'export pour certains éléments.</string>
<string name="app_mode_motorboat">Bateau à moteur</string>
<string name="shared_string_resources">Ressources</string>
<string name="approximate_file_size">Taille approximative du fichier</string>
<string name="select_data_to_export">Sélectionnez les données à exporter dans le fichier.</string>
<string name="file_size_needed_for_import">Nécessaire pour l\'import</string>
<string name="export_not_enough_space">L\'espace disponible est insuffisant</string>
<string name="add_to_mapillary">Ajouter à Mapillary</string>
<string name="add_to_opr">Ajouter à OpenPlaceReviews</string>
<string name="add_photos_descr">OsmAnd affiche des photos de plusieurs sources :
\nOpenPlaceReviews : photos de PI ;
\nMapillary : photos de rue ;
\nWeb / Wikimedia : photos de PI réféfencés dans OpenStreetMap.</string>
<string name="gpx_upload_private_visibility_descr"/>
<string name="use_dev_url_descr">Utiliser dev.openstreetmap.org plutôt que openstreetmap.org pour tester l\'envoi des notes OSM / Points d\'intérêt / GPX.</string>
<string name="use_dev_url">Utiliser dev.openstreetmap.org</string>
<string name="select_groups_for_import"></string>
<string name="select_items_for_import"></string>
</resources>

View file

@ -3843,4 +3843,34 @@
<string name="poi_parking_rooftop">Terrazo</string>
<string name="poi_gpx_point">Punto GPX</string>
<string name="poi_radar_tower">Torre de radar</string>
<string name="poi_diplomatic_services_citizen_services_no">Non</string>
<string name="poi_diplomatic_services_citizen_services_yes">Si</string>
<string name="poi_diplomatic_services_immigrant_visas_no">Non</string>
<string name="poi_diplomatic_services_immigrant_visas_yes">Si</string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">Non</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes">Si</string>
<string name="poi_liaison_subnational">Subnacional</string>
<string name="poi_liaison_representative_office">Oficina representativa</string>
<string name="poi_liaison_liaison_office">Oficina</string>
<string name="poi_consulate_honorary_consul">Cónsul honorario</string>
<string name="poi_consulate_consulate_general">Consulado xeral</string>
<string name="poi_consulate_consular_office">Oficina consular</string>
<string name="poi_consulate_consular_agency">Axencia consular</string>
<string name="poi_consulate_yes">Dirixido por un cónsul</string>
<string name="poi_embassy_residence">Residencia</string>
<string name="poi_embassy_nunciature">Nunciatura</string>
<string name="poi_embassy_mission">Misión</string>
<string name="poi_embassy_interests_section">Sección de intereses</string>
<string name="poi_embassy_high_commission">Alto comisionado</string>
<string name="poi_embassy_delegation">Delegación</string>
<string name="poi_embassy_branch_embassy">Sucursal</string>
<string name="poi_embassy_yes">Dirixido por un embaixador</string>
<string name="poi_diplomatic_liaison">Ligazón</string>
<string name="poi_diplomatic_embassy">Embaixada</string>
<string name="poi_diplomatic_services_citizen_services_filter">Servizos ó cidadán</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Visados de inmigrante</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Visados de non inmigrante</string>
<string name="poi_liaison_filter">Ligazón</string>
<string name="poi_consulate_filter">Consulado</string>
<string name="poi_embassy_filter">Embaixada</string>
</resources>

View file

@ -3946,7 +3946,7 @@ Lon %2$s</string>
<string name="use_native_pt">Desenvolvemento do transporte público nativo</string>
<string name="use_native_pt_desc">Activar cálculo de enrutamento de transporte público do Java (seguro)</string>
<string name="what_is_new">Novidades</string>
<string name="perform_oauth_authorization_description">Inicia sesión co OAuth para empregar as funcións de edición do OSM</string>
<string name="perform_oauth_authorization_description">Inicia a sesión co OAuth para empregar as funcións de edición do OSM</string>
<string name="perform_oauth_authorization">Entrar polo OAuth</string>
<string name="clear_osm_token">Limpar token do OpenStreetMap OAuth</string>
<string name="osm_edit_logout_success">Sesión rematada</string>
@ -3978,15 +3978,15 @@ Lon %2$s</string>
<string name="subscription_paused_title">A subscrición do OsmAnd Live foi detida</string>
<string name="subscription_on_hold_title">A subscrición do OsmAnd Live está en espera</string>
<string name="gpx_upload_public_visibility_descr">\"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.</string>
<string name="login_open_street_map">Iniciar sesión no OpenStreetMap</string>
<string name="login_open_street_map_org">Entrar ó OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Entrar co OpenStreetMap</string>
<string name="open_street_map_login_mode">Precisas iniciar sesión para subir modificacións novas.
<string name="login_open_street_map">Iniciar a sesión no OpenStreetMap</string>
<string name="login_open_street_map_org">Iniciar a sesión no OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Iniciar a sesión co OpenStreetMap</string>
<string name="open_street_map_login_mode">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.</string>
<string name="use_login_password">Empregar nome de usuario e contrasinal</string>
\nxa sexa co OAuth ou empregando o teu nome de usuario e contrasinal.</string>
<string name="use_login_password">Iniciar a sesión co nome de usuario e contrasinal</string>
<string name="login_account">Conta</string>
<string name="user_login">Iniciar sesión</string>
<string name="user_login">Nome de usuario</string>
<string name="markers_history">Historial de marcaxes</string>
<string name="send_files_to_openstreetmap">Enviar ficheiro GPX ó OpenStreetMap</string>
<string name="enter_text_separated">Insire etiquetas separadas por comas.</string>
@ -3995,14 +3995,20 @@ Lon %2$s</string>
<string name="gpx_upload_identifiable_visibility_descr">\"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.</string>
<string name="osm_edit_close_note">Pechar nota do OSM</string>
<string name="osm_edit_comment_note">Comentar nota do OSM</string>
<string name="osm_login_descr">Podes iniciar a sesión co método seguro do OAuth ou empregar o nome de usuario e contrasinal.</string>
<string name="osm_login_descr">Inicia a sesión co método seguro do OAuth ou emprega o nome de usuario e contrasinal.</string>
<string name="shared_string_add_photo">Engadir imaxe</string>
<string name="register_on_openplacereviews">Rexistrarse no
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">As imaxes son fornecidas polo proxecto de datos abertos OpenPlaceReviews.org. Para subir imaxes tes que rexistrarte no sitio web.</string>
<string name="register_on_openplacereviews_desc">Inicia a sesión no sitio web do proxecto de datos abertos do OpenPlaceReviews.org para subir máis imaxes.</string>
<string name="register_opr_create_new_account">Crear nova conta</string>
<string name="register_opr_have_account">Xa teño unha conta</string>
<string name="shared_string_search_history">Historial de procura</string>
<string name="app_mode_kayak">Caiac</string>
<string name="app_mode_motorboat">Lancha a motor</string>
<string name="shared_string_resources">Recursos</string>
<string name="approximate_file_size">Tamaño aproximado do ficheiro</string>
<string name="select_data_to_export">Marca os datos que serán exportados ó ficheiro.</string>
<string name="file_size_needed_for_import">Necesario para importar</string>
<string name="export_not_enough_space_descr">O teu dispositivo só ten %1$s libre. Por favor, libera algo de espazo ou desmarca algúns elementos a exportar.</string>
<string name="export_not_enough_space">Sen espazo dabondo</string>
</resources>

View file

@ -3842,4 +3842,34 @@
<string name="poi_internet_access_fee_customers">Internetcsatlakozás: ügyfeleknek</string>
<string name="poi_radar_tower">Radartorony</string>
<string name="poi_gpx_point">GPX-pont</string>
<string name="poi_diplomatic_services_citizen_services_filter">Állampolgári szolgáltatások</string>
<string name="poi_diplomatic_services_citizen_services_no">nincsenek</string>
<string name="poi_diplomatic_services_citizen_services_yes">vannak</string>
<string name="poi_diplomatic_services_immigrant_visas_no">nincs</string>
<string name="poi_diplomatic_services_immigrant_visas_yes">van</string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">nincs</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes">van</string>
<string name="poi_liaison_subnational">Országrész külképviselete</string>
<string name="poi_liaison_representative_office">Emigráns kormány nem akkreditált képviselete</string>
<string name="poi_liaison_liaison_office">Nem akkreditált összekötő iroda</string>
<string name="poi_consulate_honorary_consul">Tiszteletbeli konzul</string>
<string name="poi_consulate_consulate_general">Főkonzulátus</string>
<string name="poi_consulate_consular_office">Konzuli iroda</string>
<string name="poi_consulate_consular_agency">Konzuli ügynköség</string>
<string name="poi_consulate_yes">Konzulátus, élén konzullal</string>
<string name="poi_embassy_residence">Rezidencia</string>
<string name="poi_embassy_nunciature">Apostoli nunciatúra</string>
<string name="poi_embassy_mission">Állandó küldöttség</string>
<string name="poi_embassy_interests_section">Érdekképviseleti részleg</string>
<string name="poi_embassy_high_commission">Főbiztosság (brit nemzetközösségi tag nagykövetsége)</string>
<string name="poi_embassy_delegation">Küldöttség</string>
<string name="poi_embassy_branch_embassy">Nagykövetségi részleg</string>
<string name="poi_embassy_yes">Nagykövetség, élén nagykövettel</string>
<string name="poi_diplomatic_liaison">Összekötő iroda</string>
<string name="poi_diplomatic_embassy">Követség</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Bevándorlói vízum</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Nem bevándorlói vízum</string>
<string name="poi_liaison_filter">Összekötő iroda</string>
<string name="poi_embassy_filter">Külképviselet</string>
<string name="poi_consulate_filter">Konzulátus</string>
</resources>

View file

@ -3917,7 +3917,7 @@
<string name="perform_oauth_authorization_description">Az OSM-szerkesztési funkciók használatához jelentkezzék be az OAuth segítségével</string>
<string name="perform_oauth_authorization">Bejelentkezés OAuth segítségével</string>
<string name="clear_osm_token">OpenStreetMap OAuth token törlése</string>
<string name="osm_edit_logout_success">Sikeresen kijelentkezett</string>
<string name="osm_edit_logout_success">Kijelentkezett</string>
<string name="use_two_phase_routing">Kétszakaszos A* útvonaltervezési algoritmus használata</string>
<string name="file_already_imported">A fájl már importálva van az OsmAndba</string>
<string name="ltr_or_rtl_combine_via_dash">%1$s - %2$s</string>
@ -3951,12 +3951,12 @@
<string name="subscription_paused_title">Az OsmAnd Live-előfizetés szünetel</string>
<string name="subscription_expired_title">Az OsmAnd Live-előfizetés lejárt</string>
<string name="subscription_payment_issue_title">Probléma van az előfizetésével. A fizetési mód kijavítása érdekében kattintson a gombra a Google Play előfizetési beállításaihoz történő ugráshoz.</string>
<string name="user_login">Bejelentkezés</string>
<string name="user_login">Felhasználónév</string>
<string name="login_account">Fiók</string>
<string name="use_login_password">Fióknév és jelszó használata</string>
<string name="open_street_map_login_mode">Az új vagy módosított szerkesztések feltöltéséhez be kell jelentkeznie.
<string name="use_login_password">Bejelentkezés felhasználónévvel és jelszóval</string>
<string name="open_street_map_login_mode">Új vagy módosított szerkesztések feltöltéséhez jelentkezzék be
\n
\nBejelentkezhet a biztonságos OAuth-módszerrel vagy használhatja fióknevét és jelszavát.</string>
\naz OAuth segítségével vagy felhasználónevével és jelszavával.</string>
<string name="sign_in_with_open_street_map">Bejelentkezés OpenStreetMap-fiókkal</string>
<string name="login_open_street_map">Bejelentkezés az OpenStreetMapre</string>
<string name="login_open_street_map_org">Bejelentkezés az OpenStreetMap.org-ra</string>
@ -3966,10 +3966,22 @@
<string name="shared_string_add_photo">Fénykép hozzáadása</string>
<string name="register_on_openplacereviews">Regisztráció az
\nOpenPlaceReviews.org oldalon</string>
<string name="register_on_openplacereviews_desc">A fényképeket a OpenPlaceReviews.org nyílt adatprojekt biztosítja. Saját fényképei feltöltéséhez be kell jelentkeznie a weboldalon.</string>
<string name="register_on_openplacereviews_desc">Még több fénykép feltöltéséhez jelentkezzék be az OpenPlaceReviews.org nyílt adatprojekt weboldalára.</string>
<string name="register_opr_create_new_account">Új fiók létrehozása</string>
<string name="register_opr_have_account">Már van fiókom</string>
<string name="app_mode_motorboat">Motorcsónak</string>
<string name="app_mode_kayak">Kajak</string>
<string name="shared_string_search_history">Keresési előzmények</string>
<string name="shared_string_resources">Források</string>
<string name="add_to_mapillary">Hozzáadás a Mapillaryhez</string>
<string name="add_to_opr">Hozzáadása az OpenPlaceReviewshoz</string>
<string name="add_photos_descr">Az OsmAnd több forrásból jelenít meg fényképeket:
\nOpenPlaceReviews POI-fotók;
\nMapillary utcaszintű képek;
\nWeb / Wikimedia az OpenStreetMap-adatokban meghatározott POI-fotók.</string>
<string name="approximate_file_size">Hozzávetőleges fájlméret</string>
<string name="select_data_to_export">Jelölje ki a fájlba exportálandó adatokat.</string>
<string name="file_size_needed_for_import">Szükséges az importáláshoz</string>
<string name="export_not_enough_space_descr">A készülékén csak %1$s szabad hely van. Szabadítson fel valamennyi helyet, vagy szüntesse meg néhány exportálandó elem kijelölését.</string>
<string name="export_not_enough_space">Nincs elég hely</string>
</resources>

View file

@ -3979,4 +3979,18 @@
<string name="gpx_upload_private_visibility_descr">\"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.</string>
<string name="gpx_upload_identifiable_visibility_descr">\"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.</string>
<string name="gpx_upload_trackable_visibility_descr">\"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.</string>
<string name="add_to_mapillary">Aggiungi a Mapillary</string>
<string name="add_to_opr">Aggiungi a OpenPlaceReviews</string>
<string name="add_photos_descr">OsmAnd mostra foto da più sorgenti:
\nOpenPlaceReviews - foto PDI;
\nMapillary - immagini stradali;
\nWeb / Wikimedia - foto PDI OpenStreetMap.</string>
<string name="shared_string_resources">Risorse</string>
<string name="approximate_file_size">Dimesione approssimativa del file</string>
<string name="select_data_to_export">Seleziona i dati da esportare nel file.</string>
<string name="file_size_needed_for_import">Necessario per l\'importazione</string>
<string name="export_not_enough_space_descr">Il tuo dispositivo ha solo %1$s liberi. Libera dello spazio i deseleziona alcune voci da esportare.</string>
<string name="export_not_enough_space">Non c\'è abbastanza spazio</string>
<string name="select_groups_for_import">Seleziona i gruppi da importare.</string>
<string name="select_items_for_import">Seleziona gli oggetti da importare.</string>
</resources>

View file

@ -3989,4 +3989,10 @@
<string name="file_size_needed_for_import">נדרש לייבוא</string>
<string name="export_not_enough_space_descr">במכשיר שלך יש רק %1$s פנויים. נא לפנות מקום או לבטל כמה מהפריטים לייצוא.</string>
<string name="export_not_enough_space">אין מספיק מקום</string>
<string name="add_to_mapillary">הוספה ל־Mapillary</string>
<string name="add_to_opr">הוספה ל־OpenPlaceReviews</string>
<string name="add_photos_descr">OsmAnd מציג תמונות ממגוון מקורות:
\nOpenPlaceReviews - תמונות של נקודות עניין;
\nMapillary - תמונות ברמת הרחוב;
\nאינטרנט / ויקימדיה - תמונות נקודות עניין שמצוינות בנתונים של OpenStreetMap.</string>
</resources>

View file

@ -3212,7 +3212,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl
<string name="route_recalculation">Maršruta pārrēķināšana</string>
<string name="accessibility_announce">Paziņošana</string>
<string name="login_and_pass">Lietotāja vārds un parole</string>
<string name="plugin_global_prefs_info">Šie iestatījumi darbosies visos profilos.</string>
<string name="plugin_global_prefs_info">Šie iestatījumi ir globāli un darbosies visos profilos</string>
<string name="osm_editing">OSM rediģēšana</string>
<string name="osm_edits_view_descr">Skatiet vēl neaugšupielādētos labojumus vai OSM kļūdas %1$s mapē. Augšupielādētie punkti vairs netiks rādīti.</string>
<string name="app_mode_osm">OSM</string>
@ -3278,13 +3278,13 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl
<string name="icon_group_emergency">Ārkārtas</string>
<string name="icon_group_travel">Ceļošana</string>
<string name="message_you_need_add_two_points_to_show_graphs">Nepieciešams pievienot vismaz divus punktus</string>
<string name="login_open_street_map">Ieiet OpenStreetMap</string>
<string name="login_open_street_map_org">Ieiet OpenStreetMap.org</string>
<string name="login_open_street_map">Pierakstīties OpenStreetMap</string>
<string name="login_open_street_map_org">Pierakstīties OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Pierakstīties ar OpenStreetMap</string>
<string name="open_street_map_login_mode">Lai sūtītu labojumus vai jaunus datus, ir nepieciešams pierakstīties.
\n
\nJūs varat pierakstīties, lietojot drošo OAuth metodi vai ar savu lietotāja vārdu un paroli.</string>
<string name="use_login_password">Lietot pierakstīšanās datus</string>
\nJūs varat pierakstīties, lietojot OAuth vai ar savu lietotāja vārdu un paroli.</string>
<string name="use_login_password">Pierakstīties ar lietotāja vādu un paroli</string>
<string name="login_account">Konts</string>
<string name="user_login">Lietotājs</string>
<string name="manage_subscription">Pārvaldīt abonomentu</string>
@ -3297,10 +3297,31 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl
<string name="enter_text_separated">Ievadiet tagus, atdalītus ar komatu.</string>
<string name="osm_edit_close_note">Aizvērt OSM Note</string>
<string name="osm_edit_comment_note">Komentēt OSM Note</string>
<string name="osm_login_descr">Jūs varat ielogoties lietojot drošo OAuth metodi vai savu lietotāja vārdu un paroli.</string>
<string name="osm_login_descr">Ielogojieties lietojot drošo OAuth metodi vai savu lietotāja vārdu un paroli.</string>
<string name="shared_string_add_photo">Pievienot foto</string>
<string name="register_on_openplacereviews">Reģistrēties
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">Fotogrāfijas tiek piegādātas no atvērtā koda projekta OpenPlaceReviews.org. Lai pievienotu savas fotogrāfijas, nepieciešams reģistrēties šajā interneta vietnē.</string>
<string name="register_on_openplacereviews_desc">Lai augšupielādētu vēl fotogrāfijas, ielogojieties atvērtā koda projekta OpenPlaceReviews.org vietnē.</string>
<string name="register_opr_create_new_account">Izveidot jaunu kontu</string>
<string name="icon_group_symbols">Simboli</string>
<string name="icon_group_sport">Sports</string>
<string name="gpx_upload_private_visibility_descr">\"Privāts\" nozīmē, ka trase neparādīsies nevienā publiskā sarakstā, bet trases punkti nehronoloģiskā secībā būs pieejami caur publisko GPS API bez laika atzīmēm.</string>
<string name="gpx_upload_identifiable_visibility_descr">\"Identificējams\" nozīmē, ka trase būs redzama jūsu GPS trasēs un publiskajos GPS trašu sarakstos, t.i. citi lietotāji varēs lejupielādēt trasi un asociēt to ar jūsu vārdu. Publiskie trases punktu dati ar laika atzīmēm no GPS API caur trackpoints API dos referenci uz jūsu oriģinālo trases lapu.</string>
<string name="gpx_upload_trackable_visibility_descr">\"Izsekojams\" nozīmē, ka pati trase neparādās publiskajos sarakstos, bet tikai apstrādātie trackpointi ar laika atzīmēm (nevar tikt asociēti konkrēti ar jums) caur lejupielādēm no publiskā GPS API.</string>
<string name="register_opr_have_account">Man jau ir konts</string>
<string name="shared_string_search_history">Meklēšanas vēsture</string>
<string name="app_mode_kayak">Kajaks</string>
<string name="app_mode_motorboat">Motorlaiva</string>
<string name="add_to_mapillary">Pievienot Mapillary</string>
<string name="add_to_opr">Pievienot OpenPlaceReviews</string>
<string name="add_photos_descr">OsmAnd rāda attēlus no dažādiem avotiem:
\nOpenPlaceReviews - POI bildes;
\nMapillary - ielas līmeņa attēli;
\nWeb / Wikimedia - POI bildes no OpenStreetMap datiem.</string>
<string name="shared_string_resources">Resursi</string>
<string name="approximate_file_size">Aptuvenais faila izmērs</string>
<string name="select_data_to_export">Izvēlieties datus eksportēšanai failā.</string>
<string name="file_size_needed_for_import">Nepieciešams importam</string>
<string name="export_not_enough_space_descr">Ierīcē ir tikai %1$s brīvās vietas. Lūdzu atbrīvojiet vietu vai izvēlieties mazāk detaļu eksportam.</string>
<string name="export_not_enough_space">Nepietiek brīvās vietas</string>
</resources>

View file

@ -1922,7 +1922,7 @@
<string name="osm_live_header">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ć.</string>
<string name="file_name_containes_illegal_char">Nazwa pliku zawiera niedozwolony znak</string>
<string name="file_name_containes_illegal_char">Niedozwolony znak w nazwie pliku</string>
<string name="access_default_color">Domyślny kolor</string>
<string name="access_category_choice">Wybierz kategorię</string>
<string name="access_hint_enter_category">Proszę wprowadzić kategorię</string>
@ -2526,7 +2526,7 @@
<string name="last_intermediate_dest_description">Dodaje cel pośredni</string>
<string name="first_intermediate_dest_description">Dodaje pierwszy cel pośredni</string>
<string name="show_closed_notes">Wyświetl zamknięte uwagi</string>
<string name="switch_osm_notes_visibility_desc">Pokaż/ukryj uwagi OSM na mapie.</string>
<string name="switch_osm_notes_visibility_desc">Pokaż lub ukryj uwagi OSM na mapie.</string>
<string name="gpx_file_desc">GPX - odpowiedni do eksportowania danych do JOSM i innych edytorów OSM.</string>
<string name="osc_file_desc">OSC - odpowiedni do eksportowania danych do OSM.</string>
<string name="shared_string_gpx_file">Plik GPX</string>
@ -3087,7 +3087,7 @@
<string name="zoom_by_wunderlinq">Użyj WunderLINQ do kontroli</string>
<string name="quick_action_need_to_add_item_to_list">Dodaj co najmniej jeden element do listy w ustawieniach \"Szybkiej Akcji\"</string>
<string name="routing_attr_piste_type_downhill_description">Stoki narciarskie do narciarstwa alpejskiego i zjazdowego oraz dostęp do wyciągów narciarskich.</string>
<string name="routing_attr_piste_type_nordic_name">Narty biegowe/nordic ski</string>
<string name="routing_attr_piste_type_nordic_name">Biegi narciarskie i narciarstwo klasyczne</string>
<string name="routing_attr_piste_type_nordic_description">Trasy do narciarstwa klasycznego lub biegowego.</string>
<string name="routing_attr_piste_type_skitour_name">Turystyka narciarska</string>
<string name="routing_attr_piste_type_skitour_description">Trasy wycieczek narciarskich.</string>
@ -3570,7 +3570,7 @@
<string name="quick_action_terrain_descr">Przycisk do wyświetlania lub ukrywania warstwy terenu na mapie.</string>
<string name="quick_action_terrain_show">Pokaż teren</string>
<string name="quick_action_terrain_hide">Ukryj teren</string>
<string name="quick_action_show_hide_terrain">Pokaż / ukryj teren</string>
<string name="quick_action_show_hide_terrain">Pokaż lub ukryj teren</string>
<string name="download_slope_maps">Nachylenie</string>
<string name="terrain_empty_state_text">Włącz, aby wyświetlić cieniowanie wzniesień lub stoków. Możesz przeczytać więcej o tego rodzaju mapach na naszej stronie.</string>
<string name="shared_string_legend">Legenda</string>
@ -3700,9 +3700,9 @@
<string name="back_to_editing">Powrót do edycji</string>
<string name="quick_action_transport_hide">Ukryj transport publiczny</string>
<string name="quick_action_transport_show">Pokaż transport publiczny</string>
<string name="quick_action_show_hide_transport">Pokaż/ukryj transport publiczny</string>
<string name="create_edit_poi">Utwórz / Edytuj użyteczne miejsce</string>
<string name="add_edit_favorite">Dodaj / Edytuj Ulubione</string>
<string name="quick_action_show_hide_transport">Pokaż lub ukryj transport publiczny</string>
<string name="create_edit_poi">Utwórz lub edytuj użyteczne miejsce</string>
<string name="add_edit_favorite">Dodaj lub edytuj ulubione miejsce</string>
<string name="quick_action_switch_profile_descr">Przycisk akcji przełącza między wybranymi profilami.</string>
<string name="shared_string_add_profile">Dodaj profil</string>
<string name="change_application_profile">Zmiana profilu aplikacji</string>
@ -3910,7 +3910,7 @@
<string name="sort_name_descending">Nazwa: Z A</string>
<string name="sort_name_ascending">Nazwa: A Z</string>
<string name="what_is_new">Co nowego</string>
<string name="start_finish_icons">Ikony start/koniec</string>
<string name="start_finish_icons">Ikony startu i końca</string>
<string name="contour_lines_thanks">Dziękujemy za zakup \"Linii konturowych\"</string>
<string name="osm_live_payment_desc_hw">Subskrypcja naliczona za wybrany okres. Anuluj ją w AppGallery w dowolnym momencie.</string>
<string name="osm_live_payment_subscription_management_hw">Płatność zostanie pobrana z konta AppGallery po potwierdzeniu zakupu.
@ -3958,14 +3958,14 @@
<string name="message_you_need_add_two_points_to_show_graphs">Musisz dodać co najmniej dwa punkty</string>
<string name="subscription_payment_issue_title">Wystąpił problem z Twoją subskrypcją. Kliknij przycisk, aby przejść do ustawień subskrypcji Google Play i naprawić metodę płatności.</string>
<string name="subscription_on_hold_title">Subskrypcja OsmAnd Live jest wstrzymana</string>
<string name="user_login">Login</string>
<string name="user_login">Nazwa użytkownika</string>
<string name="login_open_street_map">Zaloguj się do OpenStreetMap</string>
<string name="login_open_street_map_org">Zaloguj się do OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Zaloguj się za pomocą OpenStreetMap</string>
<string name="open_street_map_login_mode">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.</string>
<string name="use_login_password">Użyj loginu i hasła</string>
<string name="use_login_password">Zaloguj się za pomocą nazwy użytkownika i hasła</string>
<string name="login_account">Konto</string>
<string name="osm_edit_close_note">Zamknij uwagę OSM</string>
<string name="osm_edit_comment_note">Skomentuj uwagę OSM</string>
@ -3973,7 +3973,7 @@
<string name="send_files_to_openstreetmap">Wyślij plik GPX do OpenStreetMap</string>
<string name="enter_text_separated">Wpisz tagi oddzielone przecinkami.</string>
<string name="gpx_upload_trackable_visibility_descr">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ą.</string>
<string name="osm_login_descr">Możesz zalogować się przy użyciu bezpiecznej metody OAuth lub użyć swojego loginu i hasła.</string>
<string name="osm_login_descr">Zaloguj się przy użyciu bezpiecznej metody autoryzacji OAuth lub użyj swojej nazwy użytkownika i hasła.</string>
<string name="shared_string_add_photo">Dodaj zdjęcie</string>
<string name="register_on_openplacereviews">Zarejestruj się w
\nOpenPlaceReviews.org</string>

View file

@ -3850,4 +3850,34 @@
<string name="poi_radar_tower">Torre de radar</string>
<string name="poi_parking_layby">Tapume</string>
<string name="poi_parking_rooftop">Terraço</string>
<string name="poi_diplomatic_services_citizen_services_no">Não</string>
<string name="poi_diplomatic_services_citizen_services_yes">Sim</string>
<string name="poi_diplomatic_services_immigrant_visas_no">Não</string>
<string name="poi_diplomatic_services_immigrant_visas_yes">Sim</string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">Não</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes">Sim</string>
<string name="poi_liaison_subnational">Subnacional</string>
<string name="poi_liaison_representative_office">Escritório de representação</string>
<string name="poi_liaison_liaison_office">Escritório</string>
<string name="poi_consulate_honorary_consul">Consul honorário</string>
<string name="poi_consulate_consulate_general">Consulado Geral</string>
<string name="poi_consulate_consular_office">Escritório consular</string>
<string name="poi_consulate_consular_agency">Agência consular</string>
<string name="poi_consulate_yes">Chefiado por um cônsul</string>
<string name="poi_embassy_residence">Residência</string>
<string name="poi_embassy_nunciature">Nunciatura</string>
<string name="poi_embassy_mission">Missão</string>
<string name="poi_embassy_interests_section">Seção de interesses</string>
<string name="poi_embassy_high_commission">Alto comissariado</string>
<string name="poi_embassy_delegation">Delegação</string>
<string name="poi_embassy_branch_embassy">Seção</string>
<string name="poi_embassy_yes">Chefiado por um embaixador</string>
<string name="poi_diplomatic_liaison">Ligação</string>
<string name="poi_diplomatic_embassy">Embaixada</string>
<string name="poi_diplomatic_services_citizen_services_filter">Serviços ao cidadão</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Vistos de imigrante</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Vistos de não imigrante</string>
<string name="poi_liaison_filter">Ligação</string>
<string name="poi_consulate_filter">Consulado</string>
<string name="poi_embassy_filter">Embaixada</string>
</resources>

View file

@ -3917,10 +3917,10 @@
<string name="use_native_pt">Desenvolvimento de transporte público nativo</string>
<string name="use_native_pt_desc">Mudar para cálculo de roteamento de transporte público em Java (seguro)</string>
<string name="what_is_new">O que há de novo</string>
<string name="perform_oauth_authorization_description">Entre no OAuth para usar os recursos de edição do osm</string>
<string name="perform_oauth_authorization_description">Entrar com OAuth para usar os recursos osmedit</string>
<string name="perform_oauth_authorization">Entrar via OAuth</string>
<string name="clear_osm_token">Limpar token do OpenStreetMap OAuth</string>
<string name="osm_edit_logout_success">Saída bem sucedida</string>
<string name="osm_edit_logout_success">Desconectado</string>
<string name="file_already_imported">O arquivo já foi importado para OsmAnd</string>
<string name="use_two_phase_routing">Use o algoritmo de roteamento 2-phase A *</string>
<string name="snowmobile_render_descr">Para dirigir em motos de neve com estradas e trilhas exclusivas.</string>
@ -3948,14 +3948,14 @@
<string name="subscription_paused_title">A assinatura do OsmAnd Live foi pausada</string>
<string name="subscription_on_hold_title">A assinatura do OsmAnd Live está em espera</string>
<string name="app_mode_gap">Diferença</string>
<string name="login_open_street_map">Entrar para OpenStreetMap</string>
<string name="login_open_street_map">Entrar com OpenStreetMap</string>
<string name="login_open_street_map_org">Entrar com OpenStreetMap.org</string>
<string name="open_street_map_login_mode">Você precisa entrar para enviar alterações novas ou modificadas.
<string name="open_street_map_login_mode">Entrar para carregar de alterações novas ou modificadas,
\n
\nVocê pode entrar usando o método OAuth seguro ou usar sua entrada e senha.</string>
<string name="use_login_password">Usar a entrada e senha</string>
\ncom OAuth ou usando seu nome de usuário e senha.</string>
<string name="use_login_password">Entrar com nome de usuário e senha</string>
<string name="login_account">Conta</string>
<string name="user_login">Entrar</string>
<string name="user_login">Nome de usuário</string>
<string name="sign_in_with_open_street_map">Entrar com o OpenStreetMap</string>
<string name="markers_history">Histórico de marcadores</string>
<string name="send_files_to_openstreetmap">Enviar arquivo GPX para OpenStreetMap</string>
@ -3966,14 +3966,26 @@
<string name="gpx_upload_trackable_visibility_descr">\"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.</string>
<string name="osm_edit_close_note">Fechar nota do OSM</string>
<string name="osm_edit_comment_note">Comentário de nota do OSM</string>
<string name="osm_login_descr">Você pode entrar usando o método OAuth seguro ou usar sua entrada e senha.</string>
<string name="osm_login_descr">Entrar usando o método OAuth seguro ou use seu nome de usuário e senha.</string>
<string name="shared_string_add_photo">Adicionar foto</string>
<string name="register_on_openplacereviews">Cadastre-se em
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">As fotos são fornecidas pelo projeto de dados abertos do OpenPlaceReviews.org. Para carregar suas fotos você precisa se inscrever no site.</string>
<string name="register_on_openplacereviews_desc">Entrar no site do projeto de dados abertos OpenPlaceReviews.org para enviar ainda mais fotos.</string>
<string name="register_opr_create_new_account">Criar nova conta</string>
<string name="register_opr_have_account">Eu já tenho uma conta</string>
<string name="shared_string_search_history">Histórico de busca</string>
<string name="app_mode_kayak">Caiaque</string>
<string name="app_mode_motorboat">Lancha</string>
<string name="add_to_mapillary">Adicionar ao Mapillary</string>
<string name="add_to_opr">Adicionar ao OpenPlaceReviews</string>
<string name="add_photos_descr">OsmAnd mostra fotos de várias fontes:
\nOpenPlaceReviews - fotos de POI;
\nMapillary - imagens de nível da rua;
\nWeb / Wikimedia - fotos de POI especificadas nos dados do OpenStreetMap.</string>
<string name="shared_string_resources">Recursos</string>
<string name="approximate_file_size">Tamanho aproximado do arquivo</string>
<string name="select_data_to_export">Selecione os dados a serem exportados para o arquivo.</string>
<string name="file_size_needed_for_import">Necessário para importação</string>
<string name="export_not_enough_space_descr">Seu dispositivo tem apenas %1$s livre. Libere espaço ou desmarque alguns itens para exportar.</string>
<string name="export_not_enough_space">Não há espaço suficiente</string>
</resources>

View file

@ -3835,4 +3835,34 @@
<string name="poi_gpx_point">Ponto GPX</string>
<string name="poi_radar_tower">Torre de radar</string>
<string name="poi_parking_layby">Área de repouso</string>
<string name="poi_diplomatic_services_citizen_services_no">Não</string>
<string name="poi_diplomatic_services_citizen_services_yes">Sim</string>
<string name="poi_diplomatic_services_immigrant_visas_no">Não</string>
<string name="poi_diplomatic_services_immigrant_visas_yes">Sim</string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">Não</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes">Sim</string>
<string name="poi_liaison_subnational">Subnacional</string>
<string name="poi_liaison_representative_office">Escritório de representação</string>
<string name="poi_liaison_liaison_office">Escritório</string>
<string name="poi_consulate_honorary_consul">Cônsul honorário</string>
<string name="poi_consulate_consulate_general">Consulado-geral</string>
<string name="poi_consulate_consular_office">Escritório consular</string>
<string name="poi_consulate_consular_agency">Agência consular</string>
<string name="poi_consulate_yes">Liderado por um cônsul</string>
<string name="poi_embassy_residence">Residência</string>
<string name="poi_embassy_nunciature">Nunciatura</string>
<string name="poi_embassy_mission">Missão</string>
<string name="poi_embassy_interests_section">Secção de interesses</string>
<string name="poi_embassy_high_commission">Alta comissão</string>
<string name="poi_embassy_delegation">Delegação</string>
<string name="poi_embassy_branch_embassy">Secção</string>
<string name="poi_embassy_yes">Liderado por um embaixador</string>
<string name="poi_diplomatic_liaison">Ligação</string>
<string name="poi_diplomatic_embassy">Embaixada</string>
<string name="poi_diplomatic_services_citizen_services_filter">Serviços ao cidadão</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Vistos de imigrantes</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Vistos de não-imigrantes</string>
<string name="poi_liaison_filter">Ligação</string>
<string name="poi_consulate_filter">Consulado</string>
<string name="poi_embassy_filter">Embaixada</string>
</resources>

View file

@ -3973,11 +3973,26 @@
<string name="gpx_upload_trackable_visibility_descr">Rastreável significa que o rastreamento não aparecerá em nenhuma lista pública, mas os pontos de rastreamento a partir dele ainda estarão disponíveis através da API pública do GPS com carimbos de tempo. Outros utilizadores só poderão descarregar pontos de rastreamento processados do seu rastreamento que não podem ser associados diretamente a si.</string>
<string name="osm_edit_close_note">Fechar nota do OSM</string>
<string name="osm_edit_comment_note">Comentário de nota do OSM</string>
<string name="osm_login_descr">Pode entrar a usar o método seguro OAuth ou usar o seu login e palavra-passe.</string>
<string name="osm_login_descr">Faça login a usar o método seguro OAuth ou use o seu nome de utilizador e a palavra-passe.</string>
<string name="shared_string_add_photo">Adicionar fotos</string>
<string name="register_on_openplacereviews">Cadastre-se em
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">As fotos são fornecidas pelo projeto de dados abertos OpenPlaceReviews.org. Para enviar as suas fotos precisa cadastrar-se no site.</string>
<string name="register_on_openplacereviews_desc">Faça login no site do projeto de dados abertos OpenPlaceReviews.org para enviar ainda mais fotos.</string>
<string name="register_opr_create_new_account">Criar uma conta</string>
<string name="register_opr_have_account">Já tenho uma conta</string>
<string name="shared_string_search_history">Histórico de pesquisa</string>
<string name="app_mode_kayak">Caiaque</string>
<string name="app_mode_motorboat">Barco a motor</string>
<string name="shared_string_resources">Recursos</string>
<string name="approximate_file_size">Tamanho aproximado do ficheiro</string>
<string name="select_data_to_export">Selecione os dados a serem exportados para o ficheiro.</string>
<string name="file_size_needed_for_import">Necessário para a importação</string>
<string name="export_not_enough_space_descr">O seu aparelho só tem %1$s livre. Por favor, libere algum espaço ou desmarque alguns itens para exportar.</string>
<string name="export_not_enough_space">Não há espaço suficiente</string>
<string name="add_to_mapillary">Adicionar ao Mapillary</string>
<string name="add_to_opr">Adicionar ao OpenPlaceReviews</string>
<string name="add_photos_descr">OsmAnd mostra fotos de várias fontes:
\nOpenPlaceReviews - fotos de POI;
\nMapillary - imagens ao nível da rua;
\nWeb / Wikimedia - fotos de POI especificadas nos dados do OpenStreetMap.</string>
</resources>

View file

@ -3969,4 +3969,16 @@
<string name="register_opr_have_account">У меня уже есть аккаунт</string>
<string name="shared_string_search_history">История поиска</string>
<string name="app_mode_motorboat">Моторная лодка</string>
<string name="add_to_opr">Добавить в OpenPlaceReviews</string>
<string name="add_to_mapillary">Добавить в Mapillary</string>
<string name="add_photos_descr">OsmAnd показывает фотографии из нескольких источников:
\nOpenPlaceReviews — фотогорафии POI;
\nMapillary — изображения улиц;
\nWeb / Wikimedia — фотографии POI, указанные в данных OpenStreetMap.</string>
<string name="shared_string_resources">Ресурсы</string>
<string name="approximate_file_size">Примерный размер файла</string>
<string name="file_size_needed_for_import">Требуется для импорта</string>
<string name="select_data_to_export">Выберите данные для экспорта в файл.</string>
<string name="export_not_enough_space_descr">На устройстве свободно только %1$s. Освободите место в хранилище или снимите выбор с некоторых экспортируемых элементов.</string>
<string name="export_not_enough_space">Недостаточно места</string>
</resources>

View file

@ -3846,4 +3846,34 @@
<string name="poi_parking_rooftop">Cobertura</string>
<string name="poi_gpx_point">Puntu GPX</string>
<string name="poi_radar_tower">Torre ràdar</string>
<string name="poi_diplomatic_services_citizen_services_no">Nono</string>
<string name="poi_diplomatic_services_citizen_services_yes">Eja</string>
<string name="poi_diplomatic_services_immigrant_visas_no">Nono</string>
<string name="poi_diplomatic_services_immigrant_visas_yes">Eja</string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">Nono</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes">Eja</string>
<string name="poi_liaison_liaison_office">Ufìtziu</string>
<string name="poi_consulate_consulate_general">Consoladu generale</string>
<string name="poi_embassy_residence">Residèntzia</string>
<string name="poi_embassy_mission">Missione</string>
<string name="poi_embassy_high_commission">Commissione arta</string>
<string name="poi_embassy_delegation">Delegatzione</string>
<string name="poi_diplomatic_embassy">Ambassada</string>
<string name="poi_consulate_filter">Consoladu</string>
<string name="poi_embassy_filter">Ambassada</string>
<string name="poi_liaison_subnational">Suta-natzionale</string>
<string name="poi_liaison_representative_office">Ufìtziu de rapresentàntzia</string>
<string name="poi_consulate_honorary_consul">Cònsole onoràriu</string>
<string name="poi_consulate_consular_office">Ufìtziu consolare</string>
<string name="poi_consulate_consular_agency">Agentzia consolare</string>
<string name="poi_consulate_yes">Ghiadu dae unu cònsole</string>
<string name="poi_embassy_nunciature">Nuntziadura</string>
<string name="poi_embassy_interests_section">Setzione de interessos</string>
<string name="poi_embassy_branch_embassy">Filiale</string>
<string name="poi_embassy_yes">Ghiada dae un\'ambassadore</string>
<string name="poi_diplomatic_liaison">Ufìtziu de collegamentu</string>
<string name="poi_diplomatic_services_citizen_services_filter">Servìtzios pro sos tzitadinos</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Vistos pro immigrantes</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Vistos pro no immigrantes</string>
<string name="poi_liaison_filter">Ufìtziu de collegamentu</string>
</resources>

View file

@ -786,7 +786,7 @@
<string name="use_fluorescent_overlays">Subrapositziones fluorescentes</string>
<string name="use_fluorescent_overlays_descr">Imprea colores fluorescentes pro visualizzare rastas e àndalas.</string>
<string name="offline_edition">Modìficas chene lìnia</string>
<string name="offline_edition_descr">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.</string>
<string name="offline_edition_descr">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.</string>
<string name="update_poi_does_not_change_indexes">Sa modìficas de sos PDI intre saplicatzione non tenent efetos in sas mapas iscarrigadas, sunt imbetzes sarvadas in su dispositivu.</string>
<string name="local_openstreetmap_were_uploaded">{0} PDI/notas carrigados/as</string>
<string name="local_openstreetmap_upload">Càrriga sa modìfica in OSM</string>
@ -2639,7 +2639,7 @@
<string name="copy_location_name">Còpia sa positzione/su nùmene de su PDI</string>
<string name="toast_empty_name_error">Logu chene nùmene</string>
<string name="show_closed_notes">Ammustra sas notas serradas</string>
<string name="switch_osm_notes_visibility_desc">Ammustra/cua sas notas OSM in sa mapa.</string>
<string name="switch_osm_notes_visibility_desc">Ammustra o cua sas notas OSM in sa mapa.</string>
<string name="gpx_file_desc">GPX - adatu pro s\'esportatzione a JOSM o a àteros editores OSM.</string>
<string name="osc_file_desc">OSC - adatu pro s\'esportatzione in OpenStreetmap.</string>
<string name="shared_string_gpx_file">Documentu GPX</string>
@ -3084,9 +3084,9 @@
<string name="application_profiles_descr">Ischerta sos profilos chi cheres chi siant visìbiles in saplicatzione.</string>
<string name="application_profiles">Profilos de s\'aplicatzione</string>
<string name="quick_action_need_to_add_item_to_list">Annanghe a su mancu un\'elementu a sa lista in sas impostatziones pro sas atziones lestras</string>
<string name="routing_attr_piste_type_downhill_name">Iscì alpinu/de achirrada</string>
<string name="routing_attr_piste_type_downhill_name">Iscì alpinu e de achirrada</string>
<string name="routing_attr_piste_type_downhill_description">Pistas pro iscì alpinu o de achirrada e atzessu a sos impiantos de artiada.</string>
<string name="routing_attr_piste_type_nordic_name">Iscì de fundu/nòrdicu</string>
<string name="routing_attr_piste_type_nordic_name">Iscì de fundu e nòrdicu</string>
<string name="routing_attr_piste_type_nordic_description">Pistas pro s\'iscì nòrdicu o de fundu.</string>
<string name="routing_attr_piste_type_skitour_name">Iscì-alpinismu</string>
<string name="routing_attr_piste_type_skitour_description">Àndalas pro s\'iscì-alpinismu.</string>
@ -3577,7 +3577,7 @@
<string name="shared_string_hillshade">Umbraduras de sos rilievos</string>
<string name="n_items_of_z">%1$s de %2$s</string>
<string name="download_slope_maps">Pistas</string>
<string name="quick_action_show_hide_terrain">Ammustra / cua su terrinu</string>
<string name="quick_action_show_hide_terrain">Ammustra o cua su terrinu</string>
<string name="quick_action_terrain_hide">Cua su terrinu</string>
<string name="quick_action_terrain_show">Ammustra su terrinu</string>
<string name="quick_action_terrain_descr">Unu butone pro ammustrare o cuare s\'istratu de su terrinu in sa mapa.</string>
@ -3695,11 +3695,11 @@
<string name="additional_actions_descr">Podes atzèdere a custas atziones incarchende su butone \"%1$s\".</string>
<string name="quick_action_transport_hide">Cua sos trasportos pùblicos</string>
<string name="quick_action_transport_show">Ammustra sos trasportos pùblicos</string>
<string name="quick_action_show_hide_transport">Ammustra/cua sos trasportos pùblicos</string>
<string name="quick_action_show_hide_transport">Ammustra o cua sos trasportos pùblicos</string>
<string name="quick_action_transport_descr">Butone pro ammustrare o cuare sos trasportos pùblicos in sa mapa.</string>
<string name="create_edit_poi">Crea / Modìfica unu PDI</string>
<string name="create_edit_poi">Crea o modìfica unu PDI</string>
<string name="parking_positions">Logos de parchègiu</string>
<string name="add_edit_favorite">Annanghe / Modìfica unu preferidu</string>
<string name="add_edit_favorite">Annanghe o modìfica unu preferidu</string>
<string name="reset_deafult_order">Riprìstina s\'òrdine predefinidu de sos elementos</string>
<string name="back_to_editing">Torra a modificare</string>
<string name="quick_action_switch_profile_descr">Su butone de atzione faghet colare dae unu profilu ischertadu a s\'àteru.</string>
@ -3852,7 +3852,7 @@
<string name="gpx_monitoring_start">Sighi cun sa registratzione de su biàgiu</string>
<string name="marker_save_as_track">Sarva comente documentu de rasta</string>
<string name="number_of_gpx_files_selected_pattern">%s documentos de rasta ischertados</string>
<string name="save_global_track_interval_descr">Dislinda sintervallu pro sa registratzione generale de sas rastas (abilitadu pro mèdiu de su widget registratzione GPX in sa mapa).</string>
<string name="save_global_track_interval_descr">Dislinda sintervallu pro sa registratzione generale de sas rastas (allutu pro mèdiu de su widget \'Registratzione GPX\' in sa mapa).</string>
<string name="monitoring_control_start">Registra</string>
<string name="shared_string_gpx_route">Àndala de una rasta</string>
<string name="follow_track">Sighi sa rasta</string>
@ -3887,7 +3887,7 @@
<string name="shared_string_redo">Torra a fàghere</string>
<string name="release_3_8">• 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 @@
<string name="sort_last_modified">Ùrtima modìfica</string>
<string name="sort_name_descending">Nùmene: Z A</string>
<string name="sort_name_ascending">Nùmene: A Z</string>
<string name="start_finish_icons">Iconas de incumintzu/fine</string>
<string name="start_finish_icons">Iconas de incumintzu e fine</string>
<string name="contour_lines_thanks">Gràtzias pro àere comporadu \'Curvas de livellu\'</string>
<string name="osm_live_payment_desc_hw">Costu periòdicu de s\'abbonamentu. Lu podes anullare in AppGallery cando boles.</string>
<string name="osm_live_payment_subscription_management_hw">Su pagamentu at a èssere addebitadu a su contu tuo de AppGallery cando sa còmpora at a èssere cunfirmada.
@ -3923,7 +3923,7 @@
<string name="perform_oauth_authorization_description">Intra cun OAuth pro impreare sas funtzionalidades osmedit</string>
<string name="perform_oauth_authorization">Intra impreende OAuth</string>
<string name="clear_osm_token">Iscantzella su getone OAuth de OpenStreetMap</string>
<string name="osm_edit_logout_success">Essida fata chene problemas</string>
<string name="osm_edit_logout_success">Essidu</string>
<string name="file_already_imported">Su documentu est giai importadu in OsmAnd</string>
<string name="use_two_phase_routing">Imprea un\'algoritmu de càrculu de s\'àndala A* a duas fases</string>
<string name="snowmobile_render_descr">Pro sa ghia de motoislitas cun caminos e rastas dedicados.</string>
@ -3947,13 +3947,13 @@
<string name="message_you_need_add_two_points_to_show_graphs">Depes annànghere a su mancu duos puntos</string>
<string name="login_open_street_map">Intra in OpenStreetMap</string>
<string name="login_open_street_map_org">Intra in OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Identìfica·ti cun OpenStreetMap</string>
<string name="open_street_map_login_mode">Depes intrare pro pòdere carrigare modìficas noas o mudadas.
<string name="sign_in_with_open_street_map">Intra cun OpenStreetMap</string>
<string name="open_street_map_login_mode">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.</string>
<string name="use_login_password">Imprea un\'identificadore e una crae de intrada</string>
\nimpreende su mètodu seguru OAuth o cun su nùmene de impreadore tuo e sa crae de intrada tua.</string>
<string name="use_login_password">Intra cun unu nùmene de impreadore e una crae de intrada</string>
<string name="login_account">Contu</string>
<string name="user_login">Identificadore</string>
<string name="user_login">Nùmene impreadore</string>
<string name="manage_subscription">Amministra s\'abbonamentu</string>
<string name="subscription_payment_issue_title">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.</string>
<string name="subscription_expired_title">S\'abbonamentu de OsmAnd Live est iscadidu</string>
@ -3962,17 +3962,34 @@
<string name="markers_history">Cronologia de sos marcadores</string>
<string name="send_files_to_openstreetmap">Imbia unu documentu GPX a OpenStreetMap</string>
<string name="enter_text_separated">Inserta sas etichetas iscrobadas dae vìrgulas.</string>
<string name="gpx_upload_public_visibility_descr">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.</string>
<string name="gpx_upload_private_visibility_descr">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.</string>
<string name="gpx_upload_identifiable_visibility_descr">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.</string>
<string name="gpx_upload_trackable_visibility_descr">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.</string>
<string name="gpx_upload_public_visibility_descr">\"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.</string>
<string name="gpx_upload_private_visibility_descr">\"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.</string>
<string name="gpx_upload_identifiable_visibility_descr">\"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.</string>
<string name="gpx_upload_trackable_visibility_descr">\"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.</string>
<string name="osm_edit_close_note">Serra sa nota de OSM</string>
<string name="osm_edit_comment_note">Cummenta sa nota de OSM</string>
<string name="osm_login_descr">Podes intrare impreende su mètodu seguru OAuth o cun su nùmene tuo e sa crae de intrada tua.</string>
<string name="osm_login_descr">Intra impreende su mètodu seguru OAuth o cun su nùmene de impreadore tuo e sa crae de intrada tua.</string>
<string name="shared_string_add_photo">Annanghe una fotografia</string>
<string name="register_on_openplacereviews">Registra·ti in
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">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.</string>
<string name="register_on_openplacereviews_desc">Intra in su situ de su progetu a datos abertos OpenPlaceReviews.org. pro carrigare fintzas àteras fotografias.</string>
<string name="register_opr_create_new_account">Crea unu contu nou</string>
<string name="register_opr_have_account">Tèngio giai unu contu</string>
<string name="shared_string_search_history">Cronologia de chirca</string>
<string name="app_mode_kayak">Kàyak</string>
<string name="app_mode_motorboat">Motoscafu</string>
<string name="add_to_mapillary">Annanghe a Mapillary</string>
<string name="add_to_opr">Annanghe a OpenPlaceReviews</string>
<string name="add_photos_descr">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.</string>
<string name="shared_string_resources">Risursas</string>
<string name="approximate_file_size">Mannària aprossimativa de su documentu</string>
<string name="select_data_to_export">Ischerta sos datos de esportare in su documentu.</string>
<string name="file_size_needed_for_import">Netzessàriu pro s\'importatzione</string>
<string name="export_not_enough_space_descr">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.</string>
<string name="export_not_enough_space">Non b\'at logu bastante</string>
<string name="select_groups_for_import">Ischerta sos grupos de importare.</string>
<string name="select_items_for_import">Ischerta sos elementos de importare.</string>
</resources>

View file

@ -3922,10 +3922,10 @@
<string name="use_native_pt">Natívna hromadná doprava (vo vývoji)</string>
<string name="use_native_pt_desc">Prepnúť na výpočet trasy hromadnej dopravy v Jave (bezpečné)</string>
<string name="what_is_new">Čo je nové</string>
<string name="perform_oauth_authorization_description">Vykonať prihlásenie cez OAuth pre použitie funkcií upravovania OSM</string>
<string name="perform_oauth_authorization_description">Prihláste sa cez OAuth pre použitie funkcií upravovania OSM</string>
<string name="perform_oauth_authorization">Prihlásiť pomocou OAuth</string>
<string name="clear_osm_token">Vymazať token OpenStreetMap OAuth</string>
<string name="osm_edit_logout_success">Odhlásenie úspešné</string>
<string name="osm_edit_logout_success">Odhlásené</string>
<string name="snowmobile_render_descr">Pre jazdu na snežnom vozidle po na to určených cestách.</string>
<string name="file_already_imported">Súbor je už importovaný v OsmAnd</string>
<string name="use_two_phase_routing">Použiť dvojfázový algoritmus A* na výpočet trasy</string>
@ -3953,13 +3953,13 @@
<string name="subscription_expired_title">Predplatné OsmAnd Live skončilo</string>
<string name="subscription_paused_title">Predplatné OsmAnd Live je pozastavené</string>
<string name="subscription_on_hold_title">Predplatné OsmAnd Live je zablokované</string>
<string name="login_open_street_map">Prihlásiť sa do OpenStreetMap</string>
<string name="login_open_street_map_org">Prihlásiť sa do OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Zaregistrovať sa do OpenStreetMap</string>
<string name="open_street_map_login_mode">Musíte sa prihlásiť pre odoslanie nových alebo zmenených údajov.
<string name="login_open_street_map">Prihlásenie pre OpenStreetMap</string>
<string name="login_open_street_map_org">Prihlásenie pre OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Prihlásiť sa do OpenStreetMap</string>
<string name="open_street_map_login_mode">Prihláste sa pre odoslanie nových alebo zmenených údajov,
\n
\nMôžete sa prihlásiť pomocou bezpečnej metódy OAuth alebo pomocou mena a hesla.</string>
<string name="use_login_password">Použiť meno a heslo</string>
\nbuď pomocou metódy OAuth alebo pomocou mena a hesla.</string>
<string name="use_login_password">Prihlásiť sa menom a heslom</string>
<string name="login_account">Účet</string>
<string name="user_login">Prihlasovacie meno</string>
<string name="markers_history">História značiek</string>
@ -3967,14 +3967,28 @@
<string name="enter_text_separated">Zadajte značky oddelené čiarkou.</string>
<string name="osm_edit_close_note">Zatvoriť OSM poznámku</string>
<string name="osm_edit_comment_note">Komentovať OSM poznámku</string>
<string name="osm_login_descr">Môžete sa prihlásiť bezpečnou metódou OAuth alebo použite meno a heslo.</string>
<string name="osm_login_descr">Prihláste sa bezpečnou metódou OAuth alebo použite meno a heslo.</string>
<string name="shared_string_add_photo">Pridať foto</string>
<string name="register_on_openplacereviews">Zaregistrovať na
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">Fotografie sú poskytované projektom OpenPlaceReviews.org s otvorenými dátami. Na odoslanie vašich fotiek sa musíte zaregistrovať na webovej stránke.</string>
<string name="register_on_openplacereviews_desc">Prihláste sa na webstránke projektu OpenPlaceReviews.org s otvorenými dátami pre odoslanie ďalších fotografií.</string>
<string name="register_opr_create_new_account">Vytvoriť nový účet</string>
<string name="register_opr_have_account">Už mám účet</string>
<string name="shared_string_search_history">História hľadania</string>
<string name="app_mode_kayak">Kajak</string>
<string name="app_mode_motorboat">Motorový čln</string>
<string name="add_to_mapillary">Pridať do Mapillary</string>
<string name="add_to_opr">Pridať do OpenPlaceReviews</string>
<string name="add_photos_descr">OsmAnd szobrazuje fotografie z rôznych zdrojov:
\nOpenPlaceReviews - fotografie bodov záujmu;
\nMapillary - fotografie z ulice;
\nWeb / Wikimedia - fotografie bodov záujmu špeficikované v údajoch OpenStreetMap.</string>
<string name="shared_string_resources">Zdroje</string>
<string name="approximate_file_size">Približná veľkosť súboru</string>
<string name="select_data_to_export">Zvoľte údaje na export do súboru.</string>
<string name="file_size_needed_for_import">Potrebné pre import</string>
<string name="export_not_enough_space_descr">Na vašom zariadení je len %1$s voľného miesta. Prosím uvoľnite miesto alebo zrušte niektoré položky z exportu.</string>
<string name="export_not_enough_space">Nie je dostatok miesta</string>
<string name="select_groups_for_import">Zvoľte skupiny, ktoré budú importované.</string>
<string name="select_items_for_import">Zvoľte položky, ktoré budú importované.</string>
</resources>

View file

@ -3815,4 +3815,51 @@
<string name="poi_volcano_type_caldera">Калдера</string>
<string name="poi_volcano_type_maar">Мар</string>
<string name="poi_traffic_signals_arrow_no">Стрелица: не</string>
<string name="poi_departures_board_no">Табла одласка: не</string>
<string name="poi_diplomatic_services_citizen_services_no">Не</string>
<string name="poi_diplomatic_services_citizen_services_yes">Да</string>
<string name="poi_diplomatic_services_immigrant_visas_no">Не</string>
<string name="poi_diplomatic_services_immigrant_visas_yes">Да</string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">Не</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes">Да</string>
<string name="poi_liaison_subnational">Поднационални</string>
<string name="poi_liaison_representative_office">Представништво</string>
<string name="poi_liaison_liaison_office">Канцеларија</string>
<string name="poi_consulate_honorary_consul">Почасни конзулат</string>
<string name="poi_consulate_consulate_general">Генерални конзулат</string>
<string name="poi_consulate_consular_office">Конзуларна канцеларија</string>
<string name="poi_consulate_consular_agency">Конзуларна агенција</string>
<string name="poi_consulate_yes">На челу са конзулом</string>
<string name="poi_embassy_residence">Резиденција</string>
<string name="poi_embassy_nunciature">Нунцијатура</string>
<string name="poi_embassy_mission">Мисија</string>
<string name="poi_embassy_interests_section">Интересни</string>
<string name="poi_embassy_high_commission">Висока комисија</string>
<string name="poi_embassy_delegation">Делегација</string>
<string name="poi_embassy_branch_embassy">Подружница</string>
<string name="poi_embassy_yes">На челу са амбасадором</string>
<string name="poi_diplomatic_liaison">Посредник</string>
<string name="poi_diplomatic_embassy">Амбасада</string>
<string name="poi_radar_tower">Радарски торањ</string>
<string name="poi_parking_layby">Паркинг</string>
<string name="poi_parking_sheds">Паркинг</string>
<string name="poi_parking_rooftop">Таван</string>
<string name="poi_gpx_point">ГПКС тачка</string>
<string name="poi_fuel_lng">ЛНГ</string>
<string name="poi_nuts">Продавница ораха</string>
<string name="poi_beehive">Кошница</string>
<string name="poi_departures_board_timetable">Распоред</string>
<string name="poi_departures_board_realtime">Стварно време</string>
<string name="poi_departures_board_delay">Кашњење</string>
<string name="poi_departures_board_yes">Да</string>
<string name="poi_elevator">Лифт</string>
<string name="poi_recycling_small_electrical_appliances">Мали електрични уређаји</string>
<string name="poi_diplomatic_services_citizen_services_filter">Услуге за грађане</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Имигрантске визе</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Неимигрантске визе</string>
<string name="poi_liaison_filter">Посредник</string>
<string name="poi_consulate_filter">Конзулат</string>
<string name="poi_embassy_filter">Амбасада</string>
<string name="poi_departures_board">Табла</string>
<string name="poi_drinking_water_refill">Доливање воде за пиће</string>
</resources>

View file

@ -3865,8 +3865,35 @@
<string name="plan_route_change_route_type_after">Промените врсту руте након</string>
<string name="what_is_new">Шта је ново</string>
<string name="shared_string_file_name">Име фајла</string>
<string name="number_of_gpx_files_selected_pattern"></string>
<string name="number_of_gpx_files_selected_pattern"/>
<string name="gpx_monitoring_stop">Паузирај снимање пута</string>
<string name="one_point_error">Додајте бар две тачке.</string>
<string name="osm_edit_logout_success">Одјава успешна</string>
<string name="gpx_upload_private_visibility_descr">„Приватно“ значи да се траг не појављује ни на једној јавној листи, али су тачке праћења у њему у нехронолошком редоследу доступне путем јавног ГПС АПИ-ја без временских ознака.</string>
<string name="gpx_upload_identifiable_visibility_descr">„Могуће је идентификовати“ значи да ће се траг јавно приказати у вашим ГПС траговима и у јавним списковима ГПС трагова, тј. други корисници ће моћи да преузму необрађени траг и повежу га са вашим корисничким именом. Јавни подаци о временским тачкама трага из ГПС АПИ-ја који се сервирају путем АПИ-ја за тачке праћења имаће референцу на вашу оригиналну страницу праћења.</string>
<string name="gpx_upload_trackable_visibility_descr">„Следљиво“ значи да се траг не приказује нигде на јавним листама, али обрађене тачке праћења са временским ознакама у њима (које не могу бити директно повезане са вама) иду кроз преузимања са јавног ГПС АПИ-ја.</string>
<string name="osm_edit_close_note">Затвори ОСМ белешку</string>
<string name="osm_edit_comment_note">Коментар ОСМ напомене</string>
<string name="osm_login_descr">Пријавите се помоћу сигурне методе ОАутх или користите своје корисничко име и лозинку.</string>
<string name="shared_string_add_photo">Додај фотографију</string>
<string name="register_on_openplacereviews">Региструјте се на
\nOpenPlaceReviews.</string>
<string name="register_on_openplacereviews_desc">Пријавите се на веб локацију пројекта отворених података OpenPlaceReviews.орг да бисте отпремили још више фотографија.</string>
<string name="register_opr_create_new_account">Направите нови налог</string>
<string name="register_opr_have_account">Већ имам</string>
<string name="shared_string_search_history">Претрага</string>
<string name="app_mode_kayak">Кајак</string>
<string name="app_mode_motorboat">Моторни чамац</string>
<string name="add_to_mapillary">Додај у Мапилари</string>
<string name="add_to_opr">Додај у ОпенПлејсРевјуз</string>
<string name="add_photos_descr">ОсмАнд приказује фотографије из неколико извора:
\nОпенПлејсРевјуз - ПОИ фотографије;
\nМапилари - слике на нивоу улице;
\nВеб / Викимедиа - ПОИ фотографије наведене у подацима ОпенСтритМап.</string>
<string name="shared_string_resources">Ресурси</string>
<string name="approximate_file_size">Приближна величина датотеке</string>
<string name="select_data_to_export">Изаберите податке за извоз у датотеку.</string>
<string name="file_size_needed_for_import">Потребно за увоз</string>
<string name="export_not_enough_space_descr">Уређај има слободно само %1$s. Ослободите мало простора или поништите одабир неких предмета за извоз.</string>
<string name="export_not_enough_space">Нема довољно простора</string>
</resources>

View file

@ -2842,7 +2842,7 @@ Vänligen tillhandahåll fullständig kod</string>
<string name="rendering_attr_tracktype_grade5_name">Mjuk</string>
<string name="routeInfo_tracktype_name">Ytfasthet</string>
<string name="shared_string_file_is_saved">%s är sparat</string>
<string name="shared_string_open_track">Öppet spår</string>
<string name="shared_string_open_track">Öppna spår</string>
<string name="shared_string_track_is_saved">Spår %s är sparat</string>
<string name="gpx_join_gaps">Ta bort mellanrum</string>
<string name="temporary_conditional_routing">Överväg tillfälliga begränsningar</string>

View file

@ -3130,4 +3130,6 @@
<string name="poi_fire_hydrant_type_pillar">Sütun</string>
<string name="poi_fire_hydrant_type_pond">Gölet</string>
<string name="poi_fire_hydrant_style_water_source_pond">Gölet</string>
<string name="poi_consulate_filter">Konsolosluk</string>
<string name="poi_embassy_filter">Büyük elçilik</string>
</resources>

View file

@ -535,7 +535,7 @@
<string name="use_fluorescent_overlays">Floresan üst katmanlar</string>
<string name="use_fluorescent_overlays_descr">İzlenen yolları ve rotaları görüntülemek için floresan renkler kullan.</string>
<string name="offline_edition">Çevrim dışı düzenleme</string>
<string name="offline_edition_descr">Her zaman çevrim dışı düzenlemeyi kullanın.</string>
<string name="offline_edition_descr">Çevrim dışı düzenleme etkinleştirilirse, değişiklikler önce yerel olarak kaydedilecek ve istek üzerine karşıya yüklenecek, aksi takdirde değişiklikler hemen karşıya yüklenecek.</string>
<string name="update_poi_does_not_change_indexes">Uygulama içinde POI değişiklikleri indirilen harita dosyalarını etkilemez, bunun yerine değişiklikler cihazınızda bir dosya olarak kaydedilir.</string>
<string name="local_openstreetmap_uploading">Yükleniyor…</string>
<string name="local_openstreetmap_were_uploaded">{0} POI/not karşıya yüklendi</string>
@ -1236,7 +1236,7 @@
<string name="shared_string_dismiss">Vazgeç</string>
<string name="shared_string_selected_lowercase">seçili</string>
<string name="shared_string_deselect">Seçimini kaldırın</string>
<string name="shared_string_deselect_all">Tüm Seçimleri Kaldır</string>
<string name="shared_string_deselect_all">Tüm seçimleri kaldır</string>
<string name="shared_string_collapse">Daralt</string>
<string name="shared_string_tracks">İzlenen yollar</string>
<string name="shared_string_currently_recording_track">Şu anda kaydedilen yol</string>
@ -1854,7 +1854,7 @@
<string name="reports_for">Şunun için rapor</string>
<string name="data_is_not_available">Veri mevcut değil</string>
<string name="shared_string_status">Durum</string>
<string name="shared_string_save_changes">Değişiklikleri Kaydet</string>
<string name="shared_string_save_changes">Değişiklikleri kaydet</string>
<string name="shared_string_email_address">E-posta adresi</string>
<string name="rendering_attr_hideUnderground_name">Yeraltı nesneleri</string>
<string name="shared_string_read_more">Devamını oku</string>
@ -1943,7 +1943,7 @@
<string name="storage_permission_restart_is_required">Uygulamanın şimdi harici depolamaya yazma izni var, ancak bunu yapmak için yeniden başlatılması gerekir.</string>
<string name="full_report">Tam rapor</string>
<string name="open_street_map_login_and_pass">OSM kullanıcı adı ve parolası</string>
<string name="file_name_containes_illegal_char">Dosya adı geçersiz karakter içermektedir</string>
<string name="file_name_containes_illegal_char">Dosya adında geçersiz karakter</string>
<string name="shared_string_is_open_24_7">7/24 açık</string>
<string name="storage_directory_card">Bellek kartı</string>
<string name="coords_format">Koordinat biçimi</string>
@ -2805,7 +2805,7 @@
<string name="rendering_attr_hidePOILabels_name">POI etiketleri</string>
<string name="will_open_tomorrow_at">Yarın şu saatte açılıyor</string>
<string name="show_closed_notes">Kapalı notları göster</string>
<string name="switch_osm_notes_visibility_desc">Haritada OSM notlarını göster/gizle.</string>
<string name="switch_osm_notes_visibility_desc">Haritada OSM notlarını göster veya gizle.</string>
<string name="gpx_file_desc">GPX - JOSM veya diğer OSM düzenleyicilerine aktarmak için uygundur.</string>
<string name="osc_file_desc">OSC - OSM\'ye aktarmak için uygundur.</string>
<string name="osc_file">OSC dosyası</string>
@ -3156,7 +3156,7 @@
<string name="empty_state_favourites_desc">Sık Kullanılanları içe aktarın veya haritadaki noktaları işaretleyerek ekleyin.</string>
<string name="import_track">GPX dosyasını içe aktar</string>
<string name="import_track_desc">%1$s dosyası ara noktalar içermiyor, izlenen yol olarak içe aktar\?</string>
<string name="move_point">Hareket Noktası</string>
<string name="move_point">Noktayı Taşı</string>
<string name="osm_recipients_label">OSM alıcıları</string>
<string name="total_donations">Toplam bağış</string>
<string name="day_off_label">kapalı</string>
@ -3186,9 +3186,9 @@
<string name="quick_action_day_night_switch_mode">Gündüz/gece modunu değiştir</string>
<string name="routing_attr_avoid_sett_name">Parke veya kaldırım taşı yok</string>
<string name="quick_action_need_to_add_item_to_list">\'Hızlı eylem\' ayarlarında listeye en az bir öge ekleyin</string>
<string name="routing_attr_piste_type_downhill_name">Alp/yokuş aşağı kayak</string>
<string name="routing_attr_piste_type_downhill_name">Alp ve yokuş aşağı kayak</string>
<string name="routing_attr_piste_type_downhill_description">Alp veya yokuş aşağı kayak ve kayak teleferiklerine erişim için yamaçlar.</string>
<string name="routing_attr_piste_type_nordic_name">Kros/İskandinav kayak</string>
<string name="routing_attr_piste_type_nordic_name">Kros ve İskandinav kayak</string>
<string name="routing_attr_piste_type_nordic_description">İskandinav veya kros kayağı pistleri.</string>
<string name="routing_attr_piste_type_skitour_name">Kayak turu</string>
<string name="routing_attr_piste_type_skitour_description">Kayak turu rotaları.</string>
@ -3322,7 +3322,7 @@
<string name="route_start_point">Başlangıç noktası</string>
<string name="default_speed_dialog_msg">Bilinmeyen yol türleri için varış zamanını tahmin eder ve tüm yollar için hızı sınırlar (güzergahı etkileyebilir)</string>
<string name="track_saved">Yol izi kaydedildi</string>
<string name="empty_filename">Dosya adı boş</string>
<string name="empty_filename">Boş dosya adı</string>
<string name="shared_string_revert">Eski haline döndür</string>
<string name="quick_action_directions_from_desc">Ekranın, kalkış noktasını ortalamasını sağlamak için bir düğme. Daha sonra hedef belirlemeyi veya rota hesaplamasını tetiklemeyi isteyecektir.</string>
<string name="rendering_attr_showCycleNodeNetworkRoutes_name">Düğüm ağı bisiklet rotalarını göster</string>
@ -3384,7 +3384,7 @@
<string name="login_and_pass">Kullanıcı adı ve parola</string>
<string name="plugin_global_prefs_info">Bu eklenti ayarları geneldir ve tüm profiller için geçerlidir</string>
<string name="osm_editing">OSM düzenleme</string>
<string name="osm_edits_view_descr">Yüklenmemiş tüm düzenlemelerinizi veya OSM hatalarınızı %1$s\'de görüntüleyebilirsiniz. Karşıya yüklenen noktalar OsmAnd\'da gösterilmez.</string>
<string name="osm_edits_view_descr">Henüz karşıya yüklenmemiş tüm düzenlemelerinizi veya OSM hatalarınızı %1$s\'de görüntüleyebilirsiniz. Karşıya yüklenen noktalar OsmAnd\'da gösterilmez.</string>
<string name="app_mode_osm">OSM</string>
<string name="select_nav_icon_descr">Navigasyon sırasında veya harekete halindeyken gösterilen simge.</string>
<string name="select_map_icon_descr">Dinlenme anında gösterilen simge.</string>
@ -3495,7 +3495,7 @@
<string name="replace_all">Hepsini değiştir</string>
<string name="keep_both">Her ikisini de sakla</string>
<string name="keep_both_desc">İçe aktarılan ögelere ön ek eklenecek</string>
<string name="import_duplicates_description">OsmAnd\'da içe aktarılanlarla aynı isme sahip ögeler zaten var.
<string name="import_duplicates_description">OsmAnd\'da içe aktarılanlarla aynı ada sahip ögeler zaten var.
\n
\nBir eylem seçin.</string>
<string name="import_duplicates_title">Bazı ögeler zaten var</string>
@ -3532,7 +3532,7 @@
<string name="recalculate_route_distance_promo">Güzergahtan geçerli konuma olan mesafe seçilen değerden fazla ise güzergah yeniden hesaplanacaktır.</string>
<string name="n_items_of_z">%1$s / %2$s</string>
<string name="download_slope_maps">Yamaçlar</string>
<string name="quick_action_show_hide_terrain">Araziyi göster / gizle</string>
<string name="quick_action_show_hide_terrain">Araziyi göster veya gizle</string>
<string name="quick_action_terrain_hide">Araziyi gizle</string>
<string name="quick_action_terrain_show">Araziyi göster</string>
<string name="quick_action_terrain_descr">Haritada arazi katmanını göstermek veya gizlemek için bir düğme.</string>
@ -3650,11 +3650,11 @@
<string name="additional_actions_descr">Bu eylemlere “%1$s” düğmesine dokunarak erişebilirsiniz.</string>
<string name="quick_action_transport_hide">Toplu taşıma araçlarını gizle</string>
<string name="quick_action_transport_show">Toplu taşıma araçlarını göster</string>
<string name="quick_action_show_hide_transport">Toplu taşıma araçlarını göster/gizle</string>
<string name="quick_action_show_hide_transport">Toplu taşıma araçlarını göster veya gizle</string>
<string name="quick_action_transport_descr">Haritada toplu taşıma araçlarını gösteren veya gizleyen düğme.</string>
<string name="create_edit_poi">POI Oluştur / Düzenle</string>
<string name="create_edit_poi">POI oluştur veya düzenle</string>
<string name="parking_positions">Park etme alanları</string>
<string name="add_edit_favorite">Sık Kullanılan Ekle / Düzenle</string>
<string name="add_edit_favorite">Sık kullanılan ekle veya düzenle</string>
<string name="reset_deafult_order">Öntanımlı öge sıralamasını geri yükle</string>
<string name="back_to_editing">Düzenlemeye geri dön</string>
<string name="quick_action_switch_profile_descr">Eylem düğmesi seçilen profiller arasında geçiş yapar.</string>
@ -3779,7 +3779,7 @@
<string name="shared_string_done">Bitti</string>
<string name="overwrite_track">Yolun üzerine yaz</string>
<string name="route_between_points_warning_desc">Ardından, bu seçeneği kullanmak için navigasyon profillerinizden biriyle izlenen yolunuzu izin verilen en yakın yola tutturun.</string>
<string name="save_as_new_track">Yeni bir yol olarak kaydet</string>
<string name="save_as_new_track">Yeni bir izleme olarak kaydet</string>
<string name="reverse_route">Ters güzergah</string>
<string name="route_between_points_whole_track_button_desc">Tüm yol, seçilen profil kullanılarak yeniden hesaplanacaktır.</string>
<string name="route_between_points_next_segment_button_desc">Sadece sonraki bölüm, seçilen profil kullanılarak yeniden hesaplanacaktır.</string>
@ -3811,7 +3811,7 @@
<string name="marker_save_as_track">Yol dosyası olarak kaydet</string>
<string name="number_of_gpx_files_selected_pattern">%s yol dosyası seçildi</string>
<string name="disable_recording_once_app_killed_descrp">(Son uygulamalar aracılığıyla) uygulama kapatıldığında yol kaydını duraklatacaktır. (OsmAnd arka plan göstergesi Android bildirim çubuğundan kaybolur.)</string>
<string name="save_global_track_interval_descr">Genel yol kaydı için kayıt aralığını seçin (haritadaki seyahat kayıt widget\'ı aracılığıyla etkin).</string>
<string name="save_global_track_interval_descr">Genel yol kaydı için kayıt aralığını belirtin (haritadaki \'Seyahat kaydetme\' widget\'ı aracılığıyla açıldı).</string>
<string name="gpx_monitoring_stop">Seyahat kaydetmeyi duraklat</string>
<string name="gpx_monitoring_start">Seyahat kaydetmeyi devam ettir</string>
<string name="nearest_point">En yakın nokta</string>
@ -3843,7 +3843,7 @@
<string name="simplified_track">Basitleştirilmiş yol</string>
<string name="release_3_8">• Güzergah planlama işlevi güncellendi: her bölüm için farklı navigasyon türlerinin kullanılmasına ve izlenen yolların dahil edilmesine izin veriliyor
\n
\n • İzlenen yollar için yeni görünüm menüsü: renk ve kalınlık seçimi, yön oklarının gösterilmesi, başlangıç/bitiş simgeleri
\n • İzlenen yollar için yeni görünüm menüsü: renk ve kalınlık seçimi, yön oklarının gösterilmesi, başlangıç ve bitiş simgeleri
\n
\n • Bisiklet düğümlerinin görünürlüğü iyileştirildi.
\n
@ -3859,7 +3859,7 @@
<string name="sort_last_modified">Son değiştirme</string>
<string name="sort_name_descending">İsim: Z A</string>
<string name="sort_name_ascending">İsim: A Z</string>
<string name="start_finish_icons">Başlangıç/bitiş simgeleri</string>
<string name="start_finish_icons">Başlangıç ve bitiş simgeleri</string>
<string name="contour_lines_thanks">\'Eş yükselti eğrileri\'ni satın aldığınız için teşekkürler</string>
<string name="osm_live_payment_desc_hw">Abonelik seçilen dönem başına ücretlendirilir. İstediğiniz zaman AppGallery\'den iptal edin.</string>
<string name="osm_live_payment_subscription_management_hw">Ödeme, satın alma onaylandığında AppGallery hesabınızdan alınacaktır.
@ -3877,10 +3877,10 @@
<string name="use_native_pt">Yerel Toplu Taşıma geliştirme</string>
<string name="use_native_pt_desc">Java (güvenli) Toplu Taşıma yönlendirme hesaplamasına geçin</string>
<string name="what_is_new">Yenilikler</string>
<string name="perform_oauth_authorization_description">osmedit özelliklerini kullanmak için OAuth oturum açma işlemi gerçekleştirin</string>
<string name="perform_oauth_authorization_description">osmedit özelliklerini kullanmak için OAuth ile oturum açın</string>
<string name="perform_oauth_authorization">OAuth ile oturum aç</string>
<string name="clear_osm_token">OpenStreetMap OAuth belirtecini temizle</string>
<string name="osm_edit_logout_success">Oturum kapatma başarılı</string>
<string name="osm_edit_logout_success">Oturum kapatıldı</string>
<string name="file_already_imported">Dosya zaten OsmAnd\'da içe aktarıldı</string>
<string name="use_two_phase_routing">2 aşamalı A* yönlendirme algoritması kullan</string>
<string name="snowmobile_render_descr">Ayrılmış yollar ve parkurlarla kar arabası sürüşü için.</string>
@ -3903,12 +3903,12 @@
<string name="icon_group_emergency">Acil</string>
<string name="icon_group_travel">Seyahat</string>
<string name="message_you_need_add_two_points_to_show_graphs">En az iki nokta eklemelisiniz</string>
<string name="login_open_street_map">OpenStreetMap\'te oturum aç</string>
<string name="login_open_street_map_org">OpenStreetMap.org\'da oturum aç</string>
<string name="open_street_map_login_mode">Yenilikleri veya değişiklikleri karşıya yüklemek için oturum açmanız gerekir.
<string name="login_open_street_map">OpenStreetMap için oturum aç</string>
<string name="login_open_street_map_org">OpenStreetMap.org için oturum aç</string>
<string name="open_street_map_login_mode">Yenilikleri veya değişiklikleri karşıya yüklemek için oturum açın,
\n
\nGüvenli OAuth yöntemini kullanarak oturum açabilir veya kullanıcı adı ve parolanızı kullanabilirsiniz.</string>
<string name="use_login_password">Kullanıcı adı ve parola kullan</string>
\nOAuth ile oturum açabilir veya kullanıcı adı ve parolanızı kullanabilirsiniz.</string>
<string name="use_login_password">Kullanıcı adı ve parola ile oturum aç</string>
<string name="user_login">Kullanıcı adı</string>
<string name="login_account">Hesap</string>
<string name="manage_subscription">Aboneliği yönet</string>
@ -3920,4 +3920,32 @@
<string name="markers_history">İşaretleyiciler geçmişi</string>
<string name="send_files_to_openstreetmap">GPX dosyasını OpenStreetMap\'e gönder</string>
<string name="enter_text_separated">Virgülle ayrılmış etiketleri girin.</string>
<string name="gpx_upload_public_visibility_descr">\"Genel\", izlemenin GPS izlerinizde ve genel GPS izleme listelerinde herkese açık olarak ve ham biçimde zaman damgalarıyla birlikte genel izleme listesinde gösterileceği anlamına gelir. API aracılığıyla sunulan veriler, izleme sayfanızı göstermez. İzleme noktası zaman damgaları, genel GPS API\'si aracılığıyla kullanılamaz ve izleme noktaları kronolojik olarak sıralanmaz.</string>
<string name="gpx_upload_private_visibility_descr">\"Özel\", izlemenin herkese açık herhangi bir listede gösterilmediği, ancak ondan alınan izleme noktalarının zaman damgası olmadan genel GPS API\'si aracılığıyla eşzamanlı olmayan sırada kullanılabileceği anlamına gelir.</string>
<string name="gpx_upload_identifiable_visibility_descr">\"Teşhis edilebilir\", izlemenin GPS izlerinizde ve genel GPS izleme listelerinde herkese açık olarak gösterileceği anlamına gelir, yani diğer kullanıcılar ham izi indirebilir ve kullanıcı adınızla ilişkilendirebilir. İzleme noktaları API\'si aracılığıyla sunulan GPS API\'sinden alınan herkese açık zaman damgalı izleme noktası verileri, orijinal izleme sayfanızı gösterecektir.</string>
<string name="gpx_upload_trackable_visibility_descr">\"Takip edilebilir\", izlemenin herkese açık herhangi bir listede gösterilmediği, ancak (sizinle doğrudan ilişkilendirilemeyen) zaman damgaları olan işlenen izleme noktalarının herkese açık GPS API\'sinden indirmeler yoluyla göründüğü anlamına gelir.</string>
<string name="osm_edit_close_note">OSM Notunu Kapat</string>
<string name="osm_edit_comment_note">OSM Notuna Yorum Yap</string>
<string name="osm_login_descr">Güvenli OAuth yöntemini kullanarak oturum açın veya kullanıcı adınızı ve parolanızı kullanın.</string>
<string name="shared_string_add_photo">Fotoğraf ekle</string>
<string name="register_on_openplacereviews">OpenPlaceReviews.org\'a
\nkaydolun</string>
<string name="register_on_openplacereviews_desc">Daha da fazla fotoğraf yüklemek için açık veri projesi web sitesi OpenPlaceReviews.org\'da oturum açın.</string>
<string name="register_opr_create_new_account">Yeni hesap oluştur</string>
<string name="register_opr_have_account">Zaten bir hesabım var</string>
<string name="shared_string_search_history">Arama geçmişi</string>
<string name="app_mode_kayak">Kano</string>
<string name="app_mode_motorboat">Motorlu tekne</string>
<string name="add_to_mapillary">Mapillary\'ye ekle</string>
<string name="add_to_opr">OpenPlaceReviews\'a ekle</string>
<string name="add_photos_descr">OsmAnd çeşitli kaynaklardan fotoğraflar gösterir:
\nOpenPlaceReviews - POI fotoğrafları;
\nMapillary - sokak seviyesi görüntüleri;
\nİnternet / Wikimedia - OpenStreetMap verilerinde belirtilen POI fotoğrafları.</string>
<string name="shared_string_resources">Kaynaklar</string>
<string name="approximate_file_size">Yaklaşık dosya boyutu</string>
<string name="select_data_to_export">Dosyaya aktarılacak verileri seçin.</string>
<string name="file_size_needed_for_import">İçe aktarma için gerekli</string>
<string name="export_not_enough_space_descr">Aygıtınızda yalnızca %1$s boş alan var. Lütfen biraz alan boşaltın veya dışa aktarılacak bazı ögelerin seçimini kaldırın.</string>
<string name="export_not_enough_space">Yeterli alan yok</string>
</resources>

View file

@ -3838,4 +3838,34 @@
<string name="poi_parking_rooftop">Дах</string>
<string name="poi_gpx_point">Точка GPX</string>
<string name="poi_radar_tower">Радіолокаційна вежа</string>
<string name="poi_liaison_subnational">Багатонаціональне</string>
<string name="poi_embassy_nunciature">Нунціатура</string>
<string name="poi_embassy_interests_section">Розділ інтересів</string>
<string name="poi_diplomatic_liaison">Зв\'язок</string>
<string name="poi_diplomatic_services_citizen_services_filter">Послуги для громадян</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">Імміграційні візи</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Неімміграційні візи</string>
<string name="poi_liaison_filter">Зв\'язок</string>
<string name="poi_diplomatic_services_citizen_services_no">Ні</string>
<string name="poi_diplomatic_services_citizen_services_yes">Так</string>
<string name="poi_diplomatic_services_immigrant_visas_no">Ні</string>
<string name="poi_diplomatic_services_immigrant_visas_yes">Так</string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">Ні</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes">Так</string>
<string name="poi_liaison_representative_office">Представництво</string>
<string name="poi_liaison_liaison_office">Офіс</string>
<string name="poi_consulate_honorary_consul">Почесний консул</string>
<string name="poi_consulate_consulate_general">Генеральне консульство</string>
<string name="poi_consulate_consular_office">Консульський офіс</string>
<string name="poi_consulate_consular_agency">Консульський орган</string>
<string name="poi_consulate_yes">Очолює консул</string>
<string name="poi_embassy_residence">Резиденція</string>
<string name="poi_embassy_mission">Місія</string>
<string name="poi_embassy_high_commission">Верховний комісаріат</string>
<string name="poi_embassy_delegation">Делегація</string>
<string name="poi_embassy_branch_embassy">Відділення</string>
<string name="poi_embassy_yes">Очолює посол</string>
<string name="poi_diplomatic_embassy">Посольство</string>
<string name="poi_consulate_filter">Консульство</string>
<string name="poi_embassy_filter">Посольство</string>
</resources>

View file

@ -3914,10 +3914,10 @@
<string name="complex_routing_descr">Двофазна маршрутизація для автомобільної навігації.</string>
<string name="use_native_pt">Розвиток власного громадського транспорту</string>
<string name="use_native_pt_desc">Перемкнутися на розрахунок маршруту громадським транспортом за допомогою Java (безпечний)</string>
<string name="perform_oauth_authorization_description">Виконати вхід OAuth для користування функцією osmedit</string>
<string name="perform_oauth_authorization_description">Увійти за допомогою OAuth для користування функцією osmedit</string>
<string name="perform_oauth_authorization">Увійти через OAuth</string>
<string name="clear_osm_token">Очистити токен OAuth OpenStreetMap</string>
<string name="osm_edit_logout_success">Ви успішно вийшли</string>
<string name="osm_edit_logout_success">Ви вийшли</string>
<string name="use_live_public_transport">OsmAnd дані в реальному часі</string>
<string name="routing_attr_avoid_footways_description">Уникати пішохідних шляхів</string>
<string name="routing_attr_avoid_footways_name">Уникати пішохідних шляхів</string>
@ -3951,10 +3951,10 @@
<string name="subscription_on_hold_title">Передплата OsmAnd Live на утриманні</string>
<string name="login_open_street_map">Увійти до OpenStreetMap.org</string>
<string name="login_open_street_map_org">Увійти до OpenStreetMap.org</string>
<string name="open_street_map_login_mode">Увійдіть, щоб вивантажити нові або внесені зміни.
<string name="open_street_map_login_mode">Увійдіть, щоб вивантажити нові або внесені зміни,
\n
\nВи можете увійти, за допомогою безпечного методу OAuth, або скористатися своїм ім\'ям та паролем.</string>
<string name="use_login_password">Використовувати ім\'я і пароль</string>
\nабо за допомогою безпечного методу OAuth або свого ім\'я та паролю.</string>
<string name="use_login_password">Увійти за допомогою імені користувача і паролю</string>
<string name="login_account">Обліковий запис</string>
<string name="user_login">Ім\'я користувача</string>
<string name="sign_in_with_open_street_map">Увійти за допомогою OpenStreetMap</string>
@ -3967,14 +3967,28 @@
<string name="gpx_upload_trackable_visibility_descr">«Відстежуваний» означає, що трек не з\'явиться в жодному загальнодоступному списку, але обробка точок з позначками часу від нього (які не можуть бути безпосередньо пов’язані з вами) виконується за допомогою завантажень із загальнодоступного API GPS.</string>
<string name="osm_edit_close_note">Закрити примітку OSM</string>
<string name="osm_edit_comment_note">Коментувати примітку OSM</string>
<string name="osm_login_descr">Ви можете увійти за допомогою безпечного методу OAuth або застосувавши свої ім\'я користувача й пароль.</string>
<string name="osm_login_descr">Увійдіть за допомогою безпечного методу OAuth або застосувавши свої ім\'я користувача й пароль.</string>
<string name="shared_string_add_photo">Додати світлини</string>
<string name="register_on_openplacereviews">Зареєструватися на
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">Світлини надаються проєктом відкритих даних OpenPlaceReviews.org. Щоб завантажити світлини зареєструйтеся на сайті.</string>
<string name="register_on_openplacereviews_desc">Увійдіть на вебсайт проєкту відкритих даних OpenPlaceReviews.org, щоб завантажити ще більше світлин.</string>
<string name="register_opr_create_new_account">Створити обліковий запис</string>
<string name="register_opr_have_account">У мене вже є обліковий запис</string>
<string name="shared_string_search_history">Журнал пошуку</string>
<string name="app_mode_kayak">Каяк</string>
<string name="app_mode_motorboat">Моторний човен</string>
<string name="shared_string_resources">Ресурси</string>
<string name="approximate_file_size">Приблизний розмір файлу</string>
<string name="select_data_to_export">Виберіть дані, які потрібно експортувати до файлу.</string>
<string name="file_size_needed_for_import">Необхідно для імпорту</string>
<string name="export_not_enough_space_descr">На вашому пристрої лише %1$s вільного простору. Звільніть місце або приберіть позначки з деяких елементів для експорту.</string>
<string name="export_not_enough_space">Бракує простору</string>
<string name="add_to_mapillary">Додати до Mapillary</string>
<string name="add_to_opr">Додати до OpenPlaceReviews</string>
<string name="add_photos_descr">OsmAnd демонструє світлини з кількох джерел:
\nOpenPlaceReviews — світлини POI;
\nMapillary - зображення вулиць;
\nМережа / Вікімедіа — світлини POI, вказані в даних OpenStreetMap.</string>
<string name="select_groups_for_import">Виберіть групи, які буде імпортовано.</string>
<string name="select_items_for_import">Виберіть елементи, які буде імпортовано.</string>
</resources>

View file

@ -3849,4 +3849,34 @@
<string name="poi_parking_rooftop">屋頂</string>
<string name="poi_gpx_point">GPX 點</string>
<string name="poi_radar_tower">雷達塔</string>
<string name="poi_diplomatic_services_citizen_services_no"></string>
<string name="poi_diplomatic_services_citizen_services_yes"></string>
<string name="poi_diplomatic_services_immigrant_visas_no"></string>
<string name="poi_diplomatic_services_immigrant_visas_yes"></string>
<string name="poi_diplomatic_services_non_immigrant_visas_no"></string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes"></string>
<string name="poi_liaison_subnational">準外交</string>
<string name="poi_liaison_representative_office">代表處</string>
<string name="poi_liaison_liaison_office">辦公室</string>
<string name="poi_consulate_honorary_consul">名譽領事</string>
<string name="poi_consulate_consulate_general">總領事館</string>
<string name="poi_consulate_consular_office">領事館</string>
<string name="poi_consulate_consular_agency">領事機構</string>
<string name="poi_consulate_yes">由領事率領</string>
<string name="poi_embassy_residence">住宅</string>
<string name="poi_embassy_nunciature">代表駐地</string>
<string name="poi_embassy_mission">代表機構</string>
<string name="poi_embassy_interests_section">利益代表處</string>
<string name="poi_embassy_high_commission">高級專員</string>
<string name="poi_embassy_delegation">代表團</string>
<string name="poi_embassy_branch_embassy">分處</string>
<string name="poi_embassy_yes">由大使率領</string>
<string name="poi_diplomatic_liaison">聯絡處</string>
<string name="poi_diplomatic_embassy">大使館</string>
<string name="poi_diplomatic_services_citizen_services_filter">公民服務</string>
<string name="poi_diplomatic_services_immigrant_visas_filter">移民簽證</string>
<string name="poi_diplomatic_services_non_immigrant_visas_filter">非移民簽證</string>
<string name="poi_liaison_filter">聯絡處</string>
<string name="poi_consulate_filter">領事館</string>
<string name="poi_embassy_filter">大使館</string>
</resources>

View file

@ -3917,10 +3917,10 @@
<string name="use_native_pt">原生公共運輸發展</string>
<string name="use_native_pt_desc">切換到 Java安全公共運輸路線計算</string>
<string name="what_is_new">有什麼新鮮事</string>
<string name="perform_oauth_authorization_description">執行 OAuth 登入以使用 osmedit 功能</string>
<string name="perform_oauth_authorization_description"> OAuth 登入以使用 osmedit 功能</string>
<string name="perform_oauth_authorization">透過 OAuth 登入</string>
<string name="clear_osm_token">清除 OpenStreetMap OAuth 權杖</string>
<string name="osm_edit_logout_success">成功登出</string>
<string name="osm_edit_logout_success">登出</string>
<string name="snowmobile_render_descr">適用於有專用道路與軌道的雪地摩托車駕駛。</string>
<string name="file_already_imported">檔案已在 OsmAnd 匯入</string>
<string name="use_two_phase_routing">使用 2 相的 A* 路線演算法</string>
@ -3948,14 +3948,14 @@
<string name="subscription_expired_title">OsmAnd Live 訂閱已過期</string>
<string name="subscription_paused_title">OsmAnd Live 訂閱已暫停</string>
<string name="subscription_on_hold_title">OsmAnd Live 訂閱已暫停</string>
<string name="login_open_street_map">登入 OpenStreetMap</string>
<string name="login_open_street_map_org">登入 OpenStreetMap.org</string>
<string name="open_street_map_login_mode">您必須登入以上傳新的或修正過的變更。
<string name="login_open_street_map">登入 OpenStreetMap</string>
<string name="login_open_street_map_org">登入 OpenStreetMap.org</string>
<string name="open_street_map_login_mode">登入以上傳新的或修正過的變更,
\n
\n您可以使用安全的 OAuth 方法或使用您的登入與密碼來登入。</string>
<string name="use_login_password">使用登入與密碼</string>
\n以 OAuth 或使用您的使用者名稱與密碼來登入。</string>
<string name="use_login_password">以使用者名稱與密碼登入</string>
<string name="login_account">帳號</string>
<string name="user_login">登入</string>
<string name="user_login">使用者名稱</string>
<string name="sign_in_with_open_street_map">使用 OpenStreetMap 登入</string>
<string name="markers_history">標記歷史</string>
<string name="send_files_to_openstreetmap">傳送 GPX 檔案到 OpenStreetMap</string>
@ -3966,14 +3966,26 @@
<string name="gpx_upload_trackable_visibility_descr">「可追蹤」代表軌跡不會在任何公開的清單中顯示,但帶有時間戳(這並不會與您直接相關聯)的已處理追蹤點可從公開的 GPS API 下載。</string>
<string name="osm_edit_close_note">關閉 OSM 註記</string>
<string name="osm_edit_comment_note">評論 OSM 註記</string>
<string name="osm_login_descr">您可以使用安全的 OAuth 方式或是使用您的帳號與密碼來登入。</string>
<string name="osm_login_descr">使用安全的 OAuth 方式或是使用您的使用者名稱與密碼來登入。</string>
<string name="shared_string_add_photo">新增照片</string>
<string name="register_on_openplacereviews">註冊於
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">照片由開放資料專案 OpenPlaceReviews.org 提供。為了上傳您的照片,您必須在網站上註冊</string>
<string name="register_on_openplacereviews_desc">登入開放資料專案網站 OpenPlaceReviews.org 以上傳更多照片</string>
<string name="register_opr_create_new_account">建立新帳號</string>
<string name="register_opr_have_account">我已經有帳號了</string>
<string name="shared_string_search_history">搜尋歷史紀錄</string>
<string name="app_mode_kayak">皮艇</string>
<string name="app_mode_motorboat">快艇</string>
<string name="add_to_mapillary">新增到 Mapillary</string>
<string name="add_to_opr">新增到 OpenPlaceReviews</string>
<string name="add_photos_descr">OsmAnd 從多個來源顯示照片:
\nOpenPlaceReviews - POI 照片;
\nMapillary - 街景;
\n網路維基媒體 - 特定 OpenStreetMap 資料的 POI 照片。</string>
<string name="shared_string_resources">資源</string>
<string name="approximate_file_size">大約檔案大小</string>
<string name="select_data_to_export">選取要匯出到檔案的資料。</string>
<string name="file_size_needed_for_import">匯入需要</string>
<string name="export_not_enough_space_descr">您的裝置僅剩 %1$s 可用空間。請釋出一些空間或取消選取要匯出的部份檔案。</string>
<string name="export_not_enough_space">空間不足</string>
</resources>

View file

@ -289,6 +289,7 @@
<dimen name="bottom_sheet_info_spacing_multiplier" format="float">1.5</dimen>
<dimen name="bottom_sheet_big_item_height">128dp</dimen>
<dimen name="bottom_sheet_top_shadow_height">8dp</dimen>
<dimen name="bottom_sheet_button_divider_height">28dp</dimen>
<dimen name="action_bar_image_width_land">236dp</dimen>
<dimen name="action_bar_image_top_margin_land">68dp</dimen>

View file

@ -11,12 +11,19 @@
Thx - Hardy
-->
<string name="use_dev_url">Use dev.openstreetmap.org</string>
<string name="use_dev_url_descr">Switch to use "dev.openstreetmap.org" instead of "openstreetmap.org" to testing uploading OSM Note / POI / GPX.</string>
<string name="select_items_for_import">Select items that will be imported.</string>
<string name="select_groups_for_import">Select groups that will be imported.</string>
<string name="export_not_enough_space">There is not enough space</string>
<string name="export_not_enough_space_descr">Your device only has %1$s free. Please free up some space or unselect some items to export.</string>
<string name="file_size_needed_for_import">Needed for import</string>
<string name="select_data_to_export">Select the data to be exported to the file.</string>
<string name="approximate_file_size">Approximate file size</string>
<string name="shared_string_resources">Resources</string>
<string name="add_photos_descr">OsmAnd shows photos from several sources:\nOpenPlaceReviews - POI photos;\nMapillary - street-level imagery;\nWeb / Wikimedia - POI photos specified in OpenStreetMap data.</string>
<string name="add_to_opr">Add to OpenPlaceReviews</string>
<string name="add_to_mapillary">Add to Mapillary</string>
<string name="app_mode_motorboat">Motorboat</string>
<string name="app_mode_kayak">Kayak</string>
<string name="shared_string_search_history">Search history</string>

View file

@ -32,6 +32,14 @@
android:title="@string/offline_edition"
tools:icon="@drawable/ic_action_offline" />
<net.osmand.plus.settings.preferences.SwitchPreferenceEx
android:key="use_dev_url"
android:layout="@layout/preference_with_descr_dialog_and_switch"
android:summaryOff="@string/shared_string_disabled"
android:summaryOn="@string/shared_string_enabled"
android:title="@string/use_dev_url"
tools:icon="@drawable/ic_action_laptop" />
<Preference
android:layout="@layout/simple_divider_item"
android:selectable="false" />

View file

@ -1,16 +1,21 @@
package net.osmand.plus;
public interface OsmAndConstants {
public int UI_HANDLER_MAP_VIEW = 3000;
public int UI_HANDLER_MAP_CONTROLS = 4000;
public int UI_HANDLER_LOCATION_SERVICE = 5000;
public int UI_HANDLER_PROGRESS = 6000;
public int UI_HANDLER_SEARCH = 7000;
String OSM_OAUTH_DEVELOPER_KEY = "v8G8r9NLJZGMV4he5lwbQlz620FNVARKjI9Bm5UJ";
String OSM_OAUTH_DEVELOPER_SECRET = "jDvM95Ne1Bq2BDTmIfB6b3ZMxvdK87WGfp6DC07J";
String OSM_OAUTH_CONSUMER_KEY = "Ti2qq3fo4i4Wmuox3SiWRIGq3obZisBHnxmcM05y";
String OSM_OAUTH_CONSUMER_SECRET = "lxulb3HYoMmd2cC4xxNe1dyfRMAY8dS0eNihJ0DM";
}

View file

@ -141,7 +141,7 @@ public class UiUtilities {
}
public Drawable getLayeredIcon(@DrawableRes int bgIconId, @DrawableRes int foregroundIconId,
@ColorRes int bgColorId, @ColorRes int foregroundColorId) {
@ColorRes int bgColorId, @ColorRes int foregroundColorId) {
Drawable background = getDrawable(bgIconId, bgColorId);
Drawable foreground = getDrawable(foregroundIconId, foregroundColorId);
return getLayeredIcon(background, foreground);
@ -272,11 +272,11 @@ public class UiUtilities {
}
public void updateLocationView(UpdateLocationViewCache cache, ImageView arrow, TextView txt,
double toLat, double toLon) {
double toLat, double toLon) {
updateLocationView(cache, arrow, txt, new LatLon(toLat, toLon));
}
public void updateLocationView(UpdateLocationViewCache cache, ImageView arrow, TextView txt,
LatLon toLoc) {
LatLon toLoc) {
float[] mes = new float[2];
boolean stale = false;
LatLon fromLoc = cache == null ? null : cache.specialFrom;
@ -390,7 +390,7 @@ public class UiUtilities {
}
public static void setupSnackbar(Snackbar snackbar, boolean nightMode, @ColorRes Integer backgroundColor,
@ColorRes Integer messageColor, @ColorRes Integer actionColor, Integer maxLines) {
@ColorRes Integer messageColor, @ColorRes Integer actionColor, Integer maxLines) {
if (snackbar == null) {
return;
}
@ -451,7 +451,7 @@ public class UiUtilities {
public static void updateCustomRadioButtons(Context app, View buttonsView, boolean nightMode,
CustomRadioButtonType buttonType) {
CustomRadioButtonType buttonType) {
int activeColor = ContextCompat.getColor(app, nightMode
? R.color.active_color_primary_dark
: R.color.active_color_primary_light);
@ -478,7 +478,7 @@ public class UiUtilities {
endButtonText.setTextColor(activeColor);
startButtonContainer.setBackgroundDrawable(background);
startButtonText.setTextColor(textColor);
} else {
} else if (buttonType == CustomRadioButtonType.END) {
if (isLayoutRtl) {
background.setCornerRadii(new float[]{radius, radius, 0, 0, 0, 0, radius, radius});
} else {
@ -488,6 +488,11 @@ public class UiUtilities {
endButtonText.setTextColor(textColor);
startButtonContainer.setBackgroundColor(Color.TRANSPARENT);
startButtonText.setTextColor(activeColor);
} else if (buttonType == null) {
endButtonContainer.setBackgroundColor(Color.TRANSPARENT);
startButtonContainer.setBackgroundColor(Color.TRANSPARENT);
endButtonText.setTextColor(activeColor);
startButtonText.setTextColor(activeColor);
}
}
@ -502,10 +507,10 @@ public class UiUtilities {
}
public static void setupCompoundButton(boolean nightMode, @ColorInt int activeColor, CompoundButton compoundButton) {
if (compoundButton == null) {
return;
}
Context ctx = compoundButton.getContext();
if (compoundButton == null) {
return;
}
Context ctx = compoundButton.getContext();
int inactiveColorPrimary = ContextCompat.getColor(ctx, nightMode ? R.color.icon_color_default_dark : R.color.icon_color_secondary_light);
int inactiveColorSecondary = getColorWithAlpha(inactiveColorPrimary, 0.45f);
setupCompoundButton(compoundButton, activeColor, inactiveColorPrimary, inactiveColorSecondary);
@ -584,7 +589,7 @@ public class UiUtilities {
}
public static void setupSlider(Slider slider, boolean nightMode,
@ColorInt Integer activeColor, boolean showTicks) {
@ColorInt Integer activeColor, boolean showTicks) {
Context ctx = slider.getContext();
if (ctx == null) {
return;
@ -770,9 +775,9 @@ public class UiUtilities {
}
public static ListPopupWindow createListPopupWindow(Context themedCtx,
View v, int minWidth,
List<SimplePopUpMenuItem> items,
final AdapterView.OnItemClickListener listener) {
View v, int minWidth,
List<SimplePopUpMenuItem> items,
final AdapterView.OnItemClickListener listener) {
int contentPadding = themedCtx.getResources().getDimensionPixelSize(R.dimen.content_padding);
int contentPaddingHalf = themedCtx.getResources().getDimensionPixelSize(R.dimen.content_padding_half);
int defaultListTextSize = themedCtx.getResources().getDimensionPixelSize(R.dimen.default_list_text_size);

View file

@ -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();

View file

@ -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<Integer> 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<Integer> 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);
}
}
}

View file

@ -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;
}

View file

@ -64,6 +64,8 @@ public class HorizontalSelectionAdapter extends RecyclerView.Adapter<HorizontalS
final HorizontalSelectionItem item = items.get(holder.getAdapterPosition());
TextView textView = holder.buttonText;
int activeColorResId = nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light;
int innerPadding = AndroidUtils.dpToPx(app, 16);
textView.setPadding(innerPadding, 0, innerPadding, 0);
if (item.equals(selectedItem) && item.isEnabled()) {
AndroidUtils.setBackground(holder.button, app.getUIUtilities().getPaintedIcon(
R.drawable.bg_select_icon_group_button, ContextCompat.getColor(app, activeColorResId)));

View file

@ -77,6 +77,10 @@ public class TrackDetailsMenu {
private boolean hidding;
private Location myLocation;
public boolean shouldShowXAxisPoints () {
return true;
}
@Nullable
public MapActivity getMapActivity() {
return mapActivity;
@ -518,7 +522,9 @@ public class TrackDetailsMenu {
} else {
gpxItem.chartHighlightPos = -1;
}
trackChartPoints.setXAxisPoints(getXAxisPoints(chart));
if (shouldShowXAxisPoints()) {
trackChartPoints.setXAxisPoints(getXAxisPoints(chart));
}
if (gpxItem.route) {
mapActivity.getMapLayers().getMapInfoLayer().setTrackChartPoints(trackChartPoints);
} else {

View file

@ -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);

View file

@ -127,7 +127,8 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
private Snackbar snackbar;
private String fileName;
private AdditionalInfoType currentAdditionalInfoType;
private @Nullable
AdditionalInfoType currentAdditionalInfoType;
private boolean wasCollapseButtonVisible;
private boolean progressBarVisible;
@ -175,6 +176,11 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
protected int getFragmentHeight() {
return mainView.getHeight();
}
@Override
public boolean shouldShowXAxisPoints() {
return false;
}
}
private void setEditingCtx(MeasurementEditingContext editingCtx) {
@ -264,6 +270,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
portrait = AndroidUiHelper.isOrientationPortrait(mapActivity);
pointsSt = getString(R.string.shared_string_gpx_points).toLowerCase();
int widthInPixels = getResources().getDimensionPixelOffset(R.dimen.gpx_group_button_width);
View view = UiUtilities.getInflater(getContext(), nightMode)
.inflate(R.layout.fragment_measurement_tool, container, false);
@ -283,6 +290,15 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
@Override
public void onClick(View v) {
changeAdditionalInfoType(AdditionalInfoType.POINTS);
int pointsCount = editingCtx.getPointsCount();
if (pointsCount == 0) {
disable(upDownBtn);
collapseAdditionalInfoView();
} else {
expandAdditionalInfoView();
additionalInfoExpanded = true;
}
updateUpDownBtn();
}
});
@ -293,6 +309,8 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
@Override
public void onClick(View v) {
changeAdditionalInfoType(AdditionalInfoType.GRAPH);
expandAdditionalInfoView();
updateUpDownBtn();
}
});
}
@ -340,6 +358,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
View applyMovePointButton = mainView.findViewById(R.id.apply_move_point_button);
UiUtilities.setupDialogButton(nightMode, applyMovePointButton, UiUtilities.DialogButtonType.PRIMARY,
R.string.shared_string_apply);
applyMovePointButton.setMinimumWidth(widthInPixels);
applyMovePointButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
@ -351,6 +370,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
View applyPointBeforeAfterButton = mainView.findViewById(R.id.apply_point_before_after_point_button);
UiUtilities.setupDialogButton(nightMode, applyPointBeforeAfterButton, UiUtilities.DialogButtonType.PRIMARY,
R.string.shared_string_apply);
applyPointBeforeAfterButton.setMinimumWidth(widthInPixels);
applyPointBeforeAfterButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
@ -361,6 +381,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
View addPointBeforeAfterButton = mainView.findViewById(R.id.add_point_before_after_button);
UiUtilities.setupDialogButton(nightMode, addPointBeforeAfterButton, UiUtilities.DialogButtonType.PRIMARY,
R.string.shared_string_add);
addPointBeforeAfterButton.setMinimumWidth(widthInPixels);
addPointBeforeAfterButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
@ -416,7 +437,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
addCenterPoint();
}
});
addPointButton.setMinimumWidth(widthInPixels);
measurementLayer.setOnSingleTapListener(new MeasurementToolLayer.OnSingleTapListener() {
@Override
public void onAddPoint() {
@ -425,9 +446,6 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
@Override
public void onSelectPoint(int selectedPointPos) {
if (additionalInfoExpanded) {
collapseAdditionalInfoView();
}
if (selectedPointPos != -1) {
openSelectedPointMenu(mapActivity);
}
@ -529,25 +547,36 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
return view;
}
private void changeAdditionalInfoType(@NonNull AdditionalInfoType type) {
private void changeAdditionalInfoType(@Nullable AdditionalInfoType type) {
if (!additionalInfoExpanded || !isCurrentAdditionalInfoType(type)) {
MapActivity ma = getMapActivity();
if (ma == null) return;
OsmandApplication app = ma.getMyApplication();
View buttonsDivider = customRadioButton.findViewById(R.id.buttons_divider);
if (AdditionalInfoType.POINTS == type) {
visibleCard = pointsCard;
additionalInfoExpanded = true;
buttonsDivider.setVisibility(View.GONE);
UiUtilities.updateCustomRadioButtons(app, customRadioButton, nightMode, START);
} else if (AdditionalInfoType.GRAPH == type) {
visibleCard = graphsCard;
additionalInfoExpanded = true;
buttonsDivider.setVisibility(View.GONE);
UiUtilities.updateCustomRadioButtons(app, customRadioButton, nightMode, END);
} else if (null == type) {
visibleCard = null;
additionalInfoExpanded = false;
buttonsDivider.setVisibility(View.VISIBLE);
UiUtilities.updateCustomRadioButtons(app, customRadioButton, nightMode, null);
}
cardsContainer.removeAllViews();
View cardView = visibleCard.getView() != null ? visibleCard.getView() : visibleCard.build(ma);
cardsContainer.addView(cardView);
if (visibleCard != null) {
View cardView = visibleCard.getView() != null ? visibleCard.getView() : visibleCard.build(ma);
cardsContainer.addView(cardView);
}
currentAdditionalInfoType = type;
additionalInfoExpanded = true;
updateUpDownBtn();
}
}
@ -722,7 +751,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 {
@ -1030,7 +1059,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
@Override
public void onChangeApplicationMode(ApplicationMode mode, RouteBetweenPointsDialogType dialogType,
RouteBetweenPointsDialogMode dialogMode) {
RouteBetweenPointsDialogMode dialogMode) {
MeasurementToolLayer measurementLayer = getMeasurementLayer();
if (measurementLayer != null) {
ChangeRouteType changeRouteType = ChangeRouteType.NEXT_SEGMENT;
@ -1465,9 +1494,10 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
private void collapseAdditionalInfoView() {
if (portrait) {
additionalInfoExpanded = false;
updateUpDownBtn();
additionalInfoContainer.setVisibility(View.GONE);
setDefaultMapPosition();
changeAdditionalInfoType(null);
updateUpDownBtn();
}
}
@ -1866,7 +1896,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
}
public static boolean showInstance(FragmentManager fragmentManager, MeasurementEditingContext editingCtx,
boolean followTrackMode) {
boolean followTrackMode) {
MeasurementToolFragment fragment = new MeasurementToolFragment();
fragment.setEditingCtx(editingCtx);
fragment.setMode(FOLLOW_TRACK_MODE, followTrackMode);

View file

@ -14,26 +14,31 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import net.osmand.AndroidUtils;
import net.osmand.GPXUtilities.WptPt;
import net.osmand.PlatformUtil;
import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.UiUtilities;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.BottomSheetBehaviourDialogFragment;
import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
import net.osmand.plus.settings.backend.ApplicationMode;
import net.osmand.util.MapUtils;
import org.apache.commons.logging.Log;
import java.util.ArrayList;
import java.util.List;
import static net.osmand.plus.UiUtilities.CustomRadioButtonType.START;
import static net.osmand.plus.UiUtilities.CustomRadioButtonType.END;
import static net.osmand.plus.UiUtilities.CustomRadioButtonType.START;
import static net.osmand.plus.measurementtool.MeasurementEditingContext.DEFAULT_APP_MODE;
import static net.osmand.plus.measurementtool.SelectFileBottomSheet.BOTTOM_SHEET_HEIGHT_DP;
public class RouteBetweenPointsBottomSheetDialogFragment extends BottomSheetBehaviourDialogFragment {
private static final Log LOG = PlatformUtil.getLog(RouteBetweenPointsBottomSheetDialogFragment.class);
public static final String TAG = RouteBetweenPointsBottomSheetDialogFragment.class.getSimpleName();
public static final int STRAIGHT_LINE_TAG = -1;
@ -60,101 +65,6 @@ public class RouteBetweenPointsBottomSheetDialogFragment extends BottomSheetBeha
ALL,
}
private String getButtonText(RouteBetweenPointsDialogMode dialogMode) {
switch (dialogType) {
case WHOLE_ROUTE_CALCULATION:
switch (dialogMode) {
case SINGLE:
return getString(R.string.next_segment);
case ALL:
return getString(R.string.whole_track);
}
break;
case NEXT_ROUTE_CALCULATION:
switch (dialogMode) {
case SINGLE:
return getString(R.string.next_segment);
case ALL:
return getString(R.string.all_next_segments);
}
break;
case PREV_ROUTE_CALCULATION:
switch (dialogMode) {
case SINGLE:
return getString(R.string.previous_segment);
case ALL:
return getString(R.string.all_previous_segments);
}
break;
}
return "";
}
private String getButtonDescr(RouteBetweenPointsDialogMode dialogMode) {
switch (dialogType) {
case WHOLE_ROUTE_CALCULATION:
switch (dialogMode) {
case SINGLE:
return getString(R.string.route_between_points_next_segment_button_desc);
case ALL:
return getString(R.string.route_between_points_whole_track_button_desc);
}
break;
case NEXT_ROUTE_CALCULATION:
switch (dialogMode) {
case SINGLE:
return getString(R.string.only_selected_segment_recalc);
case ALL:
return getString(R.string.all_next_segments_will_be_recalc);
}
break;
case PREV_ROUTE_CALCULATION:
switch (dialogMode) {
case SINGLE:
return getString(R.string.only_selected_segment_recalc);
case ALL:
return getString(R.string.all_previous_segments_will_be_recalc);
}
break;
}
return "";
}
private void addDelimiterView(LinearLayout container) {
View row = UiUtilities.getInflater(getContext(), nightMode).inflate(R.layout.divider, container, false);
View divider = row.findViewById(R.id.divider);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) divider.getLayoutParams();
params.topMargin = row.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_title_padding_bottom);
params.bottomMargin = row.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_title_padding_bottom);
container.addView(row);
}
public void setDefaultDialogMode(RouteBetweenPointsDialogMode defaultDialogMode) {
this.defaultDialogMode = defaultDialogMode;
updateModeButtons();
}
public void updateModeButtons() {
UiUtilities.updateCustomRadioButtons(getMyApplication(), customRadioButton, nightMode,
defaultDialogMode == RouteBetweenPointsDialogMode.SINGLE ? START : END);
btnDescription.setText(getButtonDescr(defaultDialogMode));
}
private void addProfileView(LinearLayout container, View.OnClickListener onClickListener, Object tag,
Drawable icon, CharSequence title, boolean check) {
View row = UiUtilities.getInflater(getContext(), nightMode)
.inflate(R.layout.bottom_sheet_item_with_radio_btn, container, false);
((RadioButton) row.findViewById(R.id.compound_button)).setChecked(check);
ImageView imageView = row.findViewById(R.id.icon);
imageView.setImageDrawable(icon);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) imageView.getLayoutParams();
params.rightMargin = container.getContext().getResources().getDimensionPixelSize(R.dimen.bottom_sheet_icon_margin_large);
((TextView) row.findViewById(R.id.title)).setText(title);
row.setOnClickListener(onClickListener);
row.setTag(tag);
container.addView(row);
}
@Override
public void createMenuItems(Bundle savedInstanceState) {
Bundle args = getArguments();
@ -173,6 +83,7 @@ public class RouteBetweenPointsBottomSheetDialogFragment extends BottomSheetBeha
.inflate(R.layout.fragment_route_between_points_bottom_sheet_dialog,
null, false);
customRadioButton = mainView.findViewById(R.id.custom_radio_buttons);
customRadioButton.setMinimumHeight(getResources().getDimensionPixelSize(R.dimen.route_info_control_buttons_height));
TextView singleModeButton = mainView.findViewById(R.id.left_button);
singleModeButton.setText(getButtonText(RouteBetweenPointsDialogMode.SINGLE));
TextView allModeButton = mainView.findViewById(R.id.right_button);
@ -253,6 +164,137 @@ public class RouteBetweenPointsBottomSheetDialogFragment extends BottomSheetBeha
super.onDestroyView();
}
private void addDelimiterView(LinearLayout container) {
View row = UiUtilities.getInflater(getContext(), nightMode).inflate(R.layout.divider, container, false);
View divider = row.findViewById(R.id.divider);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) divider.getLayoutParams();
params.topMargin = row.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_title_padding_bottom);
params.bottomMargin = row.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_title_padding_bottom);
container.addView(row);
}
public void setDefaultDialogMode(RouteBetweenPointsDialogMode defaultDialogMode) {
this.defaultDialogMode = defaultDialogMode;
updateModeButtons();
}
public void updateModeButtons() {
UiUtilities.updateCustomRadioButtons(getMyApplication(), customRadioButton, nightMode,
defaultDialogMode == RouteBetweenPointsDialogMode.SINGLE ? START : END);
btnDescription.setText(getButtonDescr(defaultDialogMode));
}
private void addProfileView(LinearLayout container, View.OnClickListener onClickListener, Object tag,
Drawable icon, CharSequence title, boolean check) {
View row = UiUtilities.getInflater(getContext(), nightMode)
.inflate(R.layout.bottom_sheet_item_with_radio_btn, container, false);
((RadioButton) row.findViewById(R.id.compound_button)).setChecked(check);
ImageView imageView = row.findViewById(R.id.icon);
imageView.setImageDrawable(icon);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) imageView.getLayoutParams();
params.rightMargin = container.getContext().getResources().getDimensionPixelSize(R.dimen.bottom_sheet_icon_margin_large);
((TextView) row.findViewById(R.id.title)).setText(title);
row.setOnClickListener(onClickListener);
row.setTag(tag);
container.addView(row);
}
private String getButtonText(RouteBetweenPointsDialogMode dialogMode) {
switch (dialogType) {
case WHOLE_ROUTE_CALCULATION:
switch (dialogMode) {
case SINGLE:
return getString(R.string.next_segment);
case ALL:
return getString(R.string.whole_track);
}
break;
case NEXT_ROUTE_CALCULATION:
String nextDescr = getDescription(false, dialogMode);
switch (dialogMode) {
case SINGLE:
return getString(R.string.ltr_or_rtl_combine_via_space, getString(R.string.next_segment), nextDescr);
case ALL:
return getString(R.string.ltr_or_rtl_combine_via_space, getString(R.string.all_next_segments), nextDescr);
}
break;
case PREV_ROUTE_CALCULATION:
String prevDescr = getDescription(true, dialogMode);
switch (dialogMode) {
case SINGLE:
return getString(R.string.ltr_or_rtl_combine_via_space, getString(R.string.previous_segment), prevDescr);
case ALL:
return getString(R.string.ltr_or_rtl_combine_via_space, getString(R.string.all_previous_segments), prevDescr);
}
break;
}
return "";
}
private String getButtonDescr(RouteBetweenPointsDialogMode dialogMode) {
switch (dialogType) {
case WHOLE_ROUTE_CALCULATION:
switch (dialogMode) {
case SINGLE:
return getString(R.string.route_between_points_next_segment_button_desc);
case ALL:
return getString(R.string.route_between_points_whole_track_button_desc);
}
break;
case NEXT_ROUTE_CALCULATION:
switch (dialogMode) {
case SINGLE:
return getString(R.string.only_selected_segment_recalc);
case ALL:
return getString(R.string.all_next_segments_will_be_recalc);
}
break;
case PREV_ROUTE_CALCULATION:
switch (dialogMode) {
case SINGLE:
return getString(R.string.only_selected_segment_recalc);
case ALL:
return getString(R.string.all_previous_segments_will_be_recalc);
}
break;
}
return "";
}
@NonNull
private String getDescription(boolean before, RouteBetweenPointsDialogMode dialogMode) {
MapActivity mapActivity = (MapActivity) getActivity();
if (mapActivity == null) {
return "";
}
MeasurementEditingContext editingCtx = mapActivity.getMapLayers().getMeasurementToolLayer().getEditingCtx();
int pos = editingCtx.getSelectedPointPosition();
List<WptPt> points = editingCtx.getPoints();
float dist = 0;
if (dialogMode == RouteBetweenPointsDialogMode.SINGLE) {
WptPt selectedPoint = points.get(pos);
WptPt second = points.get(before ? pos - 1 : pos + 1);
dist += MapUtils.getDistance(selectedPoint.lat, selectedPoint.lon, second.lat, second.lon);
} else {
int startIdx;
int endIdx;
if (before) {
startIdx = 1;
endIdx = pos;
} else {
startIdx = pos + 1;
endIdx = points.size() - 1;
}
for (int i = startIdx; i <= endIdx; i++) {
WptPt first = points.get(i - 1);
WptPt second = points.get(i);
dist += MapUtils.getDistance(first.lat, first.lon, second.lat, second.lon);
}
}
return OsmAndFormatter.getFormattedDistance(dist, mapActivity.getMyApplication());
}
public static void showInstance(FragmentManager fm, Fragment targetFragment,
RouteBetweenPointsDialogType dialogType,
RouteBetweenPointsDialogMode defaultDialogMode,

View file

@ -159,7 +159,6 @@ public class SelectedPointBottomSheetDialogFragment extends MenuBottomSheetDialo
items.add(new OptionsDividerItem(getContext()));
BaseBottomSheetItem changeRouteTypeBefore = new BottomSheetItemWithDescription.Builder()
.setDescription(getDescription(true))
.setIcon(getRouteTypeIcon(true))
.setTitle(getString(R.string.plan_route_change_route_type_before))
.setLayoutId(R.layout.bottom_sheet_item_with_descr_pad_32dp)
@ -178,7 +177,6 @@ public class SelectedPointBottomSheetDialogFragment extends MenuBottomSheetDialo
items.add(changeRouteTypeBefore);
BaseBottomSheetItem changeRouteTypeAfter = new BottomSheetItemWithDescription.Builder()
.setDescription(getDescription(false))
.setIcon(getRouteTypeIcon(false))
.setTitle(getString(R.string.plan_route_change_route_type_after))
.setLayoutId(R.layout.bottom_sheet_item_with_descr_pad_32dp)

View file

@ -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<TabItem> 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) {

View file

@ -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.<TextView>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);
}
}
}

View file

@ -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);
}
}

View file

@ -66,33 +66,19 @@ public class OpenstreetmapRemoteUtil implements OpenstreetmapUtil {
@Override
public EntityInfo getEntityInfo(long id) {
if(entityInfoId != null && entityInfoId.getId().longValue() == id) {
if (entityInfoId != null && entityInfoId.getId().longValue() == id) {
return entityInfo;
}
return null;
}
private static String getSiteApi() {
final int deviceApiVersion = android.os.Build.VERSION.SDK_INT;
String RETURN_API;
if (deviceApiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) {
RETURN_API = "https://api.openstreetmap.org/";
} else {
RETURN_API = "http://api.openstreetmap.org/";
}
// RETURN_API = "http://api06.dev.openstreetmap.org/";
return RETURN_API;
private String getSiteApi() {
return settings.getOsmUrl();
}
private final static String URL_TO_UPLOAD_GPX = getSiteApi() + "api/0.6/gpx/create";
public String uploadGPXFile(String tagstring, String description, String visibility, File f) {
OsmOAuthAuthorizationAdapter adapter = new OsmOAuthAuthorizationAdapter(ctx);
String url = URL_TO_UPLOAD_GPX;
String url = getSiteApi() + "api/0.6/gpx/create";
Map<String, String> additionalData = new LinkedHashMap<String, String>();
additionalData.put("description", description);
additionalData.put("tags", tagstring);

View file

@ -248,15 +248,8 @@ public class OsmBugsLayer extends OsmandMapLayer implements IContextMenuProvider
}
protected List<OpenStreetNote> loadingBugs(double topLatitude, double leftLongitude, double bottomLatitude, double rightLongitude) {
final int deviceApiVersion = android.os.Build.VERSION.SDK_INT;
String SITE_API;
if (deviceApiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) {
SITE_API = "https://api.openstreetmap.org/";
} else {
SITE_API = "http://api.openstreetmap.org/";
}
String SITE_API = activity.getMyApplication().getSettings().getOsmUrl();
List<OpenStreetNote> bugs = new ArrayList<>();
StringBuilder b = new StringBuilder();

View file

@ -1,9 +1,12 @@
package net.osmand.plus.osmedit;
import com.github.scribejava.core.model.Response;
import net.osmand.PlatformUtil;
import net.osmand.osm.io.Base64;
import net.osmand.osm.io.NetworkUtils;
import net.osmand.osm.oauth.OsmOAuthAuthorizationClient;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.Version;
@ -19,6 +22,8 @@ import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.ExecutionException;
public class OsmBugsRemoteUtil implements OsmBugsUtil {
@ -26,26 +31,12 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil {
private static final String GET = "GET";
private static final String POST = "POST";
static String getNotesApi() {
final int deviceApiVersion = android.os.Build.VERSION.SDK_INT;
String RETURN_API;
if (deviceApiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) {
RETURN_API = "https://api.openstreetmap.org/api/0.6/notes";
} else {
RETURN_API = "http://api.openstreetmap.org/api/0.6/notes";
}
return RETURN_API;
String getNotesApi() {
return settings.getOsmUrl() + "api/0.6/notes";
}
static String getUserDetailsApi() {
final int deviceApiVersion = android.os.Build.VERSION.SDK_INT;
String RETURN_API;
if (deviceApiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) {
RETURN_API = "https://api.openstreetmap.org/api/0.6/user/details";
} else {
RETURN_API = "http://api.openstreetmap.org/api/0.6/user/details";
}
return RETURN_API;
String getUserDetailsApi() {
return settings.getOsmUrl() + "api/0.6/user/details";
}
private OsmandApplication app;
@ -107,57 +98,82 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil {
return editingPOI(getUserDetailsApi(), GET, "validate_login", false);
}
private OsmBugResult editingPOI(String url, String requestMethod, String userOperation,
boolean anonymous) {
OsmOAuthAuthorizationAdapter client = new OsmOAuthAuthorizationAdapter(app);
OsmBugResult r = new OsmBugResult();
try {
HttpURLConnection connection = NetworkUtils.getHttpURLConnection(url);
log.info("Editing poi " + url);
connection.setConnectTimeout(15000);
connection.setRequestMethod(requestMethod);
connection.setRequestProperty("User-Agent", Version.getFullVersion(app)); //$NON-NLS-1$
if (!anonymous) {
if (client.isValidToken()) {
connection.addRequestProperty("Authorization", "OAuth " + client.getClient().getAccessToken().getToken());
} else {
String token = settings.USER_NAME.get() + ":" + settings.USER_PASSWORD.get(); //$NON-NLS-1$
connection.addRequestProperty("Authorization", "Basic " + Base64.encode(token.getBytes("UTF-8"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
private OsmBugResult editingPOI(String url, String requestMethod, String userOperation, boolean anonymous) {
OsmOAuthAuthorizationAdapter authorizationAdapter = new OsmOAuthAuthorizationAdapter(app);
OsmBugResult result = new OsmBugResult();
if (authorizationAdapter.isValidToken() && !anonymous) {
try {
result = performOAuthRequest(url, requestMethod, userOperation, authorizationAdapter);
} catch (InterruptedException e) {
log.error(e);
result.warning = e.getMessage();
} catch (ExecutionException e) {
log.error(e);
result.warning = e.getMessage();
} catch (IOException e) {
log.error(e);
result.warning = e.getMessage();
}
connection.setDoInput(true);
connection.connect();
String msg = connection.getResponseMessage();
boolean ok = connection.getResponseCode() == HttpURLConnection.HTTP_OK;
log.info(msg); //$NON-NLS-1$
// populate return fields.
StringBuilder responseBody;
if (connection.getResponseCode() == HttpURLConnection.HTTP_CONFLICT) {
responseBody = Algorithms.readFromInputStream(connection.getErrorStream());
} else {
responseBody = Algorithms.readFromInputStream(connection.getInputStream());
} else {
try {
result = performBasicRequest(url, requestMethod, anonymous);
} catch (FileNotFoundException | NullPointerException e) {
// that's tricky case why NPE is thrown to fix that problem httpClient could be used
String msg = app.getString(R.string.auth_failed);
log.error(msg, e);
result.warning = app.getString(R.string.auth_failed) + "";
} catch (MalformedURLException e) {
log.error(userOperation + " " + app.getString(R.string.failed_op), e);
result.warning = e.getMessage() + "";
} catch (IOException e) {
log.error(userOperation + " " + app.getString(R.string.failed_op), e);
result.warning = e.getMessage() + " link unavailable";
}
log.info("Response : " + responseBody); //$NON-NLS-1$
connection.disconnect();
if (!ok) {
r.warning = msg + "\n" + responseBody;
}
} catch (FileNotFoundException | NullPointerException e) {
// that's tricky case why NPE is thrown to fix that problem httpClient could be used
String msg = app.getString(R.string.auth_failed);
log.error(msg, e);
r.warning = app.getString(R.string.auth_failed) + "";
} catch (MalformedURLException e) {
log.error(userOperation + " " + app.getString(R.string.failed_op), e); //$NON-NLS-1$
r.warning = e.getMessage() + "";
} catch (IOException e) {
log.error(userOperation + " " + app.getString(R.string.failed_op), e); //$NON-NLS-1$
r.warning = e.getMessage() + " link unavailable";
}
return r;
return result;
}
}
private OsmBugResult performBasicRequest(String url, String requestMethod, boolean anonymous) throws IOException {
OsmBugResult result = new OsmBugResult();
HttpURLConnection connection = NetworkUtils.getHttpURLConnection(url);
log.info("Editing poi " + url);
connection.setConnectTimeout(15000);
connection.setRequestMethod(requestMethod);
connection.setRequestProperty("User-Agent", Version.getFullVersion(app));
if (!anonymous) {
String token = settings.USER_NAME.get() + ":" + settings.USER_PASSWORD.get();
connection.addRequestProperty("Authorization", "Basic " + Base64.encode(token.getBytes(StandardCharsets.UTF_8)));
}
connection.setDoInput(true);
connection.connect();
String msg = connection.getResponseMessage();
boolean ok = connection.getResponseCode() == HttpURLConnection.HTTP_OK;
log.info(msg);
// populate return fields.
StringBuilder responseBody;
if (connection.getResponseCode() == HttpURLConnection.HTTP_CONFLICT) {
responseBody = Algorithms.readFromInputStream(connection.getErrorStream());
} else {
responseBody = Algorithms.readFromInputStream(connection.getInputStream());
}
log.info("Response : " + responseBody);
connection.disconnect();
if (!ok) {
result.warning = msg + "\n" + responseBody;
}
return result;
}
private OsmBugResult performOAuthRequest(String url, String requestMethod, String userOperation,
OsmOAuthAuthorizationAdapter authorizationAdapter)
throws InterruptedException, ExecutionException, IOException {
OsmBugResult result = new OsmBugResult();
OsmOAuthAuthorizationClient client = authorizationAdapter.getClient();
Response response = client.performRequest(url, requestMethod, userOperation);
if (response.getCode() != HttpURLConnection.HTTP_OK) {
result.warning = response.getMessage() + "\n" + response.getBody();
}
return result;
}
}

View file

@ -9,11 +9,12 @@ 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;
import net.osmand.PlatformUtil;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.helpers.AndroidUiHelper;
@ -29,16 +30,12 @@ import net.osmand.plus.settings.preferences.SwitchPreferenceEx;
import net.osmand.plus.widgets.style.CustomTypefaceSpan;
import net.osmand.util.Algorithms;
import org.apache.commons.logging.Log;
import static net.osmand.plus.myplaces.FavoritesActivity.TAB_ID;
import static net.osmand.plus.osmedit.OsmEditingPlugin.OSM_EDIT_TAB;
public class OsmEditingFragment extends BaseSettingsFragment implements OnPreferenceChanged, ValidateOsmLoginListener,
OsmAuthorizationListener {
private static final Log log = PlatformUtil.getLog(OsmEditingFragment.class);
private static final String OSM_LOGOUT = "osm_logout";
private static final String OPEN_OSM_EDITS = "open_osm_edits";
public static final String OSM_LOGIN_DATA = "osm_login_data";
@ -50,6 +47,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
@ -61,6 +69,7 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer
setupLogoutPref();
setupOfflineEditingPref();
setupUseDevUrlPref();
setupOsmEditsDescrPref();
setupOsmEditsPref();
}
@ -129,6 +138,13 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer
offlineEditingPref.setIcon(icon);
}
private void setupUseDevUrlPref() {
Drawable icon = getPersistentPrefIcon(R.drawable.ic_action_laptop);
SwitchPreferenceEx useDevUrlPref = findPreference(settings.USE_DEV_URL.getId());
useDevUrlPref.setDescription(getString(R.string.use_dev_url_descr));
useDevUrlPref.setIcon(icon);
}
private void setupOsmEditsDescrPref() {
String menu = getString(R.string.shared_string_menu);
String myPlaces = getString(R.string.shared_string_my_places);
@ -152,6 +168,18 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer
createProfile.setIcon(getActiveIcon(R.drawable.ic_action_folder));
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String prefId = preference.getKey();
if (settings.USE_DEV_URL.getId().equals(prefId) && newValue instanceof Boolean) {
settings.USE_DEV_URL.set((Boolean) newValue);
osmLogout();
authorizationAdapter = app.getOsmOAuthHelper().updateAdapter();
return true;
}
return super.onPreferenceChange(preference, newValue);
}
@Override
public boolean onPreferenceClick(Preference preference) {
String prefId = preference.getKey();
@ -172,10 +200,18 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer
return true;
}
} else if (OSM_LOGOUT.equals(prefId)) {
if (isValidToken()) {
osmLogout();
return true;
}
return super.onPreferenceClick(preference);
}
private void osmLogout() {
boolean validToken = isValidToken();
if (validToken || isLoginExists()) {
if (validToken) {
settings.USER_ACCESS_TOKEN.resetToDefault();
settings.USER_ACCESS_TOKEN_SECRET.resetToDefault();
authorizationAdapter.resetToken();
} else {
settings.USER_NAME.resetToDefault();
@ -183,13 +219,15 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer
}
app.showShortToastMessage(R.string.osm_edit_logout_success);
updateAllSettings();
return true;
}
return super.onPreferenceClick(preference);
}
@Override
public void onPreferenceChanged(String prefId) {
if (settings.USE_DEV_URL.getId().equals(prefId)) {
osmLogout();
authorizationAdapter = app.getOsmOAuthHelper().updateAdapter();
}
updateAllSettings();
}

View file

@ -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;

View file

@ -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();

View file

@ -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();

View file

@ -8,6 +8,7 @@ import android.webkit.WebView;
import androidx.annotation.NonNull;
import com.github.scribejava.core.builder.api.DefaultApi10a;
import com.github.scribejava.core.model.OAuth1AccessToken;
import com.github.scribejava.core.model.OAuth1RequestToken;
import com.github.scribejava.core.model.OAuthAsyncRequestCallback;
@ -16,7 +17,7 @@ import com.github.scribejava.core.model.Verb;
import net.osmand.PlatformUtil;
import net.osmand.osm.oauth.OsmOAuthAuthorizationClient;
import net.osmand.plus.BuildConfig;
import net.osmand.plus.OsmAndConstants;
import net.osmand.plus.OsmandApplication;
import org.apache.commons.logging.Log;
@ -31,16 +32,27 @@ public class OsmOAuthAuthorizationAdapter {
private static final int THREAD_ID = 10101;
private static final String OSM_USER = "user";
private static final String DISPLAY_NAME = "display_name";
private static final String OSM_USER_DETAILS_URL = "https://api.openstreetmap.org/api/0.6/user/details";
public final static Log log = PlatformUtil.getLog(OsmOAuthAuthorizationAdapter.class);
private OsmandApplication app;
private OsmOAuthAuthorizationClient client =
new OsmOAuthAuthorizationClient(BuildConfig.OSM_OAUTH_CONSUMER_KEY, BuildConfig.OSM_OAUTH_CONSUMER_SECRET);
private final OsmOAuthAuthorizationClient client;
public OsmOAuthAuthorizationAdapter(OsmandApplication app) {
TrafficStats.setThreadStatsTag(THREAD_ID);
this.app = app;
DefaultApi10a api10a;
String key;
String secret;
if (app.getSettings().USE_DEV_URL.get()) {
api10a = new OsmOAuthAuthorizationClient.OsmDevApi();
key = OsmAndConstants.OSM_OAUTH_DEVELOPER_KEY;
secret = OsmAndConstants.OSM_OAUTH_DEVELOPER_SECRET;
} else {
api10a = new OsmOAuthAuthorizationClient.OsmApi();
key = OsmAndConstants.OSM_OAUTH_CONSUMER_KEY;
secret = OsmAndConstants.OSM_OAUTH_CONSUMER_SECRET;
}
client = new OsmOAuthAuthorizationClient(key, secret, api10a);
restoreToken();
}
@ -162,9 +174,10 @@ public class OsmOAuthAuthorizationAdapter {
return parseUserName(response);
}
public Response getOsmUserDetails() throws InterruptedException, ExecutionException, IOException {
return performRequest(OSM_USER_DETAILS_URL, Verb.GET.name(), null);
}
public Response getOsmUserDetails() throws InterruptedException, ExecutionException, IOException {
String osmUserDetailsUrl = app.getSettings().getOsmUrl() + "api/0.6/user/details";
return performRequest(osmUserDetailsUrl, Verb.GET.name(), null);
}
public String parseUserName(Response response) throws XmlPullParserException, IOException {
String userName = null;

View file

@ -12,7 +12,7 @@ import java.util.Set;
public class OsmOAuthHelper {
private final OsmandApplication app;
private final OsmOAuthAuthorizationAdapter authorizationAdapter;
private OsmOAuthAuthorizationAdapter authorizationAdapter;
private final Set<OsmAuthorizationListener> listeners = new HashSet<>();
public OsmOAuthHelper(@NonNull OsmandApplication app) {
@ -24,6 +24,11 @@ public class OsmOAuthHelper {
listeners.add(listener);
}
public OsmOAuthAuthorizationAdapter updateAdapter(){
authorizationAdapter = new OsmOAuthAuthorizationAdapter(app);
return authorizationAdapter;
}
public void removeListener(OsmAuthorizationListener listener) {
listeners.remove(listener);
}

View file

@ -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;

View file

@ -1133,6 +1133,17 @@ public class OsmandSettings {
// this value boolean is synchronized with settings_pref.xml preference offline POI/Bugs edition
public final OsmandPreference<Boolean> OFFLINE_EDITION = new BooleanPreference(this, "offline_osm_editing", true).makeGlobal().makeShared();
public final OsmandPreference<Boolean> USE_DEV_URL = new BooleanPreference(this, "use_dev_url", false).makeGlobal().makeShared();
public String getOsmUrl() {
String osmUrl;
if (USE_DEV_URL.get()) {
osmUrl = "https://master.apis.dev.openstreetmap.org/";
} else {
osmUrl = "https://api.openstreetmap.org/";
}
return osmUrl;
}
// this value string is synchronized with settings_pref.xml preference name
public final CommonPreference<DayNightMode> DAYNIGHT_MODE =

View file

@ -87,7 +87,7 @@ public class HistoryMarkersSettingsItem extends CollectionSettingsItem<MapMarker
}
for (MapMarker marker : appliedItems) {
markersHelper.moveMapMarkerToHistory(marker);
markersHelper.addMarker(marker);
}
}
}
@ -96,7 +96,7 @@ public class HistoryMarkersSettingsItem extends CollectionSettingsItem<MapMarker
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 HistoryMarkersSettingsItem extends CollectionSettingsItem<MapMarker
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 = true;
renamedMarker.visitedDate = item.visitedDate;
renamedMarker.creationDate = item.creationDate;
renamedMarker.nextKey = MapMarkersDbHelper.HISTORY_NEXT_VALUE;
return renamedMarker;
}

View file

@ -96,7 +96,7 @@ public class MarkersSettingsItem extends CollectionSettingsItem<MapMarker> {
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<MapMarker> {
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;
}

View file

@ -43,7 +43,7 @@ import net.osmand.plus.settings.backend.ApplicationMode;
import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean;
import net.osmand.plus.settings.backend.ExportSettingsCategory;
import net.osmand.plus.settings.backend.ExportSettingsType;
import net.osmand.plus.settings.fragments.ExportDataObject;
import net.osmand.plus.settings.fragments.SettingsCategoryItems;
import net.osmand.util.Algorithms;
import org.apache.commons.logging.Log;
@ -473,13 +473,11 @@ public class SettingsHelper {
}
public List<SettingsItem> getFilteredSettingsItems(List<ExportSettingsType> settingsTypes, boolean globalExport) {
Map<ExportSettingsCategory, List<ExportDataObject>> dataList = getAdditionalData(globalExport);
Map<ExportSettingsType, List<?>> typesMap = new EnumMap<>(ExportSettingsType.class);
for (List<ExportDataObject> objects : dataList.values()) {
for (ExportDataObject exportObject : objects) {
typesMap.put(exportObject.getType(), exportObject.getItems());
}
}
Map<ExportSettingsType, List<?>> typesMap = new HashMap<>();
typesMap.putAll(getSettingsItems(globalExport));
typesMap.putAll(getMyPlacesItems());
typesMap.putAll(getResourcesItems());
return getFilteredSettingsItems(typesMap, settingsTypes);
}
@ -500,67 +498,64 @@ public class SettingsHelper {
return settingsItems;
}
public Map<ExportSettingsCategory, List<ExportDataObject>> getAdditionalData(boolean globalExport) {
Map<ExportSettingsCategory, List<ExportDataObject>> dataList = new LinkedHashMap<>();
public Map<ExportSettingsCategory, SettingsCategoryItems> getAdditionalData(boolean globalExport) {
Map<ExportSettingsCategory, SettingsCategoryItems> dataList = new LinkedHashMap<>();
List<ExportDataObject> settingsItems = getSettingsItems(globalExport);
List<ExportDataObject> myPlacesItems = getMyPlacesItems();
List<ExportDataObject> resourcesItems = getResourcesItems();
Map<ExportSettingsType, List<?>> settingsItems = getSettingsItems(globalExport);
Map<ExportSettingsType, List<?>> myPlacesItems = getMyPlacesItems();
Map<ExportSettingsType, List<?>> 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<ExportDataObject> getSettingsItems(boolean globalExport) {
List<ExportDataObject> settingsItems = new ArrayList<>();
private Map<ExportSettingsType, List<?>> getSettingsItems(boolean globalExport) {
Map<ExportSettingsType, List<?>> settingsItems = new LinkedHashMap<>();
if (globalExport) {
List<ApplicationModeBean> 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<QuickAction> actionsList = registry.getQuickActions();
if (!actionsList.isEmpty()) {
settingsItems.add(new ExportDataObject(ExportSettingsType.QUICK_ACTIONS, actionsList));
settingsItems.put(ExportSettingsType.QUICK_ACTIONS, actionsList);
}
List<PoiUIFilter> poiList = app.getPoiFilters().getUserDefinedPoiFilters(false);
if (!poiList.isEmpty()) {
settingsItems.add(new ExportDataObject(ExportSettingsType.POI_TYPES, poiList));
settingsItems.put(ExportSettingsType.POI_TYPES, poiList);
}
List<HistoryEntry> historyEntries = SearchHistoryHelper.getInstance(app).getHistoryEntries(false);
if (!historyEntries.isEmpty()) {
settingsItems.add(new ExportDataObject(ExportSettingsType.SEARCH_HISTORY, historyEntries));
settingsItems.put(ExportSettingsType.SEARCH_HISTORY, historyEntries);
}
Map<LatLon, AvoidRoadInfo> 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<ExportDataObject> getMyPlacesItems() {
List<ExportDataObject> myPlacesItems = new ArrayList<>();
private Map<ExportSettingsType, List<?>> getMyPlacesItems() {
Map<ExportSettingsType, List<?>> myPlacesItems = new LinkedHashMap<>();
List<FavoriteGroup> 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<GPXInfo> gpxInfoList = GpxUiHelper.getSortedGPXFilesInfo(gpxDir, null, true);
@ -573,18 +568,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<OsmNotesPoint> notesPointList = osmEditingPlugin.getDBBug().getOsmbugsPoints();
if (!notesPointList.isEmpty()) {
myPlacesItems.add(new ExportDataObject(ExportSettingsType.OSM_NOTES, notesPointList));
myPlacesItems.put(ExportSettingsType.OSM_NOTES, notesPointList);
}
List<OpenstreetmapPoint> 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);
@ -597,7 +592,7 @@ public class SettingsHelper {
}
}
if (!files.isEmpty()) {
myPlacesItems.add(new ExportDataObject(ExportSettingsType.MULTIMEDIA_NOTES, files));
myPlacesItems.put(ExportSettingsType.MULTIMEDIA_NOTES, files);
}
}
List<MapMarker> mapMarkers = app.getMapMarkersHelper().getMapMarkersFromDefaultGroups(false);
@ -606,7 +601,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<MapMarker> markersHistory = app.getMapMarkersHelper().getMapMarkersFromDefaultGroups(true);
if (!markersHistory.isEmpty()) {
@ -614,23 +609,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<ExportDataObject> getResourcesItems() {
List<ExportDataObject> resourcesItems = new ArrayList<>();
private Map<ExportSettingsType, List<?>> getResourcesItems() {
Map<ExportSettingsType, List<?>> resourcesItems = new LinkedHashMap<>();
Map<String, File> 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<ITileSource> iTileSources = new ArrayList<>();
@ -650,22 +645,22 @@ public class SettingsHelper {
}
}
if (!iTileSources.isEmpty()) {
resourcesItems.add(new ExportDataObject(ExportSettingsType.MAP_SOURCES, iTileSources));
resourcesItems.put(ExportSettingsType.MAP_SOURCES, iTileSources);
}
List<LocalIndexInfo> localIndexInfoList = getLocalIndexData();
List<File> 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;
@ -794,35 +789,32 @@ public class SettingsHelper {
return settingsItems;
}
public static Map<ExportSettingsCategory, List<ExportDataObject>> getSettingsToOperateByCategory(List<SettingsItem> items, boolean importComplete) {
Map<ExportSettingsCategory, List<ExportDataObject>> exportMap = new LinkedHashMap<>();
public static Map<ExportSettingsCategory, SettingsCategoryItems> getSettingsToOperateByCategory(List<SettingsItem> items, boolean importComplete) {
Map<ExportSettingsCategory, SettingsCategoryItems> exportMap = new LinkedHashMap<>();
Map<ExportSettingsType, List<?>> settingsToOperate = getSettingsToOperate(items, importComplete);
List<ExportDataObject> settingsItems = new ArrayList<>();
List<ExportDataObject> myPlacesItems = new ArrayList<>();
List<ExportDataObject> resourcesItems = new ArrayList<>();
Map<ExportSettingsType, List<?>> settingsItems = new LinkedHashMap<>();
Map<ExportSettingsType, List<?>> myPlacesItems = new LinkedHashMap<>();
Map<ExportSettingsType, List<?>> resourcesItems = new LinkedHashMap<>();
for (Map.Entry<ExportSettingsType, List<?>> 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;
@ -1018,15 +1010,4 @@ public class SettingsHelper {
}
});
}
private static void sortExportSettingsObjects(List<ExportDataObject> items) {
Collections.sort(items, new Comparator<ExportDataObject>() {
@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);
}
});
}
}

View file

@ -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<RecyclerView
} else if (currentItem instanceof FavoriteGroup) {
itemHolder.title.setText(((FavoriteGroup) currentItem).getDisplayName(app));
itemHolder.icon.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_favorite, activeColorRes));
} else if (currentItem instanceof MapMarkersGroup) {
MapMarkersGroup markersGroup = (MapMarkersGroup) currentItem;
itemHolder.title.setText(markersGroup.getName());
} else if (currentItem instanceof MapMarker) {
MapMarker mapMarker = (MapMarker) currentItem;
itemHolder.title.setText(mapMarker.getName(app));
itemHolder.icon.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_flag, activeColorRes));
} else if (currentItem instanceof HistoryEntry) {
itemHolder.title.setText(((HistoryEntry) currentItem).getName().getName());

View file

@ -1,26 +0,0 @@
package net.osmand.plus.settings.fragments;
import androidx.annotation.NonNull;
import net.osmand.plus.settings.backend.ExportSettingsType;
import java.util.List;
public class ExportDataObject {
private ExportSettingsType type;
private List<?> 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;
}
}

View file

@ -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<Object> allItems;
private List<Object> 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<Object> 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<Object>) 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));
}
}
}

View file

@ -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<ExportSettingsCategory> itemsTypes = new ArrayList<>();
private Map<ExportSettingsType, List<?>> selectedItemsMap = new HashMap<>();
private Map<ExportSettingsCategory, List<ExportDataObject>> itemsMap = new LinkedHashMap<>();
private List<ExportSettingsCategory> itemsTypes;
private Map<ExportSettingsType, List<?>> selectedItemsMap;
private Map<ExportSettingsCategory, SettingsCategoryItems> 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<ExportDataObject> 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<ExportSettingsCategory, List<ExportDataObject>> itemsMap) {
public void updateSettingsItems(Map<ExportSettingsCategory, SettingsCategoryItems> itemsMap,
Map<ExportSettingsType, List<?>> 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<ExportDataObject> 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);
}
}

View file

@ -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<ExportSettingsCategory, List<ExportDataObject>> dataList;
private Map<ExportSettingsType, List<?>> selectedItemsMap = new HashMap<>();
private Map<ExportSettingsCategory, SettingsCategoryItems> 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<Object> items = (List<Object>) dataList.get(category).getItemsForType(type);
List<Object> selectedItems = (List<Object>) selectedItemsMap.get(type);
ExportItemsBottomSheet.showInstance(type, selectedItems, items, fragmentManager, this);
}
}
private void prepareFile() {
if (app != null) {
exportingStarted = true;

View file

@ -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<? super Object> duplicatesList,
List<SettingsItem> settingsItems, File file, Fragment targetFragment) {
List<SettingsItem> 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<File> ttsVoiceFilesList = new ArrayList<>();
List<File> voiceFilesList = new ArrayList<>();
List<File> mapFilesList = new ArrayList<>();
List<MapMarkersGroup> markersGroups = new ArrayList<>();
List<MapMarkersGroup> markersHistoryGroups = new ArrayList<>();
List<MapMarker> mapMarkers = new ArrayList<>();
List<MapMarker> mapMarkersGroups = new ArrayList<>();
List<HistoryEntry> 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,13 +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);
duplicates.addAll(mapMarkersGroups);
}
return duplicates;
}

View file

@ -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;
@ -135,7 +135,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);
@ -146,6 +146,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) {

View file

@ -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<ExportSettingsType, List<?>> itemsMap;
public SettingsCategoryItems(@NonNull Map<ExportSettingsType, List<?>> itemsMap) {
this.itemsMap = itemsMap;
}
public List<ExportSettingsType> getTypes() {
return new ArrayList<>(itemsMap.keySet());
}
public List<?> getItemsForType(ExportSettingsType type) {
return itemsMap.get(type);
}
public Map<ExportSettingsType, List<?>> getItemsMap() {
return itemsMap;
}
}

View file

@ -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);
}
}

View file

@ -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;
}

View file

@ -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<SelectedGpxFile> 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<SelectedGpxFile> selectedGPXFiles, DrawSettings settings) {
List<SelectedGpxFile> 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<TrkSegment> 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);

Some files were not shown because too many files have changed in this diff Show more