Compare commits

...

37 Commits

Author SHA1 Message Date
Dennis Guse a5296c4cd9 Release: v4.17.0 2024-12-21 20:49:12 +01:00
Dennis Guse 522d9ebe2e Public API: allow marker creation.
Fixes #2031.
2024-12-21 20:46:09 +01:00
Dennis Guse 26c660ec5b Dashboard API: check if parameters are present before forwarding them.
Part of #2030.
2024-12-18 19:18:37 +01:00
Dennis Guse fd9646bb1f Bugfix: on idle detection reset movement-based sensor data.
Fixes #1995.
2024-12-17 07:18:24 +01:00
Aindriú Mac Giolla Eoin 4966ba8868 Translated using Weblate (Irish)
Currently translated at 100.0% (149 of 149 strings)

Translation: OpenTracks/App store metadata files
Translate-URL: https://hosted.weblate.org/projects/opentracks/app-store-metadata-files/ga/
2024-12-14 20:00:49 +01:00
Patrick Santa Maria 6a8861b41b Translated using Weblate (Corsican)
Currently translated at 99.8% (531 of 532 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/co/
2024-12-12 23:01:02 +01:00
Stephan Paternotte 8dc20c48b7 Translated using Weblate (Dutch)
Currently translated at 100.0% (149 of 149 strings)

Translation: OpenTracks/App store metadata files
Translate-URL: https://hosted.weblate.org/projects/opentracks/app-store-metadata-files/nl/
2024-12-12 23:01:01 +01:00
Fjuro f2b8dc2e07 Translated using Weblate (Czech)
Currently translated at 100.0% (149 of 149 strings)

Translation: OpenTracks/App store metadata files
Translate-URL: https://hosted.weblate.org/projects/opentracks/app-store-metadata-files/cs/
2024-12-12 23:00:45 +01:00
Aindriú Mac Giolla Eoin 41ce088a0e Translated using Weblate (Irish)
Currently translated at 100.0% (148 of 148 strings)

Translation: OpenTracks/App store metadata files
Translate-URL: https://hosted.weblate.org/projects/opentracks/app-store-metadata-files/ga/
2024-12-11 22:10:56 +01:00
Stephan Paternotte 782cefb4ff Translated using Weblate (Dutch)
Currently translated at 100.0% (148 of 148 strings)

Translation: OpenTracks/App store metadata files
Translate-URL: https://hosted.weblate.org/projects/opentracks/app-store-metadata-files/nl/
2024-12-11 22:10:55 +01:00
Fjuro 35a02a2f81 Translated using Weblate (Czech)
Currently translated at 100.0% (148 of 148 strings)

Translation: OpenTracks/App store metadata files
Translate-URL: https://hosted.weblate.org/projects/opentracks/app-store-metadata-files/cs/
2024-12-11 22:10:54 +01:00
ovl-1 8c35bd6f4f Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.1% (517 of 532 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/nb_NO/
2024-12-11 22:10:53 +01:00
Simon Artus ad26ce795a Translated using Weblate (French)
Currently translated at 19.0% (28 of 147 strings)

Translation: OpenTracks/App store metadata files
Translate-URL: https://hosted.weblate.org/projects/opentracks/app-store-metadata-files/fr/
2024-12-11 22:10:53 +01:00
Fjuro ed1e47213d Translated using Weblate (Czech)
Currently translated at 100.0% (147 of 147 strings)

Translation: OpenTracks/App store metadata files
Translate-URL: https://hosted.weblate.org/projects/opentracks/app-store-metadata-files/cs/
2024-12-11 22:10:52 +01:00
Simon Artus cbb88fd1ae Translated using Weblate (French)
Currently translated at 94.7% (504 of 532 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/fr/
2024-12-11 22:10:52 +01:00
Aindriú Mac Giolla Eoin a6b808d5cf Translated using Weblate (Irish)
Currently translated at 100.0% (147 of 147 strings)

Translation: OpenTracks/App store metadata files
Translate-URL: https://hosted.weblate.org/projects/opentracks/app-store-metadata-files/ga/
2024-12-11 22:10:51 +01:00
Aindriú Mac Giolla Eoin 9718377307 Translated using Weblate (Irish)
Currently translated at 100.0% (532 of 532 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/ga/
2024-12-11 22:10:50 +01:00
Patrick Santa Maria dbf0c3bfc9 Translated using Weblate (Corsican)
Currently translated at 99.8% (531 of 532 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/co/
2024-12-11 22:10:50 +01:00
Stephan Paternotte 8dff211a26 Translated using Weblate (Dutch)
Currently translated at 100.0% (147 of 147 strings)

Translation: OpenTracks/App store metadata files
Translate-URL: https://hosted.weblate.org/projects/opentracks/app-store-metadata-files/nl/
2024-12-11 22:10:49 +01:00
Stephan Paternotte 319079162c Translated using Weblate (Dutch)
Currently translated at 99.8% (531 of 532 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/nl/
2024-12-11 22:10:48 +01:00
Stephan Paternotte 731c182a12 Translated using Weblate (Dutch)
Currently translated at 99.8% (531 of 532 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/nl/
2024-12-11 22:10:48 +01:00
Ghost of Sparta 6c4bb8d536 Translated using Weblate (Hungarian)
Currently translated at 99.8% (531 of 532 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/hu/
2024-12-11 22:10:47 +01:00
josé m a42aefa752 Translated using Weblate (Galician)
Currently translated at 99.6% (530 of 532 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/gl/
2024-12-11 22:10:47 +01:00
gallegonovato 2f489d73b0 Translated using Weblate (Spanish)
Currently translated at 99.8% (531 of 532 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/es/
2024-12-11 22:10:46 +01:00
Fjuro babd59f0ea Translated using Weblate (Czech)
Currently translated at 100.0% (532 of 532 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/cs/
2024-12-11 22:10:46 +01:00
Stephan Paternotte 37b7277f1a Translated using Weblate (Dutch)
Currently translated at 99.8% (530 of 531 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/nl/
2024-12-11 22:10:45 +01:00
Aindriú Mac Giolla Eoin ecb421248c Translated using Weblate (Irish)
Currently translated at 100.0% (531 of 531 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/ga/
2024-12-11 22:10:44 +01:00
Cloud Esp 42f53199a3 Translated using Weblate (French)
Currently translated at 94.7% (503 of 531 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/fr/
2024-12-11 22:10:44 +01:00
Fjuro 530b906f73 Translated using Weblate (Czech)
Currently translated at 100.0% (531 of 531 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/cs/
2024-12-11 22:10:43 +01:00
Fjuro e4ebf97c27 Translated using Weblate (Czech)
Currently translated at 100.0% (531 of 531 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://hosted.weblate.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/cs/
2024-12-11 22:10:43 +01:00
Dennis Guse e3cdc952a2 Release: v4.16.1 2024-12-11 22:10:30 +01:00
Dennis Guse aaf78e0b74 Settings: language chooser is now available for all Android versions.
Part of #1974
2024-12-11 22:06:09 +01:00
Dennis Guse c3a2c0d6d0 Github actions: checkout won't fetch tags unless we do a full clone. 2024-12-06 07:58:35 +01:00
Dennis Guse 05fbfcb914 Nightly build: provide details on build failure. 2024-12-06 07:24:13 +01:00
Dennis Guse 721b54b06f Release: v4.16.0 2024-12-05 18:03:58 +01:00
Dennis Guse b65230bc5d Bugfix: PublicAPI StartRecording recorded no data.
Problem was that the TrackRecordingService was not started as a ForegroundService anymore.

Fixes #1904.
2024-12-05 17:50:32 +01:00
dependabot[bot] 7c8fae66ef Bump com.android.tools.build:gradle from 8.7.2 to 8.7.3
Bumps com.android.tools.build:gradle from 8.7.2 to 8.7.3.

---
updated-dependencies:
- dependency-name: com.android.tools.build:gradle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-03 07:31:42 +01:00
43 changed files with 324 additions and 190 deletions
+3
View File
@@ -9,6 +9,9 @@ jobs:
steps: steps:
- name: checkout - name: checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-tags: true
fetch-depth: 0 #TODO See https://github.com/actions/checkout/issues/1471
- uses: actions/setup-java@v4 - uses: actions/setup-java@v4
with: with:
+5 -3
View File
@@ -1,5 +1,4 @@
name: Linting name: Linting
on: on:
push: push:
pull_request: pull_request:
@@ -10,12 +9,15 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository - name: checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-tags: true
fetch-depth: 0 #TODO See https://github.com/actions/checkout/issues/1471
- uses: actions/setup-java@v4 - uses: actions/setup-java@v4
with: with:
distribution: 'zulu' distribution: 'adopt'
java-version: '17' java-version: '17'
- run: ./gradlew lint - run: ./gradlew lint
+3
View File
@@ -11,6 +11,9 @@ jobs:
steps: steps:
- name: checkout - name: checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-tags: true
fetch-depth: 0 #TODO See https://github.com/actions/checkout/issues/1471
- uses: actions/setup-java@v4 - uses: actions/setup-java@v4
with: with:
+9 -8
View File
@@ -109,19 +109,20 @@ The API can be invoked by sending an explicit Intent to start an activity.
* Debug: `de.dennisguse.opentracks.debug` * Debug: `de.dennisguse.opentracks.debug`
* Nightly: `de.dennisguse.opentracks.nightly` * Nightly: `de.dennisguse.opentracks.nightly`
`Class`: `Classes`:
* **Start a recording:** `de.dennisguse.opentracks.publicapi.StartRecording` * **Start a recording:** `de.dennisguse.opentracks.publicapi.StartRecording`
* Set track data: `TRACK_NAME`, `TRACK_DESCRIPTION`, `TRACK_CATEGORY`, and `TRACK_ICON` (
non-localized identifier
see [/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java#L38](/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java#L38)).
NOTE: if `TRACK_ICON` is not present, `TRACK_CATEGORY` will be used to determine the icon (
localized).
* Send recorded data to another application via _Dashboard API_: `STATS_TARGET_PACKAGE` and
`STATS_TARGET_CLASS`
* **Stop a recording:** `de.dennisguse.opentracks.publicapi.StopRecording` * **Stop a recording:** `de.dennisguse.opentracks.publicapi.StopRecording`
* **Create a marker:** `de.dennisguse.opentracks.publicapi.CreateMarker`
For testing via adb: `adb shell am start -e someParameter someValue -n "package/class"` For testing via adb: `adb shell am start -e someParameter someValue -n "package/class"`
`StartRecording` supports the following parameters:
* Set track data: `TRACK_NAME`, `TRACK_DESCRIPTION`, `TRACK_CATEGORY`, and `TRACK_ICON` (non-localized identifier see [/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java#L38](/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java#L38)).
NOTE: if `TRACK_ICON` is not present, `TRACK_CATEGORY` will be used to determine the icon (localized).
* Send recorded data to another application via _Dashboard API_: `STATS_TARGET_PACKAGE` and `STATS_TARGET_CLASS`
The Public API is disabled by default to protect the user's privacy, but it can easily be enabled in the settings. The Public API is disabled by default to protect the user's privacy, but it can easily be enabled in the settings.
## File formats compatibility with open-source software ## File formats compatibility with open-source software
+5 -5
View File
@@ -6,7 +6,7 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:8.7.2' classpath 'com.android.tools.build:gradle:8.7.3'
} }
} }
@@ -26,7 +26,7 @@ def getVersionName = { ->
} }
return stdout.toString().trim() return stdout.toString().trim()
} catch (ignored) { } catch (ignored) {
return null throw new GradleException('VersionName could not be read:' + ignored.message)
} }
} }
@@ -39,7 +39,7 @@ def getVersionCode = { ->
} }
return Integer.valueOf(stdout.toString().trim()) return Integer.valueOf(stdout.toString().trim())
} catch (ignored) { } catch (ignored) {
return null throw new GradleException('VersionCode could not be read:' + ignored.message)
} }
} }
@@ -64,8 +64,8 @@ android {
defaultConfig { defaultConfig {
applicationId "de.dennisguse.opentracks" applicationId "de.dennisguse.opentracks"
versionCode 5938 versionCode 5975
versionName "v4.15.0" versionName "v4.17.0"
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\"" buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
@@ -0,0 +1,8 @@
v4.15.0: OpenTracks
Změny:
- Výběr jazyka v aplikaci (Android 14 nebo novější)
- Funkce zobrazit na mapě podporuje pouze aplikaci OSM Dashboard (odstraněno KML/KMZ nebo GPX)
Vývojář:
- GitHub Actions nyní používají Ubuntu
@@ -0,0 +1,4 @@
v4.16.0: OpenTracks
Oprava chyby:
- PublicAPI: spuštění záznamu nezaznamenalo žádná data
@@ -0,0 +1,8 @@
v4.16.1: OpenTracks
Změny:
- Výběr jazyka v aplikaci je nyní k dispozici pro všechny verze systému Android
(na základě velké poptávky)
Vývojář:
- GitHub Actions: při checkoutu se nestahovaly značky (noční aktualizace)
@@ -0,0 +1,5 @@
v4.16.0: OpenTracks
Bugfix:
- PublicAPI: starting a recording didn't record no data
@@ -0,0 +1,8 @@
v4.16.1: OpenTracks
Changes:
- In-app language selector now available for all Android versions
(due to some popular demand)
Developer:
- Github actions: checkout was not fetching tags (nightly)
@@ -0,0 +1,8 @@
v4.17.0: OpenTracks
Changes:
- Public API to create markers (while recording)
Bugfix:
- Sensors: on idle, set movement-based sensor data to 0
@@ -0,0 +1,7 @@
v4.14.1 : OpenTracks
Changements :
− La détection d’immobilité peut être désactivée
Correction de bogue :
− L’interface utilisateur pour ajouter des images aux marqueurs était cachée
@@ -0,0 +1,8 @@
v4.15.0 : OpenTracks
Changements :
− Sélection de la langue sur l’application (Android 14 ou plus)
− La fonctionnalité « montrer sur la carte » prend en charge uniquement OSM Dashboard (suppression de KML/KMZ ou GPX)
Développeurs :
− Les actions Github utilisent désormais Ubuntu
@@ -0,0 +1,8 @@
v4.15.0: OpenTracks
Athruithe:
- Roghnóir teanga in-app (Android 14 nó níos déanaí)
- Ní thacaíonn an ghné taispeáin-ar-mapa ach le Painéal OSM (bainte KML/KMZ nó GPX)
Forbróir:
- Úsáideann gníomhartha Github anois Ubuntu
@@ -0,0 +1,4 @@
v4.16.0: OpenTracks
Ceartúchán Bug:
- PublicAPI: níor taifeadadh aon sonraí le tosú taifeadta
@@ -0,0 +1,8 @@
v4.16.1: OpenTracks
Athruithe:
- Roghnóir teanga in-app ar fáil anois do gach leagan Android
(mar gheall ar roinnt éileamh coitianta)
Forbróir:
- Gníomhartha Github: ní raibh an tseiceáil amach ag fáil clibeanna (oíche)
@@ -0,0 +1,8 @@
v4.15.0: OpenTracks
Wijzigingen:
- In-app taalkiezer (Android 14 of hoger)
- Show-on-map-functie ondersteunt alleen OSM Dashboard (verwijderd KML/KMZ of GPX)
Ontwikkelaar:
- Github-acties gebruiken nu Ubuntu
@@ -0,0 +1,4 @@
v4.16.0: OpenTracks
Opgelost probleem:
- PublicAPI: bij het starten van een opname zijn geen gegevens vastgelegd
@@ -0,0 +1,8 @@
v4.16.1: OpenTracks
Veranderingen:
- In-app taalkiezer nu beschikbaar voor alle Android-versies
(op veler verzoek)
Ontwikkelaar:
- Github-acties: checkout was not fetching tags (nightly)
@@ -482,7 +482,7 @@ public class CustomContentProviderUtilsTest {
assertEquals(contentProviderUtils.getMarkers(trackId).size(), 1); assertEquals(contentProviderUtils.getMarkers(trackId).size(), 1);
// Get marker id that needs to delete. // Get marker id that needs to delete.
Marker.Id marker1Id = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker1))); Marker.Id marker1Id = contentProviderUtils.insertMarker(marker1);
// Delete // Delete
contentProviderUtils.deleteMarker(context, marker1Id); contentProviderUtils.deleteMarker(context, marker1Id);
@@ -509,7 +509,7 @@ public class CustomContentProviderUtilsTest {
assertEquals(contentProviderUtils.getMarkers(trackId).size(), 1); assertEquals(contentProviderUtils.getMarkers(trackId).size(), 1);
// Get marker id that needs to delete. // Get marker id that needs to delete.
Marker.Id marker1Id = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker1))); Marker.Id marker1Id = contentProviderUtils.insertMarker(marker1);
// Check marker has photo and it's in the external storage. // Check marker has photo and it's in the external storage.
assertTrue(marker1.hasPhoto()); assertTrue(marker1.hasPhoto());
@@ -553,11 +553,11 @@ public class CustomContentProviderUtilsTest {
// Insert at first. // Insert at first.
Marker marker1 = new Marker(trackId, contentProviderUtils.getLastValidTrackPoint(trackId)); Marker marker1 = new Marker(trackId, contentProviderUtils.getLastValidTrackPoint(trackId));
marker1.setDescription(MOCK_DESC); marker1.setDescription(MOCK_DESC);
Marker.Id marker1Id = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker1))); Marker.Id marker1Id = contentProviderUtils.insertMarker(marker1);
Marker marker2 = new Marker(trackId, contentProviderUtils.getLastValidTrackPoint(trackId)); Marker marker2 = new Marker(trackId, contentProviderUtils.getLastValidTrackPoint(trackId));
marker2.setDescription(MOCK_DESC); marker2.setDescription(MOCK_DESC);
Marker.Id marker2Id = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker2))); Marker.Id marker2Id = contentProviderUtils.insertMarker(marker2);
// Delete // Delete
assertNotNull(contentProviderUtils.getMarker(marker1Id)); assertNotNull(contentProviderUtils.getMarker(marker1Id));
@@ -598,7 +598,7 @@ public class CustomContentProviderUtilsTest {
Marker marker = new Marker(trackId, contentProviderUtils.getLastValidTrackPoint(trackId)); Marker marker = new Marker(trackId, contentProviderUtils.getLastValidTrackPoint(trackId));
marker.setDescription(TEST_DESC); marker.setDescription(TEST_DESC);
Marker.Id markerId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker))); Marker.Id markerId = contentProviderUtils.insertMarker(marker);
assertEquals(TEST_DESC, contentProviderUtils.getMarker(markerId).getDescription()); assertEquals(TEST_DESC, contentProviderUtils.getMarker(markerId).getDescription());
} }
@@ -614,7 +614,7 @@ public class CustomContentProviderUtilsTest {
// Insert at first. // Insert at first.
Marker marker = new Marker(trackId, contentProviderUtils.getLastValidTrackPoint(trackId)); Marker marker = new Marker(trackId, contentProviderUtils.getLastValidTrackPoint(trackId));
marker.setDescription(TEST_DESC); marker.setDescription(TEST_DESC);
Marker.Id markerId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker))); Marker.Id markerId = contentProviderUtils.insertMarker(marker);
// Update // Update
marker = contentProviderUtils.getMarker(markerId); marker = contentProviderUtils.getMarker(markerId);
@@ -638,7 +638,7 @@ public class CustomContentProviderUtilsTest {
TrackPoint trackPoint = contentProviderUtils.getLastValidTrackPoint(trackId); TrackPoint trackPoint = contentProviderUtils.getLastValidTrackPoint(trackId);
Marker marker = TestDataUtil.createMarkerWithPhoto(context, trackId, trackPoint); Marker marker = TestDataUtil.createMarkerWithPhoto(context, trackId, trackPoint);
marker.setDescription(TEST_DESC); marker.setDescription(TEST_DESC);
Marker.Id markerId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker))); Marker.Id markerId = contentProviderUtils.insertMarker(marker);
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.id()); File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.id());
assertTrue(dir.exists()); assertTrue(dir.exists());
@@ -673,7 +673,7 @@ public class CustomContentProviderUtilsTest {
TrackPoint trackPoint = contentProviderUtils.getLastValidTrackPoint(trackId); TrackPoint trackPoint = contentProviderUtils.getLastValidTrackPoint(trackId);
Marker marker = TestDataUtil.createMarkerWithPhoto(context, trackId, trackPoint); Marker marker = TestDataUtil.createMarkerWithPhoto(context, trackId, trackPoint);
marker.setDescription(TEST_DESC); marker.setDescription(TEST_DESC);
Marker.Id markerId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker))); Marker.Id markerId = contentProviderUtils.insertMarker(marker);
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.id()); File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.id());
assertTrue(dir.exists()); assertTrue(dir.exists());
@@ -709,7 +709,7 @@ public class CustomContentProviderUtilsTest {
marker.setDescription(TEST_DESC); marker.setDescription(TEST_DESC);
Marker otherMarker = TestDataUtil.createMarkerWithPhoto(context, trackId, trackPoint); Marker otherMarker = TestDataUtil.createMarkerWithPhoto(context, trackId, trackPoint);
otherMarker.setDescription(TEST_DESC); otherMarker.setDescription(TEST_DESC);
Marker.Id markerId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker))); Marker.Id markerId = contentProviderUtils.insertMarker(marker);
contentProviderUtils.insertMarker(otherMarker); contentProviderUtils.insertMarker(otherMarker);
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.id()); File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.id());
@@ -31,13 +31,7 @@ public class PublicApiTest {
private final Context context = ApplicationProvider.getApplicationContext(); private final Context context = ApplicationProvider.getApplicationContext();
@Test //NOTE: this doesn't check if the TrackRecordingService was started in foreground.
public void StartTest() {
PreferencesUtils.setBoolean(R.string.publicapi_enabled_key, true);
context.startActivity(IntentUtils.newIntent(context, StartRecording.class));
}
@Test @Test
public void StartStopTest() throws InterruptedException { public void StartStopTest() throws InterruptedException {
PreferencesUtils.setBoolean(R.string.publicapi_enabled_key, true); PreferencesUtils.setBoolean(R.string.publicapi_enabled_key, true);
+18
View File
@@ -98,6 +98,14 @@ limitations under the License.
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name=".publicapi.CreateMarker"
android:exported="true"
android:theme="@style/SplashTheme">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- NOTE: the name of the MAIN/LAUNCHER is used by icon packs; if this is changed, icon packs break.--> <!-- NOTE: the name of the MAIN/LAUNCHER is used by icon packs; if this is changed, icon packs break.-->
<activity <activity
@@ -401,6 +409,16 @@ limitations under the License.
android:name=".services.TrackDeleteService" android:name=".services.TrackDeleteService"
android:exported="false" android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE"/> android:permission="android.permission.BIND_JOB_SERVICE"/>
<!--Necessary for SDK < 33 to (re-)store per app locale information-->
<service
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
android:enabled="false"
android:exported="false">
<meta-data
android:name="autoStoreLocales"
android:value="true" />
</service>
</application> </application>
<queries> <queries>
@@ -487,12 +487,11 @@ public class ContentProviderUtils {
return markers; return markers;
} }
/** // TODO Merge with updateMarker
* @return the content provider URI of the inserted marker. public Marker.Id insertMarker(@NonNull Marker marker) {
*/
public Uri insertMarker(@NonNull Marker marker) {
marker.setId(null); marker.setId(null);
return contentResolver.insert(MarkerColumns.CONTENT_URI, createContentValues(marker)); Uri uri = contentResolver.insert(MarkerColumns.CONTENT_URI, createContentValues(marker));
return new Marker.Id(ContentUris.parseId(uri));
} }
private void deleteMarkerPhoto(Context context, Marker marker) { private void deleteMarkerPhoto(Context context, Marker marker) {
@@ -13,7 +13,7 @@ import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
public abstract class AbstractAPIActivity extends AppCompatActivity { abstract class AbstractAPIActivity extends AppCompatActivity {
private final String TAG = AbstractAPIActivity.class.getSimpleName(); private final String TAG = AbstractAPIActivity.class.getSimpleName();
@@ -33,11 +33,15 @@ public abstract class AbstractAPIActivity extends AppCompatActivity {
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
SplashScreen splashScreen = SplashScreen.installSplashScreen(this); SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
splashScreen.setKeepOnScreenCondition(() -> true ); splashScreen.setKeepOnScreenCondition(() -> true);
if (PreferencesUtils.isPublicAPIenabled()) { if (PreferencesUtils.isPublicAPIenabled()) {
Log.i(TAG, "Received and trying to execute requested action."); Log.i(TAG, "Received and trying to execute requested action.");
TrackRecordingServiceConnection.execute(this, serviceConnectedCallback); if (requiresForeground()) {
TrackRecordingServiceConnection.executeForeground(this, serviceConnectedCallback);
} else {
TrackRecordingServiceConnection.execute(this, serviceConnectedCallback);
}
} else { } else {
Toast.makeText(this, getString(R.string.settings_public_api_disabled_toast), Toast.LENGTH_LONG).show(); Toast.makeText(this, getString(R.string.settings_public_api_disabled_toast), Toast.LENGTH_LONG).show();
Log.w(TAG, "Public API is disabled; ignoring request."); Log.w(TAG, "Public API is disabled; ignoring request.");
@@ -48,4 +52,8 @@ public abstract class AbstractAPIActivity extends AppCompatActivity {
protected abstract void execute(TrackRecordingService service); protected abstract void execute(TrackRecordingService service);
protected abstract boolean isPostExecuteStopService(); protected abstract boolean isPostExecuteStopService();
protected boolean requiresForeground() {
return false;
}
} }
@@ -0,0 +1,16 @@
package de.dennisguse.opentracks.publicapi;
import de.dennisguse.opentracks.services.TrackRecordingService;
public class CreateMarker extends AbstractAPIActivity {
@Override
protected void execute(TrackRecordingService service) {
service.createMarker();
}
@Override
protected boolean isPostExecuteStopService() {
return false;
}
}
@@ -12,7 +12,7 @@ import de.dennisguse.opentracks.ui.markers.MarkerEditActivity;
import de.dennisguse.opentracks.util.IntentUtils; import de.dennisguse.opentracks.util.IntentUtils;
/** /**
* Public API to creates a Marker for a given track with a given location * INTERNAL: only meant for clients of OSMDashboard API.
*/ */
public class CreateMarkerActivity extends AppCompatActivity { public class CreateMarkerActivity extends AppCompatActivity {
@@ -23,8 +23,11 @@ public class CreateMarkerActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
Track.Id trackId = new Track.Id(getIntent().getLongExtra(EXTRA_TRACK_ID, 0L)); Track.Id trackId = new Track.Id(getIntent().getLongExtra(EXTRA_TRACK_ID, -1L));
Location location = getIntent().getParcelableExtra(EXTRA_LOCATION); Location location = getIntent().getParcelableExtra(EXTRA_LOCATION);
if (!getIntent().hasExtra(EXTRA_TRACK_ID) || location == null) {
throw new IllegalStateException("Parameter 'track_id' and/or 'location' missing or invalid.");
}
TrackRecordingServiceConnection.execute(this, (service, self) -> { TrackRecordingServiceConnection.execute(this, (service, self) -> {
Intent intent = IntentUtils Intent intent = IntentUtils
@@ -1,34 +1,19 @@
package de.dennisguse.opentracks.publicapi; package de.dennisguse.opentracks.publicapi;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.AbstractActivity;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.data.models.Marker; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.databinding.MarkerDetailActivityBinding; import de.dennisguse.opentracks.databinding.MarkerDetailActivityBinding;
import de.dennisguse.opentracks.ui.markers.DeleteMarkerDialogFragment.DeleteMarkerCaller;
import de.dennisguse.opentracks.ui.markers.MarkerDetailActivity; import de.dennisguse.opentracks.ui.markers.MarkerDetailActivity;
import de.dennisguse.opentracks.ui.markers.MarkerDetailFragment;
import de.dennisguse.opentracks.util.IntentUtils; import de.dennisguse.opentracks.util.IntentUtils;
/** /**
* Public api to show an existing marker * INTERNAL: only meant for clients of OSMDashboard API.
*/ */
public class ShowMarkerActivity extends AppCompatActivity { public class ShowMarkerActivity extends AppCompatActivity {
@@ -44,10 +29,11 @@ public class ShowMarkerActivity extends AppCompatActivity {
protected void onCreate(Bundle bundle) { protected void onCreate(Bundle bundle) {
super.onCreate(bundle); super.onCreate(bundle);
Marker.Id markerId = new Marker.Id(getIntent().getLongExtra(EXTRA_MARKER_ID, 0)); if (!getIntent().hasExtra(EXTRA_MARKER_ID)) {
if (markerId.id() == 0) { throw new IllegalStateException("Parameter 'markerId' missing");
throw new IllegalStateException("No valid markerId provided");
} }
Marker.Id markerId = new Marker.Id(getIntent().getLongExtra(EXTRA_MARKER_ID, -1));
Intent intent = IntentUtils.newIntent(this, MarkerDetailActivity.class) Intent intent = IntentUtils.newIntent(this, MarkerDetailActivity.class)
.putExtra(MarkerDetailActivity.EXTRA_MARKER_ID, markerId); .putExtra(MarkerDetailActivity.EXTRA_MARKER_ID, markerId);
startActivity(intent); startActivity(intent);
@@ -62,4 +62,9 @@ public class StartRecording extends AbstractAPIActivity {
protected boolean isPostExecuteStopService() { protected boolean isPostExecuteStopService() {
return false; return false;
} }
@Override
protected boolean requiresForeground() {
return true;
}
} }
@@ -55,7 +55,9 @@ public abstract class Aggregator<Input, Output> {
/** /**
* Reset long term aggregated values (more than derived from previous SensorData). e.g. overall distance. * Reset long term aggregated values (more than derived from previous SensorData). e.g. overall distance.
*/ */
public void reset() {} public void reset() {
value = getNoneValue();
}
/** /**
* Is the data recent considering the current time. * Is the data recent considering the current time.
@@ -37,10 +37,5 @@ public class AggregatorBarometer extends Aggregator<AtmosphericPressure, Altitud
return new AltitudeGainLoss(0f, 0f); return new AltitudeGainLoss(0f, 0f);
} }
@Override
public void reset() {
value = getNoneValue();
}
public record Data(Altitude gain, Altitude loss) {} public record Data(Altitude gain, Altitude loss) {}
} }
@@ -16,11 +16,6 @@ public class AggregatorGPS extends Aggregator<Position, Position> {
value = current.value(); value = current.value();
} }
@Override
public void reset() {
value = null;
}
@NonNull @NonNull
@Override @Override
protected Position getNoneValue() { protected Position getNoneValue() {
@@ -15,6 +15,11 @@ public class AggregatorHeartRate extends Aggregator<HeartRate, HeartRate> {
this.value = current.value(); this.value = current.value();
} }
@Override
public void reset() {
// We don't need to reset the heart rate as this value is valid for a certain amount of time: and it is not an aggregate.
}
@NonNull @NonNull
@Override @Override
protected HeartRate getNoneValue() { protected HeartRate getNoneValue() {
@@ -36,7 +36,9 @@ import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.time.Duration; import java.time.Duration;
import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.data.models.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataSet; import de.dennisguse.opentracks.sensors.sensorData.SensorDataSet;
@@ -243,6 +245,20 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
gpsStatusObservable.postValue(STATUS_GPS_DEFAULT); gpsStatusObservable.postValue(STATUS_GPS_DEFAULT);
} }
public Marker.Id createMarker() {
if (!isRecording()) {
return null;
}
//TODO This contains some duplication to TrackRecodingActivity's Marker creation
TrackPoint trackPoint = trackRecordingManager.getLastStoredTrackPointWithLocation();
if (trackPoint == null) {
return null;
}
Marker marker = new Marker(recordingStatus.trackId(), trackPoint);
return new ContentProviderUtils(this).insertMarker(marker);
}
@Override @Override
public boolean newTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) { public boolean newTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) {
if (!isRecording()) { if (!isRecording()) {
@@ -1,25 +1,36 @@
package de.dennisguse.opentracks.settings; package de.dennisguse.opentracks.settings;
import android.annotation.SuppressLint;
import android.app.LocaleConfig; import android.app.LocaleConfig;
import android.content.Context; import android.content.Context;
import android.os.Build; import android.os.Build;
import android.os.LocaleList; import android.os.LocaleList;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.app.LocaleManagerCompat;
import androidx.core.os.LocaleListCompat; import androidx.core.os.LocaleListCompat;
import androidx.preference.ListPreference; import androidx.preference.ListPreference;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Optional;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
public class LocalePreference extends ListPreference { public class LocalePreference extends ListPreference {
private String TAG = LocalePreference.class.getSimpleName();
public LocalePreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { public LocalePreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes); super(context, attrs, defStyleAttr, defStyleRes);
init(context); init(context);
@@ -40,18 +51,17 @@ public class LocalePreference extends ListPreference {
init(context); init(context);
} }
// /data/user/0/de.dennisguse.opentracks.debug/files/androidx.appcompat.app.AppCompatDelegate.application_locales_record_file: open failed: ENOENT (No such file or directory)
private void init(Context context) { private void init(Context context) {
setPersistent(false); setPersistent(false);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
setEnabled(false);
return;
}
LocaleItem systemDefaultLocale = new LocaleItem("", context.getString(R.string.settings_locale_system_default)); LocaleItem systemDefaultLocale = new LocaleItem("", context.getString(R.string.settings_locale_system_default));
LocaleItem currentLocale = new LocaleItem(Locale.getDefault().toLanguageTag(), Locale.getDefault().getDisplayName()); LocaleItem currentLocale = new LocaleItem(Locale.getDefault().toLanguageTag(), Locale.getDefault().getDisplayName());
// All available options // All available options
LocaleList supportedLocales = LocaleConfig.fromContextIgnoringOverride(context).getSupportedLocales(); LocaleList supportedLocales = getLocaleListCompat();
ArrayList<LocaleItem> localeItemsSorting = new ArrayList<>(); ArrayList<LocaleItem> localeItemsSorting = new ArrayList<>();
for (int i = 0; i < supportedLocales.size(); i++) { for (int i = 0; i < supportedLocales.size(); i++) {
Locale current = supportedLocales.get(i); Locale current = supportedLocales.get(i);
@@ -104,4 +114,36 @@ public class LocalePreference extends ListPreference {
String displayName String displayName
) { ) {
} }
// TODO Get this functionality from any Androidx compat library: should be in LocaleListCompat or LocaleManagerCompat
// 2024-12-12: on Android 14-: LocaleManagerCompat.getApplicationLocales(getContext()) returned "[]"
// See: https://stackoverflow.com/questions/78116375/per-app-language-preferences-get-list-of-apps-available-language-programmatic
@Deprecated
private LocaleList getLocaleListCompat() {
var a = LocaleManagerCompat.getApplicationLocales(getContext());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
return LocaleConfig.fromContextIgnoringOverride(getContext()).getSupportedLocales();
}
@SuppressLint("DiscouragedApi") int localesConfigId = getContext().getResources().getIdentifier("_generated_res_locale_config", "xml", getContext().getPackageName());
List<String> localeList = new ArrayList<>();
XmlPullParser xpp = getContext().getResources().getXml(localesConfigId);
try {
while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
if (xpp.getEventType() == XmlPullParser.START_TAG) {
if ("locale".equals(xpp.getName()) && xpp.getAttributeCount() > 0 && xpp.getAttributeName(0).equals("name")) {
localeList.add(xpp.getAttributeValue(0));
}
}
xpp.next();
}
} catch (IOException | XmlPullParserException e) {
Log.e(TAG, "Could not load locales: " + e.getMessage());
}
Optional<String> locales = localeList.stream().reduce((s1, s2) -> s1 + "," + s2);
return locales
.map(LocaleList::forLanguageTags)
.orElseGet(LocaleList::getEmptyLocaleList);
}
} }
+6 -2
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="about_preference_title">Apprupositu d’OpenTracks</string> <string name="about_preference_title">Apprupositu</string>
<string name="about_description"><i>OpenTracks</i> hè un’appiecazione di tracciatu spurtivu chì rispetta cumpletamente a vostra vita privata.</string> <string name="about_description"><i>OpenTracks</i> hè un’appiecazione di tracciatu spurtivu chì rispetta cumpletamente a vostra vita privata.</string>
<string name="about_url">Pagina web di u prughjettu : <a href="%1$s">%1$s</a></string> <string name="about_url">Pagina web di u prughjettu : <a href="%1$s">%1$s</a></string>
<string name="about_version_code">Codice di a versione :%1$d</string> <string name="about_version_code">Codice di a versione :%1$d</string>
@@ -278,7 +278,7 @@
<string name="settings_export_filename_title">Furmatu di u nome di schedariu</string> <string name="settings_export_filename_title">Furmatu di u nome di schedariu</string>
<string name="settings_chart_by_distance">Secondu à a distanza</string> <string name="settings_chart_by_distance">Secondu à a distanza</string>
<string name="settings_chart_by_time">Secondu à a durata</string> <string name="settings_chart_by_time">Secondu à a durata</string>
<string name="settings_ui_dynamic_colors_summary">Impiegà i culori dinamichi definiti da l’utilizatore (solu Android 12è più ; richiede un rilanciu manuale)</string> <string name="settings_ui_dynamic_colors_summary">Impiegà i culori dinamichi definiti da l’utilizatore (solu Android 12 è più ; richiede un rilanciu manuale)</string>
<string name="settings_recording_customize_layout_title">Persunalizà u vostru accunciamentu d’arregistramentu</string> <string name="settings_recording_customize_layout_title">Persunalizà u vostru accunciamentu d’arregistramentu</string>
<string name="settings_recording_customize_layout_select_columns">Campi di dati à a linea</string> <string name="settings_recording_customize_layout_select_columns">Campi di dati à a linea</string>
<string name="settings_recording_keep_screen_on_while_recording_title">Cunservà u screnu accesu</string> <string name="settings_recording_keep_screen_on_while_recording_title">Cunservà u screnu accesu</string>
@@ -553,4 +553,8 @@
<string name="settings_recording_min_sampling_interval_title">Intervallu di durata di campiunariu</string> <string name="settings_recording_min_sampling_interval_title">Intervallu di durata di campiunariu</string>
<string name="settings_announcements_idle_title">Inattività</string> <string name="settings_announcements_idle_title">Inattività</string>
<string name="voiceIdle">Diventà inattivu.</string> <string name="voiceIdle">Diventà inattivu.</string>
<string name="settings_locale_title">Lingua</string>
<string name="settings_locale_system_default">Parametri predefiniti di u sistema</string>
<string name="stats_gain_loss">Guadagnu è perdita</string>
<string name="voice_announce_lap_power_key">AnnunziamentuVucalePutenzaÀUGiru</string>
</resources> </resources>
+7 -20
View File
@@ -14,7 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--><resources> --><resources>
<string name="about_preference_title">O OpenTracks</string> <string name="about_preference_title">O aplikaci</string>
<string name="about_description"><i> OpenTracks </i> je aplikace pro záznam vašich sportů, která zcela respektuje vaše soukromí.</string> <string name="about_description"><i> OpenTracks </i> je aplikace pro záznam vašich sportů, která zcela respektuje vaše soukromí.</string>
<string name="about_url">Webová stránka projektu: <a href="%1$s">%1$s</a></string> <string name="about_url">Webová stránka projektu: <a href="%1$s">%1$s</a></string>
<string name="about_version_name">Název verze: %1$s</string> <string name="about_version_name">Název verze: %1$s</string>
@@ -30,10 +30,7 @@ limitations under the License.
\n* funguje zcela offline \n* funguje zcela offline
\n* zobrazit trasy na mapě (viz níže)</string> \n* zobrazit trasy na mapě (viz níže)</string>
<string name="help_track_map_title">Jak ukázat trasu na mapě\?</string> <string name="help_track_map_title">Jak ukázat trasu na mapě\?</string>
<string name="help_track_map_content"> \u0020Použijte malou ikonu mapy. <string name="help_track_map_content">Použijte malou ikonu mapy.\n a) (živé aktualizace) Nainstalujte si aplikaci <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>. Poskytuje online i offline mapy prostřednictvím <a href="https://www.openstreetmap.org">OpenStreetMap</a>.\n OSMDashboard je samostatná aplikace, která má (dočasný) přístup pouze k datům stop, které se budou zobrazovat. \n b) Prostřednictvím normální mapové aplikace (např. <a href="http://osmand.net/">OsmAnd</a> a <a href="https://maps.me/">MAPS.ME</a>). Tyto aplikace musí podporovat formát souboru KMZ (pouze umístění a časová razítka). Technicky vzato musí aplikace podporovat <i>ACTION_VIEW</i> s MIME <i>application/vnd.google-earth.kmz</i>.</string>
\n \u0020a) \u0020(živé aktualizace) Nainstalujte <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>. \u0020Poskytuje online nebo offline mapy prostřednictvím <a href="https://www.openstreetmap.org">OpenStreetMap</a>.
\n \u0020Ve skutečnosti je OSMDashboard samostatná aplikace, která má přístup (dočasně) pouze k datům stop, které se budou zobrazovat. \u0020
\n \u0020b) \u0020Prostřednictvím normální mapové aplikace (např. <a href="http://osmand.net/">OsmAnd</a> a <a href="https://maps.me/">MAPS.ME</a>). \u0020Tyto aplikace musí podporovat formát souboru KMZ (pouze umístění a časová razítka). \u0020Ve skutečnosti musí aplikace podporovat <i>ACTION_VIEW</i> pomocí MIME <i>application/vnd.google-earth.kmz</i>. \u0020</string>
<string name="help_storage_pictures_title">Jak ukládá OpenTracks obrázky pořízené jako značky na cestě\?</string> <string name="help_storage_pictures_title">Jak ukládá OpenTracks obrázky pořízené jako značky na cestě\?</string>
<string name="help_storage_pictures_content">Jsou uloženy v interním úložišti aplikace (tj. přístupné pouze v rámci OpenTracks).</string> <string name="help_storage_pictures_content">Jsou uloženy v interním úložišti aplikace (tj. přístupné pouze v rámci OpenTracks).</string>
<string name="help_track_export_title">Jak mohu exportovat/sdílet zaznamenané stopy\?</string> <string name="help_track_export_title">Jak mohu exportovat/sdílet zaznamenané stopy\?</string>
@@ -44,22 +41,9 @@ limitations under the License.
<string name="help_data_storage_title">Jak OpenTracks ukládá data ze senzorů\?</string> <string name="help_data_storage_title">Jak OpenTracks ukládá data ze senzorů\?</string>
<string name="help_data_storage_content"> Data senzorů se ukládají na zaznamenané místo. Pokud jde o snímač srdeční frekvence, znamená to, že na každé místo je uloženo pouze <i>jedno</i> měření srdeční frekvence. Pokud stojíte v klidu nebo jste uvnitř, nebudou zaznamenána žádná data ze senzorů (ale budou zobrazena). </string> <string name="help_data_storage_content"> Data senzorů se ukládají na zaznamenané místo. Pokud jde o snímač srdeční frekvence, znamená to, že na každé místo je uloženo pouze <i>jedno</i> měření srdeční frekvence. Pokud stojíte v klidu nebo jste uvnitř, nebudou zaznamenána žádná data ze senzorů (ale budou zobrazena). </string>
<string name="help_gps_troubleshooting_title">OpenTracks nezaznamenává místa?</string> <string name="help_gps_troubleshooting_title">OpenTracks nezaznamenává místa?</string>
<string name="help_gps_troubleshooting_content"> \u0020Co můžete udělat: <string name="help_gps_troubleshooting_content">Co můžete udělat:\n a) zkontrolujte zda je zapnuta poloha,\n b) zkuste zlepšit příjem GPS (např. vyjít ven),\n c) zkontrolujte funkčnost polohy s aplikací <a href="https://f-droid.org/cs/packages/com.android.gpstest.osmdroid/">GPSTest </a> a\n d) vypněte spořič baterie.\n \n Pokud nic nepomůže, nahlaste to jako chybu.</string>
\n \u0020a) zkontrolujte zda je zapnuta GPS,
\n \u0020b) zkuste zlepšit příjem GPS (např. vyjít ven),
\n \u0020c) zkontrolujte, zda používáte aplikaci <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest </a> a
\n \u0020d) deaktivujte úsporu energie.
\n \u0020
\n \u0020Pokud nic nepomůže, nahlaste to jako chybu. \u0020</string>
<string name="help_support_title">Jak mohu podpořit OpenTracks\?</string> <string name="help_support_title">Jak mohu podpořit OpenTracks\?</string>
<string name="help_support_content"> \u0020Můžete: <string name="help_support_content">Můžete:\n a) dát vědět ostatním o OpenTracks\n b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">navrhnout nové funkce</a>,\n c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">nahlásit chybu</a>,\n d) pomoci při vývoji aplikace,\n e) koupit si aplikaci v <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Obchodě Google Play</a>,\n f) zaslat dar nebo\n g) udělat něco jiného, co si myslíte že pomůže OpenTracks.</string>
\n \u0020a) dát vědět ostatním o OpenTracks
\n \u0020b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">navrhnout nové funkce</a>,
\n \u0020c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">nahlásit chybu</a>,
\n \u0020d) pomoci při vývoji aplikace,
\n \u0020e) zakoupit v <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Obchodě Google Play</a>,
\n \u0020f) zaslat dar či
\n \u0020g) udělat něco jiného, co si myslíte že pomůže OpenTracks. \u0020</string>
<!-- Activity Type --> <!-- Activity Type -->
<string name="activity_type_airplane">letadlo</string> <string name="activity_type_airplane">letadlo</string>
<string name="activity_type_atv">terénní auta</string> <string name="activity_type_atv">terénní auta</string>
@@ -607,4 +591,7 @@ limitations under the License.
<string name="power_x_watt">Výkon {x, plural, =1 {1 watt} few {# watty} other {# wattů} }</string> <string name="power_x_watt">Výkon {x, plural, =1 {1 watt} few {# watty} other {# wattů} }</string>
<string name="create_marker_error">Nepodařilo se vytvořit značku. Zkuste to znovu.</string> <string name="create_marker_error">Nepodařilo se vytvořit značku. Zkuste to znovu.</string>
<string name="empty">" "</string> <string name="empty">" "</string>
<string name="settings_locale_title">Jazyk</string>
<string name="settings_locale_system_default">Podle systému</string>
<string name="stats_gain_loss">Stoupání a klesání</string>
</resources> </resources>
+4 -1
View File
@@ -14,7 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--><resources> --><resources>
<string name="about_preference_title">Acerca de OpenTracks</string> <string name="about_preference_title">Acerca de</string>
<string name="about_description"><i> OpenTracks </i> es una aplicación de seguimiento deportivo que respeta completamente su privacidad.</string> <string name="about_description"><i> OpenTracks </i> es una aplicación de seguimiento deportivo que respeta completamente su privacidad.</string>
<string name="about_url">Página web del proyecto: <a href="%1$s">%1$s</a></string> <string name="about_url">Página web del proyecto: <a href="%1$s">%1$s</a></string>
<string name="about_version_name">Nombre de la versión: %1$s</string> <string name="about_version_name">Nombre de la versión: %1$s</string>
@@ -661,4 +661,7 @@ limitations under the License.
<string name="create_marker_error">No se ha podido crear un marcador. Inténtelo de nuevo.</string> <string name="create_marker_error">No se ha podido crear un marcador. Inténtelo de nuevo.</string>
<string name="voice_announce_lap_power_key">voiceAnnounceLapPower</string> <string name="voice_announce_lap_power_key">voiceAnnounceLapPower</string>
<string name="power">Potencia</string> <string name="power">Potencia</string>
<string name="settings_locale_title">Idioma</string>
<string name="settings_locale_system_default">Predeterminado del sistema</string>
<string name="stats_gain_loss">Ganancia y pérdida</string>
</resources> </resources>
+4
View File
@@ -662,4 +662,8 @@ Si le dispositif GPS signale des données inexactes (par exemple, la localisatio
<string name="activity_type_kickscooter">trottinette</string> <string name="activity_type_kickscooter">trottinette</string>
<string name="voiceSpeed">{n, plural, =1 {1} autres {{n,number,#.0}} }</string> <string name="voiceSpeed">{n, plural, =1 {1} autres {{n,number,#.0}} }</string>
<string name="voiceDistance">{n, plural, =1 {1 } autres {{n,number,#.0}} }</string> <string name="voiceDistance">{n, plural, =1 {1 } autres {{n,number,#.0}} }</string>
<string name="settings_locale_system_default">Paramètres par défaut du système</string>
<string name="settings_locale_title">Langue</string>
<string name="stats_gain_loss">Gain et perte</string>
<string name="voice_announce_lap_power_key">voiceAnnounceLapPower</string>
</resources> </resources>
+4 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="about_libraries">Leabharlanna</string> <string name="about_libraries">Leabharlanna</string>
<string name="about_preference_title">Maidir Le OpenTracks</string> <string name="about_preference_title">Maidir</string>
<string name="about_url">Leathanach Gréasáin an tionscadail: <a href="%1$s">%1$s</a></string> <string name="about_url">Leathanach Gréasáin an tionscadail: <a href="%1$s">%1$s</a></string>
<string name="about_version_name">Ainm an leagain: %1$s</string> <string name="about_version_name">Ainm an leagain: %1$s</string>
<string name="about_version_code">Cód an leagain: %1$d</string> <string name="about_version_code">Cód an leagain: %1$d</string>
@@ -542,4 +542,7 @@
<string name="settings_announcements_lap_power">Cumhacht glúine</string> <string name="settings_announcements_lap_power">Cumhacht glúine</string>
<string name="power_x_watt">Cumhacht {x, iolra, = 1 {1 vata} eile {# vata} }</string> <string name="power_x_watt">Cumhacht {x, iolra, = 1 {1 vata} eile {# vata} }</string>
<string name="empty">" "</string> <string name="empty">" "</string>
<string name="settings_locale_system_default">Réamhshocrú córais</string>
<string name="settings_locale_title">Teanga</string>
<string name="stats_gain_loss">Gnóthachan &amp; Caillteanas</string>
</resources> </resources>
+9 -22
View File
@@ -14,7 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--><resources> --><resources>
<string name="about_preference_title">Sobre OpenTracks</string> <string name="about_preference_title">Sobre</string>
<string name="about_description"><i>OpenTracks</i> é unha aplicación para rexistrar actividades deportivas que respecta a túa privacidade.</string> <string name="about_description"><i>OpenTracks</i> é unha aplicación para rexistrar actividades deportivas que respecta a túa privacidade.</string>
<string name="about_url">Web do proxecto: <a href="%1$s">%1$s</a></string> <string name="about_url">Web do proxecto: <a href="%1$s">%1$s</a></string>
<string name="about_version_name">Nome da versión: %1$s</string> <string name="about_version_name">Nome da versión: %1$s</string>
@@ -30,10 +30,7 @@ limitations under the License.
\n* funciona sen precisar conexión á rede \n* funciona sen precisar conexión á rede
\n* mostra as rutas nun mapa (ver abaixo)</string> \n* mostra as rutas nun mapa (ver abaixo)</string>
<string name="help_track_map_title">Como mostrar a ruta no mapa\?</string> <string name="help_track_map_title">Como mostrar a ruta no mapa\?</string>
<string name="help_track_map_content"> \u0020Usa a icona do mapa pequeno. <string name="help_track_map_content">Usa a icona do mapa pequeno. \n a) (actualizacións en directo) Instala <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>. Proporciona mapas en liña ou sen conexión grazas a <a href="https://www.openstreetmap.org">OpenStreetMap</a>. \n En realidade, OSMDashboard é unha aplicación independente que só pode acceder (temporalmente) aos datos das pistas que se amosarán. \n b) A través dunha aplicación de mapa normal (por exemplo, <a href="http://osmand.net/">OsmAnd</a> e <a href="https://maps.me/">MAPS.ME</a>). Estas aplicacións precisan admitir o formato de ficheiro KMZ (só localizacións e marcas de tempo). De feito, unha aplicación ten que admitir <i>ACTION_VIEW</i> con MIME <i>application/vnd.google-earth.kmz</i>.</string>
\n a) (actualizacións en directo) Instala <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>. Proporciona mapas en liña ou sen conexión grazas a <a href="https://www.openstreetmap.org">OpenStreetMap</a>.
\n En realidade, OSMDashboard é unha aplicación independente que só pode acceder (temporalmente) aos datos das pistas que se amosarán.
\n b) A través dunha aplicación de mapa normal (por exemplo, <a href="http://osmand.net/">OsmAnd</a> e <a href="https://maps.me/">MAPS.ME</a>). Estas aplicacións precisan admitir o formato de ficheiro KMZ (só localizacións e marcas de tempo). De feito, unha aplicación ten que admitir <i>ACTION_VIEW</i> con MIME <i>application/vnd.google-earth.kmz</i>. \u0020</string>
<string name="help_storage_pictures_title">De que xeito garda OpenTracks as fotos tomadas como marcadores\?</string> <string name="help_storage_pictures_title">De que xeito garda OpenTracks as fotos tomadas como marcadores\?</string>
<string name="help_storage_pictures_content">Gárdanse na almacenaxe interna da app (só accesible desde OpenTracks).</string> <string name="help_storage_pictures_content">Gárdanse na almacenaxe interna da app (só accesible desde OpenTracks).</string>
<string name="help_track_export_title">De que xeito exporto/importo as rutas gravadas\?</string> <string name="help_track_export_title">De que xeito exporto/importo as rutas gravadas\?</string>
@@ -44,24 +41,11 @@ limitations under the License.
OpenTracks usa o sensor GPS do dispositivo para gravar a localización de xeito contínuo. OpenTracks usa o sensor GPS do dispositivo para gravar a localización de xeito contínuo.
Se o GPS informa sobre datos pouco precisos (ex.: localización, velocidade, elevación), OpenTracks non pode facer nada ao respecto.</string> Se o GPS informa sobre datos pouco precisos (ex.: localización, velocidade, elevación), OpenTracks non pode facer nada ao respecto.</string>
<string name="help_data_storage_title">De que xeito garda OpenTracks os datos dos sensores\?</string> <string name="help_data_storage_title">De que xeito garda OpenTracks os datos dos sensores\?</string>
<string name="help_data_storage_content"> Os datos dos sensores gárdanse asociados á localización. Respecto do ritmo cardíaco, significa que só se garda <i>unha medida</i> asociada a unha localización. \u0020Se te detés ou estás en interiores, non se gardarán datos do sensor (mais serán mostrados). </string> <string name="help_data_storage_content">Os datos dos sensores gárdanse asociados á localización. Respecto do ritmo cardíaco, significa que só se garda <i>unha medida</i> asociada a unha localización. Se te detés ou estás en interiores, non se gardarán datos do sensor (mais serán mostrados).</string>
<string name="help_gps_troubleshooting_title">OpenTracks non grava as localizacións\?</string> <string name="help_gps_troubleshooting_title">OpenTracks non grava as localizacións\?</string>
<string name="help_gps_troubleshooting_content"> \u0020Podes intentar: <string name="help_gps_troubleshooting_content">Podes intentar: \n a) mira que o GPS esté activado, \n b) mellora a recepción GPS (ex. sae ao exterior), \n c) comprobaa coa app <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a>, e \n d) desactiva o aforro de enerxía. \n \n Se isto non axuda, infórmanos do problema.</string>
\n a) mira que o GPS esté activado,
\n b) mellora a recepción GPS (ex. sae ao exterior),
\n c) comprobaa coa app <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a>, e
\n d) desactiva o aforro de enerxía.
\n
\n Se isto non axuda, infórmanos do problema. \u0020</string>
<string name="help_support_title">Como podo axudar a OpenTracks\?</string> <string name="help_support_title">Como podo axudar a OpenTracks\?</string>
<string name="help_support_content"> \u0020Podes: <string name="help_support_content">Podes: \n a) falar de OpenTracks coas túas amizades, \n b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">propoñer novas funcións</a>, \n c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">informar de fallos</a>, \n d) axudar no desenvolvemento, \n e) mercar a app na <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>, \n f) facer unha doazón, e \n g) calquera cousa que estimes axuda a OpenTracks.</string>
\n a) falar de OpenTracks coas túas amizades,
\n b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">propoñer novas funcións</a>,
\n c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">informar de fallos</a>,
\n d) axudar no desenvolvemento,
\n e) mercar a app na <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>,
\n f) facer unha doazón, e
\n g) calquera cousa que estimes axuda a OpenTracks. \u0020</string>
<string name="open_track_as_trackfileformat">Abrir como %1$s</string> <string name="open_track_as_trackfileformat">Abrir como %1$s</string>
<!-- Activity Type --> <!-- Activity Type -->
<string name="activity_type_airplane">avión</string> <string name="activity_type_airplane">avión</string>
@@ -103,7 +87,7 @@ Se o GPS informa sobre datos pouco precisos (ex.: localización, velocidade, ele
<string name="activity_type_rc_airplane">Avión de radiocontrol</string> <string name="activity_type_rc_airplane">Avión de radiocontrol</string>
<string name="activity_type_rc_boat">Barco de radiocontrol</string> <string name="activity_type_rc_boat">Barco de radiocontrol</string>
<string name="activity_type_rc_helicopter">Helicóptero de radiocontrol</string> <string name="activity_type_rc_helicopter">Helicóptero de radiocontrol</string>
<string name="activity_type_riding">ciclismo</string> <string name="activity_type_riding">equitación</string>
<string name="activity_type_road_biking">ciclismo de estrada</string> <string name="activity_type_road_biking">ciclismo de estrada</string>
<string name="activity_type_roller_skiing">esquí sobre rodas</string> <string name="activity_type_roller_skiing">esquí sobre rodas</string>
<string name="activity_type_rowing">remo</string> <string name="activity_type_rowing">remo</string>
@@ -607,4 +591,7 @@ Se o GPS informa sobre datos pouco precisos (ex.: localización, velocidade, ele
<string name="power">Potencia</string> <string name="power">Potencia</string>
<string name="power_x_watt">Potencia {x, plural, =1 {1 watio} other {# watios} }</string> <string name="power_x_watt">Potencia {x, plural, =1 {1 watio} other {# watios} }</string>
<string name="create_marker_error">Non se creou o marcador. Inténtao outra vez.</string> <string name="create_marker_error">Non se creou o marcador. Inténtao outra vez.</string>
<string name="settings_locale_title">Idioma</string>
<string name="settings_locale_system_default">Predeterminado no sistema</string>
<string name="stats_gain_loss">Ganancia e Perda</string>
</resources> </resources>
+7 -20
View File
@@ -313,7 +313,7 @@ limitations under the License.
<string name="about_url">A projekt weboldala: <a href="%1$s">%1$s</a></string> <string name="about_url">A projekt weboldala: <a href="%1$s">%1$s</a></string>
<string name="about_version_name">Verzió neve: %1$s</string> <string name="about_version_name">Verzió neve: %1$s</string>
<string name="about_version_code">Verziókód: %1$d</string> <string name="about_version_code">Verziókód: %1$d</string>
<string name="about_preference_title">Az OpenTracks névjegye</string> <string name="about_preference_title">Névjegy</string>
<string name="help_data_google_play_services_title">Az OpenTracks igényli/használja a Google Play szolgáltatást?</string> <string name="help_data_google_play_services_title">Az OpenTracks igényli/használja a Google Play szolgáltatást?</string>
<string name="help_track_export_title">Hogyan tudom exportálni/megosztani a felvett nyomvonalakat?</string> <string name="help_track_export_title">Hogyan tudom exportálni/megosztani a felvett nyomvonalakat?</string>
<string name="help_storage_pictures_content">Ezeket az alkalmazás belső tárhelyén tárolja (azaz csak az OpenTracks-en belül érhető el).</string> <string name="help_storage_pictures_content">Ezeket az alkalmazás belső tárhelyén tárolja (azaz csak az OpenTracks-en belül érhető el).</string>
@@ -351,13 +351,7 @@ limitations under the License.
<string name="import_unsupported_format">Nem támogatott fájlformátum</string> <string name="import_unsupported_format">Nem támogatott fájlformátum</string>
<string name="description_default_speed_or_pace">Tevékenységtípus szerint</string> <string name="description_default_speed_or_pace">Tevékenységtípus szerint</string>
<string name="export_without_photos">fotók nélkül</string> <string name="export_without_photos">fotók nélkül</string>
<string name="help_gps_troubleshooting_content"> \u0020Mit tehet: <string name="help_gps_troubleshooting_content">Mit tehet: \n a) ellenőrizze, hogy a GPS engedélyezve van-e, \n b) javítsa a GPS-vételt (pl. menjen a szabadba), \n c) ellenőrizze a <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a> alkalmazással, és \n d) tiltsa le az energiatakarékosságot. \n \n Ha mindez nem segít, kérjük, jelentse a hibát.</string>
\n a) ellenőrizze, hogy a GPS engedélyezve van-e,
\n b) javítsa a GPS-vételt (pl. menjen a szabadba),
\n c) ellenőrizze a <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a> alkalmazással, és
\n d) tiltsa le az energiatakarékosságot.
\n
\n Ha mindez nem segít, kérjük, jelentse a hibát. \u0020</string>
<string name="export_progress_summary_new_msg">Új fájlok exportálva</string> <string name="export_progress_summary_new_msg">Új fájlok exportálva</string>
<string name="generic_completed">Befejezve</string> <string name="generic_completed">Befejezve</string>
<string name="sensor_state_heart_rate_avg">Átl. pulzusszám</string> <string name="sensor_state_heart_rate_avg">Átl. pulzusszám</string>
@@ -394,14 +388,7 @@ limitations under the License.
<string name="menu_resume_track">Nyomvonal folytatása</string> <string name="menu_resume_track">Nyomvonal folytatása</string>
<string name="import_parser_error">Értelmezőhiba: %1$s</string> <string name="import_parser_error">Értelmezőhiba: %1$s</string>
<string name="help_data_storage_content"> Az érzékelőadatok rögzített helyenként vannak tárolva. A pulzusszám-érzékelőre vonatkoztatva ez azt jelenti, hogy csak <i>egy</i> pulzusszámmérés kerül tárolásra helyenként. Ha Ön mozdulatlanul áll vagy beltérben tartózkodik, akkor nem kerülnek rögzítésre az érzékelőadatai (de megjelennek). </string> <string name="help_data_storage_content"> Az érzékelőadatok rögzített helyenként vannak tárolva. A pulzusszám-érzékelőre vonatkoztatva ez azt jelenti, hogy csak <i>egy</i> pulzusszámmérés kerül tárolásra helyenként. Ha Ön mozdulatlanul áll vagy beltérben tartózkodik, akkor nem kerülnek rögzítésre az érzékelőadatai (de megjelennek). </string>
<string name="help_support_content"> \u0020Ezeket teheti meg: <string name="help_support_content">Ezeket teheti meg: \n a) terjesztheti az OpenTracks hírét, \n b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">funkciókat javasolhat</a>, \n c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">hibákat jelenthet be</a>, \n d) segíthet a szoftverfejlesztésben, \n e) megveheti a <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>-ban, \n f) adományozhat, és \n g) tehet bármit, amiről úgy gondolja, hogy segít az OpenTracks-nek.</string>
\n \u0020a) terjesztheti az OpenTracks hírét,
\n \u0020b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">funkciókat javasolhat</a>,
\n \u0020c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">hibákat jelenthet be</a>,
\n \u0020d) segíthet a szoftverfejlesztésben,
\n \u0020e) megveheti a <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>-ban,
\n \u0020f) adományozhat, és
\n \u0020g) tehet bármit, amiről úgy gondolja, hogy segít az OpenTracks-nek. \u0020</string>
<plurals name="generic_completed_with_errors"> <plurals name="generic_completed_with_errors">
<item quantity="one">Egy hibával befejezve</item> <item quantity="one">Egy hibával befejezve</item>
<item quantity="other">%1$d hibával befejezve</item> <item quantity="other">%1$d hibával befejezve</item>
@@ -418,10 +405,7 @@ limitations under the License.
<string name="share_image_body">Azt hiszem, ez a kép érdekelhet.</string> <string name="share_image_body">Azt hiszem, ez a kép érdekelhet.</string>
<string name="help_recording_title">Hogyan veszi fel az OpenTracks az adatokat?</string> <string name="help_recording_title">Hogyan veszi fel az OpenTracks az adatokat?</string>
<string name="help_track_export_content"> A nyomvonalak KMZ, KML vagy GPX formátumban exportálhatók a Beállításokból. KMZ/KML minden adat; GPX csak a helyszínek. A <i>megosztás ikonon</i> keresztül megosztott nyomvonalak KMZ formátumban kerülnek megosztásra. </string> <string name="help_track_export_content"> A nyomvonalak KMZ, KML vagy GPX formátumban exportálhatók a Beállításokból. KMZ/KML minden adat; GPX csak a helyszínek. A <i>megosztás ikonon</i> keresztül megosztott nyomvonalak KMZ formátumban kerülnek megosztásra. </string>
<string name="help_track_map_content"> \u0020Használja a kis térkép ikont. <string name="help_track_map_content">Használja a kis térkép ikont.\na) (élő frissítések) Telepítse a <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>. Ez online vagy offline térképeket biztosít a <a href="https://www.openstreetmap.org">OpenStreetMap</a> segítségével.\nValójában az OSMDashboard egy különálló alkalmazás, amely csak a megjelenítendő nyomvonal(ak) adataihoz fér hozzá (ideiglenesen).\nb) Egy normál térképalkalmazáson keresztül (pl. <a href="http://osmand.net/">OsmAnd</a> és <a href="https://maps.me/">MAPS.ME</a>). Ezeknek az alkalmazásoknak támogatniuk kell a KMZ fájlformátumot (csak a helyeket és az időbélyegeket). Valójában egy alkalmazásnak támogatnia kell a <i>ACTION_VIEW</i> MIME <i>application/vnd.google-earth.kmz</i> formátumot.</string>
\n \u0020a) \u0020(élő frissítések) Telepítse a <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>. \u0020Ez online vagy offline térképeket biztosít a <a href="https://www.openstreetmap.org">OpenStreetMap</a> segítségével.
\n \u0020Valójában az OSMDashboard egy különálló alkalmazás, amely csak a megjelenítendő nyomvonal(ak) adataihoz fér hozzá (ideiglenesen). \u0020
\n \u0020b) \u0020Egy normál térképalkalmazáson keresztül (pl. <a href="http://osmand.net/">OsmAnd</a> és <a href="https://maps.me/">MAPS.ME</a>). \u0020Ezeknek az alkalmazásoknak támogatniuk kell a KMZ fájlformátumot (csak a helyeket és az időbélyegeket). \u0020Valójában egy alkalmazásnak támogatnia kell a <i>ACTION_VIEW</i> MIME <i>application/vnd.google-earth.kmz</i> formátumot. \u0020</string>
<string name="about_description">Az <i>OpenTracks</i> egy sportkövető alkalmazás, amely teljes mértékben tiszteletben tartja az Ön adatvédelmét.</string> <string name="about_description">Az <i>OpenTracks</i> egy sportkövető alkalmazás, amely teljes mértékben tiszteletben tartja az Ön adatvédelmét.</string>
<string name="about_history">Az OpenTracks a <a href="https://code.google.com/archive/p/mytracks/"><i>Google MyTracks</i></a> (2016-ban megszűnt) elágazása.</string> <string name="about_history">Az OpenTracks a <a href="https://code.google.com/archive/p/mytracks/"><i>Google MyTracks</i></a> (2016-ban megszűnt) elágazása.</string>
<string name="help_feature_content">* GPS nyomvonalak létrehozása <string name="help_feature_content">* GPS nyomvonalak létrehozása
@@ -601,4 +585,7 @@ limitations under the License.
<string name="voiceDistance">{n, plural, =1 {1 } other {{n,number,#.0}} }</string> <string name="voiceDistance">{n, plural, =1 {1 } other {{n,number,#.0}} }</string>
<string name="voice_announce_lap_power_key">voiceAnnounceLapPower</string> <string name="voice_announce_lap_power_key">voiceAnnounceLapPower</string>
<string name="power_x_watt">Teljesítmény {x, plural, =1 {1 watt} other {# watts} }</string> <string name="power_x_watt">Teljesítmény {x, plural, =1 {1 watt} other {# watts} }</string>
<string name="settings_locale_title">Nyelv</string>
<string name="settings_locale_system_default">Rendszer alapértelmezett</string>
<string name="stats_gain_loss">Növekedés és veszteség</string>
</resources> </resources>
+8 -25
View File
@@ -196,9 +196,7 @@ limitations under the License.
<string name="settings_stats_units_metric">Metriske (km, m)</string> <string name="settings_stats_units_metric">Metriske (km, m)</string>
<string name="settings_stats_units_title">Foretrukne enheter</string> <string name="settings_stats_units_title">Foretrukne enheter</string>
<!-- Share Track --> <!-- Share Track -->
<string name="share_track_share_file_body">Jeg tror du kan være interessert i dette sporet. <string name="share_track_share_file_body">Jeg tror du kan være interessert i dette sporet.\n\n%1$s</string>
\n
\n%1$s</string>
<string name="share_track_subject">Jeg vil dele et spor med deg</string> <string name="share_track_subject">Jeg vil dele et spor med deg</string>
<!-- Stats --> <!-- Stats -->
<string name="stats_average_moving_pace">Gjen. forflytningstempo</string> <string name="stats_average_moving_pace">Gjen. forflytningstempo</string>
@@ -359,12 +357,7 @@ limitations under the License.
<string name="sensor_could_not_scan">Kunne ikke se etter Blåtannsenheter (feil %1$i).</string> <string name="sensor_could_not_scan">Kunne ikke se etter Blåtannsenheter (feil %1$i).</string>
<string name="help_data_google_play_services_title">Krever/bruker OpenTracks Google Play-tjenesten\?</string> <string name="help_data_google_play_services_title">Krever/bruker OpenTracks Google Play-tjenesten\?</string>
<string name="help_feature_title">OpenTracks har følgende funksjoner:</string> <string name="help_feature_title">OpenTracks har følgende funksjoner:</string>
<string name="help_feature_content">* Opprett GPS-spor <string name="help_feature_content">* Opprett GPS-spor \n* Bruk av pulssensor (kun Blåtann-LE) \n* Talemeldinger (etter tid eller distanse) \n* Opprett markører (inkl. bilder) \n* Fungerer uten Internett-forbindelse \n* Vis spor på et kart (se nedenfor)</string>
\n * Bruk av pulssensor (kun Blåtann-LE)
\n * Talemeldinger (etter tid eller distanse)
\n * Opprett markører (inkl. bilder)
\n * Fungerer uten Internett-forbindelse
\n * Vis spor på et kart (se nedenfor)</string>
<string name="help_track_map_title">Hvordan vise et spor på et kart\?</string> <string name="help_track_map_title">Hvordan vise et spor på et kart\?</string>
<string name="about_description"><i>OpenTracks</i> er et sportssporingsprogram som fullt ut respekterer ditt personvern.</string> <string name="about_description"><i>OpenTracks</i> er et sportssporingsprogram som fullt ut respekterer ditt personvern.</string>
<string name="about_url">Prosjektnettside: <a href="%1$s">%1$s</a></string> <string name="about_url">Prosjektnettside: <a href="%1$s">%1$s</a></string>
@@ -392,21 +385,8 @@ limitations under the License.
<string name="help_data_storage_title">Hvordan lagrer OpenTracks sensordata\?</string> <string name="help_data_storage_title">Hvordan lagrer OpenTracks sensordata\?</string>
<string name="help_data_storage_content"> Sensordata lagres per posisjon som er tatt opp. Når det gjelder pulssensorer betyr dette at kun <i>én</i> pulsmåling lagres per posisjon. Hvis du står stille eller er innendørs, blir ingen sensordata tatt opp (men de vil bli vist). </string> <string name="help_data_storage_content"> Sensordata lagres per posisjon som er tatt opp. Når det gjelder pulssensorer betyr dette at kun <i>én</i> pulsmåling lagres per posisjon. Hvis du står stille eller er innendørs, blir ingen sensordata tatt opp (men de vil bli vist). </string>
<string name="help_gps_troubleshooting_title">OpenTracks tar ikke opp posisjoner\?</string> <string name="help_gps_troubleshooting_title">OpenTracks tar ikke opp posisjoner\?</string>
<string name="help_gps_troubleshooting_content"> Hva du kan gjøre: <string name="help_gps_troubleshooting_content">Hva du kan gjøre:\n a) sjekk om GPS er slått på,\n b) forbedre GPS-mottak (f.eks. gå utendørs),\n c) sjekk med programmet <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a>, og\n d) slå av strømsparing.\n \n Hvis alt dette ikke hjelper, kan du rapportere en feil.</string>
\n a) sjekk om GPS er slått på, <string name="help_support_content">Du kan:\n a) spre info om OpenTracks,\n b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">foreslå funksjoner</a>,\n c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">rapportere feil</a>,\n d) hjelpe til med programvareutvikling,\n e) kjøpe programmet i <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>,\n f) donere, og\n g) gjøre noe du tror hjelper OpenTracks.</string>
\n b) forbedre GPS-mottak (f.eks. gå utendørs),
\n c) sjekk med programmet <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a>, og
\n d) slå av strømsparing.
\n
\n Hvis alt dette ikke hjelper, kan du rapportere en feil. </string>
<string name="help_support_content"> Du kan:
\n a) spre info om OpenTracks,
\n b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">foreslå funksjoner</a>,
\n c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">rapportere feil</a>,
\n d) hjelpe til med programvareutvikling,
\n e) kjøpe programmet i <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>,
\n f) donere, og
\n g) gjøre noe du tror hjelper OpenTracks. </string>
<string name="description_altitude_loss">Total nedstigning: %1$d m (%2$d ft)</string> <string name="description_altitude_loss">Total nedstigning: %1$d m (%2$d ft)</string>
<string name="stats_loss">Total nedstigning</string> <string name="stats_loss">Total nedstigning</string>
<string name="import_prevent_reimport">Du har stilt inn forhindring av at spor importeres om igjen</string> <string name="import_prevent_reimport">Du har stilt inn forhindring av at spor importeres om igjen</string>
@@ -547,7 +527,7 @@ limitations under the License.
<string name="value_float_knots">%1$.1f knop</string> <string name="value_float_knots">%1$.1f knop</string>
<string name="value_float_knots_recommended">%1$.1f knop (anbefales)</string> <string name="value_float_knots_recommended">%1$.1f knop (anbefales)</string>
<string name="voice_per_nautical_mile">per nautisk mil</string> <string name="voice_per_nautical_mile">per nautisk mil</string>
<string name="show_on_dashboard_not_installed">Ingen app som støtter OpenTracks-API for oversikten er installert.</string> <string name="show_on_dashboard_not_installed">Ingen app som støtter OpenTracks Dashboard-API er installert.</string>
<string name="track_delete_number_of_tracks">%1$d spor</string> <string name="track_delete_number_of_tracks">%1$d spor</string>
<string name="settings_public_api_package_title">Pakkenavn for offentlig API</string> <string name="settings_public_api_package_title">Pakkenavn for offentlig API</string>
<string name="introduction_osm_dashboard">OpenTracks sørger ikke selv for kart. Installer OSMDashboard for å vise opptakene dine på et kart.</string> <string name="introduction_osm_dashboard">OpenTracks sørger ikke selv for kart. Installer OSMDashboard for å vise opptakene dine på et kart.</string>
@@ -595,4 +575,7 @@ limitations under the License.
<string name="settings_sensor_bluetooth_service_filter_off">Vis alle Bluetooth-enheter som kan oppdages</string> <string name="settings_sensor_bluetooth_service_filter_off">Vis alle Bluetooth-enheter som kan oppdages</string>
<string name="permission_recording_failed">OpenTracks krever tillatelse for å få tilgang til posisjonen din samt enheter i nærheten.</string> <string name="permission_recording_failed">OpenTracks krever tillatelse for å få tilgang til posisjonen din samt enheter i nærheten.</string>
<string name="create_marker_error">Klarte ikke å opprette en markør. Prøv igjen.</string> <string name="create_marker_error">Klarte ikke å opprette en markør. Prøv igjen.</string>
<string name="settings_locale_title">Språk</string>
<string name="settings_locale_system_default">Systemstandard</string>
<string name="stats_gain_loss">Total stigning og nedstigning</string>
</resources> </resources>
+9 -22
View File
@@ -14,7 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--><resources> --><resources>
<string name="about_preference_title">Over OpenTracks</string> <string name="about_preference_title">Over</string>
<string name="about_description"><i>OpenTracks</i> is een sport tracker applicatie met respect voor privacy.</string> <string name="about_description"><i>OpenTracks</i> is een sport tracker applicatie met respect voor privacy.</string>
<string name="about_url">Project webpagina: <a href="%1$s">%1$s</a></string> <string name="about_url">Project webpagina: <a href="%1$s">%1$s</a></string>
<string name="about_version_name">Versienaam: %1$s</string> <string name="about_version_name">Versienaam: %1$s</string>
@@ -30,38 +30,22 @@ limitations under the License.
\n* werkt volledig offline \n* werkt volledig offline
\n* toon tracks op een kaart (zie hieronder)</string> \n* toon tracks op een kaart (zie hieronder)</string>
<string name="help_track_map_title">Hoe wordt een spoor op een kaart weergegeven\?</string> <string name="help_track_map_title">Hoe wordt een spoor op een kaart weergegeven\?</string>
<string name="help_track_map_content"> \u0020Gebruik het kleine kaartpictogram. <string name="help_track_map_content">Gebruik het kleine kaartpictogram. \n a) (live updates) Installeer <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>. Het biedt online of offline kaarten via <a href="https://www.openstreetmap.org">OpenStreetMap</a>. \n Eigenlijk is OSMDashboard een aparte app die alleen (tijdelijk) toegang heeft tot de gegevens van de track(s) die getoond gaan worden. \n b) Via een normale kaartapplicatie (bijv. <a href="http://osmand.net/">OsmAnd</a> en <a href="https://maps.me/">MAPS.ME</a>). Deze apps moeten het KMZ-bestandsformaat ondersteunen (alleen locaties en tijdstempels). In feite moet een app <i>ACTION_VIEW</i> ondersteunen met MIME <i>application/vnd.google-earth.kmz</i>.</string>
\n \u0020a) \u0020(live updates) Installeer <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>. Het biedt online of offline kaarten via <a href="https://www.openstreetmap.org">OpenStreetMap</a>.
\n \u0020Eigenlijk is OSMDashboard een aparte app die alleen (tijdelijk) toegang heeft tot de gegevens van de track(s) die getoond gaan worden.
\n \u0020b) \u0020Via een normale kaartapplicatie (bijv. <a href="http://osmand.net/">OsmAnd</a> en <a href="https://maps.me/">MAPS.ME</a>). Deze apps moeten het KMZ-bestandsformaat ondersteunen (alleen locaties en tijdstempels). In feite moet een app <i>ACTION_VIEW</i> ondersteunen met MIME <i>application/vnd.google-earth.kmz</i>. \u0020</string>
<string name="help_storage_pictures_title">Hoe slaat OpenTracks foto\'s op die als markeringen zijn genomen\?</string> <string name="help_storage_pictures_title">Hoe slaat OpenTracks foto\'s op die als markeringen zijn genomen\?</string>
<string name="help_storage_pictures_content">Deze worden opgeslagen in de interne opslag van de app (d.w.z. alleen toegankelijk binnen OpenTracks).</string> <string name="help_storage_pictures_content">Deze worden opgeslagen in de interne opslag van de app (d.w.z. alleen toegankelijk binnen OpenTracks).</string>
<string name="help_track_export_title">Hoe kan ik opgenomen tracks exporteren/delen?</string> <string name="help_track_export_title">Hoe kan ik opgenomen tracks exporteren/delen?</string>
<string name="help_track_export_content"> Tracks kunnen worden geëxporteerd vanuit de instellingen als KMZ, KML of GPX. KMZ/KML alle gegevens; GPX alleen locaties. Tracks die worden gedeeld via het <i>share-icoontje</i> worden gedeeld als KMZ </string> <string name="help_track_export_content">Tracks kunnen worden geëxporteerd vanuit de instellingen als KMZ, KML of GPX. KMZ/KML alle gegevens; GPX alleen locaties. Tracks die worden gedeeld via het <i>share-icoontje</i> worden gedeeld als KMZ.</string>
<string name="help_data_google_play_services_title">Vereist/gebruikt OpenTracks Google Play Service\?</string> <string name="help_data_google_play_services_title">Vereist/gebruikt OpenTracks Google Play Service\?</string>
<string name="help_recording_title">Hoe legt OpenTracks gegevens vast?</string> <string name="help_recording_title">Hoe legt OpenTracks gegevens vast?</string>
<string name="help_recording_content"> <string name="help_recording_content">
OpenTracks gebruikt de GPS-sensor van het apparaat om de locatie continu te registreren. OpenTracks gebruikt de GPS-sensor van het apparaat om de locatie continu te registreren.
Als het GPS-apparaat onnauwkeurige gegevens rapporteert (bijv. locatie, snelheid, hoogte), kan OpenTracks daar niets aan doen.</string> Als het GPS-apparaat onnauwkeurige gegevens rapporteert (bijv. locatie, snelheid, hoogte), kan OpenTracks daar niets aan doen.</string>
<string name="help_data_storage_title">Hoe slaat OpenTracks sensorgegevens op?</string> <string name="help_data_storage_title">Hoe slaat OpenTracks sensorgegevens op?</string>
<string name="help_data_storage_content"> De sensorgegevens worden per opgenomen locatie opgeslagen. In termen van een hartslagsensor betekent dit dat slechts <i>een</i> hartslagmeting per locatie wordt opgeslagen. Als u stilstaat of binnenshuis bent, worden er geen sensorgegevens geregistreerd (maar wel getoond) </string> <string name="help_data_storage_content">De sensorgegevens worden per opgenomen locatie opgeslagen. In termen van een hartslagsensor betekent dit dat slechts <i>een</i> hartslagmeting per locatie wordt opgeslagen. Als u stilstaat of binnenshuis bent, worden er geen sensorgegevens geregistreerd (maar wel getoond).</string>
<string name="help_gps_troubleshooting_title">OpenTracks neemt geen locaties op?</string> <string name="help_gps_troubleshooting_title">OpenTracks neemt geen locaties op?</string>
<string name="help_gps_troubleshooting_content"> \u0020Wat u kunt doen: <string name="help_gps_troubleshooting_content">Wat u kunt doen:\n a) Controleer of GPS is ingeschakeld,\n b) verbeter de GPS-ontvangst (ga bijvoorbeeld naar buiten),\n c) controleren met <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a> app, en\n d) schakel energiebesparing uit.\n \n Als alles niet helpt, rapporteer dan een mogelijke fout.</string>
\n \u0020a) Controleer of GPS is ingeschakeld,
\n \u0020b) verbeter de GPS-ontvangst (ga bijvoorbeeld naar buiten),
\n \u0020c) controleren met <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a> app, en
\n \u0020d) schakel energiebesparing uit.
\n
\n \u0020Als alles niet helpt, rapporteer dan een mogelijke fout. \u0020</string>
<string name="help_support_title">Hoe kan ik OpenTracks ondersteunen?</string> <string name="help_support_title">Hoe kan ik OpenTracks ondersteunen?</string>
<string name="help_support_content"> \u0020U kunt: <string name="help_support_content">U kunt:\n a) anderen vertellen over OpenTracks,\n b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">functies voorstellen</a>,\n c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">bugs melden</a>,\n d) helpen bij de ontwikkeling van software,\n e) aanschaffen in <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>,\n f) doneren, en\n g) wat u ook denkt dat OpenTracks helpt.</string>
\n \u0020a) anderen vertellen over OpenTracks,
\n \u0020b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">functies voorstellen</a>,
\n \u0020c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">bugs melden</a>,
\n \u0020d) helpen bij de ontwikkeling van software,
\n \u0020e) aanschaffen in <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>,
\n \u0020f) doneren, en
\n \u0020g) wat u ook denkt dat OpenTracks helpt. \u0020</string>
<!-- Activity Type --> <!-- Activity Type -->
<string name="activity_type_airplane">vliegtuig</string> <string name="activity_type_airplane">vliegtuig</string>
<string name="activity_type_atv">quad</string> <string name="activity_type_atv">quad</string>
@@ -607,4 +591,7 @@ Als het GPS-apparaat onnauwkeurige gegevens rapporteert (bijv. locatie, snelheid
<string name="settings_announcements_lap_power">Lap power</string> <string name="settings_announcements_lap_power">Lap power</string>
<string name="power_x_watt">Power {x, plural, =1 {1 watt} other {# watt} }</string> <string name="power_x_watt">Power {x, plural, =1 {1 watt} other {# watt} }</string>
<string name="create_marker_error">Kan geen markering maken. Probeer het opnieuw.</string> <string name="create_marker_error">Kan geen markering maken. Probeer het opnieuw.</string>
<string name="settings_locale_title">Taal</string>
<string name="settings_locale_system_default">Systeemstandaard</string>
<string name="stats_gain_loss">Winst &amp; verlies</string>
</resources> </resources>