feat(Calendar): update localization and enhance regression checklist
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 47s

- Updated the regression checklist to reflect the completion of Phase 14.
- Incremented versionCode to 4 and versionName to 1.2.0 in build.gradle.kts for the new release.
- Added new localization keys for calendar features in multiple languages, improving user accessibility and clarity.
- Enhanced the generate-mobile-i18n script to support new calendar translations, ensuring comprehensive coverage across locales.
This commit is contained in:
Torsten Schulz (local)
2026-05-15 07:55:32 +02:00
parent bf3e1af084
commit 2f15827658
6 changed files with 830 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
# Mobile App Regressions-Checkliste (manuell, Phase 14)
Kurztest vor Release oder nach größeren Änderungen. Angelehnt an `mobile-app/TODO.md` (Phasen 012).
Kurztest vor Release oder nach größeren Änderungen. Angelehnt an `mobile-app/TODO.md` (Phasen 014).
## Vorbedingungen

View File

@@ -221,11 +221,11 @@ Web-Route: `/calendar` · Referenz: `CalendarView.vue` (Aggregation mehrerer Dat
- [x] **i18n:** `MobileStrings`-Keys mit Fallback in `CalendarScreen.kt` / `AppRoot.kt` (`navigation.calendar`, `home.tileCalendar`, `mobile.calendar*`)
- [x] **Web-Parität (Detail):** Meldung wenn **alle** Kalender-Quellen fehlschlagen; Legenden-Zähler aus **allen** Events (unabhängig von den Schaltern); Agenda-Datum **kurz/lokalisiert**; Ausfall-Liste nur wenn **Startdatum im Monat** liegt (wie `CalendarView.vue`) `CalendarScreen.kt`
### Phase 13 Backlog / offen
### Phase 13 Backlog (abgeschlossen)
- [ ] **i18n:** Kalender-Keys in `MobileStrings.kt` für alle unterstützten Sprachen ergänzen (nicht nur Fallback im Code)
- [ ] **Kalender vs. Web:** Offizielle Teilnahmen mobil per Browser vs. Web in-app bewusst lassen oder später angleichen
- [ ] **Release:** Bei `isMinifyEnabled = true` ProGuard/R8 für Ktor, `kotlinx.serialization`, ggf. Koin (`composeApp/proguard-rules.pro`)
- [x] **i18n:** Kalender-Strings (`mobile.calendar*`) für **alle** in `MobileStrings` unterstützten Sprachen Übersetzungen in `scripts/generate-mobile-i18n.js` (`MOBILE_CALENDAR_I18N` + `calendarStringsForLocale`), Generator ausführen → `MobileStrings.kt`
- [x] **Kalender vs. Web:** Offizielle Teilnahmen mobil über Tab **Turnierteilnahmen** (`MainTab.OfficialParticipations`); tiefe Verwaltung wie Web unter `/tournament-participations` bewusst getrennt, angleichen nur bei Bedarf
- [x] **Release / R8:** ProGuard-Regeln + `proguardFiles` in `composeApp/build.gradle.kts` (Phase 14); `isMinifyEnabled` bleibt bis gezieltem Release-Test `false` siehe Phase 14
- [x] **Turniere (Produktiv-Crash):** `LazyColumn` mit eindeutigen Keys (`itemsIndexed` für Vereins-Turniere, offizielle Liste, Teilnahmen-Zeilen), vermeidet Duplicate-Key-Abstürze; zudem tolerante Deserialisierung für `allowsExternal` / `isDoublesTournament` (0/1, Strings) `TournamentsScreen.kt`, `FlexibleBooleanSerializers.kt`, `TournamentDtos.kt`
---
@@ -235,8 +235,8 @@ Web-Route: `/calendar` · Referenz: `CalendarView.vue` (Aggregation mehrerer Dat
- [x] **Regression-Checkliste** pro Phase (manuell) `mobile-app/REGRESSION_CHECKLIST.md`
- [x] Automatisierte Tests: `shared` Android-Unit-Tests (`androidUnitTest`), Startpunkt **Serialisierung Turnier-DTOs** (`InternalTournamentSerializationTest.kt`); ausführen: `./gradlew :shared:testDebugUnitTest`
- [x] **Barrierefreiheit (Basis):** Navigation Rail **TalkBack**-taugliche `contentDescription` für Sektions-Icons (Ein-/Ausklappen) und zusammengefasste Beschriftung für Blatt-Einträge (`NavRailLeafItem`); Bottom-Tabs hatten bereits Label + Icon-Beschreibung
- [ ] **Performance:** große Listen (Paging), Bildcache weiterhin iterativ / bei Bedarf
- [ ] Store-Texte, Datenverarbeitung (Play Policy) für Medien und Kontakte Verantwortung Listing/Datenschutzerklärung; technische Hinweise in `REGRESSION_CHECKLIST.md`
- [x] **Performance:** manuelle Stichproben und Erwartungen in `REGRESSION_CHECKLIST.md` (Abschnitt Performance); **Paging / Bildcache** bei Bedarf spätere Iteration
- [x] **Store / Compliance:** Play Console Datenschutz, Berechtigungen (Kamera/Galerie, Internet) Kurzhinweis in `REGRESSION_CHECKLIST.md` (Abschnitt Store / Compliance); ausführliche Listing-Texte Verantwortung Release
- [x] **Release / R8-Vorbereitung:** `composeApp/proguard-rules.pro` (Ktor, `kotlinx.serialization`, Koin, BuildConfig) + `proguardFiles` in `composeApp/build.gradle.kts`; **`isMinifyEnabled`** bleibt `false` bis gezielter Release-Test
---

View File

@@ -58,8 +58,8 @@ android {
applicationId = "de.tsschulz.tt_tagebuch"
minSdk = libs.versions.android.minSdk.get().toInt()
targetSdk = libs.versions.android.targetSdk.get().toInt()
versionCode = 3
versionName = "1.1.0"
versionCode = 4
versionName = "1.2.0"
buildConfigField("String", "BACKEND_BASE_URL", "\"$backendBaseUrl\"")
buildConfigField("String", "SOCKET_BASE_URL", "\"$socketBaseUrl\"")
}

View File

@@ -1289,6 +1289,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "Keine Termine in diesem Monat.",
"mobile.calendarAgendaTitle" to "Termine im Monat",
"mobile.calendarAllSourcesFailed" to "Kalenderdaten konnten nicht geladen werden.",
"mobile.calendarCancellationEnd" to "Bis optional",
"mobile.calendarCancellationHint" to "Blendet regelmäßige Trainingszeiten an den Tagen aus.",
"mobile.calendarCancellationInMonth" to "Ausfälle diesen Monat",
"mobile.calendarCancellationReason" to "Grund",
"mobile.calendarCancellationSave" to "Eintragen",
"mobile.calendarCancellationStart" to "Datum (YYYY-MM-DD)",
"mobile.calendarCancellationTitle" to "Training fällt aus",
"mobile.calendarGridTitle" to "Monat",
"mobile.calendarLegend" to "Anzeige",
"mobile.calendarLegendCancellation" to "Ausfall",
"mobile.calendarLegendHoliday" to "Feiertag",
"mobile.calendarLegendMatch" to "Punktspiel",
"mobile.calendarLegendOfficial" to "Teilnahme",
"mobile.calendarLegendSchool" to "Ferien",
"mobile.calendarLegendTournament" to "Turnier",
"mobile.calendarLegendTraining" to "Training",
"mobile.calendarSourceCancellations" to "Trainingsausfälle",
"mobile.calendarSourceDiary" to "Tagebuch",
"mobile.calendarSourceFailed" to "nicht geladen",
"mobile.calendarSourceHolidays" to "Ferien/Feiertage",
"mobile.calendarSourceMatches" to "Punktspiele",
"mobile.calendarSourceOfficial" to "Turnierteilnahmen",
"mobile.calendarSourceTournaments" to "Turniere",
"mobile.calendarSourceTrainingTimes" to "Trainingszeiten",
"mobile.calendarSubtitle" to "Training, Turniere, Spiele und Feiertage im Monat.",
"mobile.calendarTitle" to "Kalender",
"mobile.calendarToday" to "Heute",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",
@@ -3771,6 +3801,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "Keine Termine in diesem Monat.",
"mobile.calendarAgendaTitle" to "Termine im Monat",
"mobile.calendarAllSourcesFailed" to "Kalenderdaten konnten nicht geladen werden.",
"mobile.calendarCancellationEnd" to "Bis optional",
"mobile.calendarCancellationHint" to "Blendet regelmäßige Trainingszeiten an den Tagen aus.",
"mobile.calendarCancellationInMonth" to "Ausfälle diesen Monat",
"mobile.calendarCancellationReason" to "Grund",
"mobile.calendarCancellationSave" to "Eintragen",
"mobile.calendarCancellationStart" to "Datum (YYYY-MM-DD)",
"mobile.calendarCancellationTitle" to "Training fällt aus",
"mobile.calendarGridTitle" to "Monat",
"mobile.calendarLegend" to "Anzeige",
"mobile.calendarLegendCancellation" to "Ausfall",
"mobile.calendarLegendHoliday" to "Feiertag",
"mobile.calendarLegendMatch" to "Punktspiel",
"mobile.calendarLegendOfficial" to "Teilnahme",
"mobile.calendarLegendSchool" to "Ferien",
"mobile.calendarLegendTournament" to "Turnier",
"mobile.calendarLegendTraining" to "Training",
"mobile.calendarSourceCancellations" to "Trainingsausfälle",
"mobile.calendarSourceDiary" to "Tagebuch",
"mobile.calendarSourceFailed" to "nicht geladen",
"mobile.calendarSourceHolidays" to "Ferien/Feiertage",
"mobile.calendarSourceMatches" to "Punktspiele",
"mobile.calendarSourceOfficial" to "Turnierteilnahmen",
"mobile.calendarSourceTournaments" to "Turniere",
"mobile.calendarSourceTrainingTimes" to "Trainingszeiten",
"mobile.calendarSubtitle" to "Training, Turniere, Spiele und Feiertage im Monat.",
"mobile.calendarTitle" to "Kalender",
"mobile.calendarToday" to "Heute",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",
@@ -6254,6 +6314,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "Keine Termine in diesem Monat.",
"mobile.calendarAgendaTitle" to "Termine im Monat",
"mobile.calendarAllSourcesFailed" to "Kalenderdaten konnten nicht geladen werden.",
"mobile.calendarCancellationEnd" to "Bis optional",
"mobile.calendarCancellationHint" to "Blendet regelmäßige Trainingszeiten an den Tagen aus.",
"mobile.calendarCancellationInMonth" to "Ausfälle diesen Monat",
"mobile.calendarCancellationReason" to "Grund",
"mobile.calendarCancellationSave" to "Eintragen",
"mobile.calendarCancellationStart" to "Datum (YYYY-MM-DD)",
"mobile.calendarCancellationTitle" to "Training fällt aus",
"mobile.calendarGridTitle" to "Monat",
"mobile.calendarLegend" to "Anzeige",
"mobile.calendarLegendCancellation" to "Ausfall",
"mobile.calendarLegendHoliday" to "Feiertag",
"mobile.calendarLegendMatch" to "Punktspiel",
"mobile.calendarLegendOfficial" to "Teilnahme",
"mobile.calendarLegendSchool" to "Ferien",
"mobile.calendarLegendTournament" to "Turnier",
"mobile.calendarLegendTraining" to "Training",
"mobile.calendarSourceCancellations" to "Trainingsausfälle",
"mobile.calendarSourceDiary" to "Tagebuch",
"mobile.calendarSourceFailed" to "nicht geladen",
"mobile.calendarSourceHolidays" to "Ferien/Feiertage",
"mobile.calendarSourceMatches" to "Punktspiele",
"mobile.calendarSourceOfficial" to "Turnierteilnahmen",
"mobile.calendarSourceTournaments" to "Turniere",
"mobile.calendarSourceTrainingTimes" to "Trainingszeiten",
"mobile.calendarSubtitle" to "Training, Turniere, Spiele und Feiertage im Monat.",
"mobile.calendarTitle" to "Kalender",
"mobile.calendarToday" to "Heute",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",
@@ -8730,6 +8820,36 @@ object MobileStrings {
"mobile.active" to "Active",
"mobile.add" to "Add",
"mobile.appLoading" to "Loading app",
"mobile.calendarAgendaEmpty" to "No events in this month.",
"mobile.calendarAgendaTitle" to "Events this month",
"mobile.calendarAllSourcesFailed" to "Calendar data could not be loaded.",
"mobile.calendarCancellationEnd" to "Until (optional)",
"mobile.calendarCancellationHint" to "Hides recurring training times on those days.",
"mobile.calendarCancellationInMonth" to "Cancellations this month",
"mobile.calendarCancellationReason" to "Reason",
"mobile.calendarCancellationSave" to "Save",
"mobile.calendarCancellationStart" to "Date (YYYY-MM-DD)",
"mobile.calendarCancellationTitle" to "Training cancelled",
"mobile.calendarGridTitle" to "Month",
"mobile.calendarLegend" to "Display",
"mobile.calendarLegendCancellation" to "Cancellation",
"mobile.calendarLegendHoliday" to "Public holiday",
"mobile.calendarLegendMatch" to "League match",
"mobile.calendarLegendOfficial" to "Participation",
"mobile.calendarLegendSchool" to "School break",
"mobile.calendarLegendTournament" to "Tournament",
"mobile.calendarLegendTraining" to "Training",
"mobile.calendarSourceCancellations" to "Training cancellations",
"mobile.calendarSourceDiary" to "Diary",
"mobile.calendarSourceFailed" to "not loaded",
"mobile.calendarSourceHolidays" to "Holidays / school breaks",
"mobile.calendarSourceMatches" to "League matches",
"mobile.calendarSourceOfficial" to "Official participations",
"mobile.calendarSourceTournaments" to "Tournaments",
"mobile.calendarSourceTrainingTimes" to "Training times",
"mobile.calendarSubtitle" to "Training, tournaments, matches and holidays for the month.",
"mobile.calendarTitle" to "Calendar",
"mobile.calendarToday" to "Today",
"mobile.cancel" to "Cancel",
"mobile.clubRequest" to "Request access",
"mobile.clubRequested" to "Requested",
@@ -11206,6 +11326,36 @@ object MobileStrings {
"mobile.active" to "Active",
"mobile.add" to "Add",
"mobile.appLoading" to "Loading app",
"mobile.calendarAgendaEmpty" to "No events in this month.",
"mobile.calendarAgendaTitle" to "Events this month",
"mobile.calendarAllSourcesFailed" to "Calendar data could not be loaded.",
"mobile.calendarCancellationEnd" to "Until (optional)",
"mobile.calendarCancellationHint" to "Hides recurring training times on those days.",
"mobile.calendarCancellationInMonth" to "Cancellations this month",
"mobile.calendarCancellationReason" to "Reason",
"mobile.calendarCancellationSave" to "Save",
"mobile.calendarCancellationStart" to "Date (YYYY-MM-DD)",
"mobile.calendarCancellationTitle" to "Training cancelled",
"mobile.calendarGridTitle" to "Month",
"mobile.calendarLegend" to "Display",
"mobile.calendarLegendCancellation" to "Cancellation",
"mobile.calendarLegendHoliday" to "Public holiday",
"mobile.calendarLegendMatch" to "League match",
"mobile.calendarLegendOfficial" to "Participation",
"mobile.calendarLegendSchool" to "School break",
"mobile.calendarLegendTournament" to "Tournament",
"mobile.calendarLegendTraining" to "Training",
"mobile.calendarSourceCancellations" to "Training cancellations",
"mobile.calendarSourceDiary" to "Diary",
"mobile.calendarSourceFailed" to "not loaded",
"mobile.calendarSourceHolidays" to "Holidays / school breaks",
"mobile.calendarSourceMatches" to "League matches",
"mobile.calendarSourceOfficial" to "Official participations",
"mobile.calendarSourceTournaments" to "Tournaments",
"mobile.calendarSourceTrainingTimes" to "Training times",
"mobile.calendarSubtitle" to "Training, tournaments, matches and holidays for the month.",
"mobile.calendarTitle" to "Calendar",
"mobile.calendarToday" to "Today",
"mobile.cancel" to "Cancel",
"mobile.clubRequest" to "Request access",
"mobile.clubRequested" to "Requested",
@@ -13682,6 +13832,36 @@ object MobileStrings {
"mobile.active" to "Active",
"mobile.add" to "Add",
"mobile.appLoading" to "Loading app",
"mobile.calendarAgendaEmpty" to "No events in this month.",
"mobile.calendarAgendaTitle" to "Events this month",
"mobile.calendarAllSourcesFailed" to "Calendar data could not be loaded.",
"mobile.calendarCancellationEnd" to "Until (optional)",
"mobile.calendarCancellationHint" to "Hides recurring training times on those days.",
"mobile.calendarCancellationInMonth" to "Cancellations this month",
"mobile.calendarCancellationReason" to "Reason",
"mobile.calendarCancellationSave" to "Save",
"mobile.calendarCancellationStart" to "Date (YYYY-MM-DD)",
"mobile.calendarCancellationTitle" to "Training cancelled",
"mobile.calendarGridTitle" to "Month",
"mobile.calendarLegend" to "Display",
"mobile.calendarLegendCancellation" to "Cancellation",
"mobile.calendarLegendHoliday" to "Public holiday",
"mobile.calendarLegendMatch" to "League match",
"mobile.calendarLegendOfficial" to "Participation",
"mobile.calendarLegendSchool" to "School break",
"mobile.calendarLegendTournament" to "Tournament",
"mobile.calendarLegendTraining" to "Training",
"mobile.calendarSourceCancellations" to "Training cancellations",
"mobile.calendarSourceDiary" to "Diary",
"mobile.calendarSourceFailed" to "not loaded",
"mobile.calendarSourceHolidays" to "Holidays / school breaks",
"mobile.calendarSourceMatches" to "League matches",
"mobile.calendarSourceOfficial" to "Official participations",
"mobile.calendarSourceTournaments" to "Tournaments",
"mobile.calendarSourceTrainingTimes" to "Training times",
"mobile.calendarSubtitle" to "Training, tournaments, matches and holidays for the month.",
"mobile.calendarTitle" to "Calendar",
"mobile.calendarToday" to "Today",
"mobile.cancel" to "Cancel",
"mobile.clubRequest" to "Request access",
"mobile.clubRequested" to "Requested",
@@ -16158,6 +16338,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "No hay citas en este mes.",
"mobile.calendarAgendaTitle" to "Citas del mes",
"mobile.calendarAllSourcesFailed" to "No se pudieron cargar los datos del calendario.",
"mobile.calendarCancellationEnd" to "Hasta (opcional)",
"mobile.calendarCancellationHint" to "Oculta los horarios recurrentes en esos días.",
"mobile.calendarCancellationInMonth" to "Cancelaciones este mes",
"mobile.calendarCancellationReason" to "Motivo",
"mobile.calendarCancellationSave" to "Guardar",
"mobile.calendarCancellationStart" to "Fecha (AAAA-MM-DD)",
"mobile.calendarCancellationTitle" to "Entrenamiento cancelado",
"mobile.calendarGridTitle" to "Mes",
"mobile.calendarLegend" to "Vista",
"mobile.calendarLegendCancellation" to "Cancelación",
"mobile.calendarLegendHoliday" to "Festivo",
"mobile.calendarLegendMatch" to "Partido de liga",
"mobile.calendarLegendOfficial" to "Participación",
"mobile.calendarLegendSchool" to "Vacaciones escolares",
"mobile.calendarLegendTournament" to "Torneo",
"mobile.calendarLegendTraining" to "Entrenamiento",
"mobile.calendarSourceCancellations" to "Cancelaciones",
"mobile.calendarSourceDiary" to "Diario",
"mobile.calendarSourceFailed" to "no cargado",
"mobile.calendarSourceHolidays" to "Vacaciones / festivos",
"mobile.calendarSourceMatches" to "Partidos de liga",
"mobile.calendarSourceOfficial" to "Participaciones oficiales",
"mobile.calendarSourceTournaments" to "Torneos",
"mobile.calendarSourceTrainingTimes" to "Horarios de entrenamiento",
"mobile.calendarSubtitle" to "Entrenamientos, torneos, partidos y festivos del mes.",
"mobile.calendarTitle" to "Calendario",
"mobile.calendarToday" to "Hoy",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",
@@ -18634,6 +18844,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "Walang appointment sa buwang ito.",
"mobile.calendarAgendaTitle" to "Mga appointment sa buwan",
"mobile.calendarAllSourcesFailed" to "Hindi ma-load ang kalendaryo.",
"mobile.calendarCancellationEnd" to "Hanggang (opsyonal)",
"mobile.calendarCancellationHint" to "Itinatago ang paulit-ulit na oras sa mga araw na iyon.",
"mobile.calendarCancellationInMonth" to "Mga kansela ngayong buwan",
"mobile.calendarCancellationReason" to "Dahilan",
"mobile.calendarCancellationSave" to "I-save",
"mobile.calendarCancellationStart" to "Petsa (YYYY-MM-DD)",
"mobile.calendarCancellationTitle" to "Kinanselang pagsasanay",
"mobile.calendarGridTitle" to "Buwan",
"mobile.calendarLegend" to "Ipakita",
"mobile.calendarLegendCancellation" to "Kansela",
"mobile.calendarLegendHoliday" to "Holiday",
"mobile.calendarLegendMatch" to "Laban",
"mobile.calendarLegendOfficial" to "Pakikilahok",
"mobile.calendarLegendSchool" to "Bakasyon sa paaralan",
"mobile.calendarLegendTournament" to "Torneo",
"mobile.calendarLegendTraining" to "Pagsasanay",
"mobile.calendarSourceCancellations" to "Mga pagkansela",
"mobile.calendarSourceDiary" to "Tala-arawan",
"mobile.calendarSourceFailed" to "hindi na-load",
"mobile.calendarSourceHolidays" to "Holiday / bakasyon",
"mobile.calendarSourceMatches" to "Mga laban sa liga",
"mobile.calendarSourceOfficial" to "Opisyal na pakikilahok",
"mobile.calendarSourceTournaments" to "Mga torneo",
"mobile.calendarSourceTrainingTimes" to "Mga oras ng pagsasanay",
"mobile.calendarSubtitle" to "Pagsasanay, torneo, liga at holiday sa buwan.",
"mobile.calendarTitle" to "Kalendaryo",
"mobile.calendarToday" to "Ngayon",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",
@@ -21110,6 +21350,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "Aucun rendez-vous ce mois-ci.",
"mobile.calendarAgendaTitle" to "Rendez-vous du mois",
"mobile.calendarAllSourcesFailed" to "Impossible de charger le calendrier.",
"mobile.calendarCancellationEnd" to "Jusquau (optionnel)",
"mobile.calendarCancellationHint" to "Masque les créneaux récurrents ces jours-là.",
"mobile.calendarCancellationInMonth" to "Annulations ce mois-ci",
"mobile.calendarCancellationReason" to "Motif",
"mobile.calendarCancellationSave" to "Enregistrer",
"mobile.calendarCancellationStart" to "Date (AAAA-MM-JJ)",
"mobile.calendarCancellationTitle" to "Entraînement annulé",
"mobile.calendarGridTitle" to "Mois",
"mobile.calendarLegend" to "Affichage",
"mobile.calendarLegendCancellation" to "Annulation",
"mobile.calendarLegendHoliday" to "Jour férié",
"mobile.calendarLegendMatch" to "Match",
"mobile.calendarLegendOfficial" to "Participation",
"mobile.calendarLegendSchool" to "Vacances scolaires",
"mobile.calendarLegendTournament" to "Tournoi",
"mobile.calendarLegendTraining" to "Entraînement",
"mobile.calendarSourceCancellations" to "Annulations",
"mobile.calendarSourceDiary" to "Journal",
"mobile.calendarSourceFailed" to "non chargé",
"mobile.calendarSourceHolidays" to "Vacances / jours fériés",
"mobile.calendarSourceMatches" to "Matchs de championnat",
"mobile.calendarSourceOfficial" to "Participations officielles",
"mobile.calendarSourceTournaments" to "Tournois",
"mobile.calendarSourceTrainingTimes" to "Créneaux dentraînement",
"mobile.calendarSubtitle" to "Entraînements, tournois, matchs et vacances du mois.",
"mobile.calendarTitle" to "Calendrier",
"mobile.calendarToday" to "Aujourdhui",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",
@@ -23586,6 +23856,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "Nessun appuntamento in questo mese.",
"mobile.calendarAgendaTitle" to "Appuntamenti del mese",
"mobile.calendarAllSourcesFailed" to "Impossibile caricare il calendario.",
"mobile.calendarCancellationEnd" to "Fino al (opzionale)",
"mobile.calendarCancellationHint" to "Nasconde gli orari ricorrenti in quei giorni.",
"mobile.calendarCancellationInMonth" to "Cancellazioni questo mese",
"mobile.calendarCancellationReason" to "Motivo",
"mobile.calendarCancellationSave" to "Salva",
"mobile.calendarCancellationStart" to "Data (AAAA-MM-GG)",
"mobile.calendarCancellationTitle" to "Allenamento annullato",
"mobile.calendarGridTitle" to "Mese",
"mobile.calendarLegend" to "Vista",
"mobile.calendarLegendCancellation" to "Cancellazione",
"mobile.calendarLegendHoliday" to "Festività",
"mobile.calendarLegendMatch" to "Partita",
"mobile.calendarLegendOfficial" to "Partecipazione",
"mobile.calendarLegendSchool" to "Vacanze scolastiche",
"mobile.calendarLegendTournament" to "Torneo",
"mobile.calendarLegendTraining" to "Allenamento",
"mobile.calendarSourceCancellations" to "Cancellazioni",
"mobile.calendarSourceDiary" to "Diario",
"mobile.calendarSourceFailed" to "non caricato",
"mobile.calendarSourceHolidays" to "Vacanze / festività",
"mobile.calendarSourceMatches" to "Partite campionato",
"mobile.calendarSourceOfficial" to "Partecipazioni ufficiali",
"mobile.calendarSourceTournaments" to "Tornei",
"mobile.calendarSourceTrainingTimes" to "Orari allenamento",
"mobile.calendarSubtitle" to "Allenamenti, tornei, partite e festività del mese.",
"mobile.calendarTitle" to "Calendario",
"mobile.calendarToday" to "Oggi",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",
@@ -26062,6 +26362,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "今月の予定はありません。",
"mobile.calendarAgendaTitle" to "今月の予定",
"mobile.calendarAllSourcesFailed" to "カレンダーを読み込めませんでした。",
"mobile.calendarCancellationEnd" to "終了日(任意)",
"mobile.calendarCancellationHint" to "その日の定例練習時間を非表示にします。",
"mobile.calendarCancellationInMonth" to "今月の中止",
"mobile.calendarCancellationReason" to "理由",
"mobile.calendarCancellationSave" to "保存",
"mobile.calendarCancellationStart" to "日付 (YYYY-MM-DD)",
"mobile.calendarCancellationTitle" to "練習中止",
"mobile.calendarGridTitle" to "",
"mobile.calendarLegend" to "表示",
"mobile.calendarLegendCancellation" to "中止",
"mobile.calendarLegendHoliday" to "祝日",
"mobile.calendarLegendMatch" to "リーグ戦",
"mobile.calendarLegendOfficial" to "参加",
"mobile.calendarLegendSchool" to "学校の休み",
"mobile.calendarLegendTournament" to "大会",
"mobile.calendarLegendTraining" to "練習",
"mobile.calendarSourceCancellations" to "練習中止",
"mobile.calendarSourceDiary" to "日記",
"mobile.calendarSourceFailed" to "未読込",
"mobile.calendarSourceHolidays" to "休日・学校休暇",
"mobile.calendarSourceMatches" to "リーグ戦",
"mobile.calendarSourceOfficial" to "公式参加",
"mobile.calendarSourceTournaments" to "大会",
"mobile.calendarSourceTrainingTimes" to "練習時間",
"mobile.calendarSubtitle" to "今月の練習・大会・試合・休日。",
"mobile.calendarTitle" to "カレンダー",
"mobile.calendarToday" to "今日",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",
@@ -28538,6 +28868,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "Brak terminów w tym miesiącu.",
"mobile.calendarAgendaTitle" to "Terminy w miesiącu",
"mobile.calendarAllSourcesFailed" to "Nie udało się wczytać kalendarza.",
"mobile.calendarCancellationEnd" to "Do (opcjonalnie)",
"mobile.calendarCancellationHint" to "Ukrywa cykliczne terminy treningów w te dni.",
"mobile.calendarCancellationInMonth" to "Odwołania w tym miesiącu",
"mobile.calendarCancellationReason" to "Powód",
"mobile.calendarCancellationSave" to "Zapisz",
"mobile.calendarCancellationStart" to "Data (RRRR-MM-DD)",
"mobile.calendarCancellationTitle" to "Trening odwołany",
"mobile.calendarGridTitle" to "Miesiąc",
"mobile.calendarLegend" to "Widok",
"mobile.calendarLegendCancellation" to "Odwołanie",
"mobile.calendarLegendHoliday" to "Święto",
"mobile.calendarLegendMatch" to "Mecz",
"mobile.calendarLegendOfficial" to "Start",
"mobile.calendarLegendSchool" to "Ferie",
"mobile.calendarLegendTournament" to "Turniej",
"mobile.calendarLegendTraining" to "Trening",
"mobile.calendarSourceCancellations" to "Odwołania",
"mobile.calendarSourceDiary" to "Dziennik",
"mobile.calendarSourceFailed" to "nie wczytano",
"mobile.calendarSourceHolidays" to "Święta / ferie",
"mobile.calendarSourceMatches" to "Mecze ligowe",
"mobile.calendarSourceOfficial" to "Oficjalne starty",
"mobile.calendarSourceTournaments" to "Turnieje",
"mobile.calendarSourceTrainingTimes" to "Terminy treningów",
"mobile.calendarSubtitle" to "Treningi, turnieje, mecze i święta w miesiącu.",
"mobile.calendarTitle" to "Kalendarz",
"mobile.calendarToday" to "Dziś",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",
@@ -31014,6 +31374,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "ไม่มีนัดในเดือนนี้",
"mobile.calendarAgendaTitle" to "นัดในเดือนนี้",
"mobile.calendarAllSourcesFailed" to "โหลดข้อมูลปฏิทินไม่สำเร็จ",
"mobile.calendarCancellationEnd" to "ถึง (ไม่บังคับ)",
"mobile.calendarCancellationHint" to "ซ่อนเวลาฝึกประจำในวันเหล่านั้น",
"mobile.calendarCancellationInMonth" to "การยกเลิกในเดือนนี้",
"mobile.calendarCancellationReason" to "เหตุผล",
"mobile.calendarCancellationSave" to "บันทึก",
"mobile.calendarCancellationStart" to "วันที่ (YYYY-MM-DD)",
"mobile.calendarCancellationTitle" to "ยกเลิกการฝึก",
"mobile.calendarGridTitle" to "เดือน",
"mobile.calendarLegend" to "แสดง",
"mobile.calendarLegendCancellation" to "ยกเลิก",
"mobile.calendarLegendHoliday" to "วันหยุด",
"mobile.calendarLegendMatch" to "แมตช์",
"mobile.calendarLegendOfficial" to "เข้าร่วม",
"mobile.calendarLegendSchool" to "ปิดเทอม",
"mobile.calendarLegendTournament" to "ทัวร์นาเมนต์",
"mobile.calendarLegendTraining" to "ฝึก",
"mobile.calendarSourceCancellations" to "ยกเลิกการฝึก",
"mobile.calendarSourceDiary" to "ไดอารี่",
"mobile.calendarSourceFailed" to "ไม่ได้โหลด",
"mobile.calendarSourceHolidays" to "วันหยุด/ปิดเทอม",
"mobile.calendarSourceMatches" to "แมตช์ลีก",
"mobile.calendarSourceOfficial" to "การเข้าร่วมอย่างเป็นทางการ",
"mobile.calendarSourceTournaments" to "การแข่งขัน",
"mobile.calendarSourceTrainingTimes" to "เวลาฝึก",
"mobile.calendarSubtitle" to "การฝึก ทัวร์นาเมนต์ แมตช์ และวันหยุดในเดือนนี้",
"mobile.calendarTitle" to "ปฏิทิน",
"mobile.calendarToday" to "วันนี้",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",
@@ -33490,6 +33880,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "Walang appointment sa buwang ito.",
"mobile.calendarAgendaTitle" to "Mga appointment sa buwan",
"mobile.calendarAllSourcesFailed" to "Hindi ma-load ang kalendaryo.",
"mobile.calendarCancellationEnd" to "Hanggang (opsyonal)",
"mobile.calendarCancellationHint" to "Itinatago ang paulit-ulit na oras ng training sa mga araw na iyon.",
"mobile.calendarCancellationInMonth" to "Mga kansela ngayong buwan",
"mobile.calendarCancellationReason" to "Dahilan",
"mobile.calendarCancellationSave" to "I-save",
"mobile.calendarCancellationStart" to "Petsa (YYYY-MM-DD)",
"mobile.calendarCancellationTitle" to "Kanseladong training",
"mobile.calendarGridTitle" to "Buwan",
"mobile.calendarLegend" to "Ipakita",
"mobile.calendarLegendCancellation" to "Kansela",
"mobile.calendarLegendHoliday" to "Holiday",
"mobile.calendarLegendMatch" to "Laban",
"mobile.calendarLegendOfficial" to "Pakikilahok",
"mobile.calendarLegendSchool" to "Bakasyon sa paaralan",
"mobile.calendarLegendTournament" to "Torneo",
"mobile.calendarLegendTraining" to "Training",
"mobile.calendarSourceCancellations" to "Mga pagkansela",
"mobile.calendarSourceDiary" to "Diaryo",
"mobile.calendarSourceFailed" to "hindi na-load",
"mobile.calendarSourceHolidays" to "Holiday / bakasyon",
"mobile.calendarSourceMatches" to "Mga laban sa liga",
"mobile.calendarSourceOfficial" to "Opisyal na pakikilahok",
"mobile.calendarSourceTournaments" to "Mga torneo",
"mobile.calendarSourceTrainingTimes" to "Mga oras ng training",
"mobile.calendarSubtitle" to "Training, torneo, liga at holiday sa buwan.",
"mobile.calendarTitle" to "Kalendaryo",
"mobile.calendarToday" to "Ngayon",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",
@@ -35966,6 +36386,36 @@ object MobileStrings {
"mobile.active" to "Aktiv",
"mobile.add" to "Hinzufügen",
"mobile.appLoading" to "App wird geladen",
"mobile.calendarAgendaEmpty" to "本月没有日程。",
"mobile.calendarAgendaTitle" to "本月日程",
"mobile.calendarAllSourcesFailed" to "无法加载日历数据。",
"mobile.calendarCancellationEnd" to "结束(可选)",
"mobile.calendarCancellationHint" to "在这些日期隐藏定期训练时间。",
"mobile.calendarCancellationInMonth" to "本月取消",
"mobile.calendarCancellationReason" to "原因",
"mobile.calendarCancellationSave" to "保存",
"mobile.calendarCancellationStart" to "日期 (YYYY-MM-DD)",
"mobile.calendarCancellationTitle" to "训练取消",
"mobile.calendarGridTitle" to "月份",
"mobile.calendarLegend" to "显示",
"mobile.calendarLegendCancellation" to "取消",
"mobile.calendarLegendHoliday" to "节日",
"mobile.calendarLegendMatch" to "联赛",
"mobile.calendarLegendOfficial" to "参赛",
"mobile.calendarLegendSchool" to "学校假期",
"mobile.calendarLegendTournament" to "锦标赛",
"mobile.calendarLegendTraining" to "训练",
"mobile.calendarSourceCancellations" to "训练取消",
"mobile.calendarSourceDiary" to "日记",
"mobile.calendarSourceFailed" to "未加载",
"mobile.calendarSourceHolidays" to "假期/节日",
"mobile.calendarSourceMatches" to "联赛",
"mobile.calendarSourceOfficial" to "官方参赛",
"mobile.calendarSourceTournaments" to "比赛",
"mobile.calendarSourceTrainingTimes" to "训练时间",
"mobile.calendarSubtitle" to "本月训练、比赛与假期一览。",
"mobile.calendarTitle" to "日历",
"mobile.calendarToday" to "今天",
"mobile.cancel" to "Abbrechen",
"mobile.clubRequest" to "Zugriff anfragen",
"mobile.clubRequested" to "Angefragt",

View File

@@ -133,6 +133,376 @@ const MOBILE_STRINGS = {
},
};
/** Kalender-Tab (CalendarScreen.kt): eigene Übersetzungen pro Locale, damit nicht nur Deutsch aus dem Basis-Flat greift. */
const MOBILE_CALENDAR_I18N = {
de: {
'mobile.calendarSourceDiary': 'Tagebuch',
'mobile.calendarSourceTrainingTimes': 'Trainingszeiten',
'mobile.calendarSourceCancellations': 'Trainingsausfälle',
'mobile.calendarSourceTournaments': 'Turniere',
'mobile.calendarSourceMatches': 'Punktspiele',
'mobile.calendarSourceOfficial': 'Turnierteilnahmen',
'mobile.calendarSourceHolidays': 'Ferien/Feiertage',
'mobile.calendarLegendTraining': 'Training',
'mobile.calendarLegendTournament': 'Turnier',
'mobile.calendarLegendOfficial': 'Teilnahme',
'mobile.calendarLegendMatch': 'Punktspiel',
'mobile.calendarLegendHoliday': 'Feiertag',
'mobile.calendarLegendSchool': 'Ferien',
'mobile.calendarLegendCancellation': 'Ausfall',
'mobile.calendarTitle': 'Kalender',
'mobile.calendarSubtitle': 'Training, Turniere, Spiele und Feiertage im Monat.',
'mobile.calendarToday': 'Heute',
'mobile.calendarAllSourcesFailed': 'Kalenderdaten konnten nicht geladen werden.',
'mobile.calendarSourceFailed': 'nicht geladen',
'mobile.calendarLegend': 'Anzeige',
'mobile.calendarCancellationTitle': 'Training fällt aus',
'mobile.calendarCancellationHint': 'Blendet regelmäßige Trainingszeiten an den Tagen aus.',
'mobile.calendarCancellationStart': 'Datum (YYYY-MM-DD)',
'mobile.calendarCancellationEnd': 'Bis optional',
'mobile.calendarCancellationReason': 'Grund',
'mobile.calendarCancellationSave': 'Eintragen',
'mobile.calendarCancellationInMonth': 'Ausfälle diesen Monat',
'mobile.calendarGridTitle': 'Monat',
'mobile.calendarAgendaTitle': 'Termine im Monat',
'mobile.calendarAgendaEmpty': 'Keine Termine in diesem Monat.',
},
en: {
'mobile.calendarSourceDiary': 'Diary',
'mobile.calendarSourceTrainingTimes': 'Training times',
'mobile.calendarSourceCancellations': 'Training cancellations',
'mobile.calendarSourceTournaments': 'Tournaments',
'mobile.calendarSourceMatches': 'League matches',
'mobile.calendarSourceOfficial': 'Official participations',
'mobile.calendarSourceHolidays': 'Holidays / school breaks',
'mobile.calendarLegendTraining': 'Training',
'mobile.calendarLegendTournament': 'Tournament',
'mobile.calendarLegendOfficial': 'Participation',
'mobile.calendarLegendMatch': 'League match',
'mobile.calendarLegendHoliday': 'Public holiday',
'mobile.calendarLegendSchool': 'School break',
'mobile.calendarLegendCancellation': 'Cancellation',
'mobile.calendarTitle': 'Calendar',
'mobile.calendarSubtitle': 'Training, tournaments, matches and holidays for the month.',
'mobile.calendarToday': 'Today',
'mobile.calendarAllSourcesFailed': 'Calendar data could not be loaded.',
'mobile.calendarSourceFailed': 'not loaded',
'mobile.calendarLegend': 'Display',
'mobile.calendarCancellationTitle': 'Training cancelled',
'mobile.calendarCancellationHint': 'Hides recurring training times on those days.',
'mobile.calendarCancellationStart': 'Date (YYYY-MM-DD)',
'mobile.calendarCancellationEnd': 'Until (optional)',
'mobile.calendarCancellationReason': 'Reason',
'mobile.calendarCancellationSave': 'Save',
'mobile.calendarCancellationInMonth': 'Cancellations this month',
'mobile.calendarGridTitle': 'Month',
'mobile.calendarAgendaTitle': 'Events this month',
'mobile.calendarAgendaEmpty': 'No events in this month.',
},
es: {
'mobile.calendarSourceDiary': 'Diario',
'mobile.calendarSourceTrainingTimes': 'Horarios de entrenamiento',
'mobile.calendarSourceCancellations': 'Cancelaciones',
'mobile.calendarSourceTournaments': 'Torneos',
'mobile.calendarSourceMatches': 'Partidos de liga',
'mobile.calendarSourceOfficial': 'Participaciones oficiales',
'mobile.calendarSourceHolidays': 'Vacaciones / festivos',
'mobile.calendarLegendTraining': 'Entrenamiento',
'mobile.calendarLegendTournament': 'Torneo',
'mobile.calendarLegendOfficial': 'Participación',
'mobile.calendarLegendMatch': 'Partido de liga',
'mobile.calendarLegendHoliday': 'Festivo',
'mobile.calendarLegendSchool': 'Vacaciones escolares',
'mobile.calendarLegendCancellation': 'Cancelación',
'mobile.calendarTitle': 'Calendario',
'mobile.calendarSubtitle': 'Entrenamientos, torneos, partidos y festivos del mes.',
'mobile.calendarToday': 'Hoy',
'mobile.calendarAllSourcesFailed': 'No se pudieron cargar los datos del calendario.',
'mobile.calendarSourceFailed': 'no cargado',
'mobile.calendarLegend': 'Vista',
'mobile.calendarCancellationTitle': 'Entrenamiento cancelado',
'mobile.calendarCancellationHint': 'Oculta los horarios recurrentes en esos días.',
'mobile.calendarCancellationStart': 'Fecha (AAAA-MM-DD)',
'mobile.calendarCancellationEnd': 'Hasta (opcional)',
'mobile.calendarCancellationReason': 'Motivo',
'mobile.calendarCancellationSave': 'Guardar',
'mobile.calendarCancellationInMonth': 'Cancelaciones este mes',
'mobile.calendarGridTitle': 'Mes',
'mobile.calendarAgendaTitle': 'Citas del mes',
'mobile.calendarAgendaEmpty': 'No hay citas en este mes.',
},
fr: {
'mobile.calendarSourceDiary': 'Journal',
'mobile.calendarSourceTrainingTimes': 'Créneaux dentraînement',
'mobile.calendarSourceCancellations': 'Annulations',
'mobile.calendarSourceTournaments': 'Tournois',
'mobile.calendarSourceMatches': 'Matchs de championnat',
'mobile.calendarSourceOfficial': 'Participations officielles',
'mobile.calendarSourceHolidays': 'Vacances / jours fériés',
'mobile.calendarLegendTraining': 'Entraînement',
'mobile.calendarLegendTournament': 'Tournoi',
'mobile.calendarLegendOfficial': 'Participation',
'mobile.calendarLegendMatch': 'Match',
'mobile.calendarLegendHoliday': 'Jour férié',
'mobile.calendarLegendSchool': 'Vacances scolaires',
'mobile.calendarLegendCancellation': 'Annulation',
'mobile.calendarTitle': 'Calendrier',
'mobile.calendarSubtitle': 'Entraînements, tournois, matchs et vacances du mois.',
'mobile.calendarToday': 'Aujourdhui',
'mobile.calendarAllSourcesFailed': 'Impossible de charger le calendrier.',
'mobile.calendarSourceFailed': 'non chargé',
'mobile.calendarLegend': 'Affichage',
'mobile.calendarCancellationTitle': 'Entraînement annulé',
'mobile.calendarCancellationHint': 'Masque les créneaux récurrents ces jours-là.',
'mobile.calendarCancellationStart': 'Date (AAAA-MM-JJ)',
'mobile.calendarCancellationEnd': 'Jusquau (optionnel)',
'mobile.calendarCancellationReason': 'Motif',
'mobile.calendarCancellationSave': 'Enregistrer',
'mobile.calendarCancellationInMonth': 'Annulations ce mois-ci',
'mobile.calendarGridTitle': 'Mois',
'mobile.calendarAgendaTitle': 'Rendez-vous du mois',
'mobile.calendarAgendaEmpty': 'Aucun rendez-vous ce mois-ci.',
},
it: {
'mobile.calendarSourceDiary': 'Diario',
'mobile.calendarSourceTrainingTimes': 'Orari allenamento',
'mobile.calendarSourceCancellations': 'Cancellazioni',
'mobile.calendarSourceTournaments': 'Tornei',
'mobile.calendarSourceMatches': 'Partite campionato',
'mobile.calendarSourceOfficial': 'Partecipazioni ufficiali',
'mobile.calendarSourceHolidays': 'Vacanze / festività',
'mobile.calendarLegendTraining': 'Allenamento',
'mobile.calendarLegendTournament': 'Torneo',
'mobile.calendarLegendOfficial': 'Partecipazione',
'mobile.calendarLegendMatch': 'Partita',
'mobile.calendarLegendHoliday': 'Festività',
'mobile.calendarLegendSchool': 'Vacanze scolastiche',
'mobile.calendarLegendCancellation': 'Cancellazione',
'mobile.calendarTitle': 'Calendario',
'mobile.calendarSubtitle': 'Allenamenti, tornei, partite e festività del mese.',
'mobile.calendarToday': 'Oggi',
'mobile.calendarAllSourcesFailed': 'Impossibile caricare il calendario.',
'mobile.calendarSourceFailed': 'non caricato',
'mobile.calendarLegend': 'Vista',
'mobile.calendarCancellationTitle': 'Allenamento annullato',
'mobile.calendarCancellationHint': 'Nasconde gli orari ricorrenti in quei giorni.',
'mobile.calendarCancellationStart': 'Data (AAAA-MM-GG)',
'mobile.calendarCancellationEnd': 'Fino al (opzionale)',
'mobile.calendarCancellationReason': 'Motivo',
'mobile.calendarCancellationSave': 'Salva',
'mobile.calendarCancellationInMonth': 'Cancellazioni questo mese',
'mobile.calendarGridTitle': 'Mese',
'mobile.calendarAgendaTitle': 'Appuntamenti del mese',
'mobile.calendarAgendaEmpty': 'Nessun appuntamento in questo mese.',
},
pl: {
'mobile.calendarSourceDiary': 'Dziennik',
'mobile.calendarSourceTrainingTimes': 'Terminy treningów',
'mobile.calendarSourceCancellations': 'Odwołania',
'mobile.calendarSourceTournaments': 'Turnieje',
'mobile.calendarSourceMatches': 'Mecze ligowe',
'mobile.calendarSourceOfficial': 'Oficjalne starty',
'mobile.calendarSourceHolidays': 'Święta / ferie',
'mobile.calendarLegendTraining': 'Trening',
'mobile.calendarLegendTournament': 'Turniej',
'mobile.calendarLegendOfficial': 'Start',
'mobile.calendarLegendMatch': 'Mecz',
'mobile.calendarLegendHoliday': 'Święto',
'mobile.calendarLegendSchool': 'Ferie',
'mobile.calendarLegendCancellation': 'Odwołanie',
'mobile.calendarTitle': 'Kalendarz',
'mobile.calendarSubtitle': 'Treningi, turnieje, mecze i święta w miesiącu.',
'mobile.calendarToday': 'Dziś',
'mobile.calendarAllSourcesFailed': 'Nie udało się wczytać kalendarza.',
'mobile.calendarSourceFailed': 'nie wczytano',
'mobile.calendarLegend': 'Widok',
'mobile.calendarCancellationTitle': 'Trening odwołany',
'mobile.calendarCancellationHint': 'Ukrywa cykliczne terminy treningów w te dni.',
'mobile.calendarCancellationStart': 'Data (RRRR-MM-DD)',
'mobile.calendarCancellationEnd': 'Do (opcjonalnie)',
'mobile.calendarCancellationReason': 'Powód',
'mobile.calendarCancellationSave': 'Zapisz',
'mobile.calendarCancellationInMonth': 'Odwołania w tym miesiącu',
'mobile.calendarGridTitle': 'Miesiąc',
'mobile.calendarAgendaTitle': 'Terminy w miesiącu',
'mobile.calendarAgendaEmpty': 'Brak terminów w tym miesiącu.',
},
ja: {
'mobile.calendarSourceDiary': '日記',
'mobile.calendarSourceTrainingTimes': '練習時間',
'mobile.calendarSourceCancellations': '練習中止',
'mobile.calendarSourceTournaments': '大会',
'mobile.calendarSourceMatches': 'リーグ戦',
'mobile.calendarSourceOfficial': '公式参加',
'mobile.calendarSourceHolidays': '休日・学校休暇',
'mobile.calendarLegendTraining': '練習',
'mobile.calendarLegendTournament': '大会',
'mobile.calendarLegendOfficial': '参加',
'mobile.calendarLegendMatch': 'リーグ戦',
'mobile.calendarLegendHoliday': '祝日',
'mobile.calendarLegendSchool': '学校の休み',
'mobile.calendarLegendCancellation': '中止',
'mobile.calendarTitle': 'カレンダー',
'mobile.calendarSubtitle': '今月の練習・大会・試合・休日。',
'mobile.calendarToday': '今日',
'mobile.calendarAllSourcesFailed': 'カレンダーを読み込めませんでした。',
'mobile.calendarSourceFailed': '未読込',
'mobile.calendarLegend': '表示',
'mobile.calendarCancellationTitle': '練習中止',
'mobile.calendarCancellationHint': 'その日の定例練習時間を非表示にします。',
'mobile.calendarCancellationStart': '日付 (YYYY-MM-DD)',
'mobile.calendarCancellationEnd': '終了日(任意)',
'mobile.calendarCancellationReason': '理由',
'mobile.calendarCancellationSave': '保存',
'mobile.calendarCancellationInMonth': '今月の中止',
'mobile.calendarGridTitle': '月',
'mobile.calendarAgendaTitle': '今月の予定',
'mobile.calendarAgendaEmpty': '今月の予定はありません。',
},
zh: {
'mobile.calendarSourceDiary': '日记',
'mobile.calendarSourceTrainingTimes': '训练时间',
'mobile.calendarSourceCancellations': '训练取消',
'mobile.calendarSourceTournaments': '比赛',
'mobile.calendarSourceMatches': '联赛',
'mobile.calendarSourceOfficial': '官方参赛',
'mobile.calendarSourceHolidays': '假期/节日',
'mobile.calendarLegendTraining': '训练',
'mobile.calendarLegendTournament': '锦标赛',
'mobile.calendarLegendOfficial': '参赛',
'mobile.calendarLegendMatch': '联赛',
'mobile.calendarLegendHoliday': '节日',
'mobile.calendarLegendSchool': '学校假期',
'mobile.calendarLegendCancellation': '取消',
'mobile.calendarTitle': '日历',
'mobile.calendarSubtitle': '本月训练、比赛与假期一览。',
'mobile.calendarToday': '今天',
'mobile.calendarAllSourcesFailed': '无法加载日历数据。',
'mobile.calendarSourceFailed': '未加载',
'mobile.calendarLegend': '显示',
'mobile.calendarCancellationTitle': '训练取消',
'mobile.calendarCancellationHint': '在这些日期隐藏定期训练时间。',
'mobile.calendarCancellationStart': '日期 (YYYY-MM-DD)',
'mobile.calendarCancellationEnd': '结束(可选)',
'mobile.calendarCancellationReason': '原因',
'mobile.calendarCancellationSave': '保存',
'mobile.calendarCancellationInMonth': '本月取消',
'mobile.calendarGridTitle': '月份',
'mobile.calendarAgendaTitle': '本月日程',
'mobile.calendarAgendaEmpty': '本月没有日程。',
},
th: {
'mobile.calendarSourceDiary': 'ไดอารี่',
'mobile.calendarSourceTrainingTimes': 'เวลาฝึก',
'mobile.calendarSourceCancellations': 'ยกเลิกการฝึก',
'mobile.calendarSourceTournaments': 'การแข่งขัน',
'mobile.calendarSourceMatches': 'แมตช์ลีก',
'mobile.calendarSourceOfficial': 'การเข้าร่วมอย่างเป็นทางการ',
'mobile.calendarSourceHolidays': 'วันหยุด/ปิดเทอม',
'mobile.calendarLegendTraining': 'ฝึก',
'mobile.calendarLegendTournament': 'ทัวร์นาเมนต์',
'mobile.calendarLegendOfficial': 'เข้าร่วม',
'mobile.calendarLegendMatch': 'แมตช์',
'mobile.calendarLegendHoliday': 'วันหยุด',
'mobile.calendarLegendSchool': 'ปิดเทอม',
'mobile.calendarLegendCancellation': 'ยกเลิก',
'mobile.calendarTitle': 'ปฏิทิน',
'mobile.calendarSubtitle': 'การฝึก ทัวร์นาเมนต์ แมตช์ และวันหยุดในเดือนนี้',
'mobile.calendarToday': 'วันนี้',
'mobile.calendarAllSourcesFailed': 'โหลดข้อมูลปฏิทินไม่สำเร็จ',
'mobile.calendarSourceFailed': 'ไม่ได้โหลด',
'mobile.calendarLegend': 'แสดง',
'mobile.calendarCancellationTitle': 'ยกเลิกการฝึก',
'mobile.calendarCancellationHint': 'ซ่อนเวลาฝึกประจำในวันเหล่านั้น',
'mobile.calendarCancellationStart': 'วันที่ (YYYY-MM-DD)',
'mobile.calendarCancellationEnd': 'ถึง (ไม่บังคับ)',
'mobile.calendarCancellationReason': 'เหตุผล',
'mobile.calendarCancellationSave': 'บันทึก',
'mobile.calendarCancellationInMonth': 'การยกเลิกในเดือนนี้',
'mobile.calendarGridTitle': 'เดือน',
'mobile.calendarAgendaTitle': 'นัดในเดือนนี้',
'mobile.calendarAgendaEmpty': 'ไม่มีนัดในเดือนนี้',
},
tl: {
'mobile.calendarSourceDiary': 'Diaryo',
'mobile.calendarSourceTrainingTimes': 'Mga oras ng training',
'mobile.calendarSourceCancellations': 'Mga pagkansela',
'mobile.calendarSourceTournaments': 'Mga torneo',
'mobile.calendarSourceMatches': 'Mga laban sa liga',
'mobile.calendarSourceOfficial': 'Opisyal na pakikilahok',
'mobile.calendarSourceHolidays': 'Holiday / bakasyon',
'mobile.calendarLegendTraining': 'Training',
'mobile.calendarLegendTournament': 'Torneo',
'mobile.calendarLegendOfficial': 'Pakikilahok',
'mobile.calendarLegendMatch': 'Laban',
'mobile.calendarLegendHoliday': 'Holiday',
'mobile.calendarLegendSchool': 'Bakasyon sa paaralan',
'mobile.calendarLegendCancellation': 'Kansela',
'mobile.calendarTitle': 'Kalendaryo',
'mobile.calendarSubtitle': 'Training, torneo, liga at holiday sa buwan.',
'mobile.calendarToday': 'Ngayon',
'mobile.calendarAllSourcesFailed': 'Hindi ma-load ang kalendaryo.',
'mobile.calendarSourceFailed': 'hindi na-load',
'mobile.calendarLegend': 'Ipakita',
'mobile.calendarCancellationTitle': 'Kanseladong training',
'mobile.calendarCancellationHint': 'Itinatago ang paulit-ulit na oras ng training sa mga araw na iyon.',
'mobile.calendarCancellationStart': 'Petsa (YYYY-MM-DD)',
'mobile.calendarCancellationEnd': 'Hanggang (opsyonal)',
'mobile.calendarCancellationReason': 'Dahilan',
'mobile.calendarCancellationSave': 'I-save',
'mobile.calendarCancellationInMonth': 'Mga kansela ngayong buwan',
'mobile.calendarGridTitle': 'Buwan',
'mobile.calendarAgendaTitle': 'Mga appointment sa buwan',
'mobile.calendarAgendaEmpty': 'Walang appointment sa buwang ito.',
},
fil: {
'mobile.calendarSourceDiary': 'Tala-arawan',
'mobile.calendarSourceTrainingTimes': 'Mga oras ng pagsasanay',
'mobile.calendarSourceCancellations': 'Mga pagkansela',
'mobile.calendarSourceTournaments': 'Mga torneo',
'mobile.calendarSourceMatches': 'Mga laban sa liga',
'mobile.calendarSourceOfficial': 'Opisyal na pakikilahok',
'mobile.calendarSourceHolidays': 'Holiday / bakasyon',
'mobile.calendarLegendTraining': 'Pagsasanay',
'mobile.calendarLegendTournament': 'Torneo',
'mobile.calendarLegendOfficial': 'Pakikilahok',
'mobile.calendarLegendMatch': 'Laban',
'mobile.calendarLegendHoliday': 'Holiday',
'mobile.calendarLegendSchool': 'Bakasyon sa paaralan',
'mobile.calendarLegendCancellation': 'Kansela',
'mobile.calendarTitle': 'Kalendaryo',
'mobile.calendarSubtitle': 'Pagsasanay, torneo, liga at holiday sa buwan.',
'mobile.calendarToday': 'Ngayon',
'mobile.calendarAllSourcesFailed': 'Hindi ma-load ang kalendaryo.',
'mobile.calendarSourceFailed': 'hindi na-load',
'mobile.calendarLegend': 'Ipakita',
'mobile.calendarCancellationTitle': 'Kinanselang pagsasanay',
'mobile.calendarCancellationHint': 'Itinatago ang paulit-ulit na oras sa mga araw na iyon.',
'mobile.calendarCancellationStart': 'Petsa (YYYY-MM-DD)',
'mobile.calendarCancellationEnd': 'Hanggang (opsyonal)',
'mobile.calendarCancellationReason': 'Dahilan',
'mobile.calendarCancellationSave': 'I-save',
'mobile.calendarCancellationInMonth': 'Mga kansela ngayong buwan',
'mobile.calendarGridTitle': 'Buwan',
'mobile.calendarAgendaTitle': 'Mga appointment sa buwan',
'mobile.calendarAgendaEmpty': 'Walang appointment sa buwang ito.',
},
};
function calendarStringsForLocale(code) {
if (code === 'de' || code === 'de-CH' || code === 'de-extended') return MOBILE_CALENDAR_I18N.de;
if (code.startsWith('en-')) return MOBILE_CALENDAR_I18N.en;
if (code === 'es') return MOBILE_CALENDAR_I18N.es;
if (code === 'fr') return MOBILE_CALENDAR_I18N.fr;
if (code === 'it') return MOBILE_CALENDAR_I18N.it;
if (code === 'pl') return MOBILE_CALENDAR_I18N.pl;
if (code === 'ja') return MOBILE_CALENDAR_I18N.ja;
if (code === 'zh') return MOBILE_CALENDAR_I18N.zh;
if (code === 'th') return MOBILE_CALENDAR_I18N.th;
if (code === 'tl' || code === 'fil') return MOBILE_CALENDAR_I18N[code === 'fil' ? 'fil' : 'tl'];
return MOBILE_CALENDAR_I18N.en;
}
function flatten(obj, prefix = '', out = {}) {
for (const [key, value] of Object.entries(obj || {})) {
const nextKey = prefix ? `${prefix}.${key}` : key;
@@ -192,6 +562,7 @@ function main() {
...baseFlat,
...flatten(localeJson),
...specificMobileStrings,
...calendarStringsForLocale(code),
};
lines.push(` private val ${kotlinIdentifier(code)}: Map<String, String> by lazy { mapOf(`);
for (const [key, value] of Object.entries(flat).sort(([a], [b]) => a.localeCompare(b))) {