Files
Your NameandClaude Opus 4.5 beeebeb996 Fix language fallback to English and add French translation
Issue #44: Language now correctly falls back to English instead of German
for unsupported locales (e.g., French system language before this update).

Added localeListResolutionCallback to MaterialApp that:
- Respects user's explicit locale choice
- Falls back to matching system locale if available
- Defaults to English when no match found

Added complete French (fr) translation:
- All 200+ strings translated
- Proper French accents (é, è, ê, à, etc.)
- Added to settings language picker

Updated:
- lib/main.dart: localeListResolutionCallback for fallback logic
- lib/l10n/app_fr.arb: New French translation file
- lib/l10n/app_en.arb: Added "french" string
- lib/l10n/app_de.arb: Added "french" string (Französisch)
- lib/l10n/app_es.arb: Added "french" string (Francés)
- lib/providers/locale_provider.dart: Added French display name
- lib/screens/settings_screen.dart: Added French option

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 09:50:41 +00:00

300 lines
13 KiB
Plaintext

{
"@@locale": "de",
"appTitle": "Ensemble",
"connecting": "Verbinde...",
"connected": "Verbunden",
"disconnected": "Getrennt",
"serverAddress": "Serveradresse",
"serverAddressHint": "z.B. music.example.com oder 192.168.1.100",
"yourName": "Dein Name",
"yourFirstName": "Dein Vorname",
"portOptional": "Port (Optional)",
"portHint": "z.B. 8095 oder leer lassen",
"portDescription": "Leer lassen bei Reverse Proxy oder Standardports. 8095 eingeben bei Direktverbindung.",
"username": "Benutzername",
"password": "Passwort",
"detectAndConnect": "Erkennen & Verbinden",
"connect": "Verbinden",
"disconnect": "Trennen",
"authServerUrlOptional": "Auth-Server URL (Optional)",
"authServerUrlHint": "z.B. auth.example.com (wenn abweichend vom Server)",
"authServerUrlDescription": "Leer lassen, wenn Authentifizierung auf demselben Server",
"detectedAuthType": "Erkannt: {authType}",
"serverRequiresAuth": "Dieser Server erfordert Authentifizierung",
"tailscaleVpnConnection": "Tailscale VPN-Verbindung",
"unencryptedConnection": "Unverschlusselte Verbindung",
"usingHttpOverTailscale": "HTTP uber Tailscale (verschlusselter Tunnel)",
"httpsFailedUsingHttp": "HTTPS fehlgeschlagen, verwende HTTP",
"httpNotEncrypted": "HTTP-Verbindung - Daten sind nicht verschlusselt",
"pleaseEnterServerAddress": "Bitte gib deine Music Assistant Serveradresse ein",
"pleaseEnterName": "Bitte gib deinen Namen ein",
"pleaseEnterValidPort": "Bitte gib eine gultige Portnummer ein (1-65535)",
"pleaseEnterCredentials": "Bitte gib Benutzername und Passwort ein",
"authFailed": "Authentifizierung fehlgeschlagen. Bitte uberprufe deine Anmeldedaten.",
"maLoginFailed": "Music Assistant Anmeldung fehlgeschlagen. Bitte uberprufe deine Anmeldedaten.",
"connectionFailed": "Verbindung zum Server fehlgeschlagen. Bitte uberprufe die Adresse und versuche es erneut.",
"detectingAuth": "Erkenne Authentifizierung...",
"cannotDetermineAuth": "Authentifizierungsanforderungen konnten nicht ermittelt werden. Bitte uberprufe die Server-URL.",
"noAuthentication": "Keine Authentifizierung",
"httpBasicAuth": "HTTP Basic Auth",
"authelia": "Authelia",
"musicAssistantLogin": "Music Assistant Anmeldung",
"pressBackToMinimize": "Erneut drucken zum Minimieren",
"recentlyPlayed": "Zuletzt gespielt",
"discoverArtists": "Kunstler entdecken",
"discoverAlbums": "Alben entdecken",
"continueListening": "Weiterhoren",
"discoverAudiobooks": "Horbücher entdecken",
"discoverSeries": "Serien entdecken",
"favoriteAlbums": "Lieblingsalben",
"favoriteArtists": "Lieblingskünstler",
"favoriteTracks": "Lieblingssongs",
"searchMusic": "Musik suchen...",
"searchForContent": "Nach Künstlern, Alben oder Songs suchen",
"retry": "Wiederholen",
"all": "Alle",
"artists": "Künstler",
"albums": "Alben",
"tracks": "Songs",
"playlists": "Wiedergabelisten",
"audiobooks": "Hörbücher",
"music": "Musik",
"radio": "Radio",
"stations": "Sender",
"selectLibrary": "Bibliothek auswählen",
"noRadioStations": "Keine Radiosender",
"addRadioStationsHint": "Füge Radiosender in Music Assistant hinzu",
"searchFailed": "Suche fehlgeschlagen. Bitte überprüfe deine Verbindung.",
"queue": "Warteschlange",
"playerQueue": "{playerName} Warteschlange",
"noPlayerSelected": "Kein Player ausgewählt",
"undo": "Rückgängig",
"removedItem": "{itemName} entfernt",
"settings": "Einstellungen",
"debugLogs": "Debug-Protokolle",
"themeMode": "Design",
"light": "Hell",
"dark": "Dunkel",
"system": "System",
"pullToRefresh": "Ziehe zum Aktualisieren der Bibliothek",
"viewDebugLogs": "Debug-Protokolle anzeigen",
"viewAllPlayers": "Alle Player anzeigen",
"copyLogs": "Protokolle kopieren",
"clearLogs": "Protokolle löschen",
"copyList": "Liste kopieren",
"close": "Schließen",
"allPlayersCount": "Alle Player ({count})",
"errorLoadingPlayers": "Fehler beim Laden der Player: {error}",
"logsCopied": "Protokolle in Zwischenablage kopiert",
"logsCleared": "Protokolle gelöscht",
"playerListCopied": "Playerliste in Zwischenablage kopiert!",
"noLogsYet": "Noch keine Protokolle",
"infoPlus": "Info+",
"warnings": "Warnungen",
"errors": "Fehler",
"showingEntries": "Zeige {filtered} von {total} Einträgen",
"thisDevice": "Dieses Gerät",
"ghostPlayer": "Geist-Player (Duplikat)",
"unavailableCorrupt": "Nicht verfügbar/Beschädigt",
"playerId": "ID: {id}",
"playerInfo": "Verfügbar: {available} | Anbieter: {provider}",
"shareBugReport": "Fehlerbericht teilen",
"moreOptions": "Weitere Optionen",
"failedToUpdateFavorite": "Favorit konnte nicht aktualisiert werden: {error}",
"noPlayersAvailable": "Keine Player verfügbar",
"albumAddedToQueue": "Album zur Warteschlange hinzugefügt",
"tracksAddedToQueue": "Songs zur Warteschlange hinzugefügt",
"play": "Abspielen",
"noPlayersFound": "Keine Player gefunden",
"startingRadio": "Starte {name} Radio",
"failedToStartRadio": "Radio konnte nicht gestartet werden: {error}",
"startingRadioOnPlayer": "Starte {name} Radio auf {playerName}",
"addedRadioToQueue": "{name} Radio zur Warteschlange hinzugefügt",
"failedToAddToQueue": "Konnte nicht zur Warteschlange hinzufügen: {error}",
"radio": "Radio",
"inLibrary": "In Bibliothek",
"noAlbumsFound": "Keine Alben gefunden",
"playing": "Spiele {name}",
"playingTrack": "Spiele Song",
"nowPlaying": "Wird gespielt",
"markedAsFinished": "{name} als beendet markiert",
"failedToMarkFinished": "Konnte nicht als beendet markieren: {error}",
"markedAsUnplayed": "{name} als ungespielt markiert",
"failedToMarkUnplayed": "Konnte nicht als ungespielt markieren: {error}",
"failedToPlay": "Abspielen fehlgeschlagen: {error}",
"markAsFinished": "Als beendet markieren",
"markAsUnplayed": "Als ungespielt markieren",
"byAuthor": "Von {author}",
"audiobookCount": "{count} Hörbuch/Hörbücher",
"loading": "Laden...",
"bookCount": "{count} Buch/Bücher",
"books": "Bücher",
"noFavoriteAudiobooks": "Keine Lieblingshörbücher",
"tapHeartAudiobook": "Tippe auf das Herz bei einem Hörbuch, um es zu Favoriten hinzuzufügen",
"noAudiobooks": "Keine Hörbücher",
"addAudiobooksHint": "Füge Hörbücher zu deiner Bibliothek hinzu, um sie hier zu sehen",
"noFavoriteArtists": "Keine Lieblingskünstler",
"tapHeartArtist": "Tippe auf das Herz bei einem Künstler, um ihn zu Favoriten hinzuzufügen",
"noFavoriteAlbums": "Keine Lieblingsalben",
"tapHeartAlbum": "Tippe auf das Herz bei einem Album, um es zu Favoriten hinzuzufügen",
"noFavoritePlaylists": "Keine Lieblings-Wiedergabelisten",
"tapHeartPlaylist": "Tippe auf das Herz bei einer Wiedergabeliste, um sie zu Favoriten hinzuzufügen",
"noFavoriteTracks": "Keine Lieblingssongs",
"longPressTrackHint": "Halte einen Song gedrückt und tippe auf das Herz, um ihn zu Favoriten hinzuzufügen",
"loadSeries": "Serien laden",
"notConnected": "Nicht mit Music Assistant verbunden",
"notConnectedTitle": "Nicht verbunden",
"connectHint": "Verbinde dich mit deinem Music Assistant Server, um Musik zu hören",
"configureServer": "Server konfigurieren",
"noArtistsFound": "Keine Künstler gefunden",
"noTracksFound": "Keine Songs gefunden",
"noPlaylistsFound": "Keine Wiedergabelisten gefunden",
"queueIsEmpty": "Warteschlange ist leer",
"noResultsFound": "Keine Ergebnisse gefunden",
"refresh": "Aktualisieren",
"debugConsole": "Debug-Konsole",
"copy": "Kopieren",
"clear": "Löschen",
"noLogsToCopy": "Keine Protokolle zum Kopieren",
"noDebugLogsYet": "Noch keine Debug-Protokolle. Versuche Authentifizierung zu erkennen.",
"showDebug": "Debug anzeigen",
"hideDebug": "Debug ausblenden",
"chapters": "Kapitel",
"noChapters": "Keine Kapitel",
"noChapterInfo": "Dieses Hörbuch hat keine Kapitelinformationen",
"errorSeeking": "Fehler beim Spulen: {error}",
"error": "Fehler: {error}",
"home": "Start",
"library": "Bibliothek",
"homeScreen": "Startbildschirm",
"metadataApis": "Metadaten-APIs",
"theme": "Design",
"materialYou": "Material You",
"adaptiveTheme": "Adaptives Design",
"language": "Sprache",
"english": "Englisch",
"german": "Deutsch",
"spanish": "Spanisch",
"french": "Französisch",
"noTracksInPlaylist": "Keine Songs in Wiedergabeliste",
"sortAlphabetically": "Alphabetisch sortieren",
"sortByYear": "Nach Jahr sortieren",
"sortBySeriesOrder": "Nach Serienreihenfolge sortieren",
"listView": "Listenansicht",
"gridView": "Rasteransicht",
"noBooksInSeries": "Keine Bücher in dieser Serie gefunden",
"artist": "Künstler",
"showRecentlyPlayedAlbums": "Kürzlich gespielte Alben anzeigen",
"showRandomArtists": "Zufällige Künstler zum Entdecken anzeigen",
"showRandomAlbums": "Zufällige Alben zum Entdecken anzeigen",
"showAudiobooksInProgress": "Hörbücher in Bearbeitung anzeigen",
"showRandomAudiobooks": "Zufällige Hörbücher zum Entdecken anzeigen",
"showRandomSeries": "Zufällige Hörbuchserien zum Entdecken anzeigen",
"showFavoriteAlbums": "Lieblingsalben anzeigen",
"showFavoriteArtists": "Lieblingskünstler anzeigen",
"showFavoriteTracks": "Lieblingssongs anzeigen",
"extractColorsFromArtwork": "Farben aus Album- und Künstlercover extrahieren",
"chooseHomeScreenRows": "Wähle welche Zeilen auf dem Startbildschirm angezeigt werden",
"addedToFavorites": "Zu Favoriten hinzugefügt",
"removedFromFavorites": "Aus Favoriten entfernt",
"unknown": "Unbekannt",
"noUpcomingTracks": "Keine weiteren Songs",
"showAll": "Alle anzeigen",
"showFavoritesOnly": "Nur Favoriten anzeigen",
"changeView": "Ansicht ändern",
"authors": "Autoren",
"series": "Serien",
"shows": "Sendungen",
"podcasts": "Podcasts",
"podcastSupportComingSoon": "Podcast-Unterstützung kommt bald",
"playlist": "Wiedergabeliste",
"connectionError": "Verbindungsfehler",
"twoColumnGrid": "2-Spalten-Raster",
"threeColumnGrid": "3-Spalten-Raster",
"fromProviders": "Von Anbietern",
"resume": "Fortsetzen",
"about": "Über",
"inProgress": "In Bearbeitung",
"narratedBy": "Gesprochen von {narrators}",
"unknownNarrator": "Unbekannter Sprecher",
"unknownAuthor": "Unbekannter Autor",
"loadingChapters": "Lade Kapitel...",
"noChapterInfoAvailable": "Keine Kapitelinformationen verfügbar",
"percentComplete": "{percent}% abgeschlossen",
"theAudioDbApiKey": "TheAudioDB API-Schlüssel",
"theAudioDbApiKeyHint": "\"2\" für kostenlosen Zugang oder Premium-Schlüssel",
"audiobookLibraries": "Hörbuch-Bibliotheken",
"chooseAudiobookLibraries": "Wähle welche Audiobookshelf-Bibliotheken einbezogen werden",
"unknownLibrary": "Unbekannte Bibliothek",
"noSeriesFound": "Keine Serien gefunden",
"ensembleBugReport": "Ensemble Fehlerbericht",
"byOwner": "Von {owner}",
"noSeriesAvailable": "Keine Serien in deiner Hörbuch-Bibliothek verfügbar.\nZiehe zum Aktualisieren.",
"pullToLoadSeries": "Ziehe nach unten um Serien\nvon Music Assistant zu laden",
"search": "Suche",
"metadataApisDescription": "Künstlerbilder werden automatisch von Deezer abgerufen. Füge unten API-Schlüssel für Künstlerbiografien und Albenbeschreibungen hinzu.",
"lastFmApiKey": "Last.fm API-Schlüssel",
"lastFmApiKeyHint": "Kostenlosen Schlüssel auf last.fm/api holen",
"swipeToSwitchDevice": "Wischen um Gerät zu wechseln",
"chapterNumber": "Kapitel {number}",
"pcmAudio": "PCM-Audio",
"playOn": "Abspielen auf...",
"addAlbumToQueueOn": "Album zur Warteschlange hinzufügen auf...",
"addToQueueOn": "Zur Warteschlange hinzufügen auf...",
"startRadioOn": "{name} Radio starten auf...",
"book": "Buch",
"audiobookSingular": "Hörbuch",
"trackCount": "{count} {count, plural, =1{Song} other{Songs}}",
"materialYouDescription": "Systemfarben verwenden (Android 12+)",
"accentColor": "Akzentfarbe",
"players": "Geräte",
"preferLocalPlayer": "Lokales Gerät bevorzugen",
"preferLocalPlayerDescription": "Dieses Gerät immer zuerst auswählen, wenn verfügbar",
"smartSortPlayers": "Intelligente Sortierung",
"smartSortPlayersDescription": "Nach Status sortieren (spielt, an, aus) statt alphabetisch",
"playerStateUnavailable": "Nicht verfügbar",
"playerStateOff": "Aus",
"playerStateIdle": "Inaktiv",
"playerStateExternalSource": "Externe Quelle",
"playerSelected": "Ausgewählt",
"actionQueuedForSync": "Wird synchronisiert wenn online",
"pendingOfflineActions": "{count} ausstehende Synchronisierung",
"hintsAndTips": "Tipps & Hinweise",
"showHints": "Hinweise anzeigen",
"showHintsDescription": "Hilfreiche Tipps zum Entdecken von Funktionen anzeigen",
"pullToSelectPlayers": "Ziehen um Geräte auszuwählen",
"holdToSync": "Gedrückt halten zum Sync",
"swipeToAdjustVolume": "Wischen für Lautstärke"
}