diff --git a/src/constants/locales.ts b/src/constants/locales.ts index 73de628c..a1370055 100644 --- a/src/constants/locales.ts +++ b/src/constants/locales.ts @@ -8,5 +8,6 @@ export const LOCALES = [ { code: 'it', key: 'italian' }, { code: 'es', key: 'spanish' }, { code: 'hr', key: 'croatian' }, - { code: 'zh-CN', key: 'chinese' } + { code: 'zh-CN', key: 'chinese' }, + { code: 'hi', key: 'hindi' } ]; \ No newline at end of file diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json index f6e8b36f..851cf6f8 100644 --- a/src/i18n/locales/ar.json +++ b/src/i18n/locales/ar.json @@ -632,6 +632,7 @@ "italian": "الإيطالية", "croatian": "الكرواتية", "chinese": "الصينية (المبسطة)", + "hindi": "الهندية", "account": "الحساب", "content_discovery": "المحتوى والاكتشاف", "appearance": "المظهر", diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index faee6ba6..8dde0c84 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -632,6 +632,7 @@ "italian": "Italienisch", "croatian": "Kroatisch", "chinese": "Chinesisch (Vereinfacht)", + "hindi": "Hindi", "account": "Konto", "content_discovery": "Inhalt & Entdeckung", "appearance": "Aussehen", diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index bf9eb0dd..7958dd53 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -632,6 +632,7 @@ "italian": "Italian", "croatian": "Croatian", "chinese": "Chinese (Simplified)", + "hindi": "Hindi", "account": "Account", "content_discovery": "Content & Discovery", "appearance": "Appearance", diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index d5ae8b02..3d5153fd 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -632,6 +632,7 @@ "italian": "Italiano", "croatian": "Croata", "chinese": "Chino (Simplificado)", + "hindi": "Hindi", "account": "Cuenta", "content_discovery": "Contenido y descubrimiento", "appearance": "Apariencia", diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index d6c39784..2054595a 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -632,6 +632,7 @@ "italian": "Italien", "croatian": "Croate", "chinese": "Chinois (Simplifié)", + "hindi": "Hindi", "account": "Compte", "content_discovery": "Contenu et découverte", "appearance": "Apparence", diff --git a/src/i18n/locales/hi.json b/src/i18n/locales/hi.json new file mode 100644 index 00000000..055ab60b --- /dev/null +++ b/src/i18n/locales/hi.json @@ -0,0 +1,1366 @@ +{ + "common": { + "loading": "लोड हो रहा है...", + "cancel": "रद्द करें", + "save": "सहेजें", + "delete": "हटाएं", + "edit": "संपादित करें", + "search": "खोजें", + "error": "त्रुटि", + "success": "सफल", + "ok": "ठीक है", + "unknown": "अज्ञात", + "retry": "पुनः प्रयास करें", + "try_again": "फिर से प्रयास करें", + "go_back": "वापस जाएं", + "settings": "सेटिंग्स", + "close": "बंद करें", + "show_more": "और दिखाएं", + "show_less": "कम दिखाएं", + "load_more": "और लोड करें", + "unknown_date": "अज्ञात तिथि", + "anonymous_user": "अज्ञात उपयोगकर्ता", + "time": { + "now": "अभी", + "minutes_ago": "{{count}} मिनट पहले", + "hours_ago": "{{count}} घंटे पहले", + "days_ago": "{{count}} दिन पहले" + }, + "days_short": { + "sun": "रवि", + "mon": "सोम", + "tue": "मंगल", + "wed": "बुध", + "thu": "गुरु", + "fri": "शुक्र", + "sat": "शनि" + }, + "email": "ईमेल", + "status": "स्थिति" + }, + "home": { + "categories": { + "movies": "फिल्में", + "series": "सीरीज", + "channels": "चैनल" + }, + "movies": "फिल्में", + "tv_shows": "टीवी शोज़", + "load_more_catalogs": "और कैटलॉग लोड करें", + "no_content": "कोई सामग्री उपलब्ध नहीं", + "add_catalogs": "कैटलॉग जोड़ें", + "sign_in_available": "साइन इन उपलब्ध है", + "sign_in_desc": "आप सेटिंग्स → खाता से कभी भी साइन इन कर सकते हैं", + "view_all": "सभी देखें", + "this_week": "इस सप्ताह", + "upcoming": "आगामी", + "recently_released": "हाल ही में जारी किया गया", + "no_scheduled_episodes": "बिना अनुसूचित एपिसोड वाली सीरीज", + "check_back_later": "बाद में वापस देखें", + "continue_watching": "देखना जारी रखें", + "up_next": "अगला", + "up_next_caps": "अगला", + "released": "जारी किया गया", + "new": "नया", + "tba": "घोषित किया जाएगा", + "new_episodes": "{{count}} नए एपिसोड", + "season_short": "सी{{season}}", + "episode_short": "ए{{episode}}", + "season": "सीज़न {{season}}", + "episode": "एपिसोड {{episode}}", + "movie": "फिल्म", + "series": "सीरीज", + "tv_show": "टीवी शो", + "percent_watched": "{{percent}}% देखा गया", + "view_details": "विवरण देखें", + "remove": "हटाएं", + "play": "चलाएं", + "play_now": "अभी चलाएं", + "resume": "फिर से शुरू करें", + "info": "जानकारी", + "more_info": "अधिक जानकारी", + "my_list": "मेरी सूची", + "save": "सहेजें", + "saved": "सहेजा गया", + "retry": "पुनः प्रयास करें", + "install_addons": "ऐड-ऑन इंस्टॉल करें", + "settings": "सेटिंग्स", + "no_featured_content": "कोई विशेष सामग्री नहीं", + "couldnt_load_featured": "विशेष सामग्री लोड नहीं की जा सकी", + "no_featured_desc": "कैटलॉग वाले ऐड-ऑन इंस्टॉल करें या अपनी सेटिंग्स में कंटेंट स्रोत बदलें।", + "load_error_desc": "विशेष सामग्री लाने में समस्या थी। कृपया अपना कनेक्शन जांचें और पुनः प्रयास करें।", + "no_featured_available": "कोई विशेष सामग्री उपलब्ध नहीं", + "no_description": "कोई विवरण उपलब्ध नहीं" + }, + "navigation": { + "home": "होम", + "library": "लाइब्रेरी", + "search": "खोजें", + "downloads": "डाउनलोड", + "settings": "सेटिंग्स" + }, + "search": { + "title": "खोजें", + "recent_searches": "हालिया खोजें", + "discover": "खोजें", + "movies": "फिल्में", + "tv_shows": "टीवी शोज़", + "select_catalog": "कैटलॉग चुनें", + "all_genres": "सभी शैलियां", + "discovering": "सामग्री खोजी जा रही है...", + "show_more": "और दिखाएं ({{count}})", + "no_content_found": "कोई सामग्री नहीं मिली", + "try_different": "एक अलग शैली या कैटलॉग का प्रयास करें", + "select_catalog_desc": "खोजने के लिए एक कैटलॉग चुनें", + "tap_catalog_desc": "शुरू करने के लिए ऊपर कैटलॉग चिप पर टैप करें", + "placeholder": "फिल्में, शोज़ खोजें...", + "keep_typing": "टाइप करते रहें...", + "type_characters": "खोजने के लिए कम से कम 2 अक्षर टाइप करें", + "no_results": "कोई परिणाम नहीं मिला", + "try_keywords": "अलग-अलग कीवर्ड आज़माएं या अपनी वर्तनी जांचें", + "select_type": "प्रकार चुनें", + "browse_movies": "फिल्म कैटलॉग ब्राउज़ करें", + "browse_tv": "टीवी सीरीज कैटलॉग ब्राउज़ करें", + "select_genre": "शैली चुनें", + "show_all_content": "सभी सामग्री दिखाएं", + "genres_count": "{{count}} शैलियां" + }, + "library": { + "title": "लाइब्रेरी", + "watched": "देखा गया", + "continue": "जारी रखें", + "watchlist": "वॉचलिस्ट", + "collection": "संग्रह", + "rated": "रेटेड", + "items": "आइटम", + "trakt_collections": "Trakt संग्रह", + "trakt_collection": "Trakt संग्रह", + "no_trakt": "कोई Trakt संग्रह नहीं", + "no_trakt_desc": "आपके Trakt संग्रह यहां दिखाई देंगे जब आप Trakt का उपयोग करना शुरू करेंगे", + "load_collections": "संग्रह लोड करें", + "empty_folder": "{{folder}} में कोई सामग्री नहीं", + "empty_folder_desc": "यह संग्रह खाली है", + "refresh": "ताज़ा करें", + "no_movies": "अभी कोई फिल्में नहीं हैं", + "no_series": "अभी कोई टीवी शोज़ नहीं हैं", + "no_content": "अभी कोई सामग्री नहीं है", + "add_content_desc": "अपनी लाइब्रेरी में कुछ सामग्री जोड़ें ताकि वह यहां दिखाई दे", + "find_something": "देखने के लिए कुछ खोजें", + "removed_from_library": "लाइब्रेरी से हटाया गया", + "item_removed": "आइटम आपकी लाइब्रेरी से हटा दिया गया", + "failed_update_library": "लाइब्रेरी अपडेट करने में विफल", + "unable_remove": "लाइब्रेरी से आइटम हटाने में असमर्थ", + "marked_watched": "देखा गया के रूप में चिह्नित", + "marked_unwatched": "अनदेखा के रूप में चिह्नित", + "item_marked_watched": "आइटम देखा गया के रूप में चिह्नित", + "item_marked_unwatched": "आइटम अनदेखा के रूप में चिह्नित", + "failed_update_watched": "देखे गए की स्थिति अपडेट करने में विफल", + "unable_update_watched": "देखे गए की स्थिति अपडेट करने में असमर्थ", + "added_to_library": "लाइब्रेरी में जोड़ा गया", + "item_added": "आपकी स्थानीय लाइब्रेरी में जोड़ा गया", + "add_to_library": "लाइब्रेरी में जोड़ें", + "remove_from_library": "लाइब्रेरी से हटाएं", + "mark_watched": "देखा गया के रूप में चिह्नित करें", + "mark_unwatched": "अनदेखा के रूप में चिह्नित करें", + "share": "साझा करें", + "add_to_watchlist": "Trakt वॉचलिस्ट में जोड़ें", + "remove_from_watchlist": "Trakt वॉचलिस्ट से हटाएं", + "added_to_watchlist": "वॉचलिस्ट में जोड़ा गया", + "added_to_watchlist_desc": "आपकी Trakt वॉचलिस्ट में जोड़ा गया", + "removed_from_watchlist": "वॉचलिस्ट से हटाया गया", + "removed_from_watchlist_desc": "आपकी Trakt वॉचलिस्ट से हटाया गया", + "add_to_collection": "Trakt संग्रह में जोड़ें", + "remove_from_collection": "Trakt संग्रह से हटाएं", + "added_to_collection": "संग्रह में जोड़ा गया", + "added_to_collection_desc": "आपके Trakt संग्रह में जोड़ा गया", + "removed_from_collection": "संग्रह से हटाया गया", + "removed_from_collection_desc": "आपके Trakt संग्रह से हटाया गया" + }, + "metadata": { + "unable_to_load": "सामग्री लोड करने में असमर्थ", + "error_code": "त्रुटि कोड: {{code}}", + "content_not_found": "सामग्री नहीं मिली", + "content_not_found_desc": "यह सामग्री मौजूद नहीं है या हटा दी गई है।", + "server_error": "सर्वर त्रुटि", + "server_error_desc": "सर्वर अस्थायी रूप से अनुपलब्ध है। कृपया बाद में प्रयास करें।", + "bad_gateway": "खराब गेटवे", + "bad_gateway_desc": "सर्वर समस्याओं का सामना कर रहा है। कृपया बाद में प्रयास करें।", + "service_unavailable": "सेवा अनुपलब्ध", + "service_unavailable_desc": "सेवा वर्तमान में रखरखाव के लिए बंद है। कृपया बाद में प्रयास करें।", + "too_many_requests": "बहुत सारे अनुरोध", + "too_many_requests_desc": "आप बहुत सारे अनुरोध कर रहे हैं। कृपया कुछ क्षण प्रतीक्षा करें और पुनः प्रयास करें।", + "request_timeout": "अनुरोध टाइमआउट", + "request_timeout_desc": "अनुरोध में बहुत अधिक समय लगा। कृपया पुनः प्रयास करें।", + "network_error": "नेटवर्क त्रुटि", + "network_error_desc": "कृपया अपना इंटरनेट कनेक्शन जांचें और पुन: प्रयास करें।", + "auth_error": "प्रमाणीकरण त्रुटि", + "auth_error_desc": "कृपया अपनी खाता सेटिंग्स जांचें और पुनः प्रयास करें।", + "access_denied": "पहुंच अस्वीकृत", + "access_denied_desc": "आपको इस सामग्री तक पहुंचने की अनुमति नहीं है।", + "connection_error": "कनेक्शन त्रुटि", + "streams_unavailable": "स्ट्रीम्स अनुपलब्ध", + "streams_unavailable_desc": "स्ट्रीमिंग स्रोत वर्तमान में अनुपलब्ध हैं। कृपया बाद में प्रयास करें।", + "unknown_error": "अज्ञात त्रुटि", + "something_went_wrong": "कुछ गलत हो गया। कृपया पुन: प्रयास करें।", + "cast": "कलाकार", + "more_like_this": "इसके जैसा और", + "collection": "संग्रह", + "episodes": "एपिसोड्स", + "seasons": "सीज़न", + "posters": "पोस्टर", + "banners": " बैनर", + "specials": "विशेष", + "season_number": "सीज़न {{number}}", + "episode_count": "{{count}} एपिसोड", + "episode_count_plural": "{{count}} एपिसोड", + "no_episodes": "कोई एपिसोड उपलब्ध नहीं", + "no_episodes_for_season": "सीज़न {{season}} के लिए कोई एपिसोड उपलब्ध नहीं", + "episodes_not_released": "एपिसोड अभी जारी नहीं हो सकते हैं", + "no_description": "कोई विवरण उपलब्ध नहीं", + "episode_label": "एपिसोड {{number}}", + "watch_again": "फिर से देखें", + "completed": "पूरा हुआ", + "play_episode": "सी{{season}}ए{{episode}} चलाएं", + "play": "चलाएं", + "watched": "देखा गया", + "watched_on_trakt": "Trakt पर देखा गया", + "synced_with_trakt": "Trakt के साथ सिंक किया गया", + "saved": "सहेजा गया", + "director": "निर्देशक", + "directors": "निर्देशक", + "creator": "निर्माता", + "creators": "निर्माता", + "production": "प्रोडक्शन", + "network": "नेटवर्क", + "mark_watched": "देखा गया के रूप में चिह्नित करें", + "mark_unwatched": "अनदेखा के रूप में चिह्नित करें", + "marking": "चिह्नित किया जा रहा है...", + "removing": "हटाया जा रहा है...", + "unmark_season": "सीज़न {{season}} को अनमार्क करें", + "mark_season": "सीज़न {{season}} को चिह्नित करें", + "resume": "फिर से शुरू करें", + "spoiler_warning": "स्पॉइलर चेतावनी", + "spoiler_warning_desc": "इस टिप्पणी में स्पॉइलर हैं। क्या आप निश्चित रूप से इसे प्रकट करना चाहते हैं?", + "cancel": "रद्द करें", + "reveal_spoilers": "स्पॉइलर दिखाएं", + "movie_details": "फिल्म विवरण", + "show_details": "शो विवरण", + "tagline": "टैगलाइन", + "status": "स्थिति", + "release_date": "रिलीज़ की तारीख", + "runtime": "अवधि", + "budget": "बजट", + "revenue": "राजस्व", + "origin_country": "मूल देश", + "original_language": "मूल भाषा", + "first_air_date": "पहली प्रसारण तिथि", + "last_air_date": "अंतिम प्रसारण तिथि", + "total_episodes": "कुल एपिसोड", + "episode_runtime": "एपिसोड की अवधि", + "created_by": "द्वारा निर्मित", + "backdrop_gallery": "बैकड्रॉप गैलरी", + "loading_episodes": "एपिसोड लोड हो रहे हैं...", + "no_episodes_available": "कोई एपिसोड उपलब्ध नहीं", + "play_next": "सी{{season}}ए{{episode}} चलाएं", + "play_next_episode": "अगला एपिसोड चलाएं", + "save": "सहेजें", + "percent_watched": "{{percent}}% देखा गया", + "percent_watched_trakt": "{{percent}}% देखा गया (Trakt पर {{traktPercent}}%)", + "synced_with_trakt_progress": "Trakt के साथ सिंक किया गया", + "using_trakt_progress": "Trakt प्रगति का उपयोग कर रहा है", + "added_to_collection_hero": "संग्रह में जोड़ा गया", + "added_to_collection_desc_hero": "आपके Trakt संग्रह में जोड़ा गया", + "removed_from_collection_hero": "संग्रह से हटाया गया", + "removed_from_collection_desc_hero": "आपके Trakt संग्रह से हटाया गया", + "mark_as_watched": "देखा गया के रूप में चिह्नित करें", + "mark_as_unwatched": "अनदेखा के रूप में चिह्नित करें" + }, + "cast": { + "biography": "जीवनी", + "known_for": "इसके लिए जाना जाता है", + "personal_info": "व्यक्तिगत जानकारी", + "born_in": "जन्म {{place}} में", + "filmography": "filmography", + "also_known_as": "इस रूप में भी जाना जाता है", + "no_info_available": "कोई अतिरिक्त जानकारी उपलब्ध नहीं", + "as_character": "{{character}} के रूप में", + "loading_details": "विवरण लोड हो रहा है...", + "years_old": "{{age}} वर्ष", + "view_filmography": "Filmography देखें", + "filter": "फिल्टर", + "sort_by": "क्रमबद्ध करें", + "sort_popular": "लोकप्रिय", + "sort_latest": "नवीनतम", + "sort_upcoming": "आगामी", + "upcoming_badge": "आगामी", + "coming_soon": "जल्द आ रहा है", + "filmography_count": "Filmography • {{count}} शीर्षक", + "loading_filmography": "Filmography लोड हो रही है...", + "load_more_remaining": "और लोड करें ({{count}} शेष)", + "alert_error_title": "त्रुटि", + "alert_error_message": "\"{{title}}\" लोड करने में असमर्थ। कृपया बाद में प्रयास करें।", + "alert_ok": "ठीक है", + "no_upcoming": "इस अभिनेता के लिए कोई आगामी रिलीज़ उपलब्ध नहीं", + "no_content": "इस अभिनेता के लिए कोई सामग्री उपलब्ध नहीं", + "no_movies": "इस अभिनेता के लिए कोई फिल्में उपलब्ध नहीं", + "no_tv": "इस अभिनेता के लिए कोई टीवी शो उपलब्ध नहीं" + }, + "comments": { + "title": "Trakt टिप्पणियाँ", + "spoiler_warning": "⚠️ इस टिप्पणी में स्पॉइलर हैं। प्रकट करने के लिए टैप करें।", + "spoiler": "स्पॉइलर", + "contains_spoilers": "स्पॉइलर शामिल हैं", + "reveal": "प्रकट करें", + "vip": "VIP", + "unavailable": "टिप्पणियाँ अनुपलब्ध", + "no_comments": "Trakt पर अभी तक कोई टिप्पणी नहीं", + "not_in_database": "यह सामग्री अभी तक Trakt के डेटाबेस में नहीं हो सकती है", + "check_trakt": "Trakt जांचें" + }, + "trailers": { + "title": "ट्रेलर", + "official_trailers": "आधिकारिक ट्रेलर", + "official_trailer": "आधिकारिक ट्रेलर", + "teasers": "टीज़र", + "teaser": "टीज़र", + "clips_scenes": "क्लिप्स और दृश्य", + "clip": "क्लिप", + "featurettes": "फीचरेट्स", + "featurette": "फीचरेट", + "behind_the_scenes": "पर्दे के पीछे", + "no_trailers": "कोई ट्रेलर उपलब्ध नहीं", + "unavailable": "ट्रेलर अनुपलब्ध", + "unavailable_desc": "इस समय यह ट्रेलर लोड नहीं किया जा सका। कृपया बाद में प्रयास करें।", + "unable_to_play": "ट्रेलर चलाने में असमर्थ। कृपया पुन: प्रयास करें।", + "watch_on_youtube": "YouTube पर देखें" + }, + "catalog": { + "no_content_found": "कोई सामग्री नहीं मिली", + "no_content_filters": "चयनित फिल्टर के लिए कोई सामग्री नहीं मिली", + "loading_content": "सामग्री लोड हो रही है...", + "back": "वापस", + "in_theaters": "सिनेमाघरों में", + "all": "सभी", + "failed_tmdb": "TMDB से सामग्री लोड करने में विफल", + "movies": "फिल्में", + "tv_shows": "टीवी शोज़", + "channels": "चैनल" + }, + "streams": { + "back_to_episodes": "एपिसोड्स पर वापस जाएं", + "back_to_info": "जानकारी पर वापस जाएं", + "fetching_from": "से प्राप्त किया जा रहा है:", + "no_sources_available": "कोई स्ट्रीमिंग स्रोत उपलब्ध नहीं", + "add_sources_desc": "कृपया सेटिंग्स में स्ट्रीमिंग स्रोत जोड़ें", + "add_sources": "स्रोत जोड़ें", + "finding_streams": "उपलब्ध स्ट्रीम्स खोजा जा रहा है...", + "finding_best_stream": "ऑटोप्ले के लिए सर्वश्रेष्ठ स्ट्रीम खोजा जा रहा है...", + "still_fetching": "अभी भी स्ट्रीम्स प्राप्त कर रहे हैं...", + "no_streams_available": "कोई स्ट्रीम उपलब्ध नहीं", + "starting_best_stream": "सर्वश्रेष्ठ स्ट्रीम शुरू हो रहा है...", + "loading_more_sources": "और स्रोत लोड हो रहे हैं..." + }, + "player_ui": { + "via": "{{name}} के माध्यम से", + "audio_tracks": "ऑडियो ट्रैक", + "no_audio_tracks": "कोई ऑडियो ट्रैक उपलब्ध नहीं", + "playback_speed": "प्लेबैक गति", + "on_hold": "होल्ड पर", + "playback_error": "प्लेबैक त्रुटि", + "unknown_error": "प्लेबैक के दौरान एक अज्ञात त्रुटि हुई।", + "copy_error": "त्रुटि विवरण कॉपी करें", + "copied_to_clipboard": "क्लिपबोर्ड पर कॉपी किया गया", + "dismiss": "खारिज करें", + "continue_watching": "देखना जारी रखें", + "start_over": "शुरू से", + "resume": "फिर से शुरू करें", + "change_source": "स्रोत बदलें", + "switching_source": "स्रोत बदला जा रहा है...", + "no_sources_found": "कोई स्रोत नहीं मिला", + "sources": "स्रोत", + "finding_sources": "स्रोत खोजा जा रहा है...", + "unknown_source": "अज्ञात स्रोत", + "sources_limited": "प्रदाता त्रुटियों के कारण स्रोत सीमित हो सकते हैं।", + "episodes": "एपिसोड्स", + "specials": "विशेष", + "season": "सीज़न {{season}}", + "stream": "स्ट्रीम {{number}}", + "subtitles": "उपशीर्षक", + "built_in": "अंतर्निहित", + "addons": "ऐड-ऑन", + "style": "शैली", + "none": "कोई नहीं", + "search_online_subtitles": "ऑनलाइन उपशीर्षक खोजें", + "preview": "पूर्वावलोकन", + "quick_presets": "त्वरित प्रीसेट", + "default": "डिफ़ॉल्ट", + "yellow": "पीला", + "high_contrast": "उच्च कंट्रास्ट", + "large": "बड़ा", + "core": "कोर", + "font_size": "फ़ॉन्ट आकार", + "show_background": "पृष्ठभूमि दिखाएं", + "advanced": "उन्नत", + "position": "स्थिति", + "text_color": "पाठ रंग", + "align": "संरेखित करें", + "bottom_offset": "नीचे का ऑफसेट", + "background_opacity": "पृष्ठभूमि अपारदर्शिता", + "text_shadow": "पाठ छाया", + "on": "चालू", + "off": "बंद", + "outline_color": "रूपरेखा रंग", + "outline": "रूपरेखा", + "outline_width": "रूपरेखा चौड़ाई", + "letter_spacing": "अक्षर रिक्ति", + "line_height": "पंक्ति की ऊंचाई", + "timing_offset": "समय ऑफसेट (सेकंड)", + "visual_sync": "दृश्य सिंक", + "timing_hint": "यदि आवश्यक हो तो सिंक करने के लिए उपशीर्षक को पहले (-) या बाद में (+) खिसकाएं।", + "reset_defaults": "डिफ़ॉल्ट पर रीसेट करें" + }, + "downloads": { + "title": "डाउनलोड", + "no_downloads": "अभी तक कोई डाउनलोड नहीं", + "no_downloads_desc": "डाउनलोड की गई सामग्री ऑफ़लाइन देखने के लिए यहां दिखाई देगी", + "explore": "सामग्री एक्सप्लोर करें", + "path_copied": "पथ कॉपी किया गया", + "path_copied_desc": "स्थानीय फ़ाइल पथ क्लिपबोर्ड पर कॉपी किया गया", + "copied": "कॉपी किया गया", + "incomplete": "डाउनलोड अधूरा", + "incomplete_desc": "डाउनलोड अभी पूरा नहीं हुआ है", + "not_available": "उपलब्ध नहीं", + "not_available_desc": "स्थानीय फ़ाइल पथ केवल डाउनलोड पूरा होने के बाद उपलब्ध होता है।", + "status_downloading": "डाउनलोड हो रहा है", + "status_completed": "पूरा हुआ", + "status_paused": "रुका हुआ", + "status_error": "त्रुटि", + "status_queued": "कतार में", + "status_unknown": "अज्ञात", + "provider": "प्रदाता", + "streaming_playlist_warning": "चल नहीं सकता - स्ट्रीमिंग प्लेलिस्ट", + "remaining": "शेष", + "not_ready": "डाउनलोड तैयार नहीं", + "not_ready_desc": "कृपया डाउनलोड पूरा होने तक प्रतीक्षा करें।", + "filter_all": "सभी", + "filter_active": "सक्रिय", + "filter_done": "हो गया", + "filter_paused": "रुका हुआ", + "no_filter_results": "कोई {{filter}} डाउनलोड नहीं", + "try_different_filter": "एक अलग फ़िल्टर चुनने का प्रयास करें", + "limitations_title": "डाउनलोड सीमाएं", + "limitations_msg": "• 1MB से छोटी फ़ाइलें आमतौर पर M3U8 स्ट्रीमिंग प्लेलिस्ट होती हैं और ऑफ़लाइन देखने के लिए डाउनलोड नहीं की जा सकतीं। ये केवल ऑनलाइन स्ट्रीमिंग के साथ काम करती हैं और इनमें वीडियो सेगमेंट के लिंक होते हैं, वास्तविक वीडियो सामग्री नहीं।", + "remove_title": "डाउनलोड हटाएं", + "remove_confirm": "\"{{title}}\"{{season_episode}} हटाएं?", + "cancel": "रद्द करें", + "remove": "हटाएं" + }, + "addons": { + "title": "ऐड-ऑन", + "reorder_mode": "पुनः क्रमबद्ध मोड", + "reorder_info": "सामग्री लोड करते समय शीर्ष पर स्थित ऐड-ऑन की प्राथमिकता अधिक होती है", + "add_addon_placeholder": "ऐड-ऑन URL", + "add_button": "ऐड-ऑन जोड़ें", + "my_addons": "मेरे ऐड-ऑन", + "community_addons": "समुदाय ऐड-ऑन", + "no_addons": "कोई ऐड-ऑन इंस्टॉल नहीं", + "uninstall_title": "ऐड-ऑन अनइंस्टॉल करें", + "uninstall_message": "क्या आप निश्चित रूप से {{name}} अनइंस्टॉल करना चाहते हैं?", + "uninstall_button": "अनइंस्टॉल करें", + "install_success": "ऐड-ऑन सफलतापूर्वक इंस्टॉल किया गया", + "install_error": "ऐड-ऑन इंस्टॉल करने में विफल", + "load_error": "ऐड-ऑन लोड करने में विफल", + "fetch_error": "ऐड-ऑन विवरण प्राप्त करने में विफल", + "invalid_url": "कृपया एक ऐड-ऑन URL दर्ज करें", + "configure": "कॉन्फ़िगर करें", + "version": "संस्करण: {{version}}", + "installed_addons": "इंस्टॉल किए गए ऐड-ऑन", + "reorder_drag_title": "पुनः क्रमबद्ध करने के लिए ऐड-ऑन खींचें", + "install": "इंस्टॉल करें", + "config_unavailable_title": "कॉन्फ़िगरेशन अनुपलब्ध", + "config_unavailable_msg": "इस ऐड-ऑन के लिए कॉन्फ़िगरेशन URL निर्धारित नहीं किया जा सका।", + "cannot_open_config_title": "कॉन्फ़िगरेशन नहीं खोल सकते", + "cannot_open_config_msg": "कॉन्फ़िगरेशन URL ({{url}}) नहीं खोला जा सकता। ऐड-ऑन में कॉन्फ़िगरेशन पृष्ठ नहीं हो सकता है।", + "description": "विवरण", + "supported_types": "समर्थित प्रकार", + "catalogs": "कैटलॉग", + "no_description": "कोई विवरण उपलब्ध नहीं", + "overview": "अवलोकन", + "no_categories": "कोई श्रेणियां नहीं", + "pre_installed": "पहले से इंस्टॉल" + }, + "trakt": { + "title": "Trakt सेटिंग्स", + "settings_title": "Trakt सेटिंग्स", + "connect_title": "Trakt के साथ कनेक्ट करें", + "connect_desc": "Trakt.tv के साथ अपने देखने के इतिहास, वॉचलिस्ट और संग्रह को सिंक करें", + "sign_in": "Trakt के साथ साइन इन करें", + "sign_out": "साइन आउट", + "sign_out_confirm": "क्या आप निश्चित रूप से अपने Trakt खाते से साइन आउट करना चाहते हैं?", + "joined": "{{date}} को शामिल हुए", + "sync_settings_title": "सिंक सेटिंग्स", + "sync_info": "Trakt से कनेक्ट होने पर, पूर्ण इतिहास सीधे API से सिंक होता है और स्थानीय संग्रहण में नहीं लिखा जाता है। आपकी देखना जारी रखें सूची आपकी वैश्विक Trakt प्रगति को दर्शाती है।", + "auto_sync_label": "प्लेबैक प्रगति ऑटो-सिंक करें", + "auto_sync_desc": "Trakt पर देखने की प्रगति स्वचालित रूप से सिंक करें", + "import_history_label": "देखा गया इतिहास आयात करें", + "import_history_desc": "Trakt से अपने देखने के इतिहास और प्रगति को आयात करने के लिए \"अभी सिंक करें\" का उपयोग करें", + "sync_now_button": "अभी सिंक करें", + "display_settings_title": "प्रदर्शन सेटिंग्स", + "show_comments_label": "Trakt टिप्पणियाँ दिखाएं", + "show_comments_desc": "उपलब्ध होने पर मेटाडेटा स्क्रीन में Trakt टिप्पणियाँ प्रदर्शित करें", + "maintenance_title": "रखरखाव के तहत", + "maintenance_unavailable": "Trakt अनुपलब्ध", + "maintenance_desc": "रखरखाव के लिए Trakt एकीकरण अस्थायी रूप से रोका गया है। रखरखाव पूरा होने तक सभी सिंकिंग और प्रमाणीकरण अक्षम हैं।", + "maintenance_button": "सेवा रखरखाव के तहत", + "auth_success_title": "सफलतापूर्वक कनेक्ट किया गया", + "auth_success_msg": "आपका Trakt खाता सफलतापूर्वक कनेक्ट हो गया है।", + "auth_error_title": "प्रमाणीकरण त्रुटि", + "auth_error_msg": "Trakt के साथ प्रमाणीकरण पूरा करने में विफल।", + "auth_error_generic": "प्रमाणीकरण के दौरान एक त्रुटि हुई।", + "sign_out_error": "Trakt से साइन आउट करने में विफल।", + "sync_complete_title": "सिंक पूर्ण", + "sync_success_msg": "Trakt के साथ आपकी देखने की प्रगति सफलतापूर्वक सिंक की गई।", + "sync_error_msg": "सिंक विफल रहा। कृपया पुन: प्रयास करें।" + }, + "simkl": { + "title": "Simkl सेटिंग्स", + "settings_title": "Simkl सेटिंग्स", + "connect_title": "Simkl के साथ कनेक्ट करें", + "connect_desc": "अपने देखने के इतिहास को सिंक करें और ट्रैक करें कि आप क्या देख रहे हैं", + "sign_in": "Simkl के साथ साइन इन करें", + "sign_out": "डिस्कनेक्ट करें", + "sign_out_confirm": "क्या आप निश्चित रूप से Simkl से डिस्कनेक्ट करना चाहते हैं?", + "syncing_desc": "आपके देखे गए आइटम Simkl के साथ सिंक हो रहे हैं।", + "auth_success_title": "सफलतापूर्वक कनेक्ट किया गया", + "auth_success_msg": "आपका Simkl खाता सफलतापूर्वक कनेक्ट हो गया है।", + "auth_error_title": "प्रमाणीकरण त्रुटि", + "auth_error_msg": "Simkl के साथ प्रमाणीकरण पूरा करने में विफल।", + "auth_error_generic": "प्रमाणीकरण के दौरान एक त्रुटि हुई।", + "sign_out_error": "Simkl से डिस्कनेक्ट करने में विफल।", + "config_error_title": "कॉन्फ़िगरेशन त्रुटि", + "config_error_msg": "पर्यावरण चर में Simkl क्लाइंट आईडी गायब है।", + "conflict_title": "संघर्ष", + "conflict_msg": "जब Trakt कनेक्ट होता है तो आप Simkl से कनेक्ट नहीं कर सकते। कृपया पहले Trakt डिस्कनेक्ट करें।", + "disclaimer": "Nuvio Simkl से संबद्ध नहीं है।" + }, + "tmdb_settings": { + "title": "TMDb सेटिंग्स", + "metadata_enrichment": "मेटाडेटा संवर्धन", + "metadata_enrichment_desc": "बेहतर विवरण और जानकारी के लिए TMDb डेटा के साथ अपनी सामग्री मेटाडेटा बढ़ाएं।", + "enable_enrichment": "संवर्धन सक्षम करें", + "enable_enrichment_desc": "कलाकार, प्रमाणन, लोगो/पोस्टर, और उत्पादन जानकारी के लिए TMDb के साथ ऐड-ऑन मेटाडेटा बढ़ाता है।", + "localized_text": "स्थानीयकृत पाठ", + "localized_text_desc": "TMDb से अपनी पसंदीदा भाषा में शीर्षक और विवरण प्राप्त करें।", + "language": "भाषा", + "change": "बदलें", + "logo_preview": "logo पूर्वावलोकन", + "logo_preview_desc": "पूर्वावलोकन दिखाता है कि चयनित भाषा में स्थानीयकृत लोगो कैसे दिखाई देंगे।", + "example": "उदाहरण:", + "no_logo": "कोई लोगो उपलब्ध नहीं", + "enrichment_options": "संवर्धन विकल्प", + "enrichment_options_desc": "नियंत्रित करें कि TMDb से कौन सा डेटा प्राप्त किया जाता है। अक्षम विकल्प उपलब्ध होने पर ऐड-ऑन डेटा का उपयोग करेंगे।", + "cast_crew": "कलाकार और क्रू", + "cast_crew_desc": "प्रोफ़ाइल फ़ोटो वाले अभिनेता, निर्देशक, लेखक", + "title_description": "शीर्षक और विवरण", + "title_description_desc": "TMDb स्थानीयकृत शीर्षक और अवलोकन पाठ का उपयोग करें", + "title_logos": "शीर्षक लोगो", + "title_logos_desc": "उच्च-गुणवत्ता वाले शीर्षक उपचार चित्र", + "banners_backdrops": "बैनर और बैकड्रॉप", + "banners_backdrops_desc": "उच्च-रिज़ॉल्यूशन बैकड्रॉप चित्र", + "certification": "सामग्री प्रमाणन", + "certification_desc": "आयु रेटिंग (PG-13, R, TV-MA, आदि)", + "recommendations": "सिफारिशें", + "recommendations_desc": "समान सामग्री सुझाव", + "episode_data": "एपिसोड डेटा", + "episode_data_desc": "टीवी शो के लिए एपिसोड थंबनेल, जानकारी और फ़ॉलबैक", + "season_posters": "सीज़न पोस्टर", + "season_posters_desc": "सीज़न-विशिष्ट पोस्टर चित्र", + "production_info": "उत्पादन जानकारी", + "production_info_desc": "लोगो के साथ नेटवर्क और उत्पादन कंपनियां", + "movie_details": "फिल्म विवरण", + "movie_details_desc": "बजट, राजस्व, अवधि, टैगलाइन", + "tv_details": "टीवी शो विवरण", + "tv_details_desc": "स्थिति, सीज़न गणना, नेटवर्क, निर्माता", + "movie_collections": "फिल्म संग्रह", + "movie_collections_desc": "फ्रेंचाइजी फिल्में (मार्वल, स्टार वार्स, आदि)", + "api_configuration": "API कॉन्फ़िगरेशन", + "api_configuration_desc": "उन्नत कार्यक्षमता के लिए अपनी TMDb API पहुंच कॉन्फ़िगर करें।", + "custom_api_key": "कस्टम API कुंजी", + "custom_api_key_desc": "बेहतर प्रदर्शन और समर्पित दर सीमाओं के लिए अपनी स्वयं की TMDb API कुंजी का उपयोग करें।", + "custom_key_active": "कस्टम API कुंजी सक्रिय", + "api_key_required": "API कुंजी आवश्यक", + "api_key_placeholder": "अपनी TMDb API कुंजी (v3) पेस्ट करें", + "how_to_get_key": "TMDb API कुंजी कैसे प्राप्त करें?", + "built_in_key_msg": "वर्तमान में अंतर्निहित API कुंजी का उपयोग कर रहा है। बेहतर प्रदर्शन के लिए अपनी कुंजी का उपयोग करने पर विचार करें।", + "cache_size": "कैश का आकार", + "clear_cache": "कैश साफ़ करें", + "cache_days": "प्रदर्शन को बेहतर बनाने के लिए TMDB प्रतिक्रियाएं 7 दिनों के लिए कैश की जाती हैं", + "choose_language": "भाषा चुनें", + "choose_language_desc": "TMDb सामग्री के लिए अपनी पसंदीदा भाषा चुनें", + "popular": "लोकप्रिय", + "all_languages": "सभी भाषाएं", + "search_results": "खोज परिणाम", + "no_languages_found": "\"{{query}}\" के लिए कोई भाषा नहीं मिली", + "clear_search": "खोज साफ़ करें", + "clear_cache_title": "TMDB कैश साफ़ करें", + "clear_cache_msg": "यह सभी कैश किए गए TMDB डेटा ({{size}}) को साफ़ कर देगा। कैश के पुनर्निर्माण तक लोड होने में अस्थायी रूप से समय लग सकता है।", + "clear_cache_success": "TMDB कैश सफलतापूर्वक साफ़ किया गया।", + "clear_cache_error": "कैश साफ़ करने में विफल।", + "clear_api_key_title": "API कुंजी साफ़ करें", + "clear_api_key_msg": "क्या आप निश्चित रूप से अपनी कस्टम API कुंजी हटाना चाहते हैं और डिफ़ॉल्ट पर लौटना चाहते हैं?", + "clear_api_key_success": "API कुंजी सफलतापूर्वक साफ़ की गई", + "clear_api_key_error": "API कुंजी साफ़ करने में विफल", + "empty_api_key": "API कुंजी खाली नहीं हो सकती।", + "invalid_api_key": "अमान्य API कुंजी। कृपया जांचें और पुनः प्रयास करें।", + "save_error": "सहेजते समय एक त्रुटि हुई। कृपया पुन: प्रयास करें।", + "using_builtin_key": "अब अंतर्निहित TMDb API कुंजी का उपयोग कर रहा है।", + "using_custom_key": "अब आपकी कस्टम TMDb API कुंजी का उपयोग कर रहा है।", + "enter_custom_key": "कृपया अपनी कस्टम TMDb API कुंजी दर्ज करें और सहेजें।", + "key_verified": "API कुंजी सत्यापित और सफलतापूर्वक सहेजी गई।" + }, + "settings": { + "language": "भाषा", + "select_language": "भाषा चुनें", + "english": "अंग्रेज़ी", + "portuguese": "पुर्तगाली", + "portuguese_br": "पुर्तगाली (ब्राजील)", + "portuguese_pt": "पुर्तगाली (पुर्तगाल)", + "german": "जर्मन", + "arabic": "अरबी", + "spanish": "स्पेनिश", + "french": "फ्रेंच", + "italian": "इतालवी", + "croatian": "क्रोएशियाई", + "chinese": "चीनी (सरलीकृत)", + "hindi": "हिन्दी", + "account": "खाता", + "content_discovery": "सामग्री और खोज", + "appearance": "दिखावट", + "integrations": "एकीकरण", + "playback": "प्लेबैक", + "backup_restore": "बैकअप और पुनर्स्थापना", + "updates": "अपडेट", + "about": "के बारे में", + "developer": "डेवलपर", + "cache": "कैश", + "title": "सेटिंग्स", + "settings_title": "सेटिंग्स", + "sign_in_sync": "सिंक करने के लिए साइन इन करें", + "add_catalogs_sources": "ऐड-ऑन, कैटलॉग, और स्रोत", + "player_trailers_downloads": "प्लेयर, ट्रेलर, डाउनलोड", + "mdblist_tmdb_ai": "MDBList, TMDB, AI", + "check_updates": "अपडेट की जांच करें", + "clear_mdblist_cache": "MDBList कैश साफ़ करें", + "cache_management": "कैश प्रबंधन", + "downloads_counter": "डाउनलोड और गिनती", + "made_with_love": "Tapframe और दोस्तों द्वारा ❤️ के साथ बनाया गया", + "sections": { + "information": "जानकारी", + "account": "खाता", + "theme": "थीम", + "layout": "लेआउट", + "sources": "स्रोत", + "catalogs": "कैटलॉग", + "discovery": "खोज", + "metadata": "मेटाडेटा", + "ai_assistant": "AI सहायक", + "video_player": "वीडियो प्लेयर", + "audio_subtitles": "ऑडियो और उपशीर्षक", + "media": "मीडिया", + "notifications": "सूचनाएं", + "testing": "परीक्षण", + "danger_zone": "खतरा क्षेत्र" + }, + "items": { + "legal": "कानूनी और अस्वीकरण", + "privacy_policy": "गोपनीयता नीति", + "report_issue": "समस्या की रिपोर्ट करें", + "version": "संस्करण", + "contributors": "योगदानकर्ता", + "view_contributors": "सभी योगदानकर्ता देखें", + "theme": "थीम", + "episode_layout": "एपिसोड लेआउट", + "streams_backdrop": "स्ट्रीम्स बैकड्रॉप", + "streams_backdrop_desc": "मोबाइल स्ट्रीम्स पर धुंधला बैकड्रॉप दिखाएं", + "addons": "ऐड-ऑन", + "installed": "इंस्टॉल किया गया", + "debrid_integration": "Debrid एकीकरण", + "debrid_desc": "Torbox कनेक्ट करें", + "plugins": "प्लगइन्स", + "plugins_desc": "प्लगइन्स और रिपॉजिटरी प्रबंधित करें", + "catalogs": "कैटलॉग", + "active": "सक्रिय", + "home_screen": "होम स्क्रीन", + "home_screen_desc": "लेआउट और सामग्री", + "continue_watching": "देखना जारी रखें", + "continue_watching_desc": "कैश और प्लेबैक व्यवहार", + "show_discover": "खोज अनुभाग दिखाएं", + "show_discover_desc": "खोज में खोज सामग्री प्रदर्शित करें", + "mdblist": "MDBList", + "mdblist_connected": "जुड़ा हुआ", + "mdblist_desc": "रेटिंग और समीक्षा जोड़ने के लिए सक्षम करें", + "simkl": "Simkl", + "simkl_connected": "जुड़ा हुआ", + "simkl_desc": "ट्रैक करें कि आप क्या देखते हैं", + "tmdb": "TMDB", + "tmdb_desc": "मेटाडेटा और लोगो स्रोत प्रदाता", + "openrouter": "OpenRouter API", + "openrouter_connected": "जुड़ा हुआ", + "openrouter_desc": "AI चैट सक्षम करने के लिए अपनी API कुंजी जोड़ें", + "video_player": "वीडियो प्लेयर", + "built_in": "अंतर्निहित", + "external": "बाहरी", + "preferred_audio": "पसंदीदा ऑडियो भाषा", + "preferred_subtitle": "पसंदीदा उपशीर्षक भाषा", + "subtitle_source": "उपशीर्षक स्रोत प्राथमिकता", + "auto_select_subs": "उपशीर्षक ऑटो-चयन करें", + "auto_select_subs_desc": "अपनी प्राथमिकताओं से मेल खाने वाले उपशीर्षक स्वचालित रूप से चुनें", + "show_trailers": "ट्रेलर दिखाएं", + "show_trailers_desc": "हीरो अनुभाग में ट्रेलर प्रदर्शित करें", + "enable_downloads": "डाउनलोड सक्षम करें", + "enable_downloads_desc": "डाउनलोड टैब दिखाएं और स्ट्रीम सहेजना सक्षम करें", + "notifications": "सूचनाएं", + "notifications_desc": "एपिसोड रिमाइंडर", + "developer_tools": "डेवलपर टूल्स", + "developer_tools_desc": "परीक्षण और डिबग विकल्प", + "test_onboarding": "ऑनबोर्डिंग टेस्ट", + "reset_onboarding": "ऑनबोर्डिंग रीसेट", + "test_announcement": "घोषणा टेस्ट", + "test_announcement_desc": "नया क्या है ओवरले दिखाएं", + "reset_campaigns": "अभियान रीसेट करें", + "reset_campaigns_desc": "अभियान इंप्रेशन साफ़ करें", + "clear_all_data": "सभी डेटा साफ़ करें", + "clear_all_data_desc": "सभी सेटिंग्स और कैश किए गए डेटा को रीसेट करें" + }, + "options": { + "horizontal": "क्षैतिज", + "vertical": "लंबवत", + "internal_first": "आंतरिक पहले", + "internal_first_desc": "एम्बेडेड उपशीर्षक को प्राथमिकता दें, फिर बाहरी", + "external_first": "बाहरी पहले", + "external_first_desc": "ऐड-ऑन उपशीर्षक को प्राथमिकता दें, फिर एम्बेडेड", + "any_available": "कोई भी उपलब्ध", + "any_available_desc": "पहले उपलब्ध उपशीर्षक ट्रैक का उपयोग करें" + }, + "clear_data_desc": "यह सभी सेटिंग्स को रीसेट कर देगा और सभी कैश किए गए डेटा को साफ़ कर देगा। क्या आप सुनिश्चित हैं?", + "app_updates": "ऐप अपडेट", + "about_nuvio": "Nuvio के बारे में" + }, + "ai_settings": { + "title": "AI सहायक", + "info_title": "AI-पावर्ड चैट", + "info_desc": "उन्नत AI का उपयोग करके किसी भी फिल्म या टीवी शो एपिसोड के बारे में प्रश्न पूछें। प्लॉट, पात्रों, विषयों, सामान्य ज्ञान और बहुत कुछ के बारे में जानकारी प्राप्त करें - सभी व्यापक TMDB डेटा द्वारा संचालित।", + "feature_1": "एपिसोड-विशिष्ट संदर्भ और विश्लेषण", + "feature_2": "प्लॉट स्पष्टीकरण और चरित्र अंतर्दृष्टि", + "feature_3": "पर्दे के पीछे की सामान्य जानकारी और तथ्य", + "feature_4": "आपकी अपनी मुफ्त OpenRouter API कुंजी", + "api_key_section": "OPENROUTER API कुंजी", + "api_key_label": "API कुंजी", + "api_key_desc": "AI चैट सुविधाओं को सक्षम करने के लिए अपनी OpenRouter API कुंजी दर्ज करें", + "save_api_key": "API कुंजी सहेजें", + "saving": "सहेजा जा रहा है...", + "update": "अपडेट", + "remove": "हटाएं", + "get_free_key": "OpenRouter से मुफ्त API कुंजी प्राप्त करें", + "enable_chat": "AI चैट सक्षम करें", + "enable_chat_desc": "सक्षम होने पर, सामग्री पृष्ठों पर \"AI से पूछें\" बटन दिखाई देगा।", + "chat_enabled": "AI चैट सक्षम", + "chat_enabled_desc": "अब आप फिल्मों और टीवी शो के बारे में सवाल पूछ सकते हैं। सामग्री पृष्ठों पर \"AI से पूछें\" बटन देखें!", + "how_it_works": "यह कैसे काम करता है", + "how_it_works_desc": "• OpenRouter कई AI मॉडल तक पहुंच प्रदान करता है\n• आपकी API कुंजी निजी और सुरक्षित रहती है\n• मुफ्त टियर में उदार उपयोग सीमाएं शामिल हैं\n• विशिष्ट एपिसोड/फिल्मों के बारे में संदर्भ के साथ चैट करें\n• विस्तृत विश्लेषण और स्पष्टीकरण प्राप्त करें", + "error_invalid_key": "कृपया एक मान्य API कुंजी दर्ज करें", + "error_key_format": "OpenRouter API कुंजी \"sk-or-\" से शुरू होनी चाहिए", + "success_saved": "OpenRouter API कुंजी सफलतापूर्वक सहेजी गई!", + "error_save": "API कुंजी सहेजने में विफल", + "confirm_remove_title": "API कुंजी हटाएं", + "confirm_remove_msg": "क्या आप निश्चित रूप से अपनी OpenRouter API कुंजी हटाना चाहते हैं? यह AI चैट सुविधाओं को अक्षम कर देगा।", + "success_removed": "API कुंजी सफलतापूर्वक हटाई गई", + "error_remove": "API कुंजी हटाने में विफल" + }, + "catalog_settings": { + "title": "कैटलॉग", + "layout_phone": "लेआउट कैटलॉग स्क्रीन (फ़ोन)", + "posters_per_row": "प्रति पंक्ति पोस्टर", + "auto": "ऑटो", + "show_titles": "पोस्टर शीर्षक दिखाएं", + "show_titles_desc": "प्रत्येक पोस्टर के नीचे शीर्षक पाठ प्रदर्शित करें", + "phone_only_hint": "केवल फोन पर लागू होता है। टैबलेट अनुकूली लेआउट रखते हैं।", + "catalogs_group": "कैटलॉग", + "enabled_count": "{{total}} में से {{enabled}} सक्षम", + "rename_hint": "कैटलॉग का नाम बदलने के लिए देर तक दबाएं", + "rename_modal_title": "कैटलॉग का नाम बदलें", + "rename_placeholder": "नया कैटलॉग नाम दर्ज करें", + "error_save_name": "कस्टम नाम सहेजा नहीं जा सका।" + }, + "continue_watching_settings": { + "title": "देखना जारी रखें", + "playback_behavior": "प्लेबैक व्यवहार", + "use_cached": "कैश किए गए स्ट्रीम का उपयोग करें", + "use_cached_desc": "सक्षम होने पर, देखना जारी रखें आइटम पर क्लिक करने से पहले से चलाए गए स्ट्रीम का उपयोग करके सीधे प्लेयर खुल जाएगा। अक्षम होने पर, इसके बजाय एक सामग्री स्क्रीन खुलती है।", + "open_metadata": "मेटाडेटा स्क्रीन खोलें", + "open_metadata_desc": "जब कैश किए गए स्ट्रीम अक्षम होते हैं, तो स्ट्रीम स्क्रीन के बजाय मेटाडेटा स्क्रीन खोलें। यह सामग्री विवरण दिखाता है और मैन्युअल स्ट्रीम चयन की अनुमति देता है।", + "card_appearance": "कार्ड का स्वरूप", + "card_style": "कार्ड शैली", + "card_style_desc": "चुनें कि देखना जारी रखें आइटम होम स्क्रीन पर कैसे दिखाई दें", + "wide": "चौड़ा", + "poster": "पोस्टर", + "cache_settings": "कैश सेटिंग्स", + "cache_duration": "स्ट्रीम कैश अवधि", + "cache_duration_desc": "समाप्त होने से पहले कैश किए गए स्ट्रीम लिंक कितने समय तक रखें", + "important_note": "महत्वपूर्ण नोट", + "important_note_text": "सभी स्ट्रीम लिंक पूरी कैश अवधि के लिए सक्रिय नहीं रह सकते हैं। लंबे समय तक कैश समय के परिणामस्वरूप लिंक समाप्त हो सकते हैं। यदि कोई कैश किया गया लिंक विफल हो जाता है, तो ऐप ताज़ा स्ट्रीम लाने के लिए वापस आ जाएगा।", + "how_it_works": "यह कैसे काम करता है", + "how_it_works_cached": "• स्ट्रीम खेलने के बाद आपकी चयनित अवधि के लिए कैश की जाती हैं\n• उपयोग से पहले कैश की गई स्ट्रीम मान्य की जाती हैं\n• यदि कैश अमान्य या समाप्त हो गया है, तो सामग्री स्क्रीन पर वापस आ जाता है\n• \"कैश की गई स्ट्रीम का उपयोग करें\" प्रत्यक्ष प्लेयर बनाम स्क्रीन नेविगेशन को नियंत्रित करता है\n• \"मेटाडेटा स्क्रीन खोलें\" केवल तभी दिखाई देता है जब कैश की गई स्ट्रीम अक्षम होती हैं", + "how_it_works_uncached": "• जब कैश की गई स्ट्रीम अक्षम होती हैं, तो देखना जारी रखें आइटम पर क्लिक करने से सामग्री स्क्रीन खुलती हैं\n• \"मेटाडेटा स्क्रीन खोलें\" विकल्प नियंत्रित करता है कि कौन सी स्क्रीन खोलनी है\n• मेटाडेटा स्क्रीन सामग्री विवरण दिखाती है और मैन्युअल स्ट्रीम चयन की अनुमति देती है\n• स्ट्रीम स्क्रीन तत्काल प्लेबैक के लिए उपलब्ध स्ट्रीम दिखाती है", + "changes_saved": "परिवर्तन सहेजे गए", + "min": "मिनट", + "hour": "घंटा", + "hours": "घंटे" + }, + "contributors": { + "title": "योगदानकर्ता", + "special_mentions": "विशेष उल्लेख", + "tab_contributors": "योगदानकर्ता", + "tab_special": "विशेष उल्लेख", + "tab_donors": "दानकर्ता", + "manager_role": "समुदाय प्रबंधक", + "manager_desc": "Nuvio के लिए Discord और Reddit समुदायों का प्रबंधन करता है", + "sponsor_role": "सर्वर प्रायोजक", + "sponsor_desc": "Nuvio के लिए सर्वर बुनियादी ढांचे को प्रायोजित किया", + "mod_role": "Discord मॉडरेटर", + "mod_desc": "Nuvio Discord समुदाय को संचालित करने में मदद करता है", + "loading": "लोड हो रहा है...", + "discord_user": "Discord उपयोगकर्ता", + "contributions": "योगदान", + "gratitude_title": "हम हर योगदान के लिए आभारी हैं", + "gratitude_desc": "कोड की प्रत्येक पंक्ति, बग रिपोर्ट और सुझाव Nuvio को सभी के लिए बेहतर बनाने में मदद करते हैं", + "special_thanks_title": "विशेष धन्यवाद", + "special_thanks_desc": "ये अद्भुत लोग Nuvio समुदाय को चलाने और सर्वर को ऑनलाइन रखने में मदद करते हैं", + "donors_desc": "हम जो बना रहे हैं उस पर विश्वास करने के लिए धन्यवाद। आपका समर्थन Nuvio को मुफ़्त रखता है और लगातार सुधार रहा है।", + "latest_donations": "नवीनतम", + "leaderboard": "लीडरबोर्ड", + "loading_donors": "दानकर्ताओं को लोड किया जा रहा है...", + "no_donors": "अभी तक कोई दानकर्ता नहीं", + "error_rate_limit": "GitHub API दर सीमा पार हो गई। कृपया बाद में पुन: प्रयास करें या ताज़ा करने के लिए खींचें।", + "error_failed": "योगदानकर्ताओं को लोड करने में विफल। कृपया अपना इंटरनेट कनेक्शन जांचें।", + "retry": "पुनः प्रयास करें", + "no_contributors": "कोई योगदानकर्ता नहीं मिला", + "loading_contributors": "योगदानकर्ताओं को लोड किया जा रहा है..." + }, + "debrid": { + "title": "Debrid एकीकरण", + "description_torbox": "Torbox को एकीकृत करके 4K उच्च-गुणवत्ता वाले स्ट्रीम और बिजली की तेज़ गति अनलॉक करें। अपने स्ट्रीमिंग अनुभव को तुरंत अपग्रेड करने के लिए नीचे अपनी API कुंजी दर्ज करें।", + "description_torrentio": "फिल्मों और टीवी शो के लिए टोरेंट स्ट्रीम प्राप्त करने के लिए Torrentio कॉन्फ़िगर करें। सामग्री स्ट्रीम करने के लिए एक डेब्रिड सेवा आवश्यक है।", + "tab_torbox": "TorBox", + "tab_torrentio": "Torrentio", + "status_connected": "जुड़ा हुआ", + "status_disconnected": "डिस्कनेक्ट किया गया", + "enable_addon": "ऐड-ऑन सक्षम करें", + "disconnect_button": "डिस्कनेक्ट करें और निकालें", + "disconnect_loading": "डिस्कनेक्ट किया जा रहा है...", + "account_info": "खाता जानकारी", + "plan": "योजना", + "plan_free": "निःशुल्क", + "plan_essential": "आवश्यक ($3/माह)", + "plan_pro": "प्रो ($10/माह)", + "plan_standard": "मानक ($5/माह)", + "plan_unknown": "अज्ञात", + "expires": "समाप्त होता है", + "downloaded": "डाउनलोड किया गया", + "status_active": "सक्रिय", + "connected_title": "✓ TorBox से जुड़ा हुआ", + "connected_desc": "आपका TorBox ऐड-ऑन सक्रिय है और प्रीमियम स्ट्रीम प्रदान कर रहा है।", + "configure_title": "ऐड-ऑन कॉन्फ़िगर करें", + "configure_desc": "अपने स्ट्रीमिंग अनुभव को अनुकूलित करें। गुणवत्ता के आधार पर क्रमबद्ध करें, फ़ाइल आकार फ़िल्टर करें और अन्य एकीकरण सेटिंग्स प्रबंधित करें।", + "open_settings": "सेटिंग्स खोलें", + "what_is_debrid": "Debrid सेवा क्या है?", + "enter_api_key": "अपनी API कुंजी दर्ज करें", + "connect_button": "कनेक्ट करें और इंस्टॉल करें", + "connecting": "कनेक्ट किया जा रहा है...", + "unlock_speeds_title": "प्रीमियम गति अनलॉक करें", + "unlock_speeds_desc": "शून्य बफरिंग के साथ कैश किए गए उच्च-गुणवत्ता वाले स्ट्रीम तक पहुंचने के लिए Torbox सदस्यता प्राप्त करें।", + "get_subscription": "सदस्यता प्राप्त करें", + "powered_by": "द्वारा संचालित", + "disclaimer_torbox": "Nuvio किसी भी तरह से Torbox से संबद्ध नहीं है।", + "disclaimer_torrentio": "Nuvio किसी भी तरह से Torrentio से संबद्ध नहीं है।", + "installed_badge": "✓ स्थापित", + "promo_title": "⚡ एक Debrid सेवा की आवश्यकता है?", + "promo_desc": "शून्य बफरिंग के साथ बिजली की तेज़ 4K स्ट्रीमिंग के लिए TorBox प्राप्त करें। प्रीमियम कैश किए गए टोरेंट और तत्काल डाउनलोड।", + "promo_button": "TorBox सदस्यता प्राप्त करें", + "service_label": "Debrid सेवा *", + "api_key_label": "API कुंजी *", + "sorting_label": "छँटाई", + "exclude_qualities": "गुणवत्ता बाहर निकालें", + "priority_languages": "प्राथमिकता वाली भाषाएं", + "max_results": "अधिकतम परिणाम", + "additional_options": "अतिरिक्त विकल्प", + "no_download_links": "डाउनलोड लिंक न दिखाएं", + "no_debrid_catalog": "डेब्रिड कैटलॉग न दिखाएं", + "install_button": "Torrentio इंस्टॉल करें", + "installing": "इंस्टॉल किया जा रहा है...", + "update_button": "कॉन्फ़िगरेशन अपडेट करें", + "updating": "अपडेट किया जा रहा है...", + "remove_button": "Torrentio निकालें", + "error_api_required": "API कुंजी आवश्यक", + "error_api_required_desc": "कृपया Torrentio स्थापित करने के लिए अपनी डेब्रिड सेवा API कुंजी दर्ज करें।", + "success_installed": "Torrentio ऐड-ऑन सफलतापूर्वक स्थापित!", + "success_removed": "Torrentio ऐड-ऑन सफलतापूर्वक हटाया गया", + "alert_disconnect_title": "Torbox डिस्कनेक्ट करें", + "alert_disconnect_msg": "क्या आप निश्चित रूप से Torbox को डिस्कनेक्ट करना चाहते हैं? यह ऐड-ऑन को हटा देगा और आपकी सहेजी गई API कुंजी को साफ़ कर देगा।" + }, + "home_screen": { + "title": "होम स्क्रीन सेटिंग्स", + "changes_applied": "परिवर्तन लागू", + "display_options": "प्रदर्शन विकल्प", + "show_hero": "हीरो अनुभाग दिखाएं", + "show_hero_desc": "शीर्ष पर प्रदर्शित सामग्री", + "show_this_week": "इस सप्ताह अनुभाग दिखाएं", + "show_this_week_desc": "वर्तमान सप्ताह के नए एपिसोड", + "select_catalogs": "कैटलॉग चुनें", + "all_catalogs": "सभी कैटलॉग", + "selected": "चयनित", + "hero_layout": "हीरो लेआउट", + "layout_legacy": "लिगेसी", + "layout_carousel": "कलिडोस्कोप", + "layout_appletv": "Apple TV", + "layout_desc": "पूर्ण-चौड़ाई बैनर, स्वाइप करने योग्य कार्ड, या Apple TV शैली", + "featured_source": "विशेष स्रोत", + "using_catalogs": "कैटलॉग का उपयोग करना", + "manage_selected_catalogs": "चयनित कैटलॉग प्रबंधित करें", + "dynamic_bg": "गतिशील हीरो पृष्ठभूमि", + "dynamic_bg_desc": "हिंडोला के पीछे धुंधला बैनर", + "performance_note": "कम-अंत वाले उपकरणों पर प्रदर्शन को प्रभावित कर सकता है।", + "posters": "पोस्टर", + "show_titles": "शीर्षक दिखाएं", + "poster_size": "पोस्टर का आकार", + "poster_corners": "पोस्टर कोने", + "size_small": "छोटा", + "size_medium": "मध्यम", + "size_large": "बड़ा", + "corners_square": "चौकोर", + "corners_rounded": "गोल", + "corners_pill": "पिल", + "about_these_settings": "इन सेटिंग्स के बारे में", + "about_desc": "ये सेटिंग्स नियंत्रित करती हैं कि आपकी होम स्क्रीन पर सामग्री कैसे प्रदर्शित होती है। परिवर्तन ऐप को पुनरारंभ किए बिना तुरंत लागू होते हैं।", + "hero_catalogs": { + "title": "हीरो अनुभाग कैटलॉग", + "select_all": "सभी चुनें", + "clear_all": "सभी साफ़ करें", + "info": "हीरो अनुभाग में प्रदर्शित करने के लिए कौन से कैटलॉग चुनें। यदि कोई नहीं चुना गया है, तो सभी कैटलॉग का उपयोग किया जाएगा। जब आप कर लें तो सहेजें दबाना न भूलें।", + "settings_saved": "सेटिंग्स सहेजी गईं", + "error_load": "कैटलॉग लोड करने में विफल", + "movies": "फिल्में", + "tv_shows": "टीवी शोज़" + } + }, + "calendar": { + "title": "कैलेंडर", + "loading": "कैलेंडर लोड हो रहा है...", + "no_scheduled_episodes": "कोई निर्धारित एपिसोड नहीं", + "check_back_later": "बाद में वापस देखें", + "showing_episodes_for": "{{date}} के लिए एपिसोड दिखा रहा है", + "show_all_episodes": "सभी एपिसोड दिखाएं", + "no_episodes_for": "{{date}} के लिए कोई एपिसोड नहीं", + "no_upcoming_found": "कोई आगामी एपिसोड नहीं मिला", + "add_series_desc": "यहाँ उनके आगामी एपिसोड देखने के लिए अपनी लाइब्रेरी में सीरीज़ जोड़ें" + }, + "mdblist": { + "title": "रेटिंग स्रोत", + "status_disabled": "MDBList अक्षम", + "status_active": "API कुंजी सक्रिय", + "status_required": "API कुंजी आवश्यक", + "status_disabled_desc": "MDBList कार्यक्षमता वर्तमान में अक्षम है।", + "status_active_desc": "MDBList से रेटिंग सक्षम हैं।", + "status_required_desc": "रेटिंग सक्षम करने के लिए नीचे अपनी कुंजी जोड़ें।", + "enable_toggle": "MDBList सक्षम करें", + "enable_toggle_desc": "सभी MDBList कार्यक्षमता चालू/बंद करें", + "api_section": "API कुंजी", + "placeholder": "अपनी MDBList API कुंजी पेस्ट करें", + "save": "सहेजें", + "clear": "कुंजी साफ़ करें", + "rating_providers": "रेटिंग प्रदाता", + "rating_providers_desc": "ऐप में कौन सी रेटिंग प्रदर्शित करनी है, चुनें", + "how_to": "API कुंजी कैसे प्राप्त करें", + "step_1": "Log in on the", + "step_1_link": "MDBList वेबसाइट", + "step_2": "Go to", + "step_2_settings": "सेटिंग्स", + "step_2_api": "API", + "step_2_end": "अनुभाग।", + "step_3": "एक नई कुंजी उत्पन्न करें और इसे कॉपी करें।", + "go_to_website": "MDBList पर जाएं", + "alert_clear_title": "API कुंजी साफ़ करें", + "alert_clear_msg": "क्या आप निश्चित रूप से सहेजी गई API कुंजी को निकालना चाहते हैं?", + "success_saved": "API कुंजी सफलतापूर्वक सहेजी गई।", + "error_empty": "API कुंजी खाली नहीं हो सकती।", + "error_save": "सहेजते समय एक त्रुटि हुई। कृपया पुन: प्रयास करें।", + "api_key_empty_error": "API कुंजी खाली नहीं हो सकती।", + "success_cleared": "API कुंजी सफलतापूर्वक साफ़ की गई", + "error_clear": "API कुंजी साफ़ करने में विफल" + }, + "notification": { + "title": "अधिसूचना सेटिंग्स", + "section_general": "सामान्य", + "enable_notifications": "अधिसूचनाएं सक्षम करें", + "section_types": "अधिसूचना प्रकार", + "new_episodes": "नए एपिसोड", + "upcoming_shows": "आगामी शो", + "reminders": "रिमाइंडर", + "section_timing": "अधिसूचना समय", + "timing_desc": "एपिसोड प्रसारित होने से पहले आपको कब सूचित किया जाना चाहिए?", + "hours_1": "1 घंटा", + "hours_suffix": "घंटे", + "section_status": "अधिसूचना स्थिति", + "stats_upcoming": "आगामी", + "stats_this_week": "इस सप्ताह", + "stats_total": "काुल", + "sync_button": "लाइब्रेरी और Trakt सिंक करें", + "syncing": "सिंक हो रहा है...", + "sync_desc": "आपकी लाइब्रेरी और Trakt वॉचलिस्ट/कलेक्शन में सभी शो के लिए सूचनाओं को स्वचालित रूप से सिंक करता है।", + "section_advanced": "उन्नत", + "reset_button": "सभी सूचनाएं रीसेट करें", + "test_button": "टेस्ट अधिसूचना (5 सेकंड)", + "test_notification_in": "{{seconds}}s में अधिसूचना...", + "test_notification_text": "अधिसूचना {{seconds}} सेकंड में दिखाई देगी", + "alert_reset_title": "अधिसूचनाएं रीसेट करें", + "alert_reset_msg": "यह सभी निर्धारित सूचनाओं को रद्द कर देगा, लेकिन आपकी सहेजी गई लाइब्रेरी से कुछ भी नहीं हटाएगा। क्या आप निश्चित हैं?", + "alert_reset_success": "सभी सूचनाएं रीसेट कर दी गई हैं", + "alert_sync_complete": "सिंक पूर्ण", + "alert_sync_msg": "आपकी लाइब्रेरी और Trakt आइटम के लिए सूचनाएं सफलतापूर्वक सिंक की गईं।\n\nनिर्धारित: {{upcoming}} आगामी एपिसोड\nइस सप्ताह: {{thisWeek}} एपिसोड", + "alert_test_scheduled": "परीक्षण अधिसूचना तुरंत फायर करने के लिए निर्धारित है" + }, + "backup": { + "title": "बैकअप और पुनर्स्थापना", + "options_title": "बैकअप विकल्प", + "options_desc": "अपने बैकअप में क्या शामिल करना है चुनें", + "section_core": "कोर डेटा", + "section_addons": "ऐड-ऑन और एकीकरण", + "section_settings": "सेटिंग्स और प्राथमिकताएं", + "library_label": "लाइब्रेरी", + "library_desc": "आपकी सहेजी गई फिल्में और टीवी शो", + "watch_progress_label": "देखने की प्रगति", + "watch_progress_desc": "देखना जारी रखें स्थितियां", + "addons_label": "ऐड-ऑन", + "addons_desc": "इंस्टॉल किए गए Stremio ऐड-ऑन", + "plugins_label": "प्लगइन्स", + "plugins_desc": "कस्टम स्क्रैपर कॉन्फ़िगरेशन", + "trakt_label": "Trakt एकीकरण", + "trakt_desc": "डेटा और प्रमाणीकरण टोकन सिंक करें", + "app_settings_label": "ऐप सेटिंग्स", + "app_settings_desc": "थीम, प्राथमिकताएं और कॉन्फ़िगरेशन", + "user_prefs_label": "उपयोगकर्ता प्राथमिकताएं", + "user_prefs_desc": "ऐड-ऑन ऑर्डर और UI सेटिंग्स", + "catalog_settings_label": "कैटलॉग सेटिंग्स", + "catalog_settings_desc": "कैटलॉग फ़िल्टर और प्राथमिकताएं", + "api_keys_label": "API कुंजी", + "api_keys_desc": "MDBList और OpenRouter कुंजी", + "action_create": "बैकअप बनाएं", + "action_restore": "बैकअप से पुनर्स्थापित करें", + "section_info": "बैकअप के बारे में", + "info_text": "• ऊपर दिए गए टॉगल का उपयोग करके अनुकूलित करें कि क्या बैकअप किया जाता है\n• बैकअप फ़ाइलें आपके डिवाइस पर स्थानीय रूप से संग्रहीत की जाती हैं\n• उपकरणों के बीच डेटा स्थानांतरित करने के लिए अपना बैकअप साझा करें\n• पुनर्स्थापना से आपका वर्तमान डेटा अधिलेखित हो जाएगा", + "alert_create_title": "बैकअप बनाएं", + "alert_no_content": "बैकअप के लिए कोई सामग्री चयनित नहीं है।\n\nकृपया ऊपर बैकअप विकल्प अनुभाग में कम से कम एक विकल्प सक्षम करें।", + "alert_backup_created_title": "बैकअप बनाया गया", + "alert_backup_created_msg": "आपका बैकअप बनाया गया है और साझा करने के लिए तैयार है।", + "alert_backup_failed_title": "बैकअप विफल", + "alert_restore_confirm_title": "पुनर्स्थापना की पुष्टि करें", + "alert_restore_confirm_msg": "यह {{date}} को बनाए गए बैकअप से आपका डेटा पुनर्स्थापित करेगा।\n\nयह कार्रवाई आपके वर्तमान डेटा को अधिलेखित कर देगी। क्या आप निश्चित रूप से जारी रखना चाहते हैं?", + "alert_restore_complete_title": "पुनर्स्थापना पूर्ण", + "alert_restore_complete_msg": "आपका डेटा सफलतापूर्वक पुनर्स्थापित किया गया है। सभी परिवर्तन देखने के लिए कृपया ऐप को पुनरारंभ करें।", + "alert_restore_failed_title": "पुनर्स्थापना विफल", + "restart_app": "ऐप पुनरारंभ करें", + "alert_restart_failed_title": "पुनरारंभ विफल", + "alert_restart_failed_msg": "ऐप को पुनरारंभ करने में विफल। अपना पुनर्स्थापित डेटा देखने के लिए कृपया ऐप को मैन्युअल रूप से बंद करें और फिर से खोलें।" + }, + "updates": { + "title": "ऐप अपडेट", + "status_checking": "अपडेट की जांच हो रही है...", + "status_available": "अपडेट उपलब्ध है!", + "status_downloading": "अपडेट डाउनलोड हो रहा है...", + "status_installing": "अपडेट इंस्टॉल हो रहा है...", + "status_success": "अपडेट सफलतापूर्वक इंस्टॉल किया गया!", + "status_error": "अपडेट विफल", + "status_ready": "अपडेट की जांच के लिए तैयार", + "action_check": "अपडेट की जांच करें", + "action_install": "अपडेट इंस्टॉल करें", + "release_notes": "रिलीज़ नोट्स:", + "version": "संस्करण:", + "last_checked": "अंतिम जांच:", + "current_version": "वर्तमान संस्करण:", + "current_release_notes": "वर्तमान रिलीज़ नोट्स:", + "github_release": "GITHUB रिलीज़", + "current": "वर्तमान:", + "latest": "नवीनतम:", + "notes": "नोट्स:", + "view_release": "रिलीज़ देखें", + "notification_settings": "अधिसूचना सेटिंग्स", + "ota_alerts_label": "OTA अपडेट अलर्ट", + "ota_alerts_desc": "ओवर-द-एयर अपडेट के लिए सूचनाएं दिखाएं", + "major_alerts_label": "प्रमुख अपडेट अलर्ट", + "major_alerts_desc": "GitHub पर नए ऐप संस्करणों के लिए सूचनाएं दिखाएं", + "alert_disable_ota_title": "OTA अपडेट अलर्ट अक्षम करें?", + "alert_disable_ota_msg": "अब आपको OTA अपडेट के लिए स्वचालित सूचनाएं प्राप्त नहीं होंगी।\n\n⚠️ चेतावनी: नवीनतम संस्करण पर रहना इसके लिए महत्वपूर्ण है:\n• बग फिक्स और स्थिरता में सुधार\n• नई सुविधाएँ और संवर्द्धन\n• सटीक प्रतिक्रिया और क्रैश रिपोर्ट प्रदान करना\n\nआप अभी भी इस स्क्रीन में मैन्युअल रूप से अपडेट की जांच कर सकते हैं।", + "alert_disable_major_title": "प्रमुख अपडेट अलर्ट अक्षम करें?", + "alert_disable_major_msg": "अब आपको प्रमुख ऐप अपडेट के लिए सूचनाएं प्राप्त नहीं होंगी जिनके लिए पुनर्स्थापना की आवश्यकता होती है।\n\n⚠️ चेतावनी: प्रमुख अपडेट में अक्सर शामिल होते हैं:\n• महत्वपूर्ण सुरक्षा पैच\n• ब्रेकिंग परिवर्तन जिनके लिए ऐप पुनर्स्थापना की आवश्यकता होती है\n• महत्वपूर्ण संगतता सुधार\n\nआप अभी भी मैन्युअल रूप से अपडेट की जांच कर सकते हैं।", + "warning_note": "अलर्ट सक्षम रखने से यह सुनिश्चित होता है कि आपको बग फिक्स प्राप्त हों और आप सटीक क्रैश रिपोर्ट प्रदान कर सकें।", + "disable": "अक्षम करें", + "alert_no_update_to_install": "इंस्टॉल करने के लिए कोई अपडेट उपलब्ध नहीं है", + "alert_install_failed": "अपडेट इंस्टॉल करने में विफल", + "alert_no_update_title": "कोई अपडेट नहीं", + "alert_update_applied_msg": "अगले ऐप पुनरारंभ पर अपडेट लागू किया जाएगा" + }, + "player": { + "title": "वीडियो प्लेयर", + "section_selection": "प्लेयर चयन", + "internal_title": "इनबिल्ट प्लेयर", + "internal_desc": "ऐप का डिफ़ॉल्ट वीडियो प्लेयर उपयोग करें", + "vlc_title": "VLC", + "vlc_desc": "VLC मीडिया प्लेयर में स्ट्रीम ओपन करें", + "infuse_title": "Infuse", + "infuse_desc": "Infuse प्लेयर में स्ट्रीम ओपन करें", + "outplayer_title": "OutPlayer", + "outplayer_desc": "OutPlayer में स्ट्रीम ओपन करें", + "vidhub_title": "VidHub", + "vidhub_desc": "VidHub प्लेयर में स्ट्रीम ओपन करें", + "infuse_live_title": "Infuse Livecontainer", + "infuse_live_desc": "Infuse प्लेयर LiveContainer में स्ट्रीम ओपन करें", + "external_title": "एक्सटर्नल प्लेयर", + "external_desc": "अपने पसंदीदा वीडियो प्लेयर में स्ट्रीम ओपन करें", + "section_playback": "प्लेबैक विकल्प", + "skip_intro_settings_title": "इंट्रो छोड़ें", + "powered_by_introdb": "IntroDB द्वारा संचालित", + "autoplay_title": "पहली स्ट्रीम ऑटो-प्ले करें", + "autoplay_desc": "सूची में दिखाई गई पहली स्ट्रीम को स्वचालित रूप से शुरू करें।", + "resume_title": "हमेशा जारी रखें", + "resume_desc": "रिज्यूम प्रॉम्प्ट छोड़ें और स्वचालित रूप से वहीं से जारी रखें जहां आपने छोड़ा था (यदि 85% से कम देखा गया है)।", + "engine_title": "वीडियो प्लेयर इंजन", + "engine_desc": "ऑटो MPV फ़ॉलबैक के साथ ExoPlayer का उपयोग करता है। डॉल्बी विजन और HDR जैसे कुछ प्रारूप MPV द्वारा समर्थित नहीं हो सकते हैं, इसलिए सर्वोत्तम संगतता के लिए ऑटो की अनुशंसा की जाती है।", + "decoder_title": "डिकोडर मोड", + "decoder_desc": "वीडियो कैसे डिकोड किया जाता है। सर्वोत्तम संतुलन के लिए ऑटो की अनुशंसा की जाती है।", + "gpu_title": "GPU रेंडरिंग", + "gpu_desc": "GPU-Next बेहतर HDR और रंग प्रबंधन प्रदान करता है।", + "external_downloads_title": "डाउनलोड के लिए एक्सटर्नल प्लेयर", + "external_downloads_desc": "अपने पसंदीदा एक्सटर्नल प्लेयर में डाउनलोड की गई सामग्री चलाएं।", + "restart_required": "पुनरारंभ आवश्यक", + "restart_msg_decoder": "डिकोडर परिवर्तन प्रभावी होने के लिए कृपया ऐप को पुनरारंभ करें।", + "restart_msg_gpu": "GPU मोड परिवर्तन प्रभावी होने के लिए कृपया ऐप को पुनरारंभ करें।", + "option_auto": "ऑटो", + "option_auto_desc_engine": "ExoPlayer + MPV फ़ॉलबैक", + "option_mpv": "MPV", + "option_mpv_desc": "केवल MPV", + "option_auto_desc_decoder": "सर्वोत्तम संतुलन", + "option_sw": "SW", + "option_sw_desc": "सॉफ्टवेयर", + "option_hw": "HW", + "option_hw_desc": "हार्डवेयर", + "option_hw_plus": "HW+", + "option_hw_plus_desc": "पूर्ण HW", + "option_gpu_desc": "मानक", + "option_gpu_next_desc": "उन्नत" + }, + "plugins": { + "title": "प्लगइन्स", + "enable_title": "प्लगइन्स सक्षम करें", + "enable_desc": "बाहरी मीडिया स्रोतों को हल करने के लिए प्लगइन इंजन सक्षम करें", + "repo_config_title": "रिपॉजिटरी कॉन्फ़िगरेशन", + "repo_config_desc": "बाहरी प्लगइन रिपॉजिटरी प्रबंधित करें। नीचे प्रत्येक रिपॉजिटरी को चालू या बंद करें।", + "your_repos": "रिपॉजिटरी", + "your_repos_desc": "प्लगइन्स के लिए बाहरी स्रोत कॉन्फ़िगर करें।", + "add_repo_button": "रिपॉजिटरी जोड़ें", + "refresh": "रीफ्रेश", + "remove": "हटाएं", + "enabled": "सक्षम", + "disabled": "अक्षम", + "updating": "अपडेट हो रहा है...", + "success": "सफल", + "error": "त्रुटि", + "alert_repo_added": "रिपॉजिटरी जोड़ी गई और प्लगइन्स सफलतापूर्वक लोड किए गए", + "alert_repo_saved": "रिपॉजिटरी URL सफलतापूर्वक सहेजा गया", + "alert_repo_refreshed": "रिपॉजिटरी सफलतापूर्वक रीफ्रेश की गई", + "alert_invalid_url": "अमान्य URL प्रारूप", + "alert_plugins_cleared": "सभी प्लगइन्स हटा दिए गए हैं", + "alert_cache_cleared": "रिपॉजिटरी कैश सफलतापूर्वक साफ़ किया गया", + "unknown": "अज्ञात", + "active": "सक्रिय", + "available": "उपलब्ध", + "platform_disabled": "प्लेटफ़ॉर्म अक्षम", + "limited": "सीमित", + "clear_all": "सभी प्लगइन्स साफ़ करें", + "clear_all_desc": "क्या आप निश्चित रूप से सभी इंस्टॉल किए गए प्लगइन्स को हटाना चाहते हैं? इस कार्रवाई को पूर्ववत नहीं किया जा सकता।", + "clear_cache": "रिपॉजिटरी कैश साफ़ करें", + "clear_cache_desc": "यह सहेजे गए रिपॉजिटरी URL को हटा देगा और सभी कैश किए गए प्लगइन डेटा को साफ़ कर देगा। आपको अपना रिपॉजिटरी URL फिर से दर्ज करना होगा।", + "add_new_repo": "नई रिपॉजिटरी जोड़ें", + "available_plugins": "उपलब्ध प्लगइन्स ({{count}})", + "placeholder": "प्लगइन्स खोजें...", + "all": "सभी", + "filter_all": "सभी प्रकार", + "filter_movies": "फिल्में", + "filter_tv": "टीवी शोज़", + "enable_all": "सभी सक्षम करें", + "disable_all": "सभी अक्षम करें", + "no_plugins_found": "कोई प्लगइन नहीं मिला", + "no_plugins_available": "कोई प्लगइन उपलब्ध नहीं", + "no_match_desc": "\"{{query}}\" से मेल खाने वाले कोई प्लगइन नहीं। एक अलग खोज शब्द आज़माएं।", + "configure_repo_desc": "उपलब्ध प्लगइन्स देखने के लिए ऊपर एक रिपॉजिटरी कॉन्फ़िगर करें।", + "clear_search": "खोज साफ़ करें", + "no_external_player": "कोई बाहरी प्लेयर नहीं", + "showbox_token": "ShowBox UI टोकन", + "showbox_placeholder": "अपना ShowBox UI टोकन पेस्ट करें", + "save": "सहेजें", + "clear": "साफ़ करें", + "additional_settings": "अतिरिक्त सेटिंग्स", + "enable_url_validation": "URL सत्यापन सक्षम करें", + "url_validation_desc": "उन्हें वापस करने से पहले मीडिया URL सत्यापित करें (परिणाम धीमा हो सकता है लेकिन विश्वसनीयता में सुधार होता है)", + "group_streams": "प्लगइन स्रोत समूह", + "group_streams_desc": "सक्षम होने पर, स्रोत रिपॉजिटरी द्वारा समूहीकृत होते हैं। अक्षम होने पर, प्रत्येक प्लगइन एक अलग प्रदाता के रूप में दिखाई देता है।", + "sort_quality": "पहले गुणवत्ता के अनुसार क्रमबद्ध करें", + "sort_quality_desc": "सक्षम होने पर, स्रोत पहले गुणवत्ता के अनुसार क्रमबद्ध होते हैं। केवल तभी उपलब्ध जब समूहीकरण सक्षम हो।", + "show_logos": "प्लगइन लोगो दिखाएं", + "show_logos_desc": "स्रोत स्क्रीन पर मीडिया लिंक के बगल में प्लगइन लोगो प्रदर्शित करें।", + "quality_filtering": "गुणवत्ता फ़िल्टरिंग", + "quality_filtering_desc": "खोज परिणामों से विशिष्ट वीडियो रिज़ॉल्यूशन को बाहर निकालें। प्लगइन परिणामों से बाहर निकालने के लिए गुणवत्ता पर टैप करें।", + "excluded_qualities": "बहिष्कृत गुणवत्ता:", + "language_filtering": "भाषा फ़िल्टरिंग", + "language_filtering_desc": "खोज परिणामों से विशिष्ट भाषाओं को बाहर निकालें। प्लगइन परिणामों से बाहर निकालने के लिए किसी भाषा पर टैप करें।", + "note": "नोट:", + "language_filtering_note": "यह फ़िल्टर केवल उन प्रदाताओं पर लागू होता है जिनमें भाषा की जानकारी शामिल होती है। यह अन्य प्रदाताओं को प्रभावित नहीं करता है।", + "excluded_languages": "बहिष्कृत भाषाएं:", + "about_title": "प्लगइन्स के बारे में", + "about_desc_1": "प्लगइन्स मॉड्यूलर घटक हैं जो विभिन्न बाहरी प्रोटोकॉल से सामग्री को अनुकूलित करते हैं। वे आपके डिवाइस पर स्थानीय रूप से चलते हैं और विश्वसनीय रिपॉजिटरी से स्थापित किए जा सकते हैं।", + "about_desc_2": "\"सीमित\" चिह्नित प्लगइन्स को विशिष्ट बाहरी कॉन्फ़िगरेशन की आवश्यकता हो सकती है।", + "help_title": "प्लगइन सेटअप", + "help_step_1": "1. **प्लगइन्स सक्षम करें** - मुख्य स्विच चालू करें", + "help_step_2": "2. **रिपॉजिटरी जोड़ें** - एक वैध रिपॉजिटरी URL जोड़ें", + "help_step_3": "3. **रिपॉजिटरी रीफ्रेश करें** - उपलब्ध प्लगइन्स प्राप्त करें", + "help_step_4": "4. **सक्रिय करें** - उन प्लगइन्स को सक्षम करें जिनका आप उपयोग करना चाहते हैं", + "got_it": "समझ गया!", + "repo_format_hint": "प्रारूप: https://raw.githubusercontent.com/username/repo/refs/heads/branch", + "cancel": "रद्द करें", + "add": "जोड़ें" + }, + "theme": { + "title": "ऐप थीम्स", + "select_theme": "थीम चुनें", + "create_custom": "कस्टम थीम बनाएं", + "options": "विकल्प", + "use_dominant_color": "कलाकृति से प्रमुख रंग का उपयोग करें", + "categories": { + "all": "सभी थीम्स", + "dark": "डार्क थीम्स", + "colorful": "रंगीन", + "custom": "मेरी थीम्स" + }, + "editor": { + "theme_name_placeholder": "थीम का नाम", + "save": "सहेजें", + "primary": "प्राथमिक", + "secondary": "माध्यमिक", + "background": "पृष्ठभूमि", + "invalid_name_title": "अमान्य नाम", + "invalid_name_msg": "कृपया एक वैध थीम नाम दर्ज करें" + }, + "alerts": { + "delete_title": "थीम हटाएं", + "delete_msg": "क्या आप निश्चित रूप से \"{{name}}\" को हटाना चाहते हैं?", + "ok": "दीक है", + "delete": "हटाएं", + "cancel": "रद्द करें", + "back": "सेटिंग्स" + } + }, + "legal": { + "title": "कानूनी और अस्वीकरण", + "intro_title": "एप्लिकेशन की प्रकृति", + "intro_text": "Nuvio एक मीडिया प्लेयर और मेटाडेटा प्रबंधन एप्लिकेशन है। यह सार्वजनिक रूप से उपलब्ध मेटाडेटा (फिल्में, टीवी शो, आदि) ब्राउज़ करने और उपयोगकर्ता या तृतीय-पक्ष एक्सटेंशन द्वारा प्रदान की गई मीडिया फ़ाइलों को चलाने के लिए पूरी तरह से क्लाइंट-साइड इंटरफ़ेस के रूप में कार्य करता है। Nuvio स्वयं किसी भी मीडिया सामग्री को होस्ट, स्टोर, वितरित या इंडेक्स नहीं करता है।", + "extensions_title": "तृतीय-पक्ष प्लगइन्स", + "extensions_text": "Nuvio एक एक्स्टेंसिबल आर्किटेक्चर का उपयोग करता है जो उपयोगकर्ताओं को तृतीय-पक्ष प्लगइन्स स्थापित करने की अनुमति देता है। ये प्लगइन्स स्वतंत्र डेवलपर्स द्वारा विकसित और बनाए रखे जाते हैं जो Nuvio से संबद्ध नहीं हैं। किसी भी तृतीय-पक्ष प्लगइन की सामग्री, वैधता या कार्यक्षमता के लिए हमारा कोई नियंत्रण नहीं है, और हम कोई जिम्मेदारी नहीं लेते हैं।", + "user_resp_title": "उपयोगकर्ता जिम्मेदारी", + "user_resp_text": "उपयोगकर्ता पूरी तरह से उन प्लगइन्स के लिए जिम्मेदार हैं जिन्हें वे स्थापित करते हैं और जिस सामग्री तक वे पहुंचते हैं। इस एप्लिकेशन का उपयोग करके, आप यह सुनिश्चित करने के लिए सहमत हैं कि आपके पास Nuvio का उपयोग करके किसी भी सामग्री को देखने का कानूनी अधिकार है। Nuvio के डेवलपर्स कॉपीराइट उल्लंघन का समर्थन या प्रोत्साहन नहीं करते हैं।", + "dmca_title": "कॉपीराइट और DMCA", + "dmca_text": "हम दूसरों के बौद्धिक संपदा अधिकारों का सम्मान करते हैं। चूंकि Nuvio किसी भी सामग्री को होस्ट नहीं करता है, इसलिए हम इंटरनेट से सामग्री नहीं हटा सकते हैं। हालाँकि, यदि आपको लगता है कि एप्लिकेशन इंटरफ़ेस स्वयं आपके अधिकारों का उल्लंघन करता है, तो कृपया हमसे संपर्क करें।", + "warranty_title": "कोई वारंटी नहीं", + "warranty_text": "यह सॉफ़्टवेयर \"जैसा है\" प्रदान किया जाता है, बिना किसी प्रकार की वारंटी, व्यक्त या निहित। किसी भी स्थिति में लेखक या कॉपीराइट धारक इस सॉफ़्टवेयर के उपयोग से उत्पन्न किसी भी दावे, क्षति या अन्य दायित्व के लिए उत्तरदायी नहीं होंगे।" + }, + "plugin_tester": { + "title": "प्लगइन टेस्टर", + "subtitle": "चलते-फिरते स्क्रैपर चलाएं और लॉग का निरीक्षण करें", + "tabs": { + "individual": "व्यक्तिगत", + "repo": "रिपो टेस्टर", + "code": "कोड", + "logs": "लॉग", + "results": "परिणाम" + }, + "common": { + "error": "त्रुटि", + "success": "सफल", + "movie": "फिल्म", + "tv": "टीवी", + "tmdb_id": "TMDB ID", + "season": "सीज़न", + "episode": "एपिसोड", + "running": "चल रहा है...", + "run_test": "टेस्ट चलाएं", + "play": "चलाएं", + "done": "हो गया", + "test": "टेस्ट", + "testing": "परीक्षण..." + }, + "individual": { + "load_from_url": "URL से लोड करें", + "load_from_url_desc": "एक कच्चा GitHub URL या स्थानीय IP पेस्ट करें और डाउनलोड टैप करें।", + "enter_url_error": "कृपया एक URL दर्ज करें", + "code_loaded": "कोड़ URL से लोड किया गया", + "fetch_error": "लाने में विफल: {{message}}", + "no_code_error": "चलाने के लिए कोई कोड नहीं", + "plugin_code": "प्लगइन कोड", + "focus_editor": "कोड एडिटर फोकस करें", + "code_placeholder": "// यहाँ प्लगइन कोड पेस्ट करें...", + "test_parameters": "टेस्ट पैरामीटर", + "no_logs": "अभी तक कोई लॉग नहीं। आउटपुट देखने के लिए एक टेस्ट चलाएं।", + "no_streams": "अभी तक कोई स्ट्रीम नहीं मिली।", + "streams_found": "{{count}} स्ट्रीम मिली", + "streams_found_plural": "{{count}} स्ट्रीम्स मिलीं", + "tap_play_hint": "मूल प्लेयर में स्ट्रीम का परीक्षण करने के लिए प्ले टैप करें।", + "unnamed_stream": "अनाम स्ट्रीम", + "quality": "गुणवत्ता: {{quality}}", + "size": "आकार: {{size}}", + "url_label": "URL: {{url}}", + "headers_info": "हेडर: {{count}} कस्टम हेडर", + "find_placeholder": "कोड में खोजें...", + "edit_code_title": "कोड संपादित करें", + "no_url_stream_error": "इस स्ट्रीम के लिए कोई URL नहीं मिला" + }, + "repo": { + "title": "रिपो टेस्टर", + "description": "एक रिपॉजिटरी (स्थानीय URL या GitHub कच्चा) प्राप्त करें और प्रत्येक प्रदाता का परीक्षण करें।", + "enter_repo_url_error": "कृपया एक रिपॉजिटरी URL दर्ज करें", + "invalid_url_title": "अमान्य URL", + "invalid_url_msg": "GitHub कच्चा URL या स्थानीय http(s) URL का उपयोग करें।\n\nउदाहरण:\nhttps://raw.githubusercontent.com/tapframe/nuvio-providers/refs/heads/main", + "manifest_build_error": "इनपुट से मेनिफेस्ट URL नहीं बनाया जा सका", + "manifest_fetch_error": "मेनिफेस्ट लाने में विफल", + "repo_manifest_fetch_error": "रिपॉजिटरी मेनिफेस्ट लाने में विफल", + "missing_filename": "मेनिफेस्ट में फ़ाइल नाम गायब है", + "scraper_build_error": "स्क्रैपर URL नहीं बनाया जा सका", + "download_scraper_error": "स्क्रैपर डाउनलोड करने में विफल", + "test_failed": "टेस्ट विफल", + "test_parameters": "रिपो टेस्ट पैरामीटर", + "test_parameters_desc": "ये पैरामीटर केवल रिपो टेस्टर के लिए उपयोग किए जाते हैं।", + "using_info": "उपयोग: {{mediaType}} • TMDB {{tmdbId}}", + "using_info_tv": "उपयोग: {{mediaType}} • TMDB {{tmdbId}} • S{{season}}E{{episode}}", + "providers_title": "प्रदाता", + "repository_default": "रिपॉजिटरी", + "providers_count": "{{count}} प्रदाता", + "fetch_hint": "प्रदाताओं को सूचीबद्ध करने के लिए एक रिपो प्राप्त करें।", + "test_all": "सभी टेस्ट करें", + "status_running": "चल रहा है", + "status_ok": "ठीक है ({{count}})", + "status_ok_empty": "ठीक है (0)", + "status_failed": "विफल", + "status_idle": "निष्क्रिय", + "tried_url": "आजमाया गया: {{url}}", + "provider_logs": "प्रदाता लॉग", + "no_logs_captured": "कोई लॉग कैप्चर नहीं किया गया।" + } + } +} \ No newline at end of file diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index bf9c60f2..b14fdffc 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json @@ -632,6 +632,7 @@ "italian": "Talijanski", "croatian": "Hrvatski", "chinese": "Kineski (Pojednostavljeni)", + "hindi": "Hindski", "account": "Račun", "content_discovery": "Sadržaj i otkrivanje", "appearance": "Izgled", diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index bb2105b3..8149982d 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json @@ -632,6 +632,7 @@ "italian": "Italiano", "croatian": "Croato", "chinese": "Cinese (Semplificato)", + "hindi": "Hindi", "account": "Account", "content_discovery": "Contenuti e Scoperta", "appearance": "Aspetto", diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index ffe237c6..f5f8784a 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json @@ -646,6 +646,7 @@ "italian": "Italiano", "croatian": "Croata", "chinese": "Chinês (Simplificado)", + "hindi": "Hindi", "account": "Conta", "content_discovery": "Conteúdo e Descoberta", "appearance": "Aparência", diff --git a/src/i18n/locales/pt-PT.json b/src/i18n/locales/pt-PT.json index 19ec3a71..bd5bb645 100644 --- a/src/i18n/locales/pt-PT.json +++ b/src/i18n/locales/pt-PT.json @@ -646,6 +646,7 @@ "italian": "Italiano", "croatian": "Croata", "chinese": "Chinês (Simplificado)", + "hindi": "Hindi", "account": "Conta", "content_discovery": "Conteúdo e Descoberta", "appearance": "Aparência", diff --git a/src/i18n/locales/zh-CN.json b/src/i18n/locales/zh-CN.json index fd58c310..93fb7cbc 100644 --- a/src/i18n/locales/zh-CN.json +++ b/src/i18n/locales/zh-CN.json @@ -632,6 +632,7 @@ "italian": "意大利语", "croatian": "克罗地亚语", "chinese": "简体中文", + "hindi": "印地语", "account": "账户", "content_discovery": "内容与发现", "appearance": "外观", diff --git a/src/i18n/resources.ts b/src/i18n/resources.ts index 8f09b755..feb80a4f 100644 --- a/src/i18n/resources.ts +++ b/src/i18n/resources.ts @@ -8,6 +8,7 @@ import it from './locales/it.json'; import de from './locales/de.json'; import hr from './locales/hr.json'; +import hi from './locales/hi.json'; import zhCN from './locales/zh-CN.json'; export const resources = { @@ -21,4 +22,5 @@ export const resources = { de: { translation: de }, hr: { translation: hr }, 'zh-CN': { translation: zhCN }, + hi: { translation: hi }, }; diff --git a/src/screens/ContributorsScreen.tsx b/src/screens/ContributorsScreen.tsx index 318e4eba..75dfe841 100644 --- a/src/screens/ContributorsScreen.tsx +++ b/src/screens/ContributorsScreen.tsx @@ -254,7 +254,7 @@ const DonorCard: React.FC = ({ donor, currentTheme, isTablet }) try { const date = new Date(dateString); if (isNaN(date.getTime())) return dateString; - + return date.toLocaleDateString(undefined, { year: 'numeric', month: 'short', @@ -333,7 +333,7 @@ const ContributorsScreen: React.FC = () => { try { const date = new Date(dateString); if (isNaN(date.getTime())) return dateString; - + // Use locale-aware formatting return date.toLocaleDateString(undefined, { year: 'numeric', @@ -382,15 +382,17 @@ const ContributorsScreen: React.FC = () => { const sorted = Array.from(map.values()).sort((a, b) => b.total - a.total); let lastTotal: number | null = null; - let lastRank = 0; + let currentRank = 0; - return sorted.map((entry, index) => { - const rank = lastTotal !== null && entry.total === lastTotal ? lastRank : index + 1; + return sorted.map((entry) => { + if (lastTotal === null || entry.total !== lastTotal) { + currentRank += 1; + } lastTotal = entry.total; - lastRank = rank; + return { ...entry, - rank, + rank: currentRank, }; }); }, [donations, getDonationTs]); @@ -803,87 +805,87 @@ const ContributorsScreen: React.FC = () => { - {donationsLoading ? ( - - - {t('contributors.loading_donors')} - - ) : donationsError ? ( - - - - {donationsError} - - loadDonations(true)} - > - {t('common.retry')} - - - ) : donations.length === 0 ? ( - - - {t('contributors.no_donors')} - + {donationsLoading ? ( + + + {t('contributors.loading_donors')} + + ) : donationsError ? ( + + + + {donationsError} + + loadDonations(true)} + > + {t('common.retry')} + + + ) : donations.length === 0 ? ( + + + {t('contributors.no_donors')} + + ) : ( + donorsTab === 'latest' ? ( + latestDonations.map((donor, index) => ( + + )) ) : ( - donorsTab === 'latest' ? ( - latestDonations.map((donor, index) => ( - - )) - ) : ( - leaderboardDonations.map((entry, index) => ( - - - {getRankAnimation(entry.rank) ? ( - - {entry.rank} - - - ) : ( + leaderboardDonations.map((entry, index) => ( + + + {getRankAnimation(entry.rank) ? ( + {entry.rank} - )} - - - - {entry.name} - - - {entry.total.toFixed(2)} {entry.currency} · {entry.count} {entry.count === 1 ? 'donation' : 'donations'} - - - Rank #{entry.rank} · Last: {formatDonationDate(entry.lastDate)} - - + + + ) : ( + {entry.rank} + )} - )) - ) - )} + + + {entry.name} + + + {entry.total.toFixed(2)} {entry.currency} · {entry.count} {entry.count === 1 ? 'donation' : 'donations'} + + + Rank #{entry.rank} · Last: {formatDonationDate(entry.lastDate)} + + + + )) + ) + )} ) : activeTab === 'contributors' ? ( // Contributors Tab diff --git a/src/screens/settings/AboutSettingsScreen.tsx b/src/screens/settings/AboutSettingsScreen.tsx index b0cde362..04e3d3d4 100644 --- a/src/screens/settings/AboutSettingsScreen.tsx +++ b/src/screens/settings/AboutSettingsScreen.tsx @@ -183,6 +183,15 @@ export const AboutSettingsContent: React.FC = ({ return ( <> + {isTablet && ( + navigation.navigate('Contributors')} + renderControl={() => } + isTablet={isTablet} + /> + )}