Merge branch 'master' into road-surface
17
AUTHORS
|
@ -1,17 +0,0 @@
|
|||
Copyright © OsmAnd 2010–2014
|
||||
### Credits to all major contributors/developers:
|
||||
* Victor Shcherb – all parts of the project, originator
|
||||
* Pavol Zibrita – first contributor and developer of some utilities
|
||||
* Dusan Kazik – one of the first contributors
|
||||
* Andre Van Atten – project supporter, active forum participant, one of the first users.
|
||||
* Dr. Hardy Mueller – map appearance concept and base renderers, international consistency and testing, usability, app scoping, concepts, documentation, wiki, market research.
|
||||
* Yvecai – main contributor to Contour Lines and Hillshade maps
|
||||
* Alexey Pelykh – C++ developer, created native library and made application much snappier.
|
||||
* Max (Zahnstocher) – Java contributor, active forum participant.
|
||||
* Harry van der Wolf – contributor to country boundaries, configuration files, address files, and much else; active forum participant.
|
||||
* Robin ‘ypid’ Schneider – opening hours contributor
|
||||
|
||||
### Other Pull requests
|
||||
Copyright © All authors of translations and pull requests could be found in commits history:
|
||||
- Translations are under special “contributor” name ‘weblate’
|
||||
- Pull requests have two committers, first is original contributor and second is project maintainer
|
7
AUTHORS.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
### Credits to all major contributors/developers:
|
||||
Major contributors /developers listed here https://github.com/osmandapp/osmandapp.github.io/blob/master/website/help/about.html#L8
|
||||
|
||||
### Other Pull requests
|
||||
Copyright © All authors of translations and pull requests could be found in commits history:
|
||||
- Translations are under special “contributor” name ‘weblate’
|
||||
- Pull requests have two committers, first is original contributor and second is project maintainer
|
|
@ -40,9 +40,15 @@ task collectRegionsInfoResources(type: Copy) {
|
|||
}
|
||||
|
||||
task collectTestResources(type: Copy) {
|
||||
from "../../resources/test-resources"
|
||||
into "src/test/resources/"
|
||||
include "*"
|
||||
from("../../resources/test-resources") {
|
||||
include "*"
|
||||
}
|
||||
from("../../resources/poi") {
|
||||
include "poi_types.xml"
|
||||
include "/phrases/en/*"
|
||||
//include "/phrases/ru/*"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -124,6 +124,9 @@ public class CollatorStringMatcher implements StringMatcher {
|
|||
public static boolean cstartsWith(Collator collator, String searchInParam, String theStart,
|
||||
boolean checkBeginning, boolean checkSpaces, boolean equals, boolean trim) {
|
||||
String searchIn = searchInParam.toLowerCase(Locale.getDefault());
|
||||
if (trim && searchIn.length() > 0) {
|
||||
searchIn += " ";
|
||||
}
|
||||
int searchInLength = searchIn.length();
|
||||
if (trim && searchInLength > 0 && theStart.length() > searchInLength) {
|
||||
theStart = theStart.substring(0, searchInLength);
|
||||
|
|
|
@ -130,10 +130,10 @@ public class NativeLibrary {
|
|||
|
||||
public RouteSegmentResult[] runNativeRouting(int sx31, int sy31, int ex31, int ey31, RoutingConfiguration config,
|
||||
RouteRegion[] regions, RouteCalculationProgress progress, PrecalculatedRouteDirection precalculatedRouteDirection,
|
||||
boolean basemap) {
|
||||
boolean basemap, boolean publicTransport, boolean startTransportStop, boolean targetTransportStop) {
|
||||
// config.router.printRules(System.out);
|
||||
return nativeRouting(new int[] { sx31, sy31, ex31, ey31 }, config, config.initialDirection == null ? -360 : config.initialDirection.floatValue(),
|
||||
regions, progress, precalculatedRouteDirection, basemap);
|
||||
regions, progress, precalculatedRouteDirection, basemap, publicTransport, startTransportStop, targetTransportStop);
|
||||
}
|
||||
|
||||
|
||||
|
@ -156,7 +156,9 @@ public class NativeLibrary {
|
|||
protected static native RouteDataObject[] getRouteDataObjects(RouteRegion reg, long rs, int x31, int y31);
|
||||
|
||||
protected static native RouteSegmentResult[] nativeRouting(int[] coordinates, RoutingConfiguration r,
|
||||
float initDirection, RouteRegion[] regions, RouteCalculationProgress progress, PrecalculatedRouteDirection precalculatedRouteDirection, boolean basemap);
|
||||
float initDirection, RouteRegion[] regions, RouteCalculationProgress progress,
|
||||
PrecalculatedRouteDirection precalculatedRouteDirection, boolean basemap,
|
||||
boolean publicTransport, boolean startTransportStop, boolean targetTransportStop);
|
||||
|
||||
protected static native void deleteSearchResult(long searchResultHandle);
|
||||
|
||||
|
|
|
@ -1,37 +1,9 @@
|
|||
package net.osmand.binary;
|
||||
|
||||
|
||||
import gnu.trove.list.array.TIntArrayList;
|
||||
import gnu.trove.map.TIntObjectMap;
|
||||
import gnu.trove.map.hash.TIntObjectHashMap;
|
||||
import gnu.trove.map.hash.TLongObjectHashMap;
|
||||
import gnu.trove.set.hash.TIntHashSet;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.io.Reader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.TreeMap;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import com.google.protobuf.CodedInputStream;
|
||||
import com.google.protobuf.CodedOutputStream;
|
||||
import com.google.protobuf.WireFormat;
|
||||
|
||||
import net.osmand.Collator;
|
||||
import net.osmand.CollatorStringMatcher;
|
||||
|
@ -72,9 +44,37 @@ import org.w3c.dom.NodeList;
|
|||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import com.google.protobuf.CodedInputStream;
|
||||
import com.google.protobuf.CodedOutputStream;
|
||||
import com.google.protobuf.WireFormat;
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.io.Reader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.TreeMap;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import gnu.trove.list.array.TIntArrayList;
|
||||
import gnu.trove.map.TIntObjectMap;
|
||||
import gnu.trove.map.hash.TIntObjectHashMap;
|
||||
import gnu.trove.map.hash.TLongObjectHashMap;
|
||||
import gnu.trove.set.hash.TIntHashSet;
|
||||
|
||||
public class BinaryMapIndexReader {
|
||||
|
||||
|
@ -130,7 +130,7 @@ public class BinaryMapIndexReader {
|
|||
init();
|
||||
}
|
||||
|
||||
/*private */BinaryMapIndexReader(final RandomAccessFile raf, File file, boolean init) throws IOException {
|
||||
public BinaryMapIndexReader(final RandomAccessFile raf, File file, boolean init) throws IOException {
|
||||
this.raf = raf;
|
||||
this.file = file;
|
||||
codedIS = CodedInputStream.newInstance(raf);
|
||||
|
@ -554,13 +554,15 @@ public class BinaryMapIndexReader {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public List<TransportStop> searchTransportIndex(SearchRequest<TransportStop> req) throws IOException {
|
||||
for (TransportIndex index : transportIndexes) {
|
||||
if (index.stopsFileLength == 0 || index.right < req.left || index.left > req.right || index.top > req.bottom
|
||||
|| index.bottom < req.top) {
|
||||
continue;
|
||||
}
|
||||
if (req.stringTable != null) {
|
||||
req.stringTable.clear();
|
||||
}
|
||||
codedIS.seek(index.stopsFileOffset);
|
||||
int oldLimit = codedIS.pushLimit(index.stopsFileLength);
|
||||
int offset = req.searchResults.size();
|
||||
|
@ -875,6 +877,8 @@ public class BinaryMapIndexReader {
|
|||
continue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// lazy initializing trees
|
||||
if (index.trees == null) {
|
||||
index.trees = new ArrayList<MapTree>();
|
||||
|
@ -2074,14 +2078,14 @@ public class BinaryMapIndexReader {
|
|||
private static boolean testAddressSearch = false;
|
||||
private static boolean testAddressSearchName = false;
|
||||
private static boolean testAddressJustifySearch = false;
|
||||
private static boolean testPoiSearch = true;
|
||||
private static boolean testPoiSearch = false;
|
||||
private static boolean testPoiSearchOnPath = false;
|
||||
private static boolean testTransportSearch = true;
|
||||
|
||||
private static int sleft = MapUtils.get31TileNumberX(4.7495);
|
||||
private static int sright = MapUtils.get31TileNumberX(4.8608);
|
||||
private static int stop = MapUtils.get31TileNumberY(52.3395);
|
||||
private static int sbottom = MapUtils.get31TileNumberY(52.2589);
|
||||
private static int sleft = MapUtils.get31TileNumberX(27.55079);
|
||||
private static int sright = MapUtils.get31TileNumberX(27.55317);
|
||||
private static int stop = MapUtils.get31TileNumberY(53.89378);
|
||||
private static int sbottom = MapUtils.get31TileNumberY(53.89276);
|
||||
private static int szoom = 15;
|
||||
|
||||
private static void println(String s) {
|
||||
|
@ -2090,7 +2094,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(System.getProperty("maps") + "/Map.obf");
|
||||
fl = new File(System.getProperty("maps") + "/Belarus_europe_2.obf");
|
||||
|
||||
RandomAccessFile raf = new RandomAccessFile(fl, "r");
|
||||
|
||||
|
@ -2280,6 +2284,9 @@ public class BinaryMapIndexReader {
|
|||
println(" " + route.getRef() + " " + route.getName() + " " + route.getDistance() + " "
|
||||
+ route.getAvgBothDistance());
|
||||
StringBuilder b = new StringBuilder();
|
||||
if(route.getForwardWays() == null) {
|
||||
continue;
|
||||
}
|
||||
for(Way w : route.getForwardWays()) {
|
||||
b.append(w.getNodes()).append(" ");
|
||||
}
|
||||
|
|
|
@ -5,17 +5,20 @@ import gnu.trove.map.hash.TIntObjectHashMap;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import net.osmand.binary.BinaryMapIndexReader.SearchRequest;
|
||||
import net.osmand.binary.OsmandOdb.TransportRouteSchedule;
|
||||
import net.osmand.data.TransportSchedule;
|
||||
import net.osmand.data.TransportStop;
|
||||
import net.osmand.data.TransportStopExit;
|
||||
import net.osmand.osm.edit.Node;
|
||||
import net.osmand.osm.edit.Way;
|
||||
import net.osmand.util.MapUtils;
|
||||
import net.sf.junidecode.Junidecode;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.google.protobuf.CodedInputStream;
|
||||
import com.google.protobuf.WireFormat;
|
||||
|
||||
|
@ -238,6 +241,11 @@ public class BinaryMapTransportReaderAdapter {
|
|||
stringTable.putIfAbsent(i, "");
|
||||
return ((char) i)+"";
|
||||
}
|
||||
|
||||
private String regStr(TIntObjectHashMap<String> stringTable, int i) throws IOException{
|
||||
stringTable.putIfAbsent(i, "");
|
||||
return ((char) i)+"";
|
||||
}
|
||||
|
||||
public net.osmand.data.TransportRoute getTransportRoute(int filePointer, TIntObjectHashMap<String> stringTable,
|
||||
boolean onlyDescription) throws IOException {
|
||||
|
@ -394,12 +402,12 @@ public class BinaryMapTransportReaderAdapter {
|
|||
int oldLimit = codedIS.pushLimit(ind.stringTable.length);
|
||||
int current = 0;
|
||||
int i = 0;
|
||||
while (i < values.length) {
|
||||
while (i < values.length && codedIS.getBytesUntilLimit() > 0) {
|
||||
int t = codedIS.readTag();
|
||||
int tag = WireFormat.getTagFieldNumber(t);
|
||||
switch (tag) {
|
||||
case 0:
|
||||
break;
|
||||
return;
|
||||
case OsmandOdb.StringTable.S_FIELD_NUMBER:
|
||||
if (current == values[i]) {
|
||||
String value = codedIS.readString();
|
||||
|
@ -446,12 +454,26 @@ public class BinaryMapTransportReaderAdapter {
|
|||
}
|
||||
|
||||
protected void initializeNames(TIntObjectHashMap<String> stringTable, TransportStop s) {
|
||||
for (TransportStopExit exit : s.getExits()) {
|
||||
if (exit.getRef().length() > 0) {
|
||||
exit.setRef(stringTable.get(exit.getRef().charAt(0)));
|
||||
}
|
||||
}
|
||||
if (s.getName().length() > 0) {
|
||||
s.setName(stringTable.get(s.getName().charAt(0)));
|
||||
}
|
||||
if (s.getEnName(false).length() > 0) {
|
||||
s.setEnName(stringTable.get(s.getEnName(false).charAt(0)));
|
||||
}
|
||||
Map<String, String> namesMap = new HashMap<>(s.getNamesMap(false));
|
||||
if (!s.getNamesMap(false).isEmpty()) {
|
||||
s.getNamesMap(false).clear();
|
||||
}
|
||||
Iterator<Map.Entry<String, String>> it = namesMap.entrySet().iterator();
|
||||
while (it.hasNext()) {
|
||||
Map.Entry<String, String> e = it.next();
|
||||
s.setName(stringTable.get(e.getKey().charAt(0)), stringTable.get(e.getValue().charAt(0)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -517,6 +539,7 @@ public class BinaryMapTransportReaderAdapter {
|
|||
TransportStop dataObject = new TransportStop();
|
||||
dataObject.setLocation(BinaryMapIndexReader.TRANSPORT_STOP_ZOOM, x, y);
|
||||
dataObject.setFileOffset(shift);
|
||||
List<String> names = null;
|
||||
while(true){
|
||||
int t = codedIS.readTag();
|
||||
tag = WireFormat.getTagFieldNumber(t);
|
||||
|
@ -543,16 +566,76 @@ public class BinaryMapTransportReaderAdapter {
|
|||
} else {
|
||||
skipUnknownField(t);
|
||||
}
|
||||
|
||||
break;
|
||||
case OsmandOdb.TransportStop.ADDITIONALNAMEPAIRS_FIELD_NUMBER :
|
||||
if (req.stringTable != null) {
|
||||
int sizeL = codedIS.readRawVarint32();
|
||||
int oldRef = codedIS.pushLimit(sizeL);
|
||||
while (codedIS.getBytesUntilLimit() > 0) {
|
||||
dataObject.setName(regStr(req.stringTable,codedIS.readRawVarint32()),
|
||||
regStr(req.stringTable,codedIS.readRawVarint32()));
|
||||
}
|
||||
codedIS.popLimit(oldRef);
|
||||
} else {
|
||||
skipUnknownField(t);
|
||||
}
|
||||
break;
|
||||
case OsmandOdb.TransportStop.ID_FIELD_NUMBER :
|
||||
dataObject.setId(codedIS.readSInt64());
|
||||
break;
|
||||
case OsmandOdb.TransportStop.EXITS_FIELD_NUMBER :
|
||||
int length = codedIS.readRawVarint32();
|
||||
int oldLimit = codedIS.pushLimit(length);
|
||||
|
||||
TransportStopExit transportStopExit = readTransportStopExit(cleft, ctop, req);
|
||||
dataObject.addExit(transportStopExit);
|
||||
codedIS.popLimit(oldLimit);
|
||||
break;
|
||||
default:
|
||||
skipUnknownField(t);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private TransportStopExit readTransportStopExit(int cleft, int ctop, SearchRequest<TransportStop> req) throws IOException {
|
||||
|
||||
TransportStopExit dataObject = new TransportStopExit();
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
|
||||
while (true) {
|
||||
int t = codedIS.readTag();
|
||||
int tag = WireFormat.getTagFieldNumber(t);
|
||||
|
||||
switch (tag) {
|
||||
case 0:
|
||||
if (dataObject.getName("en").length() == 0) {
|
||||
dataObject.setEnName(Junidecode.unidecode(dataObject.getName()));
|
||||
}
|
||||
if (x != 0 || y != 0) {
|
||||
dataObject.setLocation(BinaryMapIndexReader.TRANSPORT_STOP_ZOOM, x, y);
|
||||
}
|
||||
return dataObject;
|
||||
case OsmandOdb.TransportStopExit.REF_FIELD_NUMBER:
|
||||
if (req.stringTable != null) {
|
||||
dataObject.setRef(regStr(req.stringTable));
|
||||
} else {
|
||||
skipUnknownField(t);
|
||||
}
|
||||
break;
|
||||
case OsmandOdb.TransportStopExit.DX_FIELD_NUMBER:
|
||||
x = codedIS.readSInt32() + cleft;
|
||||
break;
|
||||
case OsmandOdb.TransportStopExit.DY_FIELD_NUMBER:
|
||||
y = codedIS.readSInt32() + ctop;
|
||||
break;
|
||||
default:
|
||||
skipUnknownField(t);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ public class CommonWords {
|
|||
|
||||
public static int getCommonSearch(String name) {
|
||||
Integer i = commonWordsDictionary.get(name);
|
||||
return i == null ? getFrequentlyUsed(name) : i.intValue();
|
||||
return i == null ? getFrequentlyUsed(name) : i.intValue() + frequentlyUsedWordsDictionary.size();
|
||||
}
|
||||
|
||||
public static int getCommonGeocoding(String name) {
|
||||
|
|
|
@ -578,7 +578,21 @@ public class RouteDataObject {
|
|||
public boolean loop(){
|
||||
return pointsX[0] == pointsX[pointsX.length - 1] && pointsY[0] == pointsY[pointsY.length - 1] ;
|
||||
}
|
||||
|
||||
|
||||
public boolean platform(){
|
||||
int sz = types.length;
|
||||
for(int i=0; i<sz; i++) {
|
||||
RouteTypeRule r = region.quickGetEncodingRule(types[i]);
|
||||
if(r.getTag().equals("railway") && r.getValue().equals("platform")) {
|
||||
return true;
|
||||
}
|
||||
if(r.getTag().equals("public_transport") && r.getValue().equals("platform")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean roundabout(){
|
||||
int sz = types.length;
|
||||
for(int i=0; i<sz; i++) {
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
package net.osmand.data;
|
||||
|
||||
import net.osmand.Location;
|
||||
import net.osmand.osm.MapPoiTypes;
|
||||
import net.osmand.osm.PoiCategory;
|
||||
import net.osmand.osm.edit.Node;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
@ -317,4 +320,49 @@ public class Amenity extends MapObject {
|
|||
public boolean isClosed() {
|
||||
return OSM_DELETE_VALUE.equals(getAdditionalInfo(OSM_DELETE_TAG));
|
||||
}
|
||||
|
||||
public JSONObject toJSON() {
|
||||
JSONObject json = super.toJSON();
|
||||
json.put("subType", subType);
|
||||
json.put("type", type.getKeyName());
|
||||
json.put("openingHours", openingHours);
|
||||
if (additionalInfo != null && additionalInfo.size() > 0) {
|
||||
JSONObject additionalInfoObj = new JSONObject();
|
||||
for (Entry<String, String> e : additionalInfo.entrySet()) {
|
||||
additionalInfoObj.put(e.getKey(), e.getValue());
|
||||
}
|
||||
json.put("additionalInfo", additionalInfoObj);
|
||||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
public static Amenity parseJSON(JSONObject json) {
|
||||
Amenity a = new Amenity();
|
||||
MapObject.parseJSON(json, a);
|
||||
|
||||
if (json.has("subType")) {
|
||||
a.subType = json.getString("subType");
|
||||
}
|
||||
if (json.has("type")) {
|
||||
String categoryName = json.getString("type");
|
||||
a.setType(MapPoiTypes.getDefault().getPoiCategoryByName(categoryName));
|
||||
} else {
|
||||
a.setType(MapPoiTypes.getDefault().getOtherPoiCategory());
|
||||
}
|
||||
if (json.has("openingHours")) {
|
||||
a.openingHours = json.getString("openingHours");
|
||||
}
|
||||
if (json.has("additionalInfo")) {
|
||||
JSONObject namesObj = json.getJSONObject("additionalInfo");
|
||||
a.additionalInfo = new HashMap<>();
|
||||
Iterator<String> iterator = namesObj.keys();
|
||||
while (iterator.hasNext()) {
|
||||
String key = iterator.next();
|
||||
String value = namesObj.getString(key);
|
||||
a.additionalInfo.put(key, value);
|
||||
}
|
||||
}
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
package net.osmand.data;
|
||||
|
||||
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
public class Building extends MapObject {
|
||||
|
||||
private String postcode;
|
||||
|
@ -216,4 +219,43 @@ public class Building extends MapObject {
|
|||
return "";
|
||||
}
|
||||
|
||||
public JSONObject toJSON() {
|
||||
JSONObject json = super.toJSON();
|
||||
json.put("postcode", postcode);
|
||||
if (latLon2 != null) {
|
||||
json.put("lat2", String.format(Locale.US, "%.5f", latLon2.getLatitude()));
|
||||
json.put("lon2", String.format(Locale.US, "%.5f", latLon2.getLongitude()));
|
||||
}
|
||||
if (interpolationType != null) {
|
||||
json.put("interpolationType", interpolationType.name());
|
||||
}
|
||||
if (interpolationInterval != 0) {
|
||||
json.put("interpolationInterval", interpolationInterval);
|
||||
}
|
||||
json.put("name2", name2);
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
public static Building parseJSON(JSONObject json) throws IllegalArgumentException {
|
||||
Building b = new Building();
|
||||
MapObject.parseJSON(json, b);
|
||||
|
||||
if (json.has("postcode")) {
|
||||
b.postcode = json.getString("postcode");
|
||||
}
|
||||
if (json.has("lat2") && json.has("lon2")) {
|
||||
b.latLon2 = new LatLon(json.getDouble("lat2"), json.getDouble("lon2"));
|
||||
}
|
||||
if (json.has("interpolationType")) {
|
||||
b.interpolationType = BuildingInterpolation.valueOf(json.getString("interpolationType"));
|
||||
}
|
||||
if (json.has("interpolationInterval")) {
|
||||
b.interpolationInterval = json.getInt("interpolationInterval");
|
||||
}
|
||||
if (json.has("name2")) {
|
||||
b.name2 = json.getString("name2");
|
||||
}
|
||||
return b;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
package net.osmand.data;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
@ -55,7 +58,6 @@ public class City extends MapObject {
|
|||
return new City(postcode, POSTCODE_INTERNAL_ID--);
|
||||
}
|
||||
|
||||
|
||||
public City(CityType type) {
|
||||
if (type == null) {
|
||||
throw new NullPointerException();
|
||||
|
@ -156,4 +158,47 @@ public class City extends MapObject {
|
|||
return m;
|
||||
}
|
||||
|
||||
public JSONObject toJSON() {
|
||||
return toJSON(true);
|
||||
}
|
||||
|
||||
public JSONObject toJSON(boolean includingBuildings) {
|
||||
JSONObject json = super.toJSON();
|
||||
json.put("type", type.name());
|
||||
json.put("postcode", postcode);
|
||||
JSONArray listOfStreetsArr = new JSONArray();
|
||||
for (Street s : listOfStreets) {
|
||||
listOfStreetsArr.put(s.toJSON(includingBuildings));
|
||||
}
|
||||
json.put("listOfStreets", listOfStreetsArr);
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
public static City parseJSON(JSONObject json) throws IllegalArgumentException {
|
||||
CityType type;
|
||||
if (json.has("type")) {
|
||||
type = CityType.valueOf(json.getString("type"));
|
||||
} else {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
City c = new City(type);
|
||||
MapObject.parseJSON(json, c);
|
||||
|
||||
if (json.has("postcode")) {
|
||||
c.postcode = json.getString("postcode");
|
||||
}
|
||||
if (json.has("listOfStreets")) {
|
||||
JSONArray streetsArr = json.getJSONArray("listOfStreets");
|
||||
c.listOfStreets = new ArrayList<>();
|
||||
for (int i = 0; i < streetsArr.length(); i++) {
|
||||
JSONObject streetObj = streetsArr.getJSONObject(i);
|
||||
Street street = Street.parseJSON(c, streetObj);
|
||||
if (street != null) {
|
||||
c.listOfStreets.add(street);
|
||||
}
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,19 +1,23 @@
|
|||
package net.osmand.data;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import net.osmand.Collator;
|
||||
import net.osmand.OsmAndCollator;
|
||||
import net.osmand.util.Algorithms;
|
||||
import net.sf.junidecode.Junidecode;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
|
||||
public abstract class MapObject implements Comparable<MapObject> {
|
||||
|
||||
|
@ -73,6 +77,15 @@ public abstract class MapObject implements Comparable<MapObject> {
|
|||
}
|
||||
}
|
||||
|
||||
public void setNames(Map<String, String> name) {
|
||||
if (name != null) {
|
||||
if (names == null) {
|
||||
names = new HashMap<String, String>();
|
||||
}
|
||||
names.putAll(name);
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, String> getNamesMap(boolean includeEn) {
|
||||
if (!includeEn || Algorithms.isEmpty(enName)) {
|
||||
if (names == null) {
|
||||
|
@ -289,4 +302,48 @@ public abstract class MapObject implements Comparable<MapObject> {
|
|||
return referenceFile;
|
||||
}
|
||||
|
||||
public JSONObject toJSON() {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("name", name);
|
||||
json.put("enName", enName);
|
||||
if (names != null && names.size() > 0) {
|
||||
JSONObject namesObj = new JSONObject();
|
||||
for (Entry<String, String> e : names.entrySet()) {
|
||||
namesObj.put(e.getKey(), e.getValue());
|
||||
}
|
||||
json.put("names", namesObj);
|
||||
}
|
||||
if (location != null) {
|
||||
json.put("lat", String.format(Locale.US, "%.5f", location.getLatitude()));
|
||||
json.put("lon", String.format(Locale.US, "%.5f", location.getLongitude()));
|
||||
}
|
||||
json.put("id", id);
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
protected static void parseJSON(JSONObject json, MapObject o) {
|
||||
if (json.has("name")) {
|
||||
o.name = json.getString("name");
|
||||
}
|
||||
if (json.has("enName")) {
|
||||
o.enName = json.getString("enName");
|
||||
}
|
||||
if (json.has("names")) {
|
||||
JSONObject namesObj = json.getJSONObject("names");
|
||||
o.names = new HashMap<>();
|
||||
Iterator<String> iterator = namesObj.keys();
|
||||
while (iterator.hasNext()) {
|
||||
String key = iterator.next();
|
||||
String value = namesObj.getString(key);
|
||||
o.names.put(key, value);
|
||||
}
|
||||
}
|
||||
if (json.has("lat") && json.has("lon")) {
|
||||
o.location = new LatLon(json.getDouble("lat"), json.getDouble("lon"));
|
||||
}
|
||||
if (json.has("id")) {
|
||||
o.id = json.getLong("id");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
package net.osmand.data;
|
||||
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
|
||||
public class Street extends MapObject {
|
||||
|
||||
|
@ -86,4 +89,57 @@ public class Street extends MapObject {
|
|||
}
|
||||
return nm;
|
||||
}
|
||||
|
||||
public JSONObject toJSON() {
|
||||
return toJSON(true);
|
||||
}
|
||||
|
||||
public JSONObject toJSON(boolean includingBuildings) {
|
||||
JSONObject json = super.toJSON();
|
||||
if (buildings.size() > 0 && includingBuildings) {
|
||||
JSONArray buildingsArr = new JSONArray();
|
||||
for (Building b : buildings) {
|
||||
buildingsArr.put(b.toJSON());
|
||||
}
|
||||
json.put("buildings", buildingsArr);
|
||||
}
|
||||
if (intersectedStreets != null) {
|
||||
JSONArray intersectedStreetsArr = new JSONArray();
|
||||
for (Street s : intersectedStreets) {
|
||||
intersectedStreetsArr.put(s.toJSON());
|
||||
}
|
||||
json.put("intersectedStreets", intersectedStreetsArr);
|
||||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
public static Street parseJSON(City city, JSONObject json) throws IllegalArgumentException {
|
||||
Street s = new Street(city);
|
||||
MapObject.parseJSON(json, s);
|
||||
|
||||
if (json.has("buildings")) {
|
||||
JSONArray buildingsArr = json.getJSONArray("buildings");
|
||||
s.buildings = new ArrayList<>();
|
||||
for (int i = 0; i < buildingsArr.length(); i++) {
|
||||
JSONObject buildingObj = buildingsArr.getJSONObject(i);
|
||||
Building building = Building.parseJSON(buildingObj);
|
||||
if (building != null) {
|
||||
s.buildings.add(building);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (json.has("intersectedStreets")) {
|
||||
JSONArray streetsArr = json.getJSONArray("intersectedStreets");
|
||||
s.intersectedStreets = new ArrayList<>();
|
||||
for (int i = 0; i < streetsArr.length(); i++) {
|
||||
JSONObject streetObj = streetsArr.getJSONObject(i);
|
||||
Street street = parseJSON(city, streetObj);
|
||||
if (street != null) {
|
||||
s.intersectedStreets.add(street);
|
||||
}
|
||||
}
|
||||
}
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
package net.osmand.data;
|
||||
|
||||
import net.osmand.osm.edit.Node;
|
||||
import net.osmand.osm.edit.Way;
|
||||
import net.osmand.util.MapUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
|
@ -8,10 +12,6 @@ import java.util.Iterator;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import net.osmand.osm.edit.Node;
|
||||
import net.osmand.osm.edit.Way;
|
||||
import net.osmand.util.MapUtils;
|
||||
|
||||
public class TransportRoute extends MapObject {
|
||||
private List<TransportStop> forwardStops = new ArrayList<TransportStop>();
|
||||
private String ref;
|
||||
|
@ -209,4 +209,16 @@ public class TransportRoute extends MapObject {
|
|||
return d;
|
||||
}
|
||||
|
||||
public String getAdjustedRouteRef() {
|
||||
if (ref != null) {
|
||||
int charPos = ref.lastIndexOf(':');
|
||||
if (charPos != -1) {
|
||||
ref = ref.substring(0, charPos);
|
||||
}
|
||||
if (ref.length() > 4) {
|
||||
ref = ref.substring(0, 4);
|
||||
}
|
||||
}
|
||||
return ref;
|
||||
}
|
||||
}
|
|
@ -2,13 +2,20 @@ package net.osmand.data;
|
|||
|
||||
import net.osmand.util.MapUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TransportStop extends MapObject {
|
||||
private int[] referencesToRoutes = null;
|
||||
private Amenity amenity;
|
||||
public int distance;
|
||||
public int x31;
|
||||
public int y31;
|
||||
|
||||
private List<TransportStopExit> exits;
|
||||
private HashMap<String,String> names;
|
||||
|
||||
public TransportStop(){
|
||||
}
|
||||
|
@ -39,4 +46,35 @@ public class TransportStop extends MapObject {
|
|||
y31 = dy << (31 - zoom);
|
||||
setLocation(MapUtils.getLatitudeFromTile(zoom, dy), MapUtils.getLongitudeFromTile(zoom, dx));
|
||||
}
|
||||
|
||||
public void addExit(TransportStopExit transportStopExit) {
|
||||
if (exits == null) {
|
||||
exits = new ArrayList<>();
|
||||
}
|
||||
exits.add(transportStopExit);
|
||||
}
|
||||
|
||||
public List<TransportStopExit> getExits () {
|
||||
if (exits == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return this.exits;
|
||||
}
|
||||
|
||||
public String getExitsString () {
|
||||
String exitsString = "";
|
||||
String refString = "";
|
||||
if (this.exits != null) {
|
||||
int i = 1;
|
||||
exitsString = exitsString + " Exits: [";
|
||||
for (TransportStopExit e : this.exits ) {
|
||||
if (e.getRef() != null) {
|
||||
refString = " [ref:" + e.getRef() + "] ";
|
||||
}
|
||||
exitsString = exitsString + " " + i + ")" + refString + e.getName() + " " + e.getLocation() + " ]";
|
||||
i++;
|
||||
}
|
||||
}
|
||||
return exitsString;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
package net.osmand.data;
|
||||
|
||||
import net.osmand.util.MapUtils;
|
||||
|
||||
public class TransportStopExit extends MapObject {
|
||||
public int x31;
|
||||
public int y31;
|
||||
public String ref = null;
|
||||
@Override
|
||||
public void setLocation(double latitude, double longitude) {
|
||||
super.setLocation(latitude, longitude);
|
||||
}
|
||||
public void setLocation(int zoom, int dx, int dy) {
|
||||
x31 = dx << (31 - zoom);
|
||||
y31 = dy << (31 - zoom);
|
||||
setLocation(MapUtils.getLatitudeFromTile(zoom, dy), MapUtils.getLongitudeFromTile(zoom, dx));
|
||||
}
|
||||
public void setRef (String ref) {
|
||||
this.ref = ref;
|
||||
}
|
||||
public String getRef() {
|
||||
if (ref != null) {
|
||||
return ref;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
|
@ -435,7 +435,6 @@ public class TileSourceManager {
|
|||
public static java.util.List<TileSourceTemplate> getKnownSourceTemplates() {
|
||||
java.util.List<TileSourceTemplate> list = new ArrayList<TileSourceTemplate>();
|
||||
list.add(getMapnikSource());
|
||||
list.add(getCycleMapSource());
|
||||
list.add(getMapillaryRasterSource());
|
||||
list.add(getMapillaryVectorSource());
|
||||
return list;
|
||||
|
@ -445,9 +444,6 @@ public class TileSourceManager {
|
|||
return MAPNIK_SOURCE;
|
||||
}
|
||||
|
||||
public static TileSourceTemplate getCycleMapSource(){
|
||||
return CYCLE_MAP_SOURCE;
|
||||
}
|
||||
|
||||
public static TileSourceTemplate getMapillaryRasterSource() {
|
||||
return MAPILLARY_RASTER_SOURCE;
|
||||
|
|
|
@ -13,6 +13,7 @@ public class OSMSettings {
|
|||
BOUNDARY("boundary"), //$NON-NLS-1$
|
||||
POSTAL_CODE("postal_code"), //$NON-NLS-1$
|
||||
RAILWAY("railway"), //$NON-NLS-1$
|
||||
STATION("subway"), //$NON-NLS-1$
|
||||
ONEWAY("oneway"), //$NON-NLS-1$
|
||||
LAYER("layer"), //$NON-NLS-1$
|
||||
BRIDGE("bridge"), //$NON-NLS-1$
|
||||
|
|
|
@ -194,7 +194,6 @@ public class Way extends Entity {
|
|||
}
|
||||
if (nodeIds != null) {
|
||||
nodeIds.reverse();
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ public class GeneralRouter implements VehicleRouter {
|
|||
public static final String AVOID_UNPAVED = "avoid_unpaved";
|
||||
public static final String PREFER_MOTORWAYS = "prefer_motorway";
|
||||
public static final String ALLOW_PRIVATE = "allow_private";
|
||||
public static final String ALLOW_MOTORWAYS = "allow_motorway";
|
||||
|
||||
private final RouteAttributeContext[] objectAttributes;
|
||||
public final Map<String, String> attributes;
|
||||
|
|
|
@ -55,6 +55,10 @@ public class RoutePlannerFrontEnd {
|
|||
}
|
||||
|
||||
public RouteSegmentPoint findRouteSegment(double lat, double lon, RoutingContext ctx, List<RouteSegmentPoint> list) throws IOException {
|
||||
return findRouteSegment(lat, lon, ctx, list, false);
|
||||
}
|
||||
|
||||
public RouteSegmentPoint findRouteSegment(double lat, double lon, RoutingContext ctx, List<RouteSegmentPoint> list, boolean transportStop) throws IOException {
|
||||
int px = MapUtils.get31TileNumberX(lon);
|
||||
int py = MapUtils.get31TileNumberY(lat);
|
||||
ArrayList<RouteDataObject> dataObjects = new ArrayList<RouteDataObject>();
|
||||
|
@ -92,7 +96,26 @@ public class RoutePlannerFrontEnd {
|
|||
}
|
||||
});
|
||||
if (list.size() > 0) {
|
||||
RouteSegmentPoint ps = list.get(0);
|
||||
RouteSegmentPoint ps = null;
|
||||
if (ctx.publicTransport) {
|
||||
for (RouteSegmentPoint p : list) {
|
||||
if (transportStop && p.distSquare > 100) {
|
||||
break;
|
||||
}
|
||||
boolean platform = p.road.platform();
|
||||
if (transportStop && platform) {
|
||||
ps = p;
|
||||
break;
|
||||
}
|
||||
if (!transportStop && !platform) {
|
||||
ps = p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ps == null) {
|
||||
ps = list.get(0);
|
||||
}
|
||||
ps.others = list;
|
||||
return ps;
|
||||
}
|
||||
|
@ -185,17 +208,17 @@ public class RoutePlannerFrontEnd {
|
|||
}
|
||||
int indexNotFound = 0;
|
||||
List<RouteSegmentPoint> points = new ArrayList<RouteSegmentPoint>();
|
||||
if (!addSegment(start, ctx, indexNotFound++, points)) {
|
||||
if (!addSegment(start, ctx, indexNotFound++, points, ctx.startTransportStop)) {
|
||||
return null;
|
||||
}
|
||||
if (intermediates != null) {
|
||||
for (LatLon l : intermediates) {
|
||||
if (!addSegment(l, ctx, indexNotFound++, points)) {
|
||||
if (!addSegment(l, ctx, indexNotFound++, points, false)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!addSegment(end, ctx, indexNotFound++, points)) {
|
||||
if (!addSegment(end, ctx, indexNotFound++, points, ctx.targetTransportStop)) {
|
||||
return null;
|
||||
}
|
||||
ctx.calculationProgress.nextIteration();
|
||||
|
@ -315,8 +338,8 @@ public class RoutePlannerFrontEnd {
|
|||
|
||||
}
|
||||
|
||||
private boolean addSegment(LatLon s, RoutingContext ctx, int indexNotFound, List<RouteSegmentPoint> res) throws IOException {
|
||||
RouteSegmentPoint f = findRouteSegment(s.getLatitude(), s.getLongitude(), ctx, null);
|
||||
private boolean addSegment(LatLon s, RoutingContext ctx, int indexNotFound, List<RouteSegmentPoint> res, boolean transportStop) throws IOException {
|
||||
RouteSegmentPoint f = findRouteSegment(s.getLatitude(), s.getLongitude(), ctx, null, transportStop);
|
||||
if (f == null) {
|
||||
ctx.calculationProgress.segmentNotFound = indexNotFound;
|
||||
return false;
|
||||
|
@ -405,7 +428,8 @@ public class RoutePlannerFrontEnd {
|
|||
|
||||
long time = System.currentTimeMillis();
|
||||
RouteSegmentResult[] res = ctx.nativeLib.runNativeRouting(ctx.startX, ctx.startY, ctx.targetX, ctx.targetY,
|
||||
ctx.config, regions, ctx.calculationProgress, ctx.precalculatedRouteDirection, ctx.calculationMode == RouteCalculationMode.BASE);
|
||||
ctx.config, regions, ctx.calculationProgress, ctx.precalculatedRouteDirection, ctx.calculationMode == RouteCalculationMode.BASE,
|
||||
ctx.publicTransport, ctx.startTransportStop, ctx.targetTransportStop);
|
||||
log.info("Native routing took " + (System.currentTimeMillis() - time) / 1000f + " seconds");
|
||||
ArrayList<RouteSegmentResult> result = new ArrayList<RouteSegmentResult>(Arrays.asList(res));
|
||||
if (recalculationEnd != null) {
|
||||
|
|
|
@ -41,7 +41,6 @@ public class RouteResultPreparation {
|
|||
*/
|
||||
List<RouteSegmentResult> prepareResult(RoutingContext ctx, FinalRouteSegment finalSegment) throws IOException {
|
||||
List<RouteSegmentResult> result = convertFinalSegmentToResults(ctx, finalSegment);
|
||||
combineWayPointsForAreaRouting(ctx, result);
|
||||
prepareResult(ctx, result);
|
||||
return result;
|
||||
}
|
||||
|
@ -158,6 +157,7 @@ public class RouteResultPreparation {
|
|||
}
|
||||
|
||||
List<RouteSegmentResult> prepareResult(RoutingContext ctx, List<RouteSegmentResult> result) throws IOException {
|
||||
combineWayPointsForAreaRouting(ctx, result);
|
||||
validateAllPointsConnected(result);
|
||||
splitRoadsAndAttachRoadSegments(ctx, result);
|
||||
calculateTimeSpeed(ctx, result);
|
||||
|
|
|
@ -57,8 +57,11 @@ public class RoutingContext {
|
|||
// 1. Initial variables
|
||||
public int startX;
|
||||
public int startY;
|
||||
public boolean startTransportStop;
|
||||
public int targetX;
|
||||
public int targetY;
|
||||
public boolean targetTransportStop;
|
||||
public boolean publicTransport;
|
||||
// deprecated
|
||||
public long firstRoadId;
|
||||
public int firstRoadDirection;
|
||||
|
|
|
@ -1,19 +1,5 @@
|
|||
package net.osmand.router;
|
||||
|
||||
import gnu.trove.iterator.TIntIterator;
|
||||
import gnu.trove.list.array.TIntArrayList;
|
||||
import gnu.trove.map.hash.TIntObjectHashMap;
|
||||
import gnu.trove.map.hash.TLongObjectHashMap;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.PriorityQueue;
|
||||
|
||||
import net.osmand.binary.BinaryMapIndexReader;
|
||||
import net.osmand.binary.BinaryMapIndexReader.SearchRequest;
|
||||
import net.osmand.data.LatLon;
|
||||
|
@ -24,11 +10,25 @@ import net.osmand.osm.edit.Node;
|
|||
import net.osmand.osm.edit.Way;
|
||||
import net.osmand.util.MapUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.PriorityQueue;
|
||||
|
||||
import gnu.trove.iterator.TIntIterator;
|
||||
import gnu.trove.list.array.TIntArrayList;
|
||||
import gnu.trove.map.hash.TIntObjectHashMap;
|
||||
import gnu.trove.map.hash.TLongObjectHashMap;
|
||||
|
||||
public class TransportRoutePlanner {
|
||||
|
||||
|
||||
|
||||
public List<TransportRouteResult> buildRoute(TransportRoutingContext ctx, LatLon start, LatLon end) throws IOException {
|
||||
public List<TransportRouteResult> buildRoute(TransportRoutingContext ctx, LatLon start, LatLon end) throws IOException, InterruptedException {
|
||||
ctx.startCalcTime = System.currentTimeMillis();
|
||||
List<TransportRouteSegment> startStops = ctx.getTransportStops(start);
|
||||
List<TransportRouteSegment> endStops = ctx.getTransportStops(end);
|
||||
|
@ -45,8 +45,11 @@ public class TransportRoutePlanner {
|
|||
}
|
||||
double finishTime = ctx.cfg.maxRouteTime;
|
||||
List<TransportRouteSegment> results = new ArrayList<TransportRouteSegment>();
|
||||
|
||||
initProgressBar(ctx, start, end);
|
||||
while (!queue.isEmpty()) {
|
||||
if (ctx.calculationProgress != null && ctx.calculationProgress.isCancelled) {
|
||||
return null;
|
||||
}
|
||||
TransportRouteSegment segment = queue.poll();
|
||||
TransportRouteSegment ex = ctx.visitedSegments.get(segment.getId());
|
||||
if(ex != null) {
|
||||
|
@ -56,7 +59,6 @@ public class TransportRoutePlanner {
|
|||
continue;
|
||||
}
|
||||
ctx.visitedRoutesCount++;
|
||||
System.out.println(segment);
|
||||
ctx.visitedSegments.put(segment.getId(), segment);
|
||||
if (segment.getDepth() > ctx.cfg.maxNumberOfChanges) {
|
||||
continue;
|
||||
|
@ -72,7 +74,10 @@ public class TransportRoutePlanner {
|
|||
TransportStop prevStop = segment.getStop(segment.segStart);
|
||||
List<TransportRouteSegment> sgms = new ArrayList<TransportRouteSegment>();
|
||||
for (int ind = 1 + segment.segStart; ind < segment.getLength(); ind++) {
|
||||
segmentId ++;
|
||||
if (ctx.calculationProgress != null && ctx.calculationProgress.isCancelled) {
|
||||
return null;
|
||||
}
|
||||
segmentId ++;
|
||||
ctx.visitedSegments.put(segmentId, segment);
|
||||
TransportStop stop = segment.getStop(ind);
|
||||
// could be geometry size
|
||||
|
@ -88,6 +93,9 @@ public class TransportRoutePlanner {
|
|||
sgms.clear();
|
||||
sgms = ctx.getTransportStops(stop.x31, stop.y31, true, sgms);
|
||||
for (TransportRouteSegment sgm : sgms) {
|
||||
if (ctx.calculationProgress != null && ctx.calculationProgress.isCancelled) {
|
||||
return null;
|
||||
}
|
||||
if (segment.wasVisited(sgm)) {
|
||||
continue;
|
||||
}
|
||||
|
@ -137,10 +145,36 @@ public class TransportRoutePlanner {
|
|||
results.add(finish);
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx.calculationProgress != null && ctx.calculationProgress.isCancelled) {
|
||||
throw new InterruptedException("Route calculation interrupted");
|
||||
}
|
||||
updateCalculationProgress(ctx, queue);
|
||||
|
||||
}
|
||||
|
||||
return prepareResults(ctx, results);
|
||||
}
|
||||
|
||||
private void initProgressBar(TransportRoutingContext ctx, LatLon start, LatLon end) {
|
||||
ctx.calculationProgress.distanceFromEnd = 0;
|
||||
ctx.calculationProgress.reverseSegmentQueueSize = 0;
|
||||
ctx.calculationProgress.directSegmentQueueSize = 0;
|
||||
float speed = (float) ctx.cfg.travelSpeed + 1; // assume
|
||||
ctx.calculationProgress.totalEstimatedDistance = (float) (MapUtils.getDistance(start, end)/ speed);
|
||||
}
|
||||
|
||||
private void updateCalculationProgress(TransportRoutingContext ctx, PriorityQueue<TransportRouteSegment> queue) {
|
||||
if (ctx.calculationProgress != null) {
|
||||
ctx.calculationProgress.directSegmentQueueSize = queue.size();
|
||||
if (queue.size() > 0) {
|
||||
TransportRouteSegment peek = queue.peek();
|
||||
ctx.calculationProgress.distanceFromBegin = (float) Math.max(peek.distFromStart,
|
||||
ctx.calculationProgress.distanceFromBegin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private List<TransportRouteResult> prepareResults(TransportRoutingContext ctx, List<TransportRouteSegment> results) {
|
||||
Collections.sort(results, new SegmentsComparator(ctx));
|
||||
|
@ -149,11 +183,17 @@ public class TransportRoutePlanner {
|
|||
(System.currentTimeMillis() - ctx.startCalcTime) / 1000.0, results.size(), ctx.visitedRoutesCount,
|
||||
ctx.quadTree.size(), ctx.readTime / (1000 * 1000), ctx.loadTime / (1000 * 1000)));
|
||||
for(TransportRouteSegment res : results) {
|
||||
if (ctx.calculationProgress != null && ctx.calculationProgress.isCancelled) {
|
||||
return null;
|
||||
}
|
||||
TransportRouteResult route = new TransportRouteResult(ctx);
|
||||
route.routeTime = res.distFromStart;
|
||||
route.finishWalkDist = res.walkDist;
|
||||
TransportRouteSegment p = res;
|
||||
while (p != null) {
|
||||
if (ctx.calculationProgress != null && ctx.calculationProgress.isCancelled) {
|
||||
return null;
|
||||
}
|
||||
if (p.parentRoute != null) {
|
||||
TransportRouteResultSegment sg = new TransportRouteResultSegment(p.parentRoute.road,
|
||||
p.parentRoute.segStart, p.parentStop, p.parentRoute.walkDist,
|
||||
|
@ -165,6 +205,9 @@ public class TransportRoutePlanner {
|
|||
// test if faster routes fully included
|
||||
boolean include = false;
|
||||
for(TransportRouteResult s : lst) {
|
||||
if (ctx.calculationProgress != null && ctx.calculationProgress.isCancelled) {
|
||||
return null;
|
||||
}
|
||||
if(includeRoute(s, route)) {
|
||||
include = true;
|
||||
break;
|
||||
|
@ -255,7 +298,16 @@ public class TransportRoutePlanner {
|
|||
public TransportStop getEnd() {
|
||||
return route.getForwardStops().get(end);
|
||||
}
|
||||
|
||||
|
||||
public List<Node> getNodes() {
|
||||
List<Node> nodes = new ArrayList<>();
|
||||
List<Way> ways = getGeometry();
|
||||
for (Way way : ways) {
|
||||
nodes.addAll(way.getNodes());
|
||||
}
|
||||
return nodes;
|
||||
}
|
||||
|
||||
public List<Way> getGeometry() {
|
||||
List<Way> list = new ArrayList<Way>();
|
||||
route.mergeForwardWays();
|
||||
|
@ -327,7 +379,7 @@ public class TransportRoutePlanner {
|
|||
public List<TransportRouteResultSegment> getSegments() {
|
||||
return segments;
|
||||
}
|
||||
|
||||
|
||||
public double getWalkDist() {
|
||||
double d = finishWalkDist;
|
||||
for (TransportRouteResultSegment s : segments) {
|
||||
|
@ -335,7 +387,15 @@ public class TransportRoutePlanner {
|
|||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
public double getFinishWalkDist() {
|
||||
return finishWalkDist;
|
||||
}
|
||||
|
||||
public double getWalkSpeed() {
|
||||
return cfg.walkSpeed;
|
||||
}
|
||||
|
||||
public double getRouteTime() {
|
||||
return routeTime;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,9 @@ import net.osmand.PlatformUtil;
|
|||
import net.osmand.ResultMatcher;
|
||||
import net.osmand.binary.BinaryMapIndexReader;
|
||||
import net.osmand.data.Amenity;
|
||||
import net.osmand.data.City;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.MapObject;
|
||||
import net.osmand.data.Street;
|
||||
import net.osmand.osm.MapPoiTypes;
|
||||
import net.osmand.search.core.CustomSearchPoiFilter;
|
||||
|
@ -16,6 +18,7 @@ import net.osmand.search.core.SearchCoreFactory;
|
|||
import net.osmand.search.core.SearchCoreFactory.SearchAmenityTypesAPI;
|
||||
import net.osmand.search.core.SearchCoreFactory.SearchBuildingAndIntersectionsByStreetAPI;
|
||||
import net.osmand.search.core.SearchCoreFactory.SearchStreetByCityAPI;
|
||||
import net.osmand.search.core.SearchExportSettings;
|
||||
import net.osmand.search.core.SearchPhrase;
|
||||
import net.osmand.search.core.SearchPhrase.NameStringMatcher;
|
||||
import net.osmand.search.core.SearchResult;
|
||||
|
@ -25,14 +28,18 @@ import net.osmand.util.Algorithms;
|
|||
import net.osmand.util.MapUtils;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
@ -312,7 +319,7 @@ public class SearchUICore {
|
|||
SearchAmenityTypesAPI searchAmenityTypesAPI = new SearchAmenityTypesAPI(poiTypes);
|
||||
apis.add(searchAmenityTypesAPI);
|
||||
apis.add(new SearchCoreFactory.SearchAmenityByTypeAPI(poiTypes, searchAmenityTypesAPI));
|
||||
apis.add(new SearchCoreFactory.SearchAmenityByNameAPI(searchAmenityTypesAPI));
|
||||
apis.add(new SearchCoreFactory.SearchAmenityByNameAPI());
|
||||
SearchBuildingAndIntersectionsByStreetAPI streetsApi =
|
||||
new SearchCoreFactory.SearchBuildingAndIntersectionsByStreetAPI();
|
||||
apis.add(streetsApi);
|
||||
|
@ -480,7 +487,7 @@ public class SearchUICore {
|
|||
}
|
||||
return;
|
||||
}
|
||||
searchInBackground(phrase, rm);
|
||||
searchInternal(phrase, rm);
|
||||
if (!rm.isCancelled()) {
|
||||
SearchResultCollection collection = new SearchResultCollection(
|
||||
phrase);
|
||||
|
@ -492,6 +499,9 @@ public class SearchUICore {
|
|||
LOG.info("Finishing search <" + phrase + "> Results=" + rm.getRequestResults().size());
|
||||
}
|
||||
currentSearchResult = collection;
|
||||
if (phrase.getSettings().isExportObjects()) {
|
||||
//rm.createTestJSON(collection);
|
||||
}
|
||||
rm.searchFinished(phrase);
|
||||
if (onResultsComplete != null) {
|
||||
onResultsComplete.run();
|
||||
|
@ -548,7 +558,7 @@ public class SearchUICore {
|
|||
return radius;
|
||||
}
|
||||
|
||||
private void searchInBackground(final SearchPhrase phrase, SearchResultMatcher matcher) {
|
||||
void searchInternal(final SearchPhrase phrase, SearchResultMatcher matcher) {
|
||||
preparePhrase(phrase);
|
||||
ArrayList<SearchCoreAPI> lst = new ArrayList<>(apis);
|
||||
Collections.sort(lst, new Comparator<SearchCoreAPI>() {
|
||||
|
@ -600,10 +610,7 @@ public class SearchUICore {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static class SearchResultMatcher implements ResultMatcher<SearchResult>{
|
||||
public static class SearchResultMatcher implements ResultMatcher<SearchResult>{
|
||||
private final List<SearchResult> requestResults = new ArrayList<>();
|
||||
private final ResultMatcher<SearchResult> matcher;
|
||||
private final int request;
|
||||
|
@ -612,7 +619,8 @@ public class SearchUICore {
|
|||
private final AtomicInteger requestNumber;
|
||||
int count = 0;
|
||||
private SearchPhrase phrase;
|
||||
|
||||
private List<MapObject> exportedObjects;
|
||||
private List<City> exportedCities;
|
||||
|
||||
public SearchResultMatcher(ResultMatcher<SearchResult> matcher, SearchPhrase phrase, int request,
|
||||
AtomicInteger requestNumber, int totalLimit) {
|
||||
|
@ -714,6 +722,108 @@ public class SearchUICore {
|
|||
boolean cancelled = request != requestNumber.get();
|
||||
return cancelled || (matcher != null && matcher.isCancelled());
|
||||
}
|
||||
|
||||
public List<MapObject> getExportedObjects() {
|
||||
return exportedObjects;
|
||||
}
|
||||
|
||||
public List<City> getExportedCities() {
|
||||
return exportedCities;
|
||||
}
|
||||
|
||||
public void exportObject(MapObject object) {
|
||||
if (exportedObjects == null) {
|
||||
exportedObjects = new ArrayList<>();
|
||||
}
|
||||
exportedObjects.add(object);
|
||||
}
|
||||
|
||||
public void exportCity(City city) {
|
||||
if (exportedCities == null) {
|
||||
exportedCities = new ArrayList<>();
|
||||
}
|
||||
exportedCities.add(city);
|
||||
}
|
||||
|
||||
public JSONObject createTestJSON(SearchResultCollection searchResult) {
|
||||
JSONObject json = new JSONObject();
|
||||
|
||||
Set<Amenity> amenities = new HashSet<>();
|
||||
Set<City> cities;
|
||||
Set<City> matchedCities = new HashSet<>();
|
||||
Set<City> streetCities = new HashSet<>();
|
||||
if (exportedCities != null) {
|
||||
cities = new HashSet<>(exportedCities);
|
||||
} else {
|
||||
cities = new HashSet<>();
|
||||
}
|
||||
Set<Street> streets = new HashSet<>();
|
||||
|
||||
for (MapObject obj : exportedObjects) {
|
||||
if (obj instanceof Amenity) {
|
||||
amenities.add((Amenity) obj);
|
||||
} else if (obj instanceof Street) {
|
||||
Street street = (Street) obj;
|
||||
streets.add(street);
|
||||
if (street.getCity() != null) {
|
||||
final City city = street.getCity();
|
||||
cities.add(city);
|
||||
streetCities.add(city);
|
||||
}
|
||||
} else if (obj instanceof City) {
|
||||
City city = (City) obj;
|
||||
cities.add(city);
|
||||
matchedCities.add(city);
|
||||
}
|
||||
}
|
||||
for (City city : cities) {
|
||||
List<Street> cityStreets = city.getStreets();
|
||||
for (Street street : streets) {
|
||||
if (city.equals(street.getCity()) && !cityStreets.contains(street)) {
|
||||
cityStreets.add(street);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SearchExportSettings exportSettings = phrase.getSettings().getExportSettings();
|
||||
json.put("settings", phrase.getSettings().toJSON());
|
||||
json.put("phrase", phrase.getRawUnknownSearchPhrase());
|
||||
if (searchResult.searchResults != null && searchResult.searchResults.size() > 0) {
|
||||
JSONArray resultsArr = new JSONArray();
|
||||
for (SearchResult r : searchResult.searchResults) {
|
||||
resultsArr.put(r.toString());
|
||||
}
|
||||
json.put("results", resultsArr);
|
||||
}
|
||||
if (amenities.size() > 0) {
|
||||
JSONArray amenitiesArr = new JSONArray();
|
||||
for (Amenity amenity : amenities) {
|
||||
amenitiesArr.put(amenity.toJSON());
|
||||
}
|
||||
json.put("amenities", amenitiesArr);
|
||||
}
|
||||
if (cities.size() > 0) {
|
||||
JSONArray citiesArr = new JSONArray();
|
||||
for (City city : cities) {
|
||||
final JSONObject cityObj = city.toJSON(exportSettings.isExportBuildings());
|
||||
if (exportedCities.contains(city)) {
|
||||
if (!exportSettings.isExportEmptyCities()) {
|
||||
continue;
|
||||
}
|
||||
cityObj.put("init", 1);
|
||||
}
|
||||
if (matchedCities.contains(city)) {
|
||||
cityObj.put("matchCity", 1);
|
||||
}
|
||||
if (streetCities.contains(city)) {
|
||||
cityObj.put("matchStreet", 1);
|
||||
}
|
||||
citiesArr.put(cityObj);
|
||||
}
|
||||
json.put("cities", citiesArr);
|
||||
}
|
||||
return json;
|
||||
}
|
||||
}
|
||||
|
||||
public static class SearchResultComparator implements Comparator<SearchResult> {
|
||||
|
@ -731,8 +841,14 @@ public class SearchUICore {
|
|||
|
||||
@Override
|
||||
public int compare(SearchResult o1, SearchResult o2) {
|
||||
if (o1.getFoundWordCount() != o2.getFoundWordCount()) {
|
||||
return -Algorithms.compare(o1.getFoundWordCount(), o2.getFoundWordCount());
|
||||
boolean topVisible1 = ObjectType.isTopVisible(o1.objectType);
|
||||
boolean topVisible2 = ObjectType.isTopVisible(o2.objectType);
|
||||
if ((!topVisible1 && !topVisible2) || (topVisible1 && topVisible2)) {
|
||||
if (o1.isUnknownPhraseMatches() != o2.isUnknownPhraseMatches()) {
|
||||
return o1.isUnknownPhraseMatches() ? -1 : 1;
|
||||
} else if (o1.getFoundWordCount() != o2.getFoundWordCount()) {
|
||||
return -Algorithms.compare(o1.getFoundWordCount(), o2.getFoundWordCount());
|
||||
}
|
||||
}
|
||||
if (!sortByName) {
|
||||
double s1 = o1.getSearchDistance(loc);
|
||||
|
@ -747,6 +863,17 @@ public class SearchUICore {
|
|||
if (st1 != st2) {
|
||||
return Algorithms.compare(st1, st2);
|
||||
}
|
||||
if (o1.parentSearchResult != null && o2.parentSearchResult != null) {
|
||||
if (o1.parentSearchResult == o2.parentSearchResult) {
|
||||
int cmp = collator.compare(o1.localeName, o2.localeName);
|
||||
if (cmp != 0) {
|
||||
return cmp;
|
||||
}
|
||||
}
|
||||
double s1 = o1.getSearchDistance(loc, 1);
|
||||
double s2 = o2.getSearchDistance(loc, 1);
|
||||
return Double.compare(s1, s2);
|
||||
}
|
||||
int cmp = collator.compare(o1.localeName, o2.localeName);
|
||||
if (cmp != 0) {
|
||||
return cmp;
|
||||
|
|
|
@ -34,6 +34,10 @@ public enum ObjectType {
|
|||
return t == CITY || t == VILLAGE || t == POSTCODE || t == STREET || t == HOUSE || t == STREET_INTERSECTION;
|
||||
}
|
||||
|
||||
public static boolean isTopVisible(ObjectType t) {
|
||||
return t == POI_TYPE || t == FAVORITE || t == FAVORITE_GROUP || t == WPT || t == LOCATION || t == PARTIAL_LOCATION;
|
||||
}
|
||||
|
||||
public static ObjectType getExclusiveSearchType(ObjectType t) {
|
||||
if (t == FAVORITE_GROUP) {
|
||||
return FAVORITE;
|
||||
|
|
|
@ -226,8 +226,6 @@ public class SearchCoreFactory {
|
|||
return retName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static class SearchAddressByNameAPI extends SearchBaseAPI {
|
||||
|
||||
private static final int DEFAULT_ADDRESS_BBOX_RADIUS = 100 * 1000;
|
||||
|
@ -315,18 +313,17 @@ public class SearchCoreFactory {
|
|||
if (phrase.isNoSelectedType() && bbox != null
|
||||
&& (phrase.isUnknownSearchWordPresent() || phrase.isEmptyQueryAllowed())
|
||||
&& phrase.isSearchTypeAllowed(ObjectType.CITY)) {
|
||||
String wrd = phrase.getUnknownWordToSearch();
|
||||
NameStringMatcher nm = phrase.getNameStringMatcher(wrd, phrase.isUnknownSearchWordComplete());
|
||||
String unknownSearchPhrase = phrase.getUnknownSearchPhrase().trim();
|
||||
NameStringMatcher phraseMatcher = null;
|
||||
if (!Algorithms.isEmpty(unknownSearchPhrase)) {
|
||||
phraseMatcher = new NameStringMatcher(unknownSearchPhrase, StringMatcherMode.CHECK_EQUALS);
|
||||
}
|
||||
// NameStringMatcher nm = phrase.getNameStringMatcher();
|
||||
String word = phrase.getUnknownWordToSearch();
|
||||
NameStringMatcher nm = phrase.getNameStringMatcher(word, phrase.isUnknownSearchWordComplete());
|
||||
NameStringMatcher wordEqualsMatcher = phrase.getNameStringMatcher(word, true);
|
||||
boolean firstUnknownWordMatches = word.equals(phrase.getUnknownSearchWord());
|
||||
resArray.clear();
|
||||
resArray = townCitiesQR.queryInBox(bbox, resArray);
|
||||
int limit = 0;
|
||||
for (City c : resArray) {
|
||||
if (phrase.getSettings().isExportObjects()) {
|
||||
resultMatcher.exportCity(c);
|
||||
}
|
||||
SearchResult res = new SearchResult(phrase);
|
||||
res.object = c;
|
||||
res.file = (BinaryMapIndexReader) c.getReferenceFile();
|
||||
|
@ -341,10 +338,8 @@ public class SearchCoreFactory {
|
|||
if (phrase.isEmptyQueryAllowed() && phrase.isEmpty()) {
|
||||
resultMatcher.publish(res);
|
||||
} else if (nm.matches(res.localeName) || nm.matches(res.otherNames)) {
|
||||
res.firstUnknownWordMatches = wrd.equals(phrase.getUnknownSearchWord());
|
||||
if (phraseMatcher != null) {
|
||||
res.unknownPhraseMatches = phraseMatcher.matches(res.localeName) || phraseMatcher.matches(res.otherNames);
|
||||
}
|
||||
res.firstUnknownWordMatches = firstUnknownWordMatches;
|
||||
res.unknownPhraseMatches = wordEqualsMatcher.matches(res.localeName);
|
||||
subSearchApiOrPublish(phrase, resultMatcher, res, cityApi);
|
||||
}
|
||||
if (limit++ > LIMIT * phrase.getRadiusLevel()) {
|
||||
|
@ -354,7 +349,6 @@ public class SearchCoreFactory {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private void searchByName(final SearchPhrase phrase, final SearchResultMatcher resultMatcher)
|
||||
throws IOException {
|
||||
if (phrase.getRadiusLevel() > 1 || phrase.getUnknownSearchWordLength() > 3 || phrase.getUnknownSearchWords().size() > 0) {
|
||||
|
@ -368,12 +362,14 @@ public class SearchCoreFactory {
|
|||
final int priority = phrase.isNoSelectedType() ?
|
||||
SEARCH_ADDRESS_BY_NAME_PRIORITY : SEARCH_ADDRESS_BY_NAME_PRIORITY_RADIUS2;
|
||||
final BinaryMapIndexReader[] currentFile = new BinaryMapIndexReader[1];
|
||||
|
||||
|
||||
|
||||
ResultMatcher<MapObject> rm = new ResultMatcher<MapObject>() {
|
||||
int limit = 0;
|
||||
@Override
|
||||
public boolean publish(MapObject object) {
|
||||
if (phrase.getSettings().isExportObjects()) {
|
||||
resultMatcher.exportObject(object);
|
||||
}
|
||||
if (isCancelled()) {
|
||||
return false;
|
||||
}
|
||||
|
@ -415,7 +411,6 @@ public class SearchCoreFactory {
|
|||
|| !phrase.isSearchTypeAllowed(ObjectType.CITY)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
sr.objectType = ObjectType.CITY;
|
||||
sr.priorityDistance = 0.1;
|
||||
} else if (((City)object).isPostcode()) {
|
||||
|
@ -425,7 +420,7 @@ public class SearchCoreFactory {
|
|||
}
|
||||
sr.objectType = ObjectType.POSTCODE;
|
||||
sr.priorityDistance = 0;
|
||||
} else {
|
||||
} else {
|
||||
if ((locSpecified && !villagesBbox.contains(x, y, x, y))
|
||||
|| !phrase.isSearchTypeAllowed(ObjectType.VILLAGE)) {
|
||||
return false;
|
||||
|
@ -460,8 +455,6 @@ public class SearchCoreFactory {
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
return limit > LIMIT * phrase.getRadiusLevel() ||
|
||||
|
@ -472,11 +465,8 @@ public class SearchCoreFactory {
|
|||
SearchPhraseDataType.ADDRESS);
|
||||
|
||||
String wordToSearch = phrase.getUnknownWordToSearch();
|
||||
String unknownSearchPhrase = phrase.getUnknownSearchPhrase().trim();
|
||||
NameStringMatcher phraseMatcher = null;
|
||||
if (!Algorithms.isEmpty(unknownSearchPhrase)) {
|
||||
phraseMatcher = new NameStringMatcher(unknownSearchPhrase, StringMatcherMode.CHECK_EQUALS);
|
||||
}
|
||||
NameStringMatcher wordEqualsMatcher = phrase.getNameStringMatcher(wordToSearch, true);
|
||||
boolean firstUnknownWordMatches = wordToSearch.equals(phrase.getUnknownSearchWord());
|
||||
while (offlineIterator.hasNext() && wordToSearch.length() > 0) {
|
||||
BinaryMapIndexReader r = offlineIterator.next();
|
||||
currentFile[0] = r;
|
||||
|
@ -490,10 +480,8 @@ public class SearchCoreFactory {
|
|||
}
|
||||
r.searchAddressDataByName(req);
|
||||
for (SearchResult res : immediateResults) {
|
||||
res.firstUnknownWordMatches = wordToSearch.equals(phrase.getUnknownSearchWord());
|
||||
if (phraseMatcher != null) {
|
||||
res.unknownPhraseMatches = phraseMatcher.matches(res.localeName) || phraseMatcher.matches(res.otherNames);
|
||||
}
|
||||
res.firstUnknownWordMatches = firstUnknownWordMatches;
|
||||
res.unknownPhraseMatches = wordEqualsMatcher.matches(res.localeName);
|
||||
if (res.objectType == ObjectType.STREET) {
|
||||
City ct = ((Street) res.object).getCity();
|
||||
phrase.countUnknownWordsMatch(res,
|
||||
|
@ -510,18 +498,14 @@ public class SearchCoreFactory {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static class SearchAmenityByNameAPI extends SearchBaseAPI {
|
||||
private static final int LIMIT = 10000;
|
||||
private static final int BBOX_RADIUS = 500 * 1000;
|
||||
private static final int BBOX_RADIUS_INSIDE = 10000 * 1000; // to support city search for basemap
|
||||
private static final int FIRST_WORD_MIN_LENGTH = 3;
|
||||
private SearchAmenityTypesAPI searchAmenityTypesAPI;
|
||||
|
||||
public SearchAmenityByNameAPI(SearchAmenityTypesAPI searchAmenityTypesAPI) {
|
||||
public SearchAmenityByNameAPI() {
|
||||
super(ObjectType.POI);
|
||||
this.searchAmenityTypesAPI = searchAmenityTypesAPI;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -530,7 +514,7 @@ public class SearchCoreFactory {
|
|||
return false;
|
||||
}
|
||||
if (phrase.isNoSelectedType() && phrase.isUnknownSearchWordPresent()
|
||||
&& phrase.isUnknownSearchWordComplete() && searchAmenityTypesAPI.hasFoundPoiTypes()) {
|
||||
&& phrase.isUnknownSearchWordComplete() && phrase.hasUnknownSearchWordPoiTypes()) {
|
||||
return false;
|
||||
}
|
||||
final BinaryMapIndexReader[] currentFile = new BinaryMapIndexReader[1];
|
||||
|
@ -556,6 +540,9 @@ public class SearchCoreFactory {
|
|||
int limit = 0;
|
||||
@Override
|
||||
public boolean publish(Amenity object) {
|
||||
if (phrase.getSettings().isExportObjects()) {
|
||||
resultMatcher.exportObject(object);
|
||||
}
|
||||
if (limit ++ > LIMIT) {
|
||||
return false;
|
||||
}
|
||||
|
@ -587,7 +574,7 @@ public class SearchCoreFactory {
|
|||
}
|
||||
sr.priority = SEARCH_AMENITY_BY_NAME_PRIORITY;
|
||||
if (phraseMatcher != null) {
|
||||
sr.unknownPhraseMatches = phraseMatcher.matches(sr.localeName) || phraseMatcher.matches(sr.otherNames);
|
||||
sr.unknownPhraseMatches = phraseMatcher.matches(sr.localeName);
|
||||
}
|
||||
phrase.countUnknownWordsMatch(sr);
|
||||
sr.objectType = ObjectType.POI;
|
||||
|
@ -643,8 +630,6 @@ public class SearchCoreFactory {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static class SearchAmenityTypesAPI extends SearchBaseAPI {
|
||||
|
||||
private Map<String, PoiType> translatedNames = new LinkedHashMap<>();
|
||||
|
@ -653,30 +638,12 @@ public class SearchCoreFactory {
|
|||
private List<CustomSearchPoiFilter> customPoiFilters = new ArrayList<>();
|
||||
private TIntArrayList customPoiFiltersPriorites = new TIntArrayList();
|
||||
private MapPoiTypes types;
|
||||
private List<AbstractPoiType> foundPoiTypes = new ArrayList<>();
|
||||
private SearchPhrase lastSearchedPhrase;
|
||||
|
||||
public SearchAmenityTypesAPI(MapPoiTypes types) {
|
||||
super(ObjectType.POI_TYPE);
|
||||
this.types = types;
|
||||
}
|
||||
|
||||
public List<AbstractPoiType> getFoundPoiTypes() {
|
||||
return foundPoiTypes;
|
||||
}
|
||||
|
||||
public boolean hasFoundPoiTypes() {
|
||||
return foundPoiTypes.size() > 0;
|
||||
}
|
||||
|
||||
public SearchPhrase getLastSearchedPhrase() {
|
||||
return lastSearchedPhrase;
|
||||
}
|
||||
|
||||
public void setLastSearchedPhrase(SearchPhrase lastSearchedPhrase) {
|
||||
this.lastSearchedPhrase = lastSearchedPhrase;
|
||||
}
|
||||
|
||||
public void clearCustomFilters() {
|
||||
this.customPoiFilters.clear();
|
||||
this.customPoiFiltersPriorites.clear();
|
||||
|
@ -695,8 +662,13 @@ public class SearchCoreFactory {
|
|||
categories = types.getCategories(false);
|
||||
}
|
||||
List<AbstractPoiType> results = new ArrayList<AbstractPoiType>();
|
||||
NameStringMatcher nm =
|
||||
new NameStringMatcher(phrase.getUnknownSearchPhrase(), StringMatcherMode.CHECK_ONLY_STARTS_WITH_TRIM);
|
||||
NameStringMatcher nm;
|
||||
String unknownSearchPhrase = phrase.getUnknownSearchPhrase();
|
||||
if (phrase.getUnknownSearchWord().length() < unknownSearchPhrase.length()) {
|
||||
nm = new NameStringMatcher(unknownSearchPhrase, StringMatcherMode.CHECK_ONLY_STARTS_WITH_TRIM);
|
||||
} else {
|
||||
nm = new NameStringMatcher(unknownSearchPhrase, StringMatcherMode.CHECK_STARTS_FROM_SPACE);
|
||||
}
|
||||
for (AbstractPoiType pf : topVisibleFilters) {
|
||||
if (!phrase.isUnknownSearchWordPresent()
|
||||
|| nm.matches(pf.getTranslation())
|
||||
|
@ -728,21 +700,23 @@ public class SearchCoreFactory {
|
|||
List<PoiType> additionals = pt.getPoiAdditionals();
|
||||
if (additionals != null) {
|
||||
for (PoiType a : additionals) {
|
||||
if (!a.isReference() && !results.contains(a)
|
||||
&& (nm.matches(a.getEnTranslation())
|
||||
|| nm.matches(a.getTranslation())
|
||||
|| nm.matches(a.getSynonyms()))) {
|
||||
results.add(a);
|
||||
if (!a.isReference() && !results.contains(a)) {
|
||||
String enTranslation = a.getEnTranslation().toLowerCase();
|
||||
if (!"yes".equals(enTranslation) && !"no".equals(enTranslation)
|
||||
&& (nm.matches(enTranslation) || nm.matches(a.getTranslation()) || nm.matches(a.getSynonyms()))) {
|
||||
results.add(a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
foundPoiTypes = new ArrayList<>(results);
|
||||
lastSearchedPhrase = phrase;
|
||||
phrase.setUnknownSearchWordPoiTypes(new ArrayList<>(results));
|
||||
|
||||
if (resultMatcher != null) {
|
||||
String word = phrase.getUnknownSearchWord();
|
||||
NameStringMatcher startMatch = new NameStringMatcher(word, StringMatcherMode.CHECK_ONLY_STARTS_WITH);
|
||||
for (AbstractPoiType pt : results) {
|
||||
SearchResult res = new SearchResult(phrase);
|
||||
res.localeName = pt.getTranslation();
|
||||
|
@ -750,6 +724,7 @@ public class SearchCoreFactory {
|
|||
res.priority = SEARCH_AMENITY_TYPE_PRIORITY;
|
||||
res.priorityDistance = 0;
|
||||
res.objectType = ObjectType.POI_TYPE;
|
||||
res.firstUnknownWordMatches = startMatch.matches(res.localeName);
|
||||
resultMatcher.publish(res);
|
||||
}
|
||||
for (int i = 0; i < customPoiFilters.size(); i++) {
|
||||
|
@ -781,12 +756,14 @@ public class SearchCoreFactory {
|
|||
if (!p.isNoSelectedType() && !p.isUnknownSearchWordPresent()) {
|
||||
return -1;
|
||||
}
|
||||
SearchWord lastSelectedWord = p.getLastSelectedWord();
|
||||
if (lastSelectedWord != null && ObjectType.isAddress(lastSelectedWord.getType())) {
|
||||
return -1;
|
||||
}
|
||||
return SEARCH_AMENITY_TYPE_API_PRIORITY;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static class SearchAmenityByTypeAPI extends SearchBaseAPI {
|
||||
private static final int BBOX_RADIUS = 10000;
|
||||
private SearchAmenityTypesAPI searchAmenityTypesAPI;
|
||||
|
@ -852,18 +829,16 @@ public class SearchCoreFactory {
|
|||
}
|
||||
searchPoi(phrase, resultMatcher, obj, null, ptf);
|
||||
} else if (searchAmenityTypesAPI != null) {
|
||||
if (searchAmenityTypesAPI.lastSearchedPhrase == null
|
||||
|| !searchAmenityTypesAPI.lastSearchedPhrase.getUnknownSearchPhrase().equals(phrase.getUnknownSearchPhrase())) {
|
||||
if (phrase.getUnknownSearchWordPoiTypes() == null) {
|
||||
searchAmenityTypesAPI.search(phrase, null);
|
||||
}
|
||||
List<AbstractPoiType> poiTypes = searchAmenityTypesAPI.getFoundPoiTypes();
|
||||
for (AbstractPoiType pt : poiTypes) {
|
||||
SearchPoiTypeFilter ptf = getPoiTypeFilter(pt);
|
||||
String customName = phrase.getPoiNameFilter(pt);
|
||||
AbstractPoiType poiType = phrase.getUnknownSearchWordPoiType();
|
||||
if (poiType != null) {
|
||||
SearchPoiTypeFilter ptf = getPoiTypeFilter(poiType);
|
||||
String customName = phrase.getPoiNameFilter(poiType);
|
||||
if (customName != null) {
|
||||
phrase.setUnknownSearchWordPoiType(pt);
|
||||
searchPoi(phrase, resultMatcher, null, customName, ptf);
|
||||
break;
|
||||
phrase.setUnknownSearchWordPoiType(poiType);
|
||||
searchPoi(phrase, resultMatcher, null, customName.length() == 0 ? null : customName, ptf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -909,6 +884,9 @@ public class SearchCoreFactory {
|
|||
|
||||
@Override
|
||||
public boolean publish(Amenity object) {
|
||||
if (phrase.getSettings().isExportObjects()) {
|
||||
resultMatcher.exportObject(object);
|
||||
}
|
||||
SearchResult res = new SearchResult(phrase);
|
||||
String poiID = object.getType().getKeyName() + "_" + object.getId();
|
||||
if(!searchedPois.add(poiID)) {
|
||||
|
@ -939,7 +917,14 @@ public class SearchCoreFactory {
|
|||
res.priority = SEARCH_AMENITY_BY_TYPE_PRIORITY;
|
||||
res.priorityDistance = 1;
|
||||
if (phraseMatcher != null) {
|
||||
res.unknownPhraseMatches = phraseMatcher.matches(res.localeName) || phraseMatcher.matches(res.otherNames);
|
||||
boolean unknownPhraseMatches = phraseMatcher.matches(res.localeName);
|
||||
AbstractPoiType unknownSearchWordPoiType = phrase.getUnknownSearchWordPoiType();
|
||||
if (unknownPhraseMatches && unknownSearchWordPoiType != null) {
|
||||
unknownPhraseMatches = !phraseMatcher.matches(unknownSearchWordPoiType.getTranslation())
|
||||
&& !phraseMatcher.matches(unknownSearchWordPoiType.getEnTranslation())
|
||||
&& !phraseMatcher.matches(unknownSearchWordPoiType.getSynonyms());
|
||||
}
|
||||
res.unknownPhraseMatches = unknownPhraseMatches;
|
||||
}
|
||||
res.objectType = ObjectType.POI;
|
||||
resultMatcher.publish(res);
|
||||
|
@ -988,15 +973,13 @@ public class SearchCoreFactory {
|
|||
@Override
|
||||
public int getSearchPriority(SearchPhrase p) {
|
||||
if ((p.isLastWord(ObjectType.POI_TYPE) && p.getLastTokenLocation() != null)
|
||||
|| (p.isNoSelectedType() && p.isUnknownSearchWordComplete())) {
|
||||
|| (p.isNoSelectedType())) {
|
||||
return SEARCH_AMENITY_BY_TYPE_PRIORITY;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static class SearchStreetByCityAPI extends SearchBaseAPI {
|
||||
private static final int DEFAULT_ADDRESS_BBOX_RADIUS = 100 * 1000;
|
||||
|
||||
|
@ -1058,7 +1041,7 @@ public class SearchCoreFactory {
|
|||
phrase.getNameStringMatcher().matches(res.localeName) ||
|
||||
phrase.getNameStringMatcher().matches(res.otherNames);
|
||||
if (phraseMatcher != null) {
|
||||
res.unknownPhraseMatches = phraseMatcher.matches(res.localeName) || phraseMatcher.matches(res.otherNames);
|
||||
res.unknownPhraseMatches = phraseMatcher.matches(res.localeName);
|
||||
}
|
||||
res.localeRelatedObjectName = c.getName(phrase.getSettings().getLang(), phrase.getSettings().isTransliterate());
|
||||
res.object = object;
|
||||
|
@ -1094,8 +1077,6 @@ public class SearchCoreFactory {
|
|||
p.isLastWord(ObjectType.VILLAGE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static class SearchBuildingAndIntersectionsByStreetAPI extends SearchBaseAPI {
|
||||
Street cacheBuilding;
|
||||
|
||||
|
@ -1169,6 +1150,7 @@ public class SearchCoreFactory {
|
|||
}
|
||||
String lw = phrase.getUnknownWordToSearchBuilding();
|
||||
NameStringMatcher buildingMatch = phrase.getNameStringMatcher(lw, phrase.isLastUnknownSearchWordComplete());
|
||||
NameStringMatcher startMatch = new NameStringMatcher(lw, StringMatcherMode.CHECK_ONLY_STARTS_WITH);
|
||||
for (Building b : s.getBuildings()) {
|
||||
SearchResult res = new SearchResult(phrase);
|
||||
boolean interpolation = b.belongsToInterpolation(lw);
|
||||
|
@ -1182,6 +1164,7 @@ public class SearchCoreFactory {
|
|||
res.file = file;
|
||||
res.priority = priority;
|
||||
res.priorityDistance = 0;
|
||||
res.firstUnknownWordMatches = startMatch.matches(res.localeName);
|
||||
res.relatedObject = s;
|
||||
res.localeRelatedObjectName = s.getName(phrase.getSettings().getLang(), phrase.getSettings().isTransliterate());
|
||||
res.objectType = ObjectType.HOUSE;
|
||||
|
@ -1235,8 +1218,6 @@ public class SearchCoreFactory {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static class SearchLocationAndUrlAPI extends SearchBaseAPI {
|
||||
|
||||
public SearchLocationAndUrlAPI() {
|
||||
|
@ -1355,9 +1336,10 @@ public class SearchCoreFactory {
|
|||
|
||||
@Override
|
||||
public int getSearchPriority(SearchPhrase p) {
|
||||
if (!p.isNoSelectedType() || !p.isUnknownSearchWordPresent()) {
|
||||
return -1;
|
||||
}
|
||||
return SEARCH_LOCATION_PRIORITY;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package net.osmand.search.core;
|
||||
|
||||
public class SearchExportSettings {
|
||||
private boolean exportEmptyCities;
|
||||
private boolean exportBuildings;
|
||||
|
||||
public SearchExportSettings() {
|
||||
exportEmptyCities = true;
|
||||
exportBuildings = true;
|
||||
}
|
||||
|
||||
public SearchExportSettings(boolean exportEmptyCities, boolean exportBuildings) {
|
||||
this.exportEmptyCities = exportEmptyCities;
|
||||
this.exportBuildings = exportBuildings;
|
||||
}
|
||||
|
||||
public boolean isExportEmptyCities() {
|
||||
return exportEmptyCities;
|
||||
}
|
||||
|
||||
public void setExportEmptyCities(boolean exportEmptyCities) {
|
||||
this.exportEmptyCities = exportEmptyCities;
|
||||
}
|
||||
|
||||
public boolean isExportBuildings() {
|
||||
return exportBuildings;
|
||||
}
|
||||
|
||||
public void setExportBuildings(boolean exportBuildings) {
|
||||
this.exportBuildings = exportBuildings;
|
||||
}
|
||||
}
|
|
@ -36,6 +36,7 @@ public class SearchPhrase {
|
|||
private String rawUnknownSearchPhrase = "";
|
||||
private String unknownSearchPhrase = "";
|
||||
private AbstractPoiType unknownSearchWordPoiType;
|
||||
private List<AbstractPoiType> unknownSearchWordPoiTypes = null;
|
||||
|
||||
private NameStringMatcher sm;
|
||||
private SearchSettings settings;
|
||||
|
@ -47,7 +48,8 @@ public class SearchPhrase {
|
|||
private static final String ALLDELIMITERS = "\\s|,";
|
||||
private static final Pattern reg = Pattern.compile(ALLDELIMITERS);
|
||||
private Collator clt;
|
||||
|
||||
private static Comparator<String> commonWordsComparator;
|
||||
|
||||
private static Set<String> conjunctions = new TreeSet<>();
|
||||
static {
|
||||
// the
|
||||
|
@ -110,6 +112,20 @@ public class SearchPhrase {
|
|||
conjunctions.add("den");
|
||||
conjunctions.add("dr");
|
||||
conjunctions.add("y");
|
||||
|
||||
commonWordsComparator = new Comparator<String>() {
|
||||
|
||||
@Override
|
||||
public int compare(String o1, String o2) {
|
||||
int i1 = CommonWords.getCommonSearch(o1.toLowerCase());
|
||||
int i2 = CommonWords.getCommonSearch(o2.toLowerCase());
|
||||
if (i1 != i2) {
|
||||
return icompare(i1, i2);
|
||||
}
|
||||
// compare length without numbers to not include house numbers
|
||||
return -icompare(lengthWithoutNumbers(o1), lengthWithoutNumbers(o2));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
@ -141,7 +157,7 @@ public class SearchPhrase {
|
|||
for(SearchWord w : leftWords) {
|
||||
if(restText.startsWith(w.getWord() + DELIMITER)) {
|
||||
sp.words.add(w);
|
||||
restText = restText.substring(w.getWord().length() + DELIMITER.length()).trim();
|
||||
restText = restText.substring(w.getWord().length() + DELIMITER.length());
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
@ -186,7 +202,7 @@ public class SearchPhrase {
|
|||
|
||||
|
||||
public boolean isUnknownSearchWordComplete() {
|
||||
return lastUnknownSearchWordComplete || unknownWords.size() > 0;
|
||||
return lastUnknownSearchWordComplete || unknownWords.size() > 0 || unknownSearchWordPoiType != null;
|
||||
}
|
||||
|
||||
public boolean isLastUnknownSearchWordComplete() {
|
||||
|
@ -248,6 +264,24 @@ public class SearchPhrase {
|
|||
return getPoiNameFilter(unknownSearchWordPoiType);
|
||||
}
|
||||
|
||||
public boolean hasUnknownSearchWordPoiTypes() {
|
||||
return unknownSearchWordPoiTypes != null && unknownSearchWordPoiTypes.size() > 0;
|
||||
}
|
||||
|
||||
public List<AbstractPoiType> getUnknownSearchWordPoiTypes() {
|
||||
return unknownSearchWordPoiTypes;
|
||||
}
|
||||
|
||||
public void setUnknownSearchWordPoiTypes(List<AbstractPoiType> unknownSearchWordPoiTypes) {
|
||||
this.unknownSearchWordPoiTypes = unknownSearchWordPoiTypes;
|
||||
for (AbstractPoiType pt : unknownSearchWordPoiTypes) {
|
||||
if (getPoiNameFilter(pt) != null) {
|
||||
setUnknownSearchWordPoiType(pt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getPoiNameFilter(AbstractPoiType pt) {
|
||||
String nameFilter = null;
|
||||
if (pt != null) {
|
||||
|
@ -256,11 +290,11 @@ public class SearchPhrase {
|
|||
String enTranslation = pt.getEnTranslation();
|
||||
String translation = pt.getTranslation();
|
||||
String synonyms = pt.getSynonyms();
|
||||
if (unknownSearchPhrase.length() > enTranslation.length() && nm.matches(enTranslation)) {
|
||||
if (unknownSearchPhrase.length() >= enTranslation.length() && nm.matches(enTranslation)) {
|
||||
nameFilter = unknownSearchPhrase.substring(enTranslation.length()).trim();
|
||||
} else if (unknownSearchPhrase.length() > translation.length() && nm.matches(translation)) {
|
||||
} else if (unknownSearchPhrase.length() >= translation.length() && nm.matches(translation)) {
|
||||
nameFilter = unknownSearchPhrase.substring(translation.length()).trim();
|
||||
} else if (unknownSearchPhrase.length() > synonyms.length() && nm.matches(synonyms)) {
|
||||
} else if (unknownSearchPhrase.length() >= synonyms.length() && nm.matches(synonyms)) {
|
||||
nameFilter = unknownSearchPhrase.substring(synonyms.length()).trim();
|
||||
}
|
||||
}
|
||||
|
@ -727,42 +761,32 @@ public class SearchPhrase {
|
|||
}
|
||||
return getUnknownSearchWord();
|
||||
}
|
||||
|
||||
|
||||
private static int lengthWithoutNumbers(String s) {
|
||||
int len = 0;
|
||||
for(int k = 0; k < s.length(); k++) {
|
||||
if (s.charAt(k) >= '0' && s.charAt(k) <= '9') {
|
||||
|
||||
} else {
|
||||
len++;
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
public String getUnknownWordToSearch() {
|
||||
List<String> unknownSearchWords = getUnknownSearchWords();
|
||||
|
||||
String wordToSearch = getUnknownSearchWord();
|
||||
if (unknownSearchWords.size() > 0) {
|
||||
List<String> searchWords = new ArrayList<>(unknownSearchWords);
|
||||
searchWords.add(0, getUnknownSearchWord());
|
||||
Collections.sort(searchWords, new Comparator<String>() {
|
||||
|
||||
private int lengthWithoutNumbers(String s) {
|
||||
int len = 0;
|
||||
for(int k = 0; k < s.length(); k++) {
|
||||
if(s.charAt(k) >= '0' && s.charAt(k) <= '9') {
|
||||
|
||||
} else {
|
||||
len++;
|
||||
}
|
||||
}
|
||||
return len;
|
||||
Collections.sort(searchWords, commonWordsComparator);
|
||||
for (String s : searchWords) {
|
||||
if (s.length() > 0 && !Character.isDigit(s.charAt(0))) {
|
||||
return s;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compare(String o1, String o2) {
|
||||
int i1 = CommonWords.getCommonSearch(o1.toLowerCase());
|
||||
int i2 = CommonWords.getCommonSearch(o2.toLowerCase());
|
||||
if (i1 != i2) {
|
||||
return icompare(i1, i2);
|
||||
}
|
||||
// compare length without numbers to not include house numbers
|
||||
return -icompare(lengthWithoutNumbers(o1), lengthWithoutNumbers(o2));
|
||||
}
|
||||
});
|
||||
wordToSearch = searchWords.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
return wordToSearch;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,19 @@
|
|||
package net.osmand.search.core;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import net.osmand.binary.BinaryMapIndexReader;
|
||||
import net.osmand.data.Amenity;
|
||||
import net.osmand.data.City;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.Street;
|
||||
import net.osmand.osm.AbstractPoiType;
|
||||
import net.osmand.osm.PoiCategory;
|
||||
import net.osmand.osm.PoiFilter;
|
||||
import net.osmand.osm.PoiType;
|
||||
import net.osmand.util.Algorithms;
|
||||
import net.osmand.util.MapUtils;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class SearchResult {
|
||||
// search phrase that makes search result valid
|
||||
public SearchPhrase requiredSearchPhrase;
|
||||
|
@ -21,24 +29,28 @@ public class SearchResult {
|
|||
public Collection<String> otherWordsMatch = null;
|
||||
public boolean firstUnknownWordMatches = true;
|
||||
public boolean unknownPhraseMatches = false;
|
||||
|
||||
|
||||
|
||||
public boolean isUnknownPhraseMatches() {
|
||||
boolean res = unknownPhraseMatches;
|
||||
if (!res && parentSearchResult != null) {
|
||||
res = parentSearchResult.unknownPhraseMatches;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public SearchResult(SearchPhrase sp) {
|
||||
this.requiredSearchPhrase = sp;
|
||||
}
|
||||
|
||||
public int getFoundWordCount() {
|
||||
int inc = 0;
|
||||
if(firstUnknownWordMatches) {
|
||||
if (firstUnknownWordMatches) {
|
||||
inc = 1;
|
||||
}
|
||||
if (unknownPhraseMatches) {
|
||||
inc += 1000;
|
||||
}
|
||||
if(otherWordsMatch != null) {
|
||||
if (otherWordsMatch != null) {
|
||||
inc += otherWordsMatch.size();
|
||||
}
|
||||
if(parentSearchResult != null) {
|
||||
if (parentSearchResult != null) {
|
||||
inc += parentSearchResult.getFoundWordCount();
|
||||
}
|
||||
return inc;
|
||||
|
@ -70,11 +82,64 @@ public class SearchResult {
|
|||
public String localeRelatedObjectName;
|
||||
public Object relatedObject;
|
||||
public double distRelatedObjectName;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder b = new StringBuilder();
|
||||
if (!Algorithms.isEmpty(localeName)) {
|
||||
b.append(localeName);
|
||||
}
|
||||
if (!Algorithms.isEmpty(localeRelatedObjectName)) {
|
||||
if (b.length() > 0) {
|
||||
b.append(", ");
|
||||
}
|
||||
b.append(localeRelatedObjectName);
|
||||
if (relatedObject instanceof Street) {
|
||||
Street street = (Street) relatedObject;
|
||||
City city = street.getCity();
|
||||
if (city != null) {
|
||||
b.append(", ").append(city.getName(requiredSearchPhrase.getSettings().getLang(),
|
||||
requiredSearchPhrase.getSettings().isTransliterate()));
|
||||
}
|
||||
}
|
||||
} else if (object instanceof AbstractPoiType) {
|
||||
if (b.length() > 0) {
|
||||
b.append(" ");
|
||||
}
|
||||
AbstractPoiType poiType = (AbstractPoiType) object;
|
||||
if (poiType instanceof PoiCategory) {
|
||||
b.append("(Category)");
|
||||
} else if (poiType instanceof PoiFilter) {
|
||||
b.append("(Filter)");
|
||||
} else if (poiType instanceof PoiType) {
|
||||
PoiType p = (PoiType) poiType;
|
||||
final AbstractPoiType parentType = p.getParentType();
|
||||
if (parentType != null) {
|
||||
final String translation = parentType.getTranslation();
|
||||
b.append("(").append(translation);
|
||||
if (parentType instanceof PoiCategory) {
|
||||
b.append(" / Category)");
|
||||
} else if (parentType instanceof PoiFilter) {
|
||||
b.append(" / Filter)");
|
||||
} else if (parentType instanceof PoiType) {
|
||||
PoiType pp = (PoiType) poiType;
|
||||
PoiFilter filter = pp.getFilter();
|
||||
PoiCategory category = pp.getCategory();
|
||||
if (filter != null && !filter.getTranslation().equals(translation)) {
|
||||
b.append(" / ").append(filter.getTranslation()).append(")");
|
||||
} else if (category != null && !category.getTranslation().equals(translation)) {
|
||||
b.append(" / ").append(category.getTranslation()).append(")");
|
||||
} else {
|
||||
b.append(")");
|
||||
}
|
||||
}
|
||||
} else if (p.getFilter() != null) {
|
||||
b.append("(").append(p.getFilter().getTranslation()).append(")");
|
||||
} else if (p.getCategory() != null) {
|
||||
b.append("(").append(p.getCategory().getTranslation()).append(")");
|
||||
}
|
||||
}
|
||||
}
|
||||
return b.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,9 +3,13 @@ package net.osmand.search.core;
|
|||
import net.osmand.binary.BinaryMapIndexReader;
|
||||
import net.osmand.data.LatLon;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
// immutable object
|
||||
public class SearchSettings {
|
||||
|
@ -19,30 +23,33 @@ public class SearchSettings {
|
|||
private ObjectType[] searchTypes;
|
||||
private boolean emptyQueryAllowed;
|
||||
private boolean sortByName;
|
||||
private SearchExportSettings exportSettings;
|
||||
//private SearchExportSettings exportSettings = new SearchExportSettings(false, false);
|
||||
|
||||
public SearchSettings(SearchSettings s) {
|
||||
if(s != null) {
|
||||
this.radiusLevel = s.radiusLevel;
|
||||
this.lang = s.lang;
|
||||
this.transliterateIfMissing = s.transliterateIfMissing;
|
||||
this.totalLimit = s.totalLimit;
|
||||
this.offlineIndexes = s.offlineIndexes;
|
||||
this.originalLocation = s.originalLocation;
|
||||
this.searchTypes = s.searchTypes;
|
||||
this.emptyQueryAllowed = s.emptyQueryAllowed;
|
||||
this.sortByName = s.sortByName;
|
||||
this.exportSettings = s.exportSettings;
|
||||
}
|
||||
}
|
||||
|
||||
public SearchSettings(List<BinaryMapIndexReader> offlineIndexes) {
|
||||
public SearchSettings(List<? extends BinaryMapIndexReader> offlineIndexes) {
|
||||
this.offlineIndexes = Collections.unmodifiableList(offlineIndexes);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<BinaryMapIndexReader> getOfflineIndexes() {
|
||||
return offlineIndexes;
|
||||
}
|
||||
|
||||
public void setOfflineIndexes(List<BinaryMapIndexReader> offlineIndexes) {
|
||||
public void setOfflineIndexes(List<? extends BinaryMapIndexReader> offlineIndexes) {
|
||||
this.offlineIndexes = Collections.unmodifiableList(offlineIndexes);
|
||||
}
|
||||
|
||||
|
@ -131,6 +138,20 @@ public class SearchSettings {
|
|||
return s;
|
||||
}
|
||||
|
||||
public SearchExportSettings getExportSettings() {
|
||||
return exportSettings;
|
||||
}
|
||||
|
||||
public SearchSettings setExportSettings(SearchExportSettings exportSettings) {
|
||||
SearchSettings s = new SearchSettings(this);
|
||||
this.exportSettings = exportSettings;
|
||||
return s;
|
||||
}
|
||||
|
||||
public boolean isExportObjects() {
|
||||
return exportSettings != null;
|
||||
}
|
||||
|
||||
public boolean hasCustomSearchType(ObjectType type) {
|
||||
if (searchTypes != null) {
|
||||
for (ObjectType t : searchTypes) {
|
||||
|
@ -141,4 +162,52 @@ public class SearchSettings {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public JSONObject toJSON() {
|
||||
JSONObject json = new JSONObject();
|
||||
if (originalLocation != null) {
|
||||
json.put("lat", String.format(Locale.US, "%.5f", originalLocation.getLatitude()));
|
||||
json.put("lon", String.format(Locale.US, "%.5f", originalLocation.getLongitude()));
|
||||
}
|
||||
json.put("radiusLevel", radiusLevel);
|
||||
json.put("totalLimit", totalLimit);
|
||||
json.put("lang", lang);
|
||||
json.put("transliterateIfMissing", transliterateIfMissing);
|
||||
json.put("emptyQueryAllowed", emptyQueryAllowed);
|
||||
json.put("sortByName", sortByName);
|
||||
if (searchTypes != null && searchTypes.length > 0) {
|
||||
JSONArray searchTypesArr = new JSONArray();
|
||||
for (ObjectType type : searchTypes) {
|
||||
searchTypesArr.put(type.name());
|
||||
}
|
||||
json.put("searchTypes", searchTypes);
|
||||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
public static SearchSettings parseJSON(JSONObject json) {
|
||||
SearchSettings s = new SearchSettings(new ArrayList<BinaryMapIndexReader>());
|
||||
if (json.has("lat") && json.has("lon")) {
|
||||
s.originalLocation = new LatLon(json.getDouble("lat"), json.getDouble("lon"));
|
||||
}
|
||||
s.radiusLevel = json.optInt("radiusLevel", 1);
|
||||
s.totalLimit = json.optInt("totalLimit", -1);
|
||||
s.transliterateIfMissing = json.optBoolean("transliterateIfMissing", false);
|
||||
s.emptyQueryAllowed = json.optBoolean("emptyQueryAllowed", false);
|
||||
s.sortByName = json.optBoolean("sortByName", false);
|
||||
if (json.has("lang")) {
|
||||
s.lang = json.getString("lang");
|
||||
}
|
||||
if (json.has("searchTypes")) {
|
||||
JSONArray searchTypesArr = json.getJSONArray("searchTypes");
|
||||
ObjectType[] searchTypes = new ObjectType[searchTypesArr.length()];
|
||||
for (int i = 0; i < searchTypesArr.length(); i++) {
|
||||
String name = searchTypesArr.getString(i);
|
||||
searchTypes[i] = ObjectType.valueOf(name);
|
||||
}
|
||||
s.searchTypes = searchTypes;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,8 +2,12 @@ package net.osmand.util;
|
|||
|
||||
import net.osmand.IProgress;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.router.GeneralRouter;
|
||||
import net.osmand.router.RoutingConfiguration;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
@ -27,6 +31,7 @@ import java.util.Locale;
|
|||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.Stack;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
|
||||
|
||||
|
@ -691,4 +696,54 @@ public class Algorithms {
|
|||
return str1.compareTo(str2);
|
||||
}
|
||||
|
||||
public static String getFileAsString(File file) {
|
||||
try {
|
||||
FileInputStream fin = new FileInputStream(file);
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(fin, "UTF-8"));
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
if (sb.length() > 0) {
|
||||
sb.append("\n");
|
||||
}
|
||||
sb.append(line);
|
||||
}
|
||||
reader.close();
|
||||
fin.close();
|
||||
return sb.toString();
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static Map<String, String> parseStringsXml(File file) throws IOException, XmlPullParserException {
|
||||
InputStream is = new FileInputStream(file);
|
||||
XmlPullParser parser = PlatformUtil.newXMLPullParser();
|
||||
Map<String, String> map = new HashMap<>();
|
||||
parser.setInput(is, "UTF-8");
|
||||
int tok;
|
||||
String key = null;
|
||||
StringBuilder text = null;
|
||||
while ((tok = parser.next()) != XmlPullParser.END_DOCUMENT) {
|
||||
if (tok == XmlPullParser.START_TAG) {
|
||||
text = new StringBuilder();
|
||||
String name = parser.getName();
|
||||
if ("string".equals(name)) {
|
||||
key = parser.getAttributeValue("", "name");
|
||||
}
|
||||
} else if (tok == XmlPullParser.TEXT) {
|
||||
if (text != null) {
|
||||
text.append(parser.getText());
|
||||
}
|
||||
} else if (tok == XmlPullParser.END_TAG) {
|
||||
if (key != null) {
|
||||
map.put(key, text.toString());
|
||||
}
|
||||
key = null;
|
||||
text = null;
|
||||
}
|
||||
}
|
||||
is.close();
|
||||
return map;
|
||||
}
|
||||
}
|
|
@ -526,11 +526,20 @@ public class GeoPointParserUtil {
|
|||
if (params.containsKey("z")) {
|
||||
zmPart = params.get("z");
|
||||
}
|
||||
String[] vls = silentSplit(path, ",");
|
||||
String[] vls = null;
|
||||
if(path.contains("@")) {
|
||||
path = path.substring(path.indexOf("@") + 1);
|
||||
if(path.contains(",")) {
|
||||
vls = silentSplit(path, ",");
|
||||
}
|
||||
}
|
||||
if(vls == null) {
|
||||
vls = silentSplit(path, ",");
|
||||
}
|
||||
|
||||
if (vls.length >= 2) {
|
||||
double lat = parseSilentDouble(vls[0]);
|
||||
double lon = parseSilentDouble(vls[1]);
|
||||
double lat = parseSilentDouble(vls[0], Double.NaN);
|
||||
double lon = parseSilentDouble(vls[1], Double.NaN);
|
||||
int zoom = GeoParsedPoint.NO_ZOOM;
|
||||
if (vls.length >= 3 || zmPart.length() > 0) {
|
||||
if (zmPart.length() == 0) {
|
||||
|
@ -543,7 +552,9 @@ public class GeoPointParserUtil {
|
|||
}
|
||||
zoom = parseZoom(zmPart);
|
||||
}
|
||||
return new GeoParsedPoint(lat, lon, zoom);
|
||||
if(!Double.isNaN(lat) && !Double.isNaN(lon)) {
|
||||
return new GeoParsedPoint(lat, lon, zoom);
|
||||
}
|
||||
}
|
||||
return new GeoParsedPoint(URLDecoder.decode(opath));
|
||||
}
|
||||
|
@ -566,13 +577,17 @@ public class GeoPointParserUtil {
|
|||
}
|
||||
|
||||
private static double parseSilentDouble(String zoom) {
|
||||
return parseSilentDouble(zoom, 0);
|
||||
}
|
||||
|
||||
private static double parseSilentDouble(String zoom, double vl) {
|
||||
try {
|
||||
if (zoom != null) {
|
||||
return Double.valueOf(zoom);
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
}
|
||||
return 0;
|
||||
return vl;
|
||||
}
|
||||
|
||||
private static int parseSilentInt(String zoom) {
|
||||
|
@ -739,8 +754,9 @@ public class GeoPointParserUtil {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return isGeoPoint() ? "GeoParsedPoint [lat=" + lat + ", lon=" + lon + ", zoom=" + zoom
|
||||
+ ", label=" + label + "]" : "GeoParsedPoint [query=" + query;
|
||||
return isGeoPoint() ?
|
||||
String.format("GeoParsedPoint [lat=%.5f, lon=%.5f, zoom=%d, label=%s]", lat, lon, zoom, label) :
|
||||
String.format("GeoParsedPoint [query=%s]",query);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,22 +1,133 @@
|
|||
package net.osmand.search;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.osmand.OsmAndCollator;
|
||||
import net.osmand.ResultMatcher;
|
||||
import net.osmand.binary.BinaryMapIndexReader;
|
||||
import net.osmand.data.Amenity;
|
||||
import net.osmand.data.Building;
|
||||
import net.osmand.data.City;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.MapObject;
|
||||
import net.osmand.data.Street;
|
||||
import net.osmand.osm.AbstractPoiType;
|
||||
import net.osmand.osm.MapPoiTypes;
|
||||
import net.osmand.search.SearchUICore.SearchResultCollection;
|
||||
import net.osmand.search.SearchUICore.SearchResultMatcher;
|
||||
import net.osmand.search.core.SearchPhrase;
|
||||
import net.osmand.search.core.SearchResult;
|
||||
import net.osmand.search.core.SearchSettings;
|
||||
import net.osmand.util.Algorithms;
|
||||
import net.osmand.util.MapUtils;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
public class SearchCoreUITest {
|
||||
|
||||
private static final String SEARCH_RESOURCES_PATH = "src/test/resources/search/";
|
||||
private static Map<String, String> enPhrases = new HashMap<>();
|
||||
private static Map<String, String> phrases = new HashMap<>();
|
||||
|
||||
static {
|
||||
MapPoiTypes.setDefault(new MapPoiTypes("src/test/resources/poi_types.xml"));
|
||||
MapPoiTypes poiTypes = MapPoiTypes.getDefault();
|
||||
|
||||
try {
|
||||
enPhrases = Algorithms.parseStringsXml(new File("src/test/resources/phrases/en/phrases.xml"));
|
||||
//phrases = Algorithms.parseStringsXml(new File("src/test/resources/phrases/ru/phrases.xml"));
|
||||
phrases = enPhrases;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (XmlPullParserException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
poiTypes.setPoiTranslator(new MapPoiTypes.PoiTranslator() {
|
||||
|
||||
@Override
|
||||
public String getTranslation(AbstractPoiType type) {
|
||||
AbstractPoiType baseLangType = type.getBaseLangType();
|
||||
if (baseLangType != null) {
|
||||
return getTranslation(baseLangType) + " (" + type.getLang().toLowerCase() + ")";
|
||||
}
|
||||
return getTranslation(type.getIconKeyName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTranslation(String keyName) {
|
||||
String val = phrases.get("poi_" + keyName);
|
||||
if (val != null) {
|
||||
int ind = val.indexOf(';');
|
||||
if (ind > 0) {
|
||||
return val.substring(0, ind);
|
||||
}
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSynonyms(AbstractPoiType type) {
|
||||
AbstractPoiType baseLangType = type.getBaseLangType();
|
||||
if (baseLangType != null) {
|
||||
return getSynonyms(baseLangType);
|
||||
}
|
||||
return getSynonyms(type.getIconKeyName());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getSynonyms(String keyName) {
|
||||
String val = phrases.get("poi_" + keyName);
|
||||
if (val != null) {
|
||||
int ind = val.indexOf(';');
|
||||
if (ind > 0) {
|
||||
return val.substring(ind + 1);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEnTranslation(AbstractPoiType type) {
|
||||
AbstractPoiType baseLangType = type.getBaseLangType();
|
||||
if (baseLangType != null) {
|
||||
return getEnTranslation(baseLangType) + " (" + type.getLang().toLowerCase() + ")";
|
||||
}
|
||||
return getEnTranslation(type.getIconKeyName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEnTranslation(String keyName) {
|
||||
if (enPhrases.isEmpty()) {
|
||||
return Algorithms.capitalizeFirstLetter(keyName.replace('_', ' '));
|
||||
}
|
||||
String val = enPhrases.get("poi_" + keyName);
|
||||
if (val != null) {
|
||||
int ind = val.indexOf(';');
|
||||
if (ind > 0) {
|
||||
return val.substring(0, ind);
|
||||
}
|
||||
}
|
||||
return val;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDuplicates() throws IOException {
|
||||
SearchSettings ss = new SearchSettings((SearchSettings)null);
|
||||
|
@ -100,4 +211,220 @@ public class SearchCoreUITest {
|
|||
rs.add(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSearchJsons() throws IOException {
|
||||
final File[] files = new File(SEARCH_RESOURCES_PATH).listFiles(new FilenameFilter() {
|
||||
@Override
|
||||
public boolean accept(File dir, String filename) {
|
||||
return filename.endsWith(".json");
|
||||
}
|
||||
});
|
||||
if (files != null) {
|
||||
for (File f : files) {
|
||||
//testSearchImpl(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void testSearchImpl(File jsonFile) throws IOException, JSONException {
|
||||
String sourceJsonText = Algorithms.getFileAsString(jsonFile);
|
||||
Assert.assertNotNull(sourceJsonText);
|
||||
Assert.assertTrue(sourceJsonText.length() > 0);
|
||||
|
||||
BinaryMapIndexReaderTest reader = new BinaryMapIndexReaderTest();
|
||||
JSONObject sourceJson = new JSONObject(sourceJsonText);
|
||||
String phraseText = sourceJson.getString("phrase");
|
||||
JSONObject settingsJson = sourceJson.getJSONObject("settings");
|
||||
if (sourceJson.has("amenities")) {
|
||||
JSONArray amenitiesArr = sourceJson.getJSONArray("amenities");
|
||||
List<Amenity> amenities = new ArrayList<>();
|
||||
for (int i = 0; i < amenitiesArr.length(); i++) {
|
||||
JSONObject amenityObj = amenitiesArr.getJSONObject(i);
|
||||
amenities.add(Amenity.parseJSON(amenityObj));
|
||||
}
|
||||
reader.amenities = amenities;
|
||||
}
|
||||
if (sourceJson.has("cities")) {
|
||||
JSONArray citiesArr = sourceJson.getJSONArray("cities");
|
||||
List<City> cities = new ArrayList<>();
|
||||
List<City> initCities = new ArrayList<>();
|
||||
List<City> matchedCities = new ArrayList<>();
|
||||
List<City> streetCities = new ArrayList<>();
|
||||
for (int i = 0; i < citiesArr.length(); i++) {
|
||||
JSONObject cityObj = citiesArr.getJSONObject(i);
|
||||
final City city = City.parseJSON(cityObj);
|
||||
cities.add(city);
|
||||
if (cityObj.has("init")) {
|
||||
initCities.add(city);
|
||||
}
|
||||
if (cityObj.has("matchCity")) {
|
||||
matchedCities.add(city);
|
||||
}
|
||||
if (cityObj.has("matchStreet")) {
|
||||
streetCities.add(city);
|
||||
}
|
||||
}
|
||||
reader.cities = cities;
|
||||
reader.initCities = initCities;
|
||||
reader.matchedCities = matchedCities;
|
||||
reader.streetCities = streetCities;
|
||||
}
|
||||
List<String> results = new ArrayList<>();
|
||||
if (sourceJson.has("results")) {
|
||||
JSONArray resultsArr = sourceJson.getJSONArray("results");
|
||||
for (int i = 0; i < resultsArr.length(); i++) {
|
||||
results.add(resultsArr.getString(i));
|
||||
}
|
||||
}
|
||||
|
||||
SearchSettings s = SearchSettings.parseJSON(settingsJson);
|
||||
s.setOfflineIndexes(Collections.singletonList(reader));
|
||||
|
||||
SearchPhrase phrase = new SearchPhrase(s, OsmAndCollator.primaryCollator());
|
||||
phrase = phrase.generateNewPhrase(phraseText, s);
|
||||
|
||||
final SearchUICore core = new SearchUICore(MapPoiTypes.getDefault(), "en", false);
|
||||
core.init();
|
||||
|
||||
ResultMatcher<SearchResult> rm = new ResultMatcher<SearchResult>() {
|
||||
@Override
|
||||
public boolean publish(SearchResult object) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
SearchResultMatcher matcher = new SearchResultMatcher(rm, phrase, 1, new AtomicInteger(1), -1);
|
||||
core.searchInternal(phrase, matcher);
|
||||
|
||||
SearchResultCollection collection = new SearchResultCollection(phrase);
|
||||
collection.addSearchResults(matcher.getRequestResults(), true, true);
|
||||
List<SearchResult> searchResults = collection.getCurrentSearchResults();
|
||||
int i = 0;
|
||||
for (SearchResult result : searchResults) {
|
||||
String expected = results.get(i++);
|
||||
String present = result.toString();
|
||||
//System.out.println(present);
|
||||
Assert.assertEquals(expected, present);
|
||||
if (i >= results.size()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class BinaryMapIndexReaderTest extends BinaryMapIndexReader {
|
||||
|
||||
List<Amenity> amenities = Collections.emptyList();
|
||||
List<City> cities = Collections.emptyList();
|
||||
List<City> initCities = Collections.emptyList();
|
||||
List<City> matchedCities = Collections.emptyList();
|
||||
List<City> streetCities = Collections.emptyList();
|
||||
|
||||
BinaryMapIndexReaderTest() throws IOException {
|
||||
super(null, null, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Amenity> searchPoiByName(SearchRequest<Amenity> req) throws IOException {
|
||||
for (Amenity amenity : amenities) {
|
||||
req.publish(amenity);
|
||||
}
|
||||
return req.getSearchResults();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Amenity> searchPoi(SearchRequest<Amenity> req) throws IOException {
|
||||
for (Amenity amenity : amenities) {
|
||||
req.publish(amenity);
|
||||
}
|
||||
return req.getSearchResults();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<City> getCities(SearchRequest<City> resultMatcher, int cityType) throws IOException {
|
||||
for (City city : initCities) {
|
||||
if (resultMatcher != null) {
|
||||
resultMatcher.publish(city);
|
||||
}
|
||||
}
|
||||
return initCities;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int preloadStreets(City c, SearchRequest<Street> resultMatcher) throws IOException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preloadBuildings(Street s, SearchRequest<Building> resultMatcher) throws IOException {
|
||||
// cities must be filled with streets and buildings
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MapObject> searchAddressDataByName(SearchRequest<MapObject> req) throws IOException {
|
||||
for (City city : streetCities) {
|
||||
for (Street street : city.getStreets()) {
|
||||
req.publish(street);
|
||||
}
|
||||
}
|
||||
for (City city : matchedCities) {
|
||||
req.publish(city);
|
||||
}
|
||||
return req.getSearchResults();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRegionName() {
|
||||
return "Test region";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsPoiData(int left31x, int top31y, int right31x, int bottom31y) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsMapData() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsPoiData() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsRouteData() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsRouteData(int left31x, int top31y, int right31x, int bottom31y, int zoom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsAddressData(int left31x, int top31y, int right31x, int bottom31y) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsMapData(int tile31x, int tile31y, int zoom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsMapData(int left31x, int top31y, int right31x, int bottom31y, int zoom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsAddressData() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,19 @@ public class GeoPointParserUtilTest {
|
|||
GeoParsedPoint test = GeoPointParserUtil.parse("geo:0,0?q=86HJV99P%2B29");
|
||||
Assert.assertEquals(test.getQuery(), "86HJV99P+29");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGoogleMaps() {
|
||||
// https://www.google.com/maps?daddr=Bahnhofplatz+3,+7000+Chur@46.853582,9.529903
|
||||
GeoParsedPoint actual = GeoPointParserUtil.parse(
|
||||
"https://www.google.com/maps?daddr=Bahnhofplatz+3,+7000+Chur");
|
||||
assertGeoPoint(actual, new GeoParsedPoint("Bahnhofplatz 3, 7000 Chur"));
|
||||
|
||||
actual = GeoPointParserUtil.parse(
|
||||
"https://www.google.com/maps?daddr=Bahnhofplatz+3,+7000+Chur@46.853582,9.529903");
|
||||
System.out.println(actual);
|
||||
assertGeoPoint(actual, new GeoParsedPoint(46.853582, 9.529903));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGeoPoint() {
|
||||
|
|
4
OsmAnd-java/src/test/resources/.gitignore
vendored
|
@ -1,3 +1,5 @@
|
|||
*.json
|
||||
/*.json
|
||||
/osm_live/*.json
|
||||
*.obf
|
||||
*.osm
|
||||
phrases.xml
|
699
OsmAnd-java/src/test/resources/search/double_parking.json
Normal file
|
@ -0,0 +1,699 @@
|
|||
{
|
||||
"settings": {
|
||||
"lat": "55.28666",
|
||||
"lon": "52.00556",
|
||||
"radiusLevel": 1,
|
||||
"totalLimit": -1,
|
||||
"lang": "",
|
||||
"transliterateIfMissing": false,
|
||||
"emptyQueryAllowed": false,
|
||||
"sortByName": false
|
||||
},
|
||||
"phrase": "parking",
|
||||
"results": [
|
||||
"Parking (Personal transport)",
|
||||
"Parking entrance (Personal transport)",
|
||||
"Parking fee (Charging station / Transportation)",
|
||||
"Parking fee: no (Charging station / Transportation)",
|
||||
"Parking fee: yes (Charging station / Transportation)",
|
||||
"Parking lot (Fire hydrant / Emergency infrastructure)",
|
||||
"Parking tickets (Vending machine / Store)",
|
||||
"Parking tickets (Vending machine / Store)",
|
||||
"Parking time limit (Parking / Personal transport)",
|
||||
"Bicycle parking (Bicycle transport)",
|
||||
"Motorcycle parking (Personal transport)",
|
||||
"Parking",
|
||||
"Parking",
|
||||
"Parking",
|
||||
"Parking"
|
||||
],
|
||||
"amenities": [
|
||||
{
|
||||
"lat": "55.29801",
|
||||
"lon": "51.99100",
|
||||
"id": 881010149,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29481",
|
||||
"lon": "51.98964",
|
||||
"id": 803545283,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Заинская ГРЭС",
|
||||
"lat": "55.28492",
|
||||
"lon": "52.02125",
|
||||
"id": 481494555,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_yes": "yes",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29105",
|
||||
"lon": "51.99531",
|
||||
"id": 540237721,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28683",
|
||||
"lon": "52.01479",
|
||||
"id": 888343263,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_unpaved": "unpaved",
|
||||
"access_permissive": "permissive",
|
||||
"supervised_yes": "yes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.30317",
|
||||
"lon": "52.00192",
|
||||
"id": 1161722765,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"parking_surface": "surface",
|
||||
"operator": "cахарный завод"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "для техосмотра",
|
||||
"lat": "55.30439",
|
||||
"lon": "52.01634",
|
||||
"id": 484385195,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28615",
|
||||
"lon": "52.00702",
|
||||
"id": 1040771455,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28582",
|
||||
"lon": "52.00758",
|
||||
"id": 535925577,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.30950",
|
||||
"lon": "51.96954",
|
||||
"id": 1228158833,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29345",
|
||||
"lon": "51.99385",
|
||||
"id": 535897911,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.30957",
|
||||
"lon": "52.00374",
|
||||
"id": 897019441,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28602",
|
||||
"lon": "52.00908",
|
||||
"id": 268235957,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28777",
|
||||
"lon": "51.99608",
|
||||
"id": 4410403520512,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"surface_unpaved": "unpaved",
|
||||
"supervised_yes": "yes",
|
||||
"parking_surface": "surface",
|
||||
"fee_yes": "yes",
|
||||
"capacity": "70"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.34092",
|
||||
"lon": "52.05172",
|
||||
"id": 2136388576,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28271",
|
||||
"lon": "52.00248",
|
||||
"id": 536030271,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28391",
|
||||
"lon": "52.00273",
|
||||
"id": 536035007,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Служебная",
|
||||
"lat": "55.28615",
|
||||
"lon": "52.02350",
|
||||
"id": 481491939,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"surface_asphalt": "asphalt",
|
||||
"fee_no": "no",
|
||||
"access_permissive": "permissive",
|
||||
"supervised_yes": "yes",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.30969",
|
||||
"lon": "51.96917",
|
||||
"id": 1228158821,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.31022",
|
||||
"lon": "51.97104",
|
||||
"id": 1228158819,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29275",
|
||||
"lon": "51.99355",
|
||||
"id": 892959215,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "для посетителей",
|
||||
"lat": "55.28688",
|
||||
"lon": "52.00578",
|
||||
"id": 11390213698,
|
||||
"subType": "parking",
|
||||
"type": "transportation"
|
||||
},
|
||||
{
|
||||
"lat": "55.30838",
|
||||
"lon": "51.96767",
|
||||
"id": 1164434353,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Южная",
|
||||
"lat": "55.27739",
|
||||
"lon": "52.00544",
|
||||
"id": 641567205,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"surface_unpaved": "unpaved",
|
||||
"supervised_yes": "yes",
|
||||
"parking_surface": "surface",
|
||||
"fee_yes": "yes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28045",
|
||||
"lon": "51.99550",
|
||||
"id": 478137507,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"supervised_yes": "yes",
|
||||
"parking_surface": "surface",
|
||||
"fee_yes": "yes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Автостоянка №1",
|
||||
"lat": "55.29028",
|
||||
"lon": "51.99934",
|
||||
"id": 502948005,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"surface_gravel": "gravel",
|
||||
"supervised_yes": "yes",
|
||||
"parking_surface": "surface",
|
||||
"fee_yes": "yes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.27839",
|
||||
"lon": "52.00301",
|
||||
"id": 1168315587,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"parking_surface": "surface",
|
||||
"operator": "Заинская ЦРБ"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.30468",
|
||||
"lon": "52.01335",
|
||||
"id": 897014805,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.32509",
|
||||
"lon": "51.99930",
|
||||
"id": 1172111487,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Штрафстоянка (Эвакуатор)",
|
||||
"lat": "55.30439",
|
||||
"lon": "52.01346",
|
||||
"id": 5153530824,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"supervised_yes": "yes",
|
||||
"parking_surface": "surface",
|
||||
"fee_yes": "yes",
|
||||
"phone": "+7 (85558) 7-77-01"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Три тополя",
|
||||
"lat": "55.29666",
|
||||
"lon": "51.99048",
|
||||
"id": 642175341,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"surface_unpaved": "unpaved",
|
||||
"supervised_yes": "yes",
|
||||
"parking_surface": "surface",
|
||||
"fee_yes": "yes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29077",
|
||||
"lon": "52.00812",
|
||||
"id": 1168356553,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_yes": "yes",
|
||||
"parking_surface": "surface",
|
||||
"fee_yes": "yes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29429",
|
||||
"lon": "51.99190",
|
||||
"id": 893048919,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29959",
|
||||
"lon": "52.00516",
|
||||
"id": 1022216961,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28355",
|
||||
"lon": "51.99881",
|
||||
"id": 943827057,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28651",
|
||||
"lon": "52.00479",
|
||||
"id": 905757839,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28928",
|
||||
"lon": "52.00977",
|
||||
"id": 190467181,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_gravel": "gravel",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28674",
|
||||
"lon": "52.00282",
|
||||
"id": 1168411743,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "для клиентов",
|
||||
"lat": "55.29116",
|
||||
"lon": "51.99394",
|
||||
"id": 821840897,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"surface_asphalt": "asphalt",
|
||||
"parking_surface": "surface",
|
||||
"access_customers": "customers"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29068",
|
||||
"lon": "51.99490",
|
||||
"id": 540238031,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28982",
|
||||
"lon": "51.98911",
|
||||
"id": 190489189,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29341",
|
||||
"lon": "51.99072",
|
||||
"id": 806562897,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28042",
|
||||
"lon": "52.00155",
|
||||
"id": 1159734951,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.30493",
|
||||
"lon": "52.01007",
|
||||
"id": 1172110357,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.30500",
|
||||
"lon": "52.01108",
|
||||
"id": 1172110359,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface",
|
||||
"capacity": "13"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29816",
|
||||
"lon": "51.99222",
|
||||
"id": 1160388645,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29015",
|
||||
"lon": "51.99366",
|
||||
"id": 503278061,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.30624",
|
||||
"lon": "52.00475",
|
||||
"id": 691494051,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface",
|
||||
"operator": "ЗЗМК - Тимер"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "для регистрации в ГИБДД",
|
||||
"lat": "55.30438",
|
||||
"lon": "52.01483",
|
||||
"id": 484385289,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29258",
|
||||
"lon": "51.99188",
|
||||
"id": 892959265,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.28050",
|
||||
"lon": "52.00200",
|
||||
"id": 1159662915,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface",
|
||||
"capacity": "10"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "55.29845",
|
||||
"lon": "51.99057",
|
||||
"id": 881010015,
|
||||
"subType": "parking",
|
||||
"type": "transportation",
|
||||
"additionalInfo": {
|
||||
"fee_no": "no",
|
||||
"surface_asphalt": "asphalt",
|
||||
"supervised_no": "no",
|
||||
"parking_surface": "surface"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
662
OsmAnd-java/src/test/resources/search/poi_biergarten.json
Normal file
|
@ -0,0 +1,662 @@
|
|||
{
|
||||
"settings": {
|
||||
"lat": "51.04933",
|
||||
"lon": "13.73815",
|
||||
"radiusLevel": 1,
|
||||
"totalLimit": -1,
|
||||
"lang": "",
|
||||
"transliterateIfMissing": false,
|
||||
"emptyQueryAllowed": false,
|
||||
"sortByName": false
|
||||
},
|
||||
"phrase": "Biergarten",
|
||||
"results": [
|
||||
"Biergarten (Food)",
|
||||
"Biergarten Italienisches Dörfchen",
|
||||
"Biergarten Narrenhäus'l",
|
||||
"Biergarten Elbsegler",
|
||||
"Biergarten Elbsegler",
|
||||
"Biergarten",
|
||||
"Biergarten",
|
||||
"Biergarten",
|
||||
"Biergarten",
|
||||
"Biergarten"
|
||||
],
|
||||
"amenities": [
|
||||
{
|
||||
"lat": "51.02489",
|
||||
"lon": "13.69860",
|
||||
"id": 244538865,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"surface_fine_gravel": "fine_gravel"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.09478",
|
||||
"lon": "13.84153",
|
||||
"id": 865332598,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "Einkehr"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.01123",
|
||||
"lon": "13.67918",
|
||||
"id": 9712288200,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"website": "http://www.zur-linde-freital.de/",
|
||||
"operator": "Zur Linde",
|
||||
"image": "http://commons.wikimedia.org/wiki/File:Hotel_und_Gasthaus_Zur_Linde_Freital-Birkigt.jpg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Altes Wettbüro",
|
||||
"lat": "51.06472",
|
||||
"lon": "13.74467",
|
||||
"id": 11451975032,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Tu-Sa 17:00-22:00",
|
||||
"additionalInfo": {
|
||||
"wheelchair_limited": "limited",
|
||||
"outdoor_seating_yes": "yes",
|
||||
"outdoor_seating_filter_yes": "yes",
|
||||
"opening_hours": "Tu-Sa 17:00-22:00",
|
||||
"website": "http://www.altes-wettbuero.de",
|
||||
"phone": "+49 351 6588983",
|
||||
"operator": "Falk Gruß"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Carolaschlösschen",
|
||||
"lat": "51.03341",
|
||||
"lon": "13.76392",
|
||||
"id": 3704353318,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Mo-Su 11:00-24:00",
|
||||
"additionalInfo": {
|
||||
"wheelchair_limited": "limited",
|
||||
"opening_hours": "Mo-Su 11:00-24:00",
|
||||
"facebook": "https://www.facebook.com/carolaschloesschen/"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.01251",
|
||||
"lon": "13.69407",
|
||||
"id": 562115695,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance"
|
||||
},
|
||||
{
|
||||
"name": "Torwirtschaft",
|
||||
"lat": "51.04156",
|
||||
"lon": "13.75139",
|
||||
"id": 517007905,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes",
|
||||
"website": "http://www.torwirtschaft-dresden.de",
|
||||
"facebook": "https://www.facebook.com/Torwirtschaft-der-Biergarten-f%C3%BCr-alle-Dynamofans-168677023169963/"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Biergarten Italienisches Dörfchen",
|
||||
"lat": "51.05429",
|
||||
"lon": "13.73759",
|
||||
"id": 486232011,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance"
|
||||
},
|
||||
{
|
||||
"lat": "51.04261",
|
||||
"lon": "13.75229",
|
||||
"id": 98518191,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Körnergarten",
|
||||
"names": {
|
||||
"prefix": "Biergarten"
|
||||
},
|
||||
"lat": "51.05316",
|
||||
"lon": "13.81192",
|
||||
"id": 3704353594,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Mo-Su 11:00-24:00",
|
||||
"additionalInfo": {
|
||||
"wheelchair_limited": "limited",
|
||||
"opening_hours": "Mo-Su 11:00-24:00",
|
||||
"website": "http://www.koernergarten.de/"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.06397",
|
||||
"lon": "13.79748",
|
||||
"id": 670742479,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance"
|
||||
},
|
||||
{
|
||||
"name": "Weingut Seifert",
|
||||
"lat": "51.11134",
|
||||
"lon": "13.66701",
|
||||
"id": 789740008,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"note": "not really a 'biergarten' :)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "50.98710",
|
||||
"lon": "13.65086",
|
||||
"id": 9037536542,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "Zum Gründl"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.10538",
|
||||
"lon": "13.62622",
|
||||
"id": 9289210778,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "Zum Bürgergarten"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.09459",
|
||||
"lon": "13.84170",
|
||||
"id": 5598697742,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "Einkehr"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Trobischhof",
|
||||
"lat": "51.08649",
|
||||
"lon": "13.71338",
|
||||
"id": 409847251,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_limited": "limited"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Demnitz Elbegarten",
|
||||
"lat": "51.05328",
|
||||
"lon": "13.81175",
|
||||
"id": 771102016,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_no": "no",
|
||||
"cuisine_german": "german",
|
||||
"website": "http://www.elbegarten.de"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Augustus Garten am Narrenhäusl",
|
||||
"lat": "51.05697",
|
||||
"lon": "13.74166",
|
||||
"id": 465538291,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance"
|
||||
},
|
||||
{
|
||||
"lat": "51.01529",
|
||||
"lon": "13.65107",
|
||||
"id": 7482890514,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "Burgwartschänke"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "el Horst",
|
||||
"lat": "51.04361",
|
||||
"lon": "13.78979",
|
||||
"id": 559979958,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Oct-Apr: Mo-Fr 17:00-18:00+, Oct-Apr: Sa,PH 11:30-18:00+, May-Sep: Mo-Fr 15:00-18:00+, May-Sep: Sa,PH 11:30-18:00+",
|
||||
"additionalInfo": {
|
||||
"opening_hours": "Oct-Apr: Mo-Fr 17:00-18:00+, Oct-Apr: Sa,PH 11:30-18:00+, May-Sep: Mo-Fr 15:00-18:00+, May-Sep: Sa,PH 11:30-18:00+"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.07376",
|
||||
"lon": "13.70135",
|
||||
"id": 553613482,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "Wirtshaus Lindenschänke"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Wachstube",
|
||||
"lat": "51.04254",
|
||||
"lon": "13.75222",
|
||||
"id": 46060263,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "11:00+",
|
||||
"additionalInfo": {
|
||||
"wheelchair_no": "no",
|
||||
"opening_hours": "11:00+",
|
||||
"website": "https://www.torwirtschaft-dresden.de/wachstube/restaurant.php",
|
||||
"phone": "+49 351 4466975",
|
||||
"image": "https://commons.wikimedia.org/wiki/File:Torhaus_N_Grosser_Garten_Dresden-2.jpg",
|
||||
"wheelchair_description:de": "Zugang ins Gebäude nur über Stufen",
|
||||
"height": "5.7",
|
||||
"facebook": "https://www.facebook.com/Wachstube-im-Gro%C3%9Fen-Garten-Dresden-144180698984577/",
|
||||
"email": "info@wachstube-dresden.de"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.09050",
|
||||
"lon": "13.70555",
|
||||
"id": 6300849046,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "Bäckerei Werner"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Biergarten Elbsegler",
|
||||
"lat": "51.05731",
|
||||
"lon": "13.73973",
|
||||
"id": 465318113,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_limited": "limited"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Straußenwirtschaft Weingut Pesterwitz",
|
||||
"lat": "51.02883",
|
||||
"lon": "13.64144",
|
||||
"id": 478369183,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"website": "https://www.gut-pesterwitz.de/"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Schillergarten",
|
||||
"lat": "51.05228",
|
||||
"lon": "13.80908",
|
||||
"id": 493702544,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Mo-Su 11:00-01:00",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes",
|
||||
"opening_hours": "Mo-Su 11:00-01:00"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.04111",
|
||||
"lon": "13.80554",
|
||||
"id": 5837244174,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "Astloch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Spitzwegerich",
|
||||
"lat": "51.07767",
|
||||
"lon": "13.70757",
|
||||
"id": 412610355,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes",
|
||||
"toilets_wheelchair_no": "no"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Biergarten Goldener Anker",
|
||||
"lat": "51.10399",
|
||||
"lon": "13.62850",
|
||||
"id": 143015201,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Tu-Su,PH 11:00-21:00",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes",
|
||||
"opening_hours": "Tu-Su,PH 11:00-21:00"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Bottoms Up",
|
||||
"lat": "51.06516",
|
||||
"lon": "13.75615",
|
||||
"id": 1394136626,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance"
|
||||
},
|
||||
{
|
||||
"name": "Biergarten Narrenhäus'l",
|
||||
"lat": "51.05666",
|
||||
"lon": "13.74130",
|
||||
"id": 466763007,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance"
|
||||
},
|
||||
{
|
||||
"name": "Zum Schießhaus",
|
||||
"lat": "51.05464",
|
||||
"lon": "13.72727",
|
||||
"id": 326416539,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Mo-Su,PH 11:00-23:00",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes",
|
||||
"toilets_wheelchair_no": "no",
|
||||
"opening_hours": "Mo-Su,PH 11:00-23:00"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Palais Bistro",
|
||||
"lat": "51.05182",
|
||||
"lon": "13.73682",
|
||||
"id": 501015667,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Apr-Oct: Mo-Su 11:00-24:00, Nov-Mar: Mo-Th 12:00-14:30,17:30-24:00, Nov-Mar: Fr-Su 12:00-24:00",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes",
|
||||
"opening_hours": "Apr-Oct: Mo-Su 11:00-24:00, Nov-Mar: Mo-Th 12:00-14:30,17:30-24:00, Nov-Mar: Fr-Su 12:00-24:00"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Brauhaus am Waldschlößchen",
|
||||
"lat": "51.06778",
|
||||
"lon": "13.77786",
|
||||
"id": 594989978,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Mo-Su 11:00-01:00",
|
||||
"additionalInfo": {
|
||||
"wheelchair_limited": "limited",
|
||||
"opening_hours": "Mo-Su 11:00-01:00"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.00222",
|
||||
"lon": "13.68504",
|
||||
"id": 2469999180,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance"
|
||||
},
|
||||
{
|
||||
"name": "Biergarten Elbsegler",
|
||||
"lat": "51.05738",
|
||||
"lon": "13.73913",
|
||||
"id": 466539133,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance"
|
||||
},
|
||||
{
|
||||
"lat": "51.01010",
|
||||
"lon": "13.66208",
|
||||
"id": 7987508388,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes",
|
||||
"operator": "Zum goldenen Löwen"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "50.99476",
|
||||
"lon": "13.72701",
|
||||
"id": 6765029580,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "Eutschützer Mühle"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "50.99295",
|
||||
"lon": "13.64362",
|
||||
"id": 6065174964,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "Alte Schmiede"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Louisengarten",
|
||||
"lat": "51.06681",
|
||||
"lon": "13.75278",
|
||||
"id": 68516655,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Apr-Sep Su-Th 16:00+; Apr-Sep Fr,Sa 15:00+ || off \"Bei unfreundlichem Wetter\"",
|
||||
"additionalInfo": {
|
||||
"wheelchair_no": "no",
|
||||
"opening_hours": "Apr-Sep Su-Th 16:00+; Apr-Sep Fr,Sa 15:00+ || off \"Bei unfreundlichem Wetter\"",
|
||||
"website": "http://www.biergarten-dresden.de",
|
||||
"note": "Neustädter Winter Hüttn von Oktober-Dezember",
|
||||
"alt_name": "Neustädter Winter Hüttn"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.00871",
|
||||
"lon": "13.65959",
|
||||
"id": 9237211698,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes",
|
||||
"operator": "Akropolis"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.03435",
|
||||
"lon": "13.76042",
|
||||
"id": 595971770,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Apr-Oct: Mo-Fr 11:00-19:00; Sa-Su 10:00-19:00; PH 10:00-19:00",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes",
|
||||
"opening_hours": "Apr-Oct: Mo-Fr 11:00-19:00; Sa-Su 10:00-19:00; PH 10:00-19:00",
|
||||
"website": "https://www.grosser-garten-dresden.de/de/gaesteservice/gastronomie-shop/",
|
||||
"phone": "+49 152 37 00 67 53"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Landgut Hofewiese",
|
||||
"lat": "51.10989",
|
||||
"lon": "13.83207",
|
||||
"id": 8455509378,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Café & Restaurant Saite",
|
||||
"lat": "51.07636",
|
||||
"lon": "13.74825",
|
||||
"id": 577481323,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Mo-Fr 18:00-24:00, Su 10:00-15:00",
|
||||
"additionalInfo": {
|
||||
"wheelchair_limited": "limited",
|
||||
"opening_hours": "Mo-Fr 18:00-24:00, Su 10:00-15:00"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Alt-Dresden",
|
||||
"lat": "51.04977",
|
||||
"lon": "13.69881",
|
||||
"id": 970594717,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_limited": "limited",
|
||||
"phone": "0351 4135133"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.08677",
|
||||
"lon": "13.70081",
|
||||
"id": 413620001,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance"
|
||||
},
|
||||
{
|
||||
"lat": "50.98618",
|
||||
"lon": "13.63208",
|
||||
"id": 10355747978,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "Hirschbergschenke"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Fährgarten Johannstadt",
|
||||
"lat": "51.06151",
|
||||
"lon": "13.76679",
|
||||
"id": 4415013507072,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_yes": "yes",
|
||||
"outdoor_seating_yes": "yes",
|
||||
"outdoor_seating_filter_yes": "yes",
|
||||
"website": "http://www.faehrgarten.de/",
|
||||
"phone": "+49 351 4596262",
|
||||
"brewery_additional": "Radeberger",
|
||||
"email": "info@faehrgarten.de"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.02343",
|
||||
"lon": "13.73347",
|
||||
"id": 4563637454,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance"
|
||||
},
|
||||
{
|
||||
"name": "Besenwirtschaft Steinrücken",
|
||||
"lat": "51.11590",
|
||||
"lon": "13.62457",
|
||||
"id": 7474665554,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"website": "http://www.besenwirtschaft-steinruecken.de/index.html"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.05181",
|
||||
"lon": "13.81396",
|
||||
"id": 9819148822,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"operator": "WSV \"Am Blauen Wunder\""
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Zacke",
|
||||
"lat": "51.01300",
|
||||
"lon": "13.63618",
|
||||
"id": 7498805230,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance"
|
||||
},
|
||||
{
|
||||
"name": "Klotzscher Sommerwirtschaft",
|
||||
"lat": "51.11072",
|
||||
"lon": "13.76879",
|
||||
"id": 717794449,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Mo-Fr 17:00-23:00; Sa-Su 11:00-23:00; Nov-Mar off",
|
||||
"additionalInfo": {
|
||||
"opening_hours": "Mo-Fr 17:00-23:00; Sa-Su 11:00-23:00; Nov-Mar off",
|
||||
"website": "http://klotzschersommerwirtschaft.de",
|
||||
"phone": "+49 351 8804570",
|
||||
"fax": "+49 351 8902050",
|
||||
"email": "Kontakt@klotzscher-sommerwirtschaft.de",
|
||||
"capacity": "20"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Brauhaus Watzke",
|
||||
"lat": "51.07744",
|
||||
"lon": "13.71540",
|
||||
"id": 397976739,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"additionalInfo": {
|
||||
"wheelchair_limited": "limited",
|
||||
"toilets_wheelchair_no": "no"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Trachauer Sommergarten",
|
||||
"lat": "51.09166",
|
||||
"lon": "13.70289",
|
||||
"id": 1822089672,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "Mo-Su 17:00-21:00",
|
||||
"additionalInfo": {
|
||||
"opening_hours": "Mo-Su 17:00-21:00",
|
||||
"note": "Auch im Winter geöffnet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lat": "51.06520",
|
||||
"lon": "13.82406",
|
||||
"id": 11565282314,
|
||||
"subType": "biergarten",
|
||||
"type": "sustenance",
|
||||
"openingHours": "seasonal",
|
||||
"additionalInfo": {
|
||||
"outdoor_seating_yes": "yes",
|
||||
"outdoor_seating_filter_yes": "yes",
|
||||
"opening_hours": "seasonal"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
2897
OsmAnd-java/src/test/resources/search/street_komsomolskaya.json
Normal file
8626
OsmAnd-java/src/test/resources/search/street_lenina_30.json
Normal file
8178
OsmAnd-java/src/test/resources/search/street_rue_emile.json
Normal file
3946
OsmAnd-java/src/test/resources/search/street_santa_clara.json
Normal file
|
@ -135,7 +135,9 @@ dependencies {
|
|||
implementation project(path: ':OsmAnd-java', configuration: 'android')
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
implementation( "org.jetbrains.kotlin:kotlin-stdlib:1.2.71") {
|
||||
exclude group: 'org.jetbrains', module: 'annotations'
|
||||
}
|
||||
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
|
||||
implementation 'com.android.support:design:28.0.0-rc01'
|
||||
implementation 'com.android.support:customtabs:28.0.0-rc01'
|
||||
|
@ -146,4 +148,5 @@ dependencies {
|
|||
implementation("com.github.HITGIF:TextFieldBoxes:1.4.4") {
|
||||
exclude group: 'com.android.support'
|
||||
}
|
||||
implementation 'org.jetbrains:annotations-java5:15.0'
|
||||
}
|
||||
|
|
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_altitude_range.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_date_add.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_date_end.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_date_start.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_distance_16dp.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_share.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_speed_average.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_timeline.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_altitude_range.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_date_add.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_date_end.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_date_start.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_distance_16dp.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_share.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_speed_average.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_timeline.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_altitude_range.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_date_add.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_date_end.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_date_start.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_distance_16dp.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_share.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_speed_average.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_timeline.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_altitude_range.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_date_add.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_date_end.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_date_start.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_distance_16dp.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_share.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_speed_average.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_timeline.png
Normal file
After Width: | Height: | Size: 2 KiB |
24
OsmAnd-telegram/res/drawable/btn_round_border.xml
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?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/ctrl_active_light" />
|
||||
<corners android:radius="@dimen/dialog_button_radius" />
|
||||
</shape>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="@color/ctrl_light" />
|
||||
<corners android:radius="@dimen/dialog_button_radius" />
|
||||
</shape>
|
||||
</item>
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="@null" />
|
||||
<corners android:radius="@dimen/dialog_button_radius" />
|
||||
<stroke android:width="1dp" android:color="@color/app_bar_divider" />
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
</selector>
|
127
OsmAnd-telegram/res/layout/bottom_sheet_add_new_device.xml
Normal file
|
@ -0,0 +1,127 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
tools:layout_gravity="bottom">
|
||||
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
android:id="@+id/scroll_view_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<android.support.v4.widget.NestedScrollView
|
||||
android:id="@+id/scroll_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:behavior_hideable="true"
|
||||
app:behavior_peekHeight="@dimen/bottom_sheet_peek_height"
|
||||
app:layout_behavior="@string/bottom_sheet_behavior">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/card_bg_color"
|
||||
android:orientation="vertical">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard"
|
||||
android:text="@string/add_device"
|
||||
android:textColor="?android:textColorPrimary"
|
||||
android:textSize="@dimen/list_item_title_text_size"
|
||||
app:firstBaselineToTopHeight="28sp"
|
||||
app:typeface="@string/font_roboto_medium" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard"
|
||||
android:text="@string/enter_device_name_description"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
app:firstBaselineToTopHeight="28sp"
|
||||
app:lastBaselineToBottomHeight="16sp"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
<studio.carbonylgroup.textfieldboxes.TextFieldBoxes
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard"
|
||||
app:hasClearButton="true"
|
||||
app:labelText="@string/device_name">
|
||||
|
||||
<studio.carbonylgroup.textfieldboxes.ExtendedEditText
|
||||
android:id="@+id/edit_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text" />
|
||||
|
||||
</studio.carbonylgroup.textfieldboxes.TextFieldBoxes>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/error_text_descr"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/content_padding_standard"
|
||||
android:layout_marginRight="@dimen/content_padding_standard"
|
||||
android:layout_marginTop="@dimen/content_padding_half"
|
||||
android:letterSpacing="@dimen/text_description_letter_spacing"
|
||||
android:lineSpacingMultiplier="@dimen/text_description_line_spacing_multiplier"
|
||||
android:textSize="@dimen/hint_text_size"
|
||||
android:visibility="invisible"
|
||||
tools:text="@string/device_name_cannot_be_empty" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</android.support.v4.widget.NestedScrollView>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/buttons_bottom_bar_height"
|
||||
android:background="?attr/card_bg_color"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="@dimen/content_padding_half"
|
||||
android:paddingRight="@dimen/content_padding_half">
|
||||
|
||||
<include
|
||||
layout="@layout/secondary_btn"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<View
|
||||
android:layout_width="@dimen/content_padding_half"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
|
||||
<include
|
||||
layout="@layout/primary_btn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progressBar"
|
||||
android:layout_width="@dimen/progress_bar_size_small"
|
||||
android:layout_height="@dimen/progress_bar_size_small"
|
||||
android:layout_gravity="center"
|
||||
android:visibility="gone"/>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
|
@ -95,11 +95,13 @@
|
|||
app:typeface="@string/font_roboto_medium" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/share_as_description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard"
|
||||
android:text="@string/share_location_as_descr"
|
||||
android:text="@string/share_location_as_description"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
app:firstBaselineToTopHeight="20sp"
|
||||
|
@ -120,6 +122,38 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/add_new_device_btn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dialog_button_height"
|
||||
android:layout_marginBottom="@dimen/content_padding_standard"
|
||||
android:layout_marginLeft="@dimen/content_padding_half"
|
||||
android:layout_marginRight="@dimen/content_padding_half"
|
||||
android:background="@drawable/btn_round"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="@dimen/content_padding_half"
|
||||
android:paddingRight="@dimen/content_padding_half">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/add_new_device_icon"
|
||||
android:layout_width="@dimen/list_item_icon_size"
|
||||
android:layout_height="@dimen/list_item_icon_size"
|
||||
tools:src="@drawable/ic_action_add"
|
||||
tools:tint="@color/icon_light" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/add_new_device_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/content_padding_big"
|
||||
android:layout_marginRight="@dimen/content_padding_big"
|
||||
android:text="@string/add_device"
|
||||
android:textColor="?android:textColorPrimary"
|
||||
android:textSize="@dimen/list_item_title_text_size"
|
||||
app:typeface="@string/font_roboto_medium" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<include layout="@layout/list_item_divider" />
|
||||
|
|
|
@ -117,13 +117,32 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/recycler_view"
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/last_telegram_update_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="top|center_horizontal"
|
||||
android:gravity="center"
|
||||
android:paddingTop="@dimen/content_padding_half"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
android:visibility="gone"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
<android.support.v4.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipe_refresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:paddingBottom="@dimen/list_view_bottom_padding"
|
||||
android:scrollbars="vertical"/>
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/recycler_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:paddingBottom="@dimen/list_item_content_margin"
|
||||
android:scrollbars="vertical" />
|
||||
|
||||
</android.support.v4.widget.SwipeRefreshLayout>
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/open_osmand_btn"
|
||||
|
|
125
OsmAnd-telegram/res/layout/fragment_timeline_tab.xml
Normal file
|
@ -0,0 +1,125 @@
|
|||
<?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"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:id="@+id/app_bar_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/card_bg_color">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:letterSpacing="@dimen/title_letter_spacing"
|
||||
android:maxLines="1"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard"
|
||||
android:text="@string/timeline"
|
||||
android:textColor="@color/app_bar_title_light"
|
||||
android:paddingTop="@dimen/content_padding_standard"
|
||||
android:paddingBottom="12dp"
|
||||
android:textSize="@dimen/title_text_size"
|
||||
app:typeface="@string/font_roboto_mono_bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard"
|
||||
android:text="@string/timeline_description"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/descr_text_size" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/monitoring_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/action_bar_height"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/monitoring_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center_vertical|start"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:text="@string/monitoring_is_enabled"
|
||||
android:textColor="@color/ctrl_active_light"
|
||||
android:textSize="@dimen/descr_text_size"
|
||||
app:typeface="@string/font_roboto_medium" />
|
||||
|
||||
<Switch
|
||||
android:id="@+id/monitoring_switcher"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:focusable="false" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/app_bar_divider" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/date_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/timeline_time_buttons_height"
|
||||
android:background="@color/screen_bg_light"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/date_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dialog_button_height"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginEnd="@dimen/content_padding_half"
|
||||
android:layout_marginRight="@dimen/content_padding_half"
|
||||
android:background="@drawable/btn_round_border"
|
||||
android:drawablePadding="@dimen/content_padding_half"
|
||||
android:ellipsize="end"
|
||||
android:gravity="start|center_vertical"
|
||||
android:maxLines="1"
|
||||
android:paddingLeft="@dimen/image_button_padding"
|
||||
android:paddingRight="@dimen/image_button_padding"
|
||||
android:text="@string/shared_string_date"
|
||||
android:textColor="?attr/ctrl_active_color"
|
||||
android:textSize="@dimen/text_button_text_size"
|
||||
app:typeface="@string/font_roboto_medium" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
|
||||
<android.support.v4.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipe_refresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/recycler_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:paddingBottom="@dimen/list_item_content_margin"
|
||||
android:scrollbars="vertical" />
|
||||
|
||||
</android.support.v4.widget.SwipeRefreshLayout>
|
||||
|
||||
</LinearLayout>
|
526
OsmAnd-telegram/res/layout/fragment_user_gpx_info.xml
Normal file
|
@ -0,0 +1,526 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/card_bg_color">
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/scroll_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/image_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="102dp"
|
||||
app:layout_scrollFlags="scroll">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:contentDescription="@string/shared_string_back"
|
||||
android:padding="@dimen/content_padding_standard"
|
||||
tools:src="@drawable/ic_arrow_back"
|
||||
tools:tint="@color/icon_light" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/user_icon"
|
||||
android:layout_width="@dimen/timeline_user_icon_size"
|
||||
android:layout_height="@dimen/timeline_user_icon_size"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="@dimen/content_padding_half"
|
||||
tools:src="@drawable/img_user_picture" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:text="@string/start_location_sharing"
|
||||
android:textColor="?android:textColorPrimary"
|
||||
android:textSize="@dimen/title_text_size"
|
||||
app:typeface="@string/font_roboto_mono_bold" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/interval_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/start_descr"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/content_padding_standard"
|
||||
android:layout_marginRight="@dimen/content_padding_standard"
|
||||
android:layout_weight="1"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="@string/start_date"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
app:firstBaselineToTopHeight="@dimen/list_item_baseline_to_top_height"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/end_descr"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="@dimen/content_padding_standard"
|
||||
android:layout_marginLeft="@dimen/content_padding_standard"
|
||||
android:layout_weight="1"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="@string/end_date"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
app:firstBaselineToTopHeight="@dimen/list_item_baseline_to_top_height"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="@dimen/card_divider_bottom_margin"
|
||||
android:paddingBottom="@dimen/content_padding_half"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/date_start_btn"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/dialog_button_height"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/content_padding_half"
|
||||
android:layout_marginRight="@dimen/content_padding_half"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/btn_round"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:paddingLeft="@dimen/image_button_padding"
|
||||
android:paddingRight="@dimen/image_button_padding"
|
||||
android:textSize="@dimen/text_button_text_size"
|
||||
app:typeface="@string/font_roboto_medium"
|
||||
tools:textColor="?attr/ctrl_active_color"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/time_start_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dialog_button_height"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:background="@drawable/btn_round"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:paddingLeft="@dimen/image_button_padding"
|
||||
android:paddingRight="@dimen/image_button_padding"
|
||||
android:textSize="@dimen/text_button_text_size"
|
||||
app:typeface="@string/font_roboto_medium"
|
||||
tools:textColor="?attr/ctrl_active_color"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<View
|
||||
android:layout_width="16dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="@dimen/content_padding_half"
|
||||
android:layout_marginRight="@dimen/content_padding_half"
|
||||
android:background="@color/card_divider_light" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/date_end_btn"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/dialog_button_height"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/content_padding_half"
|
||||
android:layout_marginRight="@dimen/content_padding_half"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/btn_round"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:paddingLeft="@dimen/image_button_padding"
|
||||
android:paddingRight="@dimen/image_button_padding"
|
||||
android:textSize="@dimen/text_button_text_size"
|
||||
app:typeface="@string/font_roboto_medium"
|
||||
tools:textColor="?attr/ctrl_active_color"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/time_end_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dialog_button_height"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:background="@drawable/btn_round"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:paddingLeft="@dimen/image_button_padding"
|
||||
android:paddingRight="@dimen/image_button_padding"
|
||||
android:textSize="@dimen/text_button_text_size"
|
||||
app:typeface="@string/font_roboto_medium"
|
||||
tools:textColor="?attr/ctrl_active_color"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/map_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="152dp"
|
||||
android:layout_marginLeft="@dimen/content_padding_standard"
|
||||
android:layout_marginRight="@dimen/content_padding_standard">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/gpx_map"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:contentDescription="@string/shared_string_map" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/gpx_statistic"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/distance_time_span"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingBottom="11dp"
|
||||
android:paddingTop="13dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="16dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/distance_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:src="@drawable/ic_action_sort_by_distance" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="18dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/distance_desc"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="3dp"
|
||||
android:layout_marginBottom="6dp"
|
||||
android:background="@null"
|
||||
android:text="@string/shared_string_distance"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/distance_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="@dimen/descr_text_size"
|
||||
app:typeface="@string/font_roboto_mono_bold"
|
||||
tools:text="40 km" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="16dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/duration_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:src="@drawable/ic_action_share_location" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="18dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/duration_desc"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="3dp"
|
||||
android:layout_marginBottom="6dp"
|
||||
android:background="@null"
|
||||
android:text="@string/time_on_the_move"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/duration_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="@dimen/descr_text_size"
|
||||
app:typeface="@string/font_roboto_mono_bold"
|
||||
tools:text="3:32:44" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/list_divider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="8dp">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/card_divider_light" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="16dp">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/card_divider_light" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/start_end_time"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="13dp"
|
||||
android:paddingBottom="11dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="16dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/average_speed_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:src="@drawable/ic_action_speed_average" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="18dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/average_speed_desc"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="6dp"
|
||||
android:background="@null"
|
||||
android:text="@string/average_speed"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/average_speed_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="@dimen/descr_text_size"
|
||||
app:typeface="@string/font_roboto_mono_bold"
|
||||
tools:text="15:04:58" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="16dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/average_altitude_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:src="@drawable/ic_action_share_location" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="18dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/average_altitude_desc"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="6dp"
|
||||
android:background="@null"
|
||||
android:text="@string/average_altitude"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/average_altitude_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="@dimen/descr_text_size"
|
||||
app:typeface="@string/font_roboto_mono_bold"
|
||||
tools:text="20:58:00" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/open_in_osmand_btn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/list_item_height_min"
|
||||
android:layout_marginLeft="@dimen/content_padding_standard"
|
||||
android:layout_marginRight="@dimen/content_padding_standard"
|
||||
android:layout_marginBottom="@dimen/image_button_padding"
|
||||
android:background="@drawable/btn_round"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/open_in_osmand_icon"
|
||||
android:layout_width="@dimen/list_item_icon_size"
|
||||
android:layout_height="@dimen/list_item_icon_size"
|
||||
android:src="@drawable/ic_logo_osmand_free" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/open_in_osmand_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/content_padding_big"
|
||||
android:layout_marginRight="@dimen/content_padding_big"
|
||||
android:text="@string/open_in_osmand"
|
||||
android:textColor="?android:textColorPrimary"
|
||||
android:textSize="@dimen/list_item_title_text_size"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/share_gpx_btn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/list_item_height_min"
|
||||
android:layout_marginLeft="@dimen/content_padding_standard"
|
||||
android:layout_marginRight="@dimen/content_padding_standard"
|
||||
android:layout_marginBottom="@dimen/content_padding_standard"
|
||||
android:background="@drawable/btn_round"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/share_gpx_icon"
|
||||
android:layout_width="@dimen/list_item_icon_size"
|
||||
android:layout_height="@dimen/list_item_icon_size"
|
||||
tools:src="@drawable/ic_action_share"
|
||||
tools:tint="@color/ctrl_active_light" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/share_gpx_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/content_padding_big"
|
||||
android:layout_marginRight="@dimen/content_padding_big"
|
||||
android:text="@string/shared_string_share"
|
||||
android:textColor="?android:textColorPrimary"
|
||||
android:textSize="@dimen/list_item_title_text_size"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
|
@ -40,7 +40,8 @@
|
|||
android:layout_marginEnd="@dimen/content_padding_standard"
|
||||
android:layout_marginRight="@dimen/content_padding_standard"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="@dimen/content_padding_half">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/title"
|
||||
|
@ -55,40 +56,78 @@
|
|||
tools:text="Share location"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/group_container"
|
||||
android:id="@+id/details_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/group_icon"
|
||||
android:layout_width="@dimen/list_item_icon_size_small"
|
||||
android:layout_height="@dimen/list_item_icon_size_small"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginEnd="@dimen/content_padding_small"
|
||||
android:layout_marginRight="@dimen/content_padding_small"
|
||||
tools:src="@drawable/img_group_picture" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/group_title"
|
||||
<LinearLayout
|
||||
android:id="@+id/distance_and_points_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textColor="?attr/android:textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
app:firstBaselineToTopHeight="@dimen/list_item_baseline_to_top_height"
|
||||
app:typeface="@string/font_roboto_regular"
|
||||
tools:text="@string/shared_string_group" />
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/distance_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginEnd="@dimen/content_padding_small"
|
||||
android:layout_marginRight="@dimen/content_padding_small"
|
||||
tools:src="@drawable/ic_action_distance_16dp"
|
||||
tools:tint="@color/icon_light" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/distance_and_points_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:textColor="?android:textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
app:firstBaselineToTopHeight="@dimen/list_item_baseline_to_top_height"
|
||||
app:typeface="@string/font_roboto_regular"
|
||||
tools:text="213 m" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/group_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/group_icon"
|
||||
android:layout_width="@dimen/list_item_icon_size_small"
|
||||
android:layout_height="@dimen/list_item_icon_size_small"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginEnd="@dimen/content_padding_small"
|
||||
android:layout_marginRight="@dimen/content_padding_small"
|
||||
tools:src="@drawable/img_group_picture" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/group_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textColor="?android:textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
app:firstBaselineToTopHeight="@dimen/list_item_baseline_to_top_height"
|
||||
app:typeface="@string/font_roboto_regular"
|
||||
tools:text="@string/shared_string_group" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/location_with_descr_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/content_padding_half">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/location_view_container"
|
||||
|
@ -211,4 +250,16 @@
|
|||
android:id="@+id/bottom_shadow"
|
||||
layout="@layout/card_bottom_divider"/>
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/last_telegram_update_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:gravity="center"
|
||||
android:paddingTop="@dimen/content_padding_half"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
android:visibility="gone"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -171,6 +171,44 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/gps_points"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/hint_text_size"
|
||||
app:typeface="@string/font_roboto_regular"
|
||||
android:text="@string/gps_points" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/gps_points_collected"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="@dimen/hint_text_size"
|
||||
app:typeface="@string/font_roboto_mono_bold" />
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:layout_width="wrap_content"
|
||||
android:id="@+id/gps_points_in_buffer_txt"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/hint_text_size"
|
||||
android:text="@string/gps_points_in_buffer"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<Switch
|
||||
|
|
|
@ -144,4 +144,16 @@
|
|||
android:id="@+id/bottom_shadow"
|
||||
layout="@layout/card_bottom_divider"/>
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/last_telegram_update_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:gravity="center"
|
||||
android:paddingTop="@dimen/content_padding_half"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/list_item_description_text_size"
|
||||
android:visibility="gone"
|
||||
app:typeface="@string/font_roboto_regular" />
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -9,4 +9,9 @@
|
|||
android:id="@+id/action_live_now"
|
||||
android:icon="@drawable/ic_action_live_now"
|
||||
android:title="@string/live_now"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/action_timeline"
|
||||
android:icon="@drawable/ic_action_timeline"
|
||||
android:title="@string/timeline"/>
|
||||
</menu>
|
153
OsmAnd-telegram/res/values-ast/strings.xml
Normal file
|
@ -0,0 +1,153 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources><string name="average_altitude">Altitú media</string>
|
||||
<string name="average_speed">Velocidá media</string>
|
||||
<string name="shared_string_map">Mapa</string>
|
||||
<string name="shared_string_add">Amestar</string>
|
||||
<string name="shared_string_hide">Anubrir</string>
|
||||
<string name="shared_string_status">Estáu</string>
|
||||
<string name="shared_string_disable">Desactivar</string>
|
||||
<string name="shared_string_save">Guardar</string>
|
||||
<string name="shared_string_name">Nome</string>
|
||||
<string name="shared_string_exit">Colar</string>
|
||||
<string name="shared_string_close">Zarrar</string>
|
||||
<string name="shared_string_off">Non</string>
|
||||
<string name="shared_string_install">Instalar</string>
|
||||
<string name="shared_string_share">Compartir</string>
|
||||
<string name="shared_string_back">Atrás</string>
|
||||
<string name="shared_string_continue">Siguir</string>
|
||||
<string name="shared_string_cancel">Encaboxar</string>
|
||||
<string name="shared_string_settings">Axustes</string>
|
||||
<string name="yard">yd</string>
|
||||
<string name="foot">ft</string>
|
||||
<string name="mile">mi</string>
|
||||
<string name="km">km</string>
|
||||
<string name="m">m</string>
|
||||
<string name="nm">nmi</string>
|
||||
<string name="min_mile">min/m</string>
|
||||
<string name="min_km">min/km</string>
|
||||
<string name="m_s">m/s</string>
|
||||
<string name="km_h">km/h</string>
|
||||
<string name="mile_per_hour">mph</string>
|
||||
<string name="si_kmh">Quilómetros per hora</string>
|
||||
<string name="si_mph">Milles per hora</string>
|
||||
<string name="si_m_s">Metros per segundu</string>
|
||||
<string name="si_min_km">Minutos per quilómetru</string>
|
||||
<string name="si_min_m">Minutos per milla</string>
|
||||
<string name="si_mi_feet">Milles/pies</string>
|
||||
<string name="si_mi_yard">Milles/yardes</string>
|
||||
<string name="si_km_m">Quilómetros/metros</string>
|
||||
<string name="si_nm">Milles náutiques</string>
|
||||
<string name="si_mi_meters">Milles/metros</string>
|
||||
<string name="monitoring_is_enabled">La supervisión ta activada</string>
|
||||
<string name="monitoring_is_disabled">La supervisión ta desactivada</string>
|
||||
<string name="end_date">Data de fin</string>
|
||||
<string name="start_date">Data d\'aniciu</string>
|
||||
<string name="timeline_description">Activa la supervisión pa recoyer en segundu planu los datos de la movición.</string>
|
||||
<string name="send_location_as">Unviar l\'allugamientu como</string>
|
||||
<string name="send_location_as_descr">Escueyi cómo van vese los mensaxes col to allugamientu.</string>
|
||||
<string name="shared_string_text">Testu</string>
|
||||
<string name="map_and_text">Mapa y testu</string>
|
||||
<string name="last_update_from_telegram">L\'últimu anovamientu dende Telegram</string>
|
||||
<string name="enter_another_device_name">Escueyi un nome que nun usares yá</string>
|
||||
<string name="device_added_successfully">Amestóse %1$s.</string>
|
||||
<string name="error_adding_new_device">Nun pudo amestase\'l preséu nuevu</string>
|
||||
<string name="enter_device_name_description">El nome del preséu nuevu, 200 caráuteres como máximu.</string>
|
||||
<string name="device_name_is_too_long">El nome del preséu ye perllargu</string>
|
||||
<string name="device_name_cannot_be_empty">El nome del preséu nun pue tar baleru</string>
|
||||
<string name="device_name">Nome del preséu</string>
|
||||
<string name="share_location_as_description_second_line">Pues crear y ver la ID del preséu nun veceru pa Telegram usando la charra col robó %1$s .%2$s</string>
|
||||
<string name="share_location_as_description">Si quies coneutar munchos preseos a una cuenta de Telegram, precises usar un preséu diferente al compartir l\'allugamientu.</string>
|
||||
<string name="waiting_for_response_from_telegram">Esperando pola rempuesta de Telegram</string>
|
||||
<string name="initializing">Aniciando</string>
|
||||
<string name="searching_for_gps">Posicionando…</string>
|
||||
<string name="background_work_description">Camuda los axustes de la optimización de la batería pa estabilizar la compartición del allugamientu.</string>
|
||||
<string name="background_work">Trabayu en segundu planu</string>
|
||||
<string name="sharing_in_background">Compartición en segundu planu</string>
|
||||
<string name="go_to_settings">Dir a Axustes</string>
|
||||
<string name="shared_string_later">Más sero</string>
|
||||
<string name="sharing_enabled">Compartición: Activada</string>
|
||||
<string name="no_gps_connection">Nun hai conexón al GPS</string>
|
||||
<string name="no_internet_connection">Nun hai conexón a internet</string>
|
||||
<string name="add_device">Amestar un preséu</string>
|
||||
<string name="live_now_description">Contautos y grupos que tán compartiendo l\'allugamientu contigo.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">¿De xuru que quies zarrar sesión n\'OsmAnd Telegram pa que nun pueas compartir l\'allugamientu nin ver el d\'otros\?</string>
|
||||
<string name="logout_from_osmand_telegram">¿Zarrar la sesión d\'OsmAnd Telegram\?</string>
|
||||
<string name="by_distance">pola distancia</string>
|
||||
<string name="by_name">pol nome</string>
|
||||
<string name="by_group">pol grupu</string>
|
||||
<string name="shared_string_sort_by">Ordenar por</string>
|
||||
<string name="choose_osmand_desc">Esbilla la versión d\'OsmAnd onde van amosase los contautos nel mapa.</string>
|
||||
<string name="disable_all_sharing_desc">Desactiva la compartición del allugamientu en toles charres esbillaes ((%1$d).</string>
|
||||
<string name="disable_all_sharing">Desactivar toles comparticiones</string>
|
||||
<string name="turn_off_all">Desactivar too</string>
|
||||
<string name="shared_string_group">Grupu</string>
|
||||
<string name="disconnect_from_telegram_desc">Pa revocar l\'accesu a la compartición del allugamientu. Abri Telegram, vete a Axustes → Privacidá y seguranza → Sesiones y zarra la sesión d\'OsmAnd Telegram.</string>
|
||||
<string name="disconnect_from_telegram">Cómo desactivar la compartición del allugamientu con OsmAnd dende Telegram</string>
|
||||
<string name="logout_help_desc">Cómo desactivar la compartición del allugamientu con OsmAnd dende Telegram</string>
|
||||
<string name="connected_account">Cuenta coneutada</string>
|
||||
<string name="shared_string_account">Cuenta</string>
|
||||
<string name="in_time">en %1$s</string>
|
||||
<string name="osmand_connect_desc">Escueyi la versión d\'OsmAnd qu\'OsmAnd Telegram va usar p\'amosar les posiciones.</string>
|
||||
<string name="osmand_connect">Conexón a OsmAnd</string>
|
||||
<string name="location_history_desc">Anubre los contautos que nun se movieren nel tiempu apurríu.</string>
|
||||
<string name="location_history">Historial d\'allugamientos</string>
|
||||
<string name="stale_location_desc">La última vez qu\'un contautu se movió.</string>
|
||||
<string name="stale_location">Ausencia de movición</string>
|
||||
<string name="send_my_location_desc">Afita l\'intervalu mínimu pa la compartición del allugamientu.</string>
|
||||
<string name="send_my_location">Unviar el mio allugamientu</string>
|
||||
<string name="gps_and_location">Posición</string>
|
||||
<string name="sharing_time">Tiempu de la compartición</string>
|
||||
<string name="expire_at">Caduca a les</string>
|
||||
<string name="turn_off_location_sharing">Desactivar la compartición del allugamientu</string>
|
||||
<string name="open_osmand">Abrir OsmAnd</string>
|
||||
<string name="shared_string_live">En direuto</string>
|
||||
<string name="shared_string_bot">Robó</string>
|
||||
<string name="get_telegram_title">Rexistru en Telegram</string>
|
||||
<string name="get_telegram_account_first">Precises una cuenta de Telegram pa usar la compartición d\'allugamientuos.</string>
|
||||
<string name="get_telegram_description_continue">Instala Telegram y configura una cuenta.</string>
|
||||
<string name="get_telegram_after_creating_account">Darréu vas poder usar esta aplicación.</string>
|
||||
<string name="shared_string_all">Too</string>
|
||||
<string name="do_not_have_telegram">Nun teo una cuenta de Telegram</string>
|
||||
<string name="enter_phone_number">Introduz el númberu telefónicu</string>
|
||||
<string name="enter_authentication_code">Introduz el códigu d\'autentación</string>
|
||||
<string name="hours_and_minutes_format">%1$d h %2$d m</string>
|
||||
<string name="minutes_format">%1$d m</string>
|
||||
<string name="hours_format">%1$d h</string>
|
||||
<string name="visible_time_for_all">Visibilidá xeneral demientres</string>
|
||||
<string name="set_time">Afitamientu del tiempu</string>
|
||||
<string name="location_sharing_description">Esbilla los contautos y grupos colos que quies compartir el to allugamientu.</string>
|
||||
<string name="app_name">OsmAnd Telegram</string>
|
||||
<string name="phone_number_title">Númberu telefónicu</string>
|
||||
<string name="phone_number_descr">Númberu telefónicu nel formatu internacional</string>
|
||||
<string name="shared_string_password">Contraseña</string>
|
||||
<string name="authentication_code">Códigu d\'autenticación</string>
|
||||
<string name="authentication_code_descr">Telegram unvióte un códigu pa OsmAnd pa qu\'anicies sesión na to cuenta.</string>
|
||||
<string name="enter_password">Introduz la contraseña</string>
|
||||
<string name="password_descr">Contraseña de Telegram</string>
|
||||
<string name="shared_string_logout">Zarrar sesión</string>
|
||||
<string name="gps_network_not_enabled">¿Activar «Allugamientu»\?</string>
|
||||
<string name="not_logged_in">Nun aniciesti sesión</string>
|
||||
<string name="gps_not_available">Activa «Allugamientu» nos axustes del sistema</string>
|
||||
<string name="osmand_service_descr">OsmAnd Telegram execútase en segundu planu cola pantalla apagada.</string>
|
||||
<string name="shared_string_distance">Distancia</string>
|
||||
<string name="sharing_location">Compartiendo l\'allugamientu</string>
|
||||
<string name="process_service">Serviciu d\'OsmAnd Telegram</string>
|
||||
<string name="osmand_logo">Logu d\'OsmAnd</string>
|
||||
<string name="install_osmand_dialog_message">Primero precises instalar la versión de baldre o de pagu d\'OsmAnd</string>
|
||||
<string name="install_osmand">Instalación d\'OsmAnd</string>
|
||||
<string name="shared_string_authorization">Autorización</string>
|
||||
<string name="shared_string_authorization_descr">Introduz el to númberu telefónicu de Telegram nel formatu internacional</string>
|
||||
<string name="shared_string_welcome">Afáyate</string>
|
||||
<string name="nm_h">nmi/h</string>
|
||||
<string name="si_nm_h">Milles náutiques per hora (nuedos)</string>
|
||||
<string name="shared_string_hour_short">h</string>
|
||||
<string name="shared_string_minute_short">m</string>
|
||||
<string name="shared_string_second_short">s</string>
|
||||
<string name="welcome_descr">La <b>compartición del allugamientu con OsmAnd</b> déxate compartir el to allugamientu y ver el d\'otros n\'OsmAnd.<br/><br/>L\'aplicación usa l\'API de Telegram y vas precisar una cuenta de Telegram.</string>
|
||||
<string name="my_location">El mio allugamientu</string>
|
||||
<string name="live_now">En direuto</string>
|
||||
<string name="timeline">Llinia temporal</string>
|
||||
<string name="last_available_location">L\'últimu allugamientu disponible</string>
|
||||
<string name="sharing_status">Estáu de la compartición</string>
|
||||
<string name="set_time_description">Afita\'l tiempu nel que los contautos y grupos esbillaos van ver el to allugamientu en tiempu real.</string>
|
||||
</resources>
|
190
OsmAnd-telegram/res/values-be/strings.xml
Normal file
|
@ -0,0 +1,190 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources><string name="last_update_from_telegram">Апошняе абнаўленне з Telegram</string>
|
||||
<string name="enter_another_device_name">Абярыце імя, якое вы яшчэ не выкарыстоўвалі</string>
|
||||
<string name="device_added_successfully">%1$s дададзена.</string>
|
||||
<string name="shared_string_add">Дадаць</string>
|
||||
<string name="error_adding_new_device">Не атрымалася дадаць новую прыладу</string>
|
||||
<string name="enter_device_name_description">Максімальная даўжыня назвы новай прылады - 200 сімвалаў.</string>
|
||||
<string name="device_name_is_too_long">Назва прылады занадта доўгая</string>
|
||||
<string name="device_name_cannot_be_empty">Назва прылады не можа быць пустой</string>
|
||||
<string name="device_name">Назва прылады</string>
|
||||
<string name="shared_string_hide">Схаваць</string>
|
||||
<string name="share_location_as_description_second_line">Вы можаце стварыць і праглядзець ідэнтыфікатар прылады ў кліенце Тэлеграма, выкарыстоўваючы %1$s бота. %2$s</string>
|
||||
<string name="share_location_as_description">Калі вы хочаце падлучыць некалькі прылад да аднаго акаўнта тэлеграм, то вам неабходна выкарыстаць розныя прылады, каб падзяліцца месцазнаходжаннем.</string>
|
||||
<string name="last_updated_location">Апошняе абнаўленне месцазнаходжання:</string>
|
||||
<string name="successfully_sent_and_updated">Паспяхова адпраўлена і абноўлена</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Немагчыма адправіць у размову Тэлеграм:</string>
|
||||
<string name="waiting_for_response_from_telegram">Чаканне адказу ад Тэлеграм</string>
|
||||
<string name="sending_location_messages">Адпраўленне месцазнаходжання</string>
|
||||
<string name="initializing">Запуск</string>
|
||||
<string name="searching_for_gps">Пазіцыянаванне…</string>
|
||||
<string name="connecting_to_the_internet">Злучэнне з Інтэрнэтам</string>
|
||||
<string name="background_work_description">Змена параметраў аптымізацыі батарэі для стабілізацыі абмену інфармацыяй аб месцазнаходжанні.</string>
|
||||
<string name="background_work">Праца ў фонавым рэжыме</string>
|
||||
<string name="battery_optimization_description">Выключыць аптымізацыю батарэі для OsmAnd Telegram, каб прадухіліць нечаканае выключэнне фонавага рэжыму.</string>
|
||||
<string name="sharing_in_background">Абмен у фонавым рэжыме</string>
|
||||
<string name="go_to_settings">Перайсці ў налады</string>
|
||||
<string name="shared_string_later">Пазней</string>
|
||||
<string name="not_sent_yet">Яшчэ не адпраўлена</string>
|
||||
<string name="not_found_yet">Яшчэ не знойдзена</string>
|
||||
<string name="re_send_location">Пераадправіць звесткі аб месцазнаходжанні</string>
|
||||
<string name="last_available_location">Апошняе даступнае месца</string>
|
||||
<string name="sharing_status">"Статус абмену "</string>
|
||||
<string name="sharing_enabled">Абмен: Уключаны</string>
|
||||
<string name="shared_string_status">Статус</string>
|
||||
<string name="no_gps_connection">Злучэнне з GPS адсутнічае</string>
|
||||
<string name="no_internet_connection">Злучэнне з Інтэрнэтам адсутнічае</string>
|
||||
<string name="shared_string_disable">Выключыць</string>
|
||||
<string name="shared_string_save">Захаваць</string>
|
||||
<string name="add_device">Дадаць прыладу</string>
|
||||
<string name="share_location_as">Падзяліцца месцазнаходжаннем як</string>
|
||||
<string name="live_now_description">Кантакты і групы для абмену месцазнаходжаннем.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Вы не зможаце падзяліцца сваім месцазнаходжаннем і ўбачыць месцазнаходжанне іншых. Сапраўды выйсці з OsmAnd Telegram\?</string>
|
||||
<string name="logout_from_osmand_telegram">Выйсці з OsmAnd Telegram\?</string>
|
||||
<string name="shared_string_name">Імя</string>
|
||||
<string name="by_distance">Па адлегласці</string>
|
||||
<string name="by_name">Па імёнах</string>
|
||||
<string name="by_group">Па групе</string>
|
||||
<string name="shared_string_sort">Упарадкаваць</string>
|
||||
<string name="shared_string_sort_by">Упарадкаваць па</string>
|
||||
<string name="choose_osmand_desc">Абярыце версію OsmAnd, у якой кантакты будуць адлюстроўвацца на мапе.</string>
|
||||
<string name="choose_osmand">Абярыце версію OsmAnd для выкарыстання</string>
|
||||
<string name="disable_all_sharing_desc">Выключыць абмен для ўсіх абраных размоў (%1$d).</string>
|
||||
<string name="disable_all_sharing">Выключыць усе абмены</string>
|
||||
<string name="turn_off_all">Выключыце ўсе</string>
|
||||
<string name="shared_string_exit">Выйсці</string>
|
||||
<string name="time_ago">таму</string>
|
||||
<string name="last_response">Апошні адказ</string>
|
||||
<string name="shared_string_group">Група</string>
|
||||
<string name="logout_no_internet_msg">Падлучыцеся да Інтэрнэту, каб карэктна выйсці з Тэлеграм.</string>
|
||||
<string name="shared_string_close">Закрыць</string>
|
||||
<string name="disconnect_from_telegram_desc">Для таго, каб скасаваць абмен месцазнаходжаннем, адкрыйце Тэлеграм, перайдзіце ў Налады → Прыватнасць і бяспека → Сеансы і спыніце сеанс OsmAnd Telegram.</string>
|
||||
<string name="disconnect_from_telegram">Як выключыць абмен месцазнаходжаннем у OsmAnd праз Тэлеграм</string>
|
||||
<string name="logout_help_desc">Як выключыць абмен месцазнаходжаннем у OsmAnd праз Тэлеграм</string>
|
||||
<string name="connected_account">Падлучаны акаўнт</string>
|
||||
<string name="shared_string_account">Рахунак</string>
|
||||
<string name="in_time">у %1$s</string>
|
||||
<string name="osmand_connect_desc">Абраць версію OsmAnd, якую OsmAnd Telegram будзе выкарыстоўваць для адлюстравання пазіцыі.</string>
|
||||
<string name="osmand_connect">Злучэнне з OsmAnd</string>
|
||||
<string name="location_history_desc">Схаваць кантакты, якія не перамяшчаліся пэўны час.</string>
|
||||
<string name="location_history">Гісторыя месцазнаходжанняў</string>
|
||||
<string name="stale_location_desc">Апошні раз кантакт рухаўся.</string>
|
||||
<string name="stale_location">Не рухаецца</string>
|
||||
<string name="send_my_location_desc">Вызначыць мінімальны інтэрвал для абмену інфармацыяй аб месцазнаходжанні.</string>
|
||||
<string name="send_my_location">Адправіць маё месцазнаходжанне</string>
|
||||
<string name="gps_and_location">Пазіцыя</string>
|
||||
<string name="sharing_time">"Час абмену "</string>
|
||||
<string name="expire_at">Сыходзіць</string>
|
||||
<string name="stop_sharing_all">Абмен уключаны (выключыць)</string>
|
||||
<string name="turn_off_location_sharing">Выключыць абмен</string>
|
||||
<string name="open_osmand">Адкрыць OsmAnd</string>
|
||||
<string name="shared_string_live">Дзейных</string>
|
||||
<string name="shared_string_bot">Бот</string>
|
||||
<string name="get_telegram_title">Рэгістрацыя ў Telegram</string>
|
||||
<string name="get_telegram_account_first">Для абмену вам неабходны акаўнт Тэлеграм.</string>
|
||||
<string name="get_telegram_description_continue">Калі ласка, ўсталюйце Тэлеграм і наладзьце акаўнт.</string>
|
||||
<string name="get_telegram_after_creating_account">Пасля гэтага вы зможаце выкарыстоўваць дадатак.</string>
|
||||
<string name="shared_string_all">Усе</string>
|
||||
<string name="shared_string_off">Выкл</string>
|
||||
<string name="already_registered_in_telegram">Вам неабходна мець акаўнт Тэлеграм і нумар тэлефона</string>
|
||||
<string name="do_not_have_telegram">У мяне няма акаўнта Тэлеграм</string>
|
||||
<string name="enter_phone_number">Увядзіце нумар тэлефона</string>
|
||||
<string name="enter_authentication_code">Увядзіце код аўтарызацыі</string>
|
||||
<string name="set_visible_time_for_all">Вызначце бачны час для ўсіх</string>
|
||||
<string name="hours_and_minutes_format">%1$d г %2$d хв</string>
|
||||
<string name="minutes_format">%1$d хв</string>
|
||||
<string name="hours_format">%1$d г</string>
|
||||
<string name="shared_string_install">Усталяваць</string>
|
||||
<string name="shared_string_share">Падзяліцца</string>
|
||||
<string name="shared_string_back">Назад</string>
|
||||
<string name="visible_time_for_all">Бачны для ўсіх час</string>
|
||||
<string name="set_time_description">Задайце час, што будуць бачыць абраныя вамі кантакты і групы ў рэжыме рэальнага часу.</string>
|
||||
<string name="set_time">Задаць час</string>
|
||||
<string name="location_sharing_description">Абярыце кантакты і групы, з якімі хочаце абменьвацца вашым месцазнаходжаннем.</string>
|
||||
<string name="my_location_search_hint">Пошук: група альбо кантакт</string>
|
||||
<string name="start_location_sharing">Падзяліцца месцазнаходжаннем</string>
|
||||
<string name="show_on_map">Паказаць на мапе</string>
|
||||
<string name="app_name">ОsmAnd Telegram</string>
|
||||
<string name="phone_number_title">Нумар тэлефона</string>
|
||||
<string name="phone_number_descr">Нумар тэлефона ў міжнародным фармаце</string>
|
||||
<string name="shared_string_password">Пароль</string>
|
||||
<string name="enter_code">Увядзіце код</string>
|
||||
<string name="authentication_code">Код аўтэнтыфікацыі</string>
|
||||
<string name="authentication_code_descr">Тэлеграм адправіў вам код для OsmAnd для ўваходу ў акаўнт.</string>
|
||||
<string name="enter_password">Увядзіце пароль</string>
|
||||
<string name="password_descr">Пароль Тэлеграм</string>
|
||||
<string name="shared_string_login">Увайсці</string>
|
||||
<string name="shared_string_logout">Выйсці</string>
|
||||
<string name="initialization">Запуск</string>
|
||||
<string name="logging_out">Выхад</string>
|
||||
<string name="closing">Закрыццё</string>
|
||||
<string name="gps_network_not_enabled">Уключыць \"Месцазнаходжанне\"\?</string>
|
||||
<string name="not_logged_in">Вы не ўвайшлі</string>
|
||||
<string name="shared_string_continue">Працягнуць</string>
|
||||
<string name="shared_string_cancel">Скасаваць</string>
|
||||
<string name="shared_string_settings">Налады</string>
|
||||
<string name="no_location_permission">Дадатак не мае дазволу на доступ да даных аб месцазнаходжанні.</string>
|
||||
<string name="gps_not_available">Калі ласка, ўключыце \"Месцазнаходжанне\" ў сістэмных наладах</string>
|
||||
<string name="location_service_no_gps_available">Абярыце аднаго пастаўшчыка месцазнаходжання, каб падзяліцца сваім месцазнаходжаннем.</string>
|
||||
<string name="osmand_service">Фонавы рэжым</string>
|
||||
<string name="osmand_service_descr">OsmAnd Telegram працуе ў фонавым рэжыме з выключаным экранам.</string>
|
||||
<string name="shared_string_distance">Адлегласць</string>
|
||||
<string name="share_location">Падзяліцца месцазнаходжаннем</string>
|
||||
<string name="sharing_location">Абмен данымі аб месцазнаходжанні</string>
|
||||
<string name="process_service">Сэрвіс OsmAnd Telegram</string>
|
||||
<string name="osmand_logo">Лагатып OsmAnd</string>
|
||||
<string name="install_osmand_dialog_message">Спачатку вам неабходна ўсталяваць бясплатную ці платную версію OsmAnd</string>
|
||||
<string name="install_osmand">Усталяваць OsmAnd</string>
|
||||
<string name="show_users_on_map">Паказаць карыстальнікаў на мапе</string>
|
||||
<string name="active_chats">Актыўныя размовы</string>
|
||||
<string name="shared_string_authorization">Аўтарызацыя</string>
|
||||
<string name="shared_string_authorization_descr">Калі ласка, увядзіце ваш нумар тэлефона, звязаны з Тэлеграм, ў міжнародным фармаце</string>
|
||||
<string name="shared_string_welcome">Вітаем</string>
|
||||
|
||||
<string name="yard">ярд</string>
|
||||
<string name="foot">фут</string>
|
||||
<string name="mile">міл</string>
|
||||
<string name="km">км</string>
|
||||
<string name="m">м</string>
|
||||
<string name="nm">м.мілі</string>
|
||||
<string name="min_mile">хв/м</string>
|
||||
<string name="min_km">хв/км</string>
|
||||
<string name="nm_h">м.міль/г</string>
|
||||
<string name="m_s">м/с</string>
|
||||
<string name="km_h">км/г</string>
|
||||
<string name="mile_per_hour">м/г</string>
|
||||
<string name="si_kmh">Кіламетраў за гадзіну</string>
|
||||
<string name="si_mph">Міляў за гадзіну</string>
|
||||
<string name="si_m_s">Метраў за секунду</string>
|
||||
<string name="si_min_km">Хвілін на кіламетар</string>
|
||||
<string name="si_min_m">Хвілін на мілю</string>
|
||||
<string name="si_nm_h">Марскіх міль за гадзіну (вузлоў)</string>
|
||||
<string name="si_mi_feet">Мілі/футы</string>
|
||||
<string name="si_mi_yard">Мілі/ярды</string>
|
||||
<string name="si_km_m">Кіламетры/метры</string>
|
||||
<string name="si_nm">Марскія мілі</string>
|
||||
<string name="si_mi_meters">Мілі/метры</string>
|
||||
<string name="shared_string_hour_short">г</string>
|
||||
<string name="shared_string_minute_short">хвіл</string>
|
||||
<string name="shared_string_second_short">сек</string>
|
||||
<string name="welcome_descr"><b>Абмен месцазнаходжаннем OsmAnd</b> Дае магчымасць дзяліцца сваім месцазнаходжаннем і бачыць месцазнаходжанне іншых у OsmAnd.<br/><br/> Дадатак выкарыстоўвае Telegram API, таму вам неабходны акаўнт Тэлеграм.</string>
|
||||
<string name="my_location">Маё месцазнаходжанне</string>
|
||||
<string name="live_now">Зараз дзейнічае</string>
|
||||
|
||||
|
||||
<string name="send_location_as">Адправіць месцазнаходжанне як</string>
|
||||
<string name="send_location_as_descr">Абярыце як будуць выглядаць паведамленні з вашым месцазнаходжаннем.</string>
|
||||
<string name="shared_string_map">Мапа</string>
|
||||
<string name="shared_string_text">Тэкст</string>
|
||||
<string name="map_and_text">Мапа і тэкст</string>
|
||||
<string name="monitoring_is_enabled">Маніторынг уключаны</string>
|
||||
<string name="monitoring_is_disabled">Маніторынг адключаны</string>
|
||||
<string name="time_on_the_move">час руху</string>
|
||||
<string name="average_altitude">Сярэдняя вышыня</string>
|
||||
<string name="average_speed">Сярэдняя хуткасць</string>
|
||||
<string name="open_in_osmand">Адкрыць у OsmAnd</string>
|
||||
<string name="end_date">Дата закрыцця</string>
|
||||
<string name="start_date">Час адкрыцця</string>
|
||||
<string name="timeline_description">Уключаць маніторынг для збору данных руху ў фоне.</string>
|
||||
<string name="timeline">Храналогія</string>
|
||||
</resources>
|
2
OsmAnd-telegram/res/values-cs/strings.xml
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
|
@ -1,28 +1,21 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources><string name="background_work_description">Skift indstillinger for batterioptimering, for stabil deling af placering</string>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources><string name="background_work_description">Skift indstillinger for batterioptimering, for stabil deling af placering.</string>
|
||||
<string name="background_work">Baggrundstilstand</string>
|
||||
<string name="battery_optimization_description">Sluk for batterioptimering af OsmAnd Telegram, så det ikke pludselig slukker, når i baggrunden.</string>
|
||||
<string name="battery_optimization_description">Sluk for batterioptimering af OsmAnd Telegram, så det ikke pludseligt bliver slukket, når det er i baggrunden.</string>
|
||||
<string name="sharing_in_background">Deling i baggrunden</string>
|
||||
<string name="go_to_settings">Gå til indstillinger</string>
|
||||
<string name="shared_string_later">Senere</string>
|
||||
<string name="not_sent_yet">Ikke sendt endnu</string>
|
||||
<string name="not_found_yet">Ikke fundet endnu</string>
|
||||
<string name="re_send_location">Send placering igen</string>
|
||||
<string name="last_sent_location">Sidst sendte placering</string>
|
||||
<string name="last_available_location">Sidste tilgængelige placering</string>
|
||||
<string name="sharing_status">Delingsstatus</string>
|
||||
<string name="sharing_enabled">Deling: aktiveret</string>
|
||||
<string name="shared_string_status">Status</string>
|
||||
<string name="no_gps_connection">Ingen GPS-forbindelse</string>
|
||||
<string name="sharing_success">Sendt korrekt og opdateret</string>
|
||||
<string name="not_possible_to_send_to_chats">Ikke muligt at sende til samtaler:</string>
|
||||
<string name="no_internet_connection">Ingen internetforbindelse</string>
|
||||
<string name="shared_string_disable">Deaktiver</string>
|
||||
<string name="shared_string_save">Gem</string>
|
||||
<string name="add_device_descr">Indtast enheds-id, som kan findes på https://live.osmand.net/device/ID</string>
|
||||
<string name="device_id">Enheds-id</string>
|
||||
<string name="add_device">Tilføj enhed</string>
|
||||
<string name="share_location_as_descr">Giver mulighed for at dele enhedens placering, eller placering af brugerdefinerede enheder det tilføjes via API.</string>
|
||||
<string name="share_location_as">Del placering som</string>
|
||||
<string name="live_now_description">Kontakter og grupper som der deles placering med.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Er du sikker på at du vil logge ud af OsmAnd Telegram, så du ikke kan dele din placering eller se placeringen af andre\?</string>
|
||||
|
@ -33,16 +26,16 @@
|
|||
<string name="by_group">Efter gruppe</string>
|
||||
<string name="shared_string_sort">Sorter</string>
|
||||
<string name="shared_string_sort_by">Sorter efter</string>
|
||||
<string name="choose_osmand_desc">Vælg OsmAnd version, hvor kontakter skal vises på kortet.</string>
|
||||
<string name="choose_osmand">Vælg en OsmAnd-version</string>
|
||||
<string name="disable_all_sharing_desc">Deaktiverer deling af placering for alle de valgte samtaler (%1$d).</string>
|
||||
<string name="choose_osmand_desc">Vælg den OsmAnd version, der skal vise kontakter på kortet.</string>
|
||||
<string name="choose_osmand">Vælg OsmAnd-version der skal bruges</string>
|
||||
<string name="disable_all_sharing_desc">Slukker for placeringsdeling for alle de valgte samtaler (%1$d).</string>
|
||||
<string name="disable_all_sharing">Deaktiver al deling</string>
|
||||
<string name="turn_off_all">Sluk alt</string>
|
||||
<string name="shared_string_exit">Afslut</string>
|
||||
<string name="time_ago">siden</string>
|
||||
<string name="last_response">Sidste svar</string>
|
||||
<string name="shared_string_group">Gruppe</string>
|
||||
<string name="logout_no_internet_msg">Opret forbindelse til internettet for at logge ud af Telegram.</string>
|
||||
<string name="logout_no_internet_msg">Opret forbindelse til Internettet for at logge ud af Telegram.</string>
|
||||
<string name="shared_string_close">Luk</string>
|
||||
<string name="disconnect_from_telegram_desc">"Sådan tilbagekaldes adgang til placeringsdeling. Åbn Telegram, gå til Settings - Privacy and Security - Sessions og afslut OsmAnd Telegram session. "</string>
|
||||
<string name="disconnect_from_telegram">Hvordan afbrydes OsmAnd placeringsdeling fra Telegram</string>
|
||||
|
@ -51,29 +44,28 @@
|
|||
<string name="shared_string_account">Konto</string>
|
||||
<string name="in_time">i %1$s</string>
|
||||
<string name="osmand_connect_desc">Vælg den OsmAnd version, som OsmAnd Telegram bruger til vise placeringer på kortet.</string>
|
||||
<string name="osmand_connect">OsmAnd forbindelse</string>
|
||||
<string name="location_history_desc">Skjul de kontaktpersoner, der ikke har opdateret placering i et givet tidsrum.</string>
|
||||
<string name="osmand_connect">Tilslut OsmAnd</string>
|
||||
<string name="location_history_desc">Skjul kontakter, der ikke har bevæget sig i en given tid.</string>
|
||||
<string name="location_history">Placeringshistorik</string>
|
||||
<string name="stale_location_desc">Sidste gang en kontakt har sendt en placering.</string>
|
||||
<string name="stale_location">Uaktuel placering</string>
|
||||
<string name="stale_location_desc">Sidste gang en kontakt har bevæget sig.</string>
|
||||
<string name="stale_location">Bevæger sig ikke</string>
|
||||
<string name="send_my_location_desc">Angiv den mindste interval for deling af placering.</string>
|
||||
<string name="send_my_location">Send placering</string>
|
||||
<string name="gps_and_location">GPS og placering</string>
|
||||
<string name="sharing_time">Delingstidsrum</string>
|
||||
<string name="gps_and_location">Placering</string>
|
||||
<string name="sharing_time">Delingstid</string>
|
||||
<string name="expire_at">Udløber</string>
|
||||
<string name="stop_sharing_all">Deling er aktiveret (deaktiver)</string>
|
||||
<string name="turn_off_location_sharing">Sluk for deling af placering</string>
|
||||
<string name="open_osmand">Åbn OsmAnd</string>
|
||||
<string name="shared_string_live">Live</string>
|
||||
<string name="shared_string_bot">Bot</string>
|
||||
<string name="get_telegram_title">Registrering i Telegram</string>
|
||||
<string name="get_telegram_account_first">Det er nødvendigt med en Telegram-konto for at bruge OsmAnd placeringsdeling.</string>
|
||||
<string name="get_telegram_description_continue">Installer Telegram fra Google Play, og opret en konto.</string>
|
||||
<string name="get_telegram_after_creating_account">Når konto er oprettet, kan programmet bruges.</string>
|
||||
<string name="get_telegram_account_first">Det er nødvendigt med en Telegram-konto for at bruge placeringsdeling.</string>
|
||||
<string name="get_telegram_description_continue">Installer Telegram og opret en konto.</string>
|
||||
<string name="get_telegram_after_creating_account">Så kan programmet bruges.</string>
|
||||
<string name="shared_string_all">Alle</string>
|
||||
<string name="shared_string_off">Fra</string>
|
||||
<string name="already_registered_in_telegram">Der er brug for en registreret Telegram-konto og telefonnummer</string>
|
||||
<string name="do_not_have_telegram">Jeg har ikke Telegram konto</string>
|
||||
<string name="do_not_have_telegram">Har ikke Telegram konto</string>
|
||||
<string name="enter_phone_number">Indtast telefonnummer</string>
|
||||
<string name="enter_authentication_code">Indtast autentificeringskode</string>
|
||||
<string name="set_visible_time_for_all">Sæt synlige tid for alle</string>
|
||||
|
@ -83,12 +75,12 @@
|
|||
<string name="shared_string_install">Installer</string>
|
||||
<string name="shared_string_share">Del</string>
|
||||
<string name="shared_string_back">Tilbage</string>
|
||||
<string name="visible_time_for_all">Synlige tid for alle</string>
|
||||
<string name="set_time_description">Sæt tidrummet hvor de valgte kontaktpersoner og grupper kan placering i realtid.</string>
|
||||
<string name="visible_time_for_all">Synlig tid for alle</string>
|
||||
<string name="set_time_description">Sæt tiden hvor de valgte kontakter og grupper kan se placering i realtid.</string>
|
||||
<string name="set_time">Sæt tid</string>
|
||||
<string name="location_sharing_description">Vælg de kontaktpersoner og grupper, som placeringen skal deles med.</string>
|
||||
<string name="location_sharing_description">Vælg de kontakter og grupper, som placeringen skal deles med.</string>
|
||||
<string name="my_location_search_hint">Søg: gruppe eller kontakt</string>
|
||||
<string name="start_location_sharing">Start deling af placering</string>
|
||||
<string name="start_location_sharing">Del placering</string>
|
||||
<string name="show_on_map">Vis på kort</string>
|
||||
<string name="app_name">OsmAnd Telegram</string>
|
||||
<string name="phone_number_title">Telefonnummer</string>
|
||||
|
@ -98,30 +90,21 @@
|
|||
<string name="authentication_code">Autentificeringkode</string>
|
||||
<string name="authentication_code_descr">Telegram har sendt en kode. Den vil blive brugt af OsmAnd som konto log ind.</string>
|
||||
<string name="enter_password">Indtast adgangskode</string>
|
||||
<string name="password_descr">Indtast adgangskode til Telegram-konto</string>
|
||||
<string name="password_descr">Telegram adgangskode</string>
|
||||
<string name="shared_string_login">Log ind</string>
|
||||
<string name="shared_string_logout">Log ud</string>
|
||||
<string name="not_logged_in">Ikke logget ind</string>
|
||||
<string name="initialization">Initialisering</string>
|
||||
<string name="logging_out">Logger ud</string>
|
||||
<string name="closing">Lukker</string>
|
||||
<string name="shared_string_continue">Fortsæt</string>
|
||||
<string name="shared_string_cancel">Annuller</string>
|
||||
<string name="gps_network_not_enabled">Placeringtjenesten er ikke aktiveret. Aktiver\?</string>
|
||||
<string name="shared_string_settings">Indstillinger</string>
|
||||
<string name="no_location_permission">Mangler tilladelse til at bruge placeringsdata.</string>
|
||||
<string name="gps_not_available">Aktiver GPS i indstillinger</string>
|
||||
<string name="gps_not_available">Tænd for \"Placering\" i systemindstillinger</string>
|
||||
<string name="location_service_no_gps_available">Vælg en af placeringsudbyderne til at dele placering.</string>
|
||||
<string name="osmand_service">Baggrundstilstand</string>
|
||||
<string name="osmand_service_descr">OsmAnd Telegram kører i baggrunden med skærmen slukket.</string>
|
||||
<string name="shared_string_distance">Afstand</string>
|
||||
<string name="share_location">Del placering</string>
|
||||
<string name="sharing_location">Deler placering</string>
|
||||
<string name="shared_string_paused">Pauset</string>
|
||||
<string name="shared_string_no_data">Ingen data</string>
|
||||
<string name="shared_string_pause">Pause</string>
|
||||
<string name="shared_string_start">Start</string>
|
||||
<string name="shared_string_stop">Stop</string>
|
||||
<string name="process_service">OsmAnd Telegram tjeneste</string>
|
||||
<string name="osmand_logo">OsmAnd logo</string>
|
||||
<string name="install_osmand_dialog_message">Det er nødvendigt at installere en gratis eller betalt version af OsmAnd</string>
|
||||
|
@ -129,7 +112,7 @@
|
|||
<string name="show_users_on_map">Vis brugere på kortet</string>
|
||||
<string name="active_chats">Aktive samtaler</string>
|
||||
<string name="shared_string_authorization">Autorisation</string>
|
||||
<string name="shared_string_authorization_descr">Indtast telefonnummer på Telegram-konto i internationalt format</string>
|
||||
<string name="shared_string_authorization_descr">Indtast Telegram telefonnummer i internationalt format</string>
|
||||
<string name="shared_string_welcome">Velkommen</string>
|
||||
|
||||
<string name="yard">yd</string>
|
||||
|
@ -158,18 +141,48 @@
|
|||
<string name="shared_string_hour_short">t</string>
|
||||
<string name="shared_string_minute_short">min</string>
|
||||
<string name="shared_string_second_short">sek</string>
|
||||
<string name="plus">+</string>
|
||||
<string name="welcome_descr"><b>OsmAnd placeringsdeling</b> giver mulighed for at dele placering og se placering af andre i OsmAnd.<br/><br/>Programmet bruger Telegram API og skal have en Telegram konto.</string>
|
||||
<string name="welcome_descr"><b>OsmAnd placeringsdeling</b> giver mulighed for at dele placering og se placering af andre i OsmAnd.<br/><br/>Programmet bruger Telegram API og skal bruge en Telegram konto.</string>
|
||||
<string name="my_location">Placering</string>
|
||||
<string name="live_now">Sender nu</string>
|
||||
|
||||
|
||||
|
||||
<string name="last_updated_location">Sidste ajourførte placering:</string>
|
||||
<string name="last_updated_location">Sidste ajourførte placering:</string>
|
||||
<string name="successfully_sent_and_updated">Sendt korrekt og opdateret</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Ikke muligt at sende til Telegram samtaler:</string>
|
||||
<string name="waiting_for_response_from_telegram">Venter på svar fra Telegram</string>
|
||||
<string name="sending_location_messages">Sender placeringsmeddelelser</string>
|
||||
<string name="initializing">Initialiserer</string>
|
||||
<string name="searching_for_gps">Søger efter GPS</string>
|
||||
<string name="connecting_to_the_internet">Forbinder til internettet</string>
|
||||
</resources>
|
||||
<string name="sending_location_messages">Sender placering</string>
|
||||
<string name="initializing">Starter</string>
|
||||
<string name="searching_for_gps">Positionering…</string>
|
||||
<string name="connecting_to_the_internet">Forbinder til Internettet</string>
|
||||
<string name="enter_another_device_name">Vælg et navn der ikke allerede er brugt</string>
|
||||
<string name="device_added_successfully">%1$s tilføjet.</string>
|
||||
<string name="shared_string_add">Tilføj</string>
|
||||
<string name="error_adding_new_device">Kunne ikke tilføje ny enhed</string>
|
||||
<string name="enter_device_name_description">Indtast et navn til den nye enhed. Max 200 tegn.</string>
|
||||
<string name="device_name_is_too_long">Enhedsnavn er for langt</string>
|
||||
<string name="device_name_cannot_be_empty">Enhedsnavn må ikke være tomt</string>
|
||||
<string name="device_name">Enhedsnavn</string>
|
||||
<string name="shared_string_hide">Skjul</string>
|
||||
<string name="share_location_as_description_second_line">Opret og få vist enhedens-id i Telegram-klienten ved hjælp af %1$s chat-bot. %2$s</string>
|
||||
<string name="share_location_as_description">Hvis der skal tilsluttes flere enheder til en Telegram-konto, er det nødvendigt til at bruge forskellige enheder til at dele placeringen.</string>
|
||||
<string name="shared_string_save">Gem</string>
|
||||
<string name="stop_sharing_all">Deling er aktiv (sluk)</string>
|
||||
<string name="initialization">Starter</string>
|
||||
<string name="logging_out">Logger ud</string>
|
||||
<string name="closing">Lukker</string>
|
||||
<string name="gps_network_not_enabled">Tænd for \"Placering\"\?</string>
|
||||
<string name="live_now">Live now</string>
|
||||
|
||||
|
||||
<string name="last_update_from_telegram">Sidste opdatering fra Telegram</string>
|
||||
<string name="send_location_as">Send placering som</string>
|
||||
<string name="send_location_as_descr">Vælg hvordan beskeder med placering skal se ud.</string>
|
||||
<string name="shared_string_map">Kort</string>
|
||||
<string name="shared_string_text">Tekst</string>
|
||||
<string name="map_and_text">Kort og tekst</string>
|
||||
<string name="average_altitude">Gennemsnitshøjde</string>
|
||||
<string name="average_speed">Gennemsnitshastighed</string>
|
||||
<string name="open_in_osmand">Åbn i OsmAnd</string>
|
||||
<string name="end_date">Slutdato</string>
|
||||
<string name="start_date">Startdato</string>
|
||||
<string name="timeline">Tidslinje</string>
|
||||
</resources>
|
|
@ -1,21 +1,15 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources><string name="sharing_in_background">Teilen im Hintergrund</string>
|
||||
<string name="go_to_settings">Einstellungen öffnen</string>
|
||||
<string name="not_sent_yet">Noch nicht gesendet</string>
|
||||
<string name="not_found_yet">Noch nicht gefunden</string>
|
||||
<string name="re_send_location">Position neu senden</string>
|
||||
<string name="last_sent_location">Letzter gesendeter Standort</string>
|
||||
<string name="sharing_status">Freigabestatus</string>
|
||||
<string name="sharing_enabled">Teilen: Aktiviert</string>
|
||||
<string name="shared_string_status">Status</string>
|
||||
<string name="no_gps_connection">Kein GPS-Signal</string>
|
||||
<string name="sharing_success">Gesendet und aktualisiert</string>
|
||||
<string name="not_possible_to_send_to_chats">Konnte nicht an Chats senden:</string>
|
||||
<string name="no_internet_connection">Keine Internetverbindung</string>
|
||||
<string name="shared_string_disable">Deaktivieren</string>
|
||||
<string name="shared_string_save">Speichern</string>
|
||||
<string name="add_device_descr">Finden Sie Ihre Geräte-ID unter https://live.osmand.net/device/ID</string>
|
||||
<string name="device_id">Geräte-ID</string>
|
||||
<string name="add_device">Gerät hinzufügen</string>
|
||||
<string name="shared_string_later">Später</string>
|
||||
<string name="last_available_location">Letzter verfügbarer Standort</string>
|
||||
|
@ -28,7 +22,7 @@
|
|||
<string name="by_group">Nach Gruppe</string>
|
||||
<string name="shared_string_sort">Sortieren</string>
|
||||
<string name="shared_string_sort_by">Sortieren nach</string>
|
||||
<string name="choose_osmand_desc">Wählen Sie die OsmAnd-Version, in der die Kontakte auf der Karte angezeigt werden.</string>
|
||||
<string name="choose_osmand_desc">Wählen Sie die OsmAnd-Version, in der Kontakte auf der Karte angezeigt werden.</string>
|
||||
<string name="choose_osmand">Zu verwendende OsmAnd-Version auswählen</string>
|
||||
<string name="turn_off_all">Alle ausschalten</string>
|
||||
<string name="shared_string_exit">Beenden</string>
|
||||
|
@ -40,19 +34,19 @@
|
|||
<string name="connected_account">Verbundenes Konto</string>
|
||||
<string name="shared_string_account">Konto</string>
|
||||
<string name="in_time">"in %1$s "</string>
|
||||
<string name="osmand_connect_desc">Wählen Sie die OsmAnd-Version, die OsmAnd Telegram verwendet, um Positionen auf der Karte anzuzeigen.</string>
|
||||
<string name="osmand_connect_desc">Wählen Sie die OsmAnd-Version, die OsmAnd Telegram verwendet, um Positionen anzuzeigen.</string>
|
||||
<string name="osmand_connect">OsmAnd verbinden</string>
|
||||
<string name="location_history_desc">Blenden Sie die Kontakte aus, die ihren Standort in einer vorgegebenen Zeitspanne nicht aktualisiert haben.</string>
|
||||
<string name="location_history_desc">Blendet Kontakte aus, die sich eine bestimmte Zeit lang nicht bewegt haben.</string>
|
||||
<string name="location_history">Standortverlauf</string>
|
||||
<string name="stale_location_desc">Das letzte Mal, dass ein Kontakt seinen Standort gesendet hat.</string>
|
||||
<string name="stale_location_desc">Das letzte Mal, dass sich ein Kontakt bewegt hat.</string>
|
||||
<string name="send_my_location">Meinen Standort senden</string>
|
||||
<string name="gps_and_location">GPS & Standort</string>
|
||||
<string name="gps_and_location">Position</string>
|
||||
<string name="open_osmand">OsmAnd öffnen</string>
|
||||
<string name="shared_string_live">"Live "</string>
|
||||
<string name="get_telegram_title">Registrierung in Telegram</string>
|
||||
<string name="get_telegram_account_first">Sie benötigen ein Telegram-Konto, um die OsmAnd Standortfreigabe nutzen zu können.</string>
|
||||
<string name="get_telegram_description_continue">Bitte installieren Sie Telegram von Google Play und registrieren Sie dazu ein Konto.</string>
|
||||
<string name="get_telegram_after_creating_account">Nach der Erstellung des Kontos können Sie diese App nutzen.</string>
|
||||
<string name="get_telegram_account_first">Sie benötigen ein Telegram-Konto, um die Standortfreigabe nutzen zu können.</string>
|
||||
<string name="get_telegram_description_continue">Bitte installieren Sie Telegram und richten Sie ein Konto ein.</string>
|
||||
<string name="get_telegram_after_creating_account">Dann können Sie diese App nutzen.</string>
|
||||
<string name="shared_string_all">Alle</string>
|
||||
<string name="shared_string_off">Aus</string>
|
||||
<string name="already_registered_in_telegram">Sie benötigen ein registriertes Telegram-Konto und eine Telefonnummer</string>
|
||||
|
@ -71,33 +65,24 @@
|
|||
<string name="show_on_map">Auf Karte anzeigen</string>
|
||||
<string name="app_name">"OsmAnd Telegram "</string>
|
||||
<string name="phone_number_title">Telefonnummer</string>
|
||||
<string name="phone_number_descr">Telefonnummer im internationalen Format</string>
|
||||
<string name="phone_number_descr">Telefonnummer in internationalem Format</string>
|
||||
<string name="shared_string_password">Passwort</string>
|
||||
<string name="enter_code">Code eingeben</string>
|
||||
<string name="authentication_code">Authentifizierungscode</string>
|
||||
<string name="authentication_code_descr">Telegram hat Ihnen einen Code für OsmAnd zur Anmeldung an Ihrem Konto gesendet.</string>
|
||||
<string name="enter_password">Passwort eingeben</string>
|
||||
<string name="shared_string_login">Anmelden</string>
|
||||
<string name="shared_string_logout">Abmeldung</string>
|
||||
<string name="shared_string_logout">Abmelden</string>
|
||||
<string name="not_logged_in">Sie sind nicht angemeldet</string>
|
||||
<string name="initialization">Initialisierung</string>
|
||||
<string name="logging_out">Abmeldung</string>
|
||||
<string name="closing">Schließen</string>
|
||||
<string name="shared_string_continue">Fortfahren</string>
|
||||
<string name="shared_string_cancel">Abbrechen</string>
|
||||
<string name="gps_network_not_enabled">Standortdienst einschalten\?</string>
|
||||
<string name="shared_string_settings">Einstellungen</string>
|
||||
<string name="no_location_permission">Der App fehlt die Berechtigung, auf Standortdaten zuzugreifen.</string>
|
||||
<string name="gps_not_available">Bitte aktivieren Sie GPS in den Einstellungen</string>
|
||||
<string name="gps_not_available">Bitte schalten Sie \"Standort\" in den Systemeinstellungen ein</string>
|
||||
<string name="osmand_service">Hintergrundmodus</string>
|
||||
<string name="osmand_service_descr">OsmAnd Telegram läuft im Hintergrund bei ausgeschaltetem Bildschirm.</string>
|
||||
<string name="shared_string_distance">Distanz</string>
|
||||
<string name="share_location">Standort teilen</string>
|
||||
<string name="shared_string_paused">Pausiert</string>
|
||||
<string name="shared_string_no_data">Keine Daten</string>
|
||||
<string name="shared_string_pause">"Pause "</string>
|
||||
<string name="shared_string_start">"Start "</string>
|
||||
<string name="shared_string_stop">"Stop "</string>
|
||||
<string name="process_service">OsmAnd Telegram-Service</string>
|
||||
<string name="osmand_logo">OsmAnd-Logo</string>
|
||||
<string name="install_osmand_dialog_message">Sie müssen zuerst die kostenlose oder kostenpflichtige Version von OsmAnd installieren</string>
|
||||
|
@ -132,44 +117,76 @@
|
|||
<string name="shared_string_hour_short">h</string>
|
||||
<string name="shared_string_minute_short">min</string>
|
||||
<string name="shared_string_second_short">s</string>
|
||||
<string name="plus">+</string>
|
||||
<string name="my_location">Mein Standort</string>
|
||||
<string name="live_now">Sende gerade</string>
|
||||
|
||||
|
||||
<string name="background_work">Hintergrundbetrieb</string>
|
||||
<string name="successfully_sent_and_updated">Erfolgreich gesendet und aktualisiert</string>
|
||||
<string name="waiting_for_response_from_telegram">Warten auf Antwort von Telegram</string>
|
||||
<string name="sending_location_messages">Versand von Standortmitteilungen</string>
|
||||
<string name="initializing">Initialisierung</string>
|
||||
<string name="searching_for_gps">Suche nach GPS-Signal</string>
|
||||
<string name="sending_location_messages">Sende Standort</string>
|
||||
<string name="initializing">Startet</string>
|
||||
<string name="searching_for_gps">Positioniere..…</string>
|
||||
<string name="connecting_to_the_internet">Verbindung zum Internet</string>
|
||||
<string name="background_work_description">Akkuoptimierungseinstellungen für eine dauerhafte Standortfreigabe ändern</string>
|
||||
<string name="password_descr">Bitte Passwort für Ihr Telegram-Konto eingeben</string>
|
||||
<string name="background_work_description">Akkuoptimierungseinstellungen, um die Standortfreigabe zu stabilisieren.</string>
|
||||
<string name="password_descr">Telegram-Passwort</string>
|
||||
<string name="nm">kn</string>
|
||||
<string name="nm_h">kn/h</string>
|
||||
<string name="last_updated_location">Zuletzt aktualisierter Ort:</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Es ist nicht möglich, an Telegram-Chats zu senden:</string>
|
||||
<string name="battery_optimization_description">Schalten Sie die Batterieoptimierung für OsmAnd Telegram aus, damit es nicht plötzlich im Hintergrund ausgeschaltet wird.</string>
|
||||
<string name="share_location_as_descr">Die gemeinsame Nutzung Ihres Geräte-Standorts oder des Standorts benutzerdefinierter Geräte erlauben, die über die API hinzugefügt wurden.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Sind Sie sicher, dass Sie sich von OsmAnd Telegram abmelden möchten, so dass Sie den Standort nicht teilen oder den Standort anderer sehen können\?</string>
|
||||
<string name="disable_all_sharing_desc">Schaltet die Standortfreigabe für alle ausgewählten Chats aus (%1$d).</string>
|
||||
<string name="disable_all_sharing">Alle Freigaben deaktivieren</string>
|
||||
<string name="disconnect_from_telegram_desc">Um den Zugriff auf die Standortfreigabe zu widerrufen, öffnen Sie Telegram, gehen zu Einstellungen - Datenschutz und Sicherheit - Sitzungen und beenden die OsmAnd Telegram-Sitzung.</string>
|
||||
<string name="disconnect_from_telegram_desc">Um den Zugriff auf die Standortfreigabe zu widerrufen, öffnen Sie Telegram, gehen zu Einstellungen → Datenschutz und Sicherheit → Sitzungen und beenden die OsmAnd Telegram-Sitzung.</string>
|
||||
<string name="disconnect_from_telegram">So deaktivieren Sie OsmAnd Standortfreigabe von Telegram aus</string>
|
||||
<string name="logout_help_desc">So deaktivieren Sie OsmAnd Standortfreigabe von Telegram aus</string>
|
||||
<string name="stale_location">Veralteter Standort</string>
|
||||
<string name="stale_location">Keine Bewegung</string>
|
||||
<string name="send_my_location_desc">Legen Sie das Mindestintervall für die Standortfreigabe fest.</string>
|
||||
<string name="sharing_time">Freigabezeit</string>
|
||||
<string name="expire_at">Verfällt um</string>
|
||||
<string name="stop_sharing_all">Freigabe ist aktiviert (deaktivieren)</string>
|
||||
<string name="expire_at">Verfällt</string>
|
||||
<string name="turn_off_location_sharing">Standortfreigabe ausschalten</string>
|
||||
<string name="shared_string_bot">Bot</string>
|
||||
<string name="set_visible_time_for_all">Für alle sichtbare Zeit einstellen</string>
|
||||
<string name="set_time_description">Zeit einstellen, zu der Ihren Kontakten und Gruppen Ihr Standorts in Echtzeit angezeigt wird.</string>
|
||||
<string name="location_sharing_description">Kontakte und Gruppen wählen, für die Sie Ihren Standort freigeben möchten.</string>
|
||||
<string name="start_location_sharing">Standortfreigabe starten</string>
|
||||
<string name="location_service_no_gps_available">Wählen Sie einen der Standortprovider aus, um Ihren Standort freizugeben.</string>
|
||||
<string name="location_sharing_description">Kontakte und Gruppen wählen, denen Sie Ihren Standort freigeben möchten.</string>
|
||||
<string name="start_location_sharing">Standort freigeben</string>
|
||||
<string name="location_service_no_gps_available">Wählen Sie einen der Standortanbieter aus, um Ihren Standort freizugeben.</string>
|
||||
<string name="sharing_location">Standort teilen</string>
|
||||
<string name="welcome_descr"><b>OsmAnd Standortfreigabe</b> ermöglicht es Ihnen, Ihren Standort zu teilen und den anderer in OsmAnd zu sehen.<br/><br/>Die App verwendet die API von Telegram und Sie benötigen ein Telegram-Konto.</string>
|
||||
</resources>
|
||||
<string name="enter_another_device_name">Wählen Sie einen Namen, den Sie noch nicht benutzt haben</string>
|
||||
<string name="device_added_successfully">%1$s hinzugefügt.</string>
|
||||
<string name="shared_string_add">Hinzufügen</string>
|
||||
<string name="error_adding_new_device">Neues Gerät konnte nicht hinzugefügt werden</string>
|
||||
<string name="enter_device_name_description">Benennen Sie Ihr neues Gerät mit max. 200 Symbolen.</string>
|
||||
<string name="device_name_is_too_long">Gerätename ist zu lang</string>
|
||||
<string name="device_name_cannot_be_empty">Der Gerätename darf nicht leer sein</string>
|
||||
<string name="device_name">Gerätename</string>
|
||||
<string name="shared_string_hide">Verbergen</string>
|
||||
<string name="share_location_as_description_second_line">Sie können die Geräte-ID im Telegram-Client mit dem Chat-Bot %1$s erstellen und anzeigen. %2$s</string>
|
||||
<string name="share_location_as_description">Wenn Sie mehrere Geräte mit einem Telegram-Konto verbinden möchten, müssen Sie ein anderes Gerät verwenden, um Ihren Standort zu teilen.</string>
|
||||
<string name="shared_string_save">Speichern</string>
|
||||
<string name="stop_sharing_all">Die Freigabe ist eingeschaltet (ausschalten)</string>
|
||||
<string name="initialization">Startet</string>
|
||||
<string name="logging_out">Abmeldevorgang</string>
|
||||
<string name="closing">Schliesst</string>
|
||||
<string name="gps_network_not_enabled">\"Standort\" einschalten\?</string>
|
||||
<string name="live_now">Jetzt live</string>
|
||||
|
||||
|
||||
<string name="last_update_from_telegram">Letztes Update von Telegram</string>
|
||||
<string name="send_location_as">Senden Standort als</string>
|
||||
<string name="send_location_as_descr">Wählen Sie, wie Nachrichten mit Ihrem Standort aussehen sollen.</string>
|
||||
<string name="shared_string_map">Karte</string>
|
||||
<string name="shared_string_text">Text</string>
|
||||
<string name="map_and_text">Karte und Text</string>
|
||||
<string name="monitoring_is_enabled">Überwachung aktiviert</string>
|
||||
<string name="monitoring_is_disabled">Überwachung deaktiviert</string>
|
||||
<string name="time_on_the_move">Zeit in Bewegung</string>
|
||||
<string name="average_altitude">Durchschnittliche Höhe</string>
|
||||
<string name="average_speed">Durchschnittliche Geschwindigkeit</string>
|
||||
<string name="open_in_osmand">In OsmAnd öffnen</string>
|
||||
<string name="end_date">Endzeit</string>
|
||||
<string name="start_date">Startzeit</string>
|
||||
<string name="timeline_description">Überwachung aktivieren, um Bewegungsdaten im Hintergrund zu erfassen.</string>
|
||||
<string name="timeline">Zeitachse</string>
|
||||
</resources>
|
|
@ -1,34 +1,26 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources><string name="background_work_description">Cambiar los ajustes de optimización de la batería, para compartir una ubicación estable</string>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources><string name="background_work_description">Cambiar los ajustes de optimización de la batería para estabilizar la ubicación compartida.</string>
|
||||
<string name="background_work">Funcionamiento en segundo plano</string>
|
||||
<string name="battery_optimization_description">Para un uso compartido estable de su posición en segundo plano, es aconsejable desactivar la optimización de la batería para OsmAnd Telegram.
|
||||
\n
|
||||
\nSi la optimización está activada, el sistema puede desactivar automáticamente la aplicación que se está ejecutando en segundo plano (con la pantalla bloqueada y/o la aplicación minimizada). Esto sucede sin notificación y hace que la transmisión de la posición geográfica se detenga.</string>
|
||||
<string name="battery_optimization_description">Desactivar la optimización de la batería para OsmAnd Telegram de modo que no se desconecte repentinamente cuando esté en segundo plano.</string>
|
||||
<string name="sharing_in_background">Compartir en segundo plano</string>
|
||||
<string name="go_to_settings">Ir a los ajustes</string>
|
||||
<string name="shared_string_later">Luego</string>
|
||||
<string name="not_sent_yet">No enviado aún</string>
|
||||
<string name="not_found_yet">Aún no encontrada</string>
|
||||
<string name="re_send_location">Reenviar ubicación</string>
|
||||
<string name="last_sent_location">Última ubicación enviada</string>
|
||||
<string name="last_available_location">Última ubicación disponible</string>
|
||||
<string name="sharing_status">Estado de compartición</string>
|
||||
<string name="sharing_enabled">Compartir: Activado</string>
|
||||
<string name="shared_string_status">Estado</string>
|
||||
<string name="no_gps_connection">Sin conexión GPS</string>
|
||||
<string name="sharing_success">Enviado y actualizado con éxito</string>
|
||||
<string name="not_possible_to_send_to_chats">Imposible enviar a los chats:</string>
|
||||
<string name="no_internet_connection">Sin conexión a Internet</string>
|
||||
<string name="shared_string_disable">Desactivar</string>
|
||||
<string name="shared_string_save">Guardar</string>
|
||||
<string name="add_device_descr">Ingrese su ID de dispositivo que puede encontrar en https://live.osmand.net/device/ID</string>
|
||||
<string name="device_id">Id. del dispositivo</string>
|
||||
<string name="add_device">Añadir dispositivo</string>
|
||||
<string name="share_location_as_descr">Permite compartir la ubicación de este dispositivo o la ubicación del dispositivo personalizado añadido a través de dispositivos API.</string>
|
||||
<string name="share_location_as">Compartir ubicación como</string>
|
||||
<string name="live_now_description">Contactos y grupos que comparten su ubicación con usted.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Si cierra sesión en OsmAnd Telegram, no podrá enviar su posición ni ver la ubicación de sus contactos en el mapa de OsmAnd.</string>
|
||||
<string name="logout_from_osmand_telegram">¿Cerrar sesión en OsmAnd Telegram\?</string>
|
||||
<string name="live_now_description">Contactos y grupos que comparten la ubicación contigo.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">¿Cerrar sesión en OsmAnd Telegram\? No podrá compartir la ubicación o ver la ubicación de otros</string>
|
||||
<string name="logout_from_osmand_telegram">¿Cerrar sesión de OsmAnd Telegram\?</string>
|
||||
<string name="shared_string_name">Nombre</string>
|
||||
<string name="by_distance">Por distancia</string>
|
||||
<string name="by_name">Por nombre</string>
|
||||
|
@ -37,44 +29,43 @@
|
|||
<string name="shared_string_sort_by">Ordenar por</string>
|
||||
<string name="choose_osmand_desc">Seleccione la versión de OsmAnd donde los contactos se mostrarán en el mapa.</string>
|
||||
<string name="choose_osmand">Seleccione la versión de OsmAnd para usar</string>
|
||||
<string name="disable_all_sharing_desc">Dejará de compartir la ubicación con todos los chats seleccionados (%1$d).</string>
|
||||
<string name="disable_all_sharing_desc">Desactivar la ubicación compartida en todos los chats seleccionados (%1$d).</string>
|
||||
<string name="disable_all_sharing">Desactivar el uso compartido</string>
|
||||
<string name="turn_off_all">Apagar todos</string>
|
||||
<string name="shared_string_exit">Salir</string>
|
||||
<string name="time_ago">hace</string>
|
||||
<string name="last_response">Última respuesta</string>
|
||||
<string name="shared_string_group">Grupo</string>
|
||||
<string name="logout_no_internet_msg">Para desconectarse correctamente de su cuenta de Telegram, se necesita Internet.</string>
|
||||
<string name="logout_no_internet_msg">Conéctese a Internet para cerrar sesión en Telegram correctamente.</string>
|
||||
<string name="shared_string_close">Cerrar</string>
|
||||
<string name="disconnect_from_telegram_desc">Para revocar el acceso a su cuenta de Telegram desde OsmAnd, abra Telegram, vaya a «Ajustes - Privacidad y Seguridad - Sesiones» y termine la sesión de Telegram de OsmAnd. Después de eso, «OsmAnd Location Sharing» ya no tendrá acceso a su cuenta y no podrá utilizar esta aplicación hasta que vuelva a iniciar sesión.</string>
|
||||
<string name="disconnect_from_telegram">Cómo desconectar «OsmAnd Location Sharing» de la cuenta de Telegram</string>
|
||||
<string name="logout_help_desc">Cómo desconectar «OsmAnd Location Sharing» de la cuenta de Telegram</string>
|
||||
<string name="disconnect_from_telegram_desc">Para revocar el acceso a la ubicación compartida. Abra Telegram, vaya a «Ajustes → Privacidad y Seguridad → Sesiones» y cierre sesión de OsmAnd Telegram.</string>
|
||||
<string name="disconnect_from_telegram">Cómo desactivar la «Ubicación Compartida de OsmAnd» desde Telegram</string>
|
||||
<string name="logout_help_desc">Cómo desactivar la «Ubicación Compartida de OsmAnd» desde Telegram</string>
|
||||
<string name="connected_account">Cuenta conectada</string>
|
||||
<string name="shared_string_account">Cuenta</string>
|
||||
<string name="in_time">en %1$s</string>
|
||||
<string name="osmand_connect_desc">Elija la versión de OsmAnd a la que se referirá «OsmAnd Telegram» para mostrar la ubicación en el mapa.</string>
|
||||
<string name="osmand_connect_desc">Elija la versión de OsmAnd el cual «OsmAnd Telegram» utilizará para mostrar las ubicaciones.</string>
|
||||
<string name="osmand_connect">Conectar OsmAnd</string>
|
||||
<string name="location_history_desc">Ocultar los contactos que no hayan actualizado su ubicación después del período de tiempo especificado.</string>
|
||||
<string name="location_history_desc">Ocultar los contactos que no se han movido en un tiempo determinado.</string>
|
||||
<string name="location_history">Historial de ubicación</string>
|
||||
<string name="stale_location_desc">La última vez que un contacto envió una actualización a su ubicación.</string>
|
||||
<string name="stale_location">Ubicación obsoleta</string>
|
||||
<string name="stale_location_desc">La última vez que un contacto se movió.</string>
|
||||
<string name="stale_location">Sin movimiento</string>
|
||||
<string name="send_my_location_desc">Fijar el intervalo mínimo para compartir la ubicación.</string>
|
||||
<string name="send_my_location">Enviar mi ubicación</string>
|
||||
<string name="gps_and_location">GPS y ubicación</string>
|
||||
<string name="gps_and_location">Ubicación</string>
|
||||
<string name="sharing_time">Tiempo compartido</string>
|
||||
<string name="expire_at">Expira en</string>
|
||||
<string name="stop_sharing_all">El uso compartido está activado (desactivar)</string>
|
||||
<string name="turn_off_location_sharing">Desactivar el uso compartido de ubicaciones</string>
|
||||
<string name="turn_off_location_sharing">Desactivar la ubicación compartida</string>
|
||||
<string name="open_osmand">Abrir OsmAnd</string>
|
||||
<string name="shared_string_live">En vivo</string>
|
||||
<string name="shared_string_bot">Bot</string>
|
||||
<string name="get_telegram_title">Registro en Telegram</string>
|
||||
<string name="get_telegram_account_first">Necesita una cuenta en Telegram para utilizar las capacidades de «OsmAnd Location Sharing».</string>
|
||||
<string name="get_telegram_description_continue">Si desea continuar, instale Telegram de Google Play y registre su cuenta.</string>
|
||||
<string name="get_telegram_after_creating_account">Después de crear una cuenta, puede utilizar esta aplicación.</string>
|
||||
<string name="get_telegram_account_first">Necesita una cuenta en Telegram para utilizar la ubicación compartida.</string>
|
||||
<string name="get_telegram_description_continue">Instale Telegram y cree una cuenta.</string>
|
||||
<string name="get_telegram_after_creating_account">Después podrá utilizar esta aplicación.</string>
|
||||
<string name="shared_string_all">Todos</string>
|
||||
<string name="shared_string_off">No</string>
|
||||
<string name="already_registered_in_telegram">Necesita una cuenta ya registrada y un número de teléfono en Telegram</string>
|
||||
<string name="already_registered_in_telegram">Necesita una cuenta registrada en Telegram y un número de teléfono</string>
|
||||
<string name="do_not_have_telegram">No tengo cuenta de Telegram</string>
|
||||
<string name="enter_phone_number">Ingrese el número de teléfono</string>
|
||||
<string name="enter_authentication_code">Ingrese el código de autenticación</string>
|
||||
|
@ -89,8 +80,8 @@
|
|||
<string name="set_time_description">Ajustar la hora en que los contactos y grupos marcados verán la ubicación en tiempo real.</string>
|
||||
<string name="set_time">Fijar la hora</string>
|
||||
<string name="location_sharing_description">Marque los contactos y grupos con los que desea compartir su ubicación.</string>
|
||||
<string name="my_location_search_hint">Buscar: grupo o contacto</string>
|
||||
<string name="start_location_sharing">Iniciar el uso compartido de ubicaciones</string>
|
||||
<string name="my_location_search_hint">Buscar: Grupo o contacto</string>
|
||||
<string name="start_location_sharing">Compartir ubicación</string>
|
||||
<string name="show_on_map">Mostrar en el mapa</string>
|
||||
<string name="app_name">OsmAnd Telegram</string>
|
||||
<string name="phone_number_title">Número de teléfono</string>
|
||||
|
@ -98,40 +89,32 @@
|
|||
<string name="shared_string_password">Contraseña</string>
|
||||
<string name="enter_code">Ingresar código</string>
|
||||
<string name="authentication_code">Código de autenticación</string>
|
||||
<string name="authentication_code_descr">Se ha enviado un código a Telegram. Será utilizado por OsmAnd para acceder a su cuenta.</string>
|
||||
<string name="authentication_code_descr">Telegram ha enviado un código para que OsmAnd inicie sesión en su cuenta.</string>
|
||||
<string name="enter_password">Ingresar contraseña</string>
|
||||
<string name="password_descr">Por favor, ingrese la contraseña de su cuenta de Telegram para finalizar la autorización</string>
|
||||
<string name="password_descr">Contraseña de Telegram</string>
|
||||
<string name="shared_string_login">Iniciar sesión</string>
|
||||
<string name="shared_string_logout">Cerrar sesión</string>
|
||||
<string name="not_logged_in">No ha iniciado sesión</string>
|
||||
<string name="initialization">Inicialización</string>
|
||||
<string name="logging_out">Cerrar sesión</string>
|
||||
<string name="closing">Cerrando</string>
|
||||
<string name="shared_string_continue">Continuar</string>
|
||||
<string name="shared_string_cancel">Cancelar</string>
|
||||
<string name="gps_network_not_enabled">Servicio de ubicación desactivado. ¿Quieres activarlo\?</string>
|
||||
<string name="gps_network_not_enabled">¿Activar «Ubicación»\?</string>
|
||||
<string name="shared_string_settings">Ajustes</string>
|
||||
<string name="no_location_permission">La aplicación no tiene permiso de acceso a los datos de ubicación.</string>
|
||||
<string name="gps_not_available">Activa el GPS en ajustes</string>
|
||||
<string name="location_service_no_gps_available">El servicio de ubicación compartida requiere que se active un proveedor de ubicación.</string>
|
||||
<string name="no_location_permission">La aplicación no tiene permiso para acceder a los datos de ubicación.</string>
|
||||
<string name="gps_not_available">Activar «Ubicación» en los ajustes del sistema</string>
|
||||
<string name="location_service_no_gps_available">Elija uno de los proveedores de ubicación para compartir su ubicación.</string>
|
||||
<string name="osmand_service">Modo reposo</string>
|
||||
<string name="osmand_service_descr">OsmAnd Telegram se ejecuta en modo reposo con la pantalla apagada.</string>
|
||||
<string name="shared_string_distance">Distancia</string>
|
||||
<string name="share_location">Compartir ubicación</string>
|
||||
<string name="sharing_location">Compartir ubicación</string>
|
||||
<string name="shared_string_paused">Pausado</string>
|
||||
<string name="shared_string_no_data">Sin datos</string>
|
||||
<string name="shared_string_pause">Pausar</string>
|
||||
<string name="shared_string_start">Iniciar</string>
|
||||
<string name="shared_string_stop">Parar</string>
|
||||
<string name="process_service">Servicio de OsmAnd Telegram</string>
|
||||
<string name="osmand_logo">Logotipo de OsmAnd</string>
|
||||
<string name="install_osmand_dialog_message">Necesita instalar primero una versión gratuita o de pago de OsmAnd</string>
|
||||
<string name="install_osmand_dialog_message">Necesita instalar primero la versión gratuita o de pago de OsmAnd</string>
|
||||
<string name="install_osmand">Instalar OsmAnd</string>
|
||||
<string name="show_users_on_map">Mostrar usuarios en el mapa</string>
|
||||
<string name="active_chats">Chats activos</string>
|
||||
<string name="shared_string_authorization">Autorización</string>
|
||||
<string name="shared_string_authorization_descr">Por favor, introduzca el número de teléfono de su cuenta de Telegram en el formato internacional</string>
|
||||
<string name="shared_string_authorization_descr">Ingrese el número de teléfono de Telegram en el formato internacional</string>
|
||||
<string name="shared_string_welcome">Bienvenido</string>
|
||||
|
||||
<string name="yard">yd</string>
|
||||
|
@ -160,10 +143,54 @@
|
|||
<string name="shared_string_hour_short">h</string>
|
||||
<string name="shared_string_minute_short">min</string>
|
||||
<string name="shared_string_second_short">seg</string>
|
||||
<string name="plus">+</string>
|
||||
<string name="welcome_descr"><b>OsmAnd Location Sharing</b> permite compartir su ubicación y ver las ubicaciones de otras personas en OsmAnd.<br/><br/>La aplicación funciona sobre la base de Telegram API. Para utilizar esta aplicación debe tener una cuenta de Telegram.</string>
|
||||
<string name="welcome_descr">La <b>Ubicación Compartida de OsmAnd</b> (en inglés, «OsmAnd Location Sharing») permite compartir su ubicación y ver las ubicaciones de otras personas en OsmAnd.<br/><br/>La aplicación funciona sobre la base de Telegram API. Para utilizar esta aplicación debe tener una cuenta de Telegram.</string>
|
||||
<string name="my_location">Mi ubicación</string>
|
||||
<string name="live_now">En vivo ahora</string>
|
||||
|
||||
|
||||
</resources>
|
||||
<string name="enter_another_device_name">Elige un nombre que no se haya usado</string>
|
||||
<string name="device_added_successfully">%1$s añadido(s).</string>
|
||||
<string name="shared_string_add">Añadir</string>
|
||||
<string name="error_adding_new_device">No se pudo añadir el dispositivo</string>
|
||||
<string name="enter_device_name_description">El nombre del dispositivo nuevo (máx. 200 símbolos).</string>
|
||||
<string name="device_name_is_too_long">Nombre del dispositivo demasiado largo</string>
|
||||
<string name="device_name_cannot_be_empty">El nombre del dispositivo no debe estar vacío</string>
|
||||
<string name="device_name">Nombre del dispositivo</string>
|
||||
<string name="shared_string_hide">Ocultar</string>
|
||||
<string name="share_location_as_description_second_line">Puede crear y ver el ID de dispositivo en el cliente de Telegram usando el chat bot %1$s. %2$s</string>
|
||||
<string name="share_location_as_description">Si desea conectar varios dispositivos a una cuenta de Telegram, debe utilizar un dispositivo diferente para compartir su ubicación.</string>
|
||||
<string name="last_updated_location">Última ubicación actualizada:</string>
|
||||
<string name="successfully_sent_and_updated">Enviado y actualizado con éxito</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Imposible enviar a los chats de Telegram:</string>
|
||||
<string name="waiting_for_response_from_telegram">Esperando la respuesta de Telegram</string>
|
||||
<string name="sending_location_messages">Ubicación de envío</string>
|
||||
<string name="initializing">Iniciando</string>
|
||||
<string name="searching_for_gps">Ubicando…</string>
|
||||
<string name="connecting_to_the_internet">Conexión a Internet</string>
|
||||
<string name="last_update_from_telegram">Última actualización de Telegram</string>
|
||||
<string name="stop_sharing_all">Compartir está activado (desactivar)</string>
|
||||
<string name="initialization">Iniciando</string>
|
||||
<string name="logging_out">Cerrar sesión</string>
|
||||
<string name="closing">Cerrando</string>
|
||||
<string name="send_location_as">Enviar ubicación como</string>
|
||||
<string name="send_location_as_descr">Elige cómo se verán los mensajes con tu ubicación.</string>
|
||||
<string name="shared_string_map">Mapa</string>
|
||||
<string name="shared_string_text">Texto</string>
|
||||
<string name="map_and_text">Mapa y texto</string>
|
||||
<string name="monitoring_is_enabled">Monitorización activada</string>
|
||||
<string name="monitoring_is_disabled">Monitorización desactivada</string>
|
||||
<string name="time_on_the_move">tiempo en movimiento</string>
|
||||
<string name="average_altitude">Altitud media</string>
|
||||
<string name="average_speed">Velocidad media</string>
|
||||
<string name="open_in_osmand">Abrir en OsmAnd</string>
|
||||
<string name="end_date">Fecha de finalización</string>
|
||||
<string name="start_date">Fecha de inicio</string>
|
||||
<string name="timeline_description">Activar la monitorización para recopilar datos de movimiento en segundo plano.</string>
|
||||
<string name="timeline">Línea de tiempo</string>
|
||||
<string name="gps_points_in_buffer">enviado (%1$d en búfer)</string>
|
||||
<string name="points_size">%1$d puntos</string>
|
||||
<string name="shared_string_date">Fecha</string>
|
||||
<string name="shared_string_collected">Recolectados</string>
|
||||
<string name="gps_points">Puntos de GPS</string>
|
||||
<string name="shared_string_sent">Enviado</string>
|
||||
</resources>
|
|
@ -1,34 +1,25 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources><string name="background_work_description">Cambiar los ajustes de optimización de la batería, para compartir una ubicación estable</string>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources><string name="background_work_description">Cambiar los ajustes de optimización de la batería para estabilizar la ubicación compartida.</string>
|
||||
<string name="background_work">Funcionamiento en segundo plano</string>
|
||||
<string name="battery_optimization_description">Para un uso compartido estable de su posición en segundo plano, es aconsejable desactivar la optimización de la batería para OsmAnd Telegram.
|
||||
\n
|
||||
\nSi la optimización está activada, el sistema puede desactivar automáticamente la aplicación que se está ejecutando en segundo plano (con la pantalla bloqueada y/o la aplicación minimizada). Esto sucede sin notificación y hace que la transmisión de la posición geográfica se detenga.</string>
|
||||
<string name="battery_optimization_description">Desactivar la optimización de la batería para OsmAnd Telegram de modo que no se desconecte repentinamente cuando esté en segundo plano.</string>
|
||||
<string name="sharing_in_background">Compartir en segundo plano</string>
|
||||
<string name="go_to_settings">Ir a los ajustes</string>
|
||||
<string name="shared_string_later">Luego</string>
|
||||
<string name="not_sent_yet">No enviado aún</string>
|
||||
<string name="not_found_yet">Aún no encontrada</string>
|
||||
<string name="re_send_location">Reenviar ubicación</string>
|
||||
<string name="last_sent_location">Última ubicación enviada</string>
|
||||
<string name="last_available_location">Última ubicación disponible</string>
|
||||
<string name="sharing_status">Estado de compartición</string>
|
||||
<string name="sharing_enabled">Compartir: Activado</string>
|
||||
<string name="shared_string_status">Estado</string>
|
||||
<string name="no_gps_connection">Sin conexión GPS</string>
|
||||
<string name="sharing_success">Enviado y actualizado con éxito</string>
|
||||
<string name="not_possible_to_send_to_chats">Imposible enviar a los chats:</string>
|
||||
<string name="no_internet_connection">Sin conexión a Internet</string>
|
||||
<string name="shared_string_disable">Desactivar</string>
|
||||
<string name="shared_string_save">Guardar</string>
|
||||
<string name="add_device_descr">Ingrese su ID de dispositivo que puede encontrar en https://live.osmand.net/device/ID</string>
|
||||
<string name="device_id">Id. del dispositivo</string>
|
||||
<string name="add_device">Añadir dispositivo</string>
|
||||
<string name="share_location_as_descr">Permite compartir la ubicación de este dispositivo o la ubicación del dispositivo personalizado añadido a través de dispositivos API.</string>
|
||||
<string name="share_location_as">Compartir ubicación como</string>
|
||||
<string name="live_now_description">Contactos y grupos que comparten su ubicación con usted.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Si cierra sesión en OsmAnd Telegram, no podrá enviar su posición ni ver la ubicación de sus contactos en el mapa de OsmAnd.</string>
|
||||
<string name="logout_from_osmand_telegram">¿Cerrar sesión en OsmAnd Telegram\?</string>
|
||||
<string name="live_now_description">Contactos y grupos que comparten la ubicación contigo.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">¿Cerrar sesión en OsmAnd Telegram\? No podrá compartir la ubicación o ver la ubicación de otros</string>
|
||||
<string name="logout_from_osmand_telegram">¿Cerrar sesión de OsmAnd Telegram\?</string>
|
||||
<string name="shared_string_name">Nombre</string>
|
||||
<string name="by_distance">Por distancia</string>
|
||||
<string name="by_name">Por nombre</string>
|
||||
|
@ -37,44 +28,43 @@
|
|||
<string name="shared_string_sort_by">Ordenar por</string>
|
||||
<string name="choose_osmand_desc">Seleccione la versión de OsmAnd donde los contactos se mostrarán en el mapa.</string>
|
||||
<string name="choose_osmand">Seleccione la versión de OsmAnd para usar</string>
|
||||
<string name="disable_all_sharing_desc">Dejará de compartir la ubicación con todos los chats seleccionados (%1$d).</string>
|
||||
<string name="disable_all_sharing_desc">Desactivar la ubicación compartida en todos los chats seleccionados (%1$d).</string>
|
||||
<string name="disable_all_sharing">Desactivar el uso compartido</string>
|
||||
<string name="turn_off_all">Apagar todos</string>
|
||||
<string name="shared_string_exit">Salir</string>
|
||||
<string name="time_ago">hace</string>
|
||||
<string name="last_response">Última respuesta</string>
|
||||
<string name="shared_string_group">Grupo</string>
|
||||
<string name="logout_no_internet_msg">Para desconectarse correctamente de su cuenta de Telegram, se necesita Internet.</string>
|
||||
<string name="logout_no_internet_msg">Conéctese a Internet para cerrar sesión en Telegram correctamente.</string>
|
||||
<string name="shared_string_close">Cerrar</string>
|
||||
<string name="disconnect_from_telegram_desc">Para revocar el acceso a su cuenta de Telegram desde OsmAnd, abra Telegram, vaya a «Ajustes - Privacidad y Seguridad - Sesiones» y termine la sesión de Telegram de OsmAnd. Después de eso, «OsmAnd Location Sharing» ya no tendrá acceso a su cuenta y no podrá utilizar esta aplicación hasta que vuelva a iniciar sesión.</string>
|
||||
<string name="disconnect_from_telegram">Cómo desconectar «OsmAnd Location Sharing» de la cuenta de Telegram</string>
|
||||
<string name="logout_help_desc">Cómo desconectar «OsmAnd Location Sharing» de la cuenta de Telegram</string>
|
||||
<string name="disconnect_from_telegram_desc">Para revocar el acceso a la ubicación compartida. Abra Telegram, vaya a «Ajustes → Privacidad y Seguridad → Sesiones» y cierre sesión de OsmAnd Telegram.</string>
|
||||
<string name="disconnect_from_telegram">Cómo desactivar la «Ubicación Compartida de OsmAnd» desde Telegram</string>
|
||||
<string name="logout_help_desc">Cómo desactivar la «Ubicación Compartida de OsmAnd» desde Telegram</string>
|
||||
<string name="connected_account">Cuenta conectada</string>
|
||||
<string name="shared_string_account">Cuenta</string>
|
||||
<string name="in_time">en %1$s</string>
|
||||
<string name="osmand_connect_desc">Elija la versión de OsmAnd a la que se referirá «OsmAnd Telegram» para mostrar la ubicación en el mapa.</string>
|
||||
<string name="osmand_connect_desc">Elija la versión de OsmAnd el cual «OsmAnd Telegram» utilizará para mostrar las ubicaciones.</string>
|
||||
<string name="osmand_connect">Conectar OsmAnd</string>
|
||||
<string name="location_history_desc">Ocultar los contactos que no hayan actualizado su ubicación después del período de tiempo especificado.</string>
|
||||
<string name="location_history_desc">Ocultar los contactos que no se han movido en un tiempo determinado.</string>
|
||||
<string name="location_history">Historial de ubicación</string>
|
||||
<string name="stale_location_desc">La última vez que un contacto envió una actualización a su ubicación.</string>
|
||||
<string name="stale_location">Ubicación obsoleta</string>
|
||||
<string name="stale_location_desc">La última vez que un contacto se movió.</string>
|
||||
<string name="stale_location">Sin movimiento</string>
|
||||
<string name="send_my_location_desc">Fijar el intervalo mínimo para compartir la ubicación.</string>
|
||||
<string name="send_my_location">Enviar mi ubicación</string>
|
||||
<string name="gps_and_location">GPS y ubicación</string>
|
||||
<string name="gps_and_location">Ubicación</string>
|
||||
<string name="sharing_time">Tiempo compartido</string>
|
||||
<string name="expire_at">Expira en</string>
|
||||
<string name="stop_sharing_all">El uso compartido está activado (desactivar)</string>
|
||||
<string name="turn_off_location_sharing">Desactivar el uso compartido de ubicaciones</string>
|
||||
<string name="turn_off_location_sharing">Desactivar la ubicación compartida</string>
|
||||
<string name="open_osmand">Abrir OsmAnd</string>
|
||||
<string name="shared_string_live">En vivo</string>
|
||||
<string name="shared_string_bot">Bot</string>
|
||||
<string name="get_telegram_title">Registro en Telegram</string>
|
||||
<string name="get_telegram_account_first">Necesita una cuenta en Telegram para utilizar las capacidades de «OsmAnd Location Sharing».</string>
|
||||
<string name="get_telegram_description_continue">Si desea continuar, instale Telegram de Google Play y registre su cuenta.</string>
|
||||
<string name="get_telegram_after_creating_account">Después de crear una cuenta, puede utilizar esta aplicación.</string>
|
||||
<string name="get_telegram_account_first">Necesita una cuenta en Telegram para utilizar la ubicación compartida.</string>
|
||||
<string name="get_telegram_description_continue">Instale Telegram y cree una cuenta.</string>
|
||||
<string name="get_telegram_after_creating_account">Después podrá utilizar esta aplicación.</string>
|
||||
<string name="shared_string_all">Todos</string>
|
||||
<string name="shared_string_off">No</string>
|
||||
<string name="already_registered_in_telegram">Necesita una cuenta ya registrada y un número de teléfono en Telegram</string>
|
||||
<string name="already_registered_in_telegram">Necesita una cuenta registrada en Telegram y un número de teléfono</string>
|
||||
<string name="do_not_have_telegram">No tengo cuenta de Telegram</string>
|
||||
<string name="enter_phone_number">Ingrese el número de teléfono</string>
|
||||
<string name="enter_authentication_code">Ingrese el código de autenticación</string>
|
||||
|
@ -89,8 +79,8 @@
|
|||
<string name="set_time_description">Ajustar la hora en que los contactos y grupos marcados verán la ubicación en tiempo real.</string>
|
||||
<string name="set_time">Fijar la hora</string>
|
||||
<string name="location_sharing_description">Marque los contactos y grupos con los que desea compartir su ubicación.</string>
|
||||
<string name="my_location_search_hint">Buscar: grupo o contacto</string>
|
||||
<string name="start_location_sharing">Iniciar el uso compartido de ubicaciones</string>
|
||||
<string name="my_location_search_hint">Buscar: Grupo o contacto</string>
|
||||
<string name="start_location_sharing">Compartir ubicación</string>
|
||||
<string name="show_on_map">Mostrar en el mapa</string>
|
||||
<string name="app_name">OsmAnd Telegram</string>
|
||||
<string name="phone_number_title">Número de teléfono</string>
|
||||
|
@ -98,40 +88,31 @@
|
|||
<string name="shared_string_password">Contraseña</string>
|
||||
<string name="enter_code">Ingresar código</string>
|
||||
<string name="authentication_code">Código de autenticación</string>
|
||||
<string name="authentication_code_descr">Se ha enviado un código a Telegram. Será utilizado por OsmAnd para acceder a su cuenta.</string>
|
||||
<string name="authentication_code_descr">Telegram ha enviado un código para que OsmAnd inicie sesión en su cuenta.</string>
|
||||
<string name="enter_password">Ingresar contraseña</string>
|
||||
<string name="password_descr">Por favor, ingrese la contraseña de su cuenta de Telegram para finalizar la autorización</string>
|
||||
<string name="password_descr">Contraseña de Telegram</string>
|
||||
<string name="shared_string_login">Iniciar sesión</string>
|
||||
<string name="shared_string_logout">Cerrar sesión</string>
|
||||
<string name="not_logged_in">No ha iniciado sesión</string>
|
||||
<string name="initialization">Inicialización</string>
|
||||
<string name="logging_out">Cerrar sesión</string>
|
||||
<string name="closing">Cerrando</string>
|
||||
<string name="shared_string_continue">Continuar</string>
|
||||
<string name="shared_string_cancel">Cancelar</string>
|
||||
<string name="gps_network_not_enabled">Servicio de ubicación desactivado. ¿Quieres activarlo\?</string>
|
||||
<string name="shared_string_settings">Ajustes</string>
|
||||
<string name="no_location_permission">La aplicación no tiene permiso de acceso a los datos de ubicación.</string>
|
||||
<string name="gps_not_available">Active el GPS en los ajustes</string>
|
||||
<string name="location_service_no_gps_available">El servicio de ubicación compartida requiere que se active un proveedor de ubicación.</string>
|
||||
<string name="no_location_permission">La aplicación no tiene permiso para acceder a los datos de ubicación.</string>
|
||||
<string name="gps_not_available">Activar «Ubicación» en los ajustes del sistema</string>
|
||||
<string name="location_service_no_gps_available">Elija uno de los proveedores de ubicación para compartir su ubicación.</string>
|
||||
<string name="osmand_service">Modo en segundo plano</string>
|
||||
<string name="osmand_service_descr">OsmAnd Telegram se ejecuta en modo reposo con la pantalla apagada.</string>
|
||||
<string name="shared_string_distance">Distancia</string>
|
||||
<string name="share_location">Compartir ubicación</string>
|
||||
<string name="sharing_location">Compartir ubicación</string>
|
||||
<string name="shared_string_paused">Pausado</string>
|
||||
<string name="shared_string_no_data">Sin datos</string>
|
||||
<string name="shared_string_pause">Pausar</string>
|
||||
<string name="shared_string_start">Iniciar</string>
|
||||
<string name="shared_string_stop">Parar</string>
|
||||
<string name="process_service">Servicio de OsmAnd Telegram</string>
|
||||
<string name="osmand_logo">Logotipo de OsmAnd</string>
|
||||
<string name="install_osmand_dialog_message">Necesita instalar primero una versión gratuita o de pago de OsmAnd</string>
|
||||
<string name="install_osmand_dialog_message">Necesita instalar primero la versión gratuita o de pago de OsmAnd</string>
|
||||
<string name="install_osmand">Instalar OsmAnd</string>
|
||||
<string name="show_users_on_map">Mostrar usuarios en el mapa</string>
|
||||
<string name="active_chats">Chats activos</string>
|
||||
<string name="shared_string_authorization">Autorización</string>
|
||||
<string name="shared_string_authorization_descr">Por favor, introduzca el número de teléfono de su cuenta de Telegram en el formato internacional</string>
|
||||
<string name="shared_string_authorization_descr">Ingrese el número de teléfono de Telegram en el formato internacional</string>
|
||||
<string name="shared_string_welcome">Bienvenido</string>
|
||||
|
||||
<string name="yard">yd</string>
|
||||
|
@ -160,10 +141,56 @@
|
|||
<string name="shared_string_hour_short">h</string>
|
||||
<string name="shared_string_minute_short">min</string>
|
||||
<string name="shared_string_second_short">seg</string>
|
||||
<string name="plus">+</string>
|
||||
<string name="welcome_descr"><b>OsmAnd Location Sharing</b> permite compartir su ubicación y ver las ubicaciones de otras personas en OsmAnd.<br/><br/>La aplicación funciona sobre la base de Telegram API. Para utilizar esta aplicación debe tener una cuenta de Telegram.</string>
|
||||
<string name="welcome_descr">La <b>Ubicación Compartida de OsmAnd</b> (en inglés, «OsmAnd Location Sharing») permite compartir su ubicación y ver las ubicaciones de otras personas en OsmAnd.<br/><br/>La aplicación funciona sobre la base de Telegram API. Para utilizar esta aplicación debe tener una cuenta de Telegram.</string>
|
||||
<string name="my_location">Mi ubicación</string>
|
||||
<string name="live_now">En vivo ahora</string>
|
||||
|
||||
|
||||
</resources>
|
||||
<string name="enter_another_device_name">Elige un nombre que no se haya usado</string>
|
||||
<string name="device_added_successfully">%1$s añadido(s).</string>
|
||||
<string name="shared_string_add">Añadir</string>
|
||||
<string name="error_adding_new_device">No se pudo añadir el dispositivo</string>
|
||||
<string name="enter_device_name_description">El nombre del dispositivo nuevo (máx. 200 símbolos).</string>
|
||||
<string name="device_name_is_too_long">Nombre del dispositivo demasiado largo</string>
|
||||
<string name="device_name_cannot_be_empty">El nombre del dispositivo no debe estar vacío</string>
|
||||
<string name="device_name">Nombre del dispositivo</string>
|
||||
<string name="shared_string_hide">Ocultar</string>
|
||||
<string name="share_location_as_description_second_line">Puede crear y ver el ID de dispositivo en el cliente de Telegram usando el chat bot %1$s. %2$s</string>
|
||||
<string name="share_location_as_description">Si desea conectar varios dispositivos a una cuenta de Telegram, debe utilizar un dispositivo diferente para compartir su ubicación.</string>
|
||||
<string name="last_updated_location">Última ubicación actualizada:</string>
|
||||
<string name="successfully_sent_and_updated">Enviado y actualizado con éxito</string>
|
||||
<string name="shared_string_save">Guardar</string>
|
||||
<string name="last_update_from_telegram">Última actualización de Telegram</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Imposible enviar a los chats de Telegram:</string>
|
||||
<string name="waiting_for_response_from_telegram">Esperando la respuesta de Telegram</string>
|
||||
<string name="sending_location_messages">Ubicación de envío</string>
|
||||
<string name="initializing">Iniciando</string>
|
||||
<string name="searching_for_gps">Ubicando…</string>
|
||||
<string name="connecting_to_the_internet">Conexión a Internet</string>
|
||||
<string name="stop_sharing_all">Compartir está activado (desactivar)</string>
|
||||
<string name="initialization">Iniciando</string>
|
||||
<string name="logging_out">Cerrar sesión</string>
|
||||
<string name="closing">Cerrando</string>
|
||||
<string name="gps_network_not_enabled">¿Activar «Ubicación»\?</string>
|
||||
<string name="send_location_as">Enviar ubicación como</string>
|
||||
<string name="send_location_as_descr">Elija cómo se verán los mensajes con su ubicación.</string>
|
||||
<string name="shared_string_map">Mapa</string>
|
||||
<string name="shared_string_text">Texto</string>
|
||||
<string name="map_and_text">Mapa y texto</string>
|
||||
<string name="monitoring_is_enabled">Monitorización activada</string>
|
||||
<string name="monitoring_is_disabled">Monitorización desactivada</string>
|
||||
<string name="time_on_the_move">tiempo en movimiento</string>
|
||||
<string name="average_altitude">Altitud media</string>
|
||||
<string name="average_speed">Velocidad media</string>
|
||||
<string name="open_in_osmand">Abrir en OsmAnd</string>
|
||||
<string name="end_date">Fecha de fin</string>
|
||||
<string name="start_date">Fecha de inicio</string>
|
||||
<string name="timeline_description">Activar la monitorización para recopilar datos de movimiento en segundo plano.</string>
|
||||
<string name="timeline">Línea de tiempo</string>
|
||||
<string name="gps_points_in_buffer">enviado (%1$d en búfer)</string>
|
||||
<string name="points_size">%1$d puntos</string>
|
||||
<string name="shared_string_date">Fecha</string>
|
||||
<string name="shared_string_collected">Recolectados</string>
|
||||
<string name="gps_points">Puntos de GPS</string>
|
||||
<string name="shared_string_sent">Enviado</string>
|
||||
</resources>
|
23
OsmAnd-telegram/res/values-fa/strings.xml
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources><string name="last_update_from_telegram">آخرین بهروزرسانی نسخهٔ تلگرام</string>
|
||||
<string name="device_added_successfully">%1$s اضافه شد.</string>
|
||||
<string name="shared_string_add">افزودن</string>
|
||||
<string name="error_adding_new_device">نمیتوان دستگاه جدید اضافه کرد</string>
|
||||
<string name="enter_device_name_description">نام دستگاه جدید خود را با حداکثر ۲۰۰ نویسه بنویسید.</string>
|
||||
<string name="device_name_is_too_long">نام دستگاه خیلی طولانی است</string>
|
||||
<string name="device_name_cannot_be_empty">نام دستگاه نباید خالی باشد</string>
|
||||
<string name="device_name">نام دستگاه</string>
|
||||
<string name="share_location_as_description">اگر بخواهید چندین دستگاه را به یک حساب تلگرامی متصل کنید، باید موقعیت خود را با دستگاه دیگری بهاشتراک بگذارید.</string>
|
||||
<string name="successfully_sent_and_updated">با موفقیت ارسال و بهروز شد</string>
|
||||
<string name="waiting_for_response_from_telegram">در انتظار پاسخ از تلگرام</string>
|
||||
<string name="searching_for_gps">در حال موقعیتیابی…</string>
|
||||
<string name="battery_optimization_description">بهینهسازی باتری را برای OsmAnd Telegram غیرفعال کنید تا هنگامی که در پسزمینه کار میکند ناگهان بسته نشود.</string>
|
||||
<string name="go_to_settings">برو به تنظیمات</string>
|
||||
<string name="shared_string_later">بعداً</string>
|
||||
<string name="not_sent_yet">هنوز ارسال نشده</string>
|
||||
<string name="not_found_yet">هنوز پیدا نشده</string>
|
||||
<string name="re_send_location">بازفرستی موقعیت</string>
|
||||
<string name="sharing_enabled">اشتراکگذاری: فعال</string>
|
||||
<string name="shared_string_status">وضعیت</string>
|
||||
<string name="shared_string_close">بستن</string>
|
||||
</resources>
|
|
@ -1,30 +1,25 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources><string name="background_work_description">Muda-los axustes de optimización da batería, para poñer a funciona-la ubicación de xeito estábel</string>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources><string name="background_work_description">Muda-los axustes de optimización da batería, para estabilizares a ubicación compartillada.</string>
|
||||
<string name="background_work">Funcionamento no segundo plano</string>
|
||||
<string name="sharing_in_background">Partillar ou compartir no segundo plano</string>
|
||||
<string name="sharing_in_background">Compartillar no segundo plano</string>
|
||||
<string name="go_to_settings">Ir ós axustes</string>
|
||||
<string name="shared_string_later">Máis tarde</string>
|
||||
<string name="not_sent_yet">Aínda non enviado</string>
|
||||
<string name="not_found_yet">Aínda non atopado</string>
|
||||
<string name="re_send_location">Voltar a enviar ubicación</string>
|
||||
<string name="last_sent_location">Derradeira ubicación enviada</string>
|
||||
<string name="last_available_location">Derradeira ubicación dispoñíbel</string>
|
||||
<string name="sharing_status">Estado de emprego partillado ou compartido</string>
|
||||
<string name="sharing_enabled">Partillar ou compartir: Activado</string>
|
||||
<string name="last_available_location">Última ubicación dispoñíbel</string>
|
||||
<string name="sharing_status">Estado do compartillamento</string>
|
||||
<string name="sharing_enabled">Compartillar: Activado</string>
|
||||
<string name="shared_string_status">Estado</string>
|
||||
<string name="no_gps_connection">Sen unha conexión GPS</string>
|
||||
<string name="sharing_success">Enviado e actualizado de xeito correcto</string>
|
||||
<string name="not_possible_to_send_to_chats">Non é posíbel enviar ás parolas:</string>
|
||||
<string name="no_internet_connection">Sen conexión á Internet</string>
|
||||
<string name="no_internet_connection">Sen unha conexión á Internet</string>
|
||||
<string name="shared_string_disable">Desactivar</string>
|
||||
<string name="shared_string_save">Gardar</string>
|
||||
<string name="add_device_descr">Insira o seu ID do dispositivo que pode atopar en https://live.osmand.net/device/ID</string>
|
||||
<string name="device_id">Identificador do dispositivo</string>
|
||||
<string name="add_device">Engadir dispositivo</string>
|
||||
<string name="share_location_as">Partillar ou compartir ubicación coma</string>
|
||||
<string name="live_now_description">Contactos e grupos que partillan ou comparten a súa ubicación con vostede.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Se pecha a sesión no Telegram do OsmAnd, non poderá envia-la súa ubicación nin olla-las localizacións dos seus contactos no mapa do OsmAnd.</string>
|
||||
<string name="logout_from_osmand_telegram">Pechar sesión do Telegram do OsmAnd\?</string>
|
||||
<string name="share_location_as">Compartillar ubicación coma</string>
|
||||
<string name="live_now_description">Contactos e grupos que están a compartilla-la súa ubicación para vostede.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Está na certeza de que desexa desconectarse do Telegram OsmAnd para non poder compartilla-la ubicación ou olla-la ubicación doutros\?</string>
|
||||
<string name="logout_from_osmand_telegram">Pecha-la sesión do Telegram OsmAnd\?</string>
|
||||
<string name="shared_string_name">Nome</string>
|
||||
<string name="by_distance">Pola distancia</string>
|
||||
<string name="by_name">Polo nome</string>
|
||||
|
@ -33,32 +28,163 @@
|
|||
<string name="shared_string_sort_by">Ordenar polo</string>
|
||||
<string name="choose_osmand_desc">Escolle a versión do OsmAnd onde os contactos amosaranse no mapa.</string>
|
||||
<string name="choose_osmand">Escolle a versión do OsmAnd para empregar</string>
|
||||
<string name="disable_all_sharing_desc">Deixarás de partillar ou comparti-la ubicación con tódalas parolas elixidas (%1$d).</string>
|
||||
<string name="disable_all_sharing">Desactiva-lo emprego partillado ou compartido</string>
|
||||
<string name="disable_all_sharing_desc">Desactiva a ubicación compartillada en tódalas conversas elixidas (%1$d).</string>
|
||||
<string name="disable_all_sharing">Desactiva-lo emprego compartillado</string>
|
||||
<string name="turn_off_all">Desactivar todos</string>
|
||||
<string name="shared_string_exit">Saír</string>
|
||||
<string name="time_ago">hai</string>
|
||||
<string name="last_response">Derradeira resposta</string>
|
||||
<string name="last_response">Última resposta</string>
|
||||
<string name="shared_string_group">Grupo</string>
|
||||
<string name="shared_string_close">Pechar</string>
|
||||
<string name="connected_account">Conta conectada</string>
|
||||
<string name="shared_string_account">Conta</string>
|
||||
<string name="in_time">en %1$s</string>
|
||||
<string name="location_history">Historial da localización</string>
|
||||
<string name="location_history">Historial da ubicación</string>
|
||||
<string name="send_my_location">Envia-la miña localización</string>
|
||||
<string name="gps_and_location">GPS e localización</string>
|
||||
<string name="gps_and_location">Ubicación</string>
|
||||
<string name="open_osmand">Abri-lo OsmAnd</string>
|
||||
<string name="shared_string_live">Ao vivo</string>
|
||||
<string name="get_telegram_title">Rexistro no Telegram</string>
|
||||
<string name="shared_string_all">Todo</string>
|
||||
<string name="shared_string_off">Desactivado</string>
|
||||
<string name="do_not_have_telegram">Non tes unha conta do Telegram</string>
|
||||
<string name="enter_phone_number">Insire o número de teléfono móbil</string>
|
||||
<string name="enter_authentication_code">Insire o código de autenticación</string>
|
||||
<string name="shared_string_off">Non</string>
|
||||
<string name="do_not_have_telegram">Non teño unha conta do Telegram</string>
|
||||
<string name="enter_phone_number">Insira o número do teléfono móbil</string>
|
||||
<string name="enter_authentication_code">Insira o código da autentificación</string>
|
||||
<string name="hours_and_minutes_format">%1$d h %2$d min</string>
|
||||
<string name="minutes_format">%1$d min</string>
|
||||
<string name="hours_format">%1$d h</string>
|
||||
<string name="shared_string_install">Instalar</string>
|
||||
<string name="shared_string_share">Partillar ou compartir</string>
|
||||
<string name="shared_string_share">Compartillar</string>
|
||||
<string name="shared_string_back">Voltar</string>
|
||||
</resources>
|
||||
<string name="shared_string_add">Engadir</string>
|
||||
<string name="enter_another_device_name">Escolle un nome que aínda non está a ser empregado</string>
|
||||
<string name="device_added_successfully">%1$s engadido.</string>
|
||||
<string name="shared_string_cancel">Desbotar</string>
|
||||
<string name="nm">nmi</string>
|
||||
<string name="si_kmh">Quilómetros por hora</string>
|
||||
<string name="si_mph">Millas por hora</string>
|
||||
<string name="si_m_s">Metros por segundo</string>
|
||||
<string name="si_min_km">Minutos por quilómetro</string>
|
||||
<string name="si_min_m">Minutos por milla</string>
|
||||
<string name="si_mi_feet">Millas/pés</string>
|
||||
<string name="si_mi_yard">Millas/iardas</string>
|
||||
<string name="si_km_m">Quilómetros/metros</string>
|
||||
<string name="si_nm">Millas náuticas</string>
|
||||
<string name="si_mi_meters">Millas/metros</string>
|
||||
<string name="last_update_from_telegram">Última actualización do Telegram</string>
|
||||
<string name="error_adding_new_device">Non foi posíbel engadi-lo dispositivo</string>
|
||||
<string name="enter_device_name_description">O nome do novo dispositivo (máx. 200 símbolos).</string>
|
||||
<string name="device_name_is_too_long">Nome do dispositivo moi longo</string>
|
||||
<string name="device_name_cannot_be_empty">O nome do dispositivo non pode ficar baleiro</string>
|
||||
<string name="device_name">Nome do dispositivo</string>
|
||||
<string name="shared_string_hide">Agochar</string>
|
||||
<string name="share_location_as_description_second_line">Pode xerar e olla-lo ID do dispositivo no cliente do Telegram empregando o chat bot %1$s. %2$s</string>
|
||||
<string name="share_location_as_description">Se desexa conectar varios dispositivos a unha conta do Telegram, ten que empregar un dispositivo diferente para compartilla-la súa ubicación.</string>
|
||||
<string name="last_updated_location">Última ubicación actualizada:</string>
|
||||
<string name="successfully_sent_and_updated">Enviado e actualizado de xeito correcto</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Non é posíbel enviar ás converas do Telegram:</string>
|
||||
<string name="waiting_for_response_from_telegram">Estase a agarda-la resposta do Telegram</string>
|
||||
<string name="sending_location_messages">Ubicación do envío</string>
|
||||
<string name="initializing">Estase a iniciar</string>
|
||||
<string name="searching_for_gps">Estase a posicionar…</string>
|
||||
<string name="connecting_to_the_internet">Estase a conectar á Internet</string>
|
||||
<string name="battery_optimization_description">Desactiva-la optimización da batería para o OsmAnd Telegram de xeito que non se desconecte de xeito súbito cando esté no segundo plano.</string>
|
||||
<string name="logout_no_internet_msg">Conéctese á Internet para pecha-la sesión no Telegram de xeito correcto.</string>
|
||||
<string name="disconnect_from_telegram_desc">Para revoga-lo acceso á ubicación compartillada. Abra o Telegram, vaia cara ós «Axustes → Privacidade e Seguranza → Sesións» e peche a sesión do OsmAnd Telegram.</string>
|
||||
<string name="disconnect_from_telegram">De que xeito desactiva-la «Ubicación compartillada do OsmAnd» dende o Telegram</string>
|
||||
<string name="logout_help_desc">De que xeito desactiva-la «Ubicación compartillada do OsmAnd» dende o Telegram</string>
|
||||
<string name="osmand_connect_desc">Escolla a versión do OsmAnd na cal o «OsmAnd Telegram» empregará para amosa-las ubicacións.</string>
|
||||
<string name="osmand_connect">Conecta-lo OsmAnd</string>
|
||||
<string name="location_history_desc">Agocha-los contactos que non se moveron nun tempo determinado.</string>
|
||||
<string name="stale_location_desc">A última vez que un contacto se moveu.</string>
|
||||
<string name="stale_location">Sen movemento</string>
|
||||
<string name="send_my_location_desc">Fixar intre mínimo para compartilla-la ubicación.</string>
|
||||
<string name="sharing_time">Hora compartillada</string>
|
||||
<string name="expire_at">Remata en</string>
|
||||
<string name="stop_sharing_all">O compartillamento fica activado (desactivar)</string>
|
||||
<string name="turn_off_location_sharing">Desactiva-la ubicación compartillada</string>
|
||||
<string name="shared_string_bot">Bot</string>
|
||||
<string name="get_telegram_account_first">Precisa dunha conta no Telegram para emprega-la ubicación compartillada.</string>
|
||||
<string name="get_telegram_description_continue">Instale o Telegram e cree unha conta.</string>
|
||||
<string name="get_telegram_after_creating_account">Despois poderá empregar esta aplicación.</string>
|
||||
<string name="already_registered_in_telegram">Precisa dunha conta rexistrada no Telegram e dun número de teléfono móbil</string>
|
||||
<string name="set_visible_time_for_all">Axusta-la hora visíbel para todos</string>
|
||||
<string name="visible_time_for_all">Hora visíbel para todos</string>
|
||||
<string name="set_time_description">Axusta-la hora na que os contactos e grupos marcados ollarán a ubicación en tempo real.</string>
|
||||
<string name="set_time">Fixar hora</string>
|
||||
<string name="location_sharing_description">Escolla os contactos e grupos cos que desexa compartilla-la súa ubicación.</string>
|
||||
<string name="my_location_search_hint">Procurar: Grupo ou contacto</string>
|
||||
<string name="start_location_sharing">Compartillar ubicación</string>
|
||||
<string name="show_on_map">Amosar no mapa</string>
|
||||
<string name="app_name">OsmAnd Telegram</string>
|
||||
<string name="phone_number_title">Número do teléfono móbil</string>
|
||||
<string name="phone_number_descr">Número do teléfono móbil no formato internacional</string>
|
||||
<string name="shared_string_password">Contrasinal</string>
|
||||
<string name="enter_code">Inserir código</string>
|
||||
<string name="authentication_code">Código da autentificación</string>
|
||||
<string name="authentication_code_descr">O Telegram enviou un código para que o OsmAnd inicie sesión na súa conta.</string>
|
||||
<string name="enter_password">Inserir contrasinal</string>
|
||||
<string name="password_descr">Contrasinal do Telegram</string>
|
||||
<string name="shared_string_login">Inicia-la sesión</string>
|
||||
<string name="shared_string_logout">Pecha-la sesión</string>
|
||||
<string name="initialization">Estase a iniciar</string>
|
||||
<string name="logging_out">Estase a pecha-la sesión</string>
|
||||
<string name="closing">Estase a pechar</string>
|
||||
<string name="gps_network_not_enabled">Activar «Ubicación»\?</string>
|
||||
<string name="not_logged_in">Non iniciou a sesión</string>
|
||||
<string name="shared_string_continue">Proseguer</string>
|
||||
<string name="shared_string_settings">Axustes</string>
|
||||
<string name="no_location_permission">A aplicación non ten permiso para acceder ós datos da ubicación.</string>
|
||||
<string name="gps_not_available">Activar «Ubicación» nos axustes do sistema</string>
|
||||
<string name="location_service_no_gps_available">Escolla un dos fornecedores da ubicación para compartilla-la súa ubicación.</string>
|
||||
<string name="osmand_service">Modo no segundo plano</string>
|
||||
<string name="osmand_service_descr">O OsmAnd Telegram execútase no modo en segundo plano ca pantalla apagada.</string>
|
||||
<string name="shared_string_distance">Distancia</string>
|
||||
<string name="share_location">Compartillar ubicación</string>
|
||||
<string name="sharing_location">Estase a compartilla-la ubicación</string>
|
||||
<string name="process_service">Servizo do OsmAnd Telegram</string>
|
||||
<string name="osmand_logo">Logotipo do OsmAnd</string>
|
||||
<string name="install_osmand_dialog_message">Precísase instalar primeiro a versión de balde ou de pagamento do OsmAnd</string>
|
||||
<string name="install_osmand">Instala-lo OsmAnd</string>
|
||||
<string name="show_users_on_map">Amosar usuarios no mapa</string>
|
||||
<string name="active_chats">Conversas activas</string>
|
||||
<string name="shared_string_authorization">Autorización</string>
|
||||
<string name="shared_string_authorization_descr">Insira o número de teléfono móbil do Telegram no formato internacional</string>
|
||||
<string name="shared_string_welcome">Benvido</string>
|
||||
|
||||
<string name="yard">id</string>
|
||||
<string name="foot">pés</string>
|
||||
<string name="mile">mi</string>
|
||||
<string name="km">km</string>
|
||||
<string name="m">m</string>
|
||||
<string name="min_mile">min/mi</string>
|
||||
<string name="min_km">min/km</string>
|
||||
<string name="nm_h">nmi/h</string>
|
||||
<string name="m_s">m/seg</string>
|
||||
<string name="km_h">km/h</string>
|
||||
<string name="mile_per_hour">mi/h</string>
|
||||
<string name="si_nm_h">Millas náuticas por hora (nós)</string>
|
||||
<string name="shared_string_hour_short">h</string>
|
||||
<string name="shared_string_minute_short">min</string>
|
||||
<string name="shared_string_second_short">seg</string>
|
||||
<string name="welcome_descr">A <b>Ubicación compartillada do OsmAnd</b> (en inglés, «OsmAnd Location Sharing») permite compartilla-la súa ubicación e olla-las ubicacións de outras persoas no OsmAnd.<br/><br/>A aplicación execútase sobre a base da API do Telegram. Para empregar esta aplicación ten que ter unha conta do Telegram.</string>
|
||||
<string name="my_location">A miña ubicación</string>
|
||||
<string name="live_now">Ao vivo agora</string>
|
||||
|
||||
|
||||
<string name="send_location_as">Enviar ubicación coma</string>
|
||||
<string name="send_location_as_descr">Escolla de que xeito se verán as mensaxes ca súa ubicación.</string>
|
||||
<string name="shared_string_map">Mapa</string>
|
||||
<string name="shared_string_text">Texto</string>
|
||||
<string name="map_and_text">Mapa e texto</string>
|
||||
<string name="monitoring_is_enabled">O monitoramento está activado</string>
|
||||
<string name="monitoring_is_disabled">O monitoramento está desactivado</string>
|
||||
<string name="time_on_the_move">tempo en movemento</string>
|
||||
<string name="average_altitude">Altitude media</string>
|
||||
<string name="average_speed">Velocidade media</string>
|
||||
<string name="open_in_osmand">Abrir no OsmAnd</string>
|
||||
<string name="end_date">Data de finalización</string>
|
||||
<string name="start_date">Data de inicio</string>
|
||||
<string name="timeline_description">Activar o monitoramento para recompilar datos de movemento no segundo plano.</string>
|
||||
<string name="timeline">Liña do tempo</string>
|
||||
</resources>
|
192
OsmAnd-telegram/res/values-he/strings.xml
Normal file
|
@ -0,0 +1,192 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources><string name="last_update_from_telegram">עדכון אחרון מטלגרם</string>
|
||||
<string name="enter_another_device_name">נא לבחור שם שלא השתמשת בו עדיין</string>
|
||||
<string name="device_added_successfully">%1$s נוסף.</string>
|
||||
<string name="shared_string_add">הוספה</string>
|
||||
<string name="error_adding_new_device">לא ניתן להוסיף מכשיר חדש</string>
|
||||
<string name="enter_device_name_description">נא לתת שם באורך של עד 200 תווים למכשיר החדש שלך.</string>
|
||||
<string name="device_name_is_too_long">שם המכשיר ארוך מדי</string>
|
||||
<string name="device_name_cannot_be_empty">שם המכשיר לא יכול להישאר ריק</string>
|
||||
<string name="device_name">שם המכשיר</string>
|
||||
<string name="shared_string_hide">הסתרה</string>
|
||||
<string name="share_location_as_description_second_line">ניתן ליצור ולצפות במזהה ההתקן בלקוח הטלגרם הזה באמצעות רובוט ההתכתבות %1$s. %2$s</string>
|
||||
<string name="share_location_as_description">אם ברצונך לחבר מגוון מכשירים לחשבון טלגרם אחד, עליך להשתמש במכשיר אחר כדי לשתף את המיקום שלך.</string>
|
||||
<string name="last_updated_location">המיקום האחרון שעודכן:</string>
|
||||
<string name="successfully_sent_and_updated">נשלח ועודכן בהצלחה</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">אין אפשרות לשלוח להתכתבויות בטלגרם:</string>
|
||||
<string name="send_location_as">שליחת מיקום בתור</string>
|
||||
<string name="send_location_as_descr">נא לבחור כיצד הודעות עם המיקום שלך תיראנה.</string>
|
||||
<string name="shared_string_map">מפה</string>
|
||||
<string name="shared_string_text">טקסט</string>
|
||||
<string name="map_and_text">מפה וטקסט</string>
|
||||
<string name="waiting_for_response_from_telegram">בהמתנה לתגובה מטלגרם</string>
|
||||
<string name="sending_location_messages">המיקום נשלח</string>
|
||||
<string name="initializing">מופעל</string>
|
||||
<string name="searching_for_gps">מתבצע איתור המיקום…</string>
|
||||
<string name="connecting_to_the_internet">מתבצעת התחברות לאינטרנט</string>
|
||||
<string name="background_work_description">ניתן לשנות הגדרות מיטוב סוללה כדי לייצב את שיתוף המיקום.</string>
|
||||
<string name="background_work">עבודת רקע</string>
|
||||
<string name="sharing_in_background">מתבצע שיתוף ברקע</string>
|
||||
<string name="go_to_settings">מעבר להגדרות</string>
|
||||
<string name="shared_string_later">אחר כך</string>
|
||||
<string name="not_sent_yet">לא נשלח עדיין</string>
|
||||
<string name="not_found_yet">לא נמצא עדיין</string>
|
||||
<string name="re_send_location">שליחת המיקום מחדש</string>
|
||||
<string name="last_available_location">המיקום האחרון הזמין</string>
|
||||
<string name="sharing_status">מצב שיתוף</string>
|
||||
<string name="sharing_enabled">שיתוף: פעיל</string>
|
||||
<string name="shared_string_status">מצב</string>
|
||||
<string name="no_gps_connection">אין חיבור ל־GPS</string>
|
||||
<string name="no_internet_connection">אין חיבור לאינטרנט</string>
|
||||
<string name="shared_string_disable">השבתה</string>
|
||||
<string name="shared_string_save">שמירה</string>
|
||||
<string name="add_device">הוספת מכשיר</string>
|
||||
<string name="share_location_as">שיתוף מיקום בתור</string>
|
||||
<string name="live_now_description">אנשי קשר וקבוצות שמשתפים אתך מיקום.</string>
|
||||
<string name="battery_optimization_description">כיבוי מיטוב סוללה עבור טלגרם OsmAnd כדי שהשירות לא יכבה ברקע.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">לצאת מטלגרם OsmAnd כדי לכבות את האפשרות לשתף מיקום או לצפות במיקום של אחרים\?</string>
|
||||
<string name="logout_from_osmand_telegram">לצאת מטלגרם OsmAnd\?</string>
|
||||
<string name="shared_string_name">שם</string>
|
||||
<string name="by_distance">לפי מרחק</string>
|
||||
<string name="by_name">לפי שם</string>
|
||||
<string name="by_group">לפי קבוצה</string>
|
||||
<string name="shared_string_sort">מיון</string>
|
||||
<string name="shared_string_sort_by">מיון לפי</string>
|
||||
<string name="shared_string_exit">יציאה</string>
|
||||
<string name="last_response">תגובה אחרונה</string>
|
||||
<string name="shared_string_group">קבוצה</string>
|
||||
<string name="logout_no_internet_msg">יש להתחבר לאינטרנט כדי לצאת מטלגרם כראוי.</string>
|
||||
<string name="shared_string_close">סגירה</string>
|
||||
<string name="choose_osmand_desc">נא לבחור גרסת OsmAnd שבה אנשי קשר יופיעו על המסך.</string>
|
||||
<string name="choose_osmand">נא לבחור גרסת OsmAnd לשימוש</string>
|
||||
<string name="disable_all_sharing_desc">כיבוי שיתוף מיקום לכל ההתכתבויות הנבחרות (%1$d).</string>
|
||||
<string name="disable_all_sharing">השבתת כל השיתופים</string>
|
||||
<string name="turn_off_all">לכבות הכול</string>
|
||||
<string name="shared_string_account">חשבון</string>
|
||||
<string name="monitoring_is_enabled">הניטור פעיל</string>
|
||||
<string name="monitoring_is_disabled">הניטור מושבת</string>
|
||||
<string name="time_on_the_move">זמן בתנועה</string>
|
||||
<string name="average_altitude">גובה ממוצע</string>
|
||||
<string name="average_speed">מהירות ממוצעת</string>
|
||||
<string name="open_in_osmand">פתיחה ב־OsmAnd</string>
|
||||
<string name="end_date">מועד סיום</string>
|
||||
<string name="start_date">מועד התחלה</string>
|
||||
<string name="timeline_description">יש להפעיל ניטור כדי לאסוף נתוני תנועה ברקע.</string>
|
||||
<string name="disconnect_from_telegram_desc">כדי לשלול גישה לשיתוף המיקום. יש לפתוח את טלגרם, לגשת להגדרות ← פרטיות ← הפעלות ולסגור את הפעלת הטלגרם של OsmAnd.</string>
|
||||
<string name="disconnect_from_telegram">איך לכבות את שיתוף המיקום של OsmAnd מטלגרם</string>
|
||||
<string name="logout_help_desc">איך לכבות את שיתוף המיקום של OsmAnd מטלגרם</string>
|
||||
<string name="connected_account">חשבון מחובר</string>
|
||||
<string name="in_time">בעוד %1$s</string>
|
||||
<string name="osmand_connect_desc">נא לבחור את גרסת ה־OsmAnd בה יעשה שימוש OsmAnd טלגרם לטובת הצגת מיקומים.</string>
|
||||
<string name="location_history_desc">להסתיר אנשי קשר שלא זזו במשך זה מסוים.</string>
|
||||
<string name="location_history">היסטוריית מיקום</string>
|
||||
<string name="stale_location_desc">הפעם האחרונה שאיש קשר זז.</string>
|
||||
<string name="stale_location">אין תזוזה</string>
|
||||
<string name="send_my_location">שליחת המיקום שלי</string>
|
||||
<string name="gps_and_location">מיקום</string>
|
||||
<string name="sharing_time">זמן השיתוף</string>
|
||||
<string name="expire_at">תפוגה</string>
|
||||
<string name="stop_sharing_all">השיתוף פעיל (כיבוי)</string>
|
||||
<string name="turn_off_location_sharing">כיבוי שיתוף מיקום</string>
|
||||
<string name="open_osmand">פתיחת OsmAnd</string>
|
||||
<string name="shared_string_live">חי</string>
|
||||
<string name="shared_string_bot">רובוט</string>
|
||||
<string name="get_telegram_title">הרשמה בטלגרם</string>
|
||||
<string name="get_telegram_account_first">כדי להשתמש בשיתוף מיקום צריך חשבון בטלגרם.</string>
|
||||
<string name="get_telegram_description_continue">נא להתקין טלגרם ולהגדיר חשבון.</string>
|
||||
<string name="get_telegram_after_creating_account">לאחר מכן תהיה לך אפשרות להשתמש ביישומון הזה.</string>
|
||||
<string name="shared_string_all">הכול</string>
|
||||
<string name="shared_string_off">כבוי</string>
|
||||
<string name="already_registered_in_telegram">צריך חשבון רשום בטלגרם ומספר טלפון</string>
|
||||
<string name="do_not_have_telegram">אין לי חשבון בטלגרם</string>
|
||||
<string name="enter_phone_number">נא להקליד מספר טלפון</string>
|
||||
<string name="enter_authentication_code">נא להקליד קוד אימות</string>
|
||||
<string name="set_visible_time_for_all">הגדרת זמן חשיפה לכולם</string>
|
||||
<string name="hours_and_minutes_format">%1$d שע׳ %2$d דק׳</string>
|
||||
<string name="minutes_format">%1$d דק׳</string>
|
||||
<string name="hours_format">%1$d שע׳</string>
|
||||
<string name="shared_string_install">התקנה</string>
|
||||
<string name="shared_string_share">שיתוף</string>
|
||||
<string name="shared_string_back">חזרה</string>
|
||||
<string name="visible_time_for_all">זמן חשיפה לכולם</string>
|
||||
<string name="set_time_description">נא להגדיר את משך הזמן שבו הקבוצות ואנשי הקשר הנבחרים שלך יראו את המיקום שלך בזמן אמת.</string>
|
||||
<string name="set_time">הגדרת זמן</string>
|
||||
<string name="location_sharing_description">נא לבחור את אנשי הקשר והקבוצות עמם ברצונך לשתף את מיקומך.</string>
|
||||
<string name="my_location_search_hint">חיפוש: קבוצה או איש קשר</string>
|
||||
<string name="start_location_sharing">שיתוף מיקום</string>
|
||||
<string name="show_on_map">הצגה במפה</string>
|
||||
<string name="app_name">OsmAnd טלגרם</string>
|
||||
<string name="phone_number_title">מספר טלפון</string>
|
||||
<string name="phone_number_descr">מספר טלפון בתצורה בינלאומית</string>
|
||||
<string name="shared_string_password">ססמה</string>
|
||||
<string name="enter_code">נא להכניס קוד</string>
|
||||
<string name="authentication_code">קוד אימות</string>
|
||||
<string name="authentication_code_descr">נשלח אליך קוד מטלגרם עבור OsmAnd לטובת כניסה לחשבון שלך.</string>
|
||||
<string name="enter_password">נא להקליד ססמה</string>
|
||||
<string name="password_descr">ססמת טלגרם</string>
|
||||
<string name="shared_string_login">כניסה</string>
|
||||
<string name="shared_string_logout">יציאה</string>
|
||||
<string name="initialization">התחלה</string>
|
||||
<string name="logging_out">מתבצעת יציאה</string>
|
||||
<string name="closing">מתבצעת סגירה</string>
|
||||
<string name="gps_network_not_enabled">להפעיל „מיקום”\?</string>
|
||||
<string name="not_logged_in">לא נכנסת</string>
|
||||
<string name="shared_string_continue">המשך</string>
|
||||
<string name="shared_string_cancel">ביטול</string>
|
||||
<string name="shared_string_settings">הגדרות</string>
|
||||
<string name="no_location_permission">ליישומון חסרה הרשאה לגישה לנתוני מיקום.</string>
|
||||
<string name="gps_not_available">נא להפעיל את „מיקום” בהגדרות המערכת</string>
|
||||
<string name="location_service_no_gps_available">נא לבחור את אחד מספקי המיקום כדי לשתף את המיקום שלך.</string>
|
||||
<string name="osmand_service">מצב רקע</string>
|
||||
<string name="osmand_service_descr">OsmAnd טלגרם פועל ברקע בזמן שהמסך כבוי.</string>
|
||||
<string name="shared_string_distance">מרחק</string>
|
||||
<string name="share_location">שיתוף מיקום</string>
|
||||
<string name="sharing_location">המיקום משותף</string>
|
||||
<string name="process_service">שירות OsmAnd טלגרם</string>
|
||||
<string name="osmand_logo">הלוגו של OsmAnd</string>
|
||||
<string name="install_osmand_dialog_message">עליך להתקין את הגרסה החופשית או את הגרסה בתשלום של OsmAnd תחילה</string>
|
||||
<string name="install_osmand">התקנת OsmAnd</string>
|
||||
<string name="show_users_on_map">הצגת משתמשים במפה</string>
|
||||
<string name="active_chats">התכתבויות פעילות</string>
|
||||
<string name="shared_string_authorization">אימות</string>
|
||||
<string name="shared_string_authorization_descr">נא להקליד את מספר הטלפון שלך בטלגרם בתצורה בינלאומית</string>
|
||||
<string name="shared_string_welcome">ברוך בואך</string>
|
||||
<string name="yard">יארד</string>
|
||||
<string name="foot">רגל</string>
|
||||
<string name="mile">מייל</string>
|
||||
<string name="km">ק״מ</string>
|
||||
<string name="m">מ׳</string>
|
||||
<string name="nm">מייל ימי</string>
|
||||
<string name="min_mile">דק׳/מ׳</string>
|
||||
<string name="min_km">דק׳/ק״מ</string>
|
||||
<string name="nm_h">קשר</string>
|
||||
<string name="m_s">מ/שנ׳</string>
|
||||
<string name="km_h">קמ״ש</string>
|
||||
<string name="mile_per_hour">מייל לשעה</string>
|
||||
<string name="si_kmh">קילומטרים לשעה</string>
|
||||
<string name="si_mph">מיילים לשעה</string>
|
||||
<string name="si_m_s">מטרים לשנייה</string>
|
||||
<string name="si_min_km">דקות לקילומטר</string>
|
||||
<string name="si_min_m">דקות למייל</string>
|
||||
<string name="si_nm_h">מייל ימי לשעה (קשר)</string>
|
||||
<string name="si_mi_feet">מיילים/רגל</string>
|
||||
<string name="si_mi_yard">מיילים/יארדים</string>
|
||||
<string name="si_km_m">קילומטרים/מטרים</string>
|
||||
<string name="si_nm">מיילים ימיים</string>
|
||||
<string name="si_mi_meters">מיילים/מטרים</string>
|
||||
<string name="shared_string_hour_short">שע</string>
|
||||
<string name="shared_string_minute_short">דק׳</string>
|
||||
<string name="shared_string_second_short">שנ׳</string>
|
||||
<string name="my_location">המיקום שלי</string>
|
||||
<string name="timeline">ציר זמן</string>
|
||||
<string name="send_my_location_desc">הגדרת טווח הזמן המזערי לשיתוף מיקום.</string>
|
||||
<string name="welcome_descr"><b>שיתוף המקום דרךOsmAnd</b> מאפשר לך לשתף את המיקום ולראות את מיקומם של אחרים ב־OsmAnd.<br/><br/>היישומון משתמש ב־API ודורש חשבון טלגרם.</string>
|
||||
<string name="live_now">חי כעת</string>
|
||||
<string name="gps_points_in_buffer">נשלחו (%1$d ממתינות)</string>
|
||||
<string name="points_size">%1$d נקודות</string>
|
||||
<string name="shared_string_date">תאריך</string>
|
||||
<string name="shared_string_collected">נאספו</string>
|
||||
<string name="gps_points">נקודות GPS</string>
|
||||
<string name="shared_string_sent">נשלחו</string>
|
||||
<string name="osmand_connect">OsmAnd connect</string>
|
||||
</resources>
|
190
OsmAnd-telegram/res/values-it/strings.xml
Normal file
|
@ -0,0 +1,190 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources><string name="last_update_from_telegram">Ultimo aggiornamento da Telegram</string>
|
||||
<string name="enter_another_device_name">Scegli un nome che non hai ancora usato</string>
|
||||
<string name="device_added_successfully">%1$s aggiunto.</string>
|
||||
<string name="shared_string_add">Aggiungi</string>
|
||||
<string name="error_adding_new_device">Impossibile aggiungere il nuovo dispositivo</string>
|
||||
<string name="enter_device_name_description">Dai un nome di non più di 200 caratteri al tuo dispositivo.</string>
|
||||
<string name="device_name_is_too_long">Nome del dispositivo troppo lungo</string>
|
||||
<string name="device_name_cannot_be_empty">Il nome del dispositivo non può essere vuoto</string>
|
||||
<string name="device_name">Nome del dispositivo</string>
|
||||
<string name="shared_string_hide">Nascondi</string>
|
||||
<string name="share_location_as_description_second_line">Puoi creare e visualizzare l\'ID del dispositivo nel client Telegram usando il chat bot %1$s. %2$s</string>
|
||||
<string name="share_location_as_description">Se vuoi connettere più dispositivi a un account telegram, devi usare un dispositivo diverso per condividere la tua posizione.</string>
|
||||
<string name="last_updated_location">Ultimo aggiornamento della posizione:</string>
|
||||
<string name="successfully_sent_and_updated">Inviato e caricato con successo</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Impossibile da inviare alle chat Telegram:</string>
|
||||
<string name="waiting_for_response_from_telegram">Aspettando una risposta da Telegram</string>
|
||||
<string name="sending_location_messages">Inviando la posizione</string>
|
||||
<string name="initializing">Avvio</string>
|
||||
<string name="searching_for_gps">Localizzazione…</string>
|
||||
<string name="connecting_to_the_internet">Collegamento a Internet</string>
|
||||
<string name="background_work_description">Cambia le impostazioni di ottimizzazione della batteria per stabilizzare la condivisione della posizione.</string>
|
||||
<string name="background_work">Funzionamento in secondo piano</string>
|
||||
<string name="battery_optimization_description">Disattiva l\'ottimizzazione della batteria per OsmAnd Telegram in modo che non venga chiuso improvvisamente quando è in secondo piano.</string>
|
||||
<string name="sharing_in_background">Condivisione in secondo piano</string>
|
||||
<string name="go_to_settings">Vai alle impostazioni</string>
|
||||
<string name="shared_string_later">Più tardi</string>
|
||||
<string name="not_sent_yet">Non ancora inviato</string>
|
||||
<string name="not_found_yet">Non ancora trovato</string>
|
||||
<string name="re_send_location">Invia nuovamente la posizione</string>
|
||||
<string name="last_available_location">Ultima posizione disponibile</string>
|
||||
<string name="sharing_status">Condivisione dello stato</string>
|
||||
<string name="sharing_enabled">Condivisione: Attivata</string>
|
||||
<string name="shared_string_status">Stato</string>
|
||||
<string name="no_gps_connection">Nessuna connessione GPS</string>
|
||||
<string name="no_internet_connection">Nessuna connessione ad Internet</string>
|
||||
<string name="shared_string_disable">Disattiva</string>
|
||||
<string name="shared_string_save">Salva</string>
|
||||
<string name="add_device">Aggiungi dispositivo</string>
|
||||
<string name="share_location_as">Condividi posizione come</string>
|
||||
<string name="live_now_description">Contatti e gruppi che condividono la posizione con te.</string>
|
||||
<string name="logout_from_osmand_telegram">Disconnettersi da OsmAnd Telegram\?</string>
|
||||
<string name="shared_string_name">Nome</string>
|
||||
<string name="by_distance">Per distanza</string>
|
||||
<string name="by_name">Per nome</string>
|
||||
<string name="by_group">Per gruppo</string>
|
||||
<string name="shared_string_sort">Ordina</string>
|
||||
<string name="shared_string_sort_by">Ordina per</string>
|
||||
<string name="choose_osmand_desc">Seleziona la versione di OsmAnd in cui i contatti saranno mostrati sulla mappa.</string>
|
||||
<string name="choose_osmand">Seleziona la versione di OsmAnd da usare</string>
|
||||
<string name="disable_all_sharing_desc">Disattiva la condivisione della posizione per tutte le conversazioni selezionate (%1$d).</string>
|
||||
<string name="disable_all_sharing">Disattiva tutte le condivisioni</string>
|
||||
<string name="turn_off_all">Disattiva tutto</string>
|
||||
<string name="shared_string_exit">Esci</string>
|
||||
<string name="time_ago">fa</string>
|
||||
<string name="last_response">Ultima risposta</string>
|
||||
<string name="shared_string_group">Gruppo</string>
|
||||
<string name="logout_no_internet_msg">Connettiti a Internet per uscire correttamente dall\'account di Telegram.</string>
|
||||
<string name="shared_string_close">Chiudi</string>
|
||||
<string name="disconnect_from_telegram_desc">Per revocare l\'accesso alla condivisione della posizione, apri Telegram, vai a Impostazioni → Privacy e Sicurezza → Sessioni, e termina la sessione di OsmAnd Telegram.</string>
|
||||
<string name="disconnect_from_telegram">Come disattivare la condivisione della posizione di OsmAnd da Telegram</string>
|
||||
<string name="logout_help_desc">Come disattivare la condivisione della posizione di OsmAnd da Telegram</string>
|
||||
<string name="connected_account">Account connesso</string>
|
||||
<string name="shared_string_account">Account</string>
|
||||
<string name="in_time">in %1$s</string>
|
||||
<string name="osmand_connect_desc">Scegli la versione di OsmAnd che OsmAnd Telegram userà per mostrare le posizioni.</string>
|
||||
<string name="location_history_desc">Nascondi i contatti che non si sono spostati per un certo periodo di tempo.</string>
|
||||
<string name="location_history">Cronologia delle posizioni</string>
|
||||
<string name="stale_location_desc">L\'ultima volta in cui un contatto si è spostato.</string>
|
||||
<string name="stale_location">Non in movimento</string>
|
||||
<string name="send_my_location_desc">Imposta l\'intervallo di tempo minimo per condividere la posizione.</string>
|
||||
<string name="send_my_location">Invia la mia posizione</string>
|
||||
<string name="gps_and_location">Posizione</string>
|
||||
<string name="sharing_time">Tempo di condivisione</string>
|
||||
<string name="expire_at">Scade</string>
|
||||
<string name="stop_sharing_all">La condivisione è attivata (disattiva)</string>
|
||||
<string name="turn_off_location_sharing">Disattiva la condivisione della posizione</string>
|
||||
<string name="open_osmand">Apri OsmAnd</string>
|
||||
<string name="shared_string_live">In diretta</string>
|
||||
<string name="shared_string_bot">Bot</string>
|
||||
<string name="get_telegram_title">Registrazione a Telegram</string>
|
||||
<string name="get_telegram_account_first">Hai bisogno di un account Telegram per usare la condivisione della posizione.</string>
|
||||
<string name="get_telegram_description_continue">Si prega di installare Telegram e creare un account.</string>
|
||||
<string name="get_telegram_after_creating_account">Allora potrai usare quest\'applicazione.</string>
|
||||
<string name="shared_string_all">Tutti</string>
|
||||
<string name="shared_string_off">Spento</string>
|
||||
<string name="already_registered_in_telegram">Hai bisogno di un account di Telegram e un numero di telefono</string>
|
||||
<string name="do_not_have_telegram">Non ho un account di Telegram</string>
|
||||
<string name="enter_phone_number">Inserisci un numero di telefono</string>
|
||||
<string name="enter_authentication_code">Inserisci il codice di autenticazione</string>
|
||||
<string name="hours_and_minutes_format">%1$d h %2$d m</string>
|
||||
<string name="minutes_format">%1$d m</string>
|
||||
<string name="hours_format">%1$d h</string>
|
||||
<string name="shared_string_install">Installa</string>
|
||||
<string name="shared_string_share">Condividi</string>
|
||||
<string name="shared_string_back">Indietro</string>
|
||||
<string name="set_time_description">Imposta il tempo in cui i contatti e gruppi che hai selezionato vedranno la tua posizione in tempo reale.</string>
|
||||
<string name="set_time">Imposta il tempo</string>
|
||||
<string name="location_sharing_description">Seleziona i contatti e i gruppi con cui vuoi condividere la tua posizione.</string>
|
||||
<string name="my_location_search_hint">Cerca: gruppo o contatto</string>
|
||||
<string name="start_location_sharing">Condividi la posizione</string>
|
||||
<string name="show_on_map">Mostra sulla mappa</string>
|
||||
<string name="app_name">OsmAnd Telegram</string>
|
||||
<string name="phone_number_title">Numero di telefono</string>
|
||||
<string name="phone_number_descr">Numero di telefono nel formato internazionale</string>
|
||||
<string name="shared_string_password">Password</string>
|
||||
<string name="enter_code">Inserisci il codice</string>
|
||||
<string name="authentication_code">Codice di autenticazione</string>
|
||||
<string name="authentication_code_descr">Telegram ti ha inviato un codice per OsmAnd per entrare nel tuo account.</string>
|
||||
<string name="enter_password">Inserisci la password</string>
|
||||
<string name="password_descr">Password di Telegram</string>
|
||||
<string name="shared_string_login">Entra</string>
|
||||
<string name="shared_string_logout">Esci</string>
|
||||
<string name="initialization">Avvio</string>
|
||||
<string name="logging_out">Disconnessione</string>
|
||||
<string name="closing">Chiusura</string>
|
||||
<string name="gps_network_not_enabled">Attivare la \"posizione\"\?</string>
|
||||
<string name="not_logged_in">Non sei connesso</string>
|
||||
<string name="shared_string_continue">Continua</string>
|
||||
<string name="shared_string_cancel">Annulla</string>
|
||||
<string name="shared_string_settings">Impostazioni</string>
|
||||
<string name="no_location_permission">L\'applicazione non ha i permessi per accedere ai dati sulla posizione.</string>
|
||||
<string name="gps_not_available">Si prega di attivare la \"posizione\" nelle impostazioni di sistema</string>
|
||||
<string name="location_service_no_gps_available">Seleziona uno dei provider della posizione per condividerla.</string>
|
||||
<string name="osmand_service">In secondo piano</string>
|
||||
<string name="osmand_service_descr">OsmAnd Telegram funziona in secondo piano quando lo schermo è spento.</string>
|
||||
<string name="shared_string_distance">Distanza</string>
|
||||
<string name="share_location">Condividi la posizione</string>
|
||||
<string name="sharing_location">Condivisione della posizione</string>
|
||||
<string name="process_service">Servizio di OsmAnd Telegram</string>
|
||||
<string name="osmand_logo">Logo di OsmAnd</string>
|
||||
<string name="install_osmand_dialog_message">Devi installare prima la versione gratis o a pagamento di OsmAnd</string>
|
||||
<string name="install_osmand">Installa OsmAnd</string>
|
||||
<string name="show_users_on_map">Mostra gli utenti sulla mappa</string>
|
||||
<string name="active_chats">Conversazioni attive</string>
|
||||
<string name="shared_string_authorization">Autorizzazione</string>
|
||||
<string name="shared_string_authorization_descr">Si prega di inserire il numero di telefono di Telegram nel formato internazionale</string>
|
||||
<string name="shared_string_welcome">Benvenuto/a</string>
|
||||
|
||||
<string name="yard">yd</string>
|
||||
<string name="foot">ft</string>
|
||||
<string name="mile">mi</string>
|
||||
<string name="km">km</string>
|
||||
<string name="m">m</string>
|
||||
<string name="nm">nmi</string>
|
||||
<string name="min_mile">min/m</string>
|
||||
<string name="si_kmh">Chilometri all\'ora</string>
|
||||
<string name="si_mph">Miglia all\'ora</string>
|
||||
<string name="si_m_s">Metri al secondo</string>
|
||||
<string name="si_min_km">Minuti al chilometro</string>
|
||||
<string name="si_min_m">Minuti al miglio</string>
|
||||
<string name="si_nm_h">Miglia nautiche all\'ora (nodi)</string>
|
||||
<string name="si_mi_feet">Miglia/piedi</string>
|
||||
<string name="si_mi_yard">Miglia/iarde</string>
|
||||
<string name="si_km_m">Chilometri/metri</string>
|
||||
<string name="si_nm">Miglia nautiche</string>
|
||||
<string name="si_mi_meters">Miglia/metri</string>
|
||||
<string name="shared_string_hour_short">h</string>
|
||||
<string name="shared_string_minute_short">m</string>
|
||||
<string name="shared_string_second_short">s</string>
|
||||
<string name="welcome_descr"><b>OsmAnd Location Sharing</b> ti permette di condividere la tua posizione e di vedere quella di altri in OsmAnd.<br/><br/>L\'applicazione usa le API di Telegram ed è necessario un account di Telegram.</string>
|
||||
<string name="my_location">La mia posizione</string>
|
||||
<string name="live_now">Ora in diretta</string>
|
||||
|
||||
|
||||
<string name="logout_from_osmand_telegram_descr">Sei sicuro di volerti disconnettere da OsmAnd Telegram, cosicché non potrai condividere la posizione o vedere quella di altri\?</string>
|
||||
<string name="osmand_connect">Connessione OsmAnd</string>
|
||||
<string name="set_visible_time_for_all">Imposta un orario visibile a tutti</string>
|
||||
<string name="visible_time_for_all">Orario visibile a tutti</string>
|
||||
<string name="min_km">min/km</string>
|
||||
<string name="nm_h">kn</string>
|
||||
<string name="m_s">m/s</string>
|
||||
<string name="km_h">km/h</string>
|
||||
<string name="mile_per_hour">mi/h</string>
|
||||
<string name="monitoring_is_enabled">Monitoraggio abilitato</string>
|
||||
<string name="monitoring_is_disabled">Monitoraggio disabilitato</string>
|
||||
<string name="time_on_the_move">tempo in movimento</string>
|
||||
<string name="average_altitude">Altitudine media</string>
|
||||
<string name="average_speed">Velocità media</string>
|
||||
<string name="open_in_osmand">Apri in OsmAnd</string>
|
||||
<string name="end_date">Data di fine</string>
|
||||
<string name="start_date">Data d\'inizio</string>
|
||||
<string name="timeline_description">Abilita il monitoraggio per raccogliere i dati degli spostamenti in secondo piano.</string>
|
||||
<string name="send_location_as">Invia la localizzazione come</string>
|
||||
<string name="send_location_as_descr">Scegli l\'aspetto dei messaggi con la tua localizzazione.</string>
|
||||
<string name="shared_string_map">Mappa</string>
|
||||
<string name="shared_string_text">Testo</string>
|
||||
<string name="map_and_text">Mappa e testo</string>
|
||||
<string name="timeline">Cronologia</string>
|
||||
</resources>
|
|
@ -1,33 +1,24 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources><string name="background_work_description">Endre batterioptimiseringsinnstillinger, for stabil plasseringsdeling</string>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources><string name="background_work_description">Endre batterioptimiseringsinnstillinger for mer stabil posisjonsdeling.</string>
|
||||
<string name="background_work">Bakgrunnsarbeid</string>
|
||||
<string name="battery_optimization_description">For stabil deling av din plassering i bakgrunnen, anbefales det å skru av batterioptimalisering for OsmAnd Telegram.
|
||||
\n
|
||||
\nHvis optimaliseringer er påskrudd, kan systemet skru av programmet som kjører i bakgrunnen automatisk (når skjermen er låst/eller programmet er minimert). Dette skjer uten merknad, og opphever kringkasting av plassering.</string>
|
||||
<string name="battery_optimization_description">Skru av batterioptimisering for OsmAnd Telegram slik at det ikke plutselig skrur seg av når det er i bakgrunnen.</string>
|
||||
<string name="sharing_in_background">Deling i bakgrunnen</string>
|
||||
<string name="go_to_settings">Gå til innstillinger</string>
|
||||
<string name="shared_string_later">Senere</string>
|
||||
<string name="not_sent_yet">Ikke sendt enda</string>
|
||||
<string name="not_found_yet">Ikke funnet enda</string>
|
||||
<string name="re_send_location">Send plassering på ny</string>
|
||||
<string name="last_sent_location">Sist sendte plassering</string>
|
||||
<string name="last_available_location">Sist tilgjengelige plassering</string>
|
||||
<string name="re_send_location">Send posisjon på nytt</string>
|
||||
<string name="last_available_location">Sist tilgjengelige posisjon</string>
|
||||
<string name="sharing_status">Delingsstatus</string>
|
||||
<string name="sharing_enabled">Deling: Påslått</string>
|
||||
<string name="shared_string_status">Status</string>
|
||||
<string name="no_gps_connection">Ingen GPS-tilkobling</string>
|
||||
<string name="sharing_success">Sendt og oppdatert</string>
|
||||
<string name="not_possible_to_send_to_chats">Kunne ikke sende sludring:</string>
|
||||
<string name="no_internet_connection">Ingen internettilknytning</string>
|
||||
<string name="shared_string_disable">Skru av</string>
|
||||
<string name="shared_string_save">Lagre</string>
|
||||
<string name="add_device_descr">Skriv inn din enhets-ID fra https://live.osmand.net/device/ID</string>
|
||||
<string name="device_id">Enhets-ID</string>
|
||||
<string name="add_device">Legg til enhet</string>
|
||||
<string name="share_location_as_descr">Dette valget lar deg dele enhetens plassering, eller plassering for egendefinert lagt til via API-enheter.</string>
|
||||
<string name="share_location_as">Del plassering som</string>
|
||||
<string name="live_now_description">Kontakter og grupper som deler sin plassering med deg.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Er du sikker på at du vil logge ut av OsmAnd Telegram\? Etter det, vil du ikke kunne sende din plassering, og se dine kontakters plassering på kartet i OsmAnd.</string>
|
||||
<string name="share_location_as">Del posisjon som</string>
|
||||
<string name="live_now_description">Kontakter og grupper som deler sin posisjon med deg.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Er du sikker på at du vil logge ut av OsmAnd Telegram slik at du ikke kan sende din posisjon, eller se andres\?</string>
|
||||
<string name="logout_from_osmand_telegram">Logg ut av OsmAnd Telegram\?</string>
|
||||
<string name="shared_string_name">Navn</string>
|
||||
<string name="by_distance">Etter distanse</string>
|
||||
|
@ -37,39 +28,38 @@
|
|||
<string name="shared_string_sort_by">Sorter etter</string>
|
||||
<string name="choose_osmand_desc">Velg OsmAnd-versjon der kontaktene skal vises på kartet.</string>
|
||||
<string name="choose_osmand">Velg OsmAnd versjon å bruke</string>
|
||||
<string name="disable_all_sharing_desc">Det vil skru av deling av din plassering til alle valgte sludringer (%1$d).</string>
|
||||
<string name="disable_all_sharing_desc">Det vil skru av posisjonsdeling til alle valgte sludringer (%1$d).</string>
|
||||
<string name="disable_all_sharing">Skru av all deling</string>
|
||||
<string name="turn_off_all">Skru av alle</string>
|
||||
<string name="shared_string_exit">Avslutt</string>
|
||||
<string name="time_ago">siden</string>
|
||||
<string name="last_response">Siste svar</string>
|
||||
<string name="shared_string_group">Gruppe</string>
|
||||
<string name="logout_no_internet_msg">For å logge ut av din Telegram-konto på rett vis, trenger du Internett.</string>
|
||||
<string name="logout_no_internet_msg">Koble til Internett for å logge ut av Telegram ordentlig.</string>
|
||||
<string name="shared_string_close">Lukk</string>
|
||||
<string name="disconnect_from_telegram_desc">For å blokekre Telegram fra din OsmAnd-konto må du åpne innstillingene i Telegram. Under Personvern og sikkerhet - Økter, må du sluttføre OsmAnd Telegram-økta. Etter det, vil OsmAnd Plasseringsdeling ikke lenger ha tilgang til kontoen din, og du vil ikke kunne bruke dette programmet til du logger inn igjen.</string>
|
||||
<string name="disconnect_from_telegram">Hvordan koble fra OsmAnd plasseringsdeling fra Telegram-kontoen</string>
|
||||
<string name="logout_help_desc">Hvordan koble fra OsmAnd plasseringsdeling fra Telegram</string>
|
||||
<string name="disconnect_from_telegram_desc">For å tilbakekalle posisjonsdelingstilgang. Åpne Telegram, gå til Innstillinger - Personvern og sikkerhet - Økter, og sluttfør OsmAnd Telegram-økta.</string>
|
||||
<string name="disconnect_from_telegram">Hvordan koble fra OsmAnd posisjonsdeling fra Telegram</string>
|
||||
<string name="logout_help_desc">Hvordan koble fra OsmAnd posisjonsdeling fra Telegram</string>
|
||||
<string name="connected_account">Tilkoblet konto</string>
|
||||
<string name="shared_string_account">Konto</string>
|
||||
<string name="in_time">i %1$s</string>
|
||||
<string name="osmand_connect_desc">Velg OsmAnd-versjonen OsmAnd Telegram henvender seg til for å vise posisjonen på kartet.</string>
|
||||
<string name="osmand_connect_desc">Velg OsmAnd-versjonen OsmAnd Telegram bruker for å vise posisjoner på kartet.</string>
|
||||
<string name="osmand_connect">OsmAnd connect</string>
|
||||
<string name="location_history_desc">Skjul kontaktene som ikke har oppdatert sin plassering etter et gitt tidsintervall.</string>
|
||||
<string name="location_history">Plasseringshistorikk</string>
|
||||
<string name="location_history">Posisjonshistorikk</string>
|
||||
<string name="stale_location_desc">Siste tidspunkt en kontakt sendte en plasseringsoppdatering.</string>
|
||||
<string name="stale_location">Urørlig plassering</string>
|
||||
<string name="send_my_location_desc">Sett minimumsintervall for plasseringsdeling.</string>
|
||||
<string name="send_my_location">Send min plassering</string>
|
||||
<string name="send_my_location_desc">Sett minimumsintervall for posisjonsdeling.</string>
|
||||
<string name="send_my_location">Send min posisjon</string>
|
||||
<string name="gps_and_location">GPS og plassering</string>
|
||||
<string name="sharing_time">Delingstid</string>
|
||||
<string name="expire_at">Utløper</string>
|
||||
<string name="stop_sharing_all">Deling er påslått (skru av)</string>
|
||||
<string name="turn_off_location_sharing">Skru av plasseringsdeling</string>
|
||||
<string name="turn_off_location_sharing">Skru av posisjonsdeling</string>
|
||||
<string name="open_osmand">Åpne OsmAnd</string>
|
||||
<string name="shared_string_live">Sanntid</string>
|
||||
<string name="shared_string_bot">Bot</string>
|
||||
<string name="get_telegram_title">Registrering i Telegram</string>
|
||||
<string name="get_telegram_account_first">Du trenger en Telegram-konto for å bruke funksjonene i OsmAnd plasseringsdeling.</string>
|
||||
<string name="get_telegram_account_first">Du trenger en Telegram-konto for å bruke funksjonene i OsmAnd posisjonsdeling.</string>
|
||||
<string name="get_telegram_description_continue">Hvis du ønsker å fortsette, installer Telegram fra Google Play og registrer din konto.</string>
|
||||
<string name="get_telegram_after_creating_account">Etter oppretting av konto, kan du bruke dette programmet.</string>
|
||||
<string name="shared_string_all">Alle</string>
|
||||
|
@ -86,11 +76,11 @@
|
|||
<string name="shared_string_share">Del</string>
|
||||
<string name="shared_string_back">Tilbake</string>
|
||||
<string name="visible_time_for_all">Synlig tid for alle</string>
|
||||
<string name="set_time_description">Sett tiden dine valgte kontakter og grupper vil se din plassering i sanntid.</string>
|
||||
<string name="set_time_description">Sett tiden dine valgte kontakter og grupper vil se din posisjon i sanntid.</string>
|
||||
<string name="set_time">Sett tid</string>
|
||||
<string name="location_sharing_description">Velg kontaktene og gruppene du ønsker å dele din plassering med.</string>
|
||||
<string name="location_sharing_description">Velg kontaktene og gruppene du ønsker å dele din posisjon med.</string>
|
||||
<string name="my_location_search_hint">Søk: Gruppe eller kontakt</string>
|
||||
<string name="start_location_sharing">Start plasseringsdeling</string>
|
||||
<string name="start_location_sharing">Del posisjon</string>
|
||||
<string name="show_on_map">Vis på kartet</string>
|
||||
<string name="app_name">OsmAnd Telegram</string>
|
||||
<string name="phone_number_title">Telefonnummer</string>
|
||||
|
@ -98,32 +88,23 @@
|
|||
<string name="shared_string_password">Passord</string>
|
||||
<string name="enter_code">Skriv inn kode</string>
|
||||
<string name="authentication_code">Identitetsbekreftelseskode</string>
|
||||
<string name="authentication_code_descr">Du har blitt tilsendt en kode av Telegram. Den vil bli brukt av OsmAnd for å logge inn på kontoen din.</string>
|
||||
<string name="authentication_code_descr">Telegram har sendt deg en kode slik at OsmAnd kan logge inn på kontoen din.</string>
|
||||
<string name="enter_password">Skriv inn passord</string>
|
||||
<string name="password_descr">Skriv inn passordet for din Telegram-konto for å fullføre identitetsbekreftelse</string>
|
||||
<string name="password_descr">Skriv inn passordet for din Telegram-konto</string>
|
||||
<string name="shared_string_login">Logg inn</string>
|
||||
<string name="shared_string_logout">Logg ut</string>
|
||||
<string name="not_logged_in">Du er ikke innlogget</string>
|
||||
<string name="initialization">Igangsetting</string>
|
||||
<string name="logging_out">Logger ut</string>
|
||||
<string name="closing">Lukker</string>
|
||||
<string name="shared_string_continue">Fortsett</string>
|
||||
<string name="shared_string_cancel">Avbryt</string>
|
||||
<string name="gps_network_not_enabled">Skru på plasseringstjeneste\?</string>
|
||||
<string name="shared_string_settings">Innstillinger</string>
|
||||
<string name="no_location_permission">Programmet mangler tilgang til plasseringsdata.</string>
|
||||
<string name="gps_not_available">Skru på GPS i innstillingene</string>
|
||||
<string name="location_service_no_gps_available">Plasseringsdelingstjenesten krever at en plasseringstilbyder er påslått.</string>
|
||||
<string name="no_location_permission">Programmet mangler tilgang til posisjonsdata.</string>
|
||||
<string name="gps_not_available">Skru på «Posisjon» i systeminnstillingene</string>
|
||||
<string name="location_service_no_gps_available">Velg en av posisjonstilbyderne for å dele din posisjon.</string>
|
||||
<string name="osmand_service">Bakgrunnsmodus</string>
|
||||
<string name="osmand_service_descr">OsmAnd Telegram kjører som nisse med skjermen av.</string>
|
||||
<string name="shared_string_distance">Distanse</string>
|
||||
<string name="share_location">Del plassering</string>
|
||||
<string name="sharing_location">Deler plassering</string>
|
||||
<string name="shared_string_paused">Pauset</string>
|
||||
<string name="shared_string_no_data">Ingen data</string>
|
||||
<string name="shared_string_pause">Pause</string>
|
||||
<string name="shared_string_start">Start</string>
|
||||
<string name="shared_string_stop">Stopp</string>
|
||||
<string name="share_location">Del posisjon</string>
|
||||
<string name="sharing_location">Deler posisjon</string>
|
||||
<string name="process_service">OsmAnd Telegram-tjeneste</string>
|
||||
<string name="osmand_logo">OsmAnd-logo</string>
|
||||
<string name="install_osmand_dialog_message">Du må installere gratis- eller betalt versjon av OsmAnd først</string>
|
||||
|
@ -131,7 +112,7 @@
|
|||
<string name="show_users_on_map">Vis brukere på kartet</string>
|
||||
<string name="active_chats">Aktive sludringer</string>
|
||||
<string name="shared_string_authorization">Identitetsbekreftelse</string>
|
||||
<string name="shared_string_authorization_descr">Skriv inn telefonnummeret for din Telegram-konto i internasjonalt format</string>
|
||||
<string name="shared_string_authorization_descr">Skriv inn ditt Telegram-telefonnummer i internasjonalt format</string>
|
||||
<string name="shared_string_welcome">Velkommen</string>
|
||||
|
||||
<string name="km">km</string>
|
||||
|
@ -143,19 +124,17 @@
|
|||
<string name="shared_string_hour_short">t</string>
|
||||
<string name="shared_string_minute_short">min</string>
|
||||
<string name="shared_string_second_short">sek</string>
|
||||
<string name="plus">+</string>
|
||||
<string name="welcome_descr"><b>OsmAnd plasseringsdeling</b> lar deg dele din plassering og se andres posisjon i OsmAnd.<br/><br/>Programmet belager seg på Telegram-API-et. For å bruke dette programmet må du ha en Telegram-konto.</string>
|
||||
<string name="my_location">Min plassering</string>
|
||||
<string name="live_now">Sender nå</string>
|
||||
<string name="welcome_descr"><b>OsmAnd posisjonsdeling</b> lar deg dele din posisjon og se andres posisjon i OsmAnd.<br/><br/>Programmet belager seg på Telegram-API-et. For å bruke dette programmet må du ha en Telegram-konto.</string>
|
||||
<string name="my_location">Min posisjon</string>
|
||||
|
||||
|
||||
<string name="last_updated_location">Sist oppdaterte plassering:</string>
|
||||
<string name="last_updated_location">Sist oppdaterte posisjon:</string>
|
||||
<string name="successfully_sent_and_updated">Sendt og oppdatert</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Kan ikke sende til Telegram-sludringer:</string>
|
||||
<string name="waiting_for_response_from_telegram">Venter på svar fra Telegram</string>
|
||||
<string name="sending_location_messages">Sender plasseringsmeldinger</string>
|
||||
<string name="sending_location_messages">Sender posisjon</string>
|
||||
<string name="initializing">Starter</string>
|
||||
<string name="searching_for_gps">Søker etter GPS</string>
|
||||
<string name="searching_for_gps">Posisjonerer…</string>
|
||||
<string name="connecting_to_the_internet">Kobler til Internett</string>
|
||||
<string name="yard">yd</string>
|
||||
<string name="foot">fot</string>
|
||||
|
@ -174,4 +153,40 @@
|
|||
<string name="si_km_m">Kilometer/meter</string>
|
||||
<string name="si_nm">Nautiske mil</string>
|
||||
<string name="si_mi_meters">Engelske mil/meter</string>
|
||||
</resources>
|
||||
<string name="enter_another_device_name">Du har allerede en enhet med samme navn, velg noe annet</string>
|
||||
<string name="device_added_successfully">%1$s lagt til.</string>
|
||||
<string name="shared_string_add">Legg til</string>
|
||||
<string name="error_adding_new_device">Kunne ikke legge til ny enhet</string>
|
||||
<string name="enter_device_name_description">Skriv inn et nytt navn for din nye enhet. Maksimal lengde 200 tegn.</string>
|
||||
<string name="device_name_is_too_long">For lang enhetsnavn</string>
|
||||
<string name="device_name_cannot_be_empty">Enhetsnavn må velges</string>
|
||||
<string name="device_name">Enhetsnavn</string>
|
||||
<string name="shared_string_hide">Skjul</string>
|
||||
<string name="share_location_as_description_second_line">Du kan opprette og vise enhets-ID i Telegram-klienten ved bruk av %1$s-sludrebot-en. %2$s</string>
|
||||
<string name="share_location_as_description">Hvis du vil koble flere enheter til én Telegram-konto, må du bruke en annen enhet til å dele din posisjon.</string>
|
||||
<string name="shared_string_save">Lagre</string>
|
||||
<string name="stop_sharing_all">Deling er på (skru av)</string>
|
||||
<string name="initialization">Starter</string>
|
||||
<string name="logging_out">Logger ut</string>
|
||||
<string name="closing">Lukker</string>
|
||||
<string name="gps_network_not_enabled">Skru på \"Posisjon\"\?</string>
|
||||
<string name="live_now">Nå direkte</string>
|
||||
|
||||
|
||||
<string name="last_update_from_telegram">Siste oppdatering fra Telegram</string>
|
||||
<string name="send_location_as">Send plassering som</string>
|
||||
<string name="send_location_as_descr">Velg hvordan meldinger med din plassering skal se ut.</string>
|
||||
<string name="shared_string_map">Kart</string>
|
||||
<string name="shared_string_text">Tekst</string>
|
||||
<string name="map_and_text">Kart og tekst</string>
|
||||
<string name="monitoring_is_enabled">Oppsyn er påskrudd</string>
|
||||
<string name="monitoring_is_disabled">Oppsyn er avskrudd</string>
|
||||
<string name="time_on_the_move">tid i bevegelse</string>
|
||||
<string name="average_altitude">Gjennomsnittlig høyde</string>
|
||||
<string name="average_speed">Gjennomsnittsfart</string>
|
||||
<string name="open_in_osmand">Åpne i OsmAnd</string>
|
||||
<string name="end_date">Sluttdato</string>
|
||||
<string name="start_date">Startdato</string>
|
||||
<string name="timeline_description">Skru på oppsyn for å samle bevegelsesdata i bakgrunnen.</string>
|
||||
<string name="timeline">Tidslinje</string>
|
||||
</resources>
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources><string name="background_work_description">Zmień ustawienia optymalizacji baterii, aby zapewnić stabilną lokalizację</string>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources><string name="background_work_description">Zmień ustawienia optymalizacji baterii, aby zapewnić stabilną lokalizację.</string>
|
||||
<string name="background_work">Praca w tle</string>
|
||||
<string name="battery_optimization_description">Aby stabilnie udostępniać swoją pozycję w tle, zaleca się wyłączenie optymalizacji baterii dla Telegram OsmAnd.
|
||||
\n
|
||||
|
@ -10,25 +10,19 @@
|
|||
<string name="not_sent_yet">Jeszcze nie wysłane</string>
|
||||
<string name="not_found_yet">Jeszcze nie znaleziono</string>
|
||||
<string name="re_send_location">Wyślij ponownie lokalizację</string>
|
||||
<string name="last_sent_location">Ostatnia wysłana lokalizacja</string>
|
||||
<string name="last_available_location">Ostatnia dostępna lokalizacja</string>
|
||||
<string name="sharing_status">Status udostępniania</string>
|
||||
<string name="sharing_enabled">Udostępnianie: Włączone</string>
|
||||
<string name="shared_string_status">Status</string>
|
||||
<string name="no_gps_connection">Brak połączenia GPS</string>
|
||||
<string name="sharing_success">Pomyślnie wysłano i zaktualizowano</string>
|
||||
<string name="not_possible_to_send_to_chats">Nie można wysłać na czat:</string>
|
||||
<string name="no_internet_connection">Brak połączenia z internetem</string>
|
||||
<string name="shared_string_disable">Wyłącz</string>
|
||||
<string name="shared_string_save">Zapisz</string>
|
||||
<string name="add_device_descr">Wprowadź swój identyfikator urządzenia, który można znaleźć w https://live.osmand.net/device/ID</string>
|
||||
<string name="device_id">Identyfikator urządzenia</string>
|
||||
<string name="add_device">Dodaj urządzenie</string>
|
||||
<string name="share_location_as_descr">Ta opcja umożliwia udostępnianie lokalizacji urządzenia lub lokalizacji niestandardowych dodawanych przez urządzenia interfejsu API.</string>
|
||||
<string name="share_location_as">Udostępnij lokalizację jako</string>
|
||||
<string name="live_now_description">Kontakty i grupy, które udostępniają Ci swoją lokalizację.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Czy na pewno chcesz się wylogować z OsmAnd Telegram\? Po tym czasie nie będziesz mógł wysłać swojej pozycji i zobaczyć lokalizacji swoich kontaktów na mapie w OsmAnd.</string>
|
||||
<string name="logout_from_osmand_telegram">Wyloguj się z OsmAnd Telegram\?</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Czy na pewno chcesz się wylogować z OsmAnd Telegram, aby nie udostępniać lokalizacji ani nie widzieć lokalizacji innych\?</string>
|
||||
<string name="logout_from_osmand_telegram">Wylogować się z OsmAnd Telegram\?</string>
|
||||
<string name="shared_string_name">Nazwa</string>
|
||||
<string name="by_distance">Według odległości</string>
|
||||
<string name="by_name">Według nazwy</string>
|
||||
|
@ -37,43 +31,42 @@
|
|||
<string name="shared_string_sort_by">Sortuj według</string>
|
||||
<string name="choose_osmand_desc">Wybierz wersję OsmAnd, w której kontakty będą wyświetlane na mapie.</string>
|
||||
<string name="choose_osmand">Wybierz używaną wersję OsmAnd</string>
|
||||
<string name="disable_all_sharing_desc">To wyłączy udostępnianie lokalizacji dla wszystkich wybranych czatów (%1$d).</string>
|
||||
<string name="disable_all_sharing_desc">Wyłącza udostępnianie lokalizacji dla wszystkich wybranych czatów (%1$d).</string>
|
||||
<string name="disable_all_sharing">Wyłącz udostępnianie</string>
|
||||
<string name="turn_off_all">Wyłącz wszystko</string>
|
||||
<string name="shared_string_exit">Zakończ</string>
|
||||
<string name="time_ago">temu</string>
|
||||
<string name="last_response">Ostatnia odpowiedź</string>
|
||||
<string name="shared_string_group">Grupa</string>
|
||||
<string name="logout_no_internet_msg">Internet jest wymagany, by właściwie wylogować się z konta Telegramu.</string>
|
||||
<string name="logout_no_internet_msg">Połącz się z internetem, by właściwie wylogować się z konta Telegramu.</string>
|
||||
<string name="shared_string_close">Zamknij</string>
|
||||
<string name="disconnect_from_telegram">Jak rozłączyć Udostępnianie Lokalizacji OsmAnd z konta Telegramu</string>
|
||||
<string name="logout_help_desc">Jak rozłączyć Udostępnianie Lokalizacji OsmAnd z Telegramu</string>
|
||||
<string name="disconnect_from_telegram">Jak wyłączyć Udostępnianie Lokalizacji OsmAnd z Telegramu</string>
|
||||
<string name="logout_help_desc">Jak wyłączyć Udostępnianie Lokalizacji OsmAnd z Telegramu</string>
|
||||
<string name="connected_account">Połączone konta</string>
|
||||
<string name="shared_string_account">Konto</string>
|
||||
<string name="in_time">w %1$s</string>
|
||||
<string name="osmand_connect_desc">Wybierz wersję OsmAnd do której Telegram OsmAnd będzie się odnosił przy wyświetlaniu pozycji na mapie.</string>
|
||||
<string name="osmand_connect_desc">Wybierz wersję OsmAnd, którą Telegram OsmAnd będzie używał do wyświetlaniu pozycji.</string>
|
||||
<string name="osmand_connect">Połącz OsmAnd</string>
|
||||
<string name="location_history_desc">Ukryj kontakty, które nie zaktualizowały swojej lokalizacji po określonym czasie.</string>
|
||||
<string name="location_history_desc">Ukryj kontakty, które nie zostały przeniesione w określonym czasie.</string>
|
||||
<string name="location_history">Historia lokalizacji</string>
|
||||
<string name="stale_location_desc">Ostatni raz, kiedy kontakt wysłał aktualizację do swojej lokalizacji.</string>
|
||||
<string name="stale_location_desc">Ostatni kontakt został przeniesiony.</string>
|
||||
<string name="send_my_location_desc">Wybierz minimalny odstęp dla udostępniania lokalizacji.</string>
|
||||
<string name="send_my_location">Wyślij moją lokalizację</string>
|
||||
<string name="gps_and_location">GPS i lokalizacja</string>
|
||||
<string name="gps_and_location">Pozycja</string>
|
||||
<string name="sharing_time">Czas udostępniania</string>
|
||||
<string name="expire_at">Wygasa o</string>
|
||||
<string name="stop_sharing_all">Udostępnianie jest włączone (wyłącz)</string>
|
||||
<string name="expire_at">Wygasa</string>
|
||||
<string name="turn_off_location_sharing">Wyłącz udostępnianie lokalizacji</string>
|
||||
<string name="open_osmand">Otwórz OsmAnd</string>
|
||||
<string name="shared_string_live">Na żywo</string>
|
||||
<string name="shared_string_bot">Bot</string>
|
||||
<string name="get_telegram_title">Rejestracja w Telegramie</string>
|
||||
<string name="get_telegram_account_first">Potrzebujesz konto w Telegramie, by używać Udostępniania Lokalizacji OsmAnd.</string>
|
||||
<string name="get_telegram_description_continue">Jeśli chcesz kontynuować, prosimy zainstalować Telegram z Google Play i zarejestrować konto.</string>
|
||||
<string name="get_telegram_after_creating_account">Po utworzeniu konta, możesz używać aplikacji.</string>
|
||||
<string name="get_telegram_account_first">Aby korzystać z udostępniania lokalizacji, potrzebujesz konta Telegram.</string>
|
||||
<string name="get_telegram_description_continue">Zainstaluj Telegram i skonfiguruj konto.</string>
|
||||
<string name="get_telegram_after_creating_account">Następnie możesz użyć tej aplikacji.</string>
|
||||
<string name="shared_string_all">Wszystkie</string>
|
||||
<string name="shared_string_off">Wyłączone</string>
|
||||
<string name="already_registered_in_telegram">Potrzebujesz już zarejestrowanego konta i numeru telefonu w Telegramie</string>
|
||||
<string name="do_not_have_telegram">Nie masz konta w Telegramie</string>
|
||||
<string name="already_registered_in_telegram">Potrzebujesz zarejestrowanego konta w Telegramie i numeru telefonu</string>
|
||||
<string name="do_not_have_telegram">Nie mam konta w Telegramie</string>
|
||||
<string name="enter_phone_number">Wpisz numer telefonu</string>
|
||||
<string name="enter_authentication_code">Wpisz kod zabezpieczający</string>
|
||||
<string name="set_visible_time_for_all">Ustaw czas widoczny dla wszystkich</string>
|
||||
|
@ -87,8 +80,8 @@
|
|||
<string name="set_time_description">Ustaw czas, kiedy wybrane kontakty i grupy będą widzieć twoją lokalizację w czasie rzeczywistym.</string>
|
||||
<string name="set_time">Ustaw czas</string>
|
||||
<string name="location_sharing_description">Wybierz kontakty i grupy, którym chcesz udostępnić swoją lokalizację.</string>
|
||||
<string name="my_location_search_hint">Wyszukiwanie: grupa i kontakt</string>
|
||||
<string name="start_location_sharing">Rozpocznij udostępnianie lokalizacji</string>
|
||||
<string name="my_location_search_hint">Szukaj: Grupa lub kontakt</string>
|
||||
<string name="start_location_sharing">Udostępnij lokalizację</string>
|
||||
<string name="show_on_map">Pokazuj na mapie</string>
|
||||
<string name="app_name">OsmAnd Telegram</string>
|
||||
<string name="phone_number_title">Numer telefonu</string>
|
||||
|
@ -96,32 +89,24 @@
|
|||
<string name="shared_string_password">Hasło</string>
|
||||
<string name="enter_code">Wpisz kod</string>
|
||||
<string name="authentication_code">Kod zabezpieczający</string>
|
||||
<string name="authentication_code_descr">Telegram wysłał ci kod. Będzie on używany przez OsmAnd jako login do konta.</string>
|
||||
<string name="authentication_code_descr">Telegram wysłał ci kod do OsmAnd jako login do konta.</string>
|
||||
<string name="enter_password">Wpisz kod</string>
|
||||
<string name="password_descr">Proszę wpisać kod konta w Telegramie by zakończyć autoryzację</string>
|
||||
<string name="password_descr">Hasło Telegram</string>
|
||||
<string name="shared_string_login">Zaloguj się</string>
|
||||
<string name="shared_string_logout">Wyloguj się</string>
|
||||
<string name="not_logged_in">Nie jesteś zalogowany/a</string>
|
||||
<string name="initialization">Inicjalizacja</string>
|
||||
<string name="logging_out">Wylogowywanie</string>
|
||||
<string name="closing">Zamykanie</string>
|
||||
<string name="shared_string_continue">Kontynuuj</string>
|
||||
<string name="shared_string_cancel">Anuluj</string>
|
||||
<string name="gps_network_not_enabled">Usługa lokalizacji nie jest włączona. Włączyć ją\?</string>
|
||||
<string name="gps_network_not_enabled">Włączyć lokalizację\?</string>
|
||||
<string name="shared_string_settings">Opcje</string>
|
||||
<string name="no_location_permission">Aplikacja nie ma uprawnień dostępu do danych o położeniu.</string>
|
||||
<string name="gps_not_available">Proszę włączyć GPS w opcjach</string>
|
||||
<string name="location_service_no_gps_available">Usługa udostępniania lokalizacji wymaga włączonego dostawcy lokalizacji.</string>
|
||||
<string name="gps_not_available">Włącz \"Lokalizacja\" w ustawieniach systemu</string>
|
||||
<string name="location_service_no_gps_available">Wybierz jednego z dostawców lokalizacji, aby udostępnić swoją lokalizację.</string>
|
||||
<string name="osmand_service">Tryb tła</string>
|
||||
<string name="osmand_service_descr">Telegram OsmAnd będzie działał w tle przy wygaszonym ekranie.</string>
|
||||
<string name="shared_string_distance">Odległość</string>
|
||||
<string name="share_location">Udostępnij lokalizację</string>
|
||||
<string name="sharing_location">Udostępnianie lokalizacji</string>
|
||||
<string name="shared_string_paused">Wstrzymano</string>
|
||||
<string name="shared_string_no_data">Brak danych</string>
|
||||
<string name="shared_string_pause">Wstrzymaj</string>
|
||||
<string name="shared_string_start">Rozpocznij</string>
|
||||
<string name="shared_string_stop">Zakończ</string>
|
||||
<string name="process_service">Usługa Telegramu OsmAnd</string>
|
||||
<string name="osmand_logo">Logo OsmAnd</string>
|
||||
<string name="install_osmand_dialog_message">Najpierw musisz zainstalować darmową lub płatną wersję OsmAnd</string>
|
||||
|
@ -129,7 +114,7 @@
|
|||
<string name="show_users_on_map">Pokazuj użytkowników na mapie</string>
|
||||
<string name="active_chats">Aktywuj czat</string>
|
||||
<string name="shared_string_authorization">Autoryzacja</string>
|
||||
<string name="shared_string_authorization_descr">Proszę wprowadzić numer telefonu konta Telegramu w formacie międzynarodowym</string>
|
||||
<string name="shared_string_authorization_descr">Wprowadź swój numer Telegram w formacie międzynarodowym</string>
|
||||
<string name="shared_string_welcome">Witamy</string>
|
||||
|
||||
<string name="yard">yd</string>
|
||||
|
@ -137,7 +122,7 @@
|
|||
<string name="mile">mi</string>
|
||||
<string name="km">km</string>
|
||||
<string name="m">m</string>
|
||||
<string name="nm">nmi</string>
|
||||
<string name="nm">Mm</string>
|
||||
<string name="min_mile">min/m</string>
|
||||
<string name="min_km">min/km</string>
|
||||
<string name="nm_h">nmi/h</string>
|
||||
|
@ -158,10 +143,50 @@
|
|||
<string name="shared_string_hour_short">h</string>
|
||||
<string name="shared_string_minute_short">min</string>
|
||||
<string name="shared_string_second_short">sek</string>
|
||||
<string name="plus">+</string>
|
||||
<string name="welcome_descr"><b>Udostępnianie Lokalizacji OsmAnd</b> umożliwi ci udostępnianie twojej lokalizacji i zobaczenie lokalizacji innych osób w OsmAnd.<br/><br/>Aplikacja działa w opraciu o Telegram API. By używać aplikacji musisz mieć konto w Telegramie.</string>
|
||||
<string name="welcome_descr"><b>Udostępnianie Lokalizacji OsmAnd</b> pozwala Ci udostępniać swoją lokalizację i widzieć ją w OsmAnd.<br/><br/>Aplikacja używa Telegram API i potrzebujesz konta Telegram.</string>
|
||||
<string name="my_location">Moja lokalizacja</string>
|
||||
<string name="live_now">Na żywo teraz</string>
|
||||
<string name="live_now">Na żywo</string>
|
||||
|
||||
|
||||
</resources>
|
||||
<string name="enter_another_device_name">Wybierz nazwę, której jeszcze nie używasz</string>
|
||||
<string name="device_added_successfully">%1$s dodany.</string>
|
||||
<string name="shared_string_add">Dodaj</string>
|
||||
<string name="error_adding_new_device">Nie można dodać nowego urządzenia</string>
|
||||
<string name="enter_device_name_description">Nazwij swoje nowe urządzenie maksymalnie 200 znaków.</string>
|
||||
<string name="device_name_is_too_long">Nazwa urządzenia jest za długa</string>
|
||||
<string name="device_name_cannot_be_empty">Nazwa sprzętu nie można być pusta</string>
|
||||
<string name="device_name">Nazwa urządzenia</string>
|
||||
<string name="shared_string_hide">Ukryj</string>
|
||||
<string name="share_location_as_description_second_line">Możesz utworzyć i zobaczyć ID sprzętu w telegramie klienta, używając %1$s bota czatu. %2$s</string>
|
||||
<string name="share_location_as_description">Jeśli chcesz połączyć wiele urządzeń z jednym kontem telegramu, potrzebujesz użyć innego sprzętu do udostępniania lokalizacji.</string>
|
||||
<string name="last_updated_location">Ostatnia aktualizacja lokalizacji:</string>
|
||||
<string name="successfully_sent_and_updated">Wysłano i zaktualizowano z powodzeniem</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Nie można wysłać na czaty Telegramu:</string>
|
||||
<string name="waiting_for_response_from_telegram">Oczekiwanie na odpowiedź od Telegramu</string>
|
||||
<string name="sending_location_messages">Wysyłam lokalizację</string>
|
||||
<string name="initializing">Wystartuj</string>
|
||||
<string name="searching_for_gps">Pozycjonowanie…</string>
|
||||
<string name="connecting_to_the_internet">Łączenie z internetem</string>
|
||||
<string name="disconnect_from_telegram_desc">Aby anulować dostęp do udostępniania lokalizacji. Otwórz Telegram, przejdź do Ustawienia → Prywatność i bezpieczeństwo → Sesje i zakończ sesję OsmAnd Telegram.</string>
|
||||
<string name="stale_location">Nie porusza się</string>
|
||||
<string name="last_update_from_telegram">Ostatnia aktualizacja z Telegram</string>
|
||||
<string name="stop_sharing_all">Udostępnianie jest włączone (wyłącz)</string>
|
||||
<string name="initialization">Wystartuj</string>
|
||||
<string name="logging_out">Wylogowuję się</string>
|
||||
<string name="closing">Zamykanie</string>
|
||||
<string name="send_location_as">Wyślij lokalizację jako</string>
|
||||
<string name="send_location_as_descr">Wybierz sposób wyświetlania wiadomości z Twoją lokalizacją.</string>
|
||||
<string name="shared_string_map">Mapa</string>
|
||||
<string name="shared_string_text">Tekst</string>
|
||||
<string name="map_and_text">Mapa i tekst</string>
|
||||
<string name="monitoring_is_enabled">Monitorowanie jest włączone</string>
|
||||
<string name="monitoring_is_disabled">Monitorowanie jest wyłączone</string>
|
||||
<string name="time_on_the_move">czas w ruchu</string>
|
||||
<string name="average_altitude">Średnia wysokość</string>
|
||||
<string name="average_speed">Średnia prędkość</string>
|
||||
<string name="open_in_osmand">Otwarte w OsmAnd</string>
|
||||
<string name="end_date">Data końcowa</string>
|
||||
<string name="start_date">Data rozpoczęcia</string>
|
||||
<string name="timeline_description">Umożliwia monitorowanie, by zgromadzić dane ruchu w tle.</string>
|
||||
<string name="timeline">Linia czasu</string>
|
||||
</resources>
|