From 89a05082aca412cd1199f3b2da6d5be61485538a Mon Sep 17 00:00:00 2001 From: Nazar-Kutz Date: Wed, 8 Jul 2020 11:03:21 +0300 Subject: [PATCH 01/14] Fix #7131 --- .../main/java/net/osmand/data/Amenity.java | 1 + .../builders/AmenityMenuBuilder.java | 6 +- .../builders/cards/ImageCard.java | 5 ++ .../net/osmand/plus/wikimedia/WikiImage.java | 33 +++++++ .../osmand/plus/wikimedia/WikiImageCard.java | 41 +++++++++ .../plus/wikimedia/WikiImageHelper.java | 90 +++++++++++++++++++ .../osmand/plus/wikimedia/pojo/Claims.java | 22 +++++ .../osmand/plus/wikimedia/pojo/Datavalue.java | 32 +++++++ .../osmand/plus/wikimedia/pojo/Mainsnak.java | 65 ++++++++++++++ .../net/osmand/plus/wikimedia/pojo/P18.java | 54 +++++++++++ .../wikimedia/pojo/WikipediaResponse.java | 21 +++++ 11 files changed, 369 insertions(+), 1 deletion(-) create mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/WikiImage.java create mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/WikiImageCard.java create mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java create mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/pojo/Claims.java create mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/pojo/Datavalue.java create mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/pojo/Mainsnak.java create mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/pojo/P18.java create mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/pojo/WikipediaResponse.java diff --git a/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java b/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java index a041d6f694..38854cb33b 100644 --- a/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java +++ b/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java @@ -38,6 +38,7 @@ public class Amenity extends MapObject { public static final String COLLECTION_TIMES = "collection_times"; public static final String CONTENT = "content"; public static final String CUISINE = "cuisine"; + public static final String WIKIDATA = "wikidata"; public static final String DISH = "dish"; public static final String REF = "ref"; public static final String OSM_DELETE_VALUE = "delete"; diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java index 66567bc76c..eb1e0df1eb 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java @@ -471,7 +471,7 @@ public class AmenityMenuBuilder extends MenuBuilder { } textPrefix = app.getString(R.string.poi_cuisine); vl = sb.toString(); - } else if (key.contains(Amenity.ROUTE)) { + } else if (key.contains(Amenity.ROUTE) || key.contains(Amenity.WIKIDATA)) { continue; } else { if (key.contains(Amenity.DESCRIPTION)) { @@ -784,12 +784,16 @@ public class AmenityMenuBuilder extends MenuBuilder { Map additionalInfo = amenity.getAdditionalInfo(); String imageValue = additionalInfo.get("image"); String mapillaryValue = additionalInfo.get("mapillary"); + String wikidataValue = additionalInfo.get("wikidata"); if (!Algorithms.isEmpty(imageValue)) { params.put("osm_image", imageValue); } if (!Algorithms.isEmpty(mapillaryValue)) { params.put("osm_mapillary_key", mapillaryValue); } + if (!Algorithms.isEmpty(wikidataValue)) { + params.put("wikidata_id", wikidataValue); + } return params; } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java index a821d8b3cf..e0733d7d56 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java @@ -25,6 +25,7 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.mapcontextmenu.MenuBuilder; import net.osmand.plus.mapillary.MapillaryContributeCard; import net.osmand.plus.mapillary.MapillaryImageCard; +import net.osmand.plus.wikimedia.WikiImageHelper; import net.osmand.util.Algorithms; import org.json.JSONArray; @@ -438,6 +439,10 @@ public abstract class ImageCard extends AbstractCard { } if (this.params != null) { pms.putAll(this.params); + String wikidataId = this.params.get("wikidata_id"); + if (wikidataId != null) { + WikiImageHelper.fillWikiMediaCards(mapActivity, wikidataId, result); + } } String response = AndroidNetworkUtils.sendRequest(app, "https://osmand.net/api/cm_place", pms, "Requesting location images...", false, false); diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImage.java b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImage.java new file mode 100644 index 0000000000..d442afbb4e --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImage.java @@ -0,0 +1,33 @@ +package net.osmand.plus.wikimedia; + +public class WikiImage { + + private String imageName; + private String imageStubUrl; + private String imageHiResUrl; + private String datatype; + + public WikiImage(String imageName, String imageStubUrl, + String imageHiResUrl, String datatype) { + this.imageName = imageName; + this.imageStubUrl = imageStubUrl; + this.imageHiResUrl = imageHiResUrl; + this.datatype = datatype; + } + + public String getImageName() { + return imageName; + } + + public String getImageStubUrl() { + return imageStubUrl; + } + + public String getImageHiResUrl() { + return imageHiResUrl; + } + + public String getDatatype() { + return datatype; + } +} diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageCard.java b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageCard.java new file mode 100644 index 0000000000..db4ccef2ea --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageCard.java @@ -0,0 +1,41 @@ +package net.osmand.plus.wikimedia; + +import android.view.View; + +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard; +import net.osmand.util.Algorithms; + +import org.json.JSONObject; + +public class WikiImageCard extends ImageCard { + + public WikiImageCard(final MapActivity mapActivity, final JSONObject imageObject, + final WikiImage wikiImage) { + super(mapActivity, imageObject); + + if (topIconId == 0) { + topIconId = R.drawable.ic_logo_wikimedia; + } + + this.imageUrl = wikiImage.getImageStubUrl(); + this.url = this.imageUrl; + + View.OnClickListener onClickListener = new View.OnClickListener() { + @Override + public void onClick(View v) { + openUrl(getMapActivity(), getMyApplication(), getTitle(), wikiImage.getImageHiResUrl(), + isExternalLink() || Algorithms.isEmpty(getImageHiresUrl()), + !Algorithms.isEmpty(getImageHiresUrl())); + } + }; + + if (!Algorithms.isEmpty(buttonText)) { + this.onButtonClickListener = onClickListener; + } else { + this.onClickListener = onClickListener; + } + } + +} diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java new file mode 100644 index 0000000000..3a2c23fdec --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java @@ -0,0 +1,90 @@ +package net.osmand.plus.wikimedia; + +import androidx.annotation.NonNull; + +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; + +import net.osmand.PlatformUtil; +import net.osmand.osm.io.NetworkUtils; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard; +import net.osmand.plus.wikimedia.pojo.P18; +import net.osmand.plus.wikimedia.pojo.WikipediaResponse; + +import org.apache.commons.codec.binary.Hex; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.logging.Log; + +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.ArrayList; +import java.util.List; + +public class WikiImageHelper { + private static final String WIKIDATA_API_ENDPOINT = "https://www.wikidata.org/w/api.php"; + private static final String ACTION = "?action=wbgetclaims&property=P18&entity="; + private static final String FORMAT_JSON = "&format=json"; + private static final String IMAGE_BASE_URL = "https://upload.wikimedia.org/wikipedia/commons/"; + private static final String WIKIDATA_PREFIX = "Q"; + private static final int THUMB_SIZE = 500; + private static final Log LOG = PlatformUtil.getLog(WikiImageHelper.class); + + public static void fillWikiMediaCards(@NonNull MapActivity mapActivity, @NonNull String wikidata, + List images) { + if (wikidata.startsWith(WIKIDATA_PREFIX)) { + StringBuilder rawResponse = new StringBuilder(); + String url = WIKIDATA_API_ENDPOINT + ACTION + wikidata + FORMAT_JSON; + String error = NetworkUtils.sendGetRequest(url, null, rawResponse); + if (error == null) { + try { + Gson gson = new Gson(); + WikipediaResponse response = gson.fromJson(rawResponse.toString(), WikipediaResponse.class); + for (WikiImage img : getImageData(response)) { + images.add(new WikiImageCard(mapActivity, null, img)); + } + return; + } catch (JsonSyntaxException e) { + error = e.getLocalizedMessage(); + } + LOG.error(error); + } + } else { + LOG.error("Wrong WikiMedia ID"); + } + } + + public static List getImageData(WikipediaResponse response) { + List images = new ArrayList<>(); + try { + for (P18 p18 : response.getClaims().getP18()) { + String imageFileName = p18.getMainsnak().getDatavalue().getValue(); + if (imageFileName != null) { + String imageName = URLDecoder.decode(imageFileName, "UTF-8"); + imageFileName = imageName.replace(" ", "_"); + imageName = imageName.substring(0, imageName.lastIndexOf(".")); + String[] urlHashParts = getHash(imageFileName); + + String imageHiResUrl = IMAGE_BASE_URL + + urlHashParts[0] + "/" + urlHashParts[1] + "/" + + imageFileName; + String imageStubUrl = IMAGE_BASE_URL + "thumb/" + + urlHashParts[0] + "/" + urlHashParts[1] + "/" + + imageFileName + "/" + THUMB_SIZE + "px-" + + imageFileName; + images.add(new WikiImage(imageName, imageStubUrl, + imageHiResUrl, p18.getMainsnak().getDatatype())); + } + } + } catch (UnsupportedEncodingException e) { + LOG.error(e.getLocalizedMessage()); + } + return images; + } + + @NonNull + public static String[] getHash(@NonNull String s) { + String md5 = new String(Hex.encodeHex(DigestUtils.md5(s))); + return new String[]{md5.substring(0, 1), md5.substring(0, 2)}; + } +} diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Claims.java b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Claims.java new file mode 100644 index 0000000000..0f9aacaff7 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Claims.java @@ -0,0 +1,22 @@ + +package net.osmand.plus.wikimedia.pojo; + +import java.util.List; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class Claims { + + @SerializedName("P18") + @Expose + private List p18 = null; + + public List getP18() { + return p18; + } + + public void setP18(List p18) { + this.p18 = p18; + } + +} diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Datavalue.java b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Datavalue.java new file mode 100644 index 0000000000..975c0de82f --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Datavalue.java @@ -0,0 +1,32 @@ + +package net.osmand.plus.wikimedia.pojo; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class Datavalue { + + @SerializedName("value") + @Expose + private String value; + @SerializedName("type") + @Expose + private String type; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + +} diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Mainsnak.java b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Mainsnak.java new file mode 100644 index 0000000000..a757043bdd --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Mainsnak.java @@ -0,0 +1,65 @@ + +package net.osmand.plus.wikimedia.pojo; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class Mainsnak { + + @SerializedName("snaktype") + @Expose + private String snaktype; + @SerializedName("property") + @Expose + private String property; + @SerializedName("hash") + @Expose + private String hash; + @SerializedName("datavalue") + @Expose + private Datavalue datavalue; + @SerializedName("datatype") + @Expose + private String datatype; + + public String getSnaktype() { + return snaktype; + } + + public void setSnaktype(String snaktype) { + this.snaktype = snaktype; + } + + public String getProperty() { + return property; + } + + public void setProperty(String property) { + this.property = property; + } + + public String getHash() { + return hash; + } + + public void setHash(String hash) { + this.hash = hash; + } + + public Datavalue getDatavalue() { + return datavalue; + } + + public void setDatavalue(Datavalue datavalue) { + this.datavalue = datavalue; + } + + public String getDatatype() { + return datatype; + } + + public void setDatatype(String datatype) { + this.datatype = datatype; + } + +} diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/P18.java b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/P18.java new file mode 100644 index 0000000000..5cecaf5112 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/P18.java @@ -0,0 +1,54 @@ + +package net.osmand.plus.wikimedia.pojo; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class P18 { + + @SerializedName("mainsnak") + @Expose + private Mainsnak mainsnak; + @SerializedName("type") + @Expose + private String type; + @SerializedName("id") + @Expose + private String id; + @SerializedName("rank") + @Expose + private String rank; + + public Mainsnak getMainsnak() { + return mainsnak; + } + + public void setMainsnak(Mainsnak mainsnak) { + this.mainsnak = mainsnak; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getRank() { + return rank; + } + + public void setRank(String rank) { + this.rank = rank; + } + +} diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/WikipediaResponse.java b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/WikipediaResponse.java new file mode 100644 index 0000000000..412f25602b --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/WikipediaResponse.java @@ -0,0 +1,21 @@ + +package net.osmand.plus.wikimedia.pojo; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class WikipediaResponse { + + @SerializedName("claims") + @Expose + private Claims claims; + + public Claims getClaims() { + return claims; + } + + public void setClaims(Claims claims) { + this.claims = claims; + } + +} From 17ab336cfcaaa8d855071322ba8384f13fc3c87e Mon Sep 17 00:00:00 2001 From: Nazar-Kutz Date: Wed, 8 Jul 2020 13:33:40 +0300 Subject: [PATCH 02/14] Small refactoring --- .../builders/AmenityMenuBuilder.java | 2 +- .../builders/cards/ImageCard.java | 3 +- .../plus/wikimedia/WikiImageHelper.java | 75 ++++++++++++++++--- .../osmand/plus/wikimedia/pojo/Claims.java | 22 ------ .../osmand/plus/wikimedia/pojo/Datavalue.java | 32 -------- .../osmand/plus/wikimedia/pojo/Mainsnak.java | 65 ---------------- .../net/osmand/plus/wikimedia/pojo/P18.java | 54 ------------- .../wikimedia/pojo/WikipediaResponse.java | 21 ------ 8 files changed, 68 insertions(+), 206 deletions(-) delete mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/pojo/Claims.java delete mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/pojo/Datavalue.java delete mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/pojo/Mainsnak.java delete mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/pojo/P18.java delete mode 100644 OsmAnd/src/net/osmand/plus/wikimedia/pojo/WikipediaResponse.java diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java index eb1e0df1eb..d627b4e6e6 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java @@ -471,7 +471,7 @@ public class AmenityMenuBuilder extends MenuBuilder { } textPrefix = app.getString(R.string.poi_cuisine); vl = sb.toString(); - } else if (key.contains(Amenity.ROUTE) || key.contains(Amenity.WIKIDATA)) { + } else if (key.contains(Amenity.ROUTE) || key.equals(Amenity.WIKIDATA)) { continue; } else { if (key.contains(Amenity.DESCRIPTION)) { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java index e0733d7d56..94c045fa4d 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java @@ -438,11 +438,12 @@ public abstract class ImageCard extends AbstractCard { pms.put("lang", preferredLang); } if (this.params != null) { - pms.putAll(this.params); String wikidataId = this.params.get("wikidata_id"); if (wikidataId != null) { + this.params.remove("wikidata_id"); WikiImageHelper.fillWikiMediaCards(mapActivity, wikidataId, result); } + pms.putAll(this.params); } String response = AndroidNetworkUtils.sendRequest(app, "https://osmand.net/api/cm_place", pms, "Requesting location images...", false, false); diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java index 3a2c23fdec..59a53ba54e 100644 --- a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java +++ b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java @@ -4,13 +4,13 @@ import androidx.annotation.NonNull; import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; import net.osmand.PlatformUtil; import net.osmand.osm.io.NetworkUtils; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard; -import net.osmand.plus.wikimedia.pojo.P18; -import net.osmand.plus.wikimedia.pojo.WikipediaResponse; import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.digest.DigestUtils; @@ -47,8 +47,8 @@ public class WikiImageHelper { } catch (JsonSyntaxException e) { error = e.getLocalizedMessage(); } - LOG.error(error); } + LOG.error(error); } else { LOG.error("Wrong WikiMedia ID"); } @@ -56,10 +56,10 @@ public class WikiImageHelper { public static List getImageData(WikipediaResponse response) { List images = new ArrayList<>(); - try { - for (P18 p18 : response.getClaims().getP18()) { - String imageFileName = p18.getMainsnak().getDatavalue().getValue(); - if (imageFileName != null) { + for (P18 p18 : response.claims.p18) { + String imageFileName = p18.mainsnak.datavalue.value; + if (imageFileName != null) { + try { String imageName = URLDecoder.decode(imageFileName, "UTF-8"); imageFileName = imageName.replace(" ", "_"); imageName = imageName.substring(0, imageName.lastIndexOf(".")); @@ -73,11 +73,12 @@ public class WikiImageHelper { imageFileName + "/" + THUMB_SIZE + "px-" + imageFileName; images.add(new WikiImage(imageName, imageStubUrl, - imageHiResUrl, p18.getMainsnak().getDatatype())); + imageHiResUrl, p18.mainsnak.datatype)); + + } catch (UnsupportedEncodingException e) { + LOG.error(e.getLocalizedMessage()); } } - } catch (UnsupportedEncodingException e) { - LOG.error(e.getLocalizedMessage()); } return images; } @@ -87,4 +88,58 @@ public class WikiImageHelper { String md5 = new String(Hex.encodeHex(DigestUtils.md5(s))); return new String[]{md5.substring(0, 1), md5.substring(0, 2)}; } + + private class Claims { + @SerializedName("P18") + @Expose + private List p18 = null; + } + + public class Datavalue { + @SerializedName("value") + @Expose + private String value; + @SerializedName("type") + @Expose + private String type; + } + + public class Mainsnak { + @SerializedName("snaktype") + @Expose + private String snaktype; + @SerializedName("property") + @Expose + private String property; + @SerializedName("hash") + @Expose + private String hash; + @SerializedName("datavalue") + @Expose + private Datavalue datavalue; + @SerializedName("datatype") + @Expose + private String datatype; + } + + public class P18 { + @SerializedName("mainsnak") + @Expose + private Mainsnak mainsnak; + @SerializedName("type") + @Expose + private String type; + @SerializedName("id") + @Expose + private String id; + @SerializedName("rank") + @Expose + private String rank; + } + + public class WikipediaResponse { + @SerializedName("claims") + @Expose + private Claims claims; + } } diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Claims.java b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Claims.java deleted file mode 100644 index 0f9aacaff7..0000000000 --- a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Claims.java +++ /dev/null @@ -1,22 +0,0 @@ - -package net.osmand.plus.wikimedia.pojo; - -import java.util.List; -import com.google.gson.annotations.Expose; -import com.google.gson.annotations.SerializedName; - -public class Claims { - - @SerializedName("P18") - @Expose - private List p18 = null; - - public List getP18() { - return p18; - } - - public void setP18(List p18) { - this.p18 = p18; - } - -} diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Datavalue.java b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Datavalue.java deleted file mode 100644 index 975c0de82f..0000000000 --- a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Datavalue.java +++ /dev/null @@ -1,32 +0,0 @@ - -package net.osmand.plus.wikimedia.pojo; - -import com.google.gson.annotations.Expose; -import com.google.gson.annotations.SerializedName; - -public class Datavalue { - - @SerializedName("value") - @Expose - private String value; - @SerializedName("type") - @Expose - private String type; - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - -} diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Mainsnak.java b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Mainsnak.java deleted file mode 100644 index a757043bdd..0000000000 --- a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/Mainsnak.java +++ /dev/null @@ -1,65 +0,0 @@ - -package net.osmand.plus.wikimedia.pojo; - -import com.google.gson.annotations.Expose; -import com.google.gson.annotations.SerializedName; - -public class Mainsnak { - - @SerializedName("snaktype") - @Expose - private String snaktype; - @SerializedName("property") - @Expose - private String property; - @SerializedName("hash") - @Expose - private String hash; - @SerializedName("datavalue") - @Expose - private Datavalue datavalue; - @SerializedName("datatype") - @Expose - private String datatype; - - public String getSnaktype() { - return snaktype; - } - - public void setSnaktype(String snaktype) { - this.snaktype = snaktype; - } - - public String getProperty() { - return property; - } - - public void setProperty(String property) { - this.property = property; - } - - public String getHash() { - return hash; - } - - public void setHash(String hash) { - this.hash = hash; - } - - public Datavalue getDatavalue() { - return datavalue; - } - - public void setDatavalue(Datavalue datavalue) { - this.datavalue = datavalue; - } - - public String getDatatype() { - return datatype; - } - - public void setDatatype(String datatype) { - this.datatype = datatype; - } - -} diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/P18.java b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/P18.java deleted file mode 100644 index 5cecaf5112..0000000000 --- a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/P18.java +++ /dev/null @@ -1,54 +0,0 @@ - -package net.osmand.plus.wikimedia.pojo; - -import com.google.gson.annotations.Expose; -import com.google.gson.annotations.SerializedName; - -public class P18 { - - @SerializedName("mainsnak") - @Expose - private Mainsnak mainsnak; - @SerializedName("type") - @Expose - private String type; - @SerializedName("id") - @Expose - private String id; - @SerializedName("rank") - @Expose - private String rank; - - public Mainsnak getMainsnak() { - return mainsnak; - } - - public void setMainsnak(Mainsnak mainsnak) { - this.mainsnak = mainsnak; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getRank() { - return rank; - } - - public void setRank(String rank) { - this.rank = rank; - } - -} diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/WikipediaResponse.java b/OsmAnd/src/net/osmand/plus/wikimedia/pojo/WikipediaResponse.java deleted file mode 100644 index 412f25602b..0000000000 --- a/OsmAnd/src/net/osmand/plus/wikimedia/pojo/WikipediaResponse.java +++ /dev/null @@ -1,21 +0,0 @@ - -package net.osmand.plus.wikimedia.pojo; - -import com.google.gson.annotations.Expose; -import com.google.gson.annotations.SerializedName; - -public class WikipediaResponse { - - @SerializedName("claims") - @Expose - private Claims claims; - - public Claims getClaims() { - return claims; - } - - public void setClaims(Claims claims) { - this.claims = claims; - } - -} From a08ac1fa0112d562d3db155cea95646e8183a9b9 Mon Sep 17 00:00:00 2001 From: Nazar-Kutz Date: Wed, 8 Jul 2020 14:36:11 +0300 Subject: [PATCH 03/14] Small refactoring p.2 --- .../net/osmand/plus/wikimedia/WikiImage.java | 7 +--- .../osmand/plus/wikimedia/WikiImageCard.java | 7 ++-- .../plus/wikimedia/WikiImageHelper.java | 37 +++++-------------- 3 files changed, 13 insertions(+), 38 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImage.java b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImage.java index d442afbb4e..d545b024e6 100644 --- a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImage.java +++ b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImage.java @@ -5,14 +5,12 @@ public class WikiImage { private String imageName; private String imageStubUrl; private String imageHiResUrl; - private String datatype; public WikiImage(String imageName, String imageStubUrl, - String imageHiResUrl, String datatype) { + String imageHiResUrl) { this.imageName = imageName; this.imageStubUrl = imageStubUrl; this.imageHiResUrl = imageHiResUrl; - this.datatype = datatype; } public String getImageName() { @@ -27,7 +25,4 @@ public class WikiImage { return imageHiResUrl; } - public String getDatatype() { - return datatype; - } } diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageCard.java b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageCard.java index db4ccef2ea..e423e3daa5 100644 --- a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageCard.java +++ b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageCard.java @@ -7,19 +7,18 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard; import net.osmand.util.Algorithms; -import org.json.JSONObject; - public class WikiImageCard extends ImageCard { - public WikiImageCard(final MapActivity mapActivity, final JSONObject imageObject, + public WikiImageCard(final MapActivity mapActivity, final WikiImage wikiImage) { - super(mapActivity, imageObject); + super(mapActivity, null); if (topIconId == 0) { topIconId = R.drawable.ic_logo_wikimedia; } this.imageUrl = wikiImage.getImageStubUrl(); + this.title = wikiImage.getImageName(); this.url = this.imageUrl; View.OnClickListener onClickListener = new View.OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java index 59a53ba54e..eded246941 100644 --- a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java +++ b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java @@ -41,7 +41,7 @@ public class WikiImageHelper { Gson gson = new Gson(); WikipediaResponse response = gson.fromJson(rawResponse.toString(), WikipediaResponse.class); for (WikiImage img : getImageData(response)) { - images.add(new WikiImageCard(mapActivity, null, img)); + images.add(new WikiImageCard(mapActivity, img)); } return; } catch (JsonSyntaxException e) { @@ -54,7 +54,7 @@ public class WikiImageHelper { } } - public static List getImageData(WikipediaResponse response) { + private static List getImageData(WikipediaResponse response) { List images = new ArrayList<>(); for (P18 p18 : response.claims.p18) { String imageFileName = p18.mainsnak.datavalue.value; @@ -72,8 +72,7 @@ public class WikiImageHelper { urlHashParts[0] + "/" + urlHashParts[1] + "/" + imageFileName + "/" + THUMB_SIZE + "px-" + imageFileName; - images.add(new WikiImage(imageName, imageStubUrl, - imageHiResUrl, p18.mainsnak.datatype)); + images.add(new WikiImage(imageName, imageStubUrl, imageHiResUrl)); } catch (UnsupportedEncodingException e) { LOG.error(e.getLocalizedMessage()); @@ -84,18 +83,18 @@ public class WikiImageHelper { } @NonNull - public static String[] getHash(@NonNull String s) { + private static String[] getHash(@NonNull String s) { String md5 = new String(Hex.encodeHex(DigestUtils.md5(s))); return new String[]{md5.substring(0, 1), md5.substring(0, 2)}; } - private class Claims { + private static class Claims { @SerializedName("P18") @Expose private List p18 = null; } - public class Datavalue { + private static class Datavalue { @SerializedName("value") @Expose private String value; @@ -104,16 +103,7 @@ public class WikiImageHelper { private String type; } - public class Mainsnak { - @SerializedName("snaktype") - @Expose - private String snaktype; - @SerializedName("property") - @Expose - private String property; - @SerializedName("hash") - @Expose - private String hash; + private static class Mainsnak { @SerializedName("datavalue") @Expose private Datavalue datavalue; @@ -122,22 +112,13 @@ public class WikiImageHelper { private String datatype; } - public class P18 { + private static class P18 { @SerializedName("mainsnak") @Expose private Mainsnak mainsnak; - @SerializedName("type") - @Expose - private String type; - @SerializedName("id") - @Expose - private String id; - @SerializedName("rank") - @Expose - private String rank; } - public class WikipediaResponse { + private static class WikipediaResponse { @SerializedName("claims") @Expose private Claims claims; From 3b75e8c337565ba00ebaab07957ce8a3c1beb49d Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Wed, 8 Jul 2020 20:17:22 +0000 Subject: [PATCH 04/14] Translated using Weblate (French) Currently translated at 100.0% (3417 of 3417 strings) --- OsmAnd/res/values-fr/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index ca570fd8e3..f264af132d 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3797,4 +3797,6 @@ Merci de renseigner un nom pour le point Utilisez un guide de poche hors ligne grâce à Wikipédia. Activez le plugin Wikipédia : des points d\'intérêt seront affichés, ils vous permettrons d\'obtenir des informations sur les lieux qui vous entourent. Télécharger les cartes Wikipédia + Scooter + Moto enduro \ No newline at end of file From 0977517bdb2c7011bf3d64014071b02b97172fc5 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 9 Jul 2020 06:41:52 +0000 Subject: [PATCH 05/14] Translated using Weblate (German) Currently translated at 100.0% (3417 of 3417 strings) --- OsmAnd/res/values-de/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 752c1b528a..acb3358a91 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -3822,4 +3822,6 @@ Der aktuelle Punkt auf der Route wird gelöscht. Wenn es das Ziel ist, wird die Navigation gestoppt. Wikipedia-Karten herunterladen Informationen über Sehenswürdigkeiten erhalten Sie bei Wikipedia. Es ist Ihr Offline-Wegweiser für die Hosentasche - aktivieren Sie einfach das Wikipedia-Modul und genießen Sie Artikel über Objekte in Ihrer Umgebung. + Enduro + Motorroller \ No newline at end of file From 1181aaa56dfe69b1c6182c0712e76813c63981c8 Mon Sep 17 00:00:00 2001 From: Deelite <556xxy@gmail.com> Date: Wed, 8 Jul 2020 21:42:42 +0000 Subject: [PATCH 06/14] Translated using Weblate (Russian) Currently translated at 99.9% (3415 of 3417 strings) --- OsmAnd/res/values-ru/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index c7ff9b3162..7c0a021979 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -1120,7 +1120,7 @@ Стиль карты Эл. почта Восход/закат - Мобильный просмотр и навигация по онлайн и локальным картам OSM всего мира + Мобильные карты и навигация по всему миру для локальных и онлайн-карт OSM OsmAnd (Open Street Maps Automated Navigation Directions) \n \n OsmAnd — это навигационное приложение с открытым исходным кодом и доступом к картам и данным на основе OSM. Все данные карт (векторные или растровые) могут быть сохранены на карту памяти устройства для использования без подключения к интернету. OsmAnd также предоставляет локальные и онлайн-средства построения маршрута, включая голосовые инструкции по маршруту. @@ -2414,7 +2414,7 @@ Маркер перемещён в действующие Указатель расстояния Показать карту - Для использования этой функции вы должны добавить хотя бы один маркер. + Для использования этой функции нужно добавить хотя бы один маркер. Не удалось изменить заметку. Дорога Показывать направляющие линии From aea59e54e64d5aab4dfb70529b1358a5c2760de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 8 Jul 2020 20:13:41 +0000 Subject: [PATCH 07/14] Translated using Weblate (Turkish) Currently translated at 100.0% (3417 of 3417 strings) --- OsmAnd/res/values-tr/strings.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 61d155b793..6ae6c3f291 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -2582,7 +2582,7 @@ Yeni profil Çökme Kişisel taşıyıcı - Scooter + Mobilet Gün Günler Günler @@ -3770,4 +3770,6 @@ Yakınlaştırma için ses seviyesi düğmeleri Wikipedia haritalarını indir Wikipedia\'dan ilgi çekici yerler hakkında bilgi alın. Bu sizin çevrim dışı cep rehberinizdir - sadece Wikipedia eklentisini etkinleştirin ve etrafınızdaki nesneler hakkında makalelerin tadını çıkarın. + Enduro motosiklet + Küçük motosiklet \ No newline at end of file From 4f287720981472a2e7153abc1bf48f22d74ece28 Mon Sep 17 00:00:00 2001 From: Branko Kokanovic Date: Wed, 8 Jul 2020 21:10:56 +0000 Subject: [PATCH 08/14] Translated using Weblate (Serbian) Currently translated at 100.0% (3417 of 3417 strings) --- OsmAnd/res/values-sr/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-sr/strings.xml b/OsmAnd/res/values-sr/strings.xml index 5b6be8d957..5d5e145f14 100644 --- a/OsmAnd/res/values-sr/strings.xml +++ b/OsmAnd/res/values-sr/strings.xml @@ -3812,4 +3812,6 @@ Тренутна одредишна тачка биће уклоњена. Ако је она одредишна, стопираће се навигација. Преузмите мапе Википедије Информације о тачкама од интереса потражите од Википедије. То је ваш џепни ванмрежни водич - само омогућите додатак Википедиа и уживајте у чланцима о објектима око вас. + Ендуро скутер + Скутер \ No newline at end of file From 979cc9c74654cf0cd32b066434c947ba69068262 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Thu, 9 Jul 2020 09:09:07 +0000 Subject: [PATCH 09/14] Translated using Weblate (Hebrew) Currently translated at 100.0% (3417 of 3417 strings) --- OsmAnd/res/values-he/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-he/strings.xml b/OsmAnd/res/values-he/strings.xml index 6a93ee035a..d8b81e15d3 100644 --- a/OsmAnd/res/values-he/strings.xml +++ b/OsmAnd/res/values-he/strings.xml @@ -3823,4 +3823,6 @@ נקודת היעד הנוכחית במסלול תימחק. אם זה יהיה היעד, הניווט ייעצר. הורדת מפות ויקיפדיה קבלת מידע על נקודות עניין מוויקיפדיה. מדריך הכיס הפרטי שלך - עליך פשוט להפעיל את התוסף של ויקיפדיה וליהנות מערכים על מה שסביבך. + אופנוע שטח + טוסטוס \ No newline at end of file From 7dc761dbdfe58a8032358f324878758ade967e32 Mon Sep 17 00:00:00 2001 From: Piotr Kubowicz Date: Wed, 8 Jul 2020 19:46:48 +0000 Subject: [PATCH 10/14] Translated using Weblate (Polish) Currently translated at 98.7% (3375 of 3417 strings) --- OsmAnd/res/values-pl/strings.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index c5167021fe..21e9dc02f5 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -3251,7 +3251,7 @@ Wybiera styl aplikacji, jednostki, region Ustawienia OsmAnd Skopiuj z innego profilu - Ciężar, wysokość, prędkość + Waga, wysokość, długość, prędkość Parametry pojazdu Komunikaty głosowe są odtwarzane tylko podczas nawigacji. Komunikaty głosowe @@ -3463,12 +3463,12 @@ Efekt uboczny: trasa nie będzie zawierała sekcji, w których nie zostało spełnione kryterium minimalnej prędkości (np. podczas pchania roweru pod strome wzgórze). Nie będzie również zawierała informacji o czasach odpoczynku, np. przerwach. Ma to wpływ na analizę i przetwarzanie końcowe, np. przy próbie określenia całkowitej długości trasy, czasu w ruchu lub średniej prędkości. Zmień układ kategorii Zmień kolejność sortowania listy, ukryj niepotrzebne kategorie. Wszystkie zmiany można importować lub eksportować za pomocą profili. - Można dodać nową, niestandardową kategorię wybierając jedną lub kilka potrzebnych kategorii. + Można dodać nową, niestandardową kategorię wybierając jedną lub kilka kategorii. Dostępne Dodaj niestandardową kategorię Wyświetlaj tylko w nocy - Ustawienia wtyczek przywrócone do stanu domyślnego. - Ustawienia profili przywrócone do stanu domyślnego. + Ustawienia wtyczek przywrócone do domyślnych. + Ustawienia profili przywrócone do domyślnych. %1$s/%2$s Zachód słońca o %1$s Wschód słońca o %1$s @@ -3480,7 +3480,7 @@ Użyj aplikacji systemowej Dźwięk migawki aparatu Przywrócenie domyślnej kolejności sortowania spowoduje przywrócenie porządku sortowania do stanu domyślnego po instalacji. - Tryb ułatwień dostępu wyłączony w twoim systemie. + Tryb ułatwień jest dostępu wyłączony w twoim systemie. Wygaś ekran zgodnie z ustawieniami systemu Wyczyść zarejestrowane dane - Profile: teraz można zmienić kolejność, ustawić ikonę dla mapy, zmienić wszystkie ustawienia dla profili bazowych i przywrócić je do domyślnych ustawień. @@ -3523,7 +3523,7 @@ Pokaż powiadomienia systemowe podczas nawigacji z instrukcjami nawigacji. Powiadomienie nawigacyjne Domyślnie (%s) - Wyłączenie ponownego obliczania + Bez ponownego obliczania Minimalna odległość do ponownego wyznaczenia trasy Wyznacza ponownie trasę, jeśli odległość do trasy jest dłuższa niż określony parametr Twoje nagrane ślady są w %1$s lub w folderze OsmAnd. @@ -3588,7 +3588,7 @@ Przycisk do wyświetlania lub ukrywania warstwy terenu na mapie. Pokaż teren Ukryj teren - Pokaż/ukryj teren + Pokaż / ukryj teren Nachylenie Włącz, aby wyświetlić cieniowanie wzniesień lub stoków. Możesz przeczytać więcej o tego rodzaju mapach na naszej stronie. Legenda @@ -3630,7 +3630,7 @@ Ukryte Te elementy są ukryte w menu, jednak reprezentowane opcje i wtyczki będą wciąż działać. Ukrycie ustawień resetuje je do pierwotnego stanu. - \"Główne czynności\" zawierają tylko 4 przyciski. + Mieści tylko 4 przyciski. Główne działania Możesz przemieszczać elementy tylko wewnątrz tej kategorii. Wtyczka deweloperska @@ -3719,7 +3719,7 @@ Ukryj transport publiczny Pokaż transport publiczny Pokaż/ukryj transport publiczny - Utwórz / Edytuj POI + Utwórz / Edytuj użyteczne miejsce Dodaj / Edytuj Ulubione Naciśnięcie przycisku akcji powoduje przełączanie między wybranymi profilami. Dodaj profil From e84be04dfa130f60216f7888dd6777ff0fe96718 Mon Sep 17 00:00:00 2001 From: Ahmad Alfrhood Date: Thu, 9 Jul 2020 01:23:00 +0000 Subject: [PATCH 11/14] Translated using Weblate (Arabic) Currently translated at 99.9% (3416 of 3417 strings) --- OsmAnd/res/values-ar/strings.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 93c9629d1c..2cf4d277fa 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -3170,7 +3170,7 @@ خريطة أثناء التنقل أخرى الوزن ، الارتفاع ، السرعة - معلمات السيارة + معلمات المركبات الإعلامات الصوتية تحدث فقط أثناء التنقل. إرشادات التنقل والإعلامات المطالبات الصوتية @@ -3212,7 +3212,7 @@ السرعة الافتراضية تغيير إعدادات السرعة الافتراضية تعيين حد السرعة الأدنى/الأعلى - وضع جديد + ملف تعريف جديد خروج مفاجئ فشل العملية الأخيرة لأوسماند. الرجاء مساعدتنا في التحسين من خلال مشاركة رسالة الخطأ. • أوضاع التطبيق: قم بإنشاء وضع مخصص لاحتياجاتك الخاصة ، باستخدام رمز ولون مخصصين @@ -3398,7 +3398,7 @@ حدد أيقونه الخريطة بعد النقر فوق \"تطبيق\" ، سيتم فقد الأوضاع المحذوفة بالكامل. الوضع الرئيسي - اختر اللون + لا يمكنك حذف أوضاع أوسماند الافتراضية ، ولكن يمكنك تعطيلها في الشاشة السابقة ، أو نقلها إلى الأسفل. تحرير الأوضاع يؤثر نوع التنقل على قواعد حسابات المسار. @@ -3805,4 +3805,6 @@ سيتم حذف نقطة الوجهة الحالية على المسار. إذا كانت هي الوجهة، سوف تتوقف الملاحة. تنزيل بيانات ويكيبيديا الحصول على معلومات حول النقاط المثيرة للاهتمام من ويكيبيديا. إنه دليلك غير المتصل بجيبك - ما عليك سوى تمكين المكون الإضافي ويكبيديا والاستمتاع بمقالات حول الكائنات من حولك. + دراجة نارية + سكوتر موتور \ No newline at end of file From b84e51c0810c606bcd8fb8dd8cf94436b6f77bc6 Mon Sep 17 00:00:00 2001 From: ce4 Date: Thu, 9 Jul 2020 07:20:37 +0000 Subject: [PATCH 12/14] Translated using Weblate (German) Currently translated at 100.0% (3812 of 3812 strings) --- OsmAnd/res/values-de/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index 16dc17d12e..65018d07c7 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -2766,7 +2766,7 @@ Toilettenspülung: Plumpsklo Wikipedia Gewürzgeschäft - Kraftstoffart + Kraftstoffsorte Zahlungsart Zusätzlich Ladestation: ja From d547f14e4bb6cd3cd93b7e151d20e1a238785c9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 8 Jul 2020 20:10:36 +0000 Subject: [PATCH 13/14] Translated using Weblate (Turkish) Currently translated at 62.5% (2386 of 3812 strings) --- OsmAnd/res/values-tr/phrases.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-tr/phrases.xml b/OsmAnd/res/values-tr/phrases.xml index 5b939eb519..5d6ab323b0 100644 --- a/OsmAnd/res/values-tr/phrases.xml +++ b/OsmAnd/res/values-tr/phrases.xml @@ -1476,7 +1476,7 @@ Serbest sürüş Klasik Klasik+paten - Scooter + Mobilet Paten Hayır Tümsek @@ -2394,4 +2394,7 @@ URL Ok Titreşim + Mobilet: hayır + Mobilet: evet + Mobilet \ No newline at end of file From 206b8eeae5f43867ea920c8ed891d8311797806a Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Thu, 9 Jul 2020 03:36:06 +0000 Subject: [PATCH 14/14] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3417 of 3417 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index bd7b2cf482..f8e2063502 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -3810,4 +3810,6 @@ 目前路徑上的目的地點將會被刪除。如果其將為目的地,導航就會停止。 下載維基百科地圖 從維基百科取得關於興趣點的資訊。這是您的離線口袋指南 ── 只要啟用維基百科外掛程式並享受有關於您周圍景點的文章。 + 耐力賽摩托車 + 小型摩托車 \ No newline at end of file