- feat: update translations for multi-language support

- chore: remove unnecessary blank lines in resource files
This commit is contained in:
Daniel Graf
2025-12-19 14:25:16 +01:00
3 changed files with 140 additions and 48 deletions

View File

@@ -26,12 +26,9 @@ timeline.duration=Duration
timeline.distance=Distance
timeline.trip=Trip
timeline.visit=Visit
timeline.trip.transport.select=Select a transport mode
timeline.state.hide.title=Hide Timeline
timeline.state.show.title=Show Timeline
transportation.mode.WALKING.name=Walking
transportation.mode.CYCLING.name=Cycling
transportation.mode.DRIVING.name=Driving
@@ -40,7 +37,6 @@ transportation.mode.MOTORCYCLE.name=Motorcycle
transportation.mode.TRAIN.name=Train
transportation.mode.SCOOTER.name=E-Scooter
transportation.mode.AIRPLANE.name=Airplane
timeline.transport.WALKING.label=by foot
timeline.transport.CYCLING.label=by bike
timeline.transport.DRIVING.label=by car
@@ -55,7 +51,6 @@ timeline.transport.UNKNOWN.label=unknown
datepicker.state.hide.title=Hide Date Picker
datepicker.state.show.title=Show Timeline
datepicker.today=Today
datepicker.today.title=Go to today
datepicker.days.sun=Sun
@@ -77,7 +72,6 @@ datepicker.months.sep=Sep
datepicker.months.oct=Oct
datepicker.months.nov=Nov
datepicker.months.dec=Dec
datepicker.click-to-unlock-date=Click to unlock date
datepicker.click-to-lock-date=Click to lock date
datepicker.click-to-clear-selection=Click to clear selection
@@ -413,7 +407,6 @@ users.color.theme.description=Choose your preferred accent color for the map.
users.color.theme.reset=Reset to Default
users.color.theme.custom=Custom Color
users.color.theme.custom.input=Custom Color:
time.title=Time
time.display.mode.label=Time Display Mode
time.display.mode.default=Default
@@ -443,7 +436,6 @@ users.avatar.delete=Remove Avatar
users.avatar.default.title=Choose a default avatar
users.avatar.custom.title=Upload a custom image
users.avatar.or=OR
users.avatar.error.to-large=Image too large. The maximum size is 2MB.
users.avatar.error.invalid-file-type=Invalid file type. Only JPEG, PNG, GIF, and WebP images are allowed.
users.avatar.error.generic=Error processing avatar file: {0}
@@ -458,7 +450,6 @@ users.custom.css.remove.confirm=Are you sure you want to remove the current cust
users.custom.css.error.to-large=CSS file too large. The maximum size is 1MB.
users.custom.css.error.invalid-file-type=Invalid file type. Only CSS files are allowed.
users.custom.css.error.generic=Error processing CSS file: {0}
map.colored.preference=Show map in color
map.colored.preference.description=When enabled, the map will be displayed in full color. When disabled, the map will be shown in grayscale.
# Units
@@ -703,7 +694,6 @@ integrations.reitti.add.title=Add New Reitti Integration
integrations.reitti.edit.title=Edit Reitti Integration
integrations.reitti.info=Info
integrations.reitti.info.title=Remote Instance Information
integrations.reitti.update=Update Configuration
integrations.reitti.test.missing.fields=Please fill in both Instance URL and API Token
integrations.reitti.test.loading=Testing connection...
@@ -722,11 +712,11 @@ integrations.reitti.info.connection.access=You can access this user's location d
# No API Token
integrations.no.token.title=\u26A0\uFE0F No API Token Available
integrations.no.token.title=\u26A0\uFE0F No API Token Available
# Common labels
integrations.download=Download:
integrations.homepage=Homepage:
integrations.download=Download:
integrations.homepage=Homepage:
# GPSLogger setup steps
integrations.gpslogger.step1=Download GPSLogger from the Google Play Store
@@ -769,7 +759,6 @@ integrations.owntracks.recorder.test.missing.fields=Please fill in Base URL, Use
integrations.owntracks.recorder.test.loading=Testing connection...
integrations.owntracks.recorder.test.failed=Connection test failed
integrations.owntracks.recorder.loading.historical=Loading Historical Data...
form.edit=Edit
form.close=Close
@@ -1021,7 +1010,6 @@ magic.links.delete.error=Failed to delete magic link: {0}
magic.links.expiry.date.label=Expiry Date
magic.links.expiry.date.help=Leave empty for permanent access (link never expires)
magic.links.invalid.date=Invalid date format
share-with.title=Share with other Users
share-with.no.users=No other users found to share with.
share-with.users.title=Share with Users
@@ -1071,7 +1059,6 @@ visit.sensitivity.level.very-high=Very High
# Visit Sensitivity Validation Messages
visit.sensitivity.validation.date.duplicate=A configuration already exists for this date. Please choose a different date.
visit.sensitivity.validation.save.error=Error saving configuration: {0}
magic.links.info.title=About Magic Links
magic.links.info.description=Magic links allow you to share your location data with others without requiring them to create an account. Anyone with the link can access your data according to the permissions you set.
magic.links.info.security.title=Security Considerations
@@ -1230,7 +1217,6 @@ memory.form.end.date.label=End Date *
memory.form.cancel=Cancel
memory.form.create=Create Memory
memory.form.update=Save Changes
memory.view.button=View Memory
memory.view.edit=Edit
memory.view.back=Back
@@ -1247,26 +1233,15 @@ memory.view.block.trip.content=Trip block
memory.view.block.gallery.content=Image gallery
memory.view.block.cluster.duration=Took {0} hours {1} minutes. {2} hours and {3} moving.
memory.view.block.cluster_visit.duration=Spent {0} hours {1} minutes.
memory.generator.day.text=Day {0}: {1}
memory.generator.headline.text=Our Journey
memory.generator.journey_to.headline.text=Journey to {0}
memory.generator.introductory.text=What an unforgettable adventure we had! Our journey began on {0} as we set out from {1}, and for the \
next {2} days, we made {3}, {4} our wonderful home base. \
From there, we explored the heart of the region, filling our days with {5} memorable visits across {6} beautiful locations. \
This is the story of our time together, the places we saw, and the memories we created before returning home on {7}.
memory.generator.travel_to_accommodation.text=We set off from {0} at {1} and arrived in {2} at {3}. \
The total time for this part of our trip was {4}, with {5} of that spent actively traveling. Now it's time for us to relax, unpack, and prepare for what's next.
memory.generator.travel_from_accommodation.text=We set off from {0} at {1} and arrived back home in {2} at {3}. \
The total time for this final part of our trip was {4}, with {5} of that spent actively traveling. \
Our journey has concluded, and now we can look back on all the memories we've made.
memory.generator.introductory.text=What an unforgettable adventure we had! Our journey began on {0} as we set out from {1}, and for the next {2} days, we made {3}, {4} our wonderful home base. From there, we explored the heart of the region, filling our days with {5} memorable visits across {6} beautiful locations. This is the story of our time together, the places we saw, and the memories we created before returning home on {7}.
memory.generator.travel_to_accommodation.text=We set off from {0} at {1} and arrived in {2} at {3}. The total time for this part of our trip was {4}, with {5} of that spent actively traveling. Now it's time for us to relax, unpack, and prepare for what's next.
memory.generator.travel_from_accommodation.text=We set off from {0} at {1} and arrived back home in {2} at {3}. The total time for this final part of our trip was {4}, with {5} of that spent actively traveling. Our journey has concluded, and now we can look back on all the memories we've made.
memory.generator.intro_accommodation.headline=Welcome to {0}
memory.generator.intro_accommodation.text=We are officially checked in! We took a moment to appreciate the atmosphere before dealing with our luggage. \
It feels good to be here, and we're looking forward to exploring the immediate surroundings. This place is going to be a great home base for our trip.
memory.generator.intro_accommodation.text=We are officially checked in! We took a moment to appreciate the atmosphere before dealing with our luggage. It feels good to be here, and we're looking forward to exploring the immediate surroundings. This place is going to be a great home base for our trip.
memory.list.all=All
memory.block.select.type=Select Block Type
memory.block.type.text=Text
memory.block.type.text.description=Add text content with headlines and paragraphs
@@ -1304,19 +1279,16 @@ memory.block.gallery.pagination.next=Next
memory.block.gallery.error.no.images=Please select or upload at least one image
memory.block.gallery.error.create=Failed to create a gallery block
memory.block.gallery.remove=Remove image
memory.edit.block.title=Title
memory.edit.block.title.placeholder=Enter title
memory.edit.block.cluster.trip.title = Edit Trips Block
memory.edit.block.cluster.trip.select.trips = Select Trips
memory.edit.block.cluster.trip.selected = Selected
memory.edit.block.cluster.trip.trip = Trip
memory.edit.block.cluster.visit.title = Edit Visit Block
memory.edit.block.cluster.visit.select.visits = Select Visits
memory.edit.block.cluster.visit.selected = Selected
memory.edit.block.cluster.visit.visit = Visit
memory.edit.block.cluster.trip.title=Edit Trips Block
memory.edit.block.cluster.trip.select.trips=Select Trips
memory.edit.block.cluster.trip.selected=Selected
memory.edit.block.cluster.trip.trip=Trip
memory.edit.block.cluster.visit.title=Edit Visit Block
memory.edit.block.cluster.visit.select.visits=Select Visits
memory.edit.block.cluster.visit.selected=Selected
memory.edit.block.cluster.visit.visit=Visit
memory.form.date.error.end.before.start=The end date must be equal or after the start date.
@@ -1364,7 +1336,6 @@ memory.share.result.instructions.view=Recipients can view but not edit the memor
memory.share.result.instructions.edit=Recipients can view and edit the memory
memory.share.result.done=Done
memory.share.result.another=Create Another Link
memory.processing.title=Processing Memory
memory.processing.title.creating=Creating Memory
memory.processing.step.clustering=Clustering trips and visits...
@@ -1421,7 +1392,6 @@ transportation.modes.reclassify.button=Reclassify All Trips
transportation.modes.reclassify.processing=Processing...
transportation.modes.reclassify.started=Reclassification started successfully. This process will run in the background.
transportation.modes.reclassify.error=Failed to start reclassification. Please try again.
about.acknowledgments.title=Acknowledgments
about.acknowledgments.subtitle=Reitti wouldn't be possible without the amazing contributions from our community and the incredible open-source projects we build upon.
about.contributors.title=Contributors

View File

@@ -50,7 +50,6 @@ datepicker.months.sep=Sep
datepicker.months.oct=Okt
datepicker.months.nov=Nov
datepicker.months.dec=Dez
datepicker.click-to-unlock-date=Klicken zum Entsperren des Datums
datepicker.click-to-lock-date=Klicken zum Sperren des Datums
datepicker.click-to-clear-selection=Klicken zum L\u00F6schen der Auswahl
@@ -1256,3 +1255,126 @@ integrations.overland.configure=Overland automatisch konfigurieren
integrations.overland.configure.description=Dies konfiguriert Overland so, dass Standortdaten an Reitti gemeldet werden.
integrations.owntracks.configure=Owntracks automatisch konfigurieren
integrations.owntracks.configure.description=Dies konfiguriert Owntracks so, dass Standortdaten an Reitti gemeldet werden.
timeline.state.hide.title=Zeitleiste verstecken
timeline.state.show.title=Zeitleiste anzeigen
datepicker.state.hide.title=Datumsauswahl verstecken
datepicker.state.show.title=Zeitleiste anzeigen
datepicker.today.title=Heute auswählen
settings.logging=Protokollierung
users.color.theme.label=Farbschema
users.color.theme.description=Wählen Sie Ihre bevorzugte Akzentfarbe für die Karte aus.
users.color.theme.reset=Standard wiederherstellen
users.color.theme.custom=Benutzerdefinierte Farbe
users.color.theme.custom.input=Benutzerdefinierte Farbe:
users.avatar.error.to-large=Bild zu groß. Die maximale Größe beträgt 2MB.
users.avatar.error.invalid-file-type=Ungültiger Dateityp. Nur JPEG-, PNG-, GIF- und WebP-Bilder sind erlaubt.
users.avatar.error.generic=Fehler beim Verarbeiten der Datei {0}
users.custom.css.remove.confirm=Sind Sie sicher, dass Sie die benutzerdefinierte CSS-Datei entfernen möchten?
users.custom.css.error.to-large=CSS-Datei zu groß. Die maximale Größe beträgt 1MB.
users.custom.css.error.invalid-file-type=Ungültiger Dateityp. Nur CSS-Dateien sind erlaubt.
users.custom.css.error.generic=Fehler beim Verarbeiten der CSS Datei: {0}
places.search.placeholder=Ort suchen…
place.unknown.label=Unbekannter Ort
integrations.reitti.update=Konfiguration aktualisieren
integrations.reitti.test.missing.fields=Bitte füllen Sie URL und API Token aus
integrations.reitti.test.loading=Verbindung testen…
integrations.reitti.test.failed=Verbindungstest fehlgeschlagen
integrations.reitti.info.server.title=Server-Informationen
integrations.reitti.info.server.name=Name:
integrations.reitti.info.server.version=Version:
integrations.reitti.info.server.time=Systemzeit:
integrations.reitti.info.user.title=Benutzerinformationen
integrations.reitti.info.user.username=Benutzername:
integrations.reitti.info.user.displayname=Anzeigename:
integrations.reitti.info.user.id=Benutzer-ID:
integrations.reitti.info.user.version=Version:
integrations.reitti.info.connection.success=Verbindung erfolgreich!
integrations.reitti.info.connection.access=Sie können auf die Standortdaten dieses Nutzers zugreifen.
integrations.no.token.title=⚠️ Keine API Token verfügbar
integrations.download=Download:
integrations.homepage=Homepage:
integrations.gpslogger.step1=GPSLogger im Google Play Store herunterladen
integrations.gpslogger.step2=Öffnen Sie GPSLogger und gehen Sie zu <strong>Logging details → Log to custom URL</strong>
integrations.gpslogger.step3="Log to custom URL" aktivieren
integrations.gpslogger.step4.with.token=Setzen Sie die URL auf: <code>{0}</code>
integrations.gpslogger.step4.without.token=Setzen Sie die URL auf: <code>{0}</code>
integrations.gpslogger.step5=Setzen Sie HTTP-Methode auf <strong>POST</strong>
integrations.gpslogger.step6=Setzen Sie HTTP Body auf:
integrations.gpslogger.step7=HTTP-Header auf: <code>Content-Typ: Anwendung/json</code>
integrations.gpslogger.step8=Starten Sie die Protokollierung!
integrations.owntracks.step1=Laden Sie OwnTracks aus dem App Store oder Google Play Store
integrations.owntracks.step2=Öffnen Sie OwnTracks und gehen Sie zu <strong>Settings → Connection</strong>
integrations.owntracks.step3=Modus auf <strong>HTTP</strong> einstellen
integrations.owntracks.step4.with.token=Endpoint auf: <code>{0}</code>
integrations.owntracks.step4.without.token=Endpoint auf: <code>{0}</code>
integrations.owntracks.step5=Deaktivieren <strong>Authentication</strong> (wir verwenden stattdessen das Token in der URL)
integrations.owntracks.step6=Konfigurieren Sie die Tracking-Einstellungen wie gewünscht. Achten Sie darauf, dass Owntracks mindestens alle 30 Sekunden einen Punkt aufzeichnet.
integrations.owntracks.step7=Auf der Kartenansicht den Tracking-Modus auf "Movement" einstellen
integrations.owntracks.step8=Die App startet automatisch den Versand von Standort-Updates
integrations.overland.step1=Overland installieren
integrations.overland.step2=Öffnen Sie Overland und gehen Sie auf die Registerkarte <strong>Settings</strong>
integrations.overland.step3=<strong>Important:</strong> Tippen Sie auf die <strong>Request Permission</strong> Schaltfläche, um den Standortzugriff zu gewähren - Overland wird ohne diese Berechtigung nichts tracken
integrations.overland.step4=Tippen Sie auf <strong>Empfänger Endpoint</strong>
integrations.overland.step5.with.token=Endpoint URL auf: <code>{0}</code>
integrations.overland.step5.without.token=Setz den Endpunkt URL zu: <code>{0}</code>
integrations.overland.step6=Lassen Sie das Feld <strong>Device ID</strong> leer oder setzen Sie eine benutzerdefinierte Kennung
integrations.overland.step7=Lassen Sie das Feld <strong>Access Token</strong> leer (wir verwenden das Token in der URL)
integrations.overland.step8=Konfigurieren Sie Tracking-Einstellungen:<ul><li><strong>Desired Accuracy:</strong> Best (für hohe Genauigkeit) oder 100m (für Batteriesparen)</li><li><strong>Points per Batch:</strong> 50-200 (niedriger für unzuverlässige Verbindungen)</li><li><strong>Significant Location:</strong> Deaktiviert</li></ul>
integrations.overland.step9=Gehen Sie zum <strong>Tracker</strong> Tab und schalten Sie Tracking auf <strong>On</strong>
integrations.overland.step10=Einstellen des Sendeintervallschiebers (1 Sekunde bis 30 Minuten)
integrations.overland.step11=Die App startet das Senden von Standortdaten automatisch
integrations.owntracks.recorder.test.missing.fields=Bitte füllen Sie Basis-URL, Benutzername und Geräte-ID aus
integrations.owntracks.recorder.test.loading=Verbindung testen…
integrations.owntracks.recorder.test.failed=Verbindungstest fehlgeschlagen
integrations.owntracks.recorder.loading.historical=Lade historische Daten…
geocoding.service.name.placeholder=Geben Sie einen Namen für den Dienst ein
language.polish=Polnisch
language.chinese=Chinesisch
statistics.title.overall=Gesamtstatistik
statistics.title.year=Statistiken für {0}
statistics.title.month-year=Statistiken für {0} {1}
map.auto-update.enable.title=Auto-Update-Modus aktivieren
map.auto-update.disable.title=Auto-Update-Modus deaktivieren
map.fullscreen.toggle.title=Vollbild aktivieren
export.gpx.relevant=Nur relevante Daten exportieren?
export.raw.data.loading=Standortdaten laden...
export.raw.data.found.data={0} Standortpunkte für den ausgewählten Datumsbereich gefunden
label.warning=Warnung:
label.info=Info:
visit.sensitivity.level.very-low=Sehr niedrig
visit.sensitivity.level.low=Nieder
visit.sensitivity.level.medium=Mittel
visit.sensitivity.level.high=Hoch
visit.sensitivity.level.very-high=Sehr hoch
visit.sensitivity.preview.date=Datum der Vorschau:
visit.sensitivity.preview.ready=Bereit
visit.sensitivity.preview.error=Bereit
settings.logging.description=Konfigurieren der Protokollierung und Anzeigen von Protokollen
memory.form.update=Änderungen speichern
memory.view.button=Erinnerung ansehen
memory.view.share=Teilen
memory.view.delete=Löschen
logging.title=Protokoll
logging.logger.class=Loggerklasse
logging.logger.placeholder=Geben Sie den Logger-Klassennamen ein oder lassen Sie ihn leer, um den Rootlogger zu konfigurieren
logging.logger.help=Leer lassen um den Root (global) Logger zu konfigurieren
logging.log.name=Logger Name
logging.log.level=Log Level
logging.actions=Aktionen
logging.level.debug=DEBUG
logging.level.trace=TRACE
logging.level.info=INFO
logging.level.warn=WAREN
logging.level.error=ERROR
logging.buffer.size=Größe des Puffers
logging.buffer.max.size=Maximale Puffergröße: {0}
logging.update=Aktualisieren
logging.configured.loggers=Konfigurierte Logger
logging.remove=Entfernen
logging.confirm.remove=Sind Sie sicher, dass Sie diese Loggerkonfiguration entfernen möchten?
logging.autoscroll=Zu neuen Nachrichten springen
logging.connecting=Zum Log-Stream verbinden…
logging.settings.updated=Einstellungen erfolgreich aktualisiert
logging.error=Fehler
logging.connected=Zum Log-Stream verbunden
logging.connection.lost=Fehler: Verbindung zum Log-Stream verloren

View File

@@ -1296,8 +1296,8 @@ integrations.reitti.info.user.id=Identifiant utilisateur :
integrations.reitti.info.user.version=Version :
integrations.reitti.info.connection.success=Connexion réussie!
integrations.reitti.info.connection.access=Vous pouvez accéder aux données de localisation de cet utilisateur.
integrations.no.token.title=Aucun jeton dAPI disponible
integrations.download=Téléchargement :
integrations.no.token.title=Aucun jeton dAPI disponible
integrations.download=Téléchargement :
integrations.homepage=Page daccueil :
integrations.gpslogger.step1=Télécharger GPSLogger depuis le Google Play Store
integrations.gpslogger.step2=Ouvrir GPSLogger et aller dans <strong>Logging details → Log to custom URL</strong>