Merge branch 'master' into add_custom_profile_color

# Conflicts:
#	OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java
This commit is contained in:
Vitaliy 2021-03-01 23:52:49 +02:00
commit 8d1ce38f4f
318 changed files with 10795 additions and 4072 deletions

View file

@ -1,12 +0,0 @@
---
name: "📚 Outdated FAQ"
about: Report an issue in FAQ
---
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
Please do not file FAQ issues on the GitHub issues tracker.
Instead use the [Google group](https://groups.google.com/forum/#!forum/osmand) to fix wrong or outdated FAQ.
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑

4
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View file

@ -0,0 +1,4 @@
contact_links:
- name: Outdated FAQ
url: https://groups.google.com/forum/#!forum/osmand
about: Fix wrong or outdated FAQ on the forum instead

3
.gitignore vendored
View file

@ -16,7 +16,8 @@ OsmAndCore_*.aar
*.iml
.settings
.idea
.project
**/.project
**/.classpath
out/
# Huawei

View file

@ -11,6 +11,7 @@ public interface OsmAndCustomizationConstants {
String DRAWER_MY_PLACES_ID = DRAWER_ITEM_ID_SCHEME + "my_places";
String DRAWER_SEARCH_ID = DRAWER_ITEM_ID_SCHEME + "search";
String DRAWER_DIRECTIONS_ID = DRAWER_ITEM_ID_SCHEME + "directions";
String DRAWER_TRIP_RECORDING_ID = DRAWER_ITEM_ID_SCHEME + "trip_recording";
String DRAWER_CONFIGURE_MAP_ID = DRAWER_ITEM_ID_SCHEME + "configure_map";
String DRAWER_DOWNLOAD_MAPS_ID = DRAWER_ITEM_ID_SCHEME + "download_maps";
String DRAWER_OSMAND_LIVE_ID = DRAWER_ITEM_ID_SCHEME + "osmand_live";

View file

@ -25,6 +25,24 @@ public class ALocation extends AidlParams {
private ALocation() {
}
public ALocation(double latitude, double longitude, long time, boolean hasAltitude, double altitude,
boolean hasSpeed, float speed, boolean hasBearing, float bearing,
boolean hasAccuracy, float accuracy, boolean hasVerticalAccuracy, float verticalAccuracy) {
this.latitude = latitude;
this.longitude = longitude;
this.time = time;
this.hasAltitude = hasAltitude;
this.altitude = altitude;
this.hasSpeed = hasSpeed;
this.speed = speed;
this.hasBearing = hasBearing;
this.bearing = bearing;
this.hasAccuracy = hasAccuracy;
this.accuracy = accuracy;
this.hasVerticalAccuracy = hasVerticalAccuracy;
this.verticalAccuracy = verticalAccuracy;
}
public ALocation(Parcel in) {
readFromParcel(in);
}

View file

@ -23,7 +23,9 @@ public class PlatformUtil {
}
public static XmlPullParser newXMLPullParser() throws XmlPullParserException{
return new org.kxml2.io.KXmlParser();
org.kxml2.io.KXmlParser xmlParser = new org.kxml2.io.KXmlParser();
xmlParser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
return xmlParser;
}
public static XmlSerializer newSerializer() {

View file

@ -8,6 +8,7 @@ import gnu.trove.set.hash.TIntHashSet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@ -627,7 +628,9 @@ public class BinaryMapAddressReaderAdapter {
indexOffset = codedIS.getTotalBytesRead();
int oldLimit = codedIS.pushLimit(length);
// here offsets are sorted by distance
map.readIndexedStringTable(stringMatcher.getCollator(), req.nameQuery, "", loffsets, 0);
TIntArrayList charsList = new TIntArrayList();
charsList.add(0);
map.readIndexedStringTable(stringMatcher.getCollator(), Collections.singletonList(req.nameQuery), "", Collections.singletonList(loffsets), charsList);
codedIS.popLimit(oldLimit);
break;
case OsmAndAddressNameIndexData.ATOM_FIELD_NUMBER:

View file

@ -83,7 +83,7 @@ public class BinaryMapIndexReader {
public final static int TRANSPORT_STOP_ZOOM = 24;
public static final int SHIFT_COORDINATES = 5;
public static final int LABEL_ZOOM_ENCODE = 26;
public static final int LABEL_ZOOM_ENCODE = 31 - SHIFT_COORDINATES;
private final static Log log = PlatformUtil.getLog(BinaryMapIndexReader.class);
public static boolean READ_STATS = false;
public static final SearchPoiTypeFilter ACCEPT_ALL_POI_TYPE_FILTER = new SearchPoiTypeFilter() {
@ -2161,9 +2161,9 @@ public class BinaryMapIndexReader {
private static boolean testAddressSearch = false;
private static boolean testAddressSearchName = false;
private static boolean testAddressJustifySearch = false;
private static boolean testPoiSearch = false;
private static boolean testPoiSearch = true;
private static boolean testPoiSearchOnPath = false;
private static boolean testTransportSearch = true;
private static boolean testTransportSearch = false;
private static int sleft = MapUtils.get31TileNumberX(27.55079);
private static int sright = MapUtils.get31TileNumberX(27.55317);
@ -2177,7 +2177,7 @@ public class BinaryMapIndexReader {
public static void main(String[] args) throws IOException {
File fl = new File(System.getProperty("maps") + "/Synthetic_test_rendering.obf");
fl = new File("/home/madwasp79/OsmAnd-maps/Poly_center2.obf");
fl = new File(System.getProperty("maps") +"/Wikivoyage.obf__");
RandomAccessFile raf = new RandomAccessFile(fl, "r");
@ -2325,7 +2325,7 @@ public class BinaryMapIndexReader {
private static void testPoiSearchByName(BinaryMapIndexReader reader) throws IOException {
println("Searching by name...");
SearchRequest<Amenity> req = buildSearchPoiRequest(0, 0, "Art",
SearchRequest<Amenity> req = buildSearchPoiRequest(0, 0, "central ukraine",
0, Integer.MAX_VALUE, 0, Integer.MAX_VALUE, null);
reader.searchPoiByName(req);
@ -2385,54 +2385,72 @@ public class BinaryMapIndexReader {
}
int readIndexedStringTable(Collator instance, String query, String prefix, TIntArrayList list, int charMatches) throws IOException {
void readIndexedStringTable(Collator instance, List<String> queries, String prefix, List<TIntArrayList> listOffsets, TIntArrayList matchedCharacters) throws IOException {
String key = null;
boolean[] matched = new boolean[matchedCharacters.size()];
boolean shouldWeReadSubtable = false;
while (true) {
int t = codedIS.readTag();
int tag = WireFormat.getTagFieldNumber(t);
switch (tag) {
case 0:
return charMatches;
return;
case OsmandOdb.IndexedStringTable.KEY_FIELD_NUMBER :
key = codedIS.readString();
if(prefix.length() > 0){
if (prefix.length() > 0) {
key = prefix + key;
}
// check query is part of key (the best matching)
if(CollatorStringMatcher.cmatches(instance, key, query, StringMatcherMode.CHECK_ONLY_STARTS_WITH)){
if(query.length() >= charMatches){
if(query.length() > charMatches){
charMatches = query.length();
list.clear();
}
} else {
key = null;
shouldWeReadSubtable = false;
for (int i = 0; i < queries.size(); i++) {
int charMatches = matchedCharacters.get(i);
String query = queries.get(i);
matched[i] = false;
if (query == null) {
continue;
}
// check key is part of query
} else if (CollatorStringMatcher.cmatches(instance, query, key, StringMatcherMode.CHECK_ONLY_STARTS_WITH)) {
if (key.length() >= charMatches) {
if (key.length() > charMatches) {
charMatches = key.length();
list.clear();
// check query is part of key (the best matching)
if (CollatorStringMatcher.cmatches(instance, key, query, StringMatcherMode.CHECK_ONLY_STARTS_WITH)) {
if (query.length() >= charMatches) {
if (query.length() > charMatches) {
matchedCharacters.set(i, query.length());
listOffsets.get(i).clear();
}
matched[i] = true;
}
// check key is part of query
} else if (CollatorStringMatcher.cmatches(instance, query, key, StringMatcherMode.CHECK_ONLY_STARTS_WITH)) {
if (key.length() >= charMatches) {
if (key.length() > charMatches) {
matchedCharacters.set(i, key.length());
listOffsets.get(i).clear();
}
matched[i] = true;
}
} else {
key = null;
}
} else {
key = null;
shouldWeReadSubtable |= matched[i];
}
break;
case OsmandOdb.IndexedStringTable.VAL_FIELD_NUMBER :
int val = readInt();
if (key != null) {
list.add(val);
for (int i = 0; i < queries.size(); i++) {
if (matched[i]) {
listOffsets.get(i).add(val);
}
}
break;
case OsmandOdb.IndexedStringTable.SUBTABLES_FIELD_NUMBER :
int len = codedIS.readRawVarint32();
int oldLim = codedIS.pushLimit(len);
if (key != null) {
charMatches = readIndexedStringTable(instance, query, key, list, charMatches);
if (shouldWeReadSubtable && key != null) {
List<String> subqueries = new ArrayList<>(queries);
// reset query so we don't search what was not matched
for(int i = 0; i < queries.size(); i++) {
if(!matched[i]) {
subqueries.set(i, null);
}
}
readIndexedStringTable(instance, subqueries, key, listOffsets, matchedCharacters);
} else {
codedIS.skipRawBytes(codedIS.getBytesUntilLimit());
}

View file

@ -1,10 +1,6 @@
package net.osmand.binary;
import gnu.trove.list.array.TIntArrayList;
import gnu.trove.map.hash.TIntLongHashMap;
import gnu.trove.set.hash.TLongHashSet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
@ -12,6 +8,14 @@ import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import org.apache.commons.logging.Log;
import com.google.protobuf.CodedInputStream;
import com.google.protobuf.WireFormat;
import gnu.trove.list.array.TIntArrayList;
import gnu.trove.map.hash.TIntLongHashMap;
import gnu.trove.set.hash.TLongHashSet;
import net.osmand.Collator;
import net.osmand.CollatorStringMatcher;
import net.osmand.CollatorStringMatcher.StringMatcherMode;
@ -26,11 +30,6 @@ import net.osmand.osm.MapPoiTypes;
import net.osmand.osm.PoiCategory;
import net.osmand.util.MapUtils;
import org.apache.commons.logging.Log;
import com.google.protobuf.CodedInputStream;
import com.google.protobuf.WireFormat;
public class BinaryMapPoiReaderAdapter {
private static final Log LOG = PlatformUtil.getLog(BinaryMapPoiReaderAdapter.class);
@ -38,7 +37,12 @@ public class BinaryMapPoiReaderAdapter {
private static final int CATEGORY_MASK = (1 << SHIFT_BITS_CATEGORY) - 1;
private static final int ZOOM_TO_SKIP_FILTER_READ = 6;
private static final int ZOOM_TO_SKIP_FILTER = 3;
private static final int BUCKET_SEARCH_BY_NAME = 5;
private static final int BUCKET_SEARCH_BY_NAME = 15; // should be bigger 100?
private static final int BASE_POI_SHIFT = SHIFT_BITS_CATEGORY;// 7
private static final int FINAL_POI_SHIFT = BinaryMapIndexReader.SHIFT_COORDINATES;// 5
private static final int BASE_POI_ZOOM = 31 - BASE_POI_SHIFT;// 24 zoom
private static final int FINAL_POI_ZOOM = 31 - FINAL_POI_SHIFT;// 26 zoom
public static class PoiSubType {
public boolean text;
@ -332,7 +336,7 @@ public class BinaryMapPoiReaderAdapter {
});
int p = BUCKET_SEARCH_BY_NAME * 3;
if (p < offKeys.length) {
for (int i = p + BUCKET_SEARCH_BY_NAME; ; i += BUCKET_SEARCH_BY_NAME) {
for (int i = p + BUCKET_SEARCH_BY_NAME;; i += BUCKET_SEARCH_BY_NAME) {
if (i > offKeys.length) {
Arrays.sort(offKeys, p, offKeys.length);
break;
@ -344,7 +348,6 @@ public class BinaryMapPoiReaderAdapter {
}
}
LOG.info("Searched poi structure in " + (System.currentTimeMillis() - time) +
"ms. Found " + offKeys.length + " subtrees");
for (int j = 0; j < offKeys.length; j++) {
@ -370,7 +373,8 @@ public class BinaryMapPoiReaderAdapter {
private TIntLongHashMap readPoiNameIndex(Collator instance, String query, SearchRequest<Amenity> req) throws IOException {
TIntLongHashMap offsets = new TIntLongHashMap();
TIntArrayList dataOffsets = null;
List<TIntArrayList> listOffsets = null;
List<TIntLongHashMap> listOfSepOffsets = new ArrayList<TIntLongHashMap>();
int offset = 0;
while (true) {
int t = codedIS.readTag();
@ -381,24 +385,51 @@ public class BinaryMapPoiReaderAdapter {
case OsmandOdb.OsmAndPoiNameIndex.TABLE_FIELD_NUMBER: {
int length = readInt();
int oldLimit = codedIS.pushLimit(length);
dataOffsets = new TIntArrayList();
offset = codedIS.getTotalBytesRead();
map.readIndexedStringTable(instance, query, "", dataOffsets, 0);
List<String> queries = new ArrayList<>();
for (String word : query.split(" ")) {
if (word.trim().length() > 0) {
queries.add(word.trim());
}
}
TIntArrayList charsList = new TIntArrayList(queries.size());
listOffsets = new ArrayList<TIntArrayList>(queries.size());
while(listOffsets.size() < queries.size()) {
charsList.add(0);
listOffsets.add(new TIntArrayList());
}
map.readIndexedStringTable(instance, queries, "", listOffsets, charsList);
codedIS.popLimit(oldLimit);
break;
}
case OsmandOdb.OsmAndPoiNameIndex.DATA_FIELD_NUMBER: {
if (dataOffsets != null) {
dataOffsets.sort(); // 1104125
for (int i = 0; i < dataOffsets.size(); i++) {
codedIS.seek(dataOffsets.get(i) + offset);
int len = codedIS.readRawVarint32();
int oldLim = codedIS.pushLimit(len);
readPoiNameIndexData(offsets, req);
codedIS.popLimit(oldLim);
if (req.isCancelled()) {
codedIS.skipRawBytes(codedIS.getBytesUntilLimit());
return offsets;
if (listOffsets != null) {
for (TIntArrayList dataOffsets : listOffsets) {
TIntLongHashMap offsetMap = new TIntLongHashMap();
listOfSepOffsets.add(offsetMap);
dataOffsets.sort(); // 1104125
for (int i = 0; i < dataOffsets.size(); i++) {
codedIS.seek(dataOffsets.get(i) + offset);
int len = codedIS.readRawVarint32();
int oldLim = codedIS.pushLimit(len);
readPoiNameIndexData(offsetMap, req);
codedIS.popLimit(oldLim);
if (req.isCancelled()) {
codedIS.skipRawBytes(codedIS.getBytesUntilLimit());
return offsets;
}
}
}
}
if (listOfSepOffsets.size() > 0) {
offsets.putAll(listOfSepOffsets.get(0));
for (int j = 1; j < listOfSepOffsets.size(); j++) {
TIntLongHashMap mp = listOfSepOffsets.get(j);
// offsets.retainAll(mp); -- calculate intresection of mp & offsets
for (int chKey : offsets.keys()) {
if (!mp.containsKey(chKey)) {
offsets.remove(chKey);
}
}
}
}
@ -688,6 +719,8 @@ public class BinaryMapPoiReaderAdapter {
Amenity am = null;
int x = 0;
int y = 0;
int precisionXY = 0;
boolean hasLocation = false;
StringBuilder retValue = new StringBuilder();
PoiCategory amenityType = null;
LinkedList<String> textTags = null;
@ -714,12 +747,22 @@ public class BinaryMapPoiReaderAdapter {
am.setRoutePoint(arp);
}
}
if (hasLocation) {
if (precisionXY != 0) {
int[] xy = MapUtils.calculateFinalXYFromBaseAndPrecisionXY(BASE_POI_ZOOM, FINAL_POI_ZOOM, precisionXY, x >> BASE_POI_SHIFT, y >> BASE_POI_SHIFT, true);
int x31 = xy[0] << FINAL_POI_SHIFT;
int y31 = xy[1] << FINAL_POI_SHIFT;
am.setLocation(MapUtils.get31LatitudeY(y31), MapUtils.get31LongitudeX(x31));
} else {
am.setLocation(MapUtils.get31LatitudeY(y), MapUtils.get31LongitudeX(x));
}
}
return am;
case OsmandOdb.OsmAndPoiBoxDataAtom.DX_FIELD_NUMBER:
x = (codedIS.readSInt32() + (px << (24 - zoom))) << 7;
x = (codedIS.readSInt32() + (px << (BASE_POI_ZOOM - zoom))) << BASE_POI_SHIFT;
break;
case OsmandOdb.OsmAndPoiBoxDataAtom.DY_FIELD_NUMBER:
y = (codedIS.readSInt32() + (py << (24 - zoom))) << 7;
y = (codedIS.readSInt32() + (py << (BASE_POI_ZOOM - zoom))) << BASE_POI_SHIFT;
req.numberOfVisitedObjects++;
if (checkBounds) {
if (left31 > x || right31 < x || top31 > y || bottom31 < y) {
@ -728,7 +771,8 @@ public class BinaryMapPoiReaderAdapter {
}
}
am = new Amenity();
am.setLocation(MapUtils.get31LatitudeY(y), MapUtils.get31LongitudeX(x));
hasLocation = true;
//am.setLocation(MapUtils.get31LatitudeY(y), MapUtils.get31LongitudeX(x)); // set precise coordinates
break;
case OsmandOdb.OsmAndPoiBoxDataAtom.SUBCATEGORIES_FIELD_NUMBER:
int subtypev = codedIS.readUInt32();
@ -801,6 +845,11 @@ public class BinaryMapPoiReaderAdapter {
case OsmandOdb.OsmAndPoiBoxDataAtom.NOTE_FIELD_NUMBER:
am.setDescription(codedIS.readString());
break;
case OsmandOdb.OsmAndPoiBoxDataAtom.PRECISIONXY_FIELD_NUMBER:
if (hasLocation) {
precisionXY = codedIS.readInt32();
}
break;
default:
skipUnknownField(t);
break;

View file

@ -54371,6 +54371,24 @@ public final class OsmandOdb {
*/
com.google.protobuf.ByteString
getTextValuesBytes(int index);
// optional int32 precisionXY = 16;
/**
* <code>optional int32 precisionXY = 16;</code>
*
* <pre>
* precision in 1-xy-xy-xy binary format
* </pre>
*/
boolean hasPrecisionXY();
/**
* <code>optional int32 precisionXY = 16;</code>
*
* <pre>
* precision in 1-xy-xy-xy binary format
* </pre>
*/
int getPrecisionXY();
}
/**
* Protobuf type {@code OsmAnd.OBF.OsmAndPoiBoxDataAtom}
@ -54539,6 +54557,11 @@ public final class OsmandOdb {
textValues_.add(input.readBytes());
break;
}
case 128: {
bitField0_ |= 0x00000200;
precisionXY_ = input.readInt32();
break;
}
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
@ -55048,6 +55071,30 @@ public final class OsmandOdb {
return textValues_.getByteString(index);
}
// optional int32 precisionXY = 16;
public static final int PRECISIONXY_FIELD_NUMBER = 16;
private int precisionXY_;
/**
* <code>optional int32 precisionXY = 16;</code>
*
* <pre>
* precision in 1-xy-xy-xy binary format
* </pre>
*/
public boolean hasPrecisionXY() {
return ((bitField0_ & 0x00000200) == 0x00000200);
}
/**
* <code>optional int32 precisionXY = 16;</code>
*
* <pre>
* precision in 1-xy-xy-xy binary format
* </pre>
*/
public int getPrecisionXY() {
return precisionXY_;
}
private void initFields() {
dx_ = 0;
dy_ = 0;
@ -55062,6 +55109,7 @@ public final class OsmandOdb {
note_ = "";
textCategories_ = java.util.Collections.emptyList();
textValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
precisionXY_ = 0;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@ -55122,6 +55170,9 @@ public final class OsmandOdb {
for (int i = 0; i < textValues_.size(); i++) {
output.writeBytes(15, textValues_.getByteString(i));
}
if (((bitField0_ & 0x00000200) == 0x00000200)) {
output.writeInt32(16, precisionXY_);
}
getUnknownFields().writeTo(output);
}
@ -55203,6 +55254,10 @@ public final class OsmandOdb {
size += dataSize;
size += 1 * getTextValuesList().size();
}
if (((bitField0_ & 0x00000200) == 0x00000200)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(16, precisionXY_);
}
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
@ -55345,6 +55400,8 @@ public final class OsmandOdb {
bitField0_ = (bitField0_ & ~0x00000800);
textValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
bitField0_ = (bitField0_ & ~0x00001000);
precisionXY_ = 0;
bitField0_ = (bitField0_ & ~0x00002000);
return this;
}
@ -55430,6 +55487,10 @@ public final class OsmandOdb {
bitField0_ = (bitField0_ & ~0x00001000);
}
result.textValues_ = textValues_;
if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
to_bitField0_ |= 0x00000200;
}
result.precisionXY_ = precisionXY_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@ -55525,6 +55586,9 @@ public final class OsmandOdb {
}
onChanged();
}
if (other.hasPrecisionXY()) {
setPrecisionXY(other.getPrecisionXY());
}
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
@ -56506,6 +56570,55 @@ public final class OsmandOdb {
return this;
}
// optional int32 precisionXY = 16;
private int precisionXY_ ;
/**
* <code>optional int32 precisionXY = 16;</code>
*
* <pre>
* precision in 1-xy-xy-xy binary format
* </pre>
*/
public boolean hasPrecisionXY() {
return ((bitField0_ & 0x00002000) == 0x00002000);
}
/**
* <code>optional int32 precisionXY = 16;</code>
*
* <pre>
* precision in 1-xy-xy-xy binary format
* </pre>
*/
public int getPrecisionXY() {
return precisionXY_;
}
/**
* <code>optional int32 precisionXY = 16;</code>
*
* <pre>
* precision in 1-xy-xy-xy binary format
* </pre>
*/
public Builder setPrecisionXY(int value) {
bitField0_ |= 0x00002000;
precisionXY_ = value;
onChanged();
return this;
}
/**
* <code>optional int32 precisionXY = 16;</code>
*
* <pre>
* precision in 1-xy-xy-xy binary format
* </pre>
*/
public Builder clearPrecisionXY() {
bitField0_ = (bitField0_ & ~0x00002000);
precisionXY_ = 0;
onChanged();
return this;
}
// @@protoc_insertion_point(builder_scope:OsmAnd.OBF.OsmAndPoiBoxDataAtom)
}
@ -65008,37 +65121,38 @@ public final class OsmandOdb {
"tegories\030\003 \003(\r\022\025\n\rsubcategories\030\005 \003(\r\"i\n" +
"\020OsmAndPoiBoxData\022\014\n\004zoom\030\001 \001(\r\022\t\n\001x\030\002 \001" +
"(\r\022\t\n\001y\030\003 \001(\r\0221\n\007poiData\030\005 \003(\0132 .OsmAnd." +
"OBF.OsmAndPoiBoxDataAtom\"\360\001\n\024OsmAndPoiBo",
"OBF.OsmAndPoiBoxDataAtom\"\205\002\n\024OsmAndPoiBo",
"xDataAtom\022\n\n\002dx\030\002 \002(\021\022\n\n\002dy\030\003 \002(\021\022\022\n\ncat" +
"egories\030\004 \003(\r\022\025\n\rsubcategories\030\005 \003(\r\022\014\n\004" +
"name\030\006 \001(\t\022\016\n\006nameEn\030\007 \001(\t\022\n\n\002id\030\010 \001(\004\022\024" +
"\n\014openingHours\030\n \001(\t\022\014\n\004site\030\013 \001(\t\022\r\n\005ph" +
"one\030\014 \001(\t\022\014\n\004note\030\r \001(\t\022\026\n\016textCategorie" +
"s\030\016 \003(\r\022\022\n\ntextValues\030\017 \003(\t\"\032\n\007IdTable\022\017" +
"\n\007routeId\030\001 \003(\022\"F\n\017RestrictionData\022\014\n\004ty" +
"pe\030\001 \002(\005\022\014\n\004from\030\002 \002(\005\022\n\n\002to\030\003 \002(\005\022\013\n\003vi" +
"a\030\004 \001(\005\"x\n\tRouteData\022\016\n\006points\030\001 \002(\014\022\022\n\n" +
"pointTypes\030\004 \001(\014\022\022\n\npointNames\030\005 \001(\014\022\r\n\005",
"types\030\007 \002(\014\022\017\n\007routeId\030\014 \002(\005\022\023\n\013stringNa" +
"mes\030\016 \001(\014\"\304\005\n\022OsmAndRoutingIndex\022\014\n\004name" +
"\030\001 \002(\t\022?\n\005rules\030\002 \003(\01320.OsmAnd.OBF.OsmAn" +
"dRoutingIndex.RouteEncodingRule\022>\n\trootB" +
"oxes\030\003 \003(\0132+.OsmAnd.OBF.OsmAndRoutingInd" +
"ex.RouteDataBox\022A\n\014basemapBoxes\030\004 \003(\0132+." +
"OsmAnd.OBF.OsmAndRoutingIndex.RouteDataB" +
"ox\022=\n\006blocks\030\005 \003(\0132-.OsmAnd.OBF.OsmAndRo" +
"utingIndex.RouteDataBlock\032;\n\021RouteEncodi" +
"ngRule\022\013\n\003tag\030\003 \002(\t\022\r\n\005value\030\005 \002(\t\022\n\n\002id",
"\030\007 \001(\r\032\231\001\n\014RouteDataBox\022\014\n\004left\030\001 \002(\021\022\r\n" +
"\005right\030\002 \002(\021\022\013\n\003top\030\003 \002(\021\022\016\n\006bottom\030\004 \002(" +
"\021\022\023\n\013shiftToData\030\005 \001(\007\022:\n\005boxes\030\007 \003(\0132+." +
"OsmAnd.OBF.OsmAndRoutingIndex.RouteDataB" +
"ox\032\303\001\n\016RouteDataBlock\022$\n\007idTable\030\005 \001(\0132\023" +
".OsmAnd.OBF.IdTable\022*\n\013dataObjects\030\006 \003(\013" +
"2\025.OsmAnd.OBF.RouteData\0221\n\014restrictions\030" +
"\007 \003(\0132\033.OsmAnd.OBF.RestrictionData\022,\n\013st" +
"ringTable\030\010 \001(\0132\027.OsmAnd.OBF.StringTable" +
"B\036\n\021net.osmand.binaryB\tOsmandOdb"
"s\030\016 \003(\r\022\022\n\ntextValues\030\017 \003(\t\022\023\n\013precision" +
"XY\030\020 \001(\005\"\032\n\007IdTable\022\017\n\007routeId\030\001 \003(\022\"F\n\017" +
"RestrictionData\022\014\n\004type\030\001 \002(\005\022\014\n\004from\030\002 " +
"\002(\005\022\n\n\002to\030\003 \002(\005\022\013\n\003via\030\004 \001(\005\"x\n\tRouteDat" +
"a\022\016\n\006points\030\001 \002(\014\022\022\n\npointTypes\030\004 \001(\014\022\022\n",
"\npointNames\030\005 \001(\014\022\r\n\005types\030\007 \002(\014\022\017\n\007rout" +
"eId\030\014 \002(\005\022\023\n\013stringNames\030\016 \001(\014\"\304\005\n\022OsmAn" +
"dRoutingIndex\022\014\n\004name\030\001 \002(\t\022?\n\005rules\030\002 \003" +
"(\01320.OsmAnd.OBF.OsmAndRoutingIndex.Route" +
"EncodingRule\022>\n\trootBoxes\030\003 \003(\0132+.OsmAnd" +
".OBF.OsmAndRoutingIndex.RouteDataBox\022A\n\014" +
"basemapBoxes\030\004 \003(\0132+.OsmAnd.OBF.OsmAndRo" +
"utingIndex.RouteDataBox\022=\n\006blocks\030\005 \003(\0132" +
"-.OsmAnd.OBF.OsmAndRoutingIndex.RouteDat" +
"aBlock\032;\n\021RouteEncodingRule\022\013\n\003tag\030\003 \002(\t",
"\022\r\n\005value\030\005 \002(\t\022\n\n\002id\030\007 \001(\r\032\231\001\n\014RouteDat" +
"aBox\022\014\n\004left\030\001 \002(\021\022\r\n\005right\030\002 \002(\021\022\013\n\003top" +
"\030\003 \002(\021\022\016\n\006bottom\030\004 \002(\021\022\023\n\013shiftToData\030\005 " +
"\001(\007\022:\n\005boxes\030\007 \003(\0132+.OsmAnd.OBF.OsmAndRo" +
"utingIndex.RouteDataBox\032\303\001\n\016RouteDataBlo" +
"ck\022$\n\007idTable\030\005 \001(\0132\023.OsmAnd.OBF.IdTable" +
"\022*\n\013dataObjects\030\006 \003(\0132\025.OsmAnd.OBF.Route" +
"Data\0221\n\014restrictions\030\007 \003(\0132\033.OsmAnd.OBF." +
"RestrictionData\022,\n\013stringTable\030\010 \001(\0132\027.O" +
"smAnd.OBF.StringTableB\036\n\021net.osmand.bina",
"ryB\tOsmandOdb"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@ -65296,7 +65410,7 @@ public final class OsmandOdb {
internal_static_OsmAnd_OBF_OsmAndPoiBoxDataAtom_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_OsmAnd_OBF_OsmAndPoiBoxDataAtom_descriptor,
new java.lang.String[] { "Dx", "Dy", "Categories", "Subcategories", "Name", "NameEn", "Id", "OpeningHours", "Site", "Phone", "Note", "TextCategories", "TextValues", });
new java.lang.String[] { "Dx", "Dy", "Categories", "Subcategories", "Name", "NameEn", "Id", "OpeningHours", "Site", "Phone", "Note", "TextCategories", "TextValues", "PrecisionXY", });
internal_static_OsmAnd_OBF_IdTable_descriptor =
getDescriptor().getMessageTypes().get(36);
internal_static_OsmAnd_OBF_IdTable_fieldAccessorTable = new

View file

@ -4,6 +4,7 @@ import net.osmand.Location;
import net.osmand.PlatformUtil;
import net.osmand.binary.BinaryMapRouteReaderAdapter.RouteRegion;
import net.osmand.binary.BinaryMapRouteReaderAdapter.RouteTypeRule;
import net.osmand.data.LatLon;
import net.osmand.util.Algorithms;
import net.osmand.util.MapUtils;
import net.osmand.util.TransliterationHelper;
@ -37,7 +38,9 @@ public class RouteDataObject {
public int[] nameIds;
// mixed array [0, height, cumulative_distance height, cumulative_distance, height, ...] - length is length(points)*2
public float[] heightDistanceArray = null;
public float heightByCurrentLocation;
private static final Log LOG = PlatformUtil.getLog(RouteDataObject.class);
public RouteDataObject(RouteRegion region) {
this.region = region;
}
@ -124,7 +127,7 @@ public class RouteDataObject {
equals = this.pointTypes[i] == thatObj.pointTypes[i];
} else if (pointTypes[i].length != thatObj.pointTypes[i].length) {
equals = false;
} else {
} else {
for (int j = 0; j < this.pointTypes[i].length && equals; j++) {
String thisTag = region.routeEncodingRules.get(pointTypes[i][j]).getTag();
String thisValue = region.routeEncodingRules.get(pointTypes[i][j]).getValue();
@ -147,7 +150,7 @@ public class RouteDataObject {
equals = this.pointNameTypes[i] == thatObj.pointNameTypes[i];
} else if (pointNameTypes[i].length != thatObj.pointNameTypes[i].length) {
equals = false;
} else {
} else {
for (int j = 0; j < this.pointNameTypes[i].length && equals; j++) {
String thisTag = region.routeEncodingRules.get(pointNameTypes[i][j]).getTag();
String thisValue = pointNames[i][j];
@ -165,53 +168,67 @@ public class RouteDataObject {
}
public float[] calculateHeightArray() {
if(heightDistanceArray != null) {
return calculateHeightArray(null);
}
public float[] calculateHeightArray(LatLon currentLocation) {
if (heightDistanceArray != null) {
return heightDistanceArray;
}
int startHeight = Algorithms.parseIntSilently(getValue("osmand_ele_start"), HEIGHT_UNDEFINED);
int endHeight = Algorithms.parseIntSilently(getValue("osmand_ele_end"), startHeight);
if(startHeight == HEIGHT_UNDEFINED) {
if (startHeight == HEIGHT_UNDEFINED) {
heightDistanceArray = new float[0];
return heightDistanceArray;
}
heightDistanceArray = new float[2*getPointsLength()];
heightDistanceArray = new float[2 * getPointsLength()];
double plon = 0;
double plat = 0;
float prevHeight = startHeight;
for(int k = 0; k < getPointsLength(); k++) {
float prevHeight = heightByCurrentLocation = startHeight;
double prevDistance = 0;
for (int k = 0; k < getPointsLength(); k++) {
double lon = MapUtils.get31LongitudeX(getPoint31XTile(k));
double lat = MapUtils.get31LatitudeY(getPoint31YTile(k));
if(k > 0) {
if (k > 0) {
double dd = MapUtils.getDistance(plat, plon, lat, lon);
float height = HEIGHT_UNDEFINED;
if(k == getPointsLength() - 1) {
if (k == getPointsLength() - 1) {
height = endHeight;
} else {
String asc = getValue(k, "osmand_ele_asc");
if(asc != null && asc.length() > 0) {
if (asc != null && asc.length() > 0) {
height = (prevHeight + Float.parseFloat(asc));
} else {
String desc = getValue(k, "osmand_ele_desc");
if(desc != null && desc.length() > 0) {
if (desc != null && desc.length() > 0) {
height = (prevHeight - Float.parseFloat(desc));
}
}
}
heightDistanceArray[2*k] = (float) dd;
heightDistanceArray[2*k+1] = height;
if(height != HEIGHT_UNDEFINED) {
heightDistanceArray[2 * k] = (float) dd;
heightDistanceArray[2 * k + 1] = height;
if (currentLocation != null) {
double distance = MapUtils.getDistance(currentLocation, lat, lon);
if (height != HEIGHT_UNDEFINED && distance < prevDistance) {
prevDistance = distance;
heightByCurrentLocation = height;
}
}
if (height != HEIGHT_UNDEFINED) {
// interpolate undefined
double totalDistance = dd;
int startUndefined = k;
while(startUndefined - 1 >= 0 && heightDistanceArray[2*(startUndefined - 1)+1] == HEIGHT_UNDEFINED) {
startUndefined --;
totalDistance += heightDistanceArray[2*(startUndefined)];
while (startUndefined - 1 >= 0 && heightDistanceArray[2 * (startUndefined - 1) + 1] == HEIGHT_UNDEFINED) {
startUndefined--;
totalDistance += heightDistanceArray[2 * (startUndefined)];
}
if(totalDistance > 0) {
if (totalDistance > 0) {
double angle = (height - prevHeight) / totalDistance;
for(int j = startUndefined; j < k; j++) {
heightDistanceArray[2*j+1] = (float) ((heightDistanceArray[2*j] * angle) + heightDistanceArray[2*j-1]);
for (int j = startUndefined; j < k; j++) {
heightDistanceArray[2 * j + 1] = (float) ((heightDistanceArray[2 * j] * angle) + heightDistanceArray[2 * j - 1]);
}
}
prevHeight = height;
@ -223,6 +240,9 @@ public class RouteDataObject {
}
plat = lat;
plon = lon;
if (currentLocation != null) {
prevDistance = MapUtils.getDistance(currentLocation, plat, plon);
}
}
return heightDistanceArray;
}
@ -231,34 +251,34 @@ public class RouteDataObject {
return id;
}
public String getName(){
if(names != null ) {
public String getName() {
if (names != null) {
return names.get(region.nameTypeRule);
}
return null;
}
public String getName(String lang){
public String getName(String lang) {
return getName(lang, false);
}
public String getName(String lang, boolean transliterate){
if(names != null ) {
if(Algorithms.isEmpty(lang)) {
public String getName(String lang, boolean transliterate) {
if (names != null) {
if (Algorithms.isEmpty(lang)) {
return names.get(region.nameTypeRule);
}
int[] kt = names.keys();
for(int i = 0 ; i < kt.length; i++) {
for (int i = 0; i < kt.length; i++) {
int k = kt[i];
if(region.routeEncodingRules.size() > k) {
if(("name:"+lang).equals(region.routeEncodingRules.get(k).getTag())) {
if (region.routeEncodingRules.size() > k) {
if (("name:" + lang).equals(region.routeEncodingRules.get(k).getTag())) {
return names.get(k);
}
}
}
String nmDef = names.get(region.nameTypeRule);
if(transliterate && nmDef != null && nmDef.length() > 0) {
if (transliterate && nmDef != null && nmDef.length() > 0) {
return TransliterationHelper.transliterate(nmDef);
}
return nmDef;
@ -279,20 +299,20 @@ public class RouteDataObject {
// return getDestinationRef(direction);
//}
if (names != null) {
if(Algorithms.isEmpty(lang)) {
if (Algorithms.isEmpty(lang)) {
return names.get(region.refTypeRule);
}
int[] kt = names.keys();
for(int i = 0 ; i < kt.length; i++) {
for (int i = 0; i < kt.length; i++) {
int k = kt[i];
if(region.routeEncodingRules.size() > k) {
if(("ref:"+lang).equals(region.routeEncodingRules.get(k).getTag())) {
if (region.routeEncodingRules.size() > k) {
if (("ref:" + lang).equals(region.routeEncodingRules.get(k).getTag())) {
return names.get(k);
}
}
}
String refDefault = names.get(region.refTypeRule);
if(transliterate && refDefault != null && refDefault.length() > 0) {
if (transliterate && refDefault != null && refDefault.length() > 0) {
return TransliterationHelper.transliterate(refDefault);
}
return refDefault;
@ -307,13 +327,13 @@ public class RouteDataObject {
String refTagDefault = "destination:ref";
String refDefault = null;
for(int i = 0 ; i < kt.length; i++) {
for (int i = 0; i < kt.length; i++) {
int k = kt[i];
if(region.routeEncodingRules.size() > k) {
if(refTag.equals(region.routeEncodingRules.get(k).getTag())) {
if (region.routeEncodingRules.size() > k) {
if (refTag.equals(region.routeEncodingRules.get(k).getTag())) {
return names.get(k);
}
if(refTagDefault.equals(region.routeEncodingRules.get(k).getTag())) {
if (refTagDefault.equals(region.routeEncodingRules.get(k).getTag())) {
refDefault = names.get(k);
}
}
@ -326,12 +346,12 @@ public class RouteDataObject {
return null;
}
public String getDestinationName(String lang, boolean transliterate, boolean direction){
public String getDestinationName(String lang, boolean transliterate, boolean direction) {
//Issue #3289: Treat destination:ref like a destination, not like a ref
String destRef = ((getDestinationRef(direction) == null) || getDestinationRef(direction).equals(getRef(lang, transliterate, direction))) ? "" : getDestinationRef(direction);
String destRef1 = Algorithms.isEmpty(destRef) ? "" : destRef + ", ";
if(names != null) {
if (names != null) {
int[] kt = names.keys();
// Issue #3181: Parse destination keys in this order:
@ -341,35 +361,35 @@ public class RouteDataObject {
// destination
String destinationTagLangFB = "destination:lang:XX";
if(!Algorithms.isEmpty(lang)) {
if (!Algorithms.isEmpty(lang)) {
destinationTagLangFB = (direction == true) ? "destination:lang:" + lang + ":forward" : "destination:lang:" + lang + ":backward";
}
String destinationTagFB = (direction == true) ? "destination:forward" : "destination:backward";
String destinationTagLang = "destination:lang:XX";
if(!Algorithms.isEmpty(lang)) {
if (!Algorithms.isEmpty(lang)) {
destinationTagLang = "destination:lang:" + lang;
}
String destinationTagDefault = "destination";
String destinationDefault = null;
for(int i = 0 ; i < kt.length; i++) {
for (int i = 0; i < kt.length; i++) {
int k = kt[i];
if(region.routeEncodingRules.size() > k) {
if(!Algorithms.isEmpty(lang) && destinationTagLangFB.equals(region.routeEncodingRules.get(k).getTag())) {
if (region.routeEncodingRules.size() > k) {
if (!Algorithms.isEmpty(lang) && destinationTagLangFB.equals(region.routeEncodingRules.get(k).getTag())) {
return destRef1 + ((transliterate) ? TransliterationHelper.transliterate(names.get(k)) : names.get(k));
}
if(destinationTagFB.equals(region.routeEncodingRules.get(k).getTag())) {
if (destinationTagFB.equals(region.routeEncodingRules.get(k).getTag())) {
return destRef1 + ((transliterate) ? TransliterationHelper.transliterate(names.get(k)) : names.get(k));
}
if(!Algorithms.isEmpty(lang) && destinationTagLang.equals(region.routeEncodingRules.get(k).getTag())) {
if (!Algorithms.isEmpty(lang) && destinationTagLang.equals(region.routeEncodingRules.get(k).getTag())) {
return destRef1 + ((transliterate) ? TransliterationHelper.transliterate(names.get(k)) : names.get(k));
}
if(destinationTagDefault.equals(region.routeEncodingRules.get(k).getTag())) {
if (destinationTagDefault.equals(region.routeEncodingRules.get(k).getTag())) {
destinationDefault = names.get(k);
}
}
}
if(destinationDefault != null) {
if (destinationDefault != null) {
return destRef1 + ((transliterate) ? TransliterationHelper.transliterate(destinationDefault) : destinationDefault);
}
}
@ -400,14 +420,14 @@ public class RouteDataObject {
RestrictionInfo ri = new RestrictionInfo();
ri.toWay = getRestrictionId(k);
ri.type = getRestrictionType(k);
if(restrictionsVia != null && k < restrictionsVia.length) {
if (restrictionsVia != null && k < restrictionsVia.length) {
ri.viaWay = restrictionsVia[k];
}
return ri;
}
public long getRestrictionVia(int i) {
if(restrictionsVia != null && restrictionsVia.length > i) {
if (restrictionsVia != null && restrictionsVia.length > i) {
return restrictionsVia[i];
}
return 0;
@ -441,7 +461,7 @@ public class RouteDataObject {
}
if (insNames) {
pointNames = new String[opointNames.length + 1][];
pointNameTypes = new int[opointNameTypes.length +1][];
pointNameTypes = new int[opointNameTypes.length + 1][];
}
int i = 0;
for (; i < pos; i++) {
@ -590,7 +610,7 @@ public class RouteDataObject {
}
public static float parseSpeed(String v, float def) {
if(v.equals("none")) {
if (v.equals("none")) {
return RouteDataObject.NONE_MAX_SPEED;
} else {
int i = Algorithms.findFirstNumberEndIndex(v);
@ -614,20 +634,20 @@ public class RouteDataObject {
f += Float.parseFloat(v.substring(0, i));
String pref = v.substring(i, v.length()).trim();
float add = 0;
for(int ik = 0; ik < pref.length(); ik++) {
if(Algorithms.isDigit(pref.charAt(ik)) || pref.charAt(ik) == '.' || pref.charAt(ik) == '-') {
for (int ik = 0; ik < pref.length(); ik++) {
if (Algorithms.isDigit(pref.charAt(ik)) || pref.charAt(ik) == '.' || pref.charAt(ik) == '-') {
int first = Algorithms.findFirstNumberEndIndex(pref.substring(ik));
if(first != -1) {
if (first != -1) {
add = parseLength(pref.substring(ik), 0);
pref = pref.substring(0, ik);
}
break;
}
}
if(pref.contains("km")) {
if (pref.contains("km")) {
f *= 1000;
}
if(pref.contains("\"") || pref.contains("in")) {
if (pref.contains("\"") || pref.contains("in")) {
f *= 0.0254;
} else if (pref.contains("\'") || pref.contains("ft") || pref.contains("feet")) {
// foot to meters
@ -673,27 +693,27 @@ public class RouteDataObject {
return false;
}
public boolean roundabout(){
public boolean roundabout() {
int sz = types.length;
for(int i=0; i<sz; i++) {
for (int i = 0; i < sz; i++) {
RouteTypeRule r = region.quickGetEncodingRule(types[i]);
if(r.roundabout()) {
if (r.roundabout()) {
return true;
} else if(r.onewayDirection() != 0 && loop()) {
} else if (r.onewayDirection() != 0 && loop()) {
return true;
}
}
return false;
}
public boolean tunnel(){
public boolean tunnel() {
int sz = types.length;
for(int i=0; i<sz; i++) {
for (int i = 0; i < sz; i++) {
RouteTypeRule r = region.quickGetEncodingRule(types[i]);
if(r.getTag().equals("tunnel") && r.getValue().equals("yes")) {
if (r.getTag().equals("tunnel") && r.getValue().equals("yes")) {
return true;
}
if(r.getTag().equals("layer") && r.getValue().equals("-1")) {
if (r.getTag().equals("layer") && r.getValue().equals("-1")) {
return true;
}
}
@ -882,7 +902,7 @@ public class RouteDataObject {
public boolean bearingVsRouteDirection(Location loc) {
boolean direction = true;
if(loc != null && loc.hasBearing()) {
if (loc != null && loc.hasBearing()) {
double diff = MapUtils.alignAngleDifference(directionRoute(0, true) - loc.getBearing() / 180f * Math.PI);
direction = Math.abs(diff) < Math.PI / 2f;
}
@ -932,13 +952,13 @@ public class RouteDataObject {
}
public double distance(int startPoint, int endPoint) {
if(startPoint > endPoint) {
if (startPoint > endPoint) {
int k = endPoint;
endPoint = startPoint;
startPoint = k;
}
double d = 0;
for(int k = startPoint; k < endPoint && k < getPointsLength() -1; k++) {
for (int k = startPoint; k < endPoint && k < getPointsLength() - 1; k++) {
int x = getPoint31XTile(k);
int y = getPoint31YTile(k);
int kx = getPoint31XTile(k + 1);
@ -974,16 +994,16 @@ public class RouteDataObject {
// translate into meters
total += simplifyDistance(x, y, px, py);
} while (total < dist);
return -Math.atan2( x - px, y - py );
return -Math.atan2(x - px, y - py);
}
private double simplifyDistance(int x, int y, int px, int py) {
return Math.abs(px - x) * 0.011d + Math.abs(py - y) * 0.01863d;
}
private static void assertTrueLength(String vl, float exp){
private static void assertTrueLength(String vl, float exp) {
float dest = parseLength(vl, 0);
if(exp != dest) {
if (exp != dest) {
System.err.println("FAIL " + vl + " " + dest);
} else {
System.out.println("OK " + vl);
@ -992,24 +1012,24 @@ public class RouteDataObject {
public static void main(String[] args) {
assertTrueLength("10 km", 10000);
assertTrueLength("0.01 km", 10);
assertTrueLength("0.01 km 10 m", 20);
assertTrueLength("10 m", 10);
assertTrueLength("10m", 10);
assertTrueLength("3.4 m", 3.4f);
assertTrueLength("3.40 m", 3.4f);
assertTrueLength("10 m 10m", 20);
assertTrueLength("14'10\"", 4.5212f);
assertTrueLength("14.5'", 4.4196f);
assertTrueLength("14.5 ft", 4.4196f);
assertTrueLength("14'0\"", 4.2672f);
assertTrueLength("15ft", 4.572f);
assertTrueLength("15 ft 1 in", 4.5974f);
assertTrueLength("4.1 metres", 4.1f);
assertTrueLength("14'0''", 4.2672f);
assertTrueLength("14 feet", 4.2672f);
assertTrueLength("14 mile", 22530.76f);
assertTrueLength("14 cm", 0.14f);
assertTrueLength("0.01 km", 10);
assertTrueLength("0.01 km 10 m", 20);
assertTrueLength("10 m", 10);
assertTrueLength("10m", 10);
assertTrueLength("3.4 m", 3.4f);
assertTrueLength("3.40 m", 3.4f);
assertTrueLength("10 m 10m", 20);
assertTrueLength("14'10\"", 4.5212f);
assertTrueLength("14.5'", 4.4196f);
assertTrueLength("14.5 ft", 4.4196f);
assertTrueLength("14'0\"", 4.2672f);
assertTrueLength("15ft", 4.572f);
assertTrueLength("15 ft 1 in", 4.5974f);
assertTrueLength("4.1 metres", 4.1f);
assertTrueLength("14'0''", 4.2672f);
assertTrueLength("14 feet", 4.2672f);
assertTrueLength("14 mile", 22530.76f);
assertTrueLength("14 cm", 0.14f);
// float badValue = -1;
// assertTrueLength("none", badValue);
@ -1054,7 +1074,7 @@ public class RouteDataObject {
public RestrictionInfo next; // optional to simulate linked list
public int length() {
if(next == null) {
if (next == null) {
return 1;
}
return next.length() + 1;
@ -1064,16 +1084,16 @@ public class RouteDataObject {
public void setRestriction(int k, long to, int type, long viaWay) {
long valto = (to << RouteDataObject.RESTRICTION_SHIFT) | ((long) type & RouteDataObject.RESTRICTION_MASK);
restrictions[k] = valto;
if(viaWay != 0) {
if (viaWay != 0) {
setRestrictionVia(k, viaWay);
}
}
public void setRestrictionVia(int k, long viaWay) {
if(restrictionsVia != null) {
if (restrictionsVia != null) {
long[] nrestrictionsVia = new long[Math.max(k + 1, restrictions.length)];
System.arraycopy(restrictions, 0, nrestrictionsVia, 0, restrictions.length);
restrictionsVia = nrestrictionsVia;
restrictionsVia = nrestrictionsVia;
} else {
restrictionsVia = new long[k + 1];
}

View file

@ -279,6 +279,19 @@ public class Amenity extends MapObject {
}
public String getTagContent(String tag, String lang) {
String translateName = getStrictTagContent(tag, lang);
if (translateName != null) {
return translateName;
}
for (String nm : getAdditionalInfoKeys()) {
if (nm.startsWith(tag + ":")) {
return getAdditionalInfo(nm);
}
}
return null;
}
public String getStrictTagContent(String tag, String lang) {
if (lang != null) {
String translateName = getAdditionalInfo(tag + ":" + lang);
if (!Algorithms.isEmpty(translateName)) {
@ -293,11 +306,6 @@ public class Amenity extends MapObject {
if (!Algorithms.isEmpty(enName)) {
return enName;
}
for (String nm : getAdditionalInfoKeys()) {
if (nm.startsWith(tag + ":")) {
return getAdditionalInfo(nm);
}
}
return null;
}

View file

@ -436,6 +436,7 @@ public class OsmandRegions {
cx /= object.getPointsLength();
cy /= object.getPointsLength();
rd.regionCenter = new LatLon(MapUtils.get31LatitudeY((int) cy), MapUtils.get31LongitudeX((int) cx));
rd.boundingBox = findBoundingBox(object);
}
rd.regionParentFullName = mapIndexFields.get(mapIndexFields.parentFullName, object);
@ -461,6 +462,43 @@ public class OsmandRegions {
return rd;
}
private QuadRect findBoundingBox(BinaryMapDataObject object) {
if (object.getPointsLength() == 0) {
return new QuadRect(0, 0, 0, 0);
}
double currentX = object.getPoint31XTile(0);
double currentY = object.getPoint31YTile(0);
double minX = currentX;
double maxX = currentX;
double minY = currentY;
double maxY = currentY;
if (object.getPointsLength() > 1) {
for (int i = 1; i < object.getPointsLength(); i++) {
currentX = object.getPoint31XTile(i);
currentY = object.getPoint31YTile(i);
if (currentX > maxX) {
maxX = currentX;
} else if (currentX < minX) {
minX = currentX;
}
if (currentY > maxY) {
maxY = currentY;
} else if (currentY < minY) {
minY = currentY;
}
}
}
minX = MapUtils.get31LongitudeX((int) minX);
maxX = MapUtils.get31LongitudeX((int) maxX);
double revertedMinY = MapUtils.get31LatitudeY((int) maxY);
double revertedMaxY = MapUtils.get31LatitudeY((int) minY);
return new QuadRect(minX, revertedMinY, maxX, revertedMaxY);
}
private String getSearchIndex(BinaryMapDataObject object) {
MapIndex mi = object.getMapIndex();
TIntObjectIterator<String> it = object.getObjectNames().iterator();

View file

@ -1,6 +1,7 @@
package net.osmand.map;
import net.osmand.data.LatLon;
import net.osmand.data.QuadRect;
import net.osmand.util.Algorithms;
import java.io.Serializable;
@ -40,6 +41,7 @@ public class WorldRegion implements Serializable {
protected String regionDownloadName;
protected boolean regionMapDownload;
protected LatLon regionCenter;
protected QuadRect boundingBox;
public static class RegionParams {
protected String regionLeftHandDriving;
@ -74,12 +76,12 @@ public class WorldRegion implements Serializable {
}
}
public boolean isRegionMapDownload() {
return regionMapDownload;
}
public String getLocaleName() {
if(!Algorithms.isEmpty(regionNameLocale)) {
return regionNameLocale;
@ -90,14 +92,14 @@ public class WorldRegion implements Serializable {
if(!Algorithms.isEmpty(regionName)) {
return regionName;
}
return capitalize(regionFullName.replace('_', ' '));
}
public String getRegionDownloadName() {
return regionDownloadName;
}
public String getRegionDownloadNameLC() {
return regionDownloadName == null ? null : regionDownloadName.toLowerCase();
}
@ -109,7 +111,7 @@ public class WorldRegion implements Serializable {
public LatLon getRegionCenter() {
return regionCenter;
}
public String getRegionSearchText() {
return regionSearchText;
}
@ -143,7 +145,7 @@ public class WorldRegion implements Serializable {
this.regionDownloadName = downloadName;
superregion = null;
subregions = new LinkedList<WorldRegion>();
}
public WorldRegion(String id) {
this(id, null);
@ -152,7 +154,7 @@ public class WorldRegion implements Serializable {
public String getRegionId() {
return regionFullName;
}
private String capitalize(String s) {
String[] words = s.split(" ");
if (words[0].length() > 0) {
@ -182,4 +184,20 @@ public class WorldRegion implements Serializable {
}
return res;
}
public boolean containsRegion(WorldRegion region) {
if (this.boundingBox != null && region.boundingBox != null) {
return this.boundingBox.contains(region.boundingBox);
}
return false;
}
public boolean isContinent() {
if (superregion != null) {
String superRegionId = superregion.getRegionId();
String thisRegionId = getRegionId();
return WORLD.equals(superRegionId) && !RUSSIA_REGION_ID.equals(thisRegionId);
}
return false;
}
}

View file

@ -0,0 +1,266 @@
package net.osmand.osm;
import java.util.ArrayList;
import java.util.List;
public class RouteActivityType {
private static final List<RouteActivityType> values = new ArrayList<>();
public static final String DEFAULT_ICON = "special_marker";
public static final String DEFAULT_COLOR = "orange";
public static final RouteActivityType WATER = createType("water", "yellow").icon("special_kayak").reg();
public static final RouteActivityType WINTER = createType("winter", "yellow").icon("special_skiing").reg();
public static final RouteActivityType SNOWMOBILE = createType("snowmobile", "yellow").icon("special_snowmobile").reg();
public static final RouteActivityType RIDING = createType("riding", "yellow").icon("special_horse").reg();
public static final RouteActivityType RACING = createType("racing", "yellow").icon("raceway").reg();
public static final RouteActivityType MOUNTAINBIKE = createType("mountainbike", "blue").icon("sport_cycling").reg();
public static final RouteActivityType CYCLING = createType("cycling", "blue").icon("special_bicycle").reg();
public static final RouteActivityType HIKING = createType("hiking", "orange").icon("special_trekking").reg();
public static final RouteActivityType RUNNING = createType("running", "orange").icon("running").reg();
public static final RouteActivityType WALKING = createType("walking", "orange").icon("special_walking").reg();
public static final RouteActivityType OFFROAD = createType("offroad", "yellow").icon("special_offroad").reg();
public static final RouteActivityType MOTORBIKE = createType("motorbike", "green").icon("special_motorcycle").reg();
public static final RouteActivityType CAR = createType("car", "green").icon("shop_car").reg();
// less specific bottom order
String name;
String color;
String icon;
RouteActivityType(String nm, String clr) {
this.name = nm;
this.color = clr;
}
public String getName() {
return name;
}
public String getColor() {
return color;
}
public String getIcon() {
return icon;
}
public static RouteActivityType getOrCreateTypeFromName(String name) {
for (RouteActivityType rat : values) {
if (rat.name.equalsIgnoreCase(name)) {
return rat;
}
}
return createType(name.toLowerCase(), DEFAULT_COLOR).icon(DEFAULT_ICON).reg();
}
private static RouteActivityTypeBuilder createType(String name, String color) {
RouteActivityTypeBuilder builder = new RouteActivityTypeBuilder();
builder.routeActivityType = new RouteActivityType(name, color);
return builder;
}
public static RouteActivityType getTypeFromTags(String[] tags) {
RouteActivityType activityType = null;
for (String tg : tags) {
RouteActivityType rat = RouteActivityType.convertFromOsmGPXTag(tg);
if (rat != null) {
if (activityType == null || values.indexOf(activityType) > values.indexOf(rat)) {
activityType = rat;
}
}
}
return activityType;
}
public static RouteActivityType convertFromOsmGPXTag(String tg) {
String t = tg.toLowerCase();
if ("mountain hiking".equalsIgnoreCase(t)) {
return HIKING;
}
if ("motorcar".equalsIgnoreCase(t)) {
return CAR;
}
if ("laufen".equalsIgnoreCase(t)) {
return RUNNING;
}
if ("pedestrian".equalsIgnoreCase(t)) {
return WALKING;
}
switch (t) {
case "mountainbiking":
case "mtb":
case "mountainbike":
case "mountain bike":
case "mountain biking":
case "mountbarker":
case "mtb-tour":
case "ciclismo-mtb-gravel":
case "vtt":
case "btt":
case "vth":
case "mtb ride":
return MOUNTAINBIKE;
case "hiking":
case "route=hiking":
case "mountain hiking":
case "hiking trail":
case "wandern":
case "hike":
case "randonnée":
case "trekking":
case "climbing":
return HIKING;
case "bike":
case "biking":
case "bicycling":
case "bicycle":
case "cycling":
case "cycle":
case "cycleway":
case "cykel":
case "handcycle":
case "cyclotourisme":
case "route=bicycle":
case "cyclotourism":
case "fietsen":
case "вело":
case "велосипед":
case "rower":
case "trasa rowerem":
case "vélo":
case "velo":
case "radtour":
case "bici":
case "fiets":
case "fahrrad":
case "ncn":
case "icn":
case "lcn":
case "network=ncn":
case "network=icn":
case "network=lcn":
return CYCLING;
case "car":
case "motorcar":
case "by car":
case "auto":
case "автомобиль":
case "automobile":
case "autós":
case "driving":
case "drive":
case "van":
case "авто":
case "на автомобиле":
case "bus":
case "truck":
case "taxi":
return CAR;
case "running":
case "run":
case "rungis":
case "trail running":
case "trailrunning":
case "бег":
case "laufen":
case "langlauf":
case "lauf":
case "course":
case "jogging":
case "fitotrack":
return RUNNING;
case "wanderung":
case "walking":
case "walk":
case "nightwalk":
case "walkway":
case "пешком":
case "пеший":
case "pěšky":
case "marche":
case "pedestrian":
case "foot":
case "footing":
case "on_foot":
case "byfoot":
case "onfoot":
case "sightseeing":
case "geocaching":
case "etnanatura":
case "etna":
case "iwn":
case "lwn":
case "rwn":
case "network=iwn":
case "network=lwn":
case "network=rwn":
return WALKING;
case "ling-moto":
case "motorbiking":
case "motorcycle":
case "motorrad":
case "motorbike":
case "motor bike":
case "FVbike":
case "Motorrad":
return MOTORBIKE;
case "offroad":
case "off-road":
case "off road":
case "4x4":
case "terrain":
case "quad":
case "enduro":
case "feldwege":
case "feldweg":
return OFFROAD;
case "boat":
case "water":
case "boating":
case "kayak":
case "river":
case "lake":
case "lakes":
case "canal":
return WATER;
case "ski":
case "skiing":
case "skating":
case "skitour":
case "winter":
case "wintersports":
case "snowboard":
case "лыжи":
case "лыжня":
case "nordic":
case "piste":
return WINTER;
case "snowmobile=designated":
case "snowmobile=permissive":
case "snowmobile=yes":
case "snowmobile":
return SNOWMOBILE;
case "ride":
case "horse":
case "horse trail":
return RIDING;
case "racing":
return RACING;
}
return null;
}
public static class RouteActivityTypeBuilder {
private RouteActivityType routeActivityType;
public RouteActivityTypeBuilder icon(String icon) {
routeActivityType.icon = icon;
return this;
}
private RouteActivityType reg() {
values.add(routeActivityType);
return routeActivityType;
}
}
}

View file

@ -21,7 +21,7 @@ import net.osmand.osm.edit.Relation.RelationMember;
import net.osmand.util.Algorithms;
public class EntityParser {
public static void parseMapObject(MapObject mo, Entity e, Map<String, String> tags) {
mo.setId(e.getId());
if(mo instanceof Amenity) {
@ -123,7 +123,7 @@ public class EntityParser {
mo.setName(ref);
}
}
private static void setNameFromBrand(MapObject mo, Map<String, String> tags) {
String ref = tags.get(OSMTagKey.BRAND.getValue());
if(ref != null){
@ -140,7 +140,7 @@ public class EntityParser {
op += " [" + ref + "]";
mo.setName(op);
}
private static String getWebSiteURL(Map<String, String> tagValues, boolean checkWikipedia) {
String siteUrl = null;
@ -170,14 +170,14 @@ public class EntityParser {
}
return siteUrl;
}
public static List<Amenity> parseAmenities(MapPoiTypes poiTypes, Entity entity, Map<String, String> tags,
List<Amenity> amenitiesList) {
amenitiesList.clear();
// it could be collection of amenities
boolean relation = entity instanceof Relation;
boolean purerelation = relation &&
boolean purerelation = relation &&
!("multipolygon".equals(tags.get("type")) || "boundary".equals(tags.get("type")));
Collection<Map<String, String>> it = MapRenderingTypes.splitTagsIntoDifferentObjects(tags);
for (Map<String, String> ts : it) {
@ -201,9 +201,7 @@ public class EntityParser {
}
return amenitiesList;
}
private static boolean checkAmenitiesToAdd(Amenity a, List<Amenity> amenitiesList){
// check amenity for duplication
for(Amenity b : amenitiesList){
@ -212,9 +210,9 @@ public class EntityParser {
}
}
return true;
}
public static Building parseBuilding(Entity e){
Building b = new Building();
parseMapObject(b, e, e.getTags());
@ -228,7 +226,7 @@ public class EntityParser {
List<Node> nodes = ((Way) e).getNodes();
for(int i = 0; i < nodes.size(); i++) {
Node node = nodes.get(i);
if(node != null && "yes".equals(node.getTag(OSMTagKey.ENTRANCE)) &&
if(node != null && "yes".equals(node.getTag(OSMTagKey.ENTRANCE)) &&
!Algorithms.isEmpty(node.getTag(OSMTagKey.REF))) {
b.addEntrance(node.getTag(OSMTagKey.REF), node.getLatLon());
}
@ -236,11 +234,11 @@ public class EntityParser {
}
return b;
}
public static City parseCity(Node el) {
return parseCity(el, CityType.valueFromString(el.getTag(OSMTagKey.PLACE.getValue())));
}
public static City parseCity(Entity el, CityType t) {
if(t == null) {
return null;
@ -252,15 +250,15 @@ public class EntityParser {
c.setIsin(isin);
return c;
}
public static TransportRoute parserRoute(Relation r, String ref){
TransportRoute rt = new TransportRoute();
parseMapObject(rt, r, r.getTags());
rt.setRef(ref);
return rt;
}
public static TransportStop parseTransportStop(Entity e){
TransportStop st = new TransportStop();
parseMapObject(st, e, e.getTags());

View file

@ -183,7 +183,7 @@ public class OsmBaseStorage {
protected static final int moduleProgress = 1 << 10;
public void startElement(XmlPullParser parser, String name) {
if(!parseStarted){
if (!parseStarted) {
initRootElement(parser, name);
}
if (ELEM_MODIFY.equals(name) ) {
@ -283,13 +283,14 @@ public class OsmBaseStorage {
if (type != null) {
if(currentParsedEntity != null){
EntityId entityId = new EntityId(type, currentParsedEntity.getId());
if(acceptEntityToLoad(entityId, currentParsedEntity)){
if (acceptEntityToLoad(entityId, currentParsedEntity)) {
Entity oldEntity = entities.put(entityId, currentParsedEntity);
if(parseEntityInfo && currentParsedEntityInfo != null){
if (parseEntityInfo && currentParsedEntityInfo != null) {
entityInfo.put(entityId, currentParsedEntityInfo);
}
if(!supressWarnings && oldEntity!= null){
throw new UnsupportedOperationException("Entity with id=" + oldEntity.getId() +" is duplicated in osm map"); //$NON-NLS-1$ //$NON-NLS-2$
if (!supressWarnings && oldEntity != null) {
throw new UnsupportedOperationException(
"Entity with id=" + oldEntity.getId() + " is duplicated in osm map"); //$NON-NLS-1$ //$NON-NLS-2$
}
} else {
// System.gc();
@ -308,8 +309,8 @@ public class OsmBaseStorage {
protected boolean acceptEntityToLoad(EntityId entityId, Entity entity) {
for(IOsmStorageFilter f : filters){
if(!f.acceptEntityToLoad(this, entityId, entity)){
for (IOsmStorageFilter f : filters) {
if (!f.acceptEntityToLoad(this, entityId, entity)) {
return false;
}
}

View file

@ -620,9 +620,7 @@ public class GeneralRouter implements VehicleRouter {
public double calculateTurnTime(RouteSegment segment, int segmentEnd, RouteSegment prev, int prevSegmentEnd) {
float ts = getPenaltyTransition(segment.getRoad());
float prevTs = getPenaltyTransition(prev.getRoad());
float totalPenalty = 0;
if (prevTs != ts) {
totalPenalty += Math.abs(ts - prevTs) / 2;
}
@ -638,7 +636,9 @@ public class GeneralRouter implements VehicleRouter {
// }
// }
// }
if (shortestRoute) {
return totalPenalty;
}
if(segment.getRoad().roundabout() && !prev.getRoad().roundabout()) {
double rt = getRoundaboutTurn();
if(rt > 0) {

View file

@ -0,0 +1,448 @@
package net.osmand.router;
import net.osmand.GPXUtilities;
import net.osmand.PlatformUtil;
import net.osmand.osm.edit.Node;
import net.osmand.osm.edit.OsmMapUtils;
import net.osmand.util.MapUtils;
import org.apache.commons.logging.Log;
import java.util.ArrayList;
import java.util.List;
public class RouteColorize {
public int zoom;
public double[] latitudes;
public double[] longitudes;
public double[] values;
public double minValue;
public double maxValue;
public double[][] palette;
private List<RouteColorizationPoint> dataList;
public static final int DARK_GREY = rgbaToDecimal(92, 92, 92, 255);
public static final int LIGHT_GREY = rgbaToDecimal(200, 200, 200, 255);
public static final int RED = rgbaToDecimal(255,1,1,255);
public static final int GREEN = rgbaToDecimal(46,185,0,191);
public static final int YELLOW = rgbaToDecimal(255,222,2,227);
public enum ValueType {
ELEVATION,
SPEED,
SLOPE,
NONE
}
private final int VALUE_INDEX = 0;
private final int DECIMAL_COLOR_INDEX = 1;//sRGB decimal format
private final int RED_COLOR_INDEX = 1;//RGB
private final int GREEN_COLOR_INDEX = 2;//RGB
private final int BLUE_COLOR_INDEX = 3;//RGB
private final int ALPHA_COLOR_INDEX = 4;//RGBA
private ValueType valueType;
public static int SLOPE_RANGE = 150;//150 meters
private static final double MIN_DIFFERENCE_SLOPE = 0.05d;//5%
private static final Log LOG = PlatformUtil.getLog(RouteColorize.class);
/**
* @param minValue can be NaN
* @param maxValue can be NaN
* @param palette array {{value,color},...} - color in sRGB (decimal) format OR {{value,RED,GREEN,BLUE,ALPHA},...} - color in RGBA format
*/
public RouteColorize(int zoom, double[] latitudes, double[] longitudes, double[] values, double minValue, double maxValue, double[][] palette) {
this.zoom = zoom;
this.latitudes = latitudes;
this.longitudes = longitudes;
this.values = values;
this.minValue = minValue;
this.maxValue = maxValue;
this.palette = palette;
if (Double.isNaN(minValue) || Double.isNaN(maxValue)) {
calculateMinMaxValue();
}
checkPalette();
sortPalette();
}
/**
* @param type ELEVATION, SPEED, SLOPE
*/
public RouteColorize(int zoom, GPXUtilities.GPXFile gpxFile, ValueType type) {
if (!gpxFile.hasTrkPt()) {
LOG.warn("GPX file is not consist of track points");
return;
}
List<Double> latList = new ArrayList<>();
List<Double> lonList = new ArrayList<>();
List<Double> valList = new ArrayList<>();
for (GPXUtilities.Track t : gpxFile.tracks) {
for (GPXUtilities.TrkSegment ts : t.segments) {
for (GPXUtilities.WptPt p : ts.points) {
latList.add(p.lat);
lonList.add(p.lon);
if (type == ValueType.SPEED) {
valList.add(p.speed);
} else {
valList.add(p.ele);
}
}
}
}
this.zoom = zoom;
latitudes = listToArray(latList);
longitudes = listToArray(lonList);
if (type == ValueType.SLOPE) {
values = calculateSlopesByElevations(latitudes, longitudes, listToArray(valList), SLOPE_RANGE);
} else {
values = listToArray(valList);
}
calculateMinMaxValue();
valueType = type;
checkPalette();
sortPalette();
}
/**
* Calculate slopes from elevations needs for right colorizing
*
* @param slopeRange - in what range calculate the derivative, usually we used 150 meters
* @return slopes array, in the begin and the end present NaN values!
*/
public double[] calculateSlopesByElevations(double[] latitudes, double[] longitudes, double[] elevations, double slopeRange) {
double[] newElevations = elevations;
for (int i = 2; i < elevations.length - 2; i++) {
newElevations[i] = elevations[i - 2]
+ elevations[i - 1]
+ elevations[i]
+ elevations[i + 1]
+ elevations[i + 2];
newElevations[i] /= 5;
}
elevations = newElevations;
double[] slopes = new double[elevations.length];
if (latitudes.length != longitudes.length || latitudes.length != elevations.length) {
LOG.warn("Sizes of arrays latitudes, longitudes and values are not match");
return slopes;
}
double[] distances = new double[elevations.length];
double totalDistance = 0.0d;
distances[0] = totalDistance;
for (int i = 0; i < elevations.length - 1; i++) {
totalDistance += MapUtils.getDistance(latitudes[i], longitudes[i], latitudes[i + 1], longitudes[i + 1]);
distances[i + 1] = totalDistance;
}
for (int i = 0; i < elevations.length; i++) {
if (distances[i] < slopeRange / 2 || distances[i] > totalDistance - slopeRange / 2) {
slopes[i] = Double.NaN;
} else {
double[] arg = findDerivativeArguments(distances, elevations, i, slopeRange);
slopes[i] = (arg[1] - arg[0]) / (arg[3] - arg[2]);
}
}
return slopes;
}
public List<RouteColorizationPoint> getResult(boolean simplify) {
List<RouteColorizationPoint> result = new ArrayList<>();
if (simplify) {
result = simplify();
} else {
for (int i = 0; i < latitudes.length; i++) {
result.add(new RouteColorizationPoint(i, latitudes[i], longitudes[i], values[i]));
}
}
for (RouteColorizationPoint data : result) {
data.color = getColorByValue(data.val);
}
return result;
}
public int getColorByValue(double value) {
if (Double.isNaN(value)) {
value = (minValue + maxValue) / 2;
}
for (int i = 0; i < palette.length - 1; i++) {
if (value == palette[i][VALUE_INDEX])
return (int) palette[i][DECIMAL_COLOR_INDEX];
if (value >= palette[i][VALUE_INDEX] && value <= palette[i + 1][VALUE_INDEX]) {
int minPaletteColor = (int) palette[i][DECIMAL_COLOR_INDEX];
int maxPaletteColor = (int) palette[i + 1][DECIMAL_COLOR_INDEX];
double minPaletteValue = palette[i][VALUE_INDEX];
double maxPaletteValue = palette[i + 1][VALUE_INDEX];
double percent = (value - minPaletteValue) / (maxPaletteValue - minPaletteValue);
double resultRed = getRed(minPaletteColor) + percent * (getRed(maxPaletteColor) - getRed(minPaletteColor));
double resultGreen = getGreen(minPaletteColor) + percent * (getGreen(maxPaletteColor) - getGreen(minPaletteColor));
double resultBlue = getBlue(minPaletteColor) + percent * (getBlue(maxPaletteColor) - getBlue(minPaletteColor));
double resultAlpha = getAlpha(minPaletteColor) + percent * (getAlpha(maxPaletteColor) - getAlpha(minPaletteColor));
return rgbaToDecimal((int) resultRed, (int) resultGreen, (int) resultBlue, (int) resultAlpha);
}
}
return getDefaultColor();
}
public void setPalette(double[][] palette) {
this.palette = palette;
checkPalette();
sortPalette();
}
private int getDefaultColor() {
return rgbaToDecimal(0, 0, 0, 0);
}
private List<RouteColorizationPoint> simplify() {
if (dataList == null) {
dataList = new ArrayList<>();
for (int i = 0; i < latitudes.length; i++) {
//System.out.println(latitudes[i] + " " + longitudes[i] + " " + values[i]);
dataList.add(new RouteColorizationPoint(i, latitudes[i], longitudes[i], values[i]));
}
}
List<Node> nodes = new ArrayList<>();
List<Node> result = new ArrayList<>();
for (RouteColorizationPoint data : dataList) {
nodes.add(new net.osmand.osm.edit.Node(data.lat, data.lon, data.id));
}
OsmMapUtils.simplifyDouglasPeucker(nodes, zoom + 5, 1, result, true);
List<RouteColorizationPoint> simplified = new ArrayList<>();
for (int i = 1; i < result.size() - 1; i++) {
int prevId = (int) result.get(i - 1).getId();
int currentId = (int) result.get(i).getId();
List<RouteColorizationPoint> sublist = dataList.subList(prevId, currentId);
simplified.addAll(getExtremums(sublist));
}
return simplified;
}
private List<RouteColorizationPoint> getExtremums(List<RouteColorizationPoint> subDataList) {
if (subDataList.size() <= 2) {
return subDataList;
}
List<RouteColorizationPoint> result = new ArrayList<>();
double min;
double max;
min = max = subDataList.get(0).val;
for (RouteColorizationPoint pt : subDataList) {
if (min > pt.val) {
min = pt.val;
}
if (max < pt.val) {
max = pt.val;
}
}
double diff = max - min;
result.add(subDataList.get(0));
for (int i = 1; i < subDataList.size() - 1; i++) {
double prev = subDataList.get(i - 1).val;
double current = subDataList.get(i).val;
double next = subDataList.get(i + 1).val;
RouteColorizationPoint currentData = subDataList.get(i);
if ((current > prev && current > next) || (current < prev && current < next)
|| (current < prev && current == next) || (current == prev && current < next)
|| (current > prev && current == next) || (current == prev && current > next)) {
RouteColorizationPoint prevInResult;
if (result.size() > 0) {
prevInResult = result.get(0);
if (prevInResult.val / diff > MIN_DIFFERENCE_SLOPE) {
result.add(currentData);
}
} else
result.add(currentData);
}
}
result.add(subDataList.get(subDataList.size() - 1));
return result;
}
private void checkPalette() {
if (palette == null || palette.length < 2 || palette[0].length < 2 || palette[1].length < 2) {
LOG.info("Will use default palette");
palette = new double[3][2];
double[][] defaultPalette = {
{minValue, GREEN},
{valueType == ValueType.SLOPE ? 0 : (minValue + maxValue) / 2, YELLOW},
{maxValue, RED}
};
palette = defaultPalette;
}
double min;
double max = min = palette[0][VALUE_INDEX];
int minIndex = 0;
int maxIndex = 0;
double[][] sRGBPalette = new double[palette.length][2];
for (int i = 0; i < palette.length; i++) {
double[] p = palette[i];
if (p.length == 2) {
sRGBPalette[i] = p;
} else if (p.length == 4) {
int color = rgbaToDecimal((int) p[RED_COLOR_INDEX], (int) p[GREEN_COLOR_INDEX], (int) p[BLUE_COLOR_INDEX], 255);
sRGBPalette[i] = new double[]{p[VALUE_INDEX], color};
} else if (p.length >= 5) {
int color = rgbaToDecimal((int) p[RED_COLOR_INDEX], (int) p[GREEN_COLOR_INDEX], (int) p[BLUE_COLOR_INDEX], (int) p[ALPHA_COLOR_INDEX]);
sRGBPalette[i] = new double[]{p[VALUE_INDEX], color};
}
if (p[VALUE_INDEX] > max) {
max = p[VALUE_INDEX];
maxIndex = i;
}
if (p[VALUE_INDEX] < min) {
min = p[VALUE_INDEX];
minIndex = i;
}
}
palette = sRGBPalette;
if (minValue < min) {
palette[minIndex][VALUE_INDEX] = minValue;
}
if (maxValue > max) {
palette[maxIndex][VALUE_INDEX] = maxValue;
}
}
private void sortPalette() {
java.util.Arrays.sort(palette, new java.util.Comparator<double[]>() {
public int compare(double[] a, double[] b) {
return Double.compare(a[VALUE_INDEX], b[VALUE_INDEX]);
}
});
}
/**
* @return double[minElevation, maxElevation, minDist, maxDist]
*/
private double[] findDerivativeArguments(double[] distances, double[] elevations, int index, double slopeRange) {
double[] result = new double[4];
double minDist = distances[index] - slopeRange / 2;
double maxDist = distances[index] + slopeRange / 2;
result[0] = Double.NaN;
result[1] = Double.NaN;
result[2] = minDist;
result[3] = maxDist;
int closestMaxIndex = -1;
int closestMinIndex = -1;
for (int i = index; i < distances.length; i++) {
if (distances[i] == maxDist) {
result[1] = elevations[i];
break;
}
if (distances[i] > maxDist) {
closestMaxIndex = i;
break;
}
}
for (int i = index; i >= 0; i--) {
if (distances[i] == minDist) {
result[0] = elevations[i];
break;
}
if (distances[i] < minDist) {
closestMinIndex = i;
break;
}
}
if (closestMaxIndex > 0) {
double diff = distances[closestMaxIndex] - distances[closestMaxIndex - 1];
double coef = (maxDist - distances[closestMaxIndex - 1]) / diff;
if (coef > 1 || coef < 0) {
LOG.warn("Coefficient fo max must be 0..1 , coef=" + coef);
}
result[1] = (1 - coef) * elevations[closestMaxIndex - 1] + coef * elevations[closestMaxIndex];
}
if (closestMinIndex >= 0) {
double diff = distances[closestMinIndex + 1] - distances[closestMinIndex];
double coef = (minDist - distances[closestMinIndex]) / diff;
if (coef > 1 || coef < 0) {
LOG.warn("Coefficient for min must be 0..1 , coef=" + coef);
}
result[0] = (1 - coef) * elevations[closestMinIndex] + coef * elevations[closestMinIndex + 1];
}
if (Double.isNaN(result[0]) || Double.isNaN(result[1])) {
LOG.warn("Elevations wasn't calculated");
}
return result;
}
private void calculateMinMaxValue() {
if (values.length == 0)
return;
minValue = maxValue = Double.NaN;
for (double value : values) {
if ((Double.isNaN(maxValue) || Double.isNaN(minValue)) && !Double.isNaN(value))
maxValue = minValue = value;
if (minValue > value)
minValue = value;
if (maxValue < value)
maxValue = value;
}
}
private double[] listToArray(List<Double> doubleList) {
double[] result = new double[doubleList.size()];
for (int i = 0; i < doubleList.size(); i++) {
result[i] = doubleList.get(i);
}
return result;
}
private static int rgbaToDecimal(int r, int g, int b, int a) {
int value = ((a & 0xFF) << 24) |
((r & 0xFF) << 16) |
((g & 0xFF) << 8) |
((b & 0xFF) << 0);
return value;
}
private int getRed(int value) {
return (value >> 16) & 0xFF;
}
private int getGreen(int value) {
return (value >> 8) & 0xFF;
}
private int getBlue(int value) {
return (value >> 0) & 0xFF;
}
private int getAlpha(int value) {
return (value >> 24) & 0xff;
}
public static class RouteColorizationPoint {
int id;
public double lat;
public double lon;
public double val;
public int color;
RouteColorizationPoint(int id, double lat, double lon, double val) {
this.id = id;
this.lat = lat;
this.lon = lon;
this.val = val;
}
}
}

View file

@ -367,8 +367,9 @@ public class RouteStatisticsHelper {
RouteDataObject obj = segment.obj;
for (int type : obj.getTypes()) {
BinaryMapRouteReaderAdapter.RouteTypeRule tp = obj.region.quickGetEncodingRule(type);
if (tp.getTag().equals("highway") || tp.getTag().equals("route") ||
tp.getTag().equals("railway") || tp.getTag().equals("aeroway") || tp.getTag().equals("aerialway")) {
if (tp.getTag().equals("highway") || tp.getTag().equals("route")
|| tp.getTag().equals("railway") || tp.getTag().equals("aeroway")
|| tp.getTag().equals("aerialway") || tp.getTag().equals("piste:type")) {
if (!mainTagAdded) {
req.setStringFilter(rrs.PROPS.R_TAG, tp.getTag());
req.setStringFilter(rrs.PROPS.R_VALUE, tp.getValue());

View file

@ -53,6 +53,8 @@ public class Algorithms {
public static final int XML_FILE_SIGNATURE = 0x3c3f786d;
public static final int OBF_FILE_SIGNATURE = 0x08029001;
public static final int SQLITE_FILE_SIGNATURE = 0x53514C69;
public static final int BZIP_FILE_SIGNATURE = 0x425a;
public static final int GZIP_FILE_SIGNATURE = 0x1f8b;
public static String normalizeSearchText(String s) {
boolean norm = false;
@ -127,6 +129,17 @@ public class Algorithms {
return def;
}
public static double parseDoubleSilently(String input, double def) {
if (input != null && input.length() > 0) {
try {
return Double.parseDouble(input);
} catch (NumberFormatException e) {
return def;
}
}
return def;
}
public static String getFileNameWithoutExtension(File f) {
return getFileNameWithoutExtension(f.getName());
}
@ -311,6 +324,24 @@ public class Algorithms {
return test == ZIP_FILE_SIGNATURE;
}
public static boolean checkFileSignature(InputStream inputStream, int fileSignature) throws IOException {
if (inputStream == null) return false;
int firstBytes;
if (isSmallFileSignature(fileSignature)) {
firstBytes = readSmallInt(inputStream);
} else {
firstBytes = readInt(inputStream);
}
if (inputStream.markSupported()) {
inputStream.reset();
}
return firstBytes == fileSignature;
}
public static boolean isSmallFileSignature(int fileSignature) {
return fileSignature == BZIP_FILE_SIGNATURE || fileSignature == GZIP_FILE_SIGNATURE;
}
/**
* Checks, whether the child directory is a subdirectory of the parent
* directory.
@ -347,6 +378,14 @@ public class Algorithms {
return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + ch4);
}
public static int readSmallInt(InputStream in) throws IOException {
int ch1 = in.read();
int ch2 = in.read();
if ((ch1 | ch2) < 0)
throw new EOFException();
return ((ch1 << 8) + ch2);
}
public static String capitalizeFirstLetterAndLowercase(String s) {
if (s != null && s.length() > 1) {
// not very efficient algorithm
@ -526,6 +565,13 @@ public class Algorithms {
}
}
public static ByteArrayInputStream createByteArrayIS(InputStream in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
streamCopy(in, out);
in.close();
return new ByteArrayInputStream(out.toByteArray());
}
@SuppressWarnings("ResultOfMethodCallIgnored")
public static void updateAllExistingImgTilesToOsmandFormat(File f) {
if (f.isDirectory()) {

View file

@ -49,6 +49,47 @@ public class MapUtils {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_', '~'
};
public static int calculateFromBaseZoomPrecisionXY(int baseZoom, int finalZoom, int xFinal, int yFinal) {
int px = xFinal;
int py = yFinal;
int precisionNumber = 1;
for (int zoom = finalZoom - 1; zoom >= baseZoom; zoom--) {
int x = px / 2; // (int) MapUtils.getTileNumberX(zoom, lon);
int y = py / 2; // (int) MapUtils.getTileNumberY(zoom, lat);
int deltax = px - x * 2;
int deltay = py - y * 2;
precisionNumber = (precisionNumber << 2) + (deltax << 1) + deltay;
// StringBuilder spaces = new StringBuilder();
// for (int i = 0; i < 32 - zoom; i++) {
// spaces.append(' ');
// }
// System.out.println(String.format("%d %s + %d %s %s + %d", zoom, Integer.toBinaryString(x), deltax, spaces.toString(), Integer.toBinaryString(y), deltay));
px = x;
py = y;
}
// System.out.println(String.format("Bits: %d %s (%d)", Integer.toBinaryString(precisionNumber).length(), Integer.toBinaryString(precisionNumber), precisionNumber));
return precisionNumber;
}
public static int[] calculateFinalXYFromBaseAndPrecisionXY(int bazeZoom, int finalZoom,
int precisionXY, int xBase, int yBase, boolean ignoreNotEnoughPrecision) {
// System.out.println(String.format("Base x, y at zoom %d: %d %d", zoomToStart, xBaseApproximation, yBaseApproximation));
// calculate finish approximation using precisionNumber
int finalX = xBase;
int finalY = yBase;
int precisionCalc = precisionXY;
for (int zoom = bazeZoom; zoom < finalZoom; zoom++) {
if (precisionCalc <= 1 && precisionCalc > 0 && !ignoreNotEnoughPrecision) {
throw new IllegalArgumentException("Not enough bits to retrieve zoom approximation");
}
finalY = finalY * 2 + (precisionXY & 1);
finalX = finalX * 2 + ((precisionXY & 2) >> 1);
precisionXY = precisionXY >> 2;
}
// System.out.println(String.format("Calc x, y at zoom %d: %d %d", finalZoom, finalX, finalY));
return new int[] { finalX, finalY };
}
public static double getDistance(LatLon l, double latitude, double longitude) {

View file

@ -36,7 +36,7 @@
<string name="shared_string_close">Κλείσιμο</string>
<string name="shared_string_off">Ανενεργό</string>
<string name="shared_string_install">Εγκατάσταση</string>
<string name="shared_string_share">Διαμοιρασμός</string>
<string name="shared_string_share">Κοινοποίηση</string>
<string name="shared_string_back">Προηγούμενο</string>
<string name="shared_string_continue">Συνέχεια</string>
<string name="shared_string_cancel">Ακύρωση</string>

View file

@ -135,10 +135,10 @@
<string name="mile">мл</string>
<string name="km">км</string>
<string name="m">м</string>
<string name="nm">мор.м.</string>
<string name="nm">nmi</string>
<string name="min_mile">хв/м</string>
<string name="min_km">хв/км</string>
<string name="nm_h">вузл</string>
<string name="nm_h">вузлів</string>
<string name="m_s">м/с</string>
<string name="km_h">км/г</string>
<string name="mile_per_hour">мл/г</string>

View file

@ -46,8 +46,8 @@ class TelegramLocationProvider(private val app: TelegramApplication) : SensorEve
private var fusedLocationProviderClient: FusedLocationProviderClient? = null
private val locationRequest = LocationRequest().apply {
interval = 1000
fastestInterval = 500
maxWaitTime = 2000
//fastestInterval = 500
maxWaitTime = 0
priority = LocationRequest.PRIORITY_HIGH_ACCURACY
}
private val locationCallback = object : LocationCallback() {

View file

@ -82,11 +82,11 @@ class TelegramService : Service(), TelegramIncomingMessagesListener,
// Sets the fastest rate for active location updates. This interval is exact, and your
// application will never receive updates more frequently than this value.
fastestInterval = 500
//fastestInterval = 500
// Sets the maximum time when batched location updates are delivered. Updates may be
// delivered sooner than this interval.
maxWaitTime = 2000
maxWaitTime = 0
priority = LocationRequest.PRIORITY_HIGH_ACCURACY
}

11
OsmAnd/.gitignore vendored
View file

@ -39,11 +39,7 @@ mx_*
valgrind/
bin/
dist/
assets/specialphrases/*
assets/voice/*
assets/fonts/*
assets/feature_articles/*
assets/World_basemap_mini*
gen/
local.properties
raw/
@ -56,6 +52,11 @@ out/
use/
osmand.properties
osmand.xml
assets/specialphrases/*
assets/voice/*
assets/fonts/*
assets/feature_articles/*
assets/*.obf
assets/style.css
assets/poi_categories.json
assets/help/*.html

View file

@ -4,7 +4,7 @@
<application
android:icon="@mipmap/icon_free"
android:label="OsmAnd — Offline Maps &amp; GPS Navigation"
android:label="OsmAnd - Offline Maps and GPS Navigation"
tools:replace="android:icon, android:label">
<meta-data
@ -29,4 +29,4 @@
tools:replace="android:authorities"
android:authorities="net.osmand.huawei.fileprovider"/>
</application>
</manifest>
</manifest>

View file

@ -109,4 +109,5 @@
<asset source="sounds/camera_click.ogg" destination="sounds/camera_click.ogg" mode="copyOnlyIfDoesNotExist" />
<asset source="World_basemap_mini.obf" destination="World_basemap_mini.obf" mode="alwaysOverwriteOrCopy" />
<asset source="Default_wikivoyage.travel.obf" destination="travel/Default_wikivoyage.travel.obf" mode="copyOnlyIfDoesNotExist" />
</assets>

View file

@ -106,6 +106,14 @@ android {
}
}
clean.doFirst {
delete fileTree('assets') {
include '*.obf'
include 'fonts/**'
include 'feature_articles/**'
include 'voice/**'
}
}
task validateTranslate {
println "Validating translations"
@ -126,9 +134,15 @@ task validateTranslate {
}
}
task downloadDefaultWikivoyage {
doLast {
ant.get(src: 'https://builder.osmand.net/wikivoyage-gen/sqlite/Default_wikivoyage_2.travel.obf', dest: 'assets/Default_wikivoyage.travel.obf', skipexisting: 'true')
}
}
task downloadWorldMiniBasemap {
doLast {
ant.get(src: 'http://builder.osmand.net/basemap/World_basemap_mini_2.obf', dest: 'assets/World_basemap_mini.obf', skipexisting: 'true')
ant.get(src: 'https://builder.osmand.net/basemap/World_basemap_mini_2.obf', dest: 'assets/World_basemap_mini.obf', skipexisting: 'true')
}
}
@ -254,7 +268,8 @@ task collectExternalResources {
copyWidgetIconsHdpi,
copyWidgetIconsXhdpi,
copyPoiCategories,
downloadWorldMiniBasemap
downloadWorldMiniBasemap,
downloadDefaultWikivoyage
}
// Legacy core build
@ -358,4 +373,5 @@ dependencies {
}
implementation 'com.jaredrummler:colorpicker:1.1.0'
implementation 'org.bouncycastle:bcpkix-jdk15on:1.56'
implementation 'com.google.android.play:core:1.9.1'
}

View file

@ -24,6 +24,7 @@ android {
// Build that doesn't include 3D OpenGL
legacy {
dimension "coreversion"
resValue "string", "app_edition", ""
}
}
}
@ -56,5 +57,5 @@ project.afterEvaluate {
}
dependencies {
implementation 'com.google.android.gms:play-services-location:17.1.0'
implementation 'com.google.android.gms:play-services-location:18.0.0'
}

View file

@ -85,6 +85,7 @@ android {
}
amazonFree {
java.srcDirs = ["src-nogms", "src-google"]
manifest.srcFile "AndroidManifest-gplayFree.xml"
}
amazonFull {
java.srcDirs = ["src-nogms", "src-google"]
@ -186,21 +187,9 @@ dependencies {
opengldebugImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
openglImplementation "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar"
openglImplementation "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'
implementation "org.bouncycastle:bcpkix-jdk15on:1.56"
huaweiImplementation 'com.huawei.hms:iap:5.0.2.300'
gplayFreeImplementation 'com.google.android.gms:play-services-location:17.1.0'
gplayFullImplementation 'com.google.android.gms:play-services-location:17.1.0'
gplayFreeImplementation 'com.google.android.gms:play-services-location:18.0.0'
gplayFullImplementation 'com.google.android.gms:play-services-location:18.0.0'
}

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/active_buttons_and_links_bg_pressed_dark" />
<corners android:radius="3dp" />
</shape>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/inactive_buttons_and_links_bg_dark" />
<corners android:radius="3dp" />
</shape>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/inactive_buttons_and_links_bg_light" />
<corners android:radius="3dp" />
</shape>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="1dp" android:color="@color/active_buttons_and_links_bg_pressed_dark" />
<corners android:radius="3dp" />
</shape>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="1dp" android:color="@color/active_buttons_and_links_bg_pressed_light" />
<corners android:radius="3dp" />
</shape>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="1dp" android:color="@color/inactive_buttons_and_links_bg_dark" />
<corners android:radius="3dp" />
</shape>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="1dp" android:color="@color/inactive_buttons_and_links_bg_light" />
<corners android:radius="3dp" />
</shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/active_buttons_and_links_bg_pressed_light" />
<corners android:radius="3dp" />
</shape>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@color/active_buttons_and_links_bg_pressed_dark" />
<corners android:radius="@dimen/dlg_button_rect_rad" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@null" />
<corners android:radius="@dimen/dlg_button_rect_rad" />
</shape>
</item>
</selector>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@color/active_buttons_and_links_bg_pressed_light" />
<corners android:radius="@dimen/dlg_button_rect_rad" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@null" />
<corners android:radius="@dimen/dlg_button_rect_rad" />
</shape>
</item>
</selector>

View file

@ -0,0 +1,30 @@
<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="M6,2C4.8954,2 4,2.8954 4,4V20C4,21.1046 4.8954,22 6,22H18C19.1046,22 20,21.1046 20,20V8H16C14.8954,8 14,7.1046 14,6V2H6ZM9,9H7V11H9V9ZM7,13H9V15H7V13ZM7,17H9V19H7V17ZM11,11V9H17V11H11ZM17,15V13H11V15H17ZM17,19V17H11V19H17Z"
android:fillColor="#ffffff"
android:fillType="evenOdd"/>
<path
android:pathData="M14,2L20,8H16C14.8954,8 14,7.1046 14,6V2Z"
android:strokeAlpha="0.5"
android:fillColor="#ffffff"
android:fillAlpha="0.5"/>
<path
android:pathData="M17,9H11V11H17V9Z"
android:strokeAlpha="0.2"
android:fillColor="#ffffff"
android:fillAlpha="0.2"/>
<path
android:pathData="M11,13H17V15H11V13Z"
android:strokeAlpha="0.2"
android:fillColor="#ffffff"
android:fillAlpha="0.2"/>
<path
android:pathData="M11,17H17V19H11V17Z"
android:strokeAlpha="0.2"
android:fillColor="#ffffff"
android:fillAlpha="0.2"/>
</vector>

View file

@ -0,0 +1,20 @@
<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="M3,19V16H5V19H19V16H21V19C21,20.1046 20.1046,21 19,21H5C3.8954,21 3,20.1046 3,19Z"
android:fillColor="#ffffff"
android:fillType="evenOdd"/>
<path
android:pathData="M8,12.5858V4H10V12.5858L12.2929,10.2929L13.7071,11.7071L9,16.4142L4.2929,11.7071L5.7071,10.2929L8,12.5858Z"
android:fillColor="#ffffff"
android:fillType="evenOdd"/>
<path
android:pathData="M14,12.5858V4H16V12.5858L18.2929,10.2929L19.7071,11.7071L15,16.4142L11.2929,12.7071L12.7071,11.2929L14,12.5858Z"
android:strokeAlpha="0.5"
android:fillColor="#ffffff"
android:fillType="evenOdd"
android:fillAlpha="0.5"/>
</vector>

View file

@ -0,0 +1,23 @@
<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="M16,3C16.5523,3 17,3.4477 17,4V5.1707C17.8524,5.472 18.528,6.1476 18.8293,7H20C20.5523,7 21,7.4477 21,8C21,8.5523 20.5523,9 20,9H18.8293C18.528,9.8524 17.8524,10.528 17,10.8293V12C17,12.5523 16.5523,13 16,13C15.4477,13 15,12.5523 15,12V10.8293C14.1476,10.528 13.472,9.8524 13.1707,9H12C11.4477,9 11,8.5523 11,8C11,7.4477 11.4477,7 12,7H13.1707C13.472,6.1476 14.1476,5.472 15,5.1707V4C15,3.4477 15.4477,3 16,3ZM17,8C17,8.5523 16.5523,9 16,9C15.4477,9 15,8.5523 15,8C15,7.4477 15.4477,7 16,7C16.5523,7 17,7.4477 17,8Z"
android:fillColor="#ffffff"
android:fillType="evenOdd"/>
<path
android:pathData="M6,19.5C6,20.3284 5.3284,21 4.5,21C3.6716,21 3,20.3284 3,19.5C3,18.6716 3.6716,18 4.5,18C5.3284,18 6,18.6716 6,19.5Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M12.7071,12.7071C13.0976,12.3166 13.0976,11.6834 12.7071,11.2929C12.3166,10.9024 11.6834,10.9024 11.2929,11.2929L10.2929,12.2929C9.9024,12.6834 9.9024,13.3166 10.2929,13.7071C10.6834,14.0976 11.3166,14.0976 11.7071,13.7071L12.7071,12.7071Z"
android:strokeAlpha="0.5"
android:fillColor="#ffffff"
android:fillAlpha="0.5"/>
<path
android:pathData="M9.7071,15.7071C10.0976,15.3166 10.0976,14.6834 9.7071,14.2929C9.3166,13.9024 8.6834,13.9024 8.2929,14.2929L7.2929,15.2929C6.9024,15.6834 6.9024,16.3166 7.2929,16.7071C7.6834,17.0976 8.3166,17.0976 8.7071,16.7071L9.7071,15.7071Z"
android:strokeAlpha="0.5"
android:fillColor="#ffffff"
android:fillAlpha="0.5"/>
</vector>

View file

@ -0,0 +1,12 @@
<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="M12,0.9999L16,4.9999L12,8.9999L12,6C8.6863,6 6,8.6863 6,12C6,12.7351 6.1322,13.4394 6.3741,14.0903L4.8574,15.6071C4.309,14.5232 4,13.2977 4,12C4,7.5817 7.5817,4 12,4V0.9999Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M12,15.0001L12,18C15.3137,18 18,15.3137 18,12C18,11.2649 17.8678,10.5606 17.6258,9.9097L19.1426,8.3929C19.691,9.4768 20,10.7023 20,12C20,16.4183 16.4183,20 12,20V23.0001L8,19.0001L12,15.0001Z"
android:fillColor="#ffffff"/>
</vector>

View file

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/button_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"
android:gravity="center_vertical"
android:minHeight="@dimen/bottom_sheet_list_item_height"
android:orientation="horizontal"
android:paddingStart="@dimen/content_padding_small"
android:paddingLeft="@dimen/content_padding_small"
android:paddingTop="@dimen/text_margin_small"
android:paddingEnd="@dimen/content_padding_small"
android:paddingRight="@dimen/content_padding_small"
android:paddingBottom="@dimen/text_margin_small"
tools:background="@drawable/btn_background_inactive_dark"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:duplicateParentState="true"
android:orientation="vertical">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/button_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="Title"
tools:textColor="@color/active_color_primary_dark" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/desc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:textSize="@dimen/default_desc_text_size"
android:visibility="gone"
osmand:typeface="@string/font_roboto_medium"
tools:text="Description"
tools:textColor="@color/text_color_secondary_dark"
tools:visibility="visible" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/icon"
android:layout_width="@dimen/map_widget_icon"
android:layout_height="@dimen/map_widget_icon"
android:layout_marginStart="@dimen/context_menu_padding_margin_large"
android:layout_marginLeft="@dimen/context_menu_padding_margin_large"
android:duplicateParentState="true"
tools:srcCompat="@drawable/ic_action_appearance"
tools:tint="@color/icon_color_active_dark" />
</LinearLayout>
</FrameLayout>

View file

@ -0,0 +1,72 @@
<?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"
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:orientation="vertical"
android:paddingStart="@dimen/content_padding"
android:paddingLeft="@dimen/content_padding"
android:paddingTop="@dimen/measurement_tool_menu_title_padding_top"
android:paddingEnd="@dimen/content_padding"
android:paddingRight="@dimen/content_padding"
android:paddingBottom="@dimen/measurement_tool_button_padding_top">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/widget_turn_lane_margin"
android:ellipsize="end"
android:gravity="center_vertical"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:lineSpacingExtra="@dimen/titleLineSpacingExtra"
android:maxLines="1"
android:text="@string/select_segments"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
osmand:typeface="@string/font_roboto_medium" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/list_header_settings_top_margin"
android:letterSpacing="@dimen/description_letter_spacing"
android:lineSpacingMultiplier="@dimen/bottom_sheet_text_spacing_multiplier"
android:lineSpacingExtra="@dimen/descriptionLineSpacingExtra"
android:text="@string/select_segments_description"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_regular" />
</LinearLayout>
<include
android:id="@+id/gpx_track_container"
layout="@layout/gpx_track_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dashPluginMargin" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/gpx_segment_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
tools:itemCount="1"
tools:listitem="@layout/gpx_segment_list_item">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>

View file

@ -21,11 +21,13 @@
android:layout_marginLeft="@dimen/card_padding"
android:padding="@dimen/context_menu_padding_margin_small"
android:paddingStart="@dimen/context_menu_padding_margin_small"
android:paddingEnd="@dimen/context_menu_padding_margin_small">
android:paddingEnd="@dimen/context_menu_padding_margin_small"
android:background="@null">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="@dimen/favorites_icon_size_small"
android:layout_height="@dimen/favorites_icon_size_small"
android:background="?attr/selectableItemBackgroundBorderless"
android:tint="?attr/default_icon_color"
osmand:srcCompat="@drawable/ic_action_close" />
</FrameLayout>
@ -43,18 +45,20 @@
osmand:typeface="@string/font_roboto_medium" />
<FrameLayout
android:id="@+id/btn_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/content_padding_half"
android:layout_marginEnd="@dimen/content_padding_half"
android:layout_gravity="center_vertical"
android:background="@drawable/btn_border_active">
android:layout_gravity="center_vertical">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/btn_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:layout_gravity="start"
android:gravity="center_vertical"
android:duplicateParentState="true"
android:background="@drawable/btn_border_active"
android:paddingStart="@dimen/content_padding"
android:paddingLeft="@dimen/content_padding"
android:paddingTop="@dimen/content_padding_half"
@ -77,18 +81,18 @@
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginTop="@dimen/content_padding_half"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginBottom="@dimen/content_padding_half">
<net.osmand.plus.widgets.EditTextEx
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginTop="@dimen/content_padding_half"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginBottom="@dimen/content_padding_half"
android:background="?attr/card_and_list_background_basic"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_list_text_size"

View file

@ -1,31 +1,79 @@
<?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:osmand="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="?attr/list_background_color">
android:orientation="vertical">
<com.google.android.material.appbar.AppBarLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/pstsTabBackground">
android:layout_height="@dimen/action_bar_height"
android:background="?attr/pstsTabBackground"
android:orientation="horizontal"
android:gravity="center_vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/action_bar_height"
app:titleTextColor="?attr/list_background_color" />
<FrameLayout
android:id="@+id/toolbar_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding_small"
android:layout_marginLeft="@dimen/content_padding_small"
android:background="@null"
android:padding="@dimen/content_padding_half"
android:paddingStart="@dimen/content_padding_half"
android:paddingEnd="@dimen/content_padding_half">
</com.google.android.material.appbar.AppBarLayout>
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:background="?attr/selectableItemBackgroundBorderless"
osmand:srcCompat="@drawable/ic_arrow_back"/>
</FrameLayout>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/toolbar_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dialog_button_height"
android:layout_marginLeft="@dimen/dialog_button_height"
android:layout_weight="1"
android:ellipsize="end"
android:textColor="@color/list_background_color_light"
android:textSize="@dimen/dialog_header_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="Amsterdam" />
<FrameLayout
android:id="@+id/toolbar_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding_small"
android:layout_marginLeft="@dimen/content_padding_small"
android:layout_marginRight="@dimen/content_padding_small"
android:layout_marginEnd="@dimen/content_padding_small"
android:background="@null"
android:padding="@dimen/content_padding_half"
android:paddingStart="@dimen/content_padding_half"
android:paddingEnd="@dimen/content_padding_half">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:background="?attr/selectableItemBackgroundBorderless"
osmand:srcCompat="@drawable/ic_action_edit_dark"/>
</FrameLayout>
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="?attr/activity_background_basic">
<LinearLayout
android:id="@+id/ll"
@ -61,33 +109,32 @@
tools:visibility="visible"/>
<FrameLayout
android:id="@+id/btn_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginTop="@dimen/context_menu_padding_margin_small"
android:layout_marginBottom="@dimen/context_menu_padding_margin_small"
android:background="@drawable/rounded_background_3dp">
android:visibility="gone"
tools:visibility="visible">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/btn_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/context_menu_padding_margin_small"
android:paddingStart="@dimen/context_menu_padding_margin_small"
android:paddingEnd="@dimen/context_menu_padding_margin_small"
android:duplicateParentState="true"
android:padding="@dimen/bottom_sheet_content_padding_small"
android:paddingStart="@dimen/bottom_sheet_content_padding_small"
android:paddingEnd="@dimen/bottom_sheet_content_padding_small"
android:drawablePadding="@dimen/list_content_padding_large"
osmand:drawableLeftCompat="@drawable/ic_action_edit_dark"
osmand:drawableStartCompat="@drawable/ic_action_edit_dark"
osmand:drawableLeftCompat="@drawable/ic_action_edit_dark"
osmand:drawableTint="?attr/active_color_basic"
android:visibility="gone"
android:text="@string/shared_string_edit"
android:textColor="?attr/active_color_basic"
android:textSize="@dimen/default_list_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:visibility="visible" />
osmand:typeface="@string/font_roboto_medium" />
</FrameLayout>

View file

@ -1,25 +1,27 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="match_parent"
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:gravity="start|center_vertical"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:paddingStart="10dp"
android:paddingLeft="10dp"
android:paddingEnd="10dp"
android:paddingRight="10dp"
android:textAllCaps="false"
android:textColor="?attr/textColorAlertDialogListItem"
android:textSize="@dimen/default_list_text_size"
osmand:drawableLeftCompat="@drawable/ic_action_folder"
osmand:drawableStartCompat="@drawable/ic_action_folder"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:background="?attr/selectableItemBackground"
android:text="Restaurant"
android:gravity="start|center_vertical"
android:textSize="@dimen/default_list_text_size"
android:textAllCaps="false"
android:textColor="?attr/textColorAlertDialogListItem"
android:paddingStart="10dp"
android:paddingEnd="10dp" />
tools:text="@string/poi_filter_restaurants" />
</LinearLayout>

View file

@ -1,158 +1,158 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:osmand="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="?attr/expandable_list_item_background"
android:minHeight="@dimen/favorites_list_item_height"
android:orientation="vertical">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="?attr/expandable_list_item_background"
android:minHeight="@dimen/favorites_list_item_height"
android:orientation="vertical">
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"
android:visibility="gone"/>
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"
android:visibility="gone" />
<View
android:id="@+id/list_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"
android:visibility="gone"
android:layout_marginLeft="@dimen/settings_divider_margin_start"
android:layout_marginStart="@dimen/settings_divider_margin_start" />
<View
android:id="@+id/list_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="@dimen/settings_divider_margin_start"
android:layout_marginLeft="@dimen/settings_divider_margin_start"
android:background="?attr/dashboard_divider"
android:visibility="gone" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/favorites_list_item_height"
android:layout_gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="@dimen/favorites_my_places_icon_left_padding"
android:paddingLeft="@dimen/favorites_my_places_icon_left_padding"
android:paddingEnd="@dimen/favorites_my_places_icon_left_padding"
android:paddingRight="@dimen/favorites_my_places_icon_left_padding">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:minHeight="@dimen/favorites_list_item_height"
android:orientation="horizontal"
android:paddingStart="@dimen/favorites_my_places_icon_left_padding"
android:paddingLeft="@dimen/favorites_my_places_icon_left_padding"
android:paddingEnd="@dimen/favorites_my_places_icon_left_padding"
android:paddingRight="@dimen/favorites_my_places_icon_left_padding">
<FrameLayout
android:layout_width="@dimen/favorites_my_places_icon_size"
android:layout_height="match_parent"
android:layout_gravity="center_vertical">
<FrameLayout
android:layout_width="@dimen/favorites_my_places_icon_size"
android:layout_height="match_parent"
android:layout_gravity="center_vertical">
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/toggle_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:focusable="false"
android:visibility="gone"
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/toggle_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:focusable="false"
android:visibility="gone"
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/favourite_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@string/favorite"
tools:src="@drawable/bg_point_circle"/>
</FrameLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/favourite_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@string/favorite"
tools:src="@drawable/bg_point_circle" />
</FrameLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:orientation="vertical"
android:layout_marginStart="@dimen/favorites_my_places_icon_right_padding"
android:layout_marginLeft="@dimen/favorites_my_places_icon_right_padding"
android:layout_marginEnd="@dimen/favorites_my_places_icon_right_padding"
android:layout_marginRight="@dimen/favorites_my_places_icon_right_padding"
android:paddingTop="@dimen/context_menu_padding_margin_small"
android:paddingBottom="@dimen/context_menu_padding_margin_small">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/favorites_my_places_icon_right_padding"
android:layout_marginLeft="@dimen/favorites_my_places_icon_right_padding"
android:layout_marginEnd="@dimen/favorites_my_places_icon_right_padding"
android:layout_marginRight="@dimen/favorites_my_places_icon_right_padding"
android:layout_weight="1"
android:orientation="vertical"
android:paddingTop="@dimen/context_menu_padding_margin_small"
android:paddingBottom="@dimen/context_menu_padding_margin_small">
<TextView
android:id="@+id/favourite_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="2"
android:scrollbars="none"
android:textColor="?android:textColorPrimary"
android:layout_marginBottom="@dimen/subHeaderPadding"
android:textSize="@dimen/default_list_text_size"
tools:text="@string/lorem_ipsum" />
<TextView
android:id="@+id/favourite_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/subHeaderPadding"
android:maxLines="2"
android:scrollbars="none"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
tools:text="@string/lorem_ipsum" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/direction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:contentDescription="@string/show_view_angle"
osmand:srcCompat="@drawable/ic_direction_arrow" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/direction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="1sp"
android:contentDescription="@string/show_view_angle"
osmand:srcCompat="@drawable/ic_direction_arrow" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/gpx_small_icon_margin"
android:layout_marginLeft="@dimen/gpx_small_icon_margin"
android:maxLines="1"
android:textColor="?android:textColorSecondary"
osmand:typeface="@string/font_roboto_medium"
android:textSize="@dimen/default_desc_text_size"
tools:text="100500 km" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/gpx_small_icon_margin"
android:layout_marginLeft="@dimen/gpx_small_icon_margin"
android:maxLines="1"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="100500 km" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/group_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/list_item_button_padding"
android:layout_marginLeft="@dimen/list_item_button_padding"
android:contentDescription="@string/favorite_category_name"
osmand:srcCompat="@drawable/ic_action_group_name_16" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/group_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/list_item_button_padding"
android:layout_marginLeft="@dimen/list_item_button_padding"
android:contentDescription="@string/favorite_category_name"
osmand:srcCompat="@drawable/ic_action_group_name_16" />
<TextView
android:id="@+id/group_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/gpx_small_icon_margin"
android:layout_marginLeft="@dimen/gpx_small_icon_margin"
android:ellipsize="end"
android:maxLines="1"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_desc_text_size" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/group_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/gpx_small_icon_margin"
android:layout_marginLeft="@dimen/gpx_small_icon_margin"
android:ellipsize="end"
android:maxLines="1"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_desc_text_size" />
</LinearLayout>
</LinearLayout>
<ImageButton
android:id="@+id/navigate_to"
android:layout_width="@dimen/list_item_height"
android:layout_height="@dimen/list_item_height"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/dashFavIconMargin"
android:layout_marginLeft="@dimen/dashFavIconMargin"
android:background="?attr/dashboard_button"
android:contentDescription="@string/context_menu_item_directions_to"
osmand:srcCompat="@drawable/ic_action_remove_dark"
android:visibility="gone" />
<ImageButton
android:id="@+id/navigate_to"
android:layout_width="@dimen/list_item_height"
android:layout_height="@dimen/list_item_height"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/dashFavIconMargin"
android:layout_marginLeft="@dimen/dashFavIconMargin"
android:background="?attr/dashboard_button"
android:contentDescription="@string/context_menu_item_directions_to"
android:visibility="gone"
osmand:srcCompat="@drawable/ic_action_remove_dark" />
<ImageButton
android:id="@+id/options"
android:layout_width="@dimen/list_item_height"
android:layout_height="@dimen/list_item_height"
android:layout_gravity="center_vertical"
android:background="?attr/dashboard_button"
android:contentDescription="@string/shared_string_more"
osmand:srcCompat="@drawable/ic_overflow_menu_white"
android:visibility="gone" />
</LinearLayout>
<ImageButton
android:id="@+id/options"
android:layout_width="@dimen/list_item_height"
android:layout_height="@dimen/list_item_height"
android:layout_gravity="center_vertical"
android:background="?attr/dashboard_button"
android:contentDescription="@string/shared_string_more"
android:visibility="gone"
osmand:srcCompat="@drawable/ic_overflow_menu_white" />
</LinearLayout>
</LinearLayout>

View file

@ -66,28 +66,64 @@
<include layout="@layout/divider" />
<FrameLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dialog_button_height"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginTop="@dimen/content_padding_small"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginBottom="@dimen/content_padding_small"
android:background="?attr/dlg_btn_secondary">
android:orientation="horizontal" >
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/button_close"
android:layout_width="match_parent"
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:text="@string/shared_string_close"
android:textColor="?attr/active_color_basic"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="Button" />
android:background="?attr/dlg_btn_secondary"
android:layout_weight="1">
</FrameLayout>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/button_close"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:text="@string/shared_string_close"
android:textColor="?attr/active_color_basic"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium" />
</FrameLayout>
<View
android:id="@+id/buttons_divider"
android:layout_width="@dimen/content_padding"
android:layout_height="match_parent"
android:visibility="gone"
tools:visibility="visible" />
<FrameLayout
android:id="@+id/button_restart_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="?attr/dlg_btn_secondary"
android:layout_weight="1"
android:visibility="gone"
tools:visibility="visible">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/button_restart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:text="@string/restart"
android:textColor="?attr/active_color_basic"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium" />
</FrameLayout>
</LinearLayout>
</LinearLayout>

View file

@ -68,19 +68,18 @@
android:orientation="horizontal">
<FrameLayout
android:id="@+id/btn_read_full"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/context_menu_padding_margin_small"
android:layout_marginLeft="@dimen/context_menu_padding_margin_small"
android:background="@drawable/rounded_background_3dp">
android:layout_marginStart="@dimen/content_padding_half"
android:layout_marginLeft="@dimen/content_padding_half">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/btn_read_full"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:gravity="center_vertical"
android:background="?attr/selectableItemBackgroundBorderless"
android:duplicateParentState="true"
android:padding="@dimen/bottom_sheet_content_padding_small"
android:paddingStart="@dimen/bottom_sheet_content_padding_small"
android:paddingEnd="@dimen/bottom_sheet_content_padding_small"
@ -96,19 +95,19 @@
</FrameLayout>
<FrameLayout
android:id="@+id/btn_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/context_menu_padding_margin_small"
android:layout_marginEnd="@dimen/context_menu_padding_margin_small"
android:layout_gravity="end"
android:background="@drawable/rounded_background_3dp">
android:layout_marginRight="@dimen/content_padding_half"
android:layout_marginEnd="@dimen/content_padding_half"
android:layout_gravity="end">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/btn_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:gravity="center_vertical"
android:background="?attr/selectableItemBackgroundBorderless"
android:duplicateParentState="true"
android:padding="@dimen/bottom_sheet_content_padding_small"
android:paddingStart="@dimen/bottom_sheet_content_padding_small"
android:paddingEnd="@dimen/bottom_sheet_content_padding_small"
@ -134,7 +133,6 @@
android:layout_marginStart="@dimen/card_padding"
android:layout_marginLeft="@dimen/card_padding"
android:layout_marginTop="@dimen/content_padding"
android:background="@drawable/rounded_background_3dp"
android:visibility="gone"
tools:visibility="visible">
@ -142,7 +140,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:background="?attr/selectableItemBackgroundBorderless"
android:duplicateParentState="true"
android:padding="@dimen/bottom_sheet_content_padding_small"
android:paddingStart="@dimen/bottom_sheet_content_padding_small"
android:paddingEnd="@dimen/bottom_sheet_content_padding_small"

View file

@ -38,21 +38,23 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="@dimen/dash_margin"
android:paddingBottom="@dimen/dash_margin">
android:layout_marginTop="@dimen/dash_margin"
android:layout_marginBottom="@dimen/dash_margin"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/direction"
android:layout_width="@dimen/context_menu_transport_icon_size"
android:layout_height="@dimen/context_menu_transport_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginTop="1sp"
osmand:srcCompat="@drawable/ic_direction_arrow" />
<TextView
android:id="@+id/distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/content_padding_small_half"
android:layout_marginLeft="@dimen/content_padding_small_half"
android:maxLines="1"

View file

@ -0,0 +1,98 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:minHeight="@dimen/favorites_list_item_height"
android:paddingTop="@dimen/list_header_settings_top_margin"
android:paddingBottom="@dimen/list_header_settings_top_margin"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/list_content_padding"
android:layout_marginLeft="@dimen/list_content_padding"
android:layout_marginEnd="@dimen/list_content_padding"
android:layout_marginRight="@dimen/list_content_padding"
android:contentDescription="@string/shared_string_icon"
android:visibility="visible"
osmand:srcCompat="@drawable/ic_action_split_interval" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/list_content_padding"
android:layout_marginLeft="@dimen/list_content_padding"
android:layout_marginEnd="@dimen/list_content_padding"
android:layout_marginRight="@dimen/list_content_padding"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
tools:text="Segment" />
<LinearLayout
android:id="@+id/read_section"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingTop="@dimen/subHeaderPadding"
android:paddingBottom="@dimen/subHeaderPadding"
android:visibility="visible">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/distance_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/content_padding_half"
android:layout_marginRight="@dimen/content_padding_half"
android:contentDescription="@string/distance"
osmand:srcCompat="@drawable/ic_action_distance_16" />
<TextView
android:id="@+id/distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_desc_text_size"
tools:text="0" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/time_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/content_padding_half"
android:layout_marginRight="@dimen/content_padding_half"
android:contentDescription="@string/track_points"
osmand:srcCompat="@drawable/ic_action_time_moving_16" />
<TextView
android:id="@+id/time_interval"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_desc_text_size"
tools:text="0" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

View file

@ -37,6 +37,7 @@
android:layout_marginRight="@dimen/dialog_content_margin"
android:layout_marginEnd="@dimen/dialog_content_margin"
android:clickable="false"
android:scrollbars="none"
android:focusableInTouchMode="false" />
<androidx.appcompat.widget.AppCompatImageView
@ -50,6 +51,7 @@
<LinearLayout
android:id="@+id/name_and_read_section_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingTop="@dimen/gpx_text_top_margin"

View file

@ -6,7 +6,7 @@
android:layout_height="@dimen/list_header_height"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:gravity="center_vertical"
android:gravity="start|center_vertical"
android:orientation="horizontal">
<LinearLayout
@ -14,14 +14,13 @@
android:layout_height="match_parent"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:gravity="center_vertical"
android:maxWidth="@dimen/grid_menu_item_width"
android:gravity="start|center_vertical"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:gravity="start|center_vertical"
android:orientation="horizontal"
android:weightSum="2">
@ -31,6 +30,7 @@
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@null"
android:letterSpacing="@dimen/description_letter_spacing"
android:lines="1"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
@ -61,8 +61,11 @@
android:layout_height="wrap_content"
android:background="@null"
android:ellipsize="end"
android:letterSpacing="@dimen/description_letter_spacing"
android:gravity="start|center_vertical"
android:lines="1"
android:maxWidth="@dimen/grid_menu_item_width"
android:minWidth="@dimen/map_route_buttons_width"
android:textColor="?android:attr/textColorSecondary"
android:textSize="@dimen/default_desc_text_size"
tools:text="@string/distance" />

View file

@ -73,6 +73,7 @@
android:paddingBottom="@dimen/content_padding_small">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/check_box_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/content_padding"

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_list_item_height"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_list_item_height"
android:background="?attr/bg_color"
android:orientation="horizontal"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding"
android:paddingStart="@dimen/content_padding"
android:paddingEnd="@dimen/content_padding"
android:clipToPadding="false"
android:scrollbars="none" />
</LinearLayout>

View file

@ -24,6 +24,7 @@
android:id="@+id/name_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapSentences"
android:lineSpacingMultiplier="@dimen/bottom_sheet_text_spacing_multiplier" />
</com.google.android.material.textfield.TextInputLayout>

View file

@ -1,198 +0,0 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/text_margin_small"
android:layout_marginRight="@dimen/text_margin_small"
android:background="?attr/wikivoyage_travel_card_bg"
android:orientation="vertical"
android:layout_marginEnd="@dimen/text_margin_small"
android:layout_marginStart="@dimen/text_margin_small">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/content_padding"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/bottom_sheet_content_padding_small">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="1"
android:textColor="?attr/wikivoyage_primary_text_color"
android:textSize="@dimen/travel_card_primary_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="Download file"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="ContentDescription"
tools:src="@drawable/travel_card_download_icon"/>
</LinearLayout>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lineSpacingMultiplier="@dimen/text_button_line_spacing_multiplier"
android:textColor="@color/wikivoyage_secondary_text"
android:textSize="@dimen/travel_card_primary_text_size"
osmand:typeface="@string/font_roboto_regular"
tools:text="Download this Wikivoyage travel guides file to view articles about places around the world without an internet connection."/>
</LinearLayout>
<LinearLayout
android:id="@+id/file_data_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/content_padding"
android:layout_marginLeft="@dimen/bottom_sheet_content_margin_small"
android:layout_marginRight="@dimen/bottom_sheet_content_margin_small"
android:background="?attr/wikivoyage_travel_card_stroke_bg"
android:minHeight="@dimen/bottom_sheet_selected_item_title_height"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding"
android:layout_marginStart="@dimen/bottom_sheet_content_margin_small"
android:paddingEnd="@dimen/content_padding"
android:paddingStart="@dimen/content_padding"
android:layout_marginEnd="@dimen/bottom_sheet_content_margin_small">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/file_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
tools:ignore="ContentDescription"
tools:src="@drawable/ic_action_read_article"
tools:tint="?attr/wikivoyage_active_color"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:orientation="vertical">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/file_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textColor="?attr/wikivoyage_primary_text_color"
android:textSize="@dimen/default_list_text_size"
osmand:typeface="@string/font_roboto_regular"
tools:text="Wikivoyage"/>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/file_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/wikivoyage_secondary_text"
android:textSize="@dimen/default_sub_text_size"
osmand:typeface="@string/font_roboto_regular"
tools:text="255 Mb • Update 11 April"/>
<ProgressBar
android:id="@+id/progress_bar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:minHeight="0dp"
android:visibility="gone"
tools:visibility="visible"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/bottom_sheet_content_margin_small"
android:layout_marginLeft="@dimen/bottom_sheet_content_margin_small"
android:layout_marginRight="@dimen/bottom_sheet_content_margin_small"
android:layout_marginEnd="@dimen/bottom_sheet_content_margin_small"
android:layout_marginStart="@dimen/bottom_sheet_content_margin_small">
<FrameLayout
android:id="@+id/secondary_btn_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="?attr/wikivoyage_secondary_btn_bg">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/secondary_button"
android:layout_width="match_parent"
android:layout_height="@dimen/wikivoyage_card_button_height"
android:layout_gravity="center"
android:background="?attr/selectableItemBackgroundBorderless"
android:ellipsize="end"
android:gravity="center"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:maxLines="1"
android:textColor="?attr/wikivoyage_active_color"
android:textSize="@dimen/text_button_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:ignore="UnusedAttribute"
tools:text="Later"/>
</FrameLayout>
<View
android:id="@+id/buttons_divider"
android:layout_width="@dimen/bottom_sheet_content_margin_small"
android:layout_height="match_parent"/>
<FrameLayout
android:id="@+id/primary_btn_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="?attr/wikivoyage_primary_btn_bg">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/primary_button"
android:layout_width="match_parent"
android:layout_height="@dimen/wikivoyage_card_button_height"
android:layout_gravity="center"
android:background="?attr/selectableItemBackgroundBorderless"
android:ellipsize="end"
android:gravity="center"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:maxLines="1"
android:textColor="?attr/wikivoyage_primary_btn_text_color"
android:textSize="@dimen/text_button_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:ignore="UnusedAttribute"
tools:text="Update"/>
</FrameLayout>
</LinearLayout>
</LinearLayout>

View file

@ -78,20 +78,20 @@
<Button
android:id="@+id/button_action"
android:layout_width="wrap_content"
android:layout_height="33dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginStart="@dimen/content_padding"
android:background="@drawable/buy_btn_background_light"
android:minWidth="40dp"
android:paddingLeft="18dp"
android:paddingRight="18dp"
android:minWidth="@dimen/list_header_height"
android:minHeight="@dimen/list_content_padding_large"
android:paddingLeft="@dimen/bottom_sheet_exit_button_margin"
android:paddingRight="@dimen/bottom_sheet_exit_button_margin"
android:text="@string/get_plugin"
android:textColor="@color/buy_button_color"
android:textColor="@color/text_color_tab_active_light"
android:visibility="gone"
tools:visibility="visible"
android:paddingEnd="18dp"
android:paddingStart="18dp" />
android:paddingEnd="@dimen/bottom_sheet_exit_button_margin"
android:paddingStart="@dimen/bottom_sheet_exit_button_margin" />
</LinearLayout>

View file

@ -18,16 +18,34 @@
android:layout_margin="@dimen/content_padding"
android:orientation="vertical">
<net.osmand.plus.widgets.TextViewEx
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/content_padding"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/maps_you_need"
android:textColor="?attr/wikivoyage_primary_text_color"
android:textSize="@dimen/travel_card_primary_text_size"
osmand:typeface="@string/font_roboto_medium"/>
android:layout_marginBottom="@dimen/bottom_sheet_content_padding_small">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="1"
android:textColor="?attr/wikivoyage_primary_text_color"
android:textSize="@dimen/travel_card_primary_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="Download file" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="ContentDescription"
tools:src="@drawable/travel_card_download_icon" />
</LinearLayout>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/description"

View file

@ -0,0 +1,172 @@
<?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"
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:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="@dimen/content_padding"
android:paddingLeft="@dimen/content_padding"
android:paddingTop="@dimen/content_padding_small"
android:paddingEnd="@dimen/content_padding"
android:paddingRight="@dimen/content_padding"
android:paddingBottom="@dimen/content_padding_small"
android:weightSum="2">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:text="@string/monitoring_settings"
android:textSize="@dimen/default_list_text_size"
osmand:typeface="@string/font_roboto_medium" />
<LinearLayout
android:id="@+id/status_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:focusable="true"
android:gravity="end|center_vertical"
android:orientation="horizontal">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/text_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:letterSpacing="@dimen/description_letter_spacing"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="@string/recording_default_name"
tools:textColor="@color/icon_color_osmand_light" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/icon_status"
android:layout_width="@dimen/map_widget_icon"
android:layout_height="@dimen/map_widget_icon"
android:layout_marginStart="@dimen/content_padding_small"
android:layout_marginLeft="@dimen/content_padding_small"
tools:srcCompat="@drawable/ic_action_polygom_dark"
tools:tint="@color/icon_color_osmand_light" />
</LinearLayout>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/block_statistics"
android:layout_width="match_parent"
android:layout_height="@dimen/list_header_height"
android:layout_marginTop="@dimen/content_padding_small_half"
android:clipToPadding="false"
android:orientation="horizontal"
tools:itemCount="4"
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_gpx_stat_block" />
<include
android:id="@+id/show_track_on_map"
layout="@layout/bottom_sheet_with_switch_divider_and_additional_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginTop="@dimen/content_padding_half"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginBottom="@dimen/content_padding" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider" />
<include
android:id="@+id/button_clear"
layout="@layout/bottom_sheet_button_with_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginTop="@dimen/content_padding"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginBottom="@dimen/content_padding" />
<include
android:id="@+id/button_online"
layout="@layout/bottom_sheet_button_with_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginTop="@dimen/content_padding_half"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginBottom="@dimen/content_padding"
android:visibility="gone" />
<include
android:id="@+id/button_segment"
layout="@layout/bottom_sheet_button_with_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginTop="@dimen/content_padding_half"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding" />
<include
android:id="@+id/button_save"
layout="@layout/bottom_sheet_button_with_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginTop="@dimen/content_padding_small"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginBottom="@dimen/content_padding" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginTop="@dimen/content_padding_half"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginBottom="@dimen/content_padding"
android:baselineAligned="false"
android:orientation="horizontal"
android:weightSum="2">
<include
android:id="@+id/button_pause"
layout="@layout/bottom_sheet_button_with_icon"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<include
android:id="@+id/button_stop"
layout="@layout/bottom_sheet_button_with_icon"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>

View file

@ -94,10 +94,10 @@
android:layout_marginRight="@dimen/list_header_padding"
android:minWidth="@dimen/list_header_height"
android:minHeight="@dimen/list_content_padding_large"
android:paddingStart="@dimen/context_menu_progress_padding_left"
android:paddingLeft="@dimen/context_menu_progress_padding_left"
android:paddingEnd="@dimen/context_menu_progress_padding_left"
android:paddingRight="@dimen/context_menu_progress_padding_left"
android:paddingStart="@dimen/bottom_sheet_exit_button_margin"
android:paddingLeft="@dimen/bottom_sheet_exit_button_margin"
android:paddingEnd="@dimen/bottom_sheet_exit_button_margin"
android:paddingRight="@dimen/bottom_sheet_exit_button_margin"
android:text="@string/buy"
android:textColor="@color/text_color_tab_active_light"
android:visibility="gone" />

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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:padding="@dimen/content_padding"
android:background="?attr/wikivoyage_card_bg_color"
android:gravity="center_vertical">
<include
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="@dimen/dialog_button_height"
layout="@layout/bottom_sheet_dialog_button" />
</LinearLayout>
<include
android:id="@+id/shadow"
layout="@layout/card_bottom_divider"
android:visibility="visible" />
</LinearLayout>

View file

@ -139,31 +139,83 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="@dimen/content_padding_half"
android:paddingBottom="@dimen/content_padding_small">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/user_name"
<LinearLayout
android:id="@+id/user_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_border_bg_light"
android:gravity="center_vertical"
android:ellipsize="end"
android:maxLines="1"
android:paddingTop="@dimen/subHeaderPadding"
android:paddingBottom="@dimen/subHeaderPadding"
android:paddingLeft="@dimen/bottom_sheet_content_padding_small"
android:paddingRight="@dimen/bottom_sheet_content_padding_small"
android:textAppearance="@style/TextAppearance.ContextMenuSubtitle"
android:textColor="?attr/active_color_basic"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
android:drawablePadding="@dimen/content_padding_small_half"
android:drawableStart="@drawable/ic_action_user_account_16"
android:drawableLeft="@drawable/ic_action_user_account_16"
tools:drawableTint="?attr/wikivoyage_active_color"
tools:text="Lorem Ipsum" />
android:background="?attr/btn_border_bg"
android:layout_marginLeft="@dimen/content_padding_half"
android:layout_marginStart="@dimen/content_padding_half">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/user_icon"
android:layout_width="@dimen/poi_icon_size"
android:layout_height="@dimen/poi_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/content_padding_small_half"
android:layout_marginStart="@dimen/content_padding_small_half"
android:contentDescription="@string/shared_string_icon"
tools:src="@drawable/ic_action_user_account_16" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:ellipsize="end"
android:maxLines="1"
android:paddingTop="@dimen/subHeaderPadding"
android:paddingBottom="@dimen/subHeaderPadding"
android:paddingLeft="@dimen/content_padding_small_half"
android:paddingRight="@dimen/content_padding_small_half"
android:textAppearance="@style/TextAppearance.ContextMenuSubtitle"
android:textColor="?attr/active_color_basic"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:drawableTint="?attr/wikivoyage_active_color"
tools:text="@string/mapillary_menu_title_username" />
</LinearLayout>
<LinearLayout
android:id="@+id/activity_type_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/btn_border_bg"
android:visibility="gone"
android:layout_marginLeft="@dimen/content_padding_half"
android:layout_marginStart="@dimen/content_padding_half">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/activity_type_icon"
android:layout_width="@dimen/poi_icon_size"
android:layout_height="@dimen/poi_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/content_padding_small_half"
android:layout_marginStart="@dimen/content_padding_small_half"
android:contentDescription="@string/shared_string_icon"
tools:src="@drawable/ic_action_bicycle_dark" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/activity_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:ellipsize="end"
android:maxLines="1"
android:paddingTop="@dimen/subHeaderPadding"
android:paddingBottom="@dimen/subHeaderPadding"
android:paddingLeft="@dimen/content_padding_small_half"
android:paddingRight="@dimen/content_padding_small_half"
android:textAppearance="@style/TextAppearance.ContextMenuSubtitle"
android:textColor="?attr/active_color_basic"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:drawableTint="?attr/wikivoyage_active_color"
tools:text="@string/shared_string_profiles" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
@ -172,7 +224,6 @@
<View
android:layout_width="match_parent"
android:visibility="invisible"
android:layout_height="1dp"
android:background="?attr/wikivoyage_card_divider_color" />

View file

@ -103,6 +103,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="2"
android:scrollbars="none"
android:textColor="@color/wikivoyage_secondary_text"
android:textSize="@dimen/default_sub_text_size"
osmand:typeface="@string/font_roboto_regular"

View file

@ -795,7 +795,6 @@
<string name="poi_filter_sightseeing">Besigtigingstoere</string>
<string name="show_warnings_descr">Verstel verkeer waarskuwings (spoedbeperkings, geforseerde stoppe, spoedhobbels), spoed kameras, en laan inligting</string>
<string name="avoid_motorway">Vermy snelweë</string>
<string name="snap_to_road_descr">Knip posisie aan paaie vas gedurende navigasie</string>
<string name="snap_to_road">Knip vas aan pad</string>
<string name="osmand_long_description_1000_chars">
OsmAnd (OSM Automated Navigation Directions) is `n ope bron navigasie toepassing met toegang tot `n wye verskeidenheid wêreldwye OpenStreetMap (OSM) inligting. Alle kaart inligting (vektor of teël kaarte) kan gestoor word op die foon geheue kaart vir aflyn gebruik. OsmAnd bied ook aan- en aflyn routeberekening funksionaliteit insluitend draai-vir-draai stem begeleiding. Sommige van die kern funksies: - Volledege aflyn funksionaliteit (stoor afgelaaide vektor of teël kaarte in `n kiesbare leër) - Kompakte aflyn vektor kaarte vir die hele wëreld beskikbaar - aflaai van land of streek kaarte direk uit die toepassing - Oorlegging van verskeie kaart lae moontlik, bv GPX of navigasie spore, Belangepunte, gunstelinge, kontoerlyne, publieke vervoer haltes, ekstra kaarte met verstelbare deurskynendheid - Aflyn

View file

@ -2133,7 +2133,7 @@
<string name="poi_water_characteristic_mineral">المعدنيه</string>
<string name="poi_pump_powered">تعمل بالطاقة</string>
<string name="poi_pump_manual">يدوي</string>
<string name="poi_source_biomass">مصدر الطاقة: الكتلة الحيوية</string>
<string name="poi_generator_source_biomass">مصدر الطاقة: الكتلة الحيوية</string>
<string name="poi_deadlock">طريق مسدود</string>
<string name="poi_architecture_umgebinde">العمارة: umgebinde</string>
<string name="poi_architecture_constructivism">العمارة: البنائية</string>
@ -3075,7 +3075,7 @@
<string name="poi_motorcar_destination">السماح بدخول السيارات: للعبور للوجهة</string>
<string name="poi_motorcar_no">السماح بدخول السيارات: لا</string>
<string name="poi_motorcar_private">السماح بدخول السيارات:خاص</string>
<string name="poi_motorcar_yes">السماح بدخول السيارات:</string>
<string name="poi_motorcar_yes">السماح بدخول السيارات:نعم</string>
<string name="poi_vehicle_forestry">السماح بدخول المركبات: الخاصة بالغابات</string>
<string name="poi_vehicle_delivery">السماح بدخول المركبات: لتسليم الطلبات</string>
<string name="poi_vehicle_military">السماح بدخول المركبات: العسكرية</string>
@ -3586,7 +3586,7 @@
<string name="poi_internet_access_service">الوصول إلى الإنترنت: خدمة</string>
<string name="poi_internet_access_public">الوصول إلى الإنترنت: عام</string>
<string name="poi_internet_access_wired">ولوج الإنترنت: سلكي</string>
<string name="poi_internet_access_terminal">"ولوج الإنترنت: terminal"</string>
<string name="poi_internet_access_terminal">ولوج الإنترنت: terminal</string>
<string name="poi_internet_access_wlan">ولوج الإنترنت: wlan</string>
<string name="poi_denomination_mahayana">ماهايانا</string>
<string name="poi_denomination_maronite">ماروني</string>
@ -3678,4 +3678,15 @@
<string name="poi_wildlife_crossing_bat_tunnel">نفق خفافيش</string>
<string name="poi_wildlife_crossing_bat_bridge">جسر خفافيش</string>
<string name="poi_wildlife_crossing">معبر الحيوانات البرية</string>
<string name="poi_attraction_slide">شريط التمرير</string>
<string name="poi_craft_winery">مصنع شراب</string>
<string name="poi_hanami">هانامي</string>
<string name="poi_wayside_shrine">ضريح على جانب الطريق</string>
<string name="poi_wayside_cross">صليب جانبي</string>
<string name="poi_monastery">ديرصومعة</string>
<string name="poi_denomination_wesleyan">الديانة</string>
<string name="poi_denomination_dutch_reformed">كنيسة المصلحة الهولندية</string>
<string name="poi_denomination_united_methodist">الكنيسة الميثودية</string>
<string name="poi_denomination_pentecostal">الخمسينية</string>
<string name="poi_denomination_presbyterian">المشيخية</string>
</resources>

View file

@ -353,13 +353,12 @@
<string name="use_compass_navigation_descr">استخدم البوصلة عندما لا تكون هناك أي وجهة محددة.</string>
<string name="auto_zoom_map_descr">ملائمة تقريب الخريطة تزامناً مع موقعك.</string>
<string name="auto_zoom_map">التكبير التلقائي</string>
<string name="snap_to_road_descr">التقط الموقع إلى الطرق أثناء الملاحة.</string>
<string name="snap_to_road">التقاط الطريق</string>
<string name="osmand_play_title_30_chars">خرائط أوسماند والملاحة</string>
<string name="osmand_short_description_80_chars">برنامج عرض الخرائط العالمية والملاحة باستخدام خرائط الشوارع المفتوحة OSM أثناء الاتصال بالإنترنت أو من دونه</string>
<string name="osmand_plus_play_title_30_chars">أوسماند+ للخرائط و الملاحة</string>
<string name="osmand_plus_short_description_80_chars">برنامج عرض الخرائط العالمية والملاحة باستخدام خرائط الشوارع المفتوحة OSM أثناء الاتصال بالإنترنت أو من دونه</string>
<string name="filterpoi_activity">أنشئ مُرشِّح نقاط مهمة</string>
<string name="filterpoi_activity">إنشاء فلتر نقاط الاهتمام</string>
<string name="recalculate_route_to_your_location">نمط المواصلات:</string>
<string name="select_navigation_mode">وسائل النقل:</string>
<string name="day_night_info_description">الشروق: %1$s
@ -372,9 +371,9 @@
<string name="map_widget_show_ruler">مسطرة</string>
<string name="map_widget_view_direction">عرض الاتجاه</string>
<string name="map_widget_transparent">عدادات شفافة</string>
<string name="bg_service_sleep_mode_off">تشغيل
<string name="bg_service_sleep_mode_off">تشغيل
\n التطبيق في الخلفية</string>
<string name="bg_service_sleep_mode_on">إيقاف
<string name="bg_service_sleep_mode_on">إيقاف
\n التشغيل في الخلفية</string>
<string name="map_widget_config">الاختصارات</string>
<string name="map_widget_back_to_loc">أين أنا</string>
@ -417,7 +416,7 @@
<string name="osmand_parking_pm">مساء</string>
<string name="osmand_parking_am">صباحاً</string>
<string name="osmand_parking_position_name">مكان للوقوف</string>
<string name="osmand_parking_plugin_description">يساعد هذا الملحق بحفظ الأماكن التي ركنت بها سيارتك والوقت المتبقي للركن (في حالة وجود وقت محدد).
<string name="osmand_parking_plugin_description">يساعد هذا الملحق بحفظ الأماكن التي ركنت بها سيارتك والوقت المتبقي للركن (في حالة وجود وقت محدد).
\nكل من المكان والزمن متواجدان على لوحة التحكم وكذلك في المؤشرات على شاشة الخريطة. يمكن إضافة منبه إلى التقويم للتذكير.</string>
<string name="osmand_parking_plugin_name">مكان الموقف</string>
<string name="context_menu_item_add_parking_point">موقف السيارة</string>
@ -497,9 +496,9 @@
<string name="av_camera_focus_auto">تركيز تلقائي</string>
<string name="av_camera_focus_hiperfocal">التركيز البؤري</string>
<string name="av_camera_focus">نوع الكاميرا</string>
<string name="use_distance_measurement_help">* انقر لتحديد نقطة.
\n  * اضغط لفترة طويلة على الخريطة لحذف النقطة السابقة.
\n  * اضغط لفترة طويلة على نقطة لعرض وإرفاق الوصف.
<string name="use_distance_measurement_help">* انقر لتحديد نقطة.
\n  * اضغط لفترة طويلة على الخريطة لحذف النقطة السابقة.
\n  * اضغط لفترة طويلة على نقطة لعرض وإرفاق الوصف.
\n  * اضغط على أداة القياس لمعرفة المزيد من الإجراءات.</string>
<string name="layer_hillshade">طبقة التضاريس</string>
<string name="download_hillshade_maps">طبقة التضاريس</string>
@ -546,7 +545,7 @@
<string name="animate_routing_route">اختيار المسار النشط الحالي</string>
<string name="animate_routing_gpx">اختيار مسار محفوظ</string>
<string name="shared_string_remember_my_choice">تذكر اختياري</string>
<string name="native_app_allocated_memory_descr">إجمالي الذاكرة الأصلية المخصصة من قبل التطبيق %1$s م.ب (دلفيك %2$s م.ب, أخرى %3$s م.ب).
<string name="native_app_allocated_memory_descr">إجمالي الذاكرة الأصلية المخصصة من قبل التطبيق %1$s م.ب (دلفيك %2$s م.ب, أخرى %3$s م.ب).
\nالذاكرة النسبية %4$s م.ب (حد الأندرويد %5$s م.ب, دلفيك %6$s م.ب).</string>
<string name="app_mode_hiking">مشي</string>
<string name="app_mode_motorcycle">دراجة نارية</string>
@ -557,50 +556,54 @@
<string name="map_widget_map_rendering">تقديم الخريطة</string>
<string name="local_osm_changes_delete_all_confirm">هل تريد حذف %1$d من التعديلات؟</string>
<string name="shared_string_delete_all">احذف الكل</string>
<string name="osmand_srtm_long_description_1000_chars">يوفر هذا الملحق طبقة خط كنتوري وطبقة للتضاريس ظاهرة على الخريطة الأساسية للتطبيق. هذه الوظيفة ستكون محل تقدير من طرف الرياضيين، المتنزهين، الرحالة، وكل من هو مهتم بجمال ورخاء الطبيعة.
\n
<string name="osmand_srtm_long_description_1000_chars">يوفر هذا الملحق طبقة خط كنتوري وطبقة للتضاريس ظاهرة على الخريطة الأساسية للتطبيق. هذه الوظيفة ستكون محل تقدير من طرف الرياضيين، المتنزهين، الرحالة، وكل من هو مهتم بجمال ورخاء الطبيعة.
\n
\nالبيانات العالمية (بين 70 درجة شمالا و70 جنوبا) مبنية حسب قياسات SRTM (مكوك رادار البعثة الطبوغرافية) وASTER (المكوك المتقدم الخاص بالانبعاث الحراري والانعكاس الإشعاعي)، أداة تصوير على متن Terra، القمر الصناعي الرئيسي لنظام رصد الأرض التابع لناسا. ASTER هو جهد تعاوني فيما بين وكالة ناسا، وزارة الاقتصاد اليابانية، التجارة والصناعة (METI)، و أنظمة الفضاء اليابانية (J-spacesystems).</string>
<string name="srtm_plugin_description">يوفر هذا الملحق خطوط كنتورية وطبقة تضاريس (طبيعية) تظهر على خرائط أوسماند. هذه الوظيفة ستعجب كثيرا الرياضيين، المتجولين، الرحالة، و كل من تهمه بنية التضاريس الطبيعية (يرجى ملاحظة أن بيانات الخطوط الكنتورية/أو المساعدة منفصلة ، وتتوفر تنزيلات إضافية بعد تنشيط الملحق.)
\nالبيانات العالمية (ما بين 70 درجة شمالاً و70 جنوباً) مبنية على مقاييس SRTM (مكوك رادار البعثة الطبوغرافية) و ASTER (الانبعاث الحراري الفضائي المتقدم والإنعكاس الإشعاعي)، أداة التصوير على متن Terra، القمر الصناعي الرئيسي لنظام رصد الأرض التابع لناسا.
<string name="srtm_plugin_description">يوفر هذا الملحق خطوط كنتورية وطبقة تضاريس (طبيعية) تظهر على خرائط أوسماند. هذه الوظيفة ستعجب كثيرا الرياضيين، المتجولين، الرحالة، و كل من تهمه بنية التضاريس الطبيعية (يرجى ملاحظة أن بيانات الخطوط الكنتورية/أو المساعدة منفصلة ، وتتوفر تنزيلات إضافية بعد تنشيط الملحق.)
\nالبيانات العالمية (ما بين 70 درجة شمالاً و70 جنوباً) مبنية على مقاييس SRTM (مكوك رادار البعثة الطبوغرافية) و ASTER (الانبعاث الحراري الفضائي المتقدم والإنعكاس الإشعاعي)، أداة التصوير على متن Terra، القمر الصناعي الرئيسي لنظام رصد الأرض التابع لناسا.
\n ASTER هو جهد تعاوني بين كل من وكالة ناسا، وزارة الاقتصاد اليابانية، التجارة والصناعة (METI)، ونظم الفضاء اليابانية (J-spacesystems).</string>
<string name="osmand_long_description_1000_chars">أوسماند (اتجاهات التنقل الآلية OSM)
\n
\n أوسماند هو تطبيق تنقل مفتوح المصدر مع إمكانية الوصول إلى مجموعة واسعة من بيانات OpenStreetMap (OSM) العالمية. يمكن تخزين جميع بيانات الخريطة (خرائط متجهة أو خرائط تجانبية) على بطاقة ذاكرة الهاتف للاستخدام في وضع عدم الاتصال. كما يتم توفير وظائف التوجيه عبر الإنترنت وغير متصل ، بما في ذلك التوجيه الصوتي خطوة بخطوة.
\n
\n بعض الميزات الأساسية:
\n - وظيفة كاملة في وضع عدم الاتصال (قم بتخزين خرائط المتجهات أو الخرائط التي تم تنزيلها في وحدة تخزين الجهاز)
\n - خرائط ناقل متواجد حاليا المدمجة للعالم بأسره المتاحة
\n - قم بتنزيل خرائط البلد أو المنطقة مباشرة من التطبيق
\n - تراكب العديد من طبقات الخريطة ممكن ، مثل GPX أو مسارات التنقل ، النقاط المثيرة للاهتمام ، المفضلة ، خطوط الكنتور ، محطات النقل العام ، خرائط إضافية مع شفافية قابلة للتخصيص
\n - البحث دون اتصال عن العناوين والأماكن (النقاط المهمة)
\n - التوجيه دون اتصال للمسافات متوسطة المدى
\n - أوضاع السيارات والدراجات والمشاة مع اختياري:
\n - التبديل التلقائي عرض يوم / ليلة
\n - خريطة تعتمد على السرعة التكبير
\n - خريطة المحاذاة وفقا للبوصلة أو اتجاه الحركة
\n - توجيه حارة ، وعرض الحد الأقصى للسرعة ، والأصوات المسجلة والنص إلى كلام
\n
\n قيود هذه النسخة المجانية من أوسماند:
\n - عدد التنزيلات للخريطة محدود
\n - لا توجد إمكانية الوصول دون اتصال إلى النقاط المهمة في ويكيبيديا
\n
<string name="osmand_long_description_1000_chars">أوسماند (اتجاهات التنقل الآلي OSM)
\n
\n أوسماند هو تطبيق ملاحة مفتوح المصدر مع إمكانية الوصول إلى مجموعة واسعة من بيانات OpenStreetMap (OSM) العالمية. يمكن تخزين جميع بيانات الخريطة (خرائط التوجيه أو خرائط جانبية) على ذاكرة الهاتف للاستخدام في وضع عدم الاتصال. كما يتم توفير وظائف التوجيه عبر الإنترنت وبدونه ، بما في ذلك التوجيه الصوتي خطوة بخطوة.
\n
\n بعض الميزات الأساسية:
\n - تشغيل كامل دون إنترنت( خزن خرائط التوجيه أو الخرائط الجانبيةالمنزلة في ذاكرة الجهاز)
\n - خرائط التوجيه المدمجة للعالم ككل متاحة لتعمل دون إنترنت
\n - تحميل غير محدود لخرائط البلدان أو المناطق مباشرة من التطبيق
\n - تراكب العديد من طبقات الخريطة ممكن ، مثل GPX أو مسارات التنقل ، النقاط المثيرة للاهتمام ، المفضلة ، خطوط الكنتور ، محطات النقل العام ، خرائط إضافية مع شفافية قابلة للتخصيص
\n - البحث دون اتصال عن العناوين والأماكن (النقاط المهمة)
\n - التوجيه دون اتصال للمسافات متوسطة المدى
\n - أوضاع السيارات والدراجات والمشاة مع اختياري:
\n - التبديل التلقائي عرض يوم / ليلة
\n - خريطة تعتمد على السرعة التكبير
\n - خريطة المحاذاة وفقا للبوصلة أو اتجاه الحركة
\n - توجيه حارة ، وعرض الحد الأقصى للسرعة ، والأصوات المسجلة والنص إلى كلام
\n
\n قيود هذه النسخة المجانية من أوسماند:
\n - عدد التنزيلات للخريطة محدود
\n - لا توجد إمكانية الوصول دون اتصال إلى النقاط المهمة في ويكيبيديا
\n
\n يجري تطوير أوسماند بنشاط ويعتمد مشروعنا والتقدم المستمر على المساهمات المالية لتطوير واختبار وظائف جديدة. يرجى النظر في شراء أوسماند+ ، أو تمويل ميزات جديدة محددة أو تقديم تبرع عام على https://osmand.net.</string>
<string name="osmand_rastermaps_plugin_description">هذا الملحق يمكنك من الوصول إلى أنواع عديدة من خرائط النت (تدعى بالقطع أو النقطية)، من قطع OSM مسبقة ( مثل Mapnik) إلى صور أقمار وطبقات مخصصة كخرائط الطقس، الخرائط الجيولوجية، طبقات التضاريس...إلخ.
\n
\nكل من هذه الخرائط يمكن أن تستخدم إما كخرائط رئيسية (قاعدية) تظهر على واجهة التطبيق، أو كطبقة فوقية أو تحتية لخريطة قاعدية آخرى( كخرائط التطبيق المحلية). لجعل أي طبقة تحتية خريطة أكثر وضوحا، بعض عناصر خرائط التطبيق التوجيهيه يمكن إخفاءها في قائمة \'ضبط الخريطة\' حسب الرغبة.
\n
<string name="osmand_rastermaps_plugin_description">هذا الملحق يمكنك من الوصول إلى أنواع عديدة من خرائط النت (تدعى بالقطع أو النقطية)، من قطع OSM مسبقة ( مثل Mapnik) إلى صور أقمار وطبقات مخصصة كخرائط الطقس، الخرائط الجيولوجية، طبقات التضاريس...إلخ.
\n
\nكل من هذه الخرائط يمكن أن تستخدم إما كخرائط رئيسية (قاعدية) تظهر على واجهة التطبيق، أو كطبقة فوقية أو تحتية لخريطة قاعدية آخرى( كخرائط التطبيق المحلية). لجعل أي طبقة تحتية خريطة أكثر وضوحا، بعض عناصر خرائط التطبيق التوجيهيه يمكن إخفاءها في قائمة \'ضبط الخريطة\' حسب الرغبة.
\n
\nأجزاء الخرائط يمكن الحصول عليها من مصادر إنترنت، أو تحضيرها للإستخدام دون إنترنت ( ونسخها يدويا إلى مجلد بيانات التطبيق) كقاعدة بيانات SQLite والتي يمكن إنتاجها عن طريق مجموعة متنوعة من أدوات تحضير الخرائط المستقلة.</string>
<string name="update_poi_does_not_change_indexes">التغييرات POI داخل التطبيق لا تؤثرعلى ملفات الخرائط المحملة، يتم حفظ التغييرات إلى ملف محلي بدلا من ذلك.</string>
<string name="av_camera_focus_descr">وضع تركيز الكاميرا:</string>
<string name="osmand_plus_long_description_1000_chars">أوسماند+ (OSM اتجاهات التنقل التلقائية)
\n
\n عبارة عن تطبيق ملاحة مفتوح المصدر مع إمكانية الوصول إلى العديد من بيانات عالمية للموقع. كل بيانات الخرائط (خرائط التوجيه أو الخرائط الجزئية) يمكن تخزينها في ذاكرة الجهاز للإستخدام دون إنترنت. يوفر التطبيق كذلك وظائف توجيه بما في ذلك التوجيه الصوتي.
\n
\nبعض الميزات الأساسية:
\n OsmAnd + هو إصدار التطبيق المدفوع ، بشرائه فإنك تدعم المشروع ، وتمول تطوير ميزات جديدة ، وتتلقى آخر التحديثات.
\n
\n بعض الميزات الأساسية:
\n - تشغيل كامل دون إنترنت( خزن خرائط التوجيه أو الخرائط الجزئية المنزلة في ذاكرة الجهاز)
\n - خرائط التوجيه المدمجة للعالم ككل متاحة لتعمل دون إنترنت
\n - تحميل غير محدود لخرائط البلدان أو المناطق مباشرة من التطبيق
\n - ميزة ويكيبيديا المحلية ( قم بتحميل نقاط الاهتمام لويكيبيديا)، الأمثل لمشاهدة المعالم الأثرية
\n - يمكن تراكب عدة طبقات للخرائط، ك GPX أو مسارات الملاحة، مواقع ذات الاهتمام ، الأماكن المفضلة، الحدود الكنتورية، أماكن توقف النقل العمومي، خرائط إضافية بشفافية قابلة للتعديل
\n - يمكن تراكب عدة طبقات للخرائط، ك GPX أو مسارات الملاحة، مواقع ذات الاهتمام ، الأماكن المفضلة، الخطوط المحيطية ، أماكن توقف النقل العمومي
\n خرائط إضافية بشفافية قابلة للتعديل
\n - البحث عن العناوين وأماكن الاهتمام دون إنترنت
\n - تحديد الطريق لمسافات متوسطة المدى
\n - وضع السيارة، الدراجة والمشاة متوفر مع:
@ -626,7 +629,7 @@
<string name="osmand_service">حالة وضع السكون</string>
<string name="osmand_service_descr">استخدمها لتشغيل أوسماند عندما تكون الشاشة مُطفأة.</string>
<string name="download_files_not_enough_space">لا يوجد مساحة كافية لتحميل %1$s م.ب المساحة الخالية: %2$s.</string>
<string name="download_files_question_space">تحميل {0} ملف(ات) ؟
<string name="download_files_question_space">تحميل {0} ملف(ات) ؟
\n مساحة التخزين المستخدمة هي {1} مب (المساحة المتوفرة هي {2} مب).</string>
<string name="use_transparent_map_theme">السمة الشفافة</string>
<string name="native_library_not_supported">المكتبات الأصيلة غير مدعومة على هذا الجهاز.</string>
@ -721,8 +724,8 @@
<string name="gpx_option_reverse_route">عكس اتجاه المسار</string>
<string name="gpx_option_destination_point">استخدم الوجهة الحالية</string>
<string name="gpx_option_from_start_point">يمر على طول المسار باكمله</string>
<string name="switch_to_vector_map_to_see">خريطة التنقل متوفرة لهذا الموقع فعلها عبر
\n
<string name="switch_to_vector_map_to_see">خريطة التنقل متوفرة لهذا الموقع فعلها عبر
\n
\n\'القائمة\' ← \'ضبط الخريطة\' ← \'مصدر الخريطة\' ← \'الخريطة المحملة\'.</string>
<string name="choose_audio_stream">مصدر التوجيه الصوتي</string>
<string name="choose_audio_stream_descr">اختيار قناة لتشغيل التوجيه الصوتي.</string>
@ -770,7 +773,7 @@
<string name="mile_per_hour">ميل ساعة</string>
<string name="mile">ميل</string>
<string name="send_location_way_choose_title">شارك المكان باستخدام</string>
<string name="send_location_sms_pattern">الموقع: %1$s
<string name="send_location_sms_pattern">الموقع: %1$s
\n%2$s</string>
<string name="send_location_email_pattern">إتبع رابط متصفح الويب لمشاهدة المكان %1$s أو استعمل رابط أندرويد الخاص %2$s</string>
<string name="send_location">إرسال الموقع</string>
@ -878,7 +881,7 @@
<string name="routing_attr_avoid_ferries_name">تجنب العبارات</string>
<string name="routing_attr_weight_name">وزن المركبة</string>
<string name="android_19_location_disabled">منذ نسخة أندرويد كتكات 4.4، لا يمكنك تحميل أو تحديث الخرائط في مكان التخزين السابق (%s). هل تريد التغيير إلى مكان مسموح ونسخ كل الملفات إليه ؟ ملاحظات: 1-الملفات القديمة ستبقى كما هي (يمكن حذفها يدويا).
\n
\n
\n2-لايمكن مشاركة الملفات بين أوسماند و +أوسماند في مكان التخزين الجديد.</string>
<string name="copying_osmand_one_file_descr">ينسخ الملف (%s) إلى مساره الجديد…</string>
<string name="arrival_distance">تنبيه الوصول</string>
@ -931,7 +934,7 @@
<string name="waypoint_visit_after">زيارة بعد</string>
<string name="waypoint_visit_before">زيارة قبل</string>
<string name="simulate_your_location">محاكاة تخيلية</string>
<string name="short_location_on_map">خط العرض %1$s
<string name="short_location_on_map">خط العرض %1$s
\nخط الطول %2$s</string>
<string name="tips_and_tricks_descr">الأسئلة الشائعة، التغييرات الحديثة، وأخرى.</string>
<string name="routing_settings_2">إعدادات الملاحة</string>
@ -1023,8 +1026,8 @@
<string name="rename_failed">فشل في إعادة التسمية.</string>
<string name="back_to_map">عودة إلى الخريطة</string>
<string name="share_note">شارك ملاحظة</string>
<string name="location_on_map">الموقع:
\n Lat %1$s
<string name="location_on_map">الموقع:
\n Lat %1$s
\n Lon %2$s</string>
<string name="notes">ملاحظات</string>
<string name="online_map">خريطة إنترنت</string>
@ -1376,7 +1379,7 @@
<string name="osm_live_not_active">خامل</string>
<string name="osm_live_enter_email">الرجاء إدخال عنوان بريد إلكتروني صالح</string>
<string name="osm_live_enter_user_name">أدخل اسم عمومي</string>
<string name="osm_live_thanks">شكرا لدعمكم أوسماند!
<string name="osm_live_thanks">شكرا لدعمكم أوسماند!
\nلتنشيط جميع الميزات الجديدة ، تحتاج إلى إعادة تشغيل أوسماند.</string>
<string name="osm_live_subscription_settings">إعدادات الاشتراك</string>
<string name="shared_string_widgets">شريط جانبي</string>
@ -1430,7 +1433,7 @@
<string name="osm_live_region_desc">سيتم إرسال جزء من التبرع إلى مستخدمي OSM الذين يقومون بإرسال التغييرات إلى الخريطة في تلك المنطقة.</string>
<string name="osm_live_ask_for_purchase">يرجى شراء اشتراك أوسماند لايف أولا</string>
<string name="osm_live_header">يُتيحُ لك هذا الاشتراك الحصول على التحديثات كُل ساعة لجميع الخرائط حول العالم.
\nجزء من الدخل سيعود إلى مجتمع OSM ويُدفَع لكل مساهمة.
\nجزء من الدخل سيعود إلى مجتمع OSM ويُدفَع لكل مساهمة.
\nإن كنت تحب أوسماند وOSM وترغب في الدّعم، هذه هي الطريقة المُثلى للقيام بذلك.</string>
<string name="map_markers_other">وجهات أخرى</string>
<string name="upload_anonymously">رفع كمستخدم مجهول</string>
@ -1488,7 +1491,7 @@
<string name="rendering_value_bold_name">عريض</string>
<string name="anonymous_user_hint">المستخدم المجهول لا يمكنه :
\n- إنشاء مجموعة;
\n- مزامنة المجموعات والأجهزة مع السيرفر;
\n- مزامنة المجموعات والأجهزة مع السيرفر;
\n- إدارة المجموعات والأجهزة من خلال لوحة تحكم خاصة على الموقع.</string>
<string name="hello">تطبيق الملاحة أوسماند</string>
<string name="update_poi_error_loading">خطأ أثناء تحميل البيانات من الخادم.</string>
@ -1592,8 +1595,8 @@
<string name="osm_live_email_desc">نحن بحاجة اليه لكي نوفر لك معلومات حول المساهمات.</string>
<string name="select_map_marker">حدد توجيه مباشر</string>
<string name="show_transparency_seekbar">عرض شريط الشفافية</string>
<string name="download_files_error_not_enough_space">لا توجد مساحة كافية!
\n {3} MB مطلوب مؤقتا ، {1} ميجا بايت بشكل دائم.
<string name="download_files_error_not_enough_space">لا توجد مساحة كافية!
\n {3} MB مطلوب مؤقتا ، {1} ميجا بايت بشكل دائم.
\n (فقط {2} ميغابايت المتاحة.)</string>
<string name="starting_point">نقطة الانطلاق</string>
<string name="shared_string_sound">الصوت</string>
@ -1604,10 +1607,10 @@
<string name="route_duration">الزمن :</string>
<string name="route_tr">انعطف يميناً</string>
<string name="route_tl">انعطف يسارا واذهب</string>
<string name="plugin_nautical_descr">هذا الملحق يوفير خرائط بحرية للزوارق والمراكب الشراعية وأنواع أخرى من الرياضات المائية.
\n
\nخريطة خاصة إضافية للتطبيق ستقدم كل علامات الملاحة البحرية سواء داخلية أو شاطئية وكذلك جدول للرموز. وصف كل وجهة ملاحة يوفر التفاصيل اللازمة للتعرف عليها ومعانيها (الفئة، الشكل، اللون، التسلسل، المرجع...إلخ.).
\n
<string name="plugin_nautical_descr">هذا الملحق يوفير خرائط بحرية للزوارق والمراكب الشراعية وأنواع أخرى من الرياضات المائية.
\n
\nخريطة خاصة إضافية للتطبيق ستقدم كل علامات الملاحة البحرية سواء داخلية أو شاطئية وكذلك جدول للرموز. وصف كل وجهة ملاحة يوفر التفاصيل اللازمة للتعرف عليها ومعانيها (الفئة، الشكل، اللون، التسلسل، المرجع...إلخ.).
\n
\nللعودة إلى واحدة من أنماط الخريطة التقليدية، ببساطة إما عطل هذا الملحق مرة أخرى أو غير \'نمط الخريطة\' في \'ضبط الخريطة\' حسب الرغبة.</string>
<string name="search_near_map">البحث قرب مركز الخريطة الحالية</string>
<string name="active_markers">عدد خطوط التوجيه</string>
@ -1743,7 +1746,7 @@
<string name="access_from_map">الدخول عبر الخريطة</string>
<string name="show_on_start">عرض عند البدء</string>
<string name="map_widget_bearing">التأثير النسبي</string>
<string name="download_files_question_space_with_temp">تحميل {0} ملف؟
<string name="download_files_question_space_with_temp">تحميل {0} ملف؟
\nمساحة التخزين المستخدمة هي {3} مب مؤقتة، {1} مب دائمة. (المساحة المتوفرة هي {2} مب.)</string>
<string name="transport_route_distance">مسافة المسلك</string>
<string name="update_poi_error_local">خطأ تحيين القائمة المحلية لPOI.</string>
@ -1830,7 +1833,7 @@
<string name="osm_edit_commented_note">ملاحظة OSM معلق عليها</string>
<string name="rendering_attr_pisteGrooming_name">مسار زلق</string>
<string name="world_ski_missing">لإظهار خرائط التزلج، يجب تحميل خريطة خاصة محلية.</string>
<string name="rendering_attr_publicTransportMode_name">حافلة، ترامواي وغيرها</string>
<string name="rendering_attr_publicTransportMode_name">حافلة، عربة وغيرها</string>
<string name="osm_edit_created_note">إنشاء ملاحظة OSM</string>
<string name="osn_add_dialog_error">حدث استثناء: لم يتم إنشاء الملاحظة.</string>
<string name="osn_close_dialog_error">حدث استثناء: لم يتم غلق الملاحظة.</string>
@ -1889,14 +1892,14 @@
<string name="shared_string_others">أخرى</string>
<string name="local_index_action_do">%1$s %2$s عنصر ؟</string>
<string name="amenity_type_geocache">البيانات الجغرافية المؤقتة</string>
<string name="record_plugin_description">هذا الملحق يفعل وظيفة تسجيل وحفظ المسارات الخاصة بك عبر الضغط على نافذة GPX على شاشة الخريطة، أو كذلك تسجيل كافة طرق الملاحة الخاص بك تلقائيا إلى ملف GPX.
\n
<string name="record_plugin_description">هذا الملحق يفعل وظيفة تسجيل وحفظ المسارات الخاصة بك عبر الضغط على نافذة GPX على شاشة الخريطة، أو كذلك تسجيل كافة طرق الملاحة الخاص بك تلقائيا إلى ملف GPX.
\n
\nالمسارات المسجلة يمكن مشاركتها مع أصدقائك أو استخدامها كمساهمات ل OSM . الرياضيون يمكنهم استخدام المسارات المسجلة لمتابعة تدريباتهم. بعض تحليل المسار الابتدائية يمكن القيام بها مباشرة في التطبيق، مثل توقيت الدورات، ومتوسط السرعة...الخ، و يمكن أيضا تحليل المسارات باستعمال أدوات تحليل جانبية لاحقا.</string>
<string name="missing_write_external_storage_permission">أوسماند ليس لديه إذن لاستخدام ذاكرة البطاقة</string>
<string name="save_poi_without_poi_type_message">هل تريد حقا حفظ POI بدون تحديد نوعه؟</string>
<string name="dashboard_or_drawer_description">هناك خيار جديد لتحكم بشكل مرن بالتطبيق عبر لوحة القياس أو القائمة الثابتة. اختيارك يمكن تغييره دائما في إعدادات لوحة القياس.</string>
<string name="osmand_routing_experimental">ملاحة أوسماند دون نت ميزة تجريبية وهي لا تعمل لمسافات تزيد عن 20 كم.
\n
<string name="osmand_routing_experimental">ملاحة أوسماند دون نت ميزة تجريبية وهي لا تعمل لمسافات تزيد عن 20 كم.
\n
\n خدمة الملاحة حولت مؤقتا إلى CloudMade على الإنترنت.</string>
<string name="build_installed">إصدار {0} تثبيت بنجاح ({1}).</string>
<string name="downloading_build">جار تحميل الإصدار…</string>
@ -1962,15 +1965,14 @@
\nليست هناك حاجة لتحميل خريطة خاصة،الرؤية يتم إنشاؤها من خلال خرائطنا المحلية.
\n
\nهذه الرؤية يمكن التراجع عنها إما عن طريق تعطيلها هنا، أو تغيير \'نمط الخريطة\' في \'ضبط الخريطة\' حسب الرغبة.</string>
<string name="create_poi_link_to_osm_doc">
<u>Online OSM</u> تصنيف الخريطة مع الصور.</string>
<string name="create_poi_link_to_osm_doc"><u>Online OSM</u> تصنيف الخريطة مع الصور.</string>
<string name="background_service_wait_int_descr">تعيين الحد الأقصى لوقت الانتظار لكل إصلاح موقع في الخلفية.</string>
<string name="background_service_wait_int">الانتظار الأقصى للإصلاح</string>
<string name="voice_data_not_supported">إصدار غير معتمد من البيانات الصوتية</string>
<string name="voice_data_corrupted">البيانات الصوتية المحددة تالفة</string>
<string name="sd_unmounted">بطاقة الذاكرة غير متاحة.
\nلن تكون قادرا على رؤية الخرائط أو العثور على أماكن.</string>
<string name="sd_mounted_ro">بطاقة الذاكرة في وضع القراءة فقط.
<string name="sd_mounted_ro">بطاقة الذاكرة في وضع القراءة فقط.
\n يمكنك فقط مشاهدة الخريطة المحملة مسبقاً ولا يمكنك التحميل من الإنترنت.</string>
<string name="route_tshr">انعطف يميناً بشكل حاد</string>
<string name="route_tshl">انعطف يساراً بشكل حاد</string>
@ -1980,7 +1982,7 @@
<string name="transport_search_after">المسار اللاحق للرحلة</string>
<string name="use_fast_recalculation_desc">حساب الجزء الأول فقط من الطريق للرحلات الطويلة.</string>
<string name="shared_string_undo">إلغاء</string>
<string name="offline_maps_and_navigation">خرائط محلية
<string name="offline_maps_and_navigation">خرائط محلية
\nوملاحة</string>
<string name="commit_poi">إنشاء إحداثية POI</string>
<string name="number_of_rows_in_dash">عدد الصفوف في الدفعة %1$s</string>
@ -1989,14 +1991,13 @@
<string name="activate_seamarks_plugin">يرجى تفعيل ملحق المعالم البحرية</string>
<string name="value_downloaded_of_max">%1$.1f من %2$.1f مب</string>
<string name="file_size_in_mb">%.1f مب</string>
<string name="plugin_ski_descr">يضع هذا الملحق بين يديك تفاصيل منحدرات تزلج عالمية، مسارات تزلج عبر كامل البلاد، التلفريك ومصاعد التزلج. الطرقات والمعابر مبينة بألوان حسب الصعوبة،
\n
<string name="plugin_ski_descr">يضع هذا الملحق بين يديك تفاصيل منحدرات تزلج عالمية، مسارات تزلج عبر كامل البلاد، التلفريك ومصاعد التزلج. الطرقات والمعابر مبينة بألوان حسب الصعوبة،
\n
\nومصورة بنمط خريطة مميز \'شتوي\' تمثل مناظر الطبيعة بلون مثلج شتوي.</string>
<string name="rendering_attr_hideOverground_name">أشياء فوق سطح الأرض</string>
<string name="shared_string_change">تغيير</string>
<string name="get_started">ابدأ</string>
<string name="routing_attr_short_way_name">طريق أقل استهلاكاً للوقود</string>
<string name="routing_attr_short_way_description">استخدم طريق أقل استهلاكا للوقود (عادة أقصر).</string>
<string name="replace_favorite_confirmation">هل تريد استبدال المفضلة %1$s؟</string>
<string name="clear_tile_data">حذف جميع الطبقات</string>
<string name="update_all_maps_now">هل تريد تحديث كافة الخرائط الآن؟</string>
@ -2072,7 +2073,7 @@
<string name="rendering_value_fine_name">اللون والسمك</string>
<string name="route_roundabout_short">خذ المخرج %1$d ثم واصل</string>
<string name="search_map_hint">المدينة أو المنطقة</string>
<string name="wiki_around">مقالات ويكيبيديا قريبة</string>
<string name="wiki_around">مقالات ويكيبيديا مجاورة</string>
<string name="routing_attr_allow_motorway_name">استخدام الطرق السريعة</string>
<string name="routing_attr_allow_motorway_description">السماح للطرق السريعة.</string>
<string name="lang_sr_latn">الصربية (اللاتينية)</string>
@ -2162,7 +2163,7 @@
<string name="quick_action_btn_tutorial_descr">قم بالضغط على الزر لفترة أطوَل ثم اسحبه لتغيير مكانه على الشاشة.</string>
<string name="rendering_attr_depthContours_name">معالم العمق البحري</string>
<string name="auto_split_recording_title">تقسيم المسارات آلياً إلى أجزاء بعد كل فراغ</string>
<string name="navigate_point_olc_info_short">تقصير رمز التموضع المفتوح
<string name="navigate_point_olc_info_short">تقصير رمز التموضع المفتوح
\n يُرجى تقديم رمزٍ كامل</string>
<string name="quick_action_duplicate">اسم الاختصار السريع مكرر</string>
<string name="quick_action_bug_descr">سوف تكون تتمة هذه الرسالة تلقائية في المجال المخصص للتعليق.</string>
@ -2219,18 +2220,19 @@
<string name="select_gpx_folder">حدد مجلد المسار</string>
<string name="shared_string_gpx_tracks">المسارات</string>
<string name="shared_string_time">الوقت</string>
<string name="osmand_plus_extended_description_part8">التغطية التقريبية للخريطة و جودتها :
\n• أوروبا الغربية : ****
\n• أوروبا الشرقية : ***
\n• روسيا : ***
\n• أمريكا الشمالية : ***
\n• امريكا الجنوبية : **
\n• آسيا : **
\n• اليابان وكوريا : ***
\n• الشرق الأوسط : **
\n• إفريقيا : **
\n• أنتاركتيكا : *
\n معظم البلدان في جميع أنحاء العالم متاحة للتنزيل ! من أفغانستان إلى زيمبابوي، من أستراليا إلى الولايات المتحدة الأمريكية. الأرجنتين، البرازيل، كندا، فرنسا، ألمانيا، المكسيك، المملكة المتحدة، إسبانيا
<string name="osmand_plus_extended_description_part8">التغطية التقريبية للخريطة و جودتها:
\n • أوروبا الغربية: ****
\n • أوروبا الشرقية: ***
\n • روسيا: ***
\n • أمريكا الشمالية: ***
\n • امريكا الجنوبية: **
\n • آسيا: **
\n • اليابان وكوريا: ***
\n • الشرق الأوسط : **
\n • إفريقيا: **
\n • أنتاركتيكا: *
\n معظم البلدان في جميع أنحاء العالم متاحة للتنزيل
\n من أفغانستان إلى زيمبابوي، من أستراليا إلى الولايات المتحدة الأمريكية. الأرجنتين، البرازيل، كندا، فرنسا، ألمانيا، المكسيك، المملكة المتحدة، أسبانيا , …
\n</string>
<string name="restart_search">إعادة البحث</string>
<string name="osmand_extended_description_part7">المساهمة في OSM
@ -2307,13 +2309,13 @@
<string name="relief_smoothness_factor_descr">التضاريس المفضلة : مسطحة أو تلال.</string>
<string name="shared_string_slope">الانحدار</string>
<string name="shared_string_move">نقل</string>
<string name="routing_attr_height_obstacles_description">استخدام بيانات ارتفاع التضاريس المقدمة بواسطة SRTM, ASTER, EU-DEM.</string>
<string name="rendering_attr_depthContours_description">إظهار نقاط ومعالم العمق.</string>
<string name="auto_split_recording_descr">بدء مقطع جديدة بعد فارق 6 دقائق، مسار جديد بعد فارق 2 ساعة، أو ملف جديد بعد فارق أطول إذا تغير التاريخ.</string>
<string name="shared_string_paused">متوقف مؤقتاً</string>
<string name="route_is_too_long_v2">قد يكون المسار طويلا جدا للحساب. يرجى إضافة وجهات وسطى إذا لم يتم العثور على نتيجة خلال 10 دقائق.</string>
<string name="osmand_extended_description_part1">أوسماند(توجيهات OSM للتنقل الآلية) تطبيق خريطة وتنقل مع إمكانية الوصول إلى بيانات (OSM) مجاناً وفي جميع أنحاء العالم، وبجودة عالية
\n
<string name="osmand_extended_description_part1">أوسماند(توجيهات OSM للتنقل الآلية) تطبيق خريطة وتنقل مع إمكانية الوصول إلى بيانات (OSM) مجاناً وفي جميع أنحاء العالم، وبجودة عالية
\n
\n. استمتع بمستكشف بالصوت والصورة، وعرض (نقاط الاهتمام)، إنشاء وإدارة مسارات GPX، استخدام عرض ارتفاع بيانات الخطوط الكنتورية(عن طريق الملحق)، اختيار بين نمط القيادة، ركوب الدراجات والمشاة، التعديل على الموقع وغيرها.</string>
<string name="osmand_extended_description_part2">التنقل عبر GPS
\n• يمكنك أن تختار بين وضع دون اتصال (لا رسوم تجوال عندما تكون في الخارج) أو بالإنترنت (أسرع)
@ -2329,20 +2331,20 @@
\n</string>
<string name="osmand_extended_description_part3">خريطة
\n• \"عرض النقاط POI\" (نقطة اهتمام) من حولك
\n• ضبط الخريطة اتجاه الحركة أو (البوصلة)
\n• ضبط الخريطة اتجاه الحركة أو (البوصلة)
\n• إظهار مكانك الحالي وما يقابلك
\n• مشاركة موقعك حتى يتسنى لأصدقاء إيجادك
\n• الاحتفاظ بأهم الأماكن في المفضلة
\n• يسمح لك باختيار كيفية عرض الأسماء على الخريطة: باللغة الإنجليزية، اللغة المحلية أو حسب الإملاء الصوتي
\n• إظهار نمط خريطة إنترنت متخصص ، صورة قمر صناعي (بينج)، إظهار طبقات خريطة متراكبة مختلفة كالسياحة/مسارات GPX للملاحة وطبقات إضافية مع شفافية قابلة للتعديل
\n</string>
<string name="osmand_extended_description_part4">التزلج
<string name="osmand_extended_description_part4">التزلج
\nملحق خرائط أوسماند للتزلج يمكنك من مشاهدة مسارات التزلج مع مستوى من التعقيد وبعض المعلومات الإضافية، كمواقع المصاعد والمرافق الأخرى.</string>
<string name="osmand_extended_description_part5">ركوب الدراجات الهوائية
\n• العثورعلى مسار دراجات على الخريطة
\n• التنقل في وضع ركوب الدراجات تقترح لك مسار دراجات
\n• يمكنك مشاهدة سرعتك وارتفاعك
\n• خيار تسجيل GPX يتيح لك تسجيل رحلتك ومشاركتها
<string name="osmand_extended_description_part5">ركوب الدراجات الهوائية
\n• العثورعلى مسار دراجات على الخريطة
\n• التنقل في وضع ركوب الدراجات تقترح لك مسار دراجات
\n• يمكنك مشاهدة سرعتك وارتفاعك
\n• خيار تسجيل GPX يتيح لك تسجيل رحلتك ومشاركتها
\n• عبر ملحق إضافي يمكنك عرض الخطوط الكنتورية والتضاريس</string>
<string name="osmand_extended_description_part6">المشي، التنزه، جولة في المدينة
\n• الخريطة تظهر لك ممرات المشي والتنزه
@ -2365,34 +2367,35 @@
\n• أنتاركتيكا: *
\nمعظم البلدان في جميع أنحاء العالم متاحة للتحميل!
\nاحصل على برنامج تنقل موثوق به في بلدك - سواءاً في فرنسا، ألمانيا، المكسيك، المملكة المتحدة، إسبانيا، هولندا، الولايات المتحدة الأمريكية، روسيا، البرازيل أو أي دولة أخرى.</string>
<string name="osmand_plus_extended_description_part1">أوسماند بلس (توجيهات OSM للملاحة الآلية) تطبيق خريطة وملاحة مع إمكانية الوصول إلى بيانات الموقع مجاناً وفي جميع أنحاء العالم، وبجودة عالية.
\nاستمتع بالملاحة بصوت والصورة، عرض النقاط المهمة حولك (POI)، وإنشاء وإدارة مسارات GPX باستخدام معلومات عن تصور وعلو الخطوط الكنتورية، خياراً بين القيادة، ركوب الدراجات، وضع المشاة، التعديل على OSM وأكثر من ذلك بكثير.
\n
\nأوسماند بلس هو إصدار للتطبيق مدفوع الأجر. قبل شرائه، ادعم المشروع، بتمويل لتطوير الميزات الجديدة والحصول على آخر التحديثات.
\n
<string name="osmand_plus_extended_description_part1">أوسماند بلس (توجيهات OSM للملاحة الآلية) تطبيق خريطة وملاحة مع إمكانية الوصول إلى بيانات الموقع مجاناً وفي جميع أنحاء العالم، وبجودة عالية.
\nاستمتع بالملاحة بصوت والصورة، عرض النقاط المهمة حولك (POI)، وإنشاء وإدارة مسارات GPX باستخدام معلومات عن تصور وعلو الخطوط الكنتورية، خياراً بين القيادة، ركوب الدراجات، وضع المشاة، التعديل على OSM وأكثر من ذلك بكثير.
\n
\nأوسماند بلس هو إصدار للتطبيق مدفوع الأجر. قبل شرائه، ادعم المشروع، بتمويل لتطوير الميزات الجديدة والحصول على آخر التحديثات.
\n
\n بعض الميزات الرئيسية:</string>
<string name="osmand_plus_extended_description_part2">الملاحة
\n• يعمل على الإنترنت (سريع) أو في وضع غير متصل (لا رسوم تجوال خارج الوطن)
\n• توجيه صوتي بالتفصيل (الأصوات المسجلة أو مدرجة)
\n• موجه مسار اختياري، عرض اسم الشارع، والوقت المقدر للوصول
\n• يدعم نقاط وسيطة خلال مسارك
\n• إعادة تلقائية للتوجيه كلما انحرفت عن الطريق
\n• البحث عن الأماكن حسب العنوان، النوع (مثل: مطعم، فندق، محطة وقود، متحف)،أو حسب الإحداثيات الجغرافية</string>
<string name="osmand_plus_extended_description_part3">عرض الخريطة
\n• عرض موقعك والتوجيه
\n• محاذاة اختيارية للصورة وفق البوصلة أو توجيه الحركة
\n• حفظ أهم أماكنك المفضلة
\n• عرض نقاط الاهتمام من حولك
\n• عرض متخصص لبيانات خرائط على الإنترنت، الرؤية من الأقمار الصناعية (من بينج) وتراكب طبقات خرائط مختلفة كالسياحة ومسارات GPX للملاحة وطبقات إضافية مع شفافية قابلة للتعديل
\n • يعمل على الإنترنت (سريع) أو في وضع غير متصل (لا رسوم تجوال خارج الوطن)
\n • توجيه صوتي بالتفصيل (الأصوات المسجلة أو مدرجة)
\n • موجه مسار اختياري، عرض اسم الشارع، والوقت المقدر للوصول
\n • يدعم نقاط وسيطة خلال مسارك
\n • إعادة تلقائية للتوجيه كلما انحرفت عن الطريق
\n • البحث عن الأماكن حسب العنوان، النوع (مثل: مطعم، فندق، محطة وقود، متحف)،أو حسب الإحداثيات الجغرافية
\n</string>
<string name="osmand_plus_extended_description_part3">عرض الخريطة
\n• عرض موقعك والتوجيه
\n• محاذاة اختيارية للصورة وفق البوصلة أو توجيه الحركة
\n• حفظ أهم أماكنك المفضلة
\n• عرض نقاط الاهتمام من حولك
\n• عرض متخصص لبيانات خرائط على الإنترنت، الرؤية من الأقمار الصناعية (من بينج) وتراكب طبقات خرائط مختلفة كالسياحة ومسارات GPX للملاحة وطبقات إضافية مع شفافية قابلة للتعديل
\n• عرض اختياري لأسماء الأماكن باللغة الإنكليزية، اللغة المحلية، أو عبر الإملاء الصوتي
\n</string>
<string name="osmand_plus_extended_description_part4">استخدام OSM وبيانات ويكيبيديا
\n• جودة معلومات من أفضل المشاريع التعاونية العالمية
\n• بيانات OSM متاحة لكل بلد أو منطقة
\n• POI ويكيبيديا، الأفضل لمشاهدة المعالم السياحية
\n• التنزيلات مجانية غير محدودة، مباشرة من التطبيق
\n• خرائط فيكتور مدمجة تحدث مرة واحدة في شهر على الأقل
\n
<string name="osmand_plus_extended_description_part4">استخدام OSM وبيانات ويكيبيديا
\n• جودة معلومات من أفضل المشاريع التعاونية العالمية
\n• بيانات OSM متاحة لكل بلد أو منطقة
\n• POI ويكيبيديا، الأفضل لمشاهدة المعالم السياحية
\n• التنزيلات مجانية غير محدودة، مباشرة من التطبيق
\n• خرائط فيكتور مدمجة تحدث مرة واحدة في شهر على الأقل
\n
\n• اختر بين بيانات منطقة كاملة أو شبكة الطرق فقط (مثال: سعة اليابان 700 MB في حين 200 MB لشبكة الطرق فقط)</string>
<string name="osmand_plus_extended_description_part5">ميزات الأمان
\n• عرض اختياري لوضع النهار/اليل
@ -2400,12 +2403,12 @@
\n• تكبير/تصغيير اختياري حسب السرعة
\n• مشاركة موقعك حتى يتمكن لأصدقاءك ايجادك
\n</string>
<string name="osmand_plus_extended_description_part6">ميزات الدراجة والمشاة
\n • عرض ممرات المشاة، التنزه، وأنشطة الهواء الطلق
\n • توجيه متخصص وعرض طرق خاصة باللدراجات الهوائية والمشاة
\n • محطات نقل عام اختيارية (حافلات، الترامواي، القطار) بما في ذلك أسماء خطوط النقل
\n • تسجيل رحلة اختياري إلى ملف GPX محلي أو لخدمة على الإنترنت
\n • عرض اختياري للسرعة والارتفاع
<string name="osmand_plus_extended_description_part6">ميزات الدراجة والمشاة
\n • عرض ممرات المشاة، التنزه، وأنشطة الهواء الطلق
\n • توجيه متخصص وعرض طرق خاصة باللدراجات الهوائية والمشاة
\n • محطات نقل عام اختيارية (حافلات، الترامواي، القطار) بما في ذلك أسماء خطوط النقل
\n • تسجيل رحلة اختياري إلى ملف GPX محلي أو لخدمة على الإنترنت
\n • عرض اختياري للسرعة والارتفاع
\n • عرض الخطوط الكنتورية والتضاريس (عن طريق برامج ملحق إضافي)</string>
<string name="osmand_plus_extended_description_part7">المساهمة مباشرة في OSM
\n• الابلاغ عن الأخطاء في البرنامج
@ -2418,7 +2421,8 @@
<string name="quick_action_duplicates">اسم الاختصار السريع المحدد قيد الاستخدام، لقد تم تغييره إلى %1$s لتجنب التكرار.</string>
<string name="quick_action_page_list_descr">الضغط على زر الإجراء سيطبق أحد الأنماط من القائمة أدناه.</string>
<string name="route_points_category_name">تنقلاتك على هذا الطريق</string>
<string name="navigate_point_olc_info_area">OLC الصالحة بالكامل\nتمثل المنطقة: %1$s x %2$s</string>
<string name="navigate_point_olc_info_area">الصالحة بالكامل OLC
\nيمثل المنطقة: %1$s x %2$s</string>
<string name="wrong_user_name">اسم المستخدم خاطئ</string>
<string name="shared_string_to">إلى</string>
<string name="mapillary_menu_date_from">مِن</string>
@ -2616,7 +2620,7 @@
<string name="south_abbreviation">ج</string>
<string name="north_abbreviation">ش</string>
<string name="optional_point_name">اسم النقطة</string>
<string name="transport_nearby_routes_within">الطرق القريبة التي في الداخل</string>
<string name="transport_nearby_routes_within">الطرق الداخلية المجاورة</string>
<string name="enter_the_file_name">أدخل اسم الملف.</string>
<string name="map_import_error">خطأ أثناء استرجاع الخريطة</string>
<string name="map_imported_successfully">تمت عملية استيراد الخريطة</string>
@ -2719,7 +2723,7 @@
<string name="ask_for_location_permission">يرجى إعطاء إذن تحديد الموقع للتطبيق لكي يواصل.</string>
<string name="thank_you_for_feedback">شكرا على الرد</string>
<string name="poi_cannot_be_found">النقطة أو الطريق غير موجود.</string>
<string name="search_no_results_feedback">لايوجد نتائج للبحث؟
<string name="search_no_results_feedback">لايوجد نتائج للبحث؟
\nأخبرنا برأيك</string>
<string name="increase_search_radius_to">زيادة نصف قطر البحث إلى %1$s</string>
<string name="send_search_query">إرسال استفسار البحث؟</string>
@ -2752,7 +2756,7 @@
<string name="purchase_dialog_subtitle">اختر العنصر المناسب</string>
<string name="shared_string_dont">لا تفعل</string>
<string name="shared_string_do">افعل</string>
<string name="wikivoyage_download_pics_descr">صور المقالة يمكن تحملها للاستخدام بدون اتصال.
<string name="wikivoyage_download_pics_descr">صور المقالة يمكن تحملها للاستخدام بدون اتصال.
\nدائماً متوفرة في \'اكتشف\'←\'خيارات\'.</string>
<string name="online_webpage_warning">الصفحة متاحة على الإنترنت فقط. فتح في متصفح الويب؟</string>
<string name="images_cache">الصور المؤقتة</string>
@ -3043,20 +3047,20 @@
<string name="routing_attr_prefer_unpaved_description">تفضيل الطرق الغير معبدة.</string>
<string name="update_all_maps">تحديث كل الخرائط</string>
<string name="update_all_maps_q">هل أنت متأكد من رغبتك بتحديث (%1$d) خريطة؟</string>
<string name="release_3_5">• تحديث التطبيق وإعدادات الأوضاع: يتم ترتيب الإعدادات الآن حسب النوع. يمكن تخصيص كل وضع بشكل منفصل.
\n
\n • نافذة جديدة لتنزيل الخريطة المقترحة أثناء تصفح الخرائط
\n
\n • إصلاحات للنمط الليلي
\n
\n • إصلاح العديد من مشاكل التوجيه في جميع أنحاء العالم
\n
\n • خريطة الأساس المحدثة مع شبكة طرق أكثر تفصيلا
\n
\n • تحديث المناطق التي غمرتها الفيضانات في جميع أنحاء العالم
\n
\n • توجيه التزلج: إضافة وضع الارتفاع وتعقيد المسار إلى تفاصيل المسار
\n
<string name="release_3_5">• تحديث التطبيق وإعدادات الأوضاع: يتم ترتيب الإعدادات الآن حسب النوع. يمكن تخصيص كل وضع بشكل منفصل.
\n
\n • نافذة جديدة لتنزيل الخريطة المقترحة أثناء تصفح الخرائط
\n
\n • إصلاحات للنمط الليلي
\n
\n • إصلاح العديد من مشاكل التوجيه في جميع أنحاء العالم
\n
\n • خريطة الأساس المحدثة مع شبكة طرق أكثر تفصيلا
\n
\n • تحديث المناطق التي غمرتها الفيضانات في جميع أنحاء العالم
\n
\n • توجيه التزلج: إضافة وضع الارتفاع وتعقيد المسار إلى تفاصيل المسار
\n
\n • إصلاحات أخرى
\n
\n</string>
@ -3233,7 +3237,7 @@
<string name="monthly_map_updates">تحديثات الخريطة الشهرية</string>
<string name="daily_map_updates">تحديثات الخريطة كل ساعة</string>
<string name="send_search_query_description">سيتم إرسال استعلام البحث إلى: \"%1$s\" ، بالإضافة إلى موقعك.
\n
\n
\nلا يتم جمع المعلومات الشخصية ، فقط بيانات البحث اللازمة لتحسين البحث.</string>
<string name="routing_attr_avoid_tram_name">لامركبة ترام</string>
<string name="routing_attr_avoid_tram_description">تجنب مركبة الترام</string>
@ -3258,8 +3262,8 @@
<string name="coordinates_widget">عرض الإحداثيات</string>
<string name="shared_string_privacy_policy">سياسة الخصوصية</string>
<string name="help_us_make_osmand_better">ساعدنا في جعل أوسماند أفضل</string>
<string name="make_osmand_better_descr">السماح ل OsmAnd بجمع ومعالجة بيانات استخدام التطبيق المجهول. لا يتم جمع بيانات حول موقعك أو المواقع التي تعرضها على الخريطة.
\n
<string name="make_osmand_better_descr">السماح ل OsmAnd بجمع ومعالجة بيانات استخدام التطبيق المجهول. لا يتم جمع بيانات حول موقعك أو المواقع التي تعرضها على الخريطة.
\n
\nقم بإعدادها في أي وقت لاحق في \'الإعدادات\' ← \'الخصوصية والأمان\'.</string>
<string name="choose_data_to_share">اختر نوع البيانات التي تريد مشاركتها:</string>
<string name="downloaded_maps">الخرائط التي تم تنزيلها</string>
@ -3335,7 +3339,7 @@
<string name="routing_attr_allow_expert_name">السماح بطرق المتخصصين</string>
<string name="routing_attr_allow_expert_description">طرق صعبة للغاية ، مع عقبات خطيرة والمناطق المحيطة بها.</string>
<string name="routing_attr_allow_skating_only_name">السماح بالتزلج على الطرق فقط</string>
<string name="routing_attr_allow_skating_only_description">الطريق مصممة خصيصا بحرية أو التزلج على الجليد.</string>
<string name="routing_attr_allow_skating_only_description">طرق مصممة للأسلوب الحر أو التزلج فقط بدون المسارات الكلاسيكية.</string>
<string name="routing_attr_allow_classic_only_name">السماح للطرق الكلاسيكية فقط</string>
<string name="routing_attr_allow_classic_only_description">تم إعداد الطرق للأسلوب الكلاسيكي فقط دون مسارات التزلج. يشمل ذلك الطرق التي يتم إعدادها بواسطة عربة ثلجية أصغر مع زحلقة مرنة ومسارات مصنوعة يدوياً بواسطة المتزلجين.</string>
<string name="routing_attr_difficulty_preference_name">الصعوبة المفضلة</string>
@ -3378,7 +3382,7 @@
<string name="select_color">اختر اللون</string>
<string name="edit_profiles_descr">لا يمكنك حذف أوضاع أوسماند الافتراضية ، ولكن يمكنك تعطيلها في الشاشة السابقة ، أو نقلها إلى الأسفل.</string>
<string name="edit_profiles">تحرير الأوضاع</string>
<string name="select_nav_profile_dialog_message">يؤثر نوع التنقل على قواعد حسابات المسار.</string>
<string name="select_nav_profile_dialog_message">يؤثر نوع التنقل على كييفية حساب المسارات.</string>
<string name="profile_appearance">مظهر الوضع</string>
<string name="choose_icon_color_name">اختر الايقونة واللون والاسم</string>
<string name="reorder_profiles">تحرير قائمة الأوضاع</string>
@ -3495,8 +3499,8 @@
<string name="shared_string_include_data">تضمين بيانات إضافية</string>
<string name="export_profile_dialog_description">يمكنك تحديد بيانات إضافية للتصدير مع الوضع.</string>
<string name="index_name_antarctica">القارة القطبية الجنوبية</string>
<string name="plugin_disabled_descr">هذا الملحق هو تطبيق منفصل ، بإمكانك إزالته بشكل منفصل إذا لم تعد تخطط لاستخدامه.
\n
<string name="plugin_disabled_descr">هذا الملحق هو تطبيق منفصل ، بإمكانك إزالته بشكل منفصل إذا لم تعد تخطط لاستخدامه.
\n
\nسيبقى الملحق الإضافي على الجهاز بعد إزالة أوسماند.</string>
<string name="ltr_or_rtl_triple_combine_via_dash">%1$s — %2$s — %3$s</string>
<string name="import_profile_dialog_description">يحتوي الوضع المستوردة على بيانات إضافية. انقر فوق \"استيراد\" لاستيراد بيانات الوضع فقط أو حدد بيانات إضافية لاستيرادها.</string>
@ -3523,8 +3527,8 @@
<string name="listed_exist">المدرج %1$s, موجودة بالفعل في أوسماند.</string>
<string name="keep_both">احتفظ بكليهما</string>
<string name="keep_both_desc">سيتم إضافة العناصر المستوردة مع زيادة قبل اسمها</string>
<string name="import_duplicates_description">OsmAnd يحتوي بالفعل على عناصر بنفس الأسماء مثل التي استوردتها.
\n
<string name="import_duplicates_description">OsmAnd يحتوي بالفعل على عناصر بنفس الأسماء مثل التي استوردتها.
\n
\nحدد إجراء.</string>
<string name="import_duplicates_title">بعض العناصر موجودة بالفعل</string>
<string name="select_data_to_import">حدد البيانات التي سيتم استيرادها.</string>
@ -3537,8 +3541,8 @@
<string name="clear_recorded_data_warning">هل أنت متأكد من أنك تريد مسح البيانات المسجلة؟</string>
<string name="importing_from">استيراد البيانات من %1$s</string>
<string name="shared_string_importing">استيراد</string>
<string name="checking_for_duplicate_description">OsmAnd تحقق %1$s للتكرارات مع العناصر الموجودة في التطبيق.
\n
<string name="checking_for_duplicate_description">OsmAnd تحقق %1$s للتكرارات مع العناصر الموجودة في التطبيق.
\n
\nقد يستغرق الأمر بعض الوقت.</string>
<string name="items_added">العناصر المضافة</string>
<string name="shared_string_import_complete">تم الاستيراد</string>
@ -3585,8 +3589,8 @@
<string name="shared_string_language">اللغة</string>
<string name="shared_string_all_languages">جميع اللغات</string>
<string name="wiki_menu_download_descr">هناك حاجة إلى خرائط إضافية لعرض النقاط المهمة من ويكيبيديا على الخريطة.</string>
<string name="ui_customization_description">تخصيص كمية العناصر في درج تكوين خريطة قائمة السياق.
\n
<string name="ui_customization_description">تخصيص كمية العناصر في درج تكوين خريطة قائمة السياق.
\n
\nيمكنك تعطيل الإضافات غير المستخدمة لإخفاء جميع الضوابط من الطلب %1$s.</string>
<string name="ui_customization_short_descr">عناصر الدرج، قائمة السياق</string>
<string name="ui_customization">تخصيص واجهة المستخدم</string>
@ -3636,10 +3640,10 @@
<string name="extra_maps_menu_group">خرائط إضافية</string>
<string name="download_unsupported_action">%1$s إجراء غير معتمد</string>
<string name="ltr_or_rtl_combine_via_slash_with_space">%1$s / %2$s</string>
<string name="osm_live_payment_subscription_management">سيتم احتساب الدفع لحساب Google Play الخاص بك في تأكيد الشراء.
\n
\nيتم تجديد الاشتراك تلقائيًا ما لم يتم إلغاؤه قبل تاريخ التجديد. سيتم تحميل حسابك لفترة التجديد (شهر / ثلاثة أشهر / سنة) فقط في تاريخ التجديد.
\n
<string name="osm_live_payment_subscription_management">سيتم احتساب الدفع لحساب Google Play الخاص بك في تأكيد الشراء.
\n
\nيتم تجديد الاشتراك تلقائيًا ما لم يتم إلغاؤه قبل تاريخ التجديد. سيتم تحميل حسابك لفترة التجديد (شهر / ثلاثة أشهر / سنة) فقط في تاريخ التجديد.
\n
\nيمكنك إدارة وإلغاء الاشتراكات الخاصة بك عن طريق الذهاب إلى إعدادات Google Play الخاصة بك.</string>
<string name="search_poi_types">البحث عن أنواع poi</string>
<string name="search_poi_types_descr">اجمع أنواع النقاط المهمة من فئات مختلفة. اضغط على مفتاح التبديل لتحديد الكل ، ثم انقر على الجانب الأيسر لاختيار الفئة.</string>
@ -3655,22 +3659,22 @@
<string name="osmand_purchases_item">مشتريات أوسماند</string>
<string name="legend_item_description">دليل رموز الخريطة.</string>
<string name="navigation_profiles_item">أوضاع الملاحة</string>
<string name="release_3_7">• خرائط جديدة للتضاريس توضح المنحدرات من دون الحاجة للاتصال بالإنترنت
\n
\n • التخصيص الكامل للمفضلات ونقاط الطرق GPX - الألوان المخصصة والأيقونات والأشكال
\n
\n • تخصيص ترتيب العناصر في قائمة السياق ، تكوين الخريطة ، درج
\n
\n • عرض ويكيبيديا كطبقة منفصلة في تكوين الخريطة ، حدد اللغات المطلوبة فقط
\n
\n • إنشاء مرشح / خرائط للمعالم الخاصة بك مع مرونة تامة
\n
\n • تمت إضافة خيارات لاستعادة إعدادات الأوضاع المخصصة
\n
\n • مسارات GPX كاملة من الممرات دعم حركة المرور وتعليمات كاملة
\n
\n • إصلاح أحجام واجهة المستخدم على الأجهزة اللوحية
\n
<string name="release_3_7">• خرائط جديدة للتضاريس توضح المنحدرات من دون الحاجة للاتصال بالإنترنت
\n
\n • التخصيص الكامل للمفضلات ونقاط الطرق GPX - الألوان المخصصة والأيقونات والأشكال
\n
\n • تخصيص ترتيب العناصر في قائمة السياق ، تكوين الخريطة ، درج
\n
\n • عرض ويكيبيديا كطبقة منفصلة في تكوين الخريطة ، حدد اللغات المطلوبة فقط
\n
\n • إنشاء مرشح / خرائط للمعالم الخاصة بك مع مرونة تامة
\n
\n • تمت إضافة خيارات لاستعادة إعدادات الأوضاع المخصصة
\n
\n • مسارات GPX كاملة من الممرات دعم حركة المرور وتعليمات كاملة
\n
\n • إصلاح أحجام واجهة المستخدم على الأجهزة اللوحية
\n
\n • إصلاح الخلل مع اللغات التي تكتب من اليمين
\n
\n</string>
@ -3722,9 +3726,9 @@
\n
\n%2$s هي مستويات التكبير التي ستكون فيها الإطارات المتجانبة الأصلية مرئية. سوف يحدث التحجيم للأكبر أو الأصغر خارج هذه القيم.</string>
<string name="expire_time_descr">وقت انتهاء الصلاحية بالدقائق. سيتم إعادة تحميل الإطارات المتجانبة المخزنة مؤقتًا بعد الوقت المحدد. اترك هذا الحقل فارغًا لعدم تحديث الإطارات المتجانبة لهذا المصدر.
\n
\nيوم واحد هو 1440 دقيقة.
\nأسبوع واحد هو 10080 دقيقة.
\n
\nيوم واحد هو 1440 دقيقة.
\nأسبوع واحد هو 10080 دقيقة.
\nشهر واحد هو 43 829 دقيقة.</string>
<string name="tiles_storage_descr">اختر كيفية تخزين الطبقات المنزلة.</string>
<string name="default_screen_timeout">مهلة الشاشة الافتراضية</string>
@ -3760,12 +3764,12 @@
<string name="item_deleted">%1$s محذوفة</string>
<string name="speed_cameras_restart_descr">إعادة التشغيل مطلوبة لحذف بيانات كاميرا السرعة بالكامل.</string>
<string name="shared_string_uninstall_and_restart">إلغاء التثبيت وإعادة التشغيل</string>
<string name="speed_cameras_legal_descr">في بعض البلدان أو المناطق، يحظر القانون استخدام تطبيقات التحذير من كاميرا السرعة.
\n
\nعليك أن تختار اعتمادا على قانون بلدك.
\n
\nحدد %1$s وستتلقى تنبيهات وتحذيرات حول كاميرات السرعة.
\n
<string name="speed_cameras_legal_descr">في بعض البلدان أو المناطق، يحظر القانون استخدام تطبيقات التحذير من كاميرا السرعة.
\n
\nعليك أن تختار اعتمادا على قانون بلدك.
\n
\nحدد %1$s وستتلقى تنبيهات وتحذيرات حول كاميرات السرعة.
\n
\nحدد %2$s. جميع البيانات المتعلقة كاميرات السرعة: التنبيهات، والإشعارات، سيتم حذف نقاط الاهتمام حتى يتم إعادة تثبيت أوسماند تماما.</string>
<string name="routing_attr_length_description">تحديد الارتفاع الأعلى المسموح به على الطرق.</string>
<string name="routing_attr_length_name">حد الطول</string>
@ -3841,7 +3845,7 @@
<string name="pass_whole_track_descr">نقطة المسار للتنقل</string>
<string name="start_of_the_track">بداية المسار</string>
<string name="nearest_point">أقرب نقطة</string>
<string name="attach_to_the_roads">إرفاق الطرق</string>
<string name="attach_to_the_roads">إرفاق بالطرق</string>
<string name="delete_address">حذف عنوان</string>
<string name="add_address">إضافة عنوان</string>
<string name="access_hint_enter_address">أدخل العنوان</string>
@ -3864,22 +3868,22 @@
<string name="open_saved_track">فتح المسار المحفوظ</string>
<string name="shared_string_is_saved">محفوظ</string>
<string name="simplified_track">مسار مبسط</string>
<string name="simplified_track_description">سيتم حفظ خط التوجيه فقط، وسيتم حذف نقاط الطريق.</string>
<string name="simplified_track_description">سيتم حفظ خط الطريق فقط، وسيتم حذف نقاط المسار.</string>
<string name="shared_string_file_name">اسم الملف</string>
<string name="one_point_error">الرجاء إضافة نقطتين على الأقل.</string>
<string name="shared_string_redo">إعادة</string>
<string name="release_3_8">• ميزة تخطيط المسار المحدثة: تسمح باستخدام أنواع الملاحة المختلفة لكل جزء وكذا اظافة طرق
\n
\n• قائمة مظهر جديدة للمسارات: تحديد اللون، السماكة، اظهار أسهم التوجيه، أيقونات الانطلاق والنهاية
\n
\n• تحسين رؤية عقد الدراجات
\n
\n• المسارات قابلة للنقر عليها الان وقائمة سياق بمعلومات أساسية
\n
\n• خوارزميات بحث محسنة
\n
\n• تم تحسين خيارات متابعة المسار خلال الملاحة
\n
<string name="release_3_8">• ميزة تخطيط المسار المحدثة: تسمح باستخدام أنواع الملاحة المختلفة لكل جزء وكذا اظافة طرق
\n
\n• قائمة مظهر جديدة للمسارات: تحديد اللون، السماكة، اظهار أسهم التوجيه، أيقونات الانطلاق والنهاية
\n
\n• تحسين رؤية عقد الدراجات
\n
\n• المسارات قابلة للنقر عليها الان وقائمة سياق بمعلومات أساسية
\n
\n• خوارزميات بحث محسنة
\n
\n• تم تحسين خيارات متابعة المسار خلال الملاحة
\n
\n• تم إصلاح المشكلات المتعلقة باستيراد/تصدير الأوضاع الشخصية
\n
\n</string>
@ -3889,10 +3893,10 @@
<string name="start_finish_icons">أيقونات البدء والانتهاء</string>
<string name="contour_lines_thanks">شكرا لشرائك \"خطوط الكنتور\"</string>
<string name="osm_live_payment_desc_hw">يتم احتساب الاشتراك للفترة المحددة. قم بإلغائه في AppGallery في أي وقت تريد.</string>
<string name="osm_live_payment_subscription_management_hw">يتم الخصم من حساب AppGallery الخاص بك عند تأكيد الشراء.
\n
\nيتم تمديد الاشتراك تلقائيًا ما لم يتم إلغاؤه قبل تاريخ التجديد. سيتم الخصم من الحساب على فترة التجديد (شهر/ ثلاثة أشهر/ سنة) فقط عند تاريخ التجديد.
\n
<string name="osm_live_payment_subscription_management_hw">يتم الخصم من حساب AppGallery الخاص بك عند تأكيد الشراء.
\n
\nيتم تمديد الاشتراك تلقائيًا ما لم يتم إلغاؤه قبل تاريخ التجديد. سيتم الخصم من الحساب على فترة التجديد (شهر/ ثلاثة أشهر/ سنة) فقط عند تاريخ التجديد.
\n
\nيمكنك إدارة وإلغاء الاشتراكات الخاصة بك في إعدادات AppGallery.</string>
<string name="routing_attr_avoid_footways_description">تجنب الممرات</string>
<string name="routing_attr_avoid_footways_name">تجنب الممرات</string>
@ -3910,7 +3914,7 @@
<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>
<string name="message_graph_will_be_available_after_recalculation">في انتظار إعادة حساب الطريق
<string name="message_graph_will_be_available_after_recalculation">في انتظار إعادة حساب الطريق
\nسيتوفر الرسم البياني بعد إعادة الحساب.</string>
<string name="snowmobile_render_descr">للقيادة على الجليد مع طرق ومسارات مخصصة.</string>
<string name="shared_string_graph">رسم بياني</string>
@ -3936,8 +3940,8 @@
<string name="subscription_on_hold_title">اشتراك OsmAnd Live معلق</string>
<string name="login_open_street_map">تسجيل الدخول لخريطة الشارع المفتوح</string>
<string name="login_open_street_map_org">تسجيل الدخول إلى خريطة الشارع المفتوح</string>
<string name="open_street_map_login_mode">قم بتسجيل الدخول لرفع التغييرات الجديدة أو المعدلة.
\n
<string name="open_street_map_login_mode">قم بتسجيل الدخول لرفع التغييرات الجديدة أو المعدلة.
\n
\nإما باستخدام المصادقة أو باستخدام اسم المستخدم وكلمة المرور.</string>
<string name="use_login_password">سجل الدخول باسم المستخدم وكلمة المرور</string>
<string name="login_account">الحساب</string>
@ -3954,7 +3958,7 @@
<string name="osm_edit_comment_note">تعليق ملاحظة OSM</string>
<string name="osm_login_descr">قم بتسجيل الدخول باستخدام طريقة المصادقة الآمنة أو استخدم اسم المستخدم وكلمة المرور.</string>
<string name="shared_string_add_photo">إضافة صورة</string>
<string name="register_on_openplacereviews">سجل في
<string name="register_on_openplacereviews">سجل في
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">قم بتسجيل الدخول إلى موقع مشروع البيانات المفتوحة OpenPlaceReviews.org لرفع المزيد من الصور.</string>
<string name="register_opr_create_new_account">إنشاء حساب جديد</string>
@ -3970,9 +3974,9 @@
<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 - صور على مستوى الشارع ؛
<string name="add_photos_descr">يعرض صورا من عدة مصادر:
\nOpenPlaceReviews - صور POI ؛
\nMapillary - صور على مستوى الشارع ؛
\nالويب / ويكيميديا - صور POI المحددة في بيانات OpenStreetMap.</string>
<string name="select_groups_for_import">حدد المجموعات التي سيتم استيرادها.</string>
<string name="select_items_for_import">حدد العناصر التي سيتم استيرادها.</string>
@ -3982,18 +3986,17 @@
<string name="select_picture">تحديد صورة</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
<string name="lang_de_casual">الألمانية (تقليدية)</string>
<string name="elevation_data">يمكنك استخدام بيانات الارتفاع للنظر في الارتفاع / النزول لرحلتك</string>
<string name="app_mode_light_aircraft">طائرة</string>
<string name="plan_route_join_segments">ربط الأجزاء</string>
<string name="plan_route_split_before">تقسيم قبل</string>
<string name="plan_route_split_after">تقسيم بعد</string>
<string name="plan_route_add_new_segment">إضافة شريحة جديدة</string>
<string name="release_3_9">• خيار مضاف لتصدير واستيراد جميع البيانات بما في ذلك الإعدادات والموارد والأماكن الخاصة بي
\n
\n • مخطط الطريق: الرسوم البيانية لأجزاء المسار مع الطريق ، إضافة القدرة على إنشاء وتحرير مقاطع مسارات متعددة
\n
\n • تمت إضافة طريقة مصادقة آلية OAuth ل OpenStreetMap ، وواجهة مستخدم محسنة لمربعات حوار OSM
\n
<string name="release_3_9">• خيار مضاف لتصدير واستيراد جميع البيانات بما في ذلك الإعدادات والموارد والأماكن الخاصة بي
\n
\n • مخطط الطريق: الرسوم البيانية لأجزاء المسار مع الطريق ، إضافة القدرة على إنشاء وتحرير مقاطع مسارات متعددة
\n
\n • تمت إضافة طريقة مصادقة آلية OAuth ل OpenStreetMap ، وواجهة مستخدم محسنة لمربعات حوار OSM
\n
\n • دعم ألوان مخصصة للمفضلة ونقاط لمسار الطريق
\n
\n</string>
@ -4069,4 +4072,31 @@
<string name="delete_waypoints">حذف نقاط الطريق</string>
<string name="copy_to_map_markers">نسخ لعلامات الخريطة</string>
<string name="copy_to_map_favorites">نسخ للمفضلة</string>
<string name="upload_photo">يتم الرفع</string>
<string name="upload_photo_completed">اكتمال الرفع</string>
<string name="uploading_count">رفع %1$d من %2$d</string>
<string name="uploaded_count">تم رفع %1$d من %2$d</string>
<string name="toast_select_edits_for_upload">تحديد التعديلات للتحميل</string>
<string name="hillshade_slope_contour_lines">التضاريس / الانحدار / الخطوط المحيطية</string>
<string name="open_place_reviews_plugin_description">OpenPlaceReviews هو مشروع يحركه المجتمع حول الأماكن العامة مثل المطاعم والفنادق والمتاحف ونقاط الطريق. يقوم بجمع جميع المعلومات العامة المتعلقة بهم مثل الصور والتعليقات والروابط إلى ارتباط الأنظمة الأخرى OpenStreetMap و Wikipedia.
\n
\nجميع بيانات OpenPlaceReview مفتوحة ومتاحة للجميع: http://openplacereviews.org/data.
\n
\nيمكنك قراءة المزيد على: http://openplacereviews.org</string>
<string name="open_place_reviews">موقع OpenPlaceReviews</string>
<string name="opr_use_dev_url">استخدام test.openplacereviews.org</string>
<string name="login_open_place_reviews">الدخول إلى OpenPlaceReviews</string>
<string name="activity_type_water_name">ماء</string>
<string name="activity_type_winter_name">شتاء</string>
<string name="activity_type_snowmobile_name">الثلج</string>
<string name="activity_type_riding_name">ركوب</string>
<string name="activity_type_racing_name">سباق</string>
<string name="activity_type_mountainbike_name">دراجة جبلية</string>
<string name="activity_type_cycling_name">دراجة</string>
<string name="activity_type_hiking_name">مشي</string>
<string name="activity_type_running_name">الجري</string>
<string name="activity_type_walking_name">مشي</string>
<string name="activity_type_offroad_name">الطرق الوعرة</string>
<string name="activity_type_motorbike_name">دراجة نارية</string>
<string name="activity_type_car_name">سيارة</string>
</resources>

View file

@ -779,7 +779,7 @@
<string name="altitude_descent">Eniş</string>
<string name="altitude_ascent">Yoxuş</string>
<string name="routing_attr_height_obstacles_name">Yüksəklik məlumatlarını istifadə et</string>
<string name="routing_attr_height_obstacles_description">SRTM, ASTER və EU-DEM tərəfindən təmin edilən ərazi yüksəklik məlumatlarını istifadə et.</string>
<string name="rendering_attr_depthContours_description">Dərinlik konturlarını və nöqtələrini göstər.</string>
<string name="rendering_attr_depthContours_name">Dəniz dərinliyi konturları</string>
<string name="rendering_attr_contourDensity_description">Kontur xəttinin sıxlığı</string>
@ -979,7 +979,6 @@
<string name="impassable_road">Yollardan yayın…</string>
<string name="routing_attr_avoid_toll_name">Pullu yollardan yayın</string>
<string name="ending_point_too_far">Son nöqtə ən yaxın yoldan çox uzaqdır.</string>
<string name="snap_to_road_descr">Naviqasiya zamanı mövqeni yollara bərkit.</string>
<string name="snap_to_road">Yola bərkit</string>
<string name="avoid_unpaved">Asfaltsız yollardan yayın</string>
<string name="avoid_toll_roads">Pullu yollardan yayın</string>
@ -1967,7 +1966,6 @@
<string name="save_track_precision_descr">Filtr: Nöqtənin qeydiyyatı üçün minimum dəqiqlik seçin.</string>
<string name="rendering_attr_surfaceIntegrity_name">Yol səthinin keyfiyyəti</string>
<string name="routing_attr_short_way_name">Yanacağa qənaətli yol</string>
<string name="routing_attr_short_way_description">Yanacağa qənaətli yoldan istifadə et (adətən daha qısa).</string>
<string name="access_direction_haptic_feedback_descr">Hədəf nöqtənin istiqamətini titrəmə ilə göstər.</string>
<string name="use_osm_live_routing_description">OsmAnd Live dəyişiklikləri üçün naviqasiyanı aktivləşdir.</string>
<string name="storage_permission_restart_is_required">İndi proqramın xarici yaddaşa yazmasına icazə verilir, lakin bunun üçün yenidən başlatmaq lazımdır.</string>

View file

@ -519,7 +519,7 @@
<string name="shared_string_time">Tiempu</string>
<string name="total_distance">Distancia total</string>
<string name="routing_attr_height_obstacles_name">Usar datos d\'elevación</string>
<string name="routing_attr_height_obstacles_description">Inclúi la elevación del tarrén (pelos datos de SRTM, ASTER y EU-DEM).</string>
<string name="search_another_country">Esbillar otra rexón</string>
<string name="shared_string_change">Camudar</string>
<string name="mapillary_image">Imaxe de Mapillary</string>
@ -1278,7 +1278,6 @@
<string name="speak_poi">PdI cercanos</string>
<string name="routing_attr_avoid_unpaved_name">Evitar carreteres ensin pavimentar</string>
<string name="routing_attr_avoid_motorway_name">Evitar autopistes</string>
<string name="snap_to_road_descr">Axusta la posición a los caminos na navegación.</string>
<string name="snap_to_road">Axustar a la carretera</string>
<string name="keep_informing_never">Namái a mano (toca na flecha)</string>
<string name="keep_informing">Repitir les instrucciones de navegación</string>

View file

@ -562,7 +562,6 @@ Punktaŭ maršrutu %2$s</string>
<string name="avoid_motorway">Paźbiahać aŭtamahіstralaŭ</string>
<string name="auto_zoom_map_descr">Uzrovień pavieličennia zhodna vašaj chutkasci (kali mapa sinchranizujecca z ciapierašnim stanoviščam).</string>
<string name="auto_zoom_map">Aŭtamatyčnaje pamianšeńnie/pavieličeńnie</string>
<string name="snap_to_road_descr">Pryviazvacca da daroh padčas navihacyi.</string>
<string name="snap_to_road">Pryviazvacca da daroh</string>
<string name="interrupt_music_descr">Halasavyja padkazki prypyniajuć muzyku, a nie toĺki pryhlušajuć jaje.</string>
<string name="interrupt_music">Pierapynieńnie muzykі</string>
@ -1983,7 +1982,6 @@ Praparcyjnaj pamiacі %4$s MB (Abmiežavańnie Android %5$s MB, Dalvik %6$s MB).
<string name="update_all_maps_now">Abnavić usie mapy zaraz?</string>
<string name="clear_tile_data">Ačyścіć keš siecіŭnych mapaŭ</string>
<string name="routing_attr_short_way_name">Paliŭna-aščadny maršrut</string>
<string name="routing_attr_short_way_description">Različvaje paliva-aščadny maršrut (zvyčajna najkaraciejšy).</string>
<string name="replace_favorite_confirmation">Vy sapraŭdy chočacie zamianić upadabanaje %1$s?</string>
<string name="rendering_attr_hideOverground_name">Nadziemnyja abjekty</string>
<string name="shared_string_change">Źmianіć</string>
@ -2191,7 +2189,7 @@ Praparcyjnaj pamiacі %4$s MB (Abmiežavańnie Android %5$s MB, Dalvik %6$s MB).
<string name="mapillary_image">Vyjava Mapillary</string>
<string name="mapillary_widget_descr">Dazvaliaje chutki ŭniosak ŭ Mapillary.</string>
<string name="relief_smoothness_factor_descr">Pieravažny reĺjef: raŭninny ci harysty.</string>
<string name="routing_attr_height_obstacles_description">Faktar vyšyni ziamnoj pavierchni (danyja z SRTM, ASTER i EU-DEM).</string>
<string name="rendering_attr_depthContours_description">Pakazvać kontury i punkty hlybini.</string>
<string name="rendering_attr_contourDensity_description">Ščyĺnasć haryzantaliaŭ</string>
<string name="rendering_attr_contourWidth_description">Taŭščynia haryzantaliaŭ (izahipsy)</string>

View file

@ -444,7 +444,6 @@
<string name="avoid_motorway">Awtodróhi wobeńć</string>
<string name="auto_zoom_map_descr">Přiměrja wulkosć karty wotpowědujo aktualnej spěšnosći (karta so z tuchwilnym stejišćom synchronizuje).</string>
<string name="auto_zoom_map">Awtomatiski zoom</string>
<string name="snap_to_road_descr">W běhu nawigacije poziciski dypk na dróhach zdźeržować.</string>
<string name="snap_to_road">Na dróze wostać</string>
<string name="interrupt_music_descr">Připowědźenje přetorhnje hudźbu.</string>
<string name="interrupt_music">Wothrawanje hudźby přetorhować</string>
@ -1360,7 +1359,6 @@
<string name="give_permission">Dowolić</string>
<string name="allow_access_location">Přistup k stejišću dowolić</string>
<string name="routing_attr_short_way_name">Naftu lutowacy puć</string>
<string name="routing_attr_short_way_description">Naftu lutowacy puć wužić (zwjetša krótši).</string>
<string name="confirmation_to_delete_history_items">Wubrane objekty z archiwa wotstronić?</string>
<string name="select_map_marker">Chorhojčku wubrać</string>
<string name="map_markers_other">Druhe chorhojčki</string>

View file

@ -3582,7 +3582,7 @@
<string name="poi_historic_tank">Танк</string>
<string name="poi_charcoal_pile">Куча вуголля</string>
<string name="poi_hookah_lounge">Кальянная</string>
<string name="poi_source_biomass">Крыніца энергіі: біямаса</string>
<string name="poi_generator_source_biomass">Крыніца энергіі: біямаса</string>
<string name="poi_snowmobile_filter">Даступна для снегаходаў</string>
<string name="poi_access_bus">Даступна для аўтобусаў</string>
<string name="poi_access_caravan">Даступна для прычапных дамоў на колах</string>
@ -3823,5 +3823,11 @@
<string name="poi_recycling_small_electrical_appliances">Маленькія электрапрыборы</string>
<string name="poi_beehive">Вулей</string>
<string name="poi_nuts">Крама арэхаў</string>
<string name="poi_fuel_lng"></string>
<string name="poi_fuel_lng"/>
<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

@ -88,7 +88,7 @@
<string name="files_limit">засталося %1$d файлаў</string>
<string name="available_downloads_left">Засталося %1$d файлаў для спампоўвання</string>
<string name="install_paid">Поўная версія</string>
<string name="cancel_route">Скасаваць маршрут</string>
<string name="cancel_route">Скасаваць маршрут\?</string>
<string name="cancel_navigation">Спыніць навігацыю</string>
<string name="clear_destination">Выдаліць месца прызначэння</string>
<string name="download_using_mobile_internet">Wi-Fi не падлучаны. Выкарыстаць дзейнае падлучэнне да Інтэрнэту для спампоўвання?</string>
@ -232,7 +232,6 @@
<string name="avoid_motorway">Без аўтамагістраляў</string>
<string name="auto_zoom_map_descr">Узровень павелічэння згодна вашай хуткасці (калі мапа сінхранізуецца з цяперашнім становішчам).</string>
<string name="auto_zoom_map">Аўтаматычнае памяншэнне/павелічэнне</string>
<string name="snap_to_road_descr">Прывязвацца да дарог падчас навігацыі.</string>
<string name="snap_to_road">Прывязвацца да дарог</string>
<string name="osmand_play_title_30_chars">OsmAnd Мапы і навігацыя</string>
<string name="osmand_short_description_80_chars">Прагляд глабальнай мабільнай мапы і навігатар для аўтаномных і сеціўных мапаў OSM</string>
@ -515,7 +514,7 @@
<string name="use_fluorescent_overlays">Флюарэсцэнтныя пласты</string>
<string name="use_fluorescent_overlays_descr">Ужываць флюарэсцэнтныя колеры для слядоў і шляхоў.</string>
<string name="offline_edition">Пазасеціўнае рэдагаванне</string>
<string name="offline_edition_descr">Заўсёды выкарыстоўваць аўтаномнае рэдагаванне.</string>
<string name="offline_edition_descr">Калі выкарыстоўваецца рэдагаванне на прыладзе, то змены будуць захаваныя лакальна і загружаныя на сервер толькі па запыце, інакш яны будуць загружацца неадкладна.</string>
<string name="update_poi_does_not_change_indexes">Змены цікавых пунктаў (POI) у праграме не паўплываюць на cпампаваныя файлы мапаў, змены захоўваюцца як файлы на вашай прыладзе.</string>
<string name="local_openstreetmap_uploading">Запампоўка…</string>
<string name="local_openstreetmap_were_uploaded">{0} POI/нататкі запампаваныя</string>
@ -1574,7 +1573,7 @@
<string name="routing_attr_height_name">Абмежаванне па вышыні</string>
<string name="routing_attr_height_description">Пазначыць вышыню транспартнага сродку для разліку маршруту.</string>
<string name="use_fast_recalculation">Разумны пераразлік маршруту</string>
<string name="use_fast_recalculation_desc">Пераразлічваць толькі пачатак маршруту. Падыходзіць для доўгіх паездак.</string>
<string name="use_fast_recalculation_desc">Пераразлічваць толькі пачатак маршруту. Карысна для доўгіх паездак.</string>
<string name="shared_string_logoff">Выйсці</string>
<string name="rendering_value_disabled_name">Выключана</string>
<string name="rendering_value_walkingRoutesOSMC_name">Афарбоўка па пешаходнаму сімвалу OSMC</string>
@ -1985,7 +1984,7 @@
<string name="map_widget_bearing">Адносны азімут</string>
<string name="map_widget_magnetic_bearing">Магнітны азімут</string>
<string name="use_osm_live_routing">Навігацыя OsmAnd Live</string>
<string name="access_no_destination">Пункт прызначэння не зададзены</string>
<string name="access_no_destination">Убудова спецыяльных магчымасцей: Пункт прызначэння не зададзены</string>
<string name="follow_us">Сачыце за намі</string>
<string name="access_direction_audio_feedback">Гукавая напрамкі</string>
<string name="access_direction_audio_feedback_descr">Індыцыраваць гукам кірунак на мэтавы пункт.</string>
@ -2028,7 +2027,6 @@
<string name="shared_string_change">Змяніць</string>
<string name="get_started">Пачаць</string>
<string name="routing_attr_short_way_name">Паліўна-ашчадны маршрут</string>
<string name="routing_attr_short_way_description">Разлічвае паліва-ашчадны маршрут (звычайна найкарацейшы).</string>
<string name="replace_favorite_confirmation">Вы сапраўды хочаце замяніць улюбёную мясціну %1$s\?</string>
<string name="update_all_maps_now">Абнавіць усе мапы зараз?</string>
<string name="clear_tile_data">Ачысціць кэш сеціўных мапаў</string>
@ -2196,7 +2194,7 @@
<string name="shared_string_time">Час</string>
<string name="total_distance">Агульная даўжыня</string>
<string name="routing_attr_height_obstacles_name">Выкарыстоўваць даныя вышыні</string>
<string name="routing_attr_height_obstacles_description">Фактар вышыні зямной паверхні (даныя з SRTM, ASTER і EU-DEM).</string>
<string name="auto_split_recording_title">Аўтаматычнае дзяленне запісаў пасля перапынку</string>
<string name="auto_split_recording_descr">Пачаць новы сегмент пасля 6-хвіліннага перапынку, новы след — пасля 2-гадзіннага перапынку, ці новы файл пасля доўгага перапынку (як змяніляся дата).</string>
<string name="lang_ber">Берберская</string>
@ -2483,7 +2481,7 @@
<string name="average">Сярэдняя</string>
<string name="of">%1$d з %2$d</string>
<string name="ascent_descent">Пад\'ём/Cпуск</string>
<string name="moving_time">Час руху</string>
<string name="moving_time">Час у руху</string>
<string name="max_min">Макс/Мін</string>
<string name="min_max">Мін/Макс</string>
<string name="rendering_value_translucent_pink_name">Паўпразрысты ружовы</string>
@ -2671,7 +2669,7 @@
<string name="first_intermediate_dest_description">Дадае першы прыпынак</string>
<string name="subsequent_dest_description">Перамясціць прызначэнне далей і стварыць яго</string>
<string name="show_closed_notes">Паказаць закрытыя нататкі</string>
<string name="switch_osm_notes_visibility_desc">Паказаць/схаваць OSM-нататкі на мапе.</string>
<string name="switch_osm_notes_visibility_desc">Паказаць або схаваць OSM-нататкі на мапе.</string>
<string name="gpx_file_desc">GPX падыходзіць для экспарту ў JOSM і іншыя OSM-рэдактары.</string>
<string name="osc_file_desc">OSC падыходзіць для экспарту ў OpenStreetMap.</string>
<string name="shared_string_gpx_file">GPX-файл</string>
@ -3159,9 +3157,9 @@
<string name="osmand_default_routing">Навігацыя OsmAnd</string>
<string name="third_party_routing_type">Іншая навігацыя</string>
<string name="quick_action_need_to_add_item_to_list">Дадаць прынамсі адзін элемент у спіс \"Хуткае дзеянне\" у наладах</string>
<string name="routing_attr_piste_type_downhill_name">Альпійская/горныя лыжы</string>
<string name="routing_attr_piste_type_downhill_name">Альпійскія і горныя лыжы</string>
<string name="routing_attr_piste_type_downhill_description">Схілы для горных лыжаў і доступ да пад\'ёмнікаў.</string>
<string name="routing_attr_piste_type_nordic_name">Лыжныя гонкі / паўночныя тыпы</string>
<string name="routing_attr_piste_type_nordic_name">Бегавыя і скандынаўскія лыжы</string>
<string name="routing_attr_piste_type_nordic_description">Трасы для лыжных гонак і іх паўночных тыпаў.</string>
<string name="routing_attr_allow_intermediate_name">Дазволіць прамежкавыя маршруты</string>
<string name="routing_attr_allow_intermediate_description">Больш складаныя трасы са стромкімі ўчасткамі. Пэўныя перашкоды, якіх варта пазбягаць.</string>
@ -3429,9 +3427,9 @@
<string name="osmand_purchases_item">Пакупкі OsmAnd</string>
<string name="legend_item_description">Даведка па знаках мапы.</string>
<string name="navigation_profiles_item">Профілі навігацыі</string>
<string name="create_edit_poi">Стварыць/Рэдагаваць POI</string>
<string name="create_edit_poi">Стварыць ці Рэдагаваць POI</string>
<string name="parking_positions">Месца паркоўкі</string>
<string name="add_edit_favorite">Дадаць / рэдагаваць улюбёнае</string>
<string name="add_edit_favorite">Дадаць ці рэдагаваць улюбёнае</string>
<string name="reset_deafult_order">Аднавіць прадвызначаны парадак элементаў</string>
<string name="back_to_editing">Вярнуцца да рэдагавання</string>
<string name="quick_action_transport_show">Паказаць грамадскі транспарт</string>
@ -3439,7 +3437,7 @@
<string name="shared_string_add_profile">Дадаць профіль</string>
<string name="n_items_of_z">%1$s з %2$s</string>
<string name="download_slope_maps">Схілы</string>
<string name="quick_action_show_hide_terrain">Паказаць/схаваць рэльеф</string>
<string name="quick_action_show_hide_terrain">Паказаць ці схаваць рэльеф</string>
<string name="quick_action_terrain_hide">Схаваць рэльеф</string>
<string name="quick_action_terrain_show">Паказаць рэльеф</string>
<string name="delete_description">Выдаліць апісанне</string>
@ -3517,7 +3515,7 @@
<string name="change_application_profile">Змяніць профіль праграмы</string>
<string name="index_item_world_basemap_detailed">Аглядная мапа свету (падрабязная)</string>
<string name="quick_action_transport_hide">Схаваць грамадскі транспарт</string>
<string name="quick_action_show_hide_transport">Паказаць/схаваць грамадскі транспарт</string>
<string name="quick_action_show_hide_transport">Паказаць ці схаваць грамадскі транспарт</string>
<string name="recalculate_route_in_deviation">Пералічыць маршрут у выпадку адхілення</string>
<string name="shared_string_uninstall">Выдаліць</string>
<string name="vessel_width_limit_description">Вызначце шырыню судна, каб пазбягаць вузкіх мастоў</string>
@ -3531,7 +3529,7 @@
<string name="item_deleted">Выдалена: %1$s</string>
<string name="speed_cameras_restart_descr">Перазапусціце праграму для поўнага выдалення даных камер кантролю хуткасці.</string>
<string name="use_volume_buttons_as_zoom_descr">Кіраванне ўзроўнем маштабавання мапы пры дапамозе кнопак рэгулявання гучнасці.</string>
<string name="plugin_wikipedia_description">Інфармацыя пра славутасці з Вікіпедыі. Гэта ваш кішэнны даведнік - уключыце ўбудову вікіпедыі і чытайце артыкулы пра аб’екты вакол вас.</string>
<string name="plugin_wikipedia_description">Інфармацыя пра славутасці з Вікіпедыі, вашага кішэннага даведніка з артыкуламі пра аб’екты вакол вас.</string>
<string name="app_mode_enduro_motorcycle">Матацыкл Эндура</string>
<string name="app_mode_motor_scooter">Мотаролер</string>
<string name="shared_string_uninstall_and_restart">Выдаліць і перазапусціць</string>
@ -3549,8 +3547,8 @@
<string name="open_saved_track">Адкрыць захаваны след</string>
<string name="shared_string_is_saved">захавана</string>
<string name="save_track_to_gpx">Аўтаматычна запісваць след падчас навігацыі</string>
<string name="disable_recording_once_app_killed_descrp">Запіс GPX прыпыніцца, калі праграма будзе забітая (праз надаўнія праграмы). (Апавяшчэнне ў вобласці падказак Android пра фонавы рэжым OsmAnd знікне.)</string>
<string name="save_global_track_interval_descr">Вызначце інтэрвал запісу следу (уключаецца праз віджэт запісу GPX на мапе).</string>
<string name="disable_recording_once_app_killed_descrp">Спыненне запісу GPX, падчас прымусовага спынення (праз апошнія прыкладанні). (Апавяшчэнне ў вобласці падказак Android пра фонавы рэжым OsmAnd знікне.)</string>
<string name="save_global_track_interval_descr">Вызначце інтэрвал запісу трэка (уключаецца праз віджэт \"Запіс паездкі\" на мапе).</string>
<string name="monitoring_control_start">ЗАПІС</string>
<string name="shared_string_done">Завершана</string>
<string name="shared_string_save_as_gpx">Захаваць як новы файл следу</string>
@ -3655,7 +3653,7 @@
<string name="previous_segment">Папярэдні сегмент</string>
<string name="all_previous_segments">Усе папярэднія сегменты</string>
<string name="only_selected_segment_recalc">Толькі абраны сегмент пералічыцца з выкарыстаннем абранага профілю.</string>
<string name="osm_edits_view_descr">Прагляд вашых правак альбо хібаў OSM, яшчэ не адпраўленых у %1$s. Запампаваныя пункты больш не будуць паказвацца.</string>
<string name="osm_edits_view_descr">Прагледзець усе вашы яшчэ не загружаныя паўкі OSM або памылкі ў %1$s. Ужо загружаныя змены больш не будуць паказвацца.</string>
<string name="live_monitoring_adress_descr">Пазначце сеціўны адрас з наступнымі параметрамі: lat={0}, lon={1}, timestamp={2}, hdop={3}, altitude={4}, speed={5}, bearing={6}.</string>
<string name="monitoring_min_distance_descr_recommendation">Рэкамендацыя: наладка ў 5 метраў можа вас задаволіць, калі вам не патрэбна фіксаваць больш кароткія перамяшчэнні, і вы не хочаце відавочна збіраць даныя ў стане спакою.</string>
<string name="monitoring_min_distance_descr_side_effect">Пабочныя эфекты: перыяды ў стане спакою не запісваюцца наогул альбо па адным пункце кожны. Невялікія (у рэальным свеце) перамяшчэнні (напрыклад, убок, што адзначаюць магчымы паварот у вашай паездцы) могуць быць адфільтраваныя. Файл змяшчае менш інфармацыі для наступнай апрацоўкі і мае горшую статыстыку, адфільтроўваючы відавочна лішнія пункты падчас запісу. Пры гэтым патэнцыйна захоўваюцца артэфакты, выкліканыя дрэнным прыёмам альбо эфектамі модуля GPS.</string>
@ -3861,7 +3859,7 @@
<string name="shared_string_redo">Вярнуць</string>
<string name="release_3_8">• Абноўлена функцыя планавання маршруту. З’явілася магчымасць выкарыстоўваць розныя тыпы навігацыі для кожнага сегмента і прымацоўваць сляды
\n
\n • Новае меню \"Выгляд\" для слядоў. Можна абраць колер, таўшчыню, уключыць стрэлкі кірунку, адзнакі старту / фінішу
\n • Новае меню \"Выгляд\" для слядоў. Можна абраць колер, таўшчыню, уключыць стрэлкі кірунку, адзнакі старту і фінішу
\n
\n • Палепшана бачнасць роварных вузлоў.
\n
@ -3892,12 +3890,199 @@
<string name="use_native_pt">Натыўны грамадскі транспарт (у распрацоўцы)</string>
<string name="perform_oauth_authorization">Увайсці праз OAuth</string>
<string name="use_two_phase_routing">Выкарыстоўваць 2-фазны алгарытм маршрутызацыі A *</string>
<string name="use_native_pt_desc">Перайсці на разлік маршруту грамадскага транспарту на Java (бяспечны)</string>
<string name="use_native_pt_desc">Перайсці на разлік маршруту грамадскага транспарту з дапамогай Java (бяспечны)</string>
<string name="file_already_imported">Файл ужо імпартаваны ў OsmAnd</string>
<string name="start_finish_icons">Значкі старту і фінішу</string>
<string name="perform_oauth_authorization_description">Увайдзіце праз OAuth, каб выкарыстоўваць функцыі osmedit</string>
<string name="perform_oauth_authorization_description">Выканайце ўваход з дапамогай OAuth, каб выкарыстоўваць функцыі osmedit</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="use_live_public_transport">Даныя OsmAnd Live</string>
<string name="use_live_routing">Даныя OsmAnd Live</string>
<string name="voice_prompts_timetable">Час галасавых падказак</string>
<string name="lang_de_casual">Нямецкая (неафіцыйная)</string>
<string name="navigate_point_mgrs">MGRS</string>
<string name="snowmobile_render_descr">Для язды на снегаходах па вызначаных дарогах і трасах.</string>
<string name="navigate_point_format_mgrs">MGRS</string>
<string name="mgrs_format_descr">OsmAnd выкарыстоўвае MGRS, які падобны да фармату UTM NATO.</string>
<string name="shared_string_graph">Графік</string>
<string name="message_need_calculate_route_before_show_graph">Даныя %1$s даступныя толькі для дарог, разлічылі маршрут, выкарыстоўваючы \"Маршрут паміж кропкамі\", каб убачыць графікі.</string>
<string name="message_graph_will_be_available_after_recalculation">Калі ласка пачакайце.
\nГрафік будзе даступны пасля пераразліку маршруту.</string>
<string name="shared_string_local_maps">Лакальныя мапы</string>
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
<string name="app_mode_gap">Разрыў</string>
<string name="icon_group_amenity">Выгады</string>
<string name="icon_group_special">Спецыяльныя</string>
<string name="icon_group_transport">Транспарт</string>
<string name="icon_group_service">Паслугі</string>
<string name="icon_group_symbols">Сімвалы</string>
<string name="icon_group_sport">Спорт</string>
<string name="icon_group_emergency">Экстраныя службы</string>
<string name="icon_group_travel">Вандроўка</string>
<string name="message_you_need_add_two_points_to_show_graphs">Дадайце прынамсі два пункты</string>
<string name="login_open_street_map">Увайсці ў OpenStreetMap</string>
<string name="login_open_street_map_org">Увайсці ў OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Увайсці з дапамогай OpenStreetMap</string>
<string name="open_street_map_login_mode">Вам неабходна ўвайсці ў сістэму, каб загрузіць новыя або адрэдагаваныя змены.
\n
\nВы можаце ўвайсці, выкарыстоўваючы бяспечны метад OAuth, або з дапамогай сваіх імя карыстальніка і пароля.</string>
<string name="use_login_password">Выкарыстоўваць імя карыстальніка і пароль</string>
<string name="login_account">Уліковы запіс</string>
<string name="user_login">Аўтарызавацца</string>
<string name="manage_subscription">Кіраванне падпіскай</string>
<string name="subscription_payment_issue_title">Націсніце кнопку, каб перайсці ў налады падпіскі Google Play і выправіць спосаб аплаты.</string>
<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="markers_history">Гісторыя маркераў</string>
<string name="send_files_to_openstreetmap">Адправіць файл GPX на OpenStreetMap</string>
<string name="enter_text_separated">Увадзіце тэгі праз коску.</string>
<string name="gpx_upload_public_visibility_descr">\"Агульнадаступны\" азначае, што трасіроўка публічна адлюстроўваецца ў вашых GPS-трасіроўках і ў агульнадаступных спісах GPS-трасіровак, а таксама ў агульнадаступным спісе трасіровак з пазнакамі часу ў неапрацаваным выглядзе. Даныя, прадстаўленыя праз API, не спасылаюцца на вашу старонку трасіроўкі. Меткі часу трасіроўкі недаступныя праз агульнадаступны API GPS і не размяшчаюцца ў храналагічным парадку.</string>
<string name="gpx_upload_private_visibility_descr">\"Прыватны\" азначае, што след не з\'явіцца ў любым агульнадаступным спісе, але кантрольныя пункты з яго даступныя ў адвольным парадку праз агульнадаступны GPS API без пазнак часу.</string>
<string name="gpx_upload_identifiable_visibility_descr">\"Ідэнтыфікаваны\" азначае, што трасіроўка будзе публічна адлюстроўвацца ў вашай GPS-трасіроўкі і ў агульнадаступных спісах GPS-трасіровак, гэта значыць, што іншыя карыстальнікі змогуць загрузіць неапрацаваны след і звязаць яго з вашым імем карыстальніка. Агульнадаступныя даныя трасіроўкі з GPS API, якія абслугоўваюцца з дапамогай API пунктаў адсочвання, спасылаюцца на пачатковую старонку трасіроўкі.</string>
<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="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_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="cannot_upload_image">Немагчыма загрузіць выяву, паўтарыце спробу пазней</string>
<string name="select_picture">Выберыце выявы</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="select_groups_for_import">Выберыце групы, якія трэба імпартаваць.</string>
<string name="select_items_for_import">Выберыце элементы, якія трэба імпартаваць.</string>
<string name="add_to_mapillary">Дадаць да Mapillary</string>
<string name="add_to_opr">Дадаць да OpenPlaceReviews</string>
<string name="use_dev_url_descr">Пераключыцца на выкарыстанне dev.openstreetmap.org замест openstreetmap.org для тэсціравання адпраўкі нататак OSM / POI / GPX.</string>
<string name="use_dev_url">Выкарыстоўваць dev.openstreetmap.org</string>
<string name="add_photos_descr">OsmAnd паказвае фотаздымкі з некалькіх крыніц;
\nOpenPlaceReviews - фотаздымкі POI;
\nMapillary - выявы вуліц;
\nWeb / Wikimedia - фотаздымкі POI паводле дадзеных з OpenStreetMap.</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
<string name="elevation_data">Вы можаце выкарыстоўваць даныя пра вышыні, каб улічыць ўздымы/спускі падчас вашай паездкі</string>
<string name="app_mode_light_aircraft">Лёгкі самалёт</string>
<string name="plan_route_join_segments">Аб\'яднаць сегменты</string>
<string name="plan_route_split_before">Падзяліць да</string>
<string name="plan_route_split_after">Падзяліць пасля</string>
<string name="plan_route_add_new_segment">Дадаць новы сегмент</string>
<string name="profile_type_user_string">Профіль карыстальніка</string>
<string name="release_3_9">"• Дададзена магчымасць экспарту і імпарту ўсіх даных, уключаючы налады, рэсурсы, мае месцы.
\n
\n • Планаванне маршруту: графікі для сегментаў трэка з маршрутам, дададзена магчымасць ствараць і рэдагаваць некалькі сегментаў трэка.
\n
\n • Дададзены OAuth метад аўтэнтыфікацыі для OpenStreetMap, палепшаны інтэрфейс дыялогаў OSM.
\n
\n • Падтрымка карыстальніцкіх колераў для абранага і маршрутных пунктаў трэка.
\n
\n"</string>
<string name="reverse_all_points">Вярнуць назад усе пункты</string>
<string name="profile_by_default_description">Выберыце профіль, які будзе выкарыстоўвацца падчас запуску прыкладання.</string>
<string name="shared_string_last_used">Апошні раз выкарыстоўвалася</string>
<string name="routing_attr_prefer_hiking_routes_description">Аддаваць перавагу пешаходным маршрутам</string>
<string name="routing_attr_prefer_hiking_routes_name">Аддаваць перавагу пешаходным маршрутам</string>
<string name="routing_attr_allow_streams_description">Дазвольце ручаі і меліярацыйныя каналы</string>
<string name="routing_attr_allow_streams_name">Дазвольце ручаі і меліярацыйныя каналы</string>
<string name="routing_attr_allow_intermittent_description">Дазволіць перарывістыя водныя маршруты</string>
<string name="routing_attr_allow_intermittent_name">Дазволіць перарывістыя водныя маршруты</string>
<string name="add_online_routing_engine">Дадаць анлайн-маршрутызатар</string>
<string name="edit_online_routing_engine">Рэдагаваць анлайн-маршрутызатар</string>
<string name="shared_string_subtype">Падтып</string>
<string name="shared_string_vehicle">Транспартны сродак</string>
<string name="shared_string_api_key">Ключ API</string>
<string name="shared_string_server_url">URL-адрас сервера</string>
<string name="shared_string_enter_param">Увядзіце параметр</string>
<string name="keep_it_empty_if_not">Пакінуць пустым, калі не</string>
<string name="online_routing_example_hint">URL-адрас з усімі параметрамі будзе выглядаць так:</string>
<string name="test_route_calculation">Тэст разліку маршруту</string>
<string name="routing_engine_vehicle_type_driving">Ваджэнне</string>
<string name="routing_engine_vehicle_type_foot">Пешшу</string>
<string name="routing_engine_vehicle_type_bike">Ровар</string>
<string name="routing_engine_vehicle_type_car">Аўтамабіль</string>
<string name="copy_address">Капіраваць адрас</string>
<string name="online_routing_engine">Анлайн-маршрутызатар</string>
<string name="online_routing_engines">Анлайн-маршрутызатары</string>
<string name="shared_string_folders">Папкі</string>
<string name="select_folder">Выберыце папку</string>
<string name="select_folder_descr">Выберыце папку або стварыце новую</string>
<string name="shared_string_empty">Пуста</string>
<string name="analyze_by_intervals">Аналіз паводле інтэрвалаў</string>
<string name="upload_to_openstreetmap">Выгрузіць на OpenStreetMap</string>
<string name="edit_track">Змяніць трэк</string>
<string name="rename_track">Перайменаваць трэк</string>
<string name="change_folder">Змяніць папку</string>
<string name="shared_string_sec">сек.</string>
<string name="announcement_time_passing">Пры праходжанні</string>
<string name="announcement_time_approach">Набліжэнне</string>
<string name="announcement_time_prepare_long">Заўчасная падрыхтоўка</string>
<string name="announcement_time_prepare">Падрыхтавацца</string>
<string name="announcement_time_off_route">Па-за маршрутам</string>
<string name="announcement_time_arrive">Прыбыццё ў пункт прызначэння</string>
<string name="shared_string_turn">Паварот</string>
<string name="announcement_time_intervals">Інтэрвалы часу і адлегласці</string>
<string name="profile_type_osmand_string">Профіль OsmAnd</string>
<string name="announcement_time_title">Час абвяшчэння</string>
<string name="announcement_time_descr">Час розных галасавых падказак залежыць ад тыпу запыту, бягучай хуткасці навігацыі і хуткасці навігацыі па змаўчанні.</string>
<string name="start_recording">Пачаць запіс</string>
<string name="show_track_on_map">Паказаць трэк на мапе</string>
<string name="routing_engine_vehicle_type_wheelchair">Інвалідны вазок</string>
<string name="routing_engine_vehicle_type_hiking">Пешы турызм</string>
<string name="routing_engine_vehicle_type_walking">Хадзьба</string>
<string name="routing_engine_vehicle_type_cycling_electric">Электраровар</string>
<string name="routing_engine_vehicle_type_cycling_mountain">Горны ровар</string>
<string name="routing_engine_vehicle_type_cycling_road">Дарожны ровар</string>
<string name="routing_engine_vehicle_type_cycling_regular">Звычайны ровар</string>
<string name="routing_engine_vehicle_type_hgv">Грузавік</string>
<string name="routing_engine_vehicle_type_small_truck">Малы грузавік</string>
<string name="routing_engine_vehicle_type_truck">Грузавік</string>
<string name="routing_engine_vehicle_type_scooter">Скутэр</string>
<string name="routing_engine_vehicle_type_racingbike">Гоначны ровар</string>
<string name="routing_engine_vehicle_type_mtb">Горны ровар</string>
<string name="message_server_error">Памылка сервера: %1$s</string>
<string name="message_name_is_already_exists">Назва ўжо існуе</string>
<string name="delete_online_routing_engine">Выдаліць анлайн-маршрутызатар\?</string>
<string name="context_menu_read_full">Чытаць цалкам</string>
<string name="context_menu_edit_descr">Змяніць апісанне</string>
<string name="delete_waypoints">Выдаліць маршрутныя пункты</string>
<string name="copy_to_map_markers">Капіраваць да пазнак мапы</string>
<string name="copy_to_map_favorites">Капіраваць да абранага</string>
<string name="upload_photo">Выгрузка</string>
<string name="upload_photo_completed">Выгрузка завершана</string>
<string name="uploading_count">Выгрузка %1$d з %2$d</string>
<string name="uploaded_count">Выгружана %1$d з %2$d</string>
<string name="toast_select_edits_for_upload">Выберыце змены для выгрузкі</string>
<string name="hillshade_slope_contour_lines">Рэльеф мясцовасці / Схілы / Гарызанталі</string>
<string name="open_place_reviews_plugin_description">OpenPlaceReviews — гэта грамадскі праект пра месцы агульнага карыстання, такія як, рэстараны, гатэлі, музеі, пункты шляху. Ён збірае ўсе агульнадаступныя даныя пра іх, такія як, выявы, водгукі, спасылкі на іншыя сістэмы, спасылкі OpenStreetMap, Вікіпедыя.
\n
\nУсе даныя OpenPlaceReview з\'яўляюцца адкрытымі і даступны тут: http://openplacereviews.org/data.
\n
\nВы можаце прачытаць больш па адрасу: http://openplacereviews.org</string>
<string name="open_place_reviews">OpenPlaceReviews</string>
<string name="opr_use_dev_url">Выкарыстаць test.openplacereviews.org</string>
<string name="login_open_place_reviews">Увайсці ў OpenPlaceReviews</string>
<string name="activity_type_water_name">Вада</string>
<string name="activity_type_winter_name">Зіма</string>
<string name="activity_type_snowmobile_name">Снегаход</string>
<string name="activity_type_riding_name">Язда</string>
<string name="activity_type_racing_name">Гонка</string>
<string name="activity_type_mountainbike_name">Горны ровар</string>
<string name="activity_type_cycling_name">Язда на ровары</string>
<string name="activity_type_hiking_name">Пешы турызм</string>
<string name="activity_type_running_name">Бег</string>
<string name="activity_type_walking_name">Пешаход</string>
<string name="activity_type_offroad_name">Пазадарожнік</string>
<string name="activity_type_motorbike_name">Матацыкл</string>
<string name="activity_type_car_name">Аўтамабіль</string>
</resources>

View file

@ -208,7 +208,6 @@
<string name="avoid_motorway">Без магистрали</string>
<string name="auto_zoom_map_descr">Авто-мащабиране съобразно вашата скорост (само за синхронизирани карти)</string>
<string name="auto_zoom_map">Авто-мащабиране</string>
<string name="snap_to_road_descr">Позицията да се придържа към пътя по време на пътуване</string>
<string name="snap_to_road">Придържай мястото към пътя</string>
<string name="osmand_play_title_30_chars">OsmAnd за карти и навигация</string>
<string name="osmand_short_description_80_chars">Мобилни карти и навигация от OSM</string>
@ -1925,7 +1924,6 @@
<string name="update_all_maps_now">Обновяване на всички карти сега\?</string>
<string name="clear_tile_data">Изчистване на всички плочки</string>
<string name="routing_attr_short_way_name">Икономичен маршрут</string>
<string name="routing_attr_short_way_description">Използване на икономичен маршрут (обичайно по-кратък).</string>
<string name="replace_favorite_confirmation">Наистина ли искате да заместите %1$s?</string>
<string name="rendering_attr_hideOverground_name">Надземни обекти</string>
<string name="osm_live_payment_desc">Абонаментна такса се начислява всеки месец. Можете да я отмените от Google Play по всяко време.</string>

View file

@ -641,7 +641,6 @@
<string name="avoid_motorway">Sense autopistes</string>
<string name="auto_zoom_map_descr">Nivell de zoom en funció de la velocitat (mentre el mapa estigui sincronitzat amb la posició actual).</string>
<string name="auto_zoom_map">Zoom automàtic del mapa</string>
<string name="snap_to_road_descr">Ajusta la posició a les carreteres durant la navegació.</string>
<string name="snap_to_road">Desplaça a la carretera</string>
<string name="asap">MCP</string>
<string name="prefs_plugins_descr">Els connectors activen els paràmetres del mode expert i de funcionalitats addicionals.</string>
@ -1987,7 +1986,6 @@
<string name="shared_string_change">Modifica</string>
<string name="get_started">Comença</string>
<string name="routing_attr_short_way_name">Ruta amb menys consum</string>
<string name="routing_attr_short_way_description">Utilitza la ruta de menys consum (normalment la més curta).</string>
<string name="replace_favorite_confirmation">Confirmeu que voleu substituir el Preferit %1$s?</string>
<string name="update_all_maps_now">Voleu actualitzar tots els mapes ara mateix?</string>
<string name="clear_tile_data">Esborra totes les tessel·les</string>
@ -2164,7 +2162,7 @@
<string name="rendering_attr_depthContours_description">Mostra isòbates i fondàries puntuals.</string>
<string name="rendering_attr_depthContours_name">Isòbates</string>
<string name="routing_attr_height_obstacles_name">Utilitza les cotes d\'elevació</string>
<string name="routing_attr_height_obstacles_description">Revisa l\'elevació del terreny (mitjançant dades SRTM, ASTER i EU-DEM).</string>
<string name="route_altitude">Alçat de la ruta</string>
<string name="altitude_descent">Descens</string>
<string name="altitude_ascent">Ascens</string>
@ -3813,7 +3811,6 @@
\nWeb / Wikimedia: fotos dels PDIs d\'OpenStreetMap.</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
<string name="icon_group_amenity">Equipament</string>
<string name="elevation_data">Podeu utilitzar les dades delevació per acumular l\'ascens/descens de la vostra ruta</string>
<string name="app_mode_light_aircraft">Avioneta</string>
<string name="gpx_upload_identifiable_visibility_descr">\"Identificable\" vol dir que la traça es mostrarà públicament a les vostres traces GPS i als llistats públics de traces GPS, és a dir, els altres usuaris la podran baixar en brut i associada al vostre usuari. Les dades cronològiques de pas per les fites de lAPI GPS que es publiquen mitjançant lAPI de fites faran referència a la pàgina de la vostra traça original.</string>
<string name="gpx_upload_private_visibility_descr">\"Privada\" vol dir que la traça no es mostra a cap llistat públic, però les fites que conté estan disponibles a través de l\'API pública GPS, desordenades i sense enregistraments temporals.</string>

View file

@ -3561,7 +3561,7 @@
<string name="poi_charcoal_pile">Milíř</string>
<string name="poi_historic_tank">Historický tank</string>
<string name="poi_hookah_lounge">Salonek s vodní dýmkou</string>
<string name="poi_source_biomass">Zdroj energie: biomasa</string>
<string name="poi_generator_source_biomass">Zdroj energie: biomasa</string>
<string name="poi_glacier_type_hanging">Převislý</string>
<string name="poi_glacier_type_shelf">Šelfový</string>
<string name="poi_substation_compensation">Kompenzační</string>
@ -3601,7 +3601,7 @@
<string name="poi_vehicle_military">Přístup vozidel: vojenské</string>
<string name="poi_vehicle_delivery">Přístup vozidel: zásobování</string>
<string name="poi_vehicle_forestry">Přístup vozidel: lesnictví</string>
<string name="poi_motorcar_yes">Přístup aut:</string>
<string name="poi_motorcar_yes">Přístup aut: ano</string>
<string name="poi_motorcar_private">Přístup aut: soukromý</string>
<string name="poi_motorcar_no">Přístup aut: ne</string>
<string name="poi_motorcar_destination">Přístup aut: cíl</string>
@ -3835,4 +3835,50 @@
<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>
<string name="poi_mobile_money_agent">Mobilní směnárna</string>
<string name="poi_diplomatic_liaison">Prostředník</string>
<string name="poi_liaison_filter">Prostředník</string>
<string name="poi_wildlife_crossing_bat_tunnel">Netopýří tunel</string>
<string name="poi_wildlife_crossing_bat_bridge">Netopýří most</string>
<string name="poi_wildlife_crossing">Ekodukt</string>
<string name="poi_swimming_area">Plovárna</string>
<string name="poi_lavoir">Veřejná prádelna</string>
<string name="poi_waste_transfer_station">Překladiště odpadů</string>
<string name="poi_weightbridge">Mostní váha</string>
<string name="poi_ranger_station">Stanice rangera</string>
<string name="poi_water_source_lake">Jezero</string>
<string name="poi_water_source_river">Řeka</string>
<string name="poi_water_source_well">Studna</string>
<string name="poi_water_source_powered_pump">Poháněné čerpadlo</string>
<string name="poi_water_source_water_tank">Vodní nádrž</string>
<string name="poi_water_source_tap">Kohoutek</string>
<string name="poi_water_source_water_works">Zásobování vodou</string>
<string name="poi_water_source_tube_well">Trubková studna</string>
<string name="poi_vaccination_covid19">Očkování: COVID19</string>
<string name="poi_health_specialty_vaccination_yes">Očkování</string>
<string name="poi_lifeguard_base">Záchranářská základna</string>
<string name="poi_siren">Siréna</string>
<string name="poi_nurse">Zdravotní sestra</string>
<string name="poi_diplomatic_services_citizen_services_no">Ne</string>
<string name="poi_diplomatic_services_citizen_services_yes">Ano</string>
<string name="poi_diplomatic_services_immigrant_visas_no">Ne</string>
<string name="poi_diplomatic_services_immigrant_visas_yes">Ano</string>
<string name="poi_diplomatic_services_non_immigrant_visas_no">Ne</string>
<string name="poi_diplomatic_services_non_immigrant_visas_yes">Ano</string>
<string name="poi_liaison_subnational">Podnárodní</string>
<string name="poi_liaison_representative_office">Reprezentační kancelář</string>
<string name="poi_liaison_liaison_office">Kancelář</string>
<string name="poi_consulate_honorary_consul">Honorární konzul</string>
<string name="poi_consulate_consulate_general">Generální konzulát</string>
<string name="poi_consulate_consular_office">Kancelář konzula</string>
<string name="poi_consulate_consular_agency">Konzulární zastupitelstvo</string>
<string name="poi_consulate_yes">Vedená konzulem</string>
<string name="poi_embassy_residence">Rezidence</string>
<string name="poi_embassy_nunciature">Nunciatura</string>
<string name="poi_embassy_mission">Mise</string>
<string name="poi_embassy_interests_section">Zájmová sekce</string>
<string name="poi_embassy_high_commission">Vysoký komisař</string>
<string name="poi_embassy_delegation">Delegace</string>
<string name="poi_embassy_branch_embassy">Pobočka</string>
<string name="poi_embassy_yes">Vedená velvyslancem</string>
</resources>

View file

@ -781,7 +781,6 @@
<string name="day_night_info">Denní/noční info</string>
<string name="map_widget_renderer">Styl mapy</string>
<string name="avoid_motorway">Žádné dálnice</string>
<string name="snap_to_road_descr">Zachytí kurzor na nejbližší silnici/cestu během navigace.</string>
<string name="map_widget_vector_attributes">Vlastnosti vykreslování</string>
<string name="poi_filter_parking">Parkoviště</string>
<string name="poi_filter_public_transport">Veřejná doprava</string>
@ -2004,7 +2003,6 @@
<string name="update_all_maps_now">Aktualizovat všechny mapy ihned?</string>
<string name="clear_tile_data">Vymazat všechny dlaždice</string>
<string name="routing_attr_short_way_name">Ekonomická trasa</string>
<string name="routing_attr_short_way_description">Použít ekonomickou trasu (obvykle kratší).</string>
<string name="replace_favorite_confirmation">Opravdu chcete nahradit Oblíbené místo „%1$s“\?</string>
<string name="rendering_attr_hideOverground_name">Nadzemní objekty</string>
<string name="shared_string_change">Změnit</string>
@ -2176,7 +2174,7 @@
<string name="shared_string_time">Čas</string>
<string name="total_distance">Celková vzdálenost</string>
<string name="routing_attr_height_obstacles_name">Použít údaje o nadmořské výšce</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 se nepodařilo přesunout.</string>
@ -2314,7 +2312,7 @@
<string name="average">Průměr</string>
<string name="of">%1$d z %2$d</string>
<string name="ascent_descent">Stoupání/Klesání</string>
<string name="moving_time">Čas pohybu</string>
<string name="moving_time">Doba pohybu</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>
@ -3425,7 +3423,7 @@
<string name="gpx_direction_arrows">Směrové šipky</string>
<string name="plan_route_last_edited">Naposledy upraveno</string>
<string name="plan_route_import_track">Importovat trasu</string>
<string name="plan_route_open_existing_track">Otevřít existující trasu</string>
<string name="plan_route_open_existing_track">Otevřít existující stopu</string>
<string name="plan_route_create_new_route">Vytvořit novou trasu</string>
<string name="plan_route_select_track_file_for_open">Vyberte stopu k otevření.</string>
<string name="shared_string_done">Hotovo</string>
@ -3442,10 +3440,10 @@
<string name="quick_action_add_gpx">Přidat mezicíl</string>
<string name="map_widget_monitoring">Záznam trasy</string>
<string name="marker_save_as_track">Uložit jako soubor trasy</string>
<string name="follow_track">Sledovat trasu</string>
<string name="follow_track">Sledovat stopu</string>
<string name="follow_track_descr">Zvolte soubor trasy, kterou chcete sledovat</string>
<string name="import_track_descr">Zvolte soubor stopy, kterou chcete sledovat, nebo jej importujte ze svého zařízení.</string>
<string name="select_another_track">Zvolit jinou trasu</string>
<string name="select_another_track">Zvolit jinou stopu</string>
<string name="navigate_to_track_descr">Navigovat z mé polohy k trase</string>
<string name="pass_whole_track_descr">Bod trasy pro navigování</string>
<string name="start_of_the_track">Začátek trasy</string>
@ -3490,7 +3488,7 @@
<string name="save_track_to_gpx_globally">Ukládat trasu do GPX souboru</string>
<string name="shared_string_gpx_route">Trasa ze stopy</string>
<string name="empty_state_my_tracks">Přidat soubory stop</string>
<string name="simplified_track">Zjednodušená trasa</string>
<string name="simplified_track">Zjednodušená stopa</string>
<string name="simplified_track_description">Uloží se pouze linie trasy, mezicíle budou odstraněny.</string>
<string name="shared_string_file_name">Název souboru</string>
<string name="number_of_gpx_files_selected_pattern">%s vybraných souborů stop</string>
@ -3505,7 +3503,7 @@
<string name="only_selected_segment_recalc">Pouze vybraný úsek bude přepočítán pomocí vybraného profilu.</string>
<string name="all_next_segments_will_be_recalc">Všechny následující úseky budou přepočítány pomocí vybraného profilu.</string>
<string name="all_previous_segments_will_be_recalc">Všechny předcházející úseky budou přepočítány pomocí vybraného profilu.</string>
<string name="open_saved_track">Otevřít uloženou trasu</string>
<string name="open_saved_track">Otevřít uloženou stopu</string>
<string name="shared_string_is_saved">je uloženo</string>
<string name="one_point_error">Přidejte prosím alespoň dva body.</string>
<string name="shared_string_redo">Znovu</string>
@ -3919,7 +3917,6 @@
<string name="use_dev_url">Použít dev.openstreetmap.org</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
<string name="lang_de_casual">Němčina (hovorová)</string>
<string name="elevation_data">Můžete použít výšková data pro započítání výstupu/sestupu na trase</string>
<string name="app_mode_light_aircraft">Lehké letadlo</string>
<string name="plan_route_join_segments">Spojit úseky</string>
<string name="plan_route_split_before">Rozdělit před</string>
@ -3967,7 +3964,7 @@
<string name="select_folder">Zvolte složku</string>
<string name="select_folder_descr">Zvolte složku nebo vytvořte novou</string>
<string name="shared_string_empty">Prázdné</string>
<string name="analyze_by_intervals">Analyzovat podle intervalů (rozdělit interval)</string>
<string name="analyze_by_intervals">Analyzovat rozdělené intervaly</string>
<string name="upload_to_openstreetmap">Nahrát do OpenStreetMap</string>
<string name="edit_track">Editovat stopu</string>
<string name="rename_track">Přejmenovat stopu</string>
@ -4000,4 +3997,24 @@
<string name="routing_engine_vehicle_type_mtb">Horské kolo</string>
<string name="message_server_error">Chyba serveru: %1$s</string>
<string name="message_name_is_already_exists">Název již existuje</string>
<string name="delete_online_routing_engine">Odstranit tuto online navigační službu\?</string>
<string name="context_menu_read_full">Přečíst celé</string>
<string name="context_menu_edit_descr">Upravit popis</string>
<string name="delete_waypoints">Odstranit body trasy</string>
<string name="copy_to_map_markers">Kopírovat do mapových značek</string>
<string name="copy_to_map_favorites">Kopírovat do oblíbených</string>
<string name="upload_photo">Nahrávání</string>
<string name="upload_photo_completed">Nahrávání dokončeno</string>
<string name="uploading_count">Nahrávám %1$d z %2$d</string>
<string name="uploaded_count">Nahráno %1$d z %2$d</string>
<string name="toast_select_edits_for_upload">Vyberte úpravy pro nahrání</string>
<string name="hillshade_slope_contour_lines">Stínované svahy / Sklon svahů / Vrstevnice</string>
<string name="open_place_reviews_plugin_description">OpenPlaceReviews je komunitní projekt o veřejných místech, jako jsou restaurace, hotely, muzea a další. Shromažďuje o nich veškeré veřejné informace, např. fotografie, hodnocení, odkazy do dalších systémů jako OpenStreetMap či Wikipedie.
\n
\nVšechna data OpenPlaceReviews jsou otevřená a přístupná každému: http://openplacereviews.org/data.
\n
\nPřečtěte si více na http://openplacereviews.org</string>
<string name="open_place_reviews">OpenPlaceReviews</string>
<string name="opr_use_dev_url">Použít test.openplacereviews.org</string>
<string name="login_open_place_reviews">Přihlásit se do OpenPlaceReviews</string>
</resources>

View file

@ -51,7 +51,6 @@
<string name="avoid_motorway">Ceisiwch osgoi traffyrdd</string>
<string name="auto_zoom_map_descr">Zoom Auto mapio yn ôl eich cyflymder (tra map wedi eu cydamseru gyda\'r sefyllfa bresennol)</string>
<string name="auto_zoom_map">Auto chwyddo map</string>
<string name="snap_to_road_descr">Snap sefyllfa i ffyrdd yn ystod llywio</string>
<string name="snap_to_road">Snap i\'r ffordd</string>
<string name="osmand_short_description_80_chars">OsmAnd yn gais ffynhonnell agored ar gyfer llywio fapiau all-lein ac ar-lein</string>
<string name="osmand_plus_short_description_80_chars">OsmAnd yn gais ffynhonnell agored ar gyfer llywio fapiau all-lein ac ar-lein</string>

View file

@ -3582,7 +3582,7 @@
<string name="poi_charcoal_pile">Trækulsbunke</string>
<string name="poi_historic_tank">Historisk tank</string>
<string name="poi_hookah_lounge">Vandpibe bar</string>
<string name="poi_source_biomass">Energikilde: biomasse</string>
<string name="poi_generator_source_biomass">Energikilde: biomasse</string>
<string name="poi_snowmobile_filter">Snescooter adgang</string>
<string name="poi_access_bus">Busadgang</string>
<string name="poi_access_caravan">Campingvogn adgang</string>

View file

@ -128,7 +128,6 @@
<string name="av_use_external_camera">Brug kamera</string>
<string name="route_descr_lat_lon">Lat %1$.3f, Lon %2$.3f</string>
<string name="intermediate_point">Mellemliggende destination %1$s</string>
<string name="snap_to_road_descr">Hold position på vejen under navigation.</string>
<string name="snap_to_road">Fastgør til vejen</string>
<string name="osmand_short_description_80_chars">Globale mobilkort og navigation til offline og online OSM-kort</string>
<string name="osmand_plus_short_description_80_chars">Global mobilkortvisning og navigation til offline og online OSM-kort</string>
@ -1995,7 +1994,6 @@
<string name="route_stops_before">%1$s stop før</string>
<string name="rendering_attr_hideOverground_name">Objekter over jorden</string>
<string name="routing_attr_short_way_name">Brændstofbesparende rute</string>
<string name="routing_attr_short_way_description">Brug brændstofbesparende rute (normalt kortere).</string>
<string name="replace_favorite_confirmation">Erstat Favorit %1$s?</string>
<string name="shared_string_change">Skift</string>
<string name="get_started">Kom i gang</string>
@ -2174,7 +2172,7 @@
<string name="rendering_attr_depthContours_description">Vis dybdekonturer og -punkter.</string>
<string name="rendering_attr_depthContours_name">Havdybdekonturer</string>
<string name="routing_attr_height_obstacles_name">Brug højdedata</string>
<string name="routing_attr_height_obstacles_description">Terrænhøjde-faktor (via SRTM, ASTER og EU-DEM data).</string>
<string name="route_altitude">Rutehøjde</string>
<string name="altitude_descent">Fald</string>
<string name="altitude_ascent">Stigning</string>

View file

@ -3582,7 +3582,7 @@
<string name="poi_charcoal_pile">Kohlenmeiler</string>
<string name="poi_historic_tank">Historischer Panzer</string>
<string name="poi_hookah_lounge">Wasserpfeifen-Lounge</string>
<string name="poi_source_biomass">Energiequelle: Biomasse</string>
<string name="poi_generator_source_biomass">Energiequelle: Biomasse</string>
<string name="poi_snowmobile_filter">Zufahrt Schneemobil</string>
<string name="poi_access_bus">Anbindung Linienbus</string>
<string name="poi_access_caravan">Zufahrt Wohnwagen</string>
@ -3881,4 +3881,14 @@
<string name="poi_wildlife_crossing_bat_tunnel">Fledermaustunnel</string>
<string name="poi_wildlife_crossing_bat_bridge">Fledermausbrücke</string>
<string name="poi_wildlife_crossing">Wildwechsel</string>
<string name="poi_mobile_library">Halteposition der Fahrbücherei</string>
<string name="poi_summit_register_no">Gipfelbuch: nein</string>
<string name="poi_summit_register_yes">Gipfelbuch: ja</string>
<string name="poi_piste_status_closed">Pistenstatus: geschlossen</string>
<string name="poi_piste_status_open">Pistenstatus: geöffnet</string>
<string name="poi_patrolled_no">Bewacht: nein</string>
<string name="poi_patrolled_yes">Bewacht: ja</string>
<string name="poi_gladed_yes">Geglättet: ja</string>
<string name="poi_piste_name">Pistenname</string>
<string name="poi_piste_ski_jump">Skispringen</string>
</resources>

View file

@ -97,7 +97,6 @@
<string name="avoid_motorway">Keine Autobahnen</string>
<string name="auto_zoom_map_descr">Kartenvergrößerung der Geschwindigkeit anpassen (während der Kartennachführung).</string>
<string name="auto_zoom_map">Automatische Vergrößerung</string>
<string name="snap_to_road_descr">Standort während der Navigation auf Straßen einrasten.</string>
<string name="snap_to_road">Auf Straße einrasten</string>
<string name="osmand_play_title_30_chars">OsmAnd Karten &amp; Navigation</string>
<string name="osmand_short_description_80_chars">Globale Landkarten- und Navigationsanwendung für Offline- und Online-OSM-Karten</string>
@ -1999,7 +1998,6 @@
<string name="route_stops_before">%1$s Haltestellen davor</string>
<string name="rendering_attr_hideOverground_name">Oberirdische Objekte</string>
<string name="routing_attr_short_way_name">Kraftstoffsparende Route</string>
<string name="routing_attr_short_way_description">Kraftstoffsparende Route verwenden (in der Regel kürzer).</string>
<string name="replace_favorite_confirmation">Wollen Sie den Favoriten \'%1$s\' wirklich ersetzen?</string>
<string name="shared_string_change">Ändern</string>
<string name="get_started">Erste Schritte</string>
@ -2173,7 +2171,7 @@
<string name="navigate_point_olc">Offener Standortcode (OLC)</string>
<string name="quick_action_page_list_descr">Eine Schaltfläche, um durch die Liste unten zu blättern.</string>
<string name="routing_attr_height_obstacles_name">Höhendaten berücksichtigen</string>
<string name="routing_attr_height_obstacles_description">Faktor im Geländeprofil (über SRTM, ASTER und EU-DEM-Daten).</string>
<string name="rendering_attr_depthContours_name">Nautische Tiefenlinien</string>
<string name="rendering_attr_depthContours_description">Tiefenlinien und -punkte einblenden.</string>
<string name="route_altitude">Routenhöhenprofil</string>
@ -3694,7 +3692,7 @@
<string name="quick_action_showhide_mapillary_title">Mapillary ein-/ausblenden</string>
<string name="quick_action_mapillary_hide">Mapillary ausblenden</string>
<string name="quick_action_mapillary_show">Mapillary anzeigen</string>
<string name="quick_action_showhide_mapillary_descr">Eine Umschaltfläche zum ein- oder ausblenden der Mapillary-Layer auf der Karte.</string>
<string name="quick_action_showhide_mapillary_descr">Eine Umschaltfläche zum Ein- oder Ausblenden des Mapillary-Layers auf der Karte.</string>
<string name="uninstall_speed_cameras">Blitzer deinstallieren</string>
<string name="shared_string_legal">Rechtliches</string>
<string name="speed_camera_pois">Blitzer-POIs</string>
@ -3923,7 +3921,6 @@
<string name="cannot_upload_image">Bild kann nicht hochgeladen werden, bitte versuchen Sie es später erneut</string>
<string name="select_picture">Bild auswählen</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
<string name="elevation_data">Sie können Höhendaten verwenden, um Steigungen und Gefälle auf Ihrer Reise zu berücksichtigen</string>
<string name="app_mode_light_aircraft">Kleinflugzeug</string>
<string name="plan_route_split_before">Teilen vor</string>
<string name="plan_route_split_after">Teilen nach</string>
@ -3972,7 +3969,7 @@
<string name="select_folder">Ordner auswählen</string>
<string name="select_folder_descr">Ordner auswählen oder neuen hinzufügen</string>
<string name="shared_string_empty">Leer</string>
<string name="analyze_by_intervals">Nach Intervallen auswerten (geteiltes Intervall)</string>
<string name="analyze_by_intervals">Nach Intervallen auswerten</string>
<string name="upload_to_openstreetmap">Hochladen zu OpenStreetMap</string>
<string name="edit_track">Track editieren</string>
<string name="rename_track">Track umbenennen</string>
@ -4008,4 +4005,34 @@
<string name="delete_waypoints">Wegpunkte löschen</string>
<string name="copy_to_map_favorites">In Favoriten kopieren</string>
<string name="copy_to_map_markers">In Kartenmarkierungen kopieren</string>
<string name="upload_photo">Lade hoch</string>
<string name="upload_photo_completed">Hochladen abgeschlossen</string>
<string name="uploading_count">Lade %1$d von %2$d hoch</string>
<string name="uploaded_count">%1$d von %2$d hochgeladen</string>
<string name="toast_select_edits_for_upload">Bearbeitungen zum Hochladen auswählen</string>
<string name="hillshade_slope_contour_lines">Relief / Hangneigung / Höhenlinien</string>
<string name="open_place_reviews_plugin_description">OpenPlaceReviews ist ein von der Gemeinschaft betriebenes Projekt über öffentliche Orte wie Restaurants, Hotels, Museen, Wegpunkte. Es sammelt alle öffentlichen Informationen über sie wie Fotos, Bewertungen, Links zu anderen Systemen, Link OpenStreetMap, Wikipedia.
\n
\nAlle OpenPlaceReview-Daten sind offen und für jedermann zugänglich: http://openplacereviews.org/data.
\n
\nMehr Informationen finden Sie unter: http://openplacereviews.org</string>
<string name="open_place_reviews">OpenPlaceReviews</string>
<string name="opr_use_dev_url">test.openplacereviews.org verwenden</string>
<string name="login_open_place_reviews">Anmelden bei OpenPlaceReviews</string>
<string name="activity_type_water_name">Wasser</string>
<string name="activity_type_winter_name">Winter</string>
<string name="activity_type_snowmobile_name">Schneemobil</string>
<string name="activity_type_riding_name">Reiten</string>
<string name="activity_type_mountainbike_name">Mountainbike</string>
<string name="activity_type_cycling_name">Fahrrad</string>
<string name="activity_type_hiking_name">Wandern</string>
<string name="activity_type_running_name">Laufen</string>
<string name="activity_type_walking_name">Fußgänger</string>
<string name="activity_type_offroad_name">Geländegängig</string>
<string name="activity_type_motorbike_name">Motorrad</string>
<string name="activity_type_car_name">Auto</string>
<string name="announcement_time_prepare">Zweite Ankündigung (mittlere Distanz)</string>
<string name="shared_string_sec">sek</string>
<string name="activity_type_racing_name">Rennsport</string>
<string name="announcement_time_prepare_long">Erste Ankündigung (größere Distanz)</string>
</resources>

View file

@ -1212,7 +1212,7 @@
<string name="poi_description">Περιγραφή</string>
<string name="poi_phone">Τηλέφωνο</string>
<string name="poi_website">Ιστότοπος</string>
<string name="poi_email">Ηλ. διεύθυνση</string>
<string name="poi_email">Ηλεκτρονικό ταχυδρομείο</string>
<string name="poi_fax">Τηλεομοιότυπο (φαξ)</string>
<string name="facebook">Facebook</string>
<string name="twitter">Twitter</string>
@ -3534,7 +3534,7 @@
<string name="poi_climbing_crag">Ναι</string>
<string name="reddit">Reddit</string>
<string name="poi_historic_tank">Ιστορική δεξαμενή</string>
<string name="poi_source_biomass">Πηγή ενέργειας: βιομάζα</string>
<string name="poi_generator_source_biomass">Πηγή ενέργειας: βιομάζα</string>
<string name="poi_snowmobile_filter">Πρόσβαση σε χιονοόχημα</string>
<string name="poi_access_bus">Πρόσβαση σε λεωφορείο</string>
<string name="poi_access_caravan">Πρόσβαση σε τροχόσπιτο</string>

View file

@ -20,7 +20,6 @@
<string name="avoid_motorway">Όχι αυτοκινητόδρομους</string>
<string name="auto_zoom_map_descr">Επίπεδο εστίασης χάρτη ανάλογα με την ταχύτητά σας (ενώ ο χάρτης συγχρονίζεται με την τρέχουσα θέση).</string>
<string name="auto_zoom_map">Αυτόματη εστίαση χάρτη</string>
<string name="snap_to_road_descr">Προσανατολισμός στους δρόμους κατά τη διάρκεια της πλοήγησης.</string>
<string name="snap_to_road">Προσανατολισμός στο δρόμο</string>
<string name="osmand_short_description_80_chars">Προβολή φορητού παγκόσμιου χάρτη &amp; πλοήγηση για χάρτες OSM χωρίς και με διαδίκτυο</string>
<string name="osmand_long_description_1000_chars">OsmAnd (OSM Αυτοματοποιημένες Οδηγίες Πλοήγησης)
@ -267,7 +266,7 @@
<string name="offline_edition">Επεξεργασία χωρίς διαδίκτυο</string>
<string name="offline_edition_descr">Χρήση πάντα της επεξεργασίας χωρίς διαδίκτυο.</string>
<string name="update_poi_does_not_change_indexes">Οι αλλαγές στα ΣΕ μέσω της εφαρμογής δεν επηρεάζουν τα ληφθέντα αρχεία χάρτη, οι αλλαγές αποθηκεύονται ως αρχείο στη συσκευή σας.</string>
<string name="local_openstreetmap_uploading">Αποστολή </string>
<string name="local_openstreetmap_uploading">Αποστολή…</string>
<string name="local_openstreetmap_were_uploaded">{0} ΣΕ/Οι σημειώσεις απεστάλησαν</string>
<string name="local_openstreetmap_uploadall">Αποστολή όλων</string>
<string name="local_openstreetmap_upload">Αποστολή επεξεργασίας στο OSM</string>
@ -778,7 +777,7 @@
<string name="context_menu_item_update_map">Ενημέρωση χάρτη</string>
<string name="context_menu_item_create_poi">Δημιουργία ΣΕ</string>
<string name="shared_string_yes">Ναι</string>
<string name="shared_string_cancel">Ακύρωση</string>
<string name="shared_string_cancel">Άκυρο</string>
<string name="shared_string_apply">Εφαρμογή</string>
<string name="shared_string_no">Όχι</string>
<string name="add_favorite_dialog_top_text">Εισαγωγή ονόματος αγαπημένου</string>
@ -813,7 +812,7 @@
<string name="edit_filter_delete_dialog_title">Διαγραφή αυτού του φίλτρου;</string>
<string name="edit_filter_delete_message">Το φίλτρο \'%1$s\' διαγράφηκε</string>
<string name="edit_filter_create_message">Το φίλτρο \'%1$s\' δημιουργήθηκε</string>
<string name="email">ηλ. διεύθυνση</string>
<string name="email">ηλεκτρονικό ταχυδρομείο</string>
<string name="intermediate_point_too_far">Ο ενδιάμεσος προορισμός %1$s είναι πολύ μακριά από τον πλησιέστερο δρόμο.</string>
<string name="arrived_at_intermediate_point">Φτάσατε στον ενδιάμεσο προορισμό σας</string>
<string name="context_menu_item_intermediate_point">Προσθήκη ως ενδιάμεσου προορισμού</string>
@ -1175,7 +1174,7 @@
<string name="keep_informing_never">Μόνο χειροκίνητα (πατήστε το βέλος)</string>
<string name="keep_informing">Επανάληψη οδηγιών πλοήγησης</string>
<string name="import_file_favourites">Αποθήκευση δεδομένων ως αρχείο GPX ή εισαγωγή σημείων διαδρομής στα \'Αγαπημένα\';</string>
<string name="shared_string_share">Διαμοιρασμός</string>
<string name="shared_string_share">Κοινοποίηση</string>
<string name="navigation_intent_invalid">Μη έγκυρη μορφή: %s</string>
<string name="stop_navigation_service">Διακοπή</string>
<string name="sleep_mode_stop_dialog">Διακοπή λειτουργίας παρασκηνίου του GPS;</string>
@ -1270,7 +1269,7 @@
<string name="dash_download_new_one">Λήψη Νέου Χάρτη</string>
<string name="map_locale">Γλώσσα χάρτη</string>
<string name="rendering_attr_roadStyle_name">Μορφή δρόμου</string>
<string name="rendering_value_default_name">Προκαθορισμένο</string>
<string name="rendering_value_default_name">Προεπιλογή</string>
<string name="rendering_value_orange_name">Πορτοκαλί</string>
<string name="traffic_warning_railways">Διασταύρωση σιδηροτροχιάς</string>
<string name="show_railway_warnings">Διασταυρώσεις σιδηροτροχιάς</string>
@ -1467,7 +1466,7 @@
<string name="track_segments">Τμήματα διαδρομής</string>
<string name="track_points">Σημεία της διαδρομής</string>
<string name="location_on_map">Τοποθεσία:\n Γ. Πλ %1$s\n Γ. Μηκ %2$s</string>
<string name="rendering_value__name">Προκαθορισμένο</string>
<string name="rendering_value__name">Προεπιλογή</string>
<string name="print_route">Εκτύπωση διαδρομής</string>
<string name="osmand_parking_overdue">εκπρόθεσμο</string>
<string name="simulate_your_location">Προσομοίωση της θέση σας</string>
@ -1877,7 +1876,7 @@
<string name="total_distance">Συνολική απόσταση</string>
<string name="routing_attr_relief_smoothness_factor_name">Επιλέξτε διακύμανση ανύψωσης</string>
<string name="routing_attr_height_obstacles_name">Χρήση υψομετρικών δεδομένων</string>
<string name="routing_attr_height_obstacles_description">Συντελεστής σε ανύψωση εδάφους (μέσω SRTM, ASTER και δεδομένων EU-DEM).</string>
<string name="rendering_attr_depthContours_description">Εμφάνιση ισοβαθών καμπυλών και σημείων.</string>
<string name="rendering_attr_depthContours_name">Ναυτικές ισοβαθείς καμπύλες</string>
<string name="auto_split_recording_title">Αυτόματος διαχωρισμός καταγραφών μετά από κενό</string>
@ -1965,7 +1964,6 @@
<string name="update_all_maps_now">Θέλετε να ενημερώσετε όλους τους χάρτες τώρα;</string>
<string name="clear_tile_data">Καθαρισμός όλων των πλακιδίων</string>
<string name="routing_attr_short_way_name">Διαδρομή με οικονομία καυσίμων</string>
<string name="routing_attr_short_way_description">Χρησιμοποιήστε τη διαδρομή με οικονομία καυσίμων (συνήθως συντομότερη).</string>
<string name="replace_favorite_confirmation">Είσαστε σίγουρος/η ότι θέλετε να αντικαταστήσετε το Αγαπημένο %1$s;</string>
<string name="rendering_attr_hideOverground_name">Υπέργεια αντικείμενα</string>
<string name="shared_string_change">Αλλαγή</string>
@ -3013,7 +3011,7 @@
<string name="rendering_attr_showLez_description">Εμφάνιση στον χάρτη ζωνών για χαμηλή εκπομπή καυσαερίων. Δεν επηρεάζει τη δρομολόγηση.</string>
<string name="rendering_attr_showLez_name">Εμφάνιση ζωνών χαμηλής εκπομπής καυσαερίων</string>
<string name="temporary_conditional_routing">Λάβετε υπόψη τους προσωρινούς περιορισμούς</string>
<string name="shared_string_default">Προεπιλεγμένο</string>
<string name="shared_string_default">Προεπιλογή</string>
<string name="app_mode_pickup_truck">Ημιφορτηγό</string>
<string name="day">Ημέρα</string>
<string name="days_2_4">Ημέρες</string>
@ -3385,7 +3383,7 @@
<string name="monitoring_min_accuracy_descr_recommendation">Σύσταση: Είναι δύσκολο να προβλεφθεί τι θα εγγραφεί και τι όχι, ίσως είναι καλύτερο να απενεργοποιήσετε αυτό το φίλτρο.</string>
<string name="monitoring_min_accuracy_descr_remark">Παρατήρηση: Εάν το GPS είχε απενεργοποιηθεί αμέσως πριν μια εγγραφή, το πρώτο μετρούμενο σημείο μπορεί να έχει μειωμένη ακρίβεια, έτσι μπορεί να θέλουμε να περιμένουμε λιγάκι πριν την καταγραφή σημείου (ή να εγγράψουμε τα καλύτερα 3 διαδοχικά σημεία, κλπ.), αλλά αυτό δεν έχει ακόμα υλοποιηθεί.</string>
<string name="monitoring_min_distance_descr">Αυτό το φίλτρο αποφεύγει διπλά σημεία να εγγραφούν όταν έχει συμβεί πολύ λίγη ενεργή κίνηση, καθιστώντας καλύτερη τη χωροταξική εμφάνιση των ιχνών που δεν επεξεργάζονται αργότερα.</string>
<string name="button_rate">Τιμή</string>
<string name="button_rate">Βαθμολόγηση</string>
<string name="monitoring_min_distance_descr_side_effect">Παράπλευρα αποτελέσματα: Περίοδοι σε ακινησία δεν καταγράφονται καθόλου ή μόνο με ένα σημείο καθεμιά. Μικρές (πραγματικός κόσμος) κινήσεις (π.χ. πλάγιες, για να σημειώσουν έξοδο στο ταξίδι σας) μπορεί να φιλτραριστούν. Το αρχείο σας περιέχει λιγότερες πληροφορίες για μετεπεξεργασία και έχει χειρότερα στατιστικά φιλτράροντας προφανώς περιττά σημεία κατά τον χρόνο εγγραφής, ενώ δυνητικά διατηρεί παράσιτα που προκαλούνται από κακή λήψη ή επιπτώσεις κυκλωμάτων GPS.</string>
<string name="monitoring_min_distance_descr_recommendation">Σύσταση: Ρύθμιση 5 μέτρων μπορεί να λειτουργήσει καλά για σας, εάν δεν χρειάζεστε να πιάσετε λεπτομέρειες πιο ακριβείς από αυτό και δεν θέλετε να πάρετε δεδομένα σε ακινησία.</string>
<string name="live_monitoring_time_buffer">Ενδιάμεσος χρόνος</string>

View file

@ -3582,7 +3582,7 @@
<string name="poi_charcoal_pile">Karbigejo</string>
<string name="poi_historic_tank">Tanko historia</string>
<string name="poi_hookah_lounge">Salono por fumi akvopipon</string>
<string name="poi_source_biomass">Energifonto: biomaso</string>
<string name="poi_generator_source_biomass">Energifonto: biomaso</string>
<string name="poi_snowmobile_filter">Aliro por motorsledoj</string>
<string name="poi_access_bus">Aliro por aŭtobusoj</string>
<string name="poi_access_caravan">Aliro por kampad-postveturiloj</string>
@ -3881,4 +3881,14 @@
<string name="poi_wildlife_crossing_bat_bridge">Ponto por vespertoj</string>
<string name="poi_wildlife_crossing">Trairejo por sovaĝaj bestoj</string>
<string name="poi_swimming_area">Naĝejo natura</string>
<string name="poi_piste_status_closed">Stato de skivojo: fermita</string>
<string name="poi_piste_status_open">Stato de skivojo: malfermita</string>
<string name="poi_patrolled_no">Kontrolata: ne</string>
<string name="poi_patrolled_yes">Kontrolata: jes</string>
<string name="poi_gladed_yes">Senarbigita: jes</string>
<string name="poi_piste_name">Nomo de skivojo</string>
<string name="poi_piste_ski_jump">Skisaltejo</string>
<string name="poi_mobile_library">Movebla biblioteko (haltloko)</string>
<string name="poi_summit_register_no">Pinttaglibro: ne</string>
<string name="poi_summit_register_yes">Pinttaglibro: jes</string>
</resources>

View file

@ -654,7 +654,7 @@
<string name="select_index_file_to_download">Trovis nenion. Se vi ne povas trovi vian regionon, vi povas fari ĝin mem (rigardu https://osmand.net).</string>
<string name="none_selected_gpx">Unue elektu GPXdosieron per frapetadi.</string>
<string name="local_index_select_gpx_file">Elektu kurson</string>
<string name="gpx_split_interval">Intertempo de divido</string>
<string name="gpx_split_interval">Fragmento</string>
<string name="sort_by_distance">Ordigi laŭ distanco</string>
<string name="sort_by_name">Ordigi laŭ nomo</string>
<string name="plugin_touringview_name">Turisma map-vido</string>
@ -1056,7 +1056,6 @@
<string name="avoid_motorway">Sen aŭtovojojn</string>
<string name="auto_zoom_map">Aŭtomate skali mapon</string>
<string name="auto_zoom_map_descr">Skali mapon depende de via rapido (kiam mapo estas samtempigita kun aktuala pozicio).</string>
<string name="snap_to_road_descr">Proksimumigi pozicion al vojo dum navigado.</string>
<string name="snap_to_road">Proksimumigi al vojo</string>
<string name="interrupt_music">Paŭzigi muzikon</string>
<string name="interrupt_music_descr">Voĉaj anoncoj paǔzigas ludadon de muziko.</string>
@ -1991,7 +1990,6 @@
<string name="shared_string_change">Ŝanĝi</string>
<string name="get_started">Ekigi</string>
<string name="routing_attr_short_way_name">Brulaĵ-ŝparema kurso</string>
<string name="routing_attr_short_way_description">Kalkuli brulaĵ-ŝpareman kurson (kutime plej mallongan).</string>
<string name="replace_favorite_confirmation">Ĉu vi volas anstataŭigi la ŝatatan ejon %1$s?</string>
<string name="clear_tile_data">Forviŝi ĉiujn kahelojn</string>
<string name="update_all_maps_now">Ĉu ĝisdatigi ĉiujn mapojn nun?</string>
@ -2168,7 +2166,7 @@
<string name="rendering_attr_depthContours_description">Montri punktojn kaj kurbojn de profundo.</string>
<string name="rendering_attr_depthContours_name">Maraj profundec-kurboj</string>
<string name="routing_attr_height_obstacles_name">Uzi datumojn pri altitudo</string>
<string name="routing_attr_height_obstacles_description">Konsideri nivelon de tereno (laŭ datumoj el SRTM, ASTER kaj EU-DEM).</string>
<string name="route_altitude">Kursa altitudo</string>
<string name="altitude_descent">Malsupreniro</string>
<string name="altitude_ascent">Supreniro</string>
@ -2405,7 +2403,7 @@
<string name="mapillary_action_descr">Kontribui viajn strat-nivelajn vidaĵojn pri tiu ĉi loko al Mapillary.</string>
<string name="plugin_mapillary_descr">Strat-nivelaj fotoj por ĉiuj. Esplori lokojn, kunlabori kaj foti la mondon.</string>
<string name="online_photos">Enretaj fotoj</string>
<string name="no_photos_descr">Neniuj fotoj tie ĉi.</string>
<string name="no_photos_descr">Neniu foto 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 la aplikaĵon Mapillary por aldoni fotojn al tiu ĉi loko sur la mapo.</string>
@ -2433,7 +2431,7 @@
<string name="average">Mezumo</string>
<string name="of">%1$d el %2$d</string>
<string name="ascent_descent">Supreniroj/malsupreniroj</string>
<string name="moving_time">Movada tempo</string>
<string name="moving_time">Tempo dum movo</string>
<string name="max_min">Maks./min.</string>
<string name="min_max">Min./maks.</string>
<string name="rendering_value_translucent_pink_name">Rozkolora diafana</string>
@ -3919,7 +3917,6 @@
<string name="select_picture">Elektu bildon</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
<string name="lang_de_casual">Germana (ordinara)</string>
<string name="elevation_data">Vi povas uzi datumojn pri altitudo por kalkuli suprenirojn/malsuprenirojn de via kurso</string>
<string name="app_mode_light_aircraft">Malpeza aviadilo</string>
<string name="plan_route_join_segments">Kunigi segmentojn</string>
<string name="plan_route_split_before">Dividi antaŭ</string>
@ -3967,7 +3964,7 @@
<string name="select_folder">Elekti dosierujon</string>
<string name="select_folder_descr">Elekti dosierujon aŭ krei novan</string>
<string name="shared_string_empty">Malplena</string>
<string name="analyze_by_intervals">Analizi laŭ intertempoj (dividoj)</string>
<string name="analyze_by_intervals">Analizi laŭ fragmentoj</string>
<string name="upload_to_openstreetmap">Alŝuti al OpenStreetMap</string>
<string name="edit_track">Redakti spuron</string>
<string name="rename_track">Renomi spuron</string>
@ -4006,4 +4003,31 @@
<string name="context_menu_edit_descr">Redakti priskribon</string>
<string name="delete_waypoints">Forigi navigadpunktojn</string>
<string name="copy_to_map_markers">Kopii al mapmarkoj</string>
<string name="upload_photo">Sendado</string>
<string name="upload_photo_completed">Sendado finita</string>
<string name="uploading_count">Sendado de %1$d el %2$d</string>
<string name="uploaded_count">Sendis %1$d el %2$d</string>
<string name="toast_select_edits_for_upload">Elektu redaktojn por sendi</string>
<string name="hillshade_slope_contour_lines">Nivelombrumo / dekliveco / nivelkurboj</string>
<string name="open_place_reviews_plugin_description">OpenPlaceReviews estas komunuma projekto pri publikaj lokoj, kiel restoracioj, hoteloj, muzeoj, rekoniloj, ktp. Ĝi kolektas diversajn publikajn informojn pri tiuj punktoj: fotojn, opiniojn, ligilojn al OpenStreetMap kaj Vikipedio.
\n
\nĈiuj OpenPlaceReviewdatumoj estas malfermaj kaj disponeblaj por ĉiu: http://openplacereviews.org/data
\n
\nPliaj informoj ĉe http://openplacereviews.org</string>
<string name="open_place_reviews">OpenPlaceReviews</string>
<string name="opr_use_dev_url">Uzi test.openplacereviews.org</string>
<string name="login_open_place_reviews">Ensaluti al OpenPlaceReviews</string>
<string name="activity_type_water_name">Akvo</string>
<string name="activity_type_winter_name">Vintro</string>
<string name="activity_type_snowmobile_name">Motorsledo</string>
<string name="activity_type_riding_name">Rajdado</string>
<string name="activity_type_racing_name">Kurkonkurso</string>
<string name="activity_type_mountainbike_name">Montbiciklo</string>
<string name="activity_type_cycling_name">Biciklado</string>
<string name="activity_type_hiking_name">Marŝado</string>
<string name="activity_type_running_name">Kurado</string>
<string name="activity_type_walking_name">Piedirado</string>
<string name="activity_type_offroad_name">Ekstervoje</string>
<string name="activity_type_motorbike_name">Motorciklo</string>
<string name="activity_type_car_name">Aŭto</string>
</resources>

View file

@ -2723,7 +2723,7 @@
<string name="poi_aquaculture_mussels">Acuicultura: mejillones</string>
<string name="poi_min_age">Edad mínima</string>
<string name="poi_organic_yes"></string>
<string name="poi_organic_no">No</string>
<string name="poi_organic_no">Productos orgánicos: no</string>
<string name="poi_organic_only">Únicamente</string>
<string name="poi_traffic_mirror">Espejo de tráfico</string>
<string name="poi_diplomatic_consulate">Consulado</string>
@ -3222,7 +3222,7 @@
<string name="poi_water_supply_pump">Bomba</string>
<string name="poi_water_supply_borehole">Perforación</string>
<string name="poi_water_supply_water_trucking">Camión de agua</string>
<string name="poi_water_supply_water_tank">Depósito de agua</string>
<string name="poi_water_supply_water_tank">Tanque de agua</string>
<string name="poi_water_supply_bottled_water">Botella de agua</string>
<string name="poi_water_place_access_community">Comunidad</string>
<string name="poi_water_place_access_family">Familia</string>
@ -3582,7 +3582,7 @@
<string name="poi_charcoal_pile">Carbonera;Pila de carbón</string>
<string name="poi_historic_tank">Tanque histórico</string>
<string name="poi_hookah_lounge">Bar de cachimbas;Salón Hookah</string>
<string name="poi_source_biomass">Fuente de energía: biomasa</string>
<string name="poi_generator_source_biomass">Fuente de energía: biomasa</string>
<string name="poi_snowmobile_filter">Acceso para motonieves</string>
<string name="poi_access_bus">Acceso para colectivos</string>
<string name="poi_access_caravan">Acceso para casas móviles</string>
@ -3869,7 +3869,7 @@
<string name="poi_water_source_river">Río</string>
<string name="poi_water_source_well">Pozo</string>
<string name="poi_water_source_powered_pump">Bomba accionada</string>
<string name="poi_water_source_water_tank">Depósito de agua</string>
<string name="poi_water_source_water_tank">Tanque de agua</string>
<string name="poi_water_source_tap">Canilla</string>
<string name="poi_water_source_water_works">Planta potabilizadora</string>
<string name="poi_water_source_tube_well">Pozo entubado</string>
@ -3881,4 +3881,14 @@
<string name="poi_wildlife_crossing_bat_bridge">Puente para murciélagos</string>
<string name="poi_wildlife_crossing">Cruce de vida silvestre</string>
<string name="poi_swimming_area">Área de natación</string>
<string name="poi_mobile_library">Biblioteca móvil (parada)</string>
<string name="poi_summit_register_no">Registro de la cumbre: no</string>
<string name="poi_summit_register_yes">Registro de la cumbre: sí</string>
<string name="poi_piste_status_closed">Estado de la pista: cerrado</string>
<string name="poi_piste_status_open">Estado de la pista: abierto</string>
<string name="poi_patrolled_no">Patrullado: no</string>
<string name="poi_patrolled_yes">Patrullado: sí</string>
<string name="poi_gladed_yes">Arboleda: sí</string>
<string name="poi_piste_name">Nombre de la pista</string>
<string name="poi_piste_ski_jump">Salto con esquís</string>
</resources>

View file

@ -742,7 +742,6 @@
<string name="avoid_motorway">Sin autopistas</string>
<string name="auto_zoom_map_descr">Nivel de zoom según la velocidad (mientras el mapa se sincroniza con la ubicación actual).</string>
<string name="auto_zoom_map">Zoom automático del mapa</string>
<string name="snap_to_road_descr">Ajusta la ubicación al camino durante la navegación.</string>
<string name="snap_to_road">Ajustar al camino</string>
<string name="interrupt_music_descr">Las indicaciones por voz pausan la reproducción de música.</string>
<string name="interrupt_music">Pausar música</string>
@ -772,24 +771,24 @@
\n Los PDI de OsmAnd están siendo desarrollados activamente. Nuestro proyecto y su continuo progreso, se basa en contribuciones económicas para desarrollar y probar nuevas funcionalidades. Por favor, considera comprar OsmAnd+, financiar nuevas funciones o hacer una donación general en https://osmand.net.</string>
<string name="osmand_plus_play_title_30_chars">Navegación y Mapas OsmAnd+</string>
<string name="osmand_plus_short_description_80_chars">Visor y navegador móvil global de mapas OSM con y sin conexión</string>
<string name="osmand_plus_long_description_1000_chars">OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM)
\n
\nOsmAnd+ es un software de navegación de código abierto con acceso a una amplia variedad de datos globales de OSM. Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. Ofrece funcionalidades de rutas con y sin conexión, incluyendo guía de giro-a-giro por voz.
\n
\n OsmAnd+ es la versión de pago de la aplicación, comprándola ayudas al proyecto, financias el desarrollo de nuevas funciones, y recibes las últimas actualizaciones.
\n
\n Algunas de las funciones fundamentales:
\n - Completa funcionalidad sin conexión (guarda los mapas vectoriales o teselas descargados en el almacenamiento del dispositivo)
\n - Mapas mundiales vectoriales compactos disponibles
\n - Descarga ilimitada de mapas de países o regiones directamente desde la aplicación
\n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés, Favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable
\n
\n - Búsqueda sin conexión de direcciones y sitios (PDI)
\n - Rutas sin conexión para distancias de rango medio
\n - Modos de automóvil, bicicleta y peatón con opcional:
\n - Cambio automático de modo diurno/nocturno
\n - Zoom del mapa según la velocidad
\n - Alineación del mapa, según brújula o dirección del movimiento
<string name="osmand_plus_long_description_1000_chars">OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM)
\n
\n OsmAnd+ es un software de navegación de código abierto con acceso a una amplia variedad de datos globales de OSM. Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. Ofrece funcionalidades de rutas con y sin conexión, incluyendo guía de giro-a-giro por voz.
\n
\n OsmAnd+ es la versión de pago de la aplicación, comprándola ayudas al proyecto, financias el desarrollo de nuevas funciones, y recibes las últimas actualizaciones.
\n
\n Algunas de las funciones fundamentales:
\n - Completa funcionalidad sin conexión (guarda los mapas vectoriales o teselas descargados en el almacenamiento del dispositivo)
\n - Mapas mundiales vectoriales compactos disponibles
\n - Descarga ilimitada de mapas de países o regiones directamente desde la aplicación
\n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés, Favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable
\n
\n - Búsqueda sin conexión de direcciones y sitios (PDI)
\n - Rutas sin conexión para distancias de rango medio
\n - Modos de automóvil, bicicleta y peatón con opcional:
\n - Cambio automático de modo diurno/nocturno
\n - Zoom del mapa según la velocidad
\n - Alineación del mapa, según brújula o dirección del movimiento
\n - Indicación de carriles, mostrar límites de velocidad, voces grabadas y sintetizadas
\n</string>
<string name="filterpoi_activity">Crear filtro PDI</string>
@ -1222,8 +1221,7 @@
<string name="osmand_net_previously_installed">Todos los datos sin conexión en la versión vieja de OsmAnd son compatibles con la nueva versión, pero los puntos de Favoritos deben exportarse desde la versión vieja y luego, importarse en la nueva.</string>
<string name="build_installed">Compilación {0} instalada ({1}).</string>
<string name="downloading_build">Descargando compilación…</string>
<string name="install_selected_build">¿Instalar OsmAnd?
\nVersión: {0}
<string name="install_selected_build">¿Instalar OsmAnd {0}\?
\nFecha: {1}
\nTamaño: {2} MB</string>
<string name="loading_builds_failed">Error al recuperar la lista de compilaciones de OsmAnd</string>
@ -1993,7 +1991,6 @@
<string name="rendering_attr_hideOverground_name">Objetos en superficie</string>
<string name="replace_favorite_confirmation">¿Reemplazar el Favorito «%1$s»?</string>
<string name="routing_attr_short_way_name">Ruta de bajo consumo (corta)</string>
<string name="routing_attr_short_way_description">Usa la ruta de menor consumo en combustible (usualmente la más corta).</string>
<string name="shared_string_change">Cambiar</string>
<string name="get_started">Empezar</string>
<string name="update_all_maps_now">¿Actualizar todos los mapas ahora?</string>
@ -2063,7 +2060,7 @@
<string name="shared_string_notifications">Notificaciones</string>
<string name="gpx_no_tracks_title">Sin archivos de trazas aún</string>
<string name="gpx_no_tracks_title_folder">También puedes añadir archivos de trazas a la carpeta</string>
<string name="gpx_add_track">Añadir GPX</string>
<string name="gpx_add_track">Añadir más…</string>
<string name="shared_string_appearance">Aspecto</string>
<string name="rendering_value_fine_name">Muy fino</string>
<string name="route_calculation">Cálculo de la ruta</string>
@ -2178,7 +2175,7 @@
<string name="shared_string_time">Tiempo</string>
<string name="total_distance">Distancia total</string>
<string name="routing_attr_height_obstacles_name">Usar datos de elevación</string>
<string name="routing_attr_height_obstacles_description">Incluye como factor, la elevación del terreno (según datos de SRTM, ASTER y EU-DEM).</string>
<string name="routing_attr_driving_style_name">Estilo de conducción</string>
<string name="select_gpx_folder">Marcar la carpeta del archivo GPX</string>
<string name="file_can_not_be_moved">No se pudo mover el archivo.</string>
@ -2438,7 +2435,7 @@
<string name="average">Promedio</string>
<string name="of">%1$d de %2$d</string>
<string name="ascent_descent">Ascenso/Descenso</string>
<string name="moving_time">Tiempo moviéndose</string>
<string name="moving_time">Tiempo en movimiento</string>
<string name="max_min">Máx/Min</string>
<string name="min_max">Min/Máx</string>
<string name="rendering_value_translucent_pink_name">Rosa translúcido</string>
@ -3675,7 +3672,7 @@
<string name="height_limit_description">Proporciona la altura del vehículo, pueden aplicarse algunas restricciones de ruta para vehículos altos.</string>
<string name="weight_limit_description">Proporciona el peso del vehículo, pueden aplicarse algunas restricciones de ruta para vehículos pesados.</string>
<string name="screen_timeout">Tiempo de espera de la pantalla</string>
<string name="shared_string_tones">tonos</string>
<string name="shared_string_tones">toneladas</string>
<string name="shared_string_meters">metros</string>
<string name="details_dialog_decr">Muestra u oculta los detalles adicionales del mapa</string>
<string name="shared_string_night_map">Mapa nocturno</string>
@ -3732,8 +3729,8 @@
<string name="add_hidden_group_info">El punto añadido no será visible en el mapa, ya que el grupo elegido está oculto, se puede encontrar en «%s».</string>
<string name="track_show_start_finish_icons">Mostrar los iconos de inicio y fin</string>
<string name="select_track_width">Elegir la anchura</string>
<string name="gpx_split_interval_descr">Marca el intervalo en el que se mostrarán las marcas con distancia o tiempo en la traza.</string>
<string name="gpx_split_interval_none_descr">Marca la opción de división deseada: por tiempo o por distancia.</string>
<string name="gpx_split_interval_descr">Elige el intervalo de la traza en el que se mostrarán las marcas con la distancia o el tiempo.</string>
<string name="gpx_split_interval_none_descr">Elige la opción de división deseada: por tiempo o por distancia.</string>
<string name="shared_string_custom">Personalizado</string>
<string name="gpx_direction_arrows">Flechas de dirección</string>
<string name="track_coloring_solid">Sólido</string>
@ -3922,7 +3919,6 @@
<string name="select_picture">Elegir imagen</string>
<string name="lang_de_casual">Alemán (casual)</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
<string name="elevation_data">Puedes usar los datos de elevación para tener en cuenta el ascenso y descenso del viaje</string>
<string name="app_mode_light_aircraft">Avión ligero</string>
<string name="plan_route_join_segments">Unir segmentos</string>
<string name="plan_route_split_before">Dividir antes</string>
@ -3970,7 +3966,7 @@
<string name="select_folder">Elegir carpeta</string>
<string name="select_folder_descr">Elegir carpeta o añadir una nueva</string>
<string name="shared_string_empty">Vacío</string>
<string name="analyze_by_intervals">Analizar por intervalos (intervalo de división)</string>
<string name="analyze_by_intervals">Analizar intervalos divididos</string>
<string name="upload_to_openstreetmap">Subir a OpenStreetMap</string>
<string name="edit_track">Editar traza</string>
<string name="rename_track">Renombrar traza</string>
@ -4009,4 +4005,31 @@
<string name="delete_waypoints">Borrar puntos de referencia</string>
<string name="copy_to_map_markers">Copiar a «Marcadores del mapa»</string>
<string name="copy_to_map_favorites">Copiar a favoritos</string>
<string name="upload_photo">Subiendo</string>
<string name="upload_photo_completed">Subida completa</string>
<string name="uploading_count">Subiendo %1$d de %2$d</string>
<string name="uploaded_count">Se subieron %1$d de %2$d</string>
<string name="toast_select_edits_for_upload">Marcar ediciones a subir</string>
<string name="hillshade_slope_contour_lines">Sombreado / Pendiente / Curvas de nivel</string>
<string name="open_place_reviews_plugin_description">OpenPlaceReviews es un proyecto impulsado por la comunidad sobre lugares públicos como restaurantes, hoteles, museos, puntos de referencia. Recoge toda la información pública sobre ellos como fotos, reseñas, enlaces a otros servicios como OpenStreetMap y Wikipedia.
\n
\nTodos los datos de OpenPlaceReviews son abiertos y están disponibles para todos: http://openplacereviews.org/data.
\n
\nPuedes leer más en: https://openplacereviews.org</string>
<string name="open_place_reviews">OpenPlaceReviews</string>
<string name="opr_use_dev_url">Usar test.openplacereviews.org</string>
<string name="login_open_place_reviews">Acceder a OpenPlaceReviews</string>
<string name="activity_type_water_name">Agua</string>
<string name="activity_type_winter_name">Invierno</string>
<string name="activity_type_snowmobile_name">Motonieve</string>
<string name="activity_type_riding_name">Equitación</string>
<string name="activity_type_racing_name">Carreras</string>
<string name="activity_type_mountainbike_name">Bicicleta de montaña</string>
<string name="activity_type_cycling_name">Bicicleta</string>
<string name="activity_type_hiking_name">Senderismo</string>
<string name="activity_type_running_name">Correr</string>
<string name="activity_type_walking_name">Peatón</string>
<string name="activity_type_offroad_name">Todo terreno</string>
<string name="activity_type_motorbike_name">Motocicleta</string>
<string name="activity_type_car_name">Automóvil</string>
</resources>

View file

@ -844,7 +844,7 @@
<string name="poi_nwn_ref">Nodo de red nacional de senderismo</string>
<string name="poi_rwn_ref">Nodo de red regional de senderismo</string>
<string name="poi_lwn_ref">Nodo de red local de senderismo</string>
<string name="poi_opening_hours">Horario de atención;Horario de apertura</string>
<string name="poi_opening_hours">Horario de apertura</string>
<string name="poi_collection_times">Horario de recolección</string>
<string name="poi_description">Descripción</string>
<string name="poi_phone">Teléfono</string>
@ -2723,7 +2723,7 @@
<string name="poi_aquaculture_mussels">Acuicultura: mejillones</string>
<string name="poi_min_age">Edad mínima</string>
<string name="poi_organic_yes"></string>
<string name="poi_organic_no">No</string>
<string name="poi_organic_no">Productos orgánicos: no</string>
<string name="poi_organic_only">Únicamente</string>
<string name="poi_traffic_mirror">Espejo de tráfico</string>
<string name="poi_diplomatic_consulate">Consulado</string>
@ -3582,7 +3582,7 @@
<string name="poi_charcoal_pile">Carbonera;Pila de carbón</string>
<string name="poi_historic_tank">Tanque histórico</string>
<string name="poi_hookah_lounge">Bar de cachimbas;Salón Hookah</string>
<string name="poi_source_biomass">Fuente de energía: biomasa</string>
<string name="poi_generator_source_biomass">Fuente de energía: biomasa</string>
<string name="poi_snowmobile_filter">Acceso para motonieves</string>
<string name="poi_access_bus">Acceso para autobuses</string>
<string name="poi_access_caravan">Acceso para caravanas</string>
@ -3868,7 +3868,7 @@
<string name="poi_lavoir">Lavadero público de ropa</string>
<string name="poi_waste_transfer_station">Estación de transferencia de residuos</string>
<string name="poi_weightbridge">Báscula puente</string>
<string name="poi_ranger_station">Estación de guardabosque</string>
<string name="poi_ranger_station">Estación de guardabosques</string>
<string name="poi_water_source_lake">Lago</string>
<string name="poi_water_source_river">Río</string>
<string name="poi_water_source_well">Pozo</string>
@ -3881,4 +3881,14 @@
<string name="poi_wildlife_crossing_bat_bridge">Puente para murciélagos</string>
<string name="poi_wildlife_crossing">Cruce de vida silvestre</string>
<string name="poi_swimming_area">Área de natación</string>
<string name="poi_summit_register_yes">Registro de la cumbre: sí</string>
<string name="poi_summit_register_no">Registro de la cumbre: no</string>
<string name="poi_piste_status_open">Estado de la pista: abierto</string>
<string name="poi_piste_status_closed">Estado de la pista: cerrado</string>
<string name="poi_piste_ski_jump">Salto con esquís</string>
<string name="poi_piste_name">Nombre de la pista</string>
<string name="poi_patrolled_yes">Patrullado: sí</string>
<string name="poi_patrolled_no">Patrullado: no</string>
<string name="poi_mobile_library">Biblioteca móvil (parada)</string>
<string name="poi_gladed_yes">Arboleda: sí</string>
</resources>

View file

@ -742,7 +742,6 @@
<string name="avoid_motorway">Sin autopistas</string>
<string name="auto_zoom_map_descr">Nivel de zoom según la velocidad (mientras el mapa se sincroniza con la ubicación actual).</string>
<string name="auto_zoom_map">Zoom automático del mapa</string>
<string name="snap_to_road_descr">Ajusta la ubicación al camino durante la navegación.</string>
<string name="snap_to_road">Ajustar al camino</string>
<string name="interrupt_music_descr">Las indicaciones por voz pausan la reproducción de música.</string>
<string name="interrupt_music">Pausar música</string>
@ -772,25 +771,25 @@
\n Los PDI de OsmAnd están siendo desarrollados activamente. Nuestro proyecto y su continuo progreso, se basa en contribuciones económicas para desarrollar y probar nuevas funcionalidades. Por favor, considera comprar OsmAnd+, financiar nuevas funciones o hacer una donación general en https://osmand.net.</string>
<string name="osmand_plus_play_title_30_chars">Navegación y Mapas OsmAnd+</string>
<string name="osmand_plus_short_description_80_chars">Visor y navegador móvil global de mapas OSM con y sin conexión</string>
<string name="osmand_plus_long_description_1000_chars">OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM)
\n
\nOsmAnd+ es un software de navegación de código abierto con acceso a una amplia variedad de datos globales de OSM. Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. Ofrece funcionalidades de rutas con y sin conexión, incluyendo guía de giro-a-giro por voz.
\n
\n OsmAnd+ es la versión de pago de la aplicación, comprándola ayudas al proyecto, financias el desarrollo de nuevas funciones, y recibes las últimas actualizaciones.
\n
\n Algunas de las funciones fundamentales:
\n - Completa funcionalidad sin conexión (guarda los mapas vectoriales o teselas descargados en el almacenamiento del dispositivo)
\n - Mapas mundiales vectoriales compactos disponibles
\n - Descarga ilimitada de mapas de países o regiones directamente desde la aplicación
\n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés, Favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable
\n
\n - Búsqueda sin conexión de direcciones y sitios (PDI)
\n - Rutas sin conexión para distancias de rango medio
\n - Modos de automóvil, bicicleta y peatón con opcional:
\n - Cambio automático de modo diurno/nocturno
\n - Zoom del mapa según la velocidad
\n - Alineación del mapa, según brújula o dirección del movimiento
\n - Indicación de carriles, mostrar límites de velocidad, voces grabadas y sintetizadas
<string name="osmand_plus_long_description_1000_chars">OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM)
\n
\n OsmAnd+ es un software de navegación de código abierto con acceso a una amplia variedad de datos globales de OSM. Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. Ofrece funcionalidades de rutas con y sin conexión, incluyendo guía de giro-a-giro por voz.
\n
\n OsmAnd+ es la versión de pago de la aplicación, comprándola ayudas al proyecto, financias el desarrollo de nuevas funciones, y recibes las últimas actualizaciones.
\n
\n Algunas de las funciones fundamentales:
\n - Completa funcionalidad sin conexión (guarda los mapas vectoriales o teselas descargados en el almacenamiento del dispositivo)
\n - Mapas mundiales vectoriales compactos disponibles
\n - Descarga ilimitada de mapas de países o regiones directamente desde la aplicación
\n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés, Favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable
\n
\n - Búsqueda sin conexión de direcciones y sitios (PDI)
\n - Rutas sin conexión para distancias de rango medio
\n - Modos de automóvil, bicicleta y peatón con opcional:
\n - Cambio automático de modo diurno/nocturno
\n - Zoom del mapa según la velocidad
\n - Alineación del mapa, según brújula o dirección del movimiento
\n - Indicación de carriles, mostrar límites de velocidad, voces grabadas y sintetizadas
\n</string>
<string name="filterpoi_activity">Crear filtro PDI</string>
<string name="recalculate_route_to_your_location">Modo transporte:</string>
@ -1222,8 +1221,7 @@
<string name="osmand_net_previously_installed">Todos los datos sin conexión en la versión vieja de OsmAnd son compatibles con la nueva versión, pero los puntos de Favoritos deben exportarse desde la versión vieja y luego, importarse en la nueva.</string>
<string name="build_installed">Compilación {0} instalada ({1}).</string>
<string name="downloading_build">Descargando compilación…</string>
<string name="install_selected_build">¿Instalar OsmAnd?
\nVersión: {0}
<string name="install_selected_build">¿Instalar OsmAnd {0}\?
\nFecha: {1}
\nTamaño: {2} MB</string>
<string name="loading_builds_failed">Error al recuperar la lista de compilaciones de OsmAnd</string>
@ -1992,7 +1990,6 @@
<string name="route_stops_before">%1$s parada(s) anterior(es)</string>
<string name="rendering_attr_hideOverground_name">Objetos en superficie</string>
<string name="routing_attr_short_way_name">Ruta de bajo consumo (corta)</string>
<string name="routing_attr_short_way_description">Usa la ruta de menor consumo en combustible (usualmente la más corta).</string>
<string name="replace_favorite_confirmation">¿Reemplazar el Favorito «%1$s»?</string>
<string name="shared_string_change">Cambiar</string>
<string name="get_started">Empezar</string>
@ -2063,7 +2060,7 @@
<string name="shared_string_notifications">Notificaciones</string>
<string name="gpx_no_tracks_title">Sin archivos de trazas aún</string>
<string name="gpx_no_tracks_title_folder">También puedes añadir archivos de trazas a la carpeta</string>
<string name="gpx_add_track">Añadir GPX</string>
<string name="gpx_add_track">Añadir más…</string>
<string name="shared_string_appearance">Aspecto</string>
<string name="rendering_value_fine_name">Muy fino</string>
<string name="route_calculation">Cálculo de la ruta</string>
@ -2178,7 +2175,7 @@
<string name="shared_string_time">Tiempo</string>
<string name="total_distance">Distancia total</string>
<string name="routing_attr_height_obstacles_name">Usar datos de elevación</string>
<string name="routing_attr_height_obstacles_description">Incluye como factor, la elevación del terreno (según datos de SRTM, ASTER y EU-DEM).</string>
<string name="routing_attr_driving_style_name">Estilo de conducción</string>
<string name="select_gpx_folder">Marcar la carpeta del archivo GPX</string>
<string name="file_can_not_be_moved">No se pudo mover el archivo.</string>
@ -2438,7 +2435,7 @@
<string name="average">Promedio</string>
<string name="of">%1$d de %2$d</string>
<string name="ascent_descent">Ascenso/Descenso</string>
<string name="moving_time">Tiempo moviéndose</string>
<string name="moving_time">Tiempo en movimiento</string>
<string name="max_min">Máx/Min</string>
<string name="min_max">Min/Máx</string>
<string name="rendering_value_translucent_pink_name">Rosa translúcido</string>
@ -3650,7 +3647,7 @@
<string name="system_screen_timeout">Usar el tiempo de espera de la pantalla del sistema</string>
<string name="storage_format">Formato de almacenamiento</string>
<string name="sqlite_db_file">Archivo SQLiteDB</string>
<string name="shared_string_tones">tonos</string>
<string name="shared_string_tones">toneladas</string>
<string name="shared_string_night_map">Mapa nocturno</string>
<string name="shared_string_meters">metros</string>
<string name="shared_string_delete_all_q">¿Borrar todo\?</string>
@ -3728,8 +3725,8 @@
<string name="route_between_points">Ruta entre puntos</string>
<string name="plan_a_route">Planificar ruta</string>
<string name="osm_edit_closed_note">Nota de OSM cerrada</string>
<string name="gpx_split_interval_none_descr">Marca la opción de división deseada: por tiempo o por distancia.</string>
<string name="gpx_split_interval_descr">Marca el intervalo en el que se mostrarán las marcas con distancia o tiempo en la traza.</string>
<string name="gpx_split_interval_none_descr">Elige la opción de división deseada: por tiempo o por distancia.</string>
<string name="gpx_split_interval_descr">Elige el intervalo de la traza en el que se mostrarán las marcas con la distancia o el tiempo.</string>
<string name="gpx_direction_arrows">Flechas de dirección</string>
<string name="app_mode_wheelchair_forward">Silla de ruedas (hacia adelante)</string>
<string name="app_mode_wheelchair">Silla de ruedas</string>
@ -3934,7 +3931,6 @@
<string name="plan_route_add_new_segment">Añadir nuevo segmento</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
<string name="lang_de_casual">Alemán (casual)</string>
<string name="elevation_data">Puedes usar los datos de elevación para tener en cuenta el ascenso y descenso del viaje</string>
<string name="app_mode_light_aircraft">Avión ligero</string>
<string name="shared_string_last_used">Usado por última vez</string>
<string name="routing_attr_prefer_hiking_routes_name">Preferir rutas de senderismo</string>
@ -3947,32 +3943,93 @@
<string name="profile_type_user_string">Perfil de usuario</string>
<string name="profile_type_osmand_string">Perfil de OsmAnd</string>
<string name="profile_by_default_description">Elige el perfil que será usado al iniciar la aplicación.</string>
<string name="voice_prompts_timetable">Tiempo de indicaciones por voz</string>
<string name="voice_prompts_timetable">Tiempo de los avisos por voz</string>
<string name="select_folder">Elegir carpeta</string>
<string name="shared_string_folders">Carpetas</string>
<string name="change_folder">Cambiar carpeta</string>
<string name="add_online_routing_engine"></string>
<string name="edit_online_routing_engine"></string>
<string name="shared_string_subtype"></string>
<string name="shared_string_vehicle"></string>
<string name="shared_string_api_key"></string>
<string name="shared_string_server_url"></string>
<string name="shared_string_enter_param"></string>
<string name="keep_it_empty_if_not"></string>
<string name="online_routing_example_hint"></string>
<string name="test_route_calculation"></string>
<string name="routing_engine_vehicle_type_driving"></string>
<string name="routing_engine_vehicle_type_foot"></string>
<string name="routing_engine_vehicle_type_bike"></string>
<string name="routing_engine_vehicle_type_car"></string>
<string name="message_error_recheck_parameters"></string>
<string name="copy_address"></string>
<string name="online_routing_engine"></string>
<string name="online_routing_engines"></string>
<string name="select_folder_descr"></string>
<string name="shared_string_empty"></string>
<string name="analyze_by_intervals"></string>
<string name="upload_to_openstreetmap"></string>
<string name="edit_track"></string>
<string name="rename_track"></string>
<string name="add_online_routing_engine">Añadir motor de navegación en línea</string>
<string name="edit_online_routing_engine">Editar motor de navegación en línea</string>
<string name="shared_string_subtype">Subtipo</string>
<string name="shared_string_vehicle">Vehículo</string>
<string name="shared_string_api_key">Clave de la API</string>
<string name="shared_string_server_url">URL del servidor</string>
<string name="shared_string_enter_param">Ingresa parámetro</string>
<string name="keep_it_empty_if_not">Si no, mantenerlo vacío</string>
<string name="online_routing_example_hint">La URL con todos los parámetros se verá así:</string>
<string name="test_route_calculation">Cálculo de la ruta de prueba</string>
<string name="routing_engine_vehicle_type_driving">Automóvil</string>
<string name="routing_engine_vehicle_type_foot">Peatón</string>
<string name="routing_engine_vehicle_type_bike">Bicicleta</string>
<string name="routing_engine_vehicle_type_car">Automóvil</string>
<string name="message_error_recheck_parameters"/>
<string name="copy_address">Copiar dirección</string>
<string name="online_routing_engine">Motor de navegación en línea</string>
<string name="online_routing_engines">Motores de navegación en línea</string>
<string name="select_folder_descr">Elegir carpeta o añadir una nueva</string>
<string name="shared_string_empty">Vacío</string>
<string name="analyze_by_intervals">Analizar intervalos divididos</string>
<string name="upload_to_openstreetmap">Subir a OpenStreetMap</string>
<string name="edit_track">Editar traza</string>
<string name="rename_track">Renombrar traza</string>
<string name="uploading_count">Subiendo %1$d de %2$d</string>
<string name="uploaded_count">Se subieron %1$d de %2$d</string>
<string name="upload_photo_completed">Subida completa</string>
<string name="upload_photo">Subiendo</string>
<string name="toast_select_edits_for_upload">Marcar ediciones a subir</string>
<string name="start_recording">Iniciar grabación</string>
<string name="show_track_on_map">Mostrar traza en el mapa</string>
<string name="shared_string_turn">Girar</string>
<string name="shared_string_sec">seg</string>
<string name="routing_engine_vehicle_type_wheelchair">Silla de ruedas</string>
<string name="routing_engine_vehicle_type_walking">Peatón</string>
<string name="routing_engine_vehicle_type_truck">Camión</string>
<string name="routing_engine_vehicle_type_small_truck">Camión pequeño</string>
<string name="routing_engine_vehicle_type_scooter">Motoneta</string>
<string name="routing_engine_vehicle_type_racingbike">Bicicleta de carreras</string>
<string name="routing_engine_vehicle_type_mtb">Bicicleta de montaña</string>
<string name="routing_engine_vehicle_type_hiking">Senderismo</string>
<string name="routing_engine_vehicle_type_hgv">Vehículos pesados</string>
<string name="routing_engine_vehicle_type_cycling_road">Ciclismo de ruta</string>
<string name="routing_engine_vehicle_type_cycling_regular">Ciclismo regular</string>
<string name="routing_engine_vehicle_type_cycling_mountain">Ciclismo de montaña</string>
<string name="routing_engine_vehicle_type_cycling_electric">Ciclismo eléctrico</string>
<string name="opr_use_dev_url">Usar test.openplacereviews.org</string>
<string name="open_place_reviews_plugin_description">OpenPlaceReviews es un proyecto impulsado por la comunidad sobre lugares públicos como restaurantes, hoteles, museos, puntos de referencia. Recoge toda la información pública sobre ellos como fotos, reseñas, enlaces a otros servicios como OpenStreetMap y Wikipedia.
\n
\nTodos los datos de OpenPlaceReviews son abiertos y están disponibles para todos: http://openplacereviews.org/data.
\n
\nPuedes leer más en: https://openplacereviews.org</string>
<string name="open_place_reviews">OpenPlaceReviews</string>
<string name="message_server_error">Error de servidor: %1$s</string>
<string name="message_name_is_already_exists">El nombre ya existe</string>
<string name="login_open_place_reviews">Acceder a OpenPlaceReviews</string>
<string name="hillshade_slope_contour_lines">Sombreado / Pendiente / Curvas de nivel</string>
<string name="delete_waypoints">Borrar puntos de referencia</string>
<string name="delete_online_routing_engine">¿Borrar este motor de navegación en línea\?</string>
<string name="copy_to_map_markers">Copiar a «Marcadores del mapa»</string>
<string name="copy_to_map_favorites">Copiar a favoritos</string>
<string name="context_menu_read_full">Leer completo</string>
<string name="context_menu_edit_descr">Editar descripción</string>
<string name="announcement_time_title">Tiempo de anuncio</string>
<string name="announcement_time_prepare_long">Preparación larga</string>
<string name="announcement_time_prepare">Preparar</string>
<string name="announcement_time_passing">Pasando</string>
<string name="announcement_time_off_route">Fuera de la ruta</string>
<string name="announcement_time_intervals">Intervalos de tiempo y distancia</string>
<string name="announcement_time_descr">El tiempo de anuncio de las diferentes indicaciones por voz depende del tipo de mensaje, la velocidad de navegación actual y la velocidad de navegación predefinida.</string>
<string name="announcement_time_arrive">Has llegado al destino</string>
<string name="announcement_time_approach">Acercarse</string>
<string name="activity_type_winter_name">Invierno</string>
<string name="activity_type_water_name">Agua</string>
<string name="activity_type_walking_name">Peatón</string>
<string name="activity_type_snowmobile_name">Motonieve</string>
<string name="activity_type_running_name">Correr</string>
<string name="activity_type_riding_name">Equitación</string>
<string name="activity_type_racing_name">Carreras</string>
<string name="activity_type_offroad_name">Todo terreno</string>
<string name="activity_type_mountainbike_name">Bicicleta de montaña</string>
<string name="activity_type_motorbike_name">Motocicleta</string>
<string name="activity_type_hiking_name">Senderismo</string>
<string name="activity_type_cycling_name">Bicicleta</string>
<string name="activity_type_car_name">Automóvil</string>
</resources>

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