diff --git a/components/settings/DownloadSettings.tsx b/components/settings/DownloadSettings.tsx index 7da6002b..0d1df837 100644 --- a/components/settings/DownloadSettings.tsx +++ b/components/settings/DownloadSettings.tsx @@ -62,7 +62,7 @@ export default function DownloadSettings({ ...props }) { sideOffset={8} > - {t("home.settings.downloads.methods")} + {t("home.settings.downloads.download_method")} { showArrow /> { /> } - label={t("home.settings.other.quality")} + label={t("home.settings.other.default_quality")} onSelected={(defaultBitrate) => updateSettings({ defaultBitrate })} /> diff --git a/i18n.ts b/i18n.ts index f7f62327..edc9e031 100644 --- a/i18n.ts +++ b/i18n.ts @@ -5,6 +5,7 @@ import de from "./translations/de.json"; import en from "./translations/en.json"; import es from "./translations/es.json"; import fr from "./translations/fr.json"; +import nl from "./translations/nl.json"; import sv from "./translations/sv.json"; import zhTW from './translations/zh-TW.json'; import { getLocales } from "expo-localization"; @@ -14,6 +15,7 @@ export const APP_LANGUAGES = [ { label: "English", value: "en" }, { label: "Español", value: "es" }, { label: "Français", value: "fr" }, + { label: "Nederlands", value: "nl" }, { label: "Svenska", value: "sv" }, { label: "繁體中文", value: "zh-TW" }, ]; @@ -25,6 +27,7 @@ i18n.use(initReactI18next).init({ en: { translation: en }, es: { translation: es }, fr: { translation: fr }, + nl: { translation: nl }, sv: { translation: sv }, "zh-TW": { translation: zhTW }, }, diff --git a/translations/de.json b/translations/de.json index 8b09d0ce..18c3de25 100644 --- a/translations/de.json +++ b/translations/de.json @@ -132,7 +132,8 @@ "show_custom_menu_links": "Benutzerdefinierte Menülinks anzeigen", "hide_libraries": "Bibliotheken ausblenden", "select_liraries_you_want_to_hide": "Wähl die Bibliotheken aus, die du im Bibliothekstab und auf der Startseite ausblenden möchtest.", - "disable_haptic_feedback": "Haptisches Feedback deaktivieren" + "disable_haptic_feedback": "Haptisches Feedback deaktivieren", + "default_quality": "Standardqualität" }, "downloads": { "downloads_title": "Downloads", diff --git a/translations/en.json b/translations/en.json index 83caf7ae..d2f54e99 100644 --- a/translations/en.json +++ b/translations/en.json @@ -132,7 +132,8 @@ "show_custom_menu_links": "Show Custom Menu Links", "hide_libraries": "Hide Libraries", "select_liraries_you_want_to_hide": "Select the libraries you want to hide from the Library tab and home page sections.", - "disable_haptic_feedback": "Disable Haptic Feedback" + "disable_haptic_feedback": "Disable Haptic Feedback", + "default_quality": "Default quality" }, "downloads": { "downloads_title": "Downloads", diff --git a/translations/es.json b/translations/es.json index f0cfe357..8883c2be 100644 --- a/translations/es.json +++ b/translations/es.json @@ -132,7 +132,8 @@ "show_custom_menu_links": "Mostrar enlaces de menú personalizados", "hide_libraries": "Ocultar bibliotecas", "select_liraries_you_want_to_hide": "Selecciona las bibliotecas que quieres ocultar de la pestaña Bibliotecas y de Inicio.", - "disable_haptic_feedback": "Desactivar feedback háptico" + "disable_haptic_feedback": "Desactivar feedback háptico", + "default_quality": "Calidad por defecto" }, "downloads": { "downloads_title": "Descargas", diff --git a/translations/fr.json b/translations/fr.json index e9fdbbf6..f197494d 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -132,7 +132,9 @@ "show_custom_menu_links": "Afficher les liens personnalisés", "hide_libraries": "Cacher des bibliothèques", "select_liraries_you_want_to_hide": "Sélectionnez les bibliothèques que vous souhaitez masquer dans l’onglet Bibliothèque et les sections de la page d’accueil.", - "disable_haptic_feedback": "Désactiver le retour haptique" + "disable_haptic_feedback": "Désactiver le retour haptique", + "default_quality": "Qualité par défaut" + }, "downloads": { "downloads_title": "Téléchargements", diff --git a/translations/nl.json b/translations/nl.json new file mode 100644 index 00000000..929224c9 --- /dev/null +++ b/translations/nl.json @@ -0,0 +1,458 @@ +{ + "login": { + "username_required": "Gebruikersnaam is verplicht", + "error_title": "Fout", + "login_title": "Aanmelden", + "login_to_title": "Aanmelden bij", + "username_placeholder": "Gebruikersnaam", + "password_placeholder": "Wachtwoord", + "login_button": "Aanmelden", + "quick_connect": "Snel Verbinden", + "enter_code_to_login": "Vul code {{code}} in om aan te melden", + "failed_to_initiate_quick_connect": "Gefaald om Snel Verbinden op te starten", + "got_it": "Begrepen", + "connection_failed": "Verbinding gefaald", + "could_not_connect_to_server": "Kon niet verbinden met de server. Controleer de URL en je netwerkverbinding.", + "an_unexpected_error_occured": "Er is een onverwachte fout opgetreden", + "change_server": "Verander server", + "invalid_username_or_password": "Ongeldige gebruikersnaam of wachtwoord", + "user_does_not_have_permission_to_log_in": "Gebruiker heeft geen rechten om aan te melden", + "server_is_taking_too_long_to_respond_try_again_later": "De server doet er te lang over om te antwoorden, probeer later opnieuw", + "server_received_too_many_requests_try_again_later": "De server heeft te veel aanvragen ontvangen, probeer later opnieuw", + "there_is_a_server_error": "Er is een serverfout", + "an_unexpected_error_occured_did_you_enter_the_correct_url": "Er is een onverwachte fout opgetreden. Heb je de server URL correct ingegeven?" + }, + "server": { + "enter_url_to_jellyfin_server": "Geef de URL van je Jellyfin server in", + "server_url_placeholder": "http(s)://je-server.com", + "connect_button": "Verbinden", + "previous_servers": "vorige servers", + "clear_button": "Wissen", + "search_for_local_servers": "Zoek naar lokale servers", + "searching": "Zoeken...", + "servers": "Servers" + }, + "home": { + "no_internet": "Geen Internet", + "no_items": "Geen items", + "no_internet_message": "Geen zorgen, je kan nog steeds\ngedownloade content bekijken", + "go_to_downloads": "Ga naar downloads", + "oops": "Oeps!", + "error_message": "Er ging iets fout\nGelieve af en aan te melden.", + "continue_watching": "Verder Kijken", + "next_up": "Volgende", + "recently_added_in": "Recent toegevoegd in {{libraryName}}", + "suggested_movies": "Voorgestelde Films", + "suggested_episodes": "Voorgestelde Afleveringen", + "intro": { + "welcome_to_streamyfin": "Welkom bij Streamyfin", + "a_free_and_open_source_client_for_jellyfin": "Een gratis en open-source client voor Jellyfin.", + "features_title": "Functies", + "features_description": "Streamyfin heeft een heleboel functies en integreert met een breed scala aan software die je kunt vinden in het instellingenmenu, onder andere:", + "jellyseerr_feature_description": "Verbind met je Jellyseerr instantie en vraag films direct in de app aan.", + "downloads_feature_title": "Downloads", + "downloads_feature_description": "Download films en series om offline te kijken. Gebruik de standaardmethode of installeer de optimalisatieserver om bestanden op de achtergrond te downloaden.", + "chromecast_feature_description": "Cast films en series naar je Chromecast toestellen.", + "centralised_settings_plugin_title": "Plugin voor gecentraliseerde instellingen", + "centralised_settings_plugin_description": "Configureer instellingen vanaf een centrale locatie op je Jellyfin server. Alle clientinstellingen voor alle gebruikers worden automatisch gesynchroniseerd.", + "done_button": "Gedaan", + "go_to_settings_button": "Go naar instellingen", + "read_more": "Lees meer" + }, + "settings": { + "settings_title": "Instellingen", + "log_out_button": "Afmelden", + "user_info": { + "user_info_title": "Gebruiker Info", + "user": "Gebruiker", + "server": "Server", + "token": "Token", + "app_version": "App Versie" + }, + "quick_connect": { + "quick_connect_title": "Snel Verbinden", + "authorize_button": "Snel Verbinden toestaan", + "enter_the_quick_connect_code": "Vul de Snel Verbinden code in...", + "success": "Succes", + "quick_connect_autorized": "Snel Verbinden toegestaan", + "error": "Fout", + "invalid_code": "Ongeldige code", + "authorize": "Toestaan" + }, + "media_controls": { + "media_controls_title": "Media Bedieningen", + "forward_skip_length": "Duur voorwaarts overslaan", + "rewind_length": "Duur terugspeolen", + "seconds_unit": "s" + }, + "audio": { + "audio_title": "Audio", + "set_audio_track": "Gebruik Audio Track Van Vorig Item", + "audio_language": "Audio taal", + "audio_hint": "Kies een standaard audio taal.", + "none": "Geen", + "language": "Taal" + }, + "subtitles": { + "subtitle_title": "Ondertitels", + "subtitle_language": "Ondertitel taal", + "subtitle_mode": "Ondertitle Modus", + "set_subtitle_track": "Gebruik Ondertitel Track Van Vorig Item", + "subtitle_size": "Ondertitel Grootte", + "subtitle_hint": "Stel ondertitel voorkeuren in.", + "none": "Geen", + "language": "Taal", + "loading": "Laden", + "modes": { + "Default": "Standaard", + "Smart": "Slim", + "Always": "Altijd", + "None": "Geen", + "OnlyForced": "Alleen Geforceeerd" + } + }, + "other": { + "other_title": "Andere", + "auto_rotate": "Automatisch draaien", + "video_orientation": "Video oriëntatie", + "orientation": "Oriëntatie", + "orientations": { + "DEFAULT": "Standaard", + "ALL": "Alle", + "PORTRAIT": "Portret", + "PORTRAIT_UP": "Portret Omhoog", + "PORTRAIT_DOWN": "Portret Omlaag", + "LANDSCAPE": "Landschap", + "LANDSCAPE_LEFT": "Landschap Links", + "LANDSCAPE_RIGHT": "Landschap Rechts", + "OTHER": "Andere", + "UNKNOWN": "Onbekend" + }, + "safe_area_in_controls": "Veilig gebied in bedieningen", + "show_custom_menu_links": "Aangepaste menulinks tonen", + "hide_libraries": "Verberg Bibliotheken", + "select_liraries_you_want_to_hide": "Selecteer de bibliotheken die je wil verbergen van de Bibliotheek tab en hoofdpagina onderdelen.", + "disable_haptic_feedback": "Haptische feedback uitschakelen", + "default_quality": "Standaard kwaliteit" + }, + "downloads": { + "downloads_title": "Downloads", + "download_method": "Download methode", + "remux_max_download": "Remux max download", + "auto_download": "Auto download", + "optimized_versions_server": "Geoptimaliseerde server versies", + "save_button": "Opslaan", + "optimized_server": "Geoptimailseerde Server", + "optimized": "Geoptimaliseerd", + "default": "Standaard", + "optimized_version_hint": "Vul de URL van de optimalisatieserver in. De URL moet http of https bevatten en eventueel de poort.", + "read_more_about_optimized_server": "Lees meer over de optimalisatieserver.", + "url":"URL", + "server_url_placeholder": "http(s)://domein.org:poort" + }, + "plugins": { + "plugins_title": "Plugins", + "jellyseerr": { + "jellyseerr_warning": "Deze integratie is nog in een vroeg stadium. Verwacht dat zaken nog veranderen.", + "server_url": "Server URL", + "server_url_hint": "Voorbeeld: http(s)://je-host.url\n(indien nodig: voeg de poort toe)", + "server_url_placeholder": "Jellyseerr URL...", + "password": "Wachtwoord", + "password_placeholder": "Voeg het wachtwoord in voor de Jellyfin gebruiker {{username}}", + "save_button": "Opslaan", + "clear_button": "Wissen", + "login_button": "Aannmelden", + "total_media_requests": "Totaal aantal mediaverzoeken", + "movie_quota_limit": "Limiet filmquota", + "movie_quota_days": "Filmquota dagen", + "tv_quota_limit": "Limiet serie quota", + "tv_quota_days": "Serie Quota dagen", + "reset_jellyseerr_config_button": "Jellyseerr opnieuw instellen", + "unlimited": "Ongelimiteerd" + }, + "marlin_search": { + "enable_marlin_search": "Marlin Search inschakeln ", + "url": "URL", + "server_url_placeholder": "http(s)://domein.org:poort", + "marlin_search_hint": "Vul de URL van de Marlin Search server in. De URL moet http of https bevatten en eventueel de poort.", + "read_more_about_marlin": "Lees meer over Marlin.", + "save_button": "Opslaan", + "toasts": { + "saved": "Opgeslagen" + } + } + }, + "storage": { + "storage_title": "Opslag", + "app_usage": "App {{usedSpace}}%", + "device_usage": "Toestel {{availableSpace}}%", + "size_used": "{{used}} van {{total}} gebruikt", + "delete_all_downloaded_files": "Verwijder alle gedownloade bestanden" + }, + "intro": { + "show_intro": "Toon intro", + "reset_intro": "intro opnieuw instellen" + }, + "logs": { + "logs_title": "Logs", + "no_logs_available": "Geen logs beschikbaar", + "delete_all_logs": "Verwijder alle logs" + }, + "languages": { + "title": "Talen", + "app_language": "App taal", + "app_language_description": "Selecteer een taal voor de app.", + "system": "Systeem" + }, + "toasts":{ + "error_deleting_files": "Fout bij het verwijden van bestanden", + "background_downloads_enabled": "Downloads op de achtergrond ingeschakeld", + "background_downloads_disabled": "Downloads op de achtergrond uitgeschakeld", + "connected": "Verbonden", + "could_not_connect": "Kon niet verbinden", + "invalid_url": "Ongeldige URL" + } + }, + "downloads": { + "downloads_title": "Downloads", + "tvseries": "Series", + "movies": "Films", + "queue": "Wachtrij", + "queue_hint": "Wachtrij en downloads verdwijnen bij een herstart van de app", + "no_items_in_queue": "Geen items in wachtrij", + "no_downloaded_items": "Geen gedownloade items", + "delete_all_movies_button": "Verwijder alle films", + "delete_all_tvseries_button": "Verwijder alle Series", + "delete_all_button": "Verwijder alles", + "active_download": "Actieve download", + "no_active_downloads": "Geen actieve downloads", + "active_downloads": "Actieve downloads", + "new_app_version_requires_re_download": "Nieuwe app-versie vereist opnieuw downloaden", + "new_app_version_requires_re_download_description": "Voor de nieuwe update moet de content opnieuw worden gedownload. Verwijder alle gedownloade content en probeer het opnieuw.", + "back": "Terug", + "delete": "Verwijder", + "something_went_wrong": "Er ging iets mis", + "could_not_get_stream_url_from_jellyfin": "Kon de URL van de stream niet krijgen van Jellyfin", + "eta": "ETA {{eta}}", + "methods": "Methoden", + "toasts": { + "you_are_not_allowed_to_download_files": "Je mag geen bestanden downloaden.", + "deleted_all_movies_successfully": "Alle filns succesvol verwijderd!", + "failed_to_delete_all_movies": "Alle films zijn niet verwijderd", + "deleted_all_tvseries_successfully": "Alle series succesvol verwijderd!", + "failed_to_delete_all_tvseries": "Alle series zijn niet verwijderd", + "download_cancelled": "Download geannuleerd", + "could_not_cancel_download": "Kon de download niet annuleren", + "download_completed": "Download afgerond", + "download_started_for": "Download gestart voor {{item}}", + "item_is_ready_to_be_downloaded": "{{item}} is klaar op te downloaden", + "download_stated_for_item": "Download gestart voor {{item}}", + "download_failed_for_item": "Download gefaald voor {{item}} - {{error}}", + "download_completed_for_item": "Download afgerond voor {{item}}", + "queued_item_for_optimization": "{{item}} in de wachtrij gezet voor optimalisatie", + "failed_to_start_download_for_item": "Kon de download voor {{item}} niet starten: {{message}}", + "server_responded_with_status_code": "Server heeft geantwoord met {{statusCode}}", + "no_response_received_from_server": "Geen antwoord gekregen van de server", + "error_setting_up_the_request": "Fout bij het opstellen van de aanvraag", + "failed_to_start_download_for_item_unexpected_error": "Kon de download voor {{item}} niet starten: Onverwachte fout", + "all_files_folders_and_jobs_deleted_successfully": "Alle bestanden, mappen en taken succesvol verwijderd", + "an_error_occured_while_deleting_files_and_jobs": "Er is een fout opgetreden tijdens het verwijderen van bestanden en taken", + "go_to_downloads": "Ga naar downloads" + } + } + }, + "search": { + "search_here": "Zoek hier...", + "search": "Zoek...", + "x_items": "{{count}} items", + "library": "Bibliotheek", + "discover": "Ontdek", + "no_results": "Geen resultaten", + "no_results_found_for": "Geen resultaten gevonden voor", + "movies": "Films", + "series": "Series", + "episodes": "Afleveringen", + "collections": "Collecties", + "actors": "Acteurs", + "request_movies": "Vraag films aan", + "request_series": "Vraag series aan", + "recently_added": "Recent Toegevoegd", + "recent_requests": "Recent Aangevraagd", + "plex_watchlist": "Plex Kijklijst", + "trending": "Trending", + "popular_movies": "Populaire Films", + "movie_genres": "Film Genres", + "upcoming_movies": "Aankomende Movies", + "studios": "Studios", + "popular_tv": "Populaire TV", + "tv_genres": "TV Genres", + "upcoming_tv": "Opkomend TV", + "networks": "Netwerken", + "tmdb_movie_keyword": "TMDB Film Trefwoord", + "tmdb_movie_genre": "TMDB Film Genre", + "tmdb_tv_keyword": "TMDB TV Trefwoord", + "tmdb_tv_genre": "TMDB TV Genre", + "tmdb_search": "TMDB Zoeken", + "tmdb_studio": "TMDB Studio", + "tmdb_network": "TMDB Netwerk", + "tmdb_movie_streaming_services": "TMDB Film Streaming Diensten", + "tmdb_tv_streaming_services": "TMDB TV Streaming Diensten" + }, + "library": { + "no_items_found": "Geen items gevonden", + "no_results": "Geen resultaten", + "no_libraries_found": "Geen bibliotheken gevonden", + "item_types": { + "movies": "films", + "series": "series", + "boxsets": "box sets", + "items": "items" + }, + "options": { + "display": "Weergave", + "row": "Rij", + "list": "Lijst", + "image_style": "Stijl van afbeelding", + "poster": "Poster", + "cover": "Cover", + "show_titles": "Toon titels", + "show_stats": "Toon statistieken" + }, + "filters": { + "genres": "Genres", + "years": "Jaren", + "sort_by": "Sorteren op", + "sort_order": "Sorteer volgorde", + "tags": "Labels" + } + }, + "favorites": { + "series": "Series", + "movies": "Films", + "episodes": "Afleveringen", + "videos": "Videos", + "boxsets": "Boxsets", + "playlists": "Afspeellijsten" + }, + "custom_links": { + "no_links": "Geen links" + }, + "player": { + "error": "Fout", + "failed_to_get_stream_url": "De stream-URL kon niet worden verkregen", + "an_error_occured_while_playing_the_video": "Er is een fout opgetreden tijdens het afspelen van de video. Controleer de logs in de instellingen.", + "client_error": "Fout van de client", + "could_not_create_stream_for_chromecast": "Kon geen stream maken voor Chromecast", + "message_from_server": "Bericht van de server: {{message}}", + "video_has_finished_playing": "Video is gedaan met spelen!", + "no_video_source": "Geen video bron...", + "next_episode": "Volgende Aflevering", + "refresh_tracks": "Tracks verversen", + "subtitle_tracks": "Ondertitel Tracks:", + "audio_tracks": "Audio Tracks:", + "playback_state": "Afspeelstatus:", + "no_data_available": "Geen data beschikbaar", + "index": "Index:" + }, + "item_card": { + "next_up": "Volgende", + "no_items_to_display": "Geen items om te tonen", + "cast_and_crew": "Cast & Crew", + "series": "Series", + "seasons": "Seizoenen", + "season": "Seizoen", + "no_episodes_for_this_season": "Geen afleveringen voor dit seizoen", + "overview": "Overzicht", + "more_with": "Meer met {{name}}", + "similar_items": "Gelijkaardige items", + "no_similar_items_found": "Geen gelijkaardige items gevonden", + "video": "Video", + "more_details": "Meer details", + "quality": "Kwaliteit", + "audio": "Audio", + "subtitles": "Ondertitel", + "show_more": "Toon meer", + "show_less": "Toon minden", + "appeared_in": "Verschenen in", + "could_not_load_item": "Kon item niet laden", + "none": "Geen", + "download": { + "download_season": "Download Seizoen", + "download_series": "Download Serie", + "download_episode": "Download Aflevering", + "download_movie": "Download Film", + "download_x_item": "Download {{item_count}} items", + "download_button": "Download", + "using_optimized_server": "Geoptimaliseerde server gebruiken", + "using_default_method": "Standaard methode gebruiken" + } + }, + "live_tv": { + "next": "Volgende ", + "previous": "Vorige", + "live_tv": "Live TV", + "coming_soon": "Binnenkort beschikbaar", + "on_now": "Nu op", + "shows": "Shows", + "movies": "Films", + "sports": "Sport", + "for_kids": "Voor kinderen", + "news": "Nieuws" + }, + "jellyseerr":{ + "confirm": "Bevestig", + "cancel": "Annuleer", + "yes": "Ja", + "whats_wrong": "Wat is er mis?", + "issue_type": "Type probleem", + "select_an_issue": "Selecteer een probleem", + "types": "Types", + "describe_the_issue": "(optioneel) beschrijf het probleem...", + "submit_button": "Verzenden", + "report_issue_button": "Meld een probleem", + "request_button": "Aanvragen", + "are_you_sure_you_want_to_request_all_seasons": "Ben je zeker dat je alle seizoenen wil aanvragen?", + "failed_to_login": "Kon niet aanmelden", + "cast": "Cast", + "details": "Details", + "status": "Status", + "original_title": "Originele titel", + "series_type": "Serie Type", + "release_dates": "Verschijningsdatums", + "first_air_date": "Eerste uitzenddatum", + "next_air_date": "Volgende uitzenddatum", + "revenue": "Inkomsten", + "budget": "Budget", + "original_language": "Originele taal", + "production_country": "Land van productie", + "studios": "Studio", + "network": "Netwerk", + "currently_streaming_on": "Momenteel te streamen op", + "advanced": "Geavanceerd", + "request_as": "Vraag aan als", + "tags": "Labels", + "quality_profile": "Kwaliteitsprofiel", + "root_folder": "Hoofdmap", + "season_x": "Seizoen {{seasons}}", + "season_number": "Seizoen {{season_number}}", + "number_episodes": "{{episode_number}} Afleveringen", + "born": "Geboren", + "appearances": "Verschijningen", + "toasts": { + "jellyseer_does_not_meet_requirements": "Jellyseerr server voldoet niet aan de minimale versievereisten! Update naar minimaal 2.0.0", + "jellyseerr_test_failed": "Jellyseerr test gefaald. Probeer opnieuw.", + "failed_to_test_jellyseerr_server_url": "Mislukt bij het testen van jellyseerr server url", + "issue_submitted": "Probleem ingediend!", + "requested_item": "{{item}} aangevraagd!", + "you_dont_have_permission_to_request": "Je hebt geen toestemming om aanvragen te doen!", + "something_went_wrong_requesting_media": "Er ging iets iets mis met het aavragen van media!" + } + }, + "tabs": { + "home": "Thuis", + "search": "Zoeken", + "library": "Bibliotheek", + "custom_links": "Aangepaste links", + "favorites": "Favorieten" + } +}