diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml
index d6390292f33..cc445a7e81b 100644
--- a/OsmAnd/res/values-es-rAR/phrases.xml
+++ b/OsmAnd/res/values-es-rAR/phrases.xml
@@ -156,7 +156,7 @@
Cojín berlinés
Chicana
Banda sonora
- Peatonal elevada;Plataforma elevada
+ Peatonal elevada;Plataforma elevada;Paso peatonal elevado
Calzada reducida;Gargantilla
Semáforo
Taller de automóviles;Taller mecánico; Reparación de automotores
diff --git a/OsmAnd/res/values-hr/phrases.xml b/OsmAnd/res/values-hr/phrases.xml
index 0b65eb89d00..d518073acb8 100644
--- a/OsmAnd/res/values-hr/phrases.xml
+++ b/OsmAnd/res/values-hr/phrases.xml
@@ -11,7 +11,7 @@
Vrsta
Sadržaj
Žanr
- Naknada
+ Pristojba
Dostava
Koktejli
Vrsta
@@ -277,7 +277,7 @@
Vrsta generatora: PHWR
Vrsta generatora: GCR
Umjetnost
- Da
+ Da;Prodaja računala
Vrsta goriva (avia)
Vrsta plaćanja
Dodatno
@@ -573,7 +573,7 @@
Napušteno
Napušteni objekt
Operator
- Da
+ Da;Pristojba
Ne
Da;Pitka voda
Ne
@@ -856,7 +856,7 @@
Da
Samo grupa: da
Samo grupa: ne
- Da
+ Da;Vešmašina
Da
Tuš: da
Tuš: ne
@@ -1146,7 +1146,7 @@
Slot uređaji
Klađenje
Prodavaonica elektronskih cigareta
- Da
+ Da;Kafeterija
Vino: da
Vino: maloprodaja
Vino: nudi se
@@ -1401,19 +1401,19 @@
Neaktivan
Broj erupcija
Kuglana
- Da
+ Da;SMS
Ne
- Da
+ Da;Video
Ne
Kontrastno
Jednostavno
Neispravno
- Da
+ Da:Točenje pitke vode;Točenje
Točenje pitke vode: ne
Mreža točenja pitke vode
Vibriranje: ne
- Da
- Da
+ Da;Vibracija prometnih signala
+ Da;Strelica prometnih signala
Strelica: ne
Slobodni grad
Lift
@@ -1479,8 +1479,8 @@
Autentifikacija pomoću kratke poruke: ne
Da
Autentifikacija nije potrebna: ne
- Da
- Da
+ Da;Bez autentifikacije
+ Da;Stalno kamiranje
Ne
Samo
Odredište
@@ -1509,12 +1509,12 @@
Janjetina
Svinjetina
Halal
- Da
+ Da;Kava
Ne
- Da
+ Da;Sladoled
Izvor
- Da
- Da
+ Da;Duhan
+ Da;Članstvo
Ne
Dijabetes
Dijagnostika
@@ -1522,7 +1522,7 @@
Uklanjanje kose
Kiropraktika
Shiatsu
- Da
+ Da;Poljoprivreda
Alati
Vrsta generatora: BWR-2
Vrsta generatora: BWR-3
@@ -1539,15 +1539,15 @@
Vrsta generatora: ICF
Vrsta generatora: bojler
Vrsta generatora: bioreaktor
- Da
- Da
+ Da;Fleurop
+ Da;Madrac
Ne
Korišteno
Ured
Dnevna soba
Kuhinja
Spavaća soba
- Da
+ Da;Namještaj
Ne
Krevet
Fotelja
@@ -1556,7 +1556,7 @@
Štednjak
Plin
Radijator
- Da
+ Da;Frižider
Ne
Arhitektura
Biologija
@@ -1573,9 +1573,9 @@
Njega
Psihologija
Korišteno
- Da
+ Da;Popravljanje računala
Prodaja računala: ne
- Da
+ Da;Dijelovi za računala
Dijelovi računala: ne
Optometričar
Kamen
@@ -2144,4 +2144,84 @@
Cestarina za kamione
Radionica
Auto
+ Vožnja vlakom
+ Respiracija
+ Metoda generatora: pumpna akumulacija vode
+ Metoda generatora: termalna
+ Efectivo se ne prihvaća
+ Spilja
+ Inline koturaljke
+ Potok
+ Brzaci
+ Efectivo
+ Vešmašina: ne
+ Pristup motornim sanjkama: privatno
+ Da;Prikolica
+ Određeno;Određeno za prikolice
+ Žiro kartica
+ Mobilnost
+ Sjeme
+ Greben
+ Dolina
+ Penjanje
+ Fjord
+ Potok
+ Dolina
+ Spilja
+ Opis pritojbe
+ Girocard se ne prihvaća
+ Girocard
+ Litecoin se ne prihvaća
+ Izvor energije: smeće
+ Pesticidi
+ Pristup motornim sanjkama: ne
+ Metoda generatora: akumulacija vode
+ Uslužno
+ Metoda generatora: fuzija
+ Da;Motorne sanjke
+ Ortopedija
+ Izvor energije: bioplin
+ Metoda generatora: baterije
+ Određeno;Određeno za motocikle
+ Ortoza
+ Gnojivo
+ Izvor energije: benzin
+ Kvart
+ Discover Card
+ Discover Card se ne prihvaća
+ Litecoin
+ Da;Moped
+ Zaljev
+ Rijeka
+ Luksuzno
+ Rijeka
+ Izvor energije: valovi
+ Poljoprivredni strojevi
+ Pristup motornim sanjkama
+ Da;Karavan
+ Da;Motocikl
+ Da;Kamion;Kamioni
+ Da;Osobe s invaliditetom
+ Jezero
+ Određeno;Određeno za karavane
+ Određeno;Određeno za motore
+ Određeno;Određeno za mopede
+ Kućna njega
+ Krma
+ Dijelovi strojeva
+ Izvor energije: plima
+ Izvor energije: biogorivo
+ Metoda generatora: fisija
+ Metoda generatora: vjetroturbina
+ Metoda generatora: brana
+ Metoda generatora: tok
+ Metoda generatora: solarna
+ Metoda generatora: sagorijevanje
+ Metoda generatora: plinifikacija
+ Metoda generatora: anaerobna razgradnja
+ Moto-skuter
+ Stijena za penjanje
+ Područje za penjanje
+ Ruta penjanja
+ Početak rute penjanja
\ No newline at end of file
diff --git a/OsmAnd/res/values-hr/strings.xml b/OsmAnd/res/values-hr/strings.xml
index c4eac9d7f5e..6027f116fce 100644
--- a/OsmAnd/res/values-hr/strings.xml
+++ b/OsmAnd/res/values-hr/strings.xml
@@ -1721,4 +1721,19 @@
Primanje podataka od servera …
Sjenčani reljef
Wikipedija
+ Osnovno
+ Invalidska kolica
+ Enduro motor
+ Go-kart
+ Zadaj ime za ovu točku
+ Strelice smjera
+ Deinstaliraj i ponovo pokreni
+ Moto-skuter
+ Inline koturaljke
+ Penjanje
+ Preuzmi Wikipedija karte
+ Odaberi širinu
+ Invalidska kolica naprijed
+ Prilagođeno
+ Prikaži ikone početka i kraja
\ No newline at end of file
diff --git a/OsmAnd/res/values-is/phrases.xml b/OsmAnd/res/values-is/phrases.xml
index 3eebdf30751..42de4da7413 100644
--- a/OsmAnd/res/values-is/phrases.xml
+++ b/OsmAnd/res/values-is/phrases.xml
@@ -4941,4 +4941,87 @@
Nafn hægra megin
Orðsifjar nafns
Nafn vinstra megin
+ Akstur
+ Akstur vélhjóla
+ Gangandi
+ Vetraríþróttir
+ Vöruflutningabifreiðar
+ Kart
+ Utanvegafarartæki
+ Ævintýraakstur vélhjóla
+ Enduro-vélhjól
+ Mótocross
+ Utanvegaakstur vélhjóla (drulluhjól)
+ Götuvélhjól
+ Sportvélhjól
+ Skellinöðrur
+ Ferðavélhjól
+ Kappakstur
+ Stígahlaup
+ Gönguferðir
+ Skautar á ís
+ Rafhjólreiðar
+ Raffjallahjólreiðar
+ Hjólreiðar á möl
+ Ferðaleið
+ Flug
+ Svifflug
+ Svifdrekaflug
+ Heitaloftsbelgur
+ Fallhlífastökk
+ Vélknúið svifvængjaflug
+ Umferð fisvéla
+ Loftpípuköfun
+ Kayak
+ Brimbretti
+ Seglbretti
+ Sveppatínsla
+ Uppskera
+ Örverufræði
+ Gerð tjaldstæðis
+ Einfalt
+ Staðlað
+ Þjónustað
+ Lúxus
+ Kaffihús
+ Flugíþróttir
+ Vatnaíþróttir
+ Aðrar leiðir
+ Bíll
+ Utanvegaakstur
+ Bakpokaferðir
+ Gönguleiðir
+ Hæðaklifur
+ Götuhlaup
+ Gangandi
+ Gönguskíði
+ Ferðaskíði
+ Skíði
+ Snjóbretti
+ Vélsleðar
+ Snjóþrúgur
+ Fjallahjólreiðar
+ Götuhjólreiðar
+ Drónaflug
+ Svifvængjaflug
+ Kanó
+ Köfun
+ Sund utanhúss
+ Vatnaskíði
+ Vélbátar
+ Flúðasiglingar
+ Hestaferðir
+ Trjáklifur
+ Hellaskoðun
+ Golfiðkun
+ Líkamsrækt (þol)
+ Línuskautar
+ Klifursvæði
+ Klifurleið
+ Neðst í klifurleið
+ Krónískir sjúkdómar
+ Grjótglímuklifur
+ Hjólreiðar
+ Já
+ Lestaferðir
\ No newline at end of file
diff --git a/OsmAnd/res/values-is/strings.xml b/OsmAnd/res/values-is/strings.xml
index d2fadbdf4e8..e0ee0d10339 100644
--- a/OsmAnd/res/values-is/strings.xml
+++ b/OsmAnd/res/values-is/strings.xml
@@ -5640,4 +5640,16 @@
Vél
Forskoða næstu beygju
Klifurleiðir
+ Birtir fyrst tíma og fjarlægð að næsta áfangastað. Slökktu á þessu til að sýna alltaf ítarlegar upplýsingar fyrir endanlega áfangastaðinn.
+ Sýna klifurleiðir
+ Reikna stærð
+ Hver hnappur myndi halda sinni stærð.
+ Hver hnappur myndi halda sínum hornradíus.
+ Hver hnappur myndi halda sínu ógegnsæi bakgrunns.
+ Valið snið \"%s\"
+ Brúun
+ Stilltu prósentuhlutfall brúunar (forspár) á staðsetningu á meðan leiðsögn stendur. Þessi breyta minnkar seinkun á birtingu staðsetningar þinnar á kortinu á meðan hreyfingu stendur.
+ Prósentuhlutfall brúunar á staðsetningu
+ Reikna…
+ Sýna ítarlegri upplýsingar um næsta áfangastað
\ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/plus/AppVersionUpgradeOnInit.java b/OsmAnd/src/net/osmand/plus/AppVersionUpgradeOnInit.java
index 0940617f4a3..662a2d26f06 100644
--- a/OsmAnd/src/net/osmand/plus/AppVersionUpgradeOnInit.java
+++ b/OsmAnd/src/net/osmand/plus/AppVersionUpgradeOnInit.java
@@ -139,8 +139,9 @@ public class AppVersionUpgradeOnInit {
public static final int VERSION_4_8_02 = 4802;
// 4803 - 4.8-03 (Merge asset files versions)
public static final int VERSION_4_8_03 = 4803;
+ public static final int VERSION_5_0_00 = 5000;
- public static final int LAST_APP_VERSION = VERSION_4_8_03;
+ public static final int LAST_APP_VERSION = VERSION_5_0_00;
private static final String VERSION_INSTALLED = "VERSION_INSTALLED";
@@ -271,7 +272,7 @@ void upgradeVersion(@NonNull SharedPreferences startPrefs, int lastVersion) {
if (prevAppVersion < VERSION_4_8_02) {
migrateTerrainModeDefaultPreferences(settings);
}
- if (prevAppVersion < VERSION_4_8_03) {
+ if (prevAppVersion < VERSION_5_0_00) {
app.getAppInitializer().addOnFinishListener(
init -> MergeAssetFilesVersionAlgorithm.execute(app)
);
diff --git a/OsmAnd/src/net/osmand/plus/configmap/tracks/appearance/DefaultAppearanceFragment.java b/OsmAnd/src/net/osmand/plus/configmap/tracks/appearance/DefaultAppearanceFragment.java
index e7dc7ae4630..5ce076d8819 100644
--- a/OsmAnd/src/net/osmand/plus/configmap/tracks/appearance/DefaultAppearanceFragment.java
+++ b/OsmAnd/src/net/osmand/plus/configmap/tracks/appearance/DefaultAppearanceFragment.java
@@ -115,27 +115,27 @@ protected void setupCards(@NonNull View view) {
FragmentActivity activity = requireActivity();
ViewGroup container = view.findViewById(R.id.cards_container);
- MultiStateCard arrowsCard = new MultiStateCard(activity, controller.getArrowsCardController());
+ MultiStateCard arrowsCard = new MultiStateCard(activity, controller.getArrowsCardController(), false);
container.addView(arrowsCard.build());
inflate(R.layout.list_item_divider_with_padding_basic, container, true);
- MultiStateCard iconsCard = new MultiStateCard(activity, controller.getIconsCardController());
+ MultiStateCard iconsCard = new MultiStateCard(activity, controller.getIconsCardController(), false);
container.addView(iconsCard.build());
inflate(R.layout.list_item_divider, container, true);
- MultiStateCard colorsCard = new MultiStateCard(activity, controller.getColorCardController());
+ MultiStateCard colorsCard = new MultiStateCard(activity, controller.getColorCardController(), false);
container.addView(colorsCard.build());
inflate(R.layout.list_item_divider, container, true);
- MultiStateCard widthCard = new MultiStateCard(activity, controller.getWidthCardController());
+ MultiStateCard widthCard = new MultiStateCard(activity, controller.getWidthCardController(), false);
container.addView(widthCard.build());
inflate(R.layout.list_item_divider, container, true);
- MultiStateCard splitCard = new MultiStateCard(activity, controller.getSplitCardController());
+ MultiStateCard splitCard = new MultiStateCard(activity, controller.getSplitCardController(), false);
container.addView(splitCard.build());
setupOnNeedScrollListener();
diff --git a/OsmAnd/src/net/osmand/plus/resources/CheckAssetsTask.java b/OsmAnd/src/net/osmand/plus/resources/CheckAssetsTask.java
index 8172462b818..7663a20b740 100644
--- a/OsmAnd/src/net/osmand/plus/resources/CheckAssetsTask.java
+++ b/OsmAnd/src/net/osmand/plus/resources/CheckAssetsTask.java
@@ -107,23 +107,25 @@ private List checkAssets() {
public void copyMissingJSAssets() {
try {
- AssetsCollection assetsCollection = app.getResourceManager().getAssets();
File appPath = app.getAppPath(null);
if (appPath.canWrite()) {
- for (AssetEntry asset : assetsCollection.getEntries()) {
+ AssetManager manager = app.getAssets();
+ AssetsCollection assets = app.getResourceManager().getAssets();
+
+ for (AssetEntry asset : assets.getEntries()) {
File jsFile = new File(appPath, asset.destination);
- if (asset.destination.contains(VOICE_PROVIDER_SUFFIX) && asset.destination
- .endsWith(TTSVOICE_INDEX_EXT_JS)) {
- File oggFile = new File(appPath, asset.destination.replace(
- VOICE_PROVIDER_SUFFIX, ""));
+ if (asset.destination.contains(VOICE_PROVIDER_SUFFIX)
+ && asset.destination.endsWith(TTSVOICE_INDEX_EXT_JS)) {
+ String name = asset.destination.replace(VOICE_PROVIDER_SUFFIX, "");
+ File oggFile = new File(appPath, name);
if (oggFile.getParentFile().exists() && !oggFile.exists()) {
- ResourceManager.copyAssets(app.getAssets(), asset.source, oggFile);
+ ResourceManager.copyAssets(manager, asset.source, oggFile, asset.getVersionTime());
}
} else if (asset.destination.startsWith(MODEL_3D_DIR) && !jsFile.exists()) {
- ResourceManager.copyAssets(app.getAssets(), asset.source, jsFile);
+ ResourceManager.copyAssets(manager, asset.source, jsFile, asset.getVersionTime());
}
if (jsFile.getParentFile().exists() && !jsFile.exists()) {
- ResourceManager.copyAssets(app.getAssets(), asset.source, jsFile);
+ ResourceManager.copyAssets(manager, asset.source, jsFile, asset.getVersionTime());
}
}
}
diff --git a/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java b/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java
index 14e58d69f7d..3030737acb0 100644
--- a/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java
+++ b/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java
@@ -1284,13 +1284,7 @@ private AssetsCollection readBundledAssets() throws IOException {
}
public static boolean copyAssets(@NonNull AssetManager manager, @NonNull String name,
- @NonNull File file, @Nullable Long lastModifiedTime) throws IOException {
- copyAssets(manager, name, file);
- return lastModifiedTime != null && file.setLastModified(lastModifiedTime);
- }
-
- public static void copyAssets(@NonNull AssetManager manager, @NonNull String name,
- @NonNull File file) throws IOException {
+ @NonNull File file, @Nullable Long modifiedTime) throws IOException {
if (file.exists()) {
Algorithms.removeAllFiles(file);
}
@@ -1300,5 +1294,7 @@ public static void copyAssets(@NonNull AssetManager manager, @NonNull String nam
Algorithms.streamCopy(is, out);
Algorithms.closeStream(out);
Algorithms.closeStream(is);
+
+ return modifiedTime != null && file.setLastModified(modifiedTime);
}
}
diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/backup/exporttype/LocalResourcesExportType.java b/OsmAnd/src/net/osmand/plus/settings/backend/backup/exporttype/LocalResourcesExportType.java
index 905cc52c308..a2c87df9436 100644
--- a/OsmAnd/src/net/osmand/plus/settings/backend/backup/exporttype/LocalResourcesExportType.java
+++ b/OsmAnd/src/net/osmand/plus/settings/backend/backup/exporttype/LocalResourcesExportType.java
@@ -64,8 +64,9 @@ protected boolean shouldSkipLocalItem(@NonNull OsmandApplication app, @NonNull L
File file = localItem.getFile();
AssetsCollection assets = resourceManager.getAssets();
if (assets.isFileDerivedFromAssets(file)) {
+ long lastModified = file.lastModified();
Long version = assets.getVersionTime(file);
- return version == null || version == file.lastModified();
+ return version == null || version == lastModified;
}
} catch (IOException e) {
LOG.error(e);