From afd7a5f331c12a1293e110d8e44e939e59683eaa Mon Sep 17 00:00:00 2001 From: 4gray <4gray@users.noreply.github.com> Date: Sun, 11 Oct 2026 09:59:50 +0200 Subject: [PATCH] fix(i18n): translate source cleanup, source health and diagnostics strings (#1884) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(i18n): translate source cleanup, source health and diagnostics strings Translate every English-identical SOURCE_CLEANUP, SOURCE_HEALTH and PLAYBACK_DIAGNOSTICS value in all 18 locales, plus the external playback dock statuses (the same strings as the diagnostic ones), the EPG source list strings, and leftover English in hu, ko and el. The identical-English baseline drops 973 entries (2106 -> 1133) and gains none. Add tools/i18n/check-duplicates.mjs (pnpm run i18n:duplicates), a report of English strings defined under several keys whose translations differ per locale, and align drifted wordings: 101 diverging groups -> 65. Co-Authored-By: Claude Opus 5.5 * fix(i18n): call cleaned-up zh/zhtw sources invalid, not unactivated The cleanup dialog lists expired and disabled accounts too, so 未激活 / 未啟用 ("not activated") misexplained why a source is offered for deletion. Use 失效 ("no longer valid") in the title and the confirmed group heading. Co-Authored-By: Claude Opus 5.5 * fix(i18n): one zh/zhtw wording for copying the stream URL The playback diagnostics button said 复制 URL / 複製 URL while the channel details dialog (new on master) says 复制流 URL / 複製串流網址 for the same action; use the details dialog wording in both places. Co-Authored-By: Claude Opus 5.5 --------- Co-authored-by: Claude Opus 5.5 --- .../i18n-source-cleanup-health-diagnostics.md | 9 + apps/web/src/assets/i18n/ar.json | 114 +- apps/web/src/assets/i18n/ary.json | 120 +-- apps/web/src/assets/i18n/by.json | 122 +-- apps/web/src/assets/i18n/de.json | 80 +- apps/web/src/assets/i18n/el.json | 124 +-- apps/web/src/assets/i18n/es.json | 120 +-- apps/web/src/assets/i18n/fr.json | 114 +- apps/web/src/assets/i18n/hu.json | 186 ++-- apps/web/src/assets/i18n/it.json | 116 +-- apps/web/src/assets/i18n/ja.json | 114 +- apps/web/src/assets/i18n/ko.json | 148 +-- apps/web/src/assets/i18n/nl.json | 114 +- apps/web/src/assets/i18n/pl.json | 112 +- apps/web/src/assets/i18n/pt.json | 114 +- apps/web/src/assets/i18n/ru.json | 10 +- apps/web/src/assets/i18n/tr.json | 112 +- apps/web/src/assets/i18n/zh.json | 116 +-- apps/web/src/assets/i18n/zhtw.json | 114 +- docs/architecture/validation-map.md | 7 + package.json | 3 +- tools/i18n/README.md | 16 + tools/i18n/check-duplicates.mjs | 141 +++ tools/i18n/check-duplicates.test.mjs | 130 +++ tools/i18n/identical-en-baseline.json | 975 +----------------- 25 files changed, 1331 insertions(+), 2000 deletions(-) create mode 100644 .changes/i18n-source-cleanup-health-diagnostics.md create mode 100644 tools/i18n/check-duplicates.mjs create mode 100644 tools/i18n/check-duplicates.test.mjs diff --git a/.changes/i18n-source-cleanup-health-diagnostics.md b/.changes/i18n-source-cleanup-health-diagnostics.md new file mode 100644 index 000000000..8b115d633 --- /dev/null +++ b/.changes/i18n-source-cleanup-health-diagnostics.md @@ -0,0 +1,9 @@ +--- +type: fix +area: i18n +--- + +The source cleanup dialog, source connection status, playback error panel and +external player status are now translated in every language, along with +leftover English in Hungarian, Korean and Greek. Repeated labels such as Close, +Settings and Account information now use one wording per language. diff --git a/apps/web/src/assets/i18n/ar.json b/apps/web/src/assets/i18n/ar.json index bb65bbeda..6b6519765 100644 --- a/apps/web/src/assets/i18n/ar.json +++ b/apps/web/src/assets/i18n/ar.json @@ -58,7 +58,7 @@ "SOURCE_STALKER_NEEDS": "رابط البوابة وعنوان MAC متوافقان مع Ministra.", "SOURCE_STALKER_ADD": "إضافة Stalker", "CONTENT_LIVE": "مباشر", - "CONTENT_VOD": "أفلام", + "CONTENT_VOD": "الأفلام", "CONTENT_SERIES": "مسلسلات", "CONTENT_EPG": "EPG", "NO_RESULTS_TITLE": "لم يتم العثور على قوائم تشغيل", @@ -373,7 +373,7 @@ "REFRESH_EPG": "تحديث EPG", "REFRESH_ALL_EPG": "تحديث الكل", "REMOVE_EPG_SOURCE": "إزالة مصدر EPG", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "اختيار ملف XMLTV محلي…", "EPG_STATUS_FRESH": "محدث", "EPG_STATUS_STALE": "يحتاج تحديث", "EPG_STATUS_ERROR": "فشل", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "فشل مسح بيانات EPG. يرجى المحاولة مرة أخرى.", "CLEARING_EPG_DATA": "جارٍ المسح…", "EPG_URL_ERROR": "القيمة ليست رابطًا صالحًا", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "قائمة المصادر", + "EPG_SOURCE_FORMATS_HINT": "يدعم التطبيق روابط XMLTV البعيدة (http/https) والملفات الموجودة على هذا الكمبيوتر، سواء بصيغة .xml عادية أو مضغوطة بـ gzip بصيغة .xml.gz. تحتاج الملفات المحلية إلى مسار مطلق أو رابط file://.", + "EPG_SOURCE_FORMATS_EXAMPLES": "أمثلة:", "VIDEO_PLAYER_DESCRIPTION": "اختر مشغل الفيديو الافتراضي", "WEB_PLAYER_SHARED_CONTROLS": "عناصر تحكم موحّدة لمشغلات الويب", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "استخدم عناصر التحكم المشتركة في IPTVnator مع HTML5 وVideo.js وArtPlayer.", @@ -559,7 +559,7 @@ "DASHBOARD_RAIL_CONTINUE_DESCRIPTION": "عرض الأفلام والمسلسلات التي شاهدتها مؤخرًا كبطاقات أغلفة.", "DASHBOARD_RAIL_LIVE_FAVORITES": "يبث الآن ضمن مفضلاتك", "DASHBOARD_RAIL_LIVE_FAVORITES_DESCRIPTION": "عرض القنوات المباشرة المفضلة مع تقدم EPG الحالي.", - "DASHBOARD_RAIL_RECENT_LIVE": "تلفزيون مباشر شاهدته مؤخرًا", + "DASHBOARD_RAIL_RECENT_LIVE": "تلفزيون مباشر شوهد مؤخرًا", "DASHBOARD_RAIL_RECENT_LIVE_DESCRIPTION": "عرض القنوات المباشرة التي فتحتها مؤخرًا مع تقدم EPG الحالي.", "DASHBOARD_RAIL_FAVORITE_VOD": "الأفلام والمسلسلات المفضلة", "DASHBOARD_RAIL_FAVORITE_VOD_DESCRIPTION": "عرض الأفلام والمسلسلات المفضلة كبطاقات أغلفة.", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "هذا الهدف متوافق مع بيانات التشفير المتاحة", "ACTION_OPEN_MPV": "فتح في MPV", "ACTION_OPEN_VLC": "فتح في VLC", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "جارٍ فتح MPV…", + "ACTION_OPENING_VLC": "جارٍ فتح VLC…", + "ACTION_REOPEN_MPV": "فتح MPV مرة أخرى", + "ACTION_REOPEN_VLC": "فتح VLC مرة أخرى", + "ACTION_RETRY_MPV": "جرّب MPV مرة أخرى", + "ACTION_RETRY_VLC": "جرّب VLC مرة أخرى", + "EXTERNAL_OPENING": "جارٍ فتح المشغل…", + "EXTERNAL_STARTED": "تم بدء تشغيل المشغل", + "EXTERNAL_PLAYING": "قيد التشغيل", + "EXTERNAL_FAILED": "خطأ في المشغل الخارجي", "ACTION_OPEN_MPV_HINT": "المشغل المكوّن", "ACTION_OPEN_VLC_HINT": "المشغل المكوّن", "ACTION_COPY_URL": "نسخ رابط البث", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "المفضلة", "RAIL_DOWNLOADS": "التنزيلات", "EXTERNAL_PLAYBACK_CLOSE": "إغلاق المشغل", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "إخفاء", + "EXTERNAL_PLAYBACK_OPENING": "جارٍ فتح المشغل…", + "EXTERNAL_PLAYBACK_STARTED": "تم بدء تشغيل المشغل", + "EXTERNAL_PLAYBACK_PLAYING": "قيد التشغيل", + "EXTERNAL_PLAYBACK_FAILED": "خطأ في المشغل الخارجي", + "EXTERNAL_PLAYBACK_CLOSED": "مغلق", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "فتح في قائمة التشغيل", "RAIL_ALL_CHANNELS": "جميع القنوات", "RAIL_GROUPS": "المجموعات", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "أعد محاولة قراءة المصادر المحفوظة. لم تُحذف بياناتك." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "تحقق مرة أخرى", + "M3U_SCOPE": "رابط قائمة التشغيل، وليس القنوات الفردية", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "متاح", + "disabled": "تم تعطيل الحساب", + "expired": "انتهت صلاحية الاشتراك", + "auth": "تم رفض الوصول؛ حالة الحساب غير مؤكدة", + "http": "أرجع الخادم خطأً", + "timeout": "انتهت مهلة التحقق", + "network": "تعذر الاتصال", + "paused": "عمليات التحقق من الاتصال متوقفة مؤقتًا", + "invalid": "استجابة غير متوقعة", + "unknown": "لم يتم التحقق", + "cancelled": "تم إلغاء التحقق", + "checking": "جارٍ التحقق…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "تنظيف المصادر غير النشطة…", + "SCOPE": "جميع المصادر الشبكية في مكتبتك، بغض النظر عن عوامل التصفية في الصفحة.", + "CONSEQUENCES": "لن تُحذف إلا المصادر التي تحددها، وستُزال معها المفضلة وسجل المشاهدة وتقدم التشغيل المحفوظة لها. أما الملفات المنزّلة فيُحتفظ بها.", + "SUMMARY": "تم التحقق: {{checked}}/{{total}} · متاح: {{available}} · تم الحذف: {{deleted}} · تم التخطي: {{skipped}} · فشل: {{failed}}", + "SELECT_ALL": "تحديد كل المصادر المرشحة", + "SELECT_NONE": "إلغاء تحديد الكل", + "UNTITLED": "مصدر بدون عنوان", + "DELETE": "حذف المحدد · {{count}}", + "CLOSE": "إغلاق", + "STOP": "إيقاف بعد المصدر الحالي", + "CLEANUP_WARNING": "تم حذف المصدر؛ تعذر إكمال جزء من التنظيف اللاحق", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "حسابات غير نشطة مؤكدة", + "uncertain": "تحتاج إلى مراجعة قبل الحذف", + "skipped": "مصادر تم تخطيها", + "results": "نتائج الحذف" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "جارٍ التحقق…", + "skipped": "قيد التشغيل أو مشغول أو تغيّر أو لم يعد موجودًا", + "deleting": "جارٍ الحذف…", + "deleted": "تم الحذف", + "failed": "فشل الحذف — حدّده لإعادة المحاولة" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "تمت معالجة {{done}} من {{total}} من المصادر المحددة" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/ary.json b/apps/web/src/assets/i18n/ary.json index 5300b1c07..b5e819ad5 100644 --- a/apps/web/src/assets/i18n/ary.json +++ b/apps/web/src/assets/i18n/ary.json @@ -58,7 +58,7 @@ "SOURCE_STALKER_NEEDS": "رابط البوابة وعنوان MAC متوافق مع Ministra.", "SOURCE_STALKER_ADD": "زيد Stalker", "CONTENT_LIVE": "مباشر", - "CONTENT_VOD": "أفلام", + "CONTENT_VOD": "الأفلام", "CONTENT_SERIES": "سلاسل", "CONTENT_EPG": "EPG", "NO_RESULTS_TITLE": "ما تلقاتش حتى قائمة تشغيل", @@ -373,7 +373,7 @@ "REFRESH_EPG": "حدث EPG", "REFRESH_ALL_EPG": "حدث الكل", "REMOVE_EPG_SOURCE": "زول مصدر EPG", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "اختار ملف XMLTV محلي…", "EPG_STATUS_FRESH": "محدث", "EPG_STATUS_STALE": "خاصو يتحدث", "EPG_STATUS_ERROR": "فشل", @@ -391,7 +391,7 @@ "DISCARD_CHANGES": "تجاهل", "UNSAVED_DIALOG_TITLE": "تغييرات ماتسجلاتش", "UNSAVED_DIALOG_MESSAGE": "عندك تغييرات ماتسجلاتش فالإعدادات. بغيتي تسجلهم قبل ما تخرج؟", - "UNSAVED_DIALOG_SAVE": "سجّل", + "UNSAVED_DIALOG_SAVE": "حفظ", "UNSAVED_DIALOG_DISCARD": "تجاهل", "UNSAVED_DIALOG_INVALID_HINT": "شي خانات ماشي صحيحين، علاش مايمكنش تسجل التغييرات دابا.", "BACK_TO_HOME": "رجوع", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "فشل مسح بيانات EPG. عفاك حاول مرة أخرى.", "CLEARING_EPG_DATA": "جاري المسح…", "EPG_URL_ERROR": "القيمة ماشي رابط صحيح", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "لائحة المصادر", + "EPG_SOURCE_FORMATS_HINT": "مدعومين بجوج: روابط XMLTV البعيدة (http/https) والملفات اللي فهاد الكمبيوتر، سواء .xml عادي ولا .xml.gz مضغوط بـ gzip. الملفات المحلية خاصها مسار مطلق ولا رابط file://.", + "EPG_SOURCE_FORMATS_EXAMPLES": "أمثلة:", "VIDEO_PLAYER_DESCRIPTION": "اختار مشغل الفيديو الافتراضي", "WEB_PLAYER_SHARED_CONTROLS": "عناصر تحكم موحدة لمشغلات الويب", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "استعمل عناصر التحكم المشتركة ديال IPTVnator مع HTML5 وVideo.js وArtPlayer.", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "هاد الهدف متوافق مع بيانات التشفير المتوفرة", "ACTION_OPEN_MPV": "حل فـ MPV", "ACTION_OPEN_VLC": "حل فـ VLC", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "جاري حل MPV…", + "ACTION_OPENING_VLC": "جاري حل VLC…", + "ACTION_REOPEN_MPV": "عاود حل MPV", + "ACTION_REOPEN_VLC": "عاود حل VLC", + "ACTION_RETRY_MPV": "عاود جرّب MPV", + "ACTION_RETRY_VLC": "عاود جرّب VLC", + "EXTERNAL_OPENING": "جاري حل المشغل…", + "EXTERNAL_STARTED": "المشغل تشعل", + "EXTERNAL_PLAYING": "كيتشغل", + "EXTERNAL_FAILED": "خطأ فالمشغل الخارجي", "ACTION_OPEN_MPV_HINT": "المشغل المضبط", "ACTION_OPEN_VLC_HINT": "المشغل المضبط", "ACTION_COPY_URL": "نسخ رابط البث", @@ -914,9 +914,9 @@ "EPG_PARAMS": "بارامترات EPG", "TIMESHIFT": "مشاهدة مؤجلة", "TVG_ID": "TVG ID", - "TVG_NAME": "TVG name", + "TVG_NAME": "اسم TVG", "TVG_URL": "TVG URL", - "TVG_LOGO": "TVG logo", + "TVG_LOGO": "شعار TVG", "TVG_REC": "TVG rec", "CATCHUP_TYPE": "نوع إعادة المشاهدة", "CATCHUP_SOURCE": "مصدر إعادة المشاهدة", @@ -996,7 +996,7 @@ "ALLOW_PRIVATE_SOURCE": "سمح للمصدر", "ALLOW_PRIVATE_SOURCE_TITLE": "نسمحو لمصدر EPG من شبكة خاصة؟", "ALLOW_PRIVATE_SOURCE_WARNING": "سمح بهادشي غير إلا كنتي كتوثق فمصدر EPG. IPTVnator غادي يسمح غير لهد الرابط EPG بعينو يتاصل بعناوين شبكة خاصة ولا محلية.", - "TRUST_TLS_HOST": "وثق فهاد المضيف", + "TRUST_TLS_HOST": "وثق فالمضيف", "TRUST_TLS_HOST_TITLE": "توثق فشهادة ما صالحة؟", "TRUST_TLS_HOST_WARNING": "كمل غير إلا كنتي كتوثق فهاد المضيف. IPTVnator غادي يسمح بشهادات TLS ما صالحةش لهد المضيف، ولكن باقي المضيفين خاصهم شهادات صالحة.", "CURRENT_PROGRAM": "البرنامج الحالي", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "المفضلة", "RAIL_DOWNLOADS": "التحميلات", "EXTERNAL_PLAYBACK_CLOSE": "سد المشغل", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "خبّي", + "EXTERNAL_PLAYBACK_OPENING": "جاري حل المشغل…", + "EXTERNAL_PLAYBACK_STARTED": "المشغل تشعل", + "EXTERNAL_PLAYBACK_PLAYING": "كيتشغل", + "EXTERNAL_PLAYBACK_FAILED": "خطأ فالمشغل الخارجي", + "EXTERNAL_PLAYBACK_CLOSED": "تسدّ", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "حلّ فقائمة التشغيل", "RAIL_ALL_CHANNELS": "جميع القنوات", "RAIL_GROUPS": "المجموعات", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "عاود جرّب تقرا المصادر المحفوظة. البيانات ديالك ما تمسحوش." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "عاود تحقق", + "M3U_SCOPE": "رابط قائمة التشغيل، ماشي كل قناة بوحدها", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "متوفر", + "disabled": "الحساب معطّل", + "expired": "الاشتراك سالا", + "auth": "الوصول مرفوض؛ حالة الحساب غير مؤكّدة", + "http": "السيرفر رجّع خطأ", + "timeout": "مهلة التحقق سالات", + "network": "ما قدرناش نتاصلو", + "paused": "التحقق من الاتصال موقوف مؤقتاً", + "invalid": "جواب غير متوقع", + "unknown": "ما متحقّقش منو", + "cancelled": "التحقق تلغى", + "checking": "جاري التحقق…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "نقّي المصادر غير النشطة…", + "SCOPE": "جميع المصادر اللي كتخدم بالشبكة فالمكتبة ديالك، كيفما كانو فلاتر الصفحة.", + "CONSEQUENCES": "كيتحذفو غير المصادر اللي اختاريتي. المفضلة والسجل وتقدم التشغيل المحفوظين ديالهم غادي يتحيدو حتى هوما. الملفات اللي تحمّلات كتبقى.", + "SUMMARY": "تفحّصو {{checked}}/{{total}} · متوفرين {{available}} · تحذفو {{deleted}} · تخطّاو {{skipped}} · فشلو {{failed}}", + "SELECT_ALL": "اختار كل المرشّحين", + "SELECT_NONE": "حيد الاختيار من الكل", + "UNTITLED": "مصدر بلا عنوان", + "DELETE": "حذف المختارين · {{count}}", + "CLOSE": "سد", + "STOP": "وقّف من بعد المصدر الحالي", + "CLEANUP_WARNING": "المصدر تحذف؛ ولكن شي جزء من التنقية اللي من بعد فشل", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "حسابات غير نشطة مؤكّدة", + "uncertain": "راجع قبل الحذف", + "skipped": "المصادر اللي تخطّاو", + "results": "نتائج الحذف" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "جاري التحقق…", + "skipped": "كيتشغل، مشغول، تبدّل ولا ما بقاش كاين", + "deleting": "جاري الحذف…", + "deleted": "تحذف", + "failed": "فشل الحذف — اختارو باش تعاود المحاولة" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "تعالجو {{done}} من {{total}} ديال المصادر المختارة" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/by.json b/apps/web/src/assets/i18n/by.json index e33cac4eb..6540fbd6f 100644 --- a/apps/web/src/assets/i18n/by.json +++ b/apps/web/src/assets/i18n/by.json @@ -373,7 +373,7 @@ "REFRESH_EPG": "Абнавіць праграму каналаў (EPG)", "REFRESH_ALL_EPG": "Абнавіць усё", "REMOVE_EPG_SOURCE": "Выдаліць крыніцу EPG", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "Выбраць лакальны файл XMLTV…", "EPG_STATUS_FRESH": "Актуальна", "EPG_STATUS_STALE": "Патрабуе абнаўлення", "EPG_STATUS_ERROR": "Памылка", @@ -385,7 +385,7 @@ "PLAYER_MPV": "Прайгравальнік MPV", "PLAYER_VLC": "VLC", "VIDEO_PLAYER_PLACEHOLDER": "Выберыце са спісу", - "VERSION": "Версія праграмы", + "VERSION": "Версія", "SAVE_CHANGES": "Захаваць", "UNSAVED_CHANGES": "У вас ёсць незахаваныя змены", "DISCARD_CHANGES": "Адмяніць змены", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "Не ўдалося ачысціць дадзеныя EPG. Калі ласка, паспрабуйце яшчэ раз.", "CLEARING_EPG_DATA": "Ачышчаецца...", "EPG_URL_ERROR": "Уведзенае значэнне не з'яўляецца URL-адрасам.", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "Спіс крыніц", + "EPG_SOURCE_FORMATS_HINT": "Падтрымліваюцца як спасылкі на XMLTV (http/https), так і файлы на гэтым камп'ютары — у выглядзе звычайнага .xml або сціснутага gzip .xml.gz. Для лакальных файлаў патрэбны абсалютны шлях або URL выгляду file://.", + "EPG_SOURCE_FORMATS_EXAMPLES": "Прыклады:", "VIDEO_PLAYER_DESCRIPTION": "Выбраць стандартны відэапрайгравальнік", "WEB_PLAYER_SHARED_CONTROLS": "Адзіныя элементы кіравання для вэб-прайгравальнікаў", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "Выкарыстоўваць агульныя элементы кіравання IPTVnator у HTML5, Video.js і ArtPlayer.", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "Гэтая мэта сумяшчальная з даступнымі данымі шыфравання", "ACTION_OPEN_MPV": "Адкрыць у MPV", "ACTION_OPEN_VLC": "Адкрыць у VLC", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "MPV адкрываецца…", + "ACTION_OPENING_VLC": "VLC адкрываецца…", + "ACTION_REOPEN_MPV": "Адкрыць MPV яшчэ раз", + "ACTION_REOPEN_VLC": "Адкрыць VLC яшчэ раз", + "ACTION_RETRY_MPV": "Паспрабаваць MPV яшчэ раз", + "ACTION_RETRY_VLC": "Паспрабаваць VLC яшчэ раз", + "EXTERNAL_OPENING": "Плэер адкрываецца…", + "EXTERNAL_STARTED": "Плэер запушчаны", + "EXTERNAL_PLAYING": "Прайграецца", + "EXTERNAL_FAILED": "Памылка знешняга плэера", "ACTION_OPEN_MPV_HINT": "наладжаны плэер", "ACTION_OPEN_VLC_HINT": "наладжаны плэер", "ACTION_COPY_URL": "Скапіяваць URL патоку", @@ -868,7 +868,7 @@ "SEARCH_GROUPS": "Пошук груп", "UNGROUPED": "Незагрупаваныя", "UNNAMED_CHANNEL": "Канал без назвы", - "FAVORITES": "Выбраныя", + "FAVORITES": "Выбранае", "FAVORITE": "Выбранае", "NO_FAVORITES": "Выбраных каналаў пакуль няма", "USE_STAR_TO_FAVORITE": "Выкарыстоўвайце значок зоркі, каб дадаваць каналы ў выбранае", @@ -1360,7 +1360,7 @@ "COPY_STREAM_URL": "Капіраваць URL-адрас патоку", "NOW_PLAYING": "Зараз прайграецца", "UP_NEXT": "Далей", - "CLOSE_PLAYER": "Закрыць прайгравальнік", + "CLOSE_PLAYER": "Закрыць плэер", "ABOUT": "Пра фільм", "SEASONS_AND_EPISODES": "Сезоны і эпізоды", "SEASON_TAB": "Сезон {{number}}", @@ -1517,7 +1517,7 @@ "ACTION_FAILED": "Дзеянне не выканана", "PAUSE": "Паўза", "RESUME": "Узнавіць", - "CANCEL": "Скасаваць", + "CANCEL": "Адмена", "DOWNLOADED_REVEAL": "Спампавана — паказаць у папцы", "DOWNLOADING_PERCENT": "Спампоўваецца… {{percent}}%", "CANCEL_CONFIRM_TITLE": "Скасаваць спампоўванне", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "Выбранае", "RAIL_DOWNLOADS": "Спампаванні", "EXTERNAL_PLAYBACK_CLOSE": "Закрыць плэер", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "Схаваць", + "EXTERNAL_PLAYBACK_OPENING": "Плэер адкрываецца…", + "EXTERNAL_PLAYBACK_STARTED": "Плэер запушчаны", + "EXTERNAL_PLAYBACK_PLAYING": "Прайграецца", + "EXTERNAL_PLAYBACK_FAILED": "Памылка знешняга плэера", + "EXTERNAL_PLAYBACK_CLOSED": "Закрыты", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "Адкрыць у плэйлісце", "RAIL_ALL_CHANNELS": "Усе каналы", "RAIL_GROUPS": "Групы", @@ -2004,11 +2004,11 @@ "RETRY": "Паўтарыць", "STALKER": { "ACCOUNT_INFO": { - "TITLE": "Інфармацыя пра акаўнт", + "TITLE": "Інфармацыя аб уліковым запісе", "ACCOUNT": "Акаўнт", "PORTAL_INFO": "Партал", "LOGIN": "Лагін", - "STATUS": "Статус", + "STATUS": "Стан", "ACTIVE": "Актыўны", "INACTIVE": "Неактыўны", "TARIFF_PLAN": "Тарыфны план", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "Паўтарыце чытанне захаваных крыніц. Вашы даныя не выдалены." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "Праверыць яшчэ раз", + "M3U_SCOPE": "URL плэйліста, а не асобныя каналы", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "Даступна", + "disabled": "Уліковы запіс адключаны", + "expired": "Тэрмін падпіскі скончыўся", + "auth": "Доступ забаронены; статус уліковага запісу не пацверджаны", + "http": "Сервер вярнуў памылку", + "timeout": "Час чакання праверкі скончыўся", + "network": "Не ўдалося падключыцца", + "paused": "Праверкі падключэння прыпынены", + "invalid": "Нечаканы адказ", + "unknown": "Не праверана", + "cancelled": "Праверка скасавана", + "checking": "Правяраецца…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "Ачысціць неактыўныя крыніцы…", + "SCOPE": "Усе сеткавыя крыніцы ў вашай бібліятэцы, незалежна ад фільтраў старонкі.", + "CONSEQUENCES": "Выдаляюцца толькі выбраныя вамі крыніцы. Захаваныя для іх фаварыты, гісторыя і прагрэс прайгравання таксама будуць выдалены. Спампаваныя файлы захоўваюцца.", + "SUMMARY": "Праверана: {{checked}}/{{total}} · Даступна: {{available}} · Выдалена: {{deleted}} · Прапушчана: {{skipped}} · Памылак: {{failed}}", + "SELECT_ALL": "Выбраць усе прапанаваныя", + "SELECT_NONE": "Зняць выбар", + "UNTITLED": "Крыніца без назвы", + "DELETE": "Выдаліць выбраныя · {{count}}", + "CLOSE": "Закрыць", + "STOP": "Спыніць пасля бягучай крыніцы", + "CLEANUP_WARNING": "Крыніца выдалена; частку дадатковай ачысткі выканаць не ўдалося", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "Пацверджаныя неактыўныя ўліковыя запісы", + "uncertain": "Праверце перад выдаленнем", + "skipped": "Прапушчаныя крыніцы", + "results": "Вынікі выдалення" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "Правяраецца…", + "skipped": "Прайграецца, занятая, змененая або ўжо адсутнічае", + "deleting": "Выдаляецца…", + "deleted": "Выдалена", + "failed": "Не ўдалося выдаліць — выберыце, каб паўтарыць" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "Апрацавана {{done}} з {{total}} выбраных крыніц" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/de.json b/apps/web/src/assets/i18n/de.json index 83e50e90c..d12a5ec18 100644 --- a/apps/web/src/assets/i18n/de.json +++ b/apps/web/src/assets/i18n/de.json @@ -531,7 +531,7 @@ "EXTERNAL_PLAYER_ARGUMENTS_HINT": "Verwende ein Argument pro Zeile. Diese Werte werden vor stream-spezifischen IPTVnator-Optionen angewendet.", "VLC_REUSE_INSTANCE_LABEL": "VLC-Instanz wiederverwenden", "VLC_REUSE_INSTANCE_DESCRIPTION": "Wenn aktiviert, wird dasselbe VLC-Fenster zum Abspielen verschiedener Streams wiederverwendet. Wenn deaktiviert, wird jeder Stream in einem neuen VLC-Fenster geöffnet.", - "REMOTE_CONTROL": "Fernsteuerung", + "REMOTE_CONTROL": "Fernbedienung", "REMOTE_CONTROL_DESCRIPTION": "Fernsteuerung der Anwendung aktivieren.", "REMOTE_CONTROL_PORT": "Fernsteuerungsport", "REMOTE_CONTROL_PORT_DESCRIPTION": "Port für die Fernsteuerung der Anwendung. Standardmäßig wird Port 8765 verwendet.", @@ -1370,7 +1370,7 @@ "BACK_TO_PLAYING_EPISODE": "Zurück zur laufenden Folge", "GRID_VIEW": "Rasteransicht", "LIST_VIEW": "Listenansicht", - "NO_EPISODES_AVAILABLE": "Keine Folgen verfügbar", + "NO_EPISODES_AVAILABLE": "Keine Episoden verfügbar", "NO_EPISODES_AVAILABLE_MESSAGE": "Diese Serie wird von Ihrem Anbieter gelistet, es sind jedoch keine Staffeln oder Folgen zum Abspielen verfügbar.", "SEASON_EMPTY": "Diese Staffel ist leer", "SEASON_EMPTY_MESSAGE": "Diese Staffel wird von Ihrem Anbieter gelistet, es sind jedoch keine abspielbaren Folgen verfügbar.", @@ -1631,7 +1631,7 @@ "SUBTITLE": "Steuern Sie Ihren IPTV-Player aus der Ferne", "UP_CHANNEL": "Vorheriger Kanal", "DOWN_CHANNEL": "Nächster Kanal", - "NOW_PLAYING": "Jetzt läuft", + "NOW_PLAYING": "Wird wiedergegeben", "EXECUTING": "Wird ausgeführt", "SOURCE_M3U": "M3U-Live-TV", "SOURCE_XTREAM": "Xtream-Live-TV", @@ -1791,7 +1791,7 @@ "OPEN_CONTEXT_ACTIONS": "Abschnittsaktionen öffnen", "NO_SECTION_ACTIONS": "Keine Aktionen für diesen Abschnitt", "PLAYLIST_INFO": "Playlist-Info", - "ACCOUNT_INFO": "Kontoinfo", + "ACCOUNT_INFO": "Kontoinformationen", "REFRESH_PLAYLIST": "Playlist aktualisieren", "CLEAR_COMPLETED_DOWNLOADS_ALL": "Abgeschlossene Downloads löschen (alle Playlists)", "CLEAR_COMPLETED_DOWNLOADS_ALL_ARIA": "Abgeschlossene Downloads für alle Playlists löschen", @@ -1924,7 +1924,7 @@ "FILTER_BY_TYPE": "Nach Typ filtern", "ITEM_COUNT_ONE": "1 Element", "ITEM_COUNT_OTHER": "{{count}} Elemente", - "SEARCH": "Suchen", + "SEARCH": "Suche", "SEARCH_CATEGORIES": "Kategorien suchen", "RADIO_CATEGORIES": "Radio-Kategorien" }, @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "Versuche erneut, die gespeicherten Quellen zu lesen. Deine Daten wurden nicht gelöscht." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "Erneut prüfen", + "M3U_SCOPE": "Playlist-URL, nicht einzelne Sender", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "Verfügbar", + "disabled": "Konto deaktiviert", + "expired": "Abonnement abgelaufen", + "auth": "Zugriff verweigert; Kontostatus nicht bestätigt", + "http": "Server hat einen Fehler zurückgegeben", + "timeout": "Zeitüberschreitung bei der Prüfung", + "network": "Keine Verbindung möglich", + "paused": "Verbindungsprüfungen pausiert", + "invalid": "Unerwartete Antwort", + "unknown": "Nicht geprüft", + "cancelled": "Prüfung abgebrochen", + "checking": "Wird geprüft…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "Inaktive Quellen bereinigen…", + "SCOPE": "Alle Netzwerkquellen Ihrer Bibliothek, unabhängig von den Filtern dieser Seite.", + "CONSEQUENCES": "Gelöscht werden nur die von Ihnen ausgewählten Quellen. Deren gespeicherte Favoriten, Verlauf und Wiedergabefortschritt werden ebenfalls entfernt. Heruntergeladene Dateien bleiben erhalten.", + "SUMMARY": "Geprüft {{checked}}/{{total}} · Verfügbar {{available}} · Gelöscht {{deleted}} · Übersprungen {{skipped}} · Fehlgeschlagen {{failed}}", + "SELECT_ALL": "Alle Kandidaten auswählen", + "SELECT_NONE": "Alle abwählen", + "UNTITLED": "Unbenannte Quelle", + "DELETE": "Ausgewählte löschen · {{count}}", + "CLOSE": "Schließen", + "STOP": "Nach der aktuellen Quelle anhalten", + "CLEANUP_WARNING": "Quelle gelöscht; die Bereinigung zugehöriger Daten ist teilweise fehlgeschlagen", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "Als inaktiv bestätigte Konten", + "uncertain": "Vor dem Löschen prüfen", + "skipped": "Übersprungene Quellen", + "results": "Ergebnisse der Löschung" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "Wird geprüft…", + "skipped": "In Wiedergabe, belegt, geändert oder nicht mehr vorhanden", + "deleting": "Wird gelöscht…", + "deleted": "Gelöscht", + "failed": "Löschen fehlgeschlagen — zum Wiederholen auswählen" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "{{done}} von {{total}} ausgewählten Quellen verarbeitet" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/el.json b/apps/web/src/assets/i18n/el.json index 35287143e..559940e19 100644 --- a/apps/web/src/assets/i18n/el.json +++ b/apps/web/src/assets/i18n/el.json @@ -65,7 +65,7 @@ "NO_RESULTS_DESCRIPTION": "Δεν υπάρχουν λίστες αναπαραγωγής που να αντιστοιχούν στην αναζήτησή σας. Δοκιμάστε να προσαρμόσετε τους όρους αναζήτησης ή να καταργήσετε το φίλτρο για να δείτε όλες τις λίστες αναπαραγωγής.", "ADDED_VIA_URL": "Προστέθηκε από ανέβασμα διεύθυνσης URL. URL:", "ADDED_VIA_FILE": "Προστέθηκε από ανέβασμα αρχείου", - "XTREAM_PLAYLIST": "Xtream playlist", + "XTREAM_PLAYLIST": "Λίστα αναπαραγωγής Xtream", "STALKER_PORTAL": "Stalker portal", "CHANNELS": "Κανάλια", "CHANNELS_COUNT": "Κανάλια: {{count}}", @@ -81,7 +81,7 @@ "SEARCH_PLAYLISTS": "Αναζήτηση των λιστών αναπαραγωγής με βάση τον τίτλο", "INFO_DIALOG": { "PLAYLIST_DETAILS": "Λεπτομέρειες λίστας αναπαραγωγής", - "TITLE": "Title", + "TITLE": "Τίτλος", "FROM_URL": "Προστέθηκε από διεύθυνση URL", "IMPORT_DATE": "Προσθήκη ημερομηνίας", "CHANNELS": "Αριθμός καναλιών", @@ -170,7 +170,7 @@ }, "FILE_UPLOAD": { "DRAG_DROP": "Σύρετε και αποθέστε αρχεία εδώ", - "OR": "or", + "OR": "ή", "CHOOSE_PLAYLIST": "επιλέξτε μια λίστα αναπαραγωγής", "BROWSE": "Περιήγηση αρχείων", "REJECTED": "Το αρχείο απορρίφθηκε, η μορφή αρχείου δεν υποστηρίζεται {{filename}}.", @@ -373,7 +373,7 @@ "REFRESH_EPG": "Ανανέωση EPG", "REFRESH_ALL_EPG": "Ανανέωση όλων", "REMOVE_EPG_SOURCE": "Αφαίρεση πηγής EPG", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "Επιλογή τοπικού αρχείου XMLTV…", "EPG_STATUS_FRESH": "Ενημερωμένο", "EPG_STATUS_STALE": "Χρειάζεται ανανέωση", "EPG_STATUS_ERROR": "Αποτυχία", @@ -382,7 +382,7 @@ "PLAYER_VIDEOJS": "Πρόγραμμα αναπαραγωγής Video.js", "PLAYER_ARTPLAYER": "ArtPlayer", "PLAYER_EMBEDDED_MPV": "Ενσωματωμένο MPV (πειραματικό)", - "PLAYER_MPV": "MPV player", + "PLAYER_MPV": "Πρόγραμμα αναπαραγωγής MPV", "PLAYER_VLC": "VLC", "VIDEO_PLAYER_PLACEHOLDER": "Επιλέξτε μια επιλογή", "VERSION": "Έκδοση", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "Αποτυχία διαγραφής δεδομένων EPG. Παρακαλώ δοκιμάστε ξανά.", "CLEARING_EPG_DATA": "Διαγραφή…", "EPG_URL_ERROR": "Η τιμή δεν είναι έγκυρη διεύθυνση URL", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "Λίστα πηγών", + "EPG_SOURCE_FORMATS_HINT": "Υποστηρίζονται τόσο απομακρυσμένοι σύνδεσμοι XMLTV (http/https) όσο και αρχεία σε αυτόν τον υπολογιστή, ως απλό .xml ή συμπιεσμένο με gzip .xml.gz. Για τα τοπικά αρχεία απαιτείται απόλυτη διαδρομή ή URL file://.", + "EPG_SOURCE_FORMATS_EXAMPLES": "Παραδείγματα:", "VIDEO_PLAYER_DESCRIPTION": "Επιλογή προεπιλεγμένου προγράμματος αναπαραγωγής βίντεο", "WEB_PLAYER_SHARED_CONTROLS": "Ενοποιημένα στοιχεία ελέγχου για web players", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "Χρησιμοποιήστε τα κοινά στοιχεία ελέγχου του IPTVnator σε HTML5, Video.js και ArtPlayer.", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "Αυτός ο στόχος είναι συμβατός με τα διαθέσιμα δεδομένα κρυπτογράφησης", "ACTION_OPEN_MPV": "Άνοιγμα σε MPV", "ACTION_OPEN_VLC": "Άνοιγμα σε VLC", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "Άνοιγμα MPV…", + "ACTION_OPENING_VLC": "Άνοιγμα VLC…", + "ACTION_REOPEN_MPV": "Άνοιγμα ξανά σε MPV", + "ACTION_REOPEN_VLC": "Άνοιγμα ξανά σε VLC", + "ACTION_RETRY_MPV": "Δοκιμή ξανά με MPV", + "ACTION_RETRY_VLC": "Δοκιμή ξανά με VLC", + "EXTERNAL_OPENING": "Άνοιγμα player…", + "EXTERNAL_STARTED": "Ο player ξεκίνησε", + "EXTERNAL_PLAYING": "Παίζει", + "EXTERNAL_FAILED": "Σφάλμα εξωτερικού player", "ACTION_OPEN_MPV_HINT": "ρυθμισμένο πρόγραμμα αναπαραγωγής", "ACTION_OPEN_VLC_HINT": "ρυθμισμένο πρόγραμμα αναπαραγωγής", "ACTION_COPY_URL": "Αντιγραφή URL ροής", @@ -1065,7 +1065,7 @@ "ERROR_TITLE": "Δεν ήταν δυνατή η φόρτωση του οδηγού", "ERROR_DESCRIPTION": "Η πηγή EPG δεν απάντησε. Ελέγξτε τη σύνδεσή σας ή ανανεώστε την πηγή.", "RETRY": "Επανάληψη", - "MINUTES_SHORT": "λεπ", + "MINUTES_SHORT": "λεπ.", "ZOOM": "Ζουμ", "ZOOM_DAY": "Επισκόπηση ημέρας", "ZOOM_HOURS": "Ανά ώρα", @@ -1215,7 +1215,7 @@ "SOURCE_TITLE": "Τίτλος πηγής" }, "ACCOUNT_INFO": { - "TITLE": "Πληροφορίες Λογαριασμού", + "TITLE": "Πληροφορίες λογαριασμού", "USER_INFO": "Πληροφορίες χρήστη", "STATUS": "Κατάσταση", "USERNAME": "Όνομα χρήστη", @@ -1360,7 +1360,7 @@ "COPY_STREAM_URL": "Αντιγραφή διεύθηνσης URL ροής", "NOW_PLAYING": "Τώρα παίζει", "UP_NEXT": "Επόμενα", - "CLOSE_PLAYER": "Κλείσιμο προγράμματος αναπαραγωγής", + "CLOSE_PLAYER": "Κλείσιμο player", "ABOUT": "Σχετικά", "SEASONS_AND_EPISODES": "Σεζόν και επεισόδια", "SEASON_TAB": "Σεζόν {{number}}", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "Αγαπημένα", "RAIL_DOWNLOADS": "Λήψεις", "EXTERNAL_PLAYBACK_CLOSE": "Κλείσιμο player", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "Απόκρυψη", + "EXTERNAL_PLAYBACK_OPENING": "Άνοιγμα player…", + "EXTERNAL_PLAYBACK_STARTED": "Ο player ξεκίνησε", + "EXTERNAL_PLAYBACK_PLAYING": "Παίζει", + "EXTERNAL_PLAYBACK_FAILED": "Σφάλμα εξωτερικού player", + "EXTERNAL_PLAYBACK_CLOSED": "Έκλεισε", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "Άνοιγμα στη λίστα αναπαραγωγής", "RAIL_ALL_CHANNELS": "Όλα τα κανάλια", "RAIL_GROUPS": "Ομάδες", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "Δοκιμάστε ξανά την ανάγνωση των αποθηκευμένων πηγών. Τα δεδομένα σας δεν διαγράφηκαν." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "Έλεγχος ξανά", + "M3U_SCOPE": "URL λίστας αναπαραγωγής, όχι μεμονωμένα κανάλια", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "Διαθέσιμη", + "disabled": "Ο λογαριασμός απενεργοποιήθηκε", + "expired": "Η συνδρομή έληξε", + "auth": "Άρνηση πρόσβασης· η κατάσταση του λογαριασμού δεν επιβεβαιώθηκε", + "http": "Ο διακομιστής επέστρεψε σφάλμα", + "timeout": "Λήξη χρονικού ορίου ελέγχου", + "network": "Δεν ήταν δυνατή η σύνδεση", + "paused": "Οι έλεγχοι σύνδεσης έχουν παύσει", + "invalid": "Μη αναμενόμενη απάντηση", + "unknown": "Δεν έχει επαληθευτεί", + "cancelled": "Ο έλεγχος ακυρώθηκε", + "checking": "Έλεγχος…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "Εκκαθάριση ανενεργών πηγών…", + "SCOPE": "Όλες οι δικτυακές πηγές της βιβλιοθήκης σας, ανεξάρτητα από τα φίλτρα της σελίδας.", + "CONSEQUENCES": "Διαγράφονται μόνο οι πηγές που επιλέγετε. Θα αφαιρεθούν επίσης τα αποθηκευμένα αγαπημένα, το ιστορικό και η πρόοδος αναπαραγωγής τους. Τα αρχεία που έχουν ληφθεί διατηρούνται.", + "SUMMARY": "Ελέγχθηκαν {{checked}}/{{total}} · Διαθέσιμες {{available}} · Διαγράφηκαν {{deleted}} · Παραλείφθηκαν {{skipped}} · Απέτυχαν {{failed}}", + "SELECT_ALL": "Επιλογή όλων των υποψηφίων", + "SELECT_NONE": "Αποεπιλογή όλων", + "UNTITLED": "Πηγή χωρίς τίτλο", + "DELETE": "Διαγραφή επιλεγμένων · {{count}}", + "CLOSE": "Κλείσιμο", + "STOP": "Διακοπή μετά την τρέχουσα πηγή", + "CLEANUP_WARNING": "Η πηγή διαγράφηκε, αλλά μέρος της επακόλουθης εκκαθάρισης απέτυχε", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "Επιβεβαιωμένοι ανενεργοί λογαριασμοί", + "uncertain": "Ελέγξτε πριν από τη διαγραφή", + "skipped": "Πηγές που παραλείφθηκαν", + "results": "Αποτελέσματα διαγραφής" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "Έλεγχος…", + "skipped": "Αναπαράγεται, είναι απασχολημένη, έχει αλλάξει ή δεν υπάρχει πλέον", + "deleting": "Διαγραφή…", + "deleted": "Διαγράφηκε", + "failed": "Η διαγραφή απέτυχε — επιλέξτε για νέα προσπάθεια" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "Επεξεργάστηκαν {{done}} από {{total}} επιλεγμένες πηγές" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/es.json b/apps/web/src/assets/i18n/es.json index a137e863a..faac6c3c7 100644 --- a/apps/web/src/assets/i18n/es.json +++ b/apps/web/src/assets/i18n/es.json @@ -292,7 +292,7 @@ "SEARCH_EMPTY_HINT": "Ningún ajuste coincide. Prueba con otra palabra, como reproductor, tema o EPG.", "GENERAL": "General", "GENERAL_SUBTITLE": "Idioma, apariencia y cómo se inicia la aplicación.", - "PLAYBACK": "Reproduccion", + "PLAYBACK": "Reproducción", "EPG_SOURCES": "Fuentes EPG", "EPG_SOURCES_DESCRIPTION": "Agrega una o varias URL como fuentes EPG", "PLAYLIST_EPG_SOURCES_AUTO_SELECTED": "Se seleccionaron automáticamente {{enabled}} de {{detected}} orígenes EPG detectados en la lista para importarlos.", @@ -307,7 +307,7 @@ "RESET_DESCRIPTION": "Elimina permanentemente el contenido guardado en esta aplicación.", "ABOUT": "Acerca de", "NAV_GENERAL": "General", - "NAV_PLAYBACK": "Reproduccion", + "NAV_PLAYBACK": "Reproducción", "NAV_EPG": "EPG", "NAV_REMOTE": "Remoto", "NAV_DATA": "Datos", @@ -373,7 +373,7 @@ "REFRESH_EPG": "Actualizar EPG", "REFRESH_ALL_EPG": "Actualizar todo", "REMOVE_EPG_SOURCE": "Eliminar fuente EPG", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "Elegir un archivo XMLTV local…", "EPG_STATUS_FRESH": "Actualizado", "EPG_STATUS_STALE": "Necesita actualización", "EPG_STATUS_ERROR": "Error", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "No se pudieron borrar los datos EPG. Inténtalo de nuevo.", "CLEARING_EPG_DATA": "Borrando…", "EPG_URL_ERROR": "El valor no es una URL válida.", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "Lista de fuentes", + "EPG_SOURCE_FORMATS_HINT": "Se admiten tanto enlaces XMLTV remotos (http/https) como archivos de este equipo, en .xml normal o comprimidos con gzip (.xml.gz). Los archivos locales necesitan una ruta absoluta o una URL file://.", + "EPG_SOURCE_FORMATS_EXAMPLES": "Ejemplos:", "VIDEO_PLAYER_DESCRIPTION": "Seleccionar reproductor de vídeo predeterminado", "WEB_PLAYER_SHARED_CONTROLS": "Controles unificados para reproductores web", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "Usa los controles compartidos de IPTVnator en HTML5, Video.js y ArtPlayer.", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "Este destino es compatible con los datos de cifrado disponibles", "ACTION_OPEN_MPV": "Abrir en MPV", "ACTION_OPEN_VLC": "Abrir en VLC", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "Abriendo MPV…", + "ACTION_OPENING_VLC": "Abriendo VLC…", + "ACTION_REOPEN_MPV": "Volver a abrir MPV", + "ACTION_REOPEN_VLC": "Volver a abrir VLC", + "ACTION_RETRY_MPV": "Reintentar con MPV", + "ACTION_RETRY_VLC": "Reintentar con VLC", + "EXTERNAL_OPENING": "Abriendo reproductor…", + "EXTERNAL_STARTED": "Reproductor iniciado", + "EXTERNAL_PLAYING": "Reproduciendo", + "EXTERNAL_FAILED": "Error del reproductor externo", "ACTION_OPEN_MPV_HINT": "reproductor configurado", "ACTION_OPEN_VLC_HINT": "reproductor configurado", "ACTION_COPY_URL": "Copiar URL del stream", @@ -962,7 +962,7 @@ "PROGRAM_DIALOG": { "PROGRAM_DETAILS": "Detalles sobre el programa de TV", "TITLE": "Título", - "CATEGORY": "Género", + "CATEGORY": "Categoría", "PARENTAL_RATING_SYSTEM": "Sistema de calificación de contenidos televisivos", "DESCRIPTION": "Descripción", "LANGUAGE": "Idioma", @@ -1546,7 +1546,7 @@ "DOWNLOADING_NOW": "Descargando ahora", "NEEDS_ATTENTION": "Requiere atención", "READY_TO_WATCH": "Listo para ver", - "OFFLINE": "Sin conexión", + "OFFLINE": "Disponible sin conexión", "OFFLINE_BADGE": "Disponible sin conexión", "FILTER": { "LABEL": "Filtrar descargas", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "Favoritos", "RAIL_DOWNLOADS": "Descargas", "EXTERNAL_PLAYBACK_CLOSE": "Cerrar reproductor", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "Ocultar", + "EXTERNAL_PLAYBACK_OPENING": "Abriendo reproductor…", + "EXTERNAL_PLAYBACK_STARTED": "Reproductor iniciado", + "EXTERNAL_PLAYBACK_PLAYING": "Reproduciendo", + "EXTERNAL_PLAYBACK_FAILED": "Error del reproductor externo", + "EXTERNAL_PLAYBACK_CLOSED": "Cerrado", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "Abrir en la lista", "RAIL_ALL_CHANNELS": "Todos los canales", "RAIL_GROUPS": "Grupos", @@ -1841,7 +1841,7 @@ "XTREAM_IMPORT_CANCELLING": "Deteniendo sincronización…", "COMMANDS": { "GLOBAL_SEARCH_LABEL": "Buscar en todas las listas", - "GLOBAL_SEARCH_DESCRIPTION": "Abrir la búsqueda global", + "GLOBAL_SEARCH_DESCRIPTION": "Abrir búsqueda global", "PLAYLIST_SEARCH_LABEL": "Búsqueda avanzada en esta lista", "PLAYLIST_SEARCH_DESCRIPTION": "Abrir búsqueda avanzada de la lista", "OPEN_GLOBAL_FAVORITES_LABEL": "Abrir favoritos globales", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "Vuelve a intentar leer las fuentes guardadas. Tus datos no se han eliminado." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "Comprobar de nuevo", + "M3U_SCOPE": "URL de la lista de reproducción, no cada canal", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "Disponible", + "disabled": "Cuenta desactivada", + "expired": "Suscripción caducada", + "auth": "Acceso denegado; estado de la cuenta sin confirmar", + "http": "El servidor devolvió un error", + "timeout": "Se agotó el tiempo de comprobación", + "network": "No se pudo conectar", + "paused": "Comprobaciones de conexión en pausa", + "invalid": "Respuesta inesperada", + "unknown": "Sin verificar", + "cancelled": "Comprobación cancelada", + "checking": "Comprobando…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "Limpiar fuentes inactivas…", + "SCOPE": "Todas las fuentes de red de tu biblioteca, sin importar los filtros de la página.", + "CONSEQUENCES": "Solo se eliminan las fuentes que selecciones. También se borrarán sus favoritos, historial y progreso de reproducción guardados. Los archivos descargados se conservan.", + "SUMMARY": "Comprobadas {{checked}}/{{total}} · Disponibles {{available}} · Eliminadas {{deleted}} · Omitidas {{skipped}} · Fallidas {{failed}}", + "SELECT_ALL": "Seleccionar todas las candidatas", + "SELECT_NONE": "Deseleccionar todo", + "UNTITLED": "Fuente sin título", + "DELETE": "Eliminar seleccionadas · {{count}}", + "CLOSE": "Cerrar", + "STOP": "Detener tras la fuente actual", + "CLEANUP_WARNING": "Fuente eliminada; falló parte de la limpieza posterior", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "Cuentas inactivas confirmadas", + "uncertain": "Revisar antes de eliminar", + "skipped": "Fuentes omitidas", + "results": "Resultados de la eliminación" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "Comprobando…", + "skipped": "En reproducción, ocupada, modificada o ya no existe", + "deleting": "Eliminando…", + "deleted": "Eliminada", + "failed": "No se pudo eliminar — selecciónala para reintentar" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "Procesadas {{done}} de {{total}} fuentes seleccionadas" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/fr.json b/apps/web/src/assets/i18n/fr.json index 221d3814b..f4e6eb630 100644 --- a/apps/web/src/assets/i18n/fr.json +++ b/apps/web/src/assets/i18n/fr.json @@ -373,7 +373,7 @@ "REFRESH_EPG": "Mise à jour de l'EPG", "REFRESH_ALL_EPG": "Tout actualiser", "REMOVE_EPG_SOURCE": "Supprimer la source EPG", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "Choisir un fichier XMLTV local…", "EPG_STATUS_FRESH": "À jour", "EPG_STATUS_STALE": "À actualiser", "EPG_STATUS_ERROR": "Échec", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "Échec de l'effacement des données EPG. Veuillez réessayer.", "CLEARING_EPG_DATA": "Effacement…", "EPG_URL_ERROR": "La valeur n'est pas une URL valide", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "Liste des sources", + "EPG_SOURCE_FORMATS_HINT": "Les liens XMLTV distants (http/https) et les fichiers présents sur cet ordinateur sont pris en charge, au format .xml simple ou compressé en gzip (.xml.gz). Les fichiers locaux nécessitent un chemin absolu ou une URL file://.", + "EPG_SOURCE_FORMATS_EXAMPLES": "Exemples :", "VIDEO_PLAYER_DESCRIPTION": "Sélectionnez le lecteur vidéo par défaut", "WEB_PLAYER_SHARED_CONTROLS": "Commandes unifiées pour les lecteurs web", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "Utilise les commandes partagées d’IPTVnator dans HTML5, Video.js et ArtPlayer.", @@ -718,7 +718,7 @@ "SEARCH_IN": "Rechercher dans {{title}}", "CLEAR_SEARCH": "Effacer la recherche", "LOAD_SUBTITLE_FILE": "Charger un fichier de sous-titres…", - "SETTINGS": "Réglages", + "SETTINGS": "Paramètres", "UP_NEXT": "À suivre", "UP_NEXT_IN": "dans {{minutes}} min", "UP_NEXT_IN_SECONDS": "dans {{seconds}} s", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "Cette cible est compatible avec les données de chiffrement disponibles", "ACTION_OPEN_MPV": "Ouvrir dans MPV", "ACTION_OPEN_VLC": "Ouvrir dans VLC", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "Ouverture de MPV…", + "ACTION_OPENING_VLC": "Ouverture de VLC…", + "ACTION_REOPEN_MPV": "Rouvrir MPV", + "ACTION_REOPEN_VLC": "Rouvrir VLC", + "ACTION_RETRY_MPV": "Réessayer MPV", + "ACTION_RETRY_VLC": "Réessayer VLC", + "EXTERNAL_OPENING": "Ouverture du lecteur…", + "EXTERNAL_STARTED": "Lecteur démarré", + "EXTERNAL_PLAYING": "En lecture", + "EXTERNAL_FAILED": "Erreur du lecteur externe", "ACTION_OPEN_MPV_HINT": "lecteur configuré", "ACTION_OPEN_VLC_HINT": "lecteur configuré", "ACTION_COPY_URL": "Copier l’URL du flux", @@ -1530,7 +1530,7 @@ "URL_COPIED": "URL de téléchargement copiée dans le presse-papiers", "URL_COPY_FAILED": "Échec de la copie de l'URL dans le presse-papiers", "STATUS": { - "QUEUED": "En attente", + "QUEUED": "En file d'attente", "DOWNLOADING": "En cours", "COMPLETED": "Terminé", "FAILED": "Échec", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "Favoris", "RAIL_DOWNLOADS": "Téléchargements", "EXTERNAL_PLAYBACK_CLOSE": "Fermer le lecteur", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "Masquer", + "EXTERNAL_PLAYBACK_OPENING": "Ouverture du lecteur…", + "EXTERNAL_PLAYBACK_STARTED": "Lecteur démarré", + "EXTERNAL_PLAYBACK_PLAYING": "En lecture", + "EXTERNAL_PLAYBACK_FAILED": "Erreur du lecteur externe", + "EXTERNAL_PLAYBACK_CLOSED": "Fermé", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "Ouvrir dans la liste de lecture", "RAIL_ALL_CHANNELS": "Toutes les chaînes", "RAIL_GROUPS": "Groupes", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "Réessayez de lire les sources enregistrées. Vos données n’ont pas été supprimées." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "Vérifier à nouveau", + "M3U_SCOPE": "URL de la playlist, pas chaque chaîne", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "Disponible", + "disabled": "Compte désactivé", + "expired": "Abonnement expiré", + "auth": "Accès refusé ; statut du compte non confirmé", + "http": "Le serveur a renvoyé une erreur", + "timeout": "Délai de vérification dépassé", + "network": "Connexion impossible", + "paused": "Vérifications de connexion suspendues", + "invalid": "Réponse inattendue", + "unknown": "Non vérifiée", + "cancelled": "Vérification annulée", + "checking": "Vérification…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "Nettoyer les sources inactives…", + "SCOPE": "Toutes les sources réseau de votre bibliothèque, quels que soient les filtres de la page.", + "CONSEQUENCES": "Seules les sources sélectionnées sont supprimées. Leurs favoris, leur historique et leur progression de lecture enregistrés seront également supprimés. Les fichiers téléchargés sont conservés.", + "SUMMARY": "Vérifiées {{checked}}/{{total}} · Disponibles {{available}} · Supprimées {{deleted}} · Ignorées {{skipped}} · Échecs {{failed}}", + "SELECT_ALL": "Sélectionner toutes les sources proposées", + "SELECT_NONE": "Tout désélectionner", + "UNTITLED": "Source sans titre", + "DELETE": "Supprimer la sélection · {{count}}", + "CLOSE": "Fermer", + "STOP": "Arrêter après la source en cours", + "CLEANUP_WARNING": "Source supprimée ; une partie du nettoyage complémentaire a échoué", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "Comptes inactifs confirmés", + "uncertain": "À vérifier avant suppression", + "skipped": "Sources ignorées", + "results": "Résultats de la suppression" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "Vérification…", + "skipped": "En lecture, occupée, modifiée ou disparue", + "deleting": "Suppression…", + "deleted": "Supprimée", + "failed": "Échec de la suppression — sélectionnez pour réessayer" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "Sources sélectionnées traitées : {{done}} sur {{total}}" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/hu.json b/apps/web/src/assets/i18n/hu.json index 260727a68..0e10bd5cf 100644 --- a/apps/web/src/assets/i18n/hu.json +++ b/apps/web/src/assets/i18n/hu.json @@ -146,10 +146,10 @@ "PLAYLIST_UPDATE_FILE_NOT_FOUND": "Nem sikerült frissíteni a lejátszási listát, mert a helyi fájl már nem érhető el. Ellenőrizze a fájl elérési útját, vagy importálja újra a listát.", "PLAYLIST_UPDATE_FILE_ACCESS_ERROR": "Nem sikerült frissíteni a lejátszási listát, mert az alkalmazás már nem fér hozzá a helyi fájlhoz.", "AUTO_REFRESH_UPDATE_SUCCESS": "Sikeresen frissültek a lejátszási listák.", - "AUTO_REFRESH_UPDATE_PARTIAL": "Playlist auto-refresh incomplete: {{updated}} of {{total}} playlists updated, {{failed}} failed.", - "AUTO_REFRESH_UPDATE_PARTIAL_WITH_SKIPPED": "Playlist auto-refresh incomplete: {{updated}} of {{total}} playlists updated, {{failed}} failed, {{skipped}} skipped (no URL or file path).", - "AUTO_REFRESH_UPDATE_FAILED": "Playlist auto-refresh failed. None of the {{total}} playlists could be updated.", - "AUTO_REFRESH_UPDATE_SKIPPED": "Playlist auto-refresh: {{updated}} of {{total}} playlists updated, {{skipped}} skipped (no URL or file path).", + "AUTO_REFRESH_UPDATE_PARTIAL": "A lejátszási listák automatikus frissítése csak részben sikerült: {{total}} lejátszási listából {{updated}} frissítve, {{failed}} sikertelen.", + "AUTO_REFRESH_UPDATE_PARTIAL_WITH_SKIPPED": "A lejátszási listák automatikus frissítése csak részben sikerült: {{total}} lejátszási listából {{updated}} frissítve, {{failed}} sikertelen, {{skipped}} kihagyva (nincs URL-cím vagy elérési út).", + "AUTO_REFRESH_UPDATE_FAILED": "A lejátszási listák automatikus frissítése nem sikerült: a(z) {{total}} lejátszási lista közül egyet sem sikerült frissíteni.", + "AUTO_REFRESH_UPDATE_SKIPPED": "A lejátszási listák automatikus frissítése: {{total}} lejátszási listából {{updated}} frissítve, {{skipped}} kihagyva (nincs URL-cím vagy elérési út).", "AUTO_REFRESH_ENABLED": "Automatikus frissítés bekapcsolva" }, "ADD_PLAYLIST": { @@ -314,7 +314,7 @@ "NAV_BACKUP": "Biztonsági mentés és adatok", "NAV_ABOUT": "Névjegy", "NAV_GROUP_APP": "Alkalmazás", - "NAV_GROUP_LIBRARY": "Könyvtár", + "NAV_GROUP_LIBRARY": "Médiatár", "NAV_GROUP_DEVICES": "Eszközök", "CARD_APPEARANCE": "Megjelenés", "CARD_STARTUP": "Indítás", @@ -373,7 +373,7 @@ "REFRESH_EPG": "EPG frissítése", "REFRESH_ALL_EPG": "Összes frissítése", "REMOVE_EPG_SOURCE": "EPG-forrás eltávolítása", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "Helyi XMLTV-fájl kiválasztása…", "EPG_STATUS_FRESH": "Naprakész", "EPG_STATUS_STALE": "Frissítendő", "EPG_STATUS_ERROR": "Sikertelen", @@ -418,14 +418,14 @@ "EPG_DATA_CLEAR_FAILED": "Nem sikerült törölni az EPG-adatokat. Próbálja újra.", "CLEARING_EPG_DATA": "Törlés…", "EPG_URL_ERROR": "A megadott érték nem érvényes URL-cím", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "Forráslista", + "EPG_SOURCE_FORMATS_HINT": "Távoli XMLTV-hivatkozások (http/https) és a számítógépen tárolt fájlok egyaránt használhatók, egyszerű .xml vagy gzip-tömörítésű .xml.gz formátumban. Helyi fájlnál abszolút elérési utat vagy file:// URL-címet adjon meg.", + "EPG_SOURCE_FORMATS_EXAMPLES": "Példák:", "VIDEO_PLAYER_DESCRIPTION": "Az alapértelmezett videólejátszó kiválasztása", "WEB_PLAYER_SHARED_CONTROLS": "Egységes vezérlők a webes lejátszókhoz", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "Az IPTVnator közös vezérlőinek használata a HTML5-, Video.js- és ArtPlayer-lejátszóban.", - "PLAYER_AMBIENT_MODE": "Ambient background fill", - "PLAYER_AMBIENT_MODE_DESCRIPTION": "Fill the space around the player with a blurred, dimmed poster instead of plain black bars.", + "PLAYER_AMBIENT_MODE": "Környezeti háttérkitöltés", + "PLAYER_AMBIENT_MODE_DESCRIPTION": "A lejátszó körüli terület kitöltése elmosott, elsötétített borítóképpel egyszerű fekete sávok helyett.", "PLAY_TRAILERS_IN_BACKGROUND": "Előzetesek lejátszása a részletek hátterében", "PLAY_TRAILERS_IN_BACKGROUND_DESCRIPTION": "Néhány másodperccel egy film vagy sorozat megnyitása után az előzetes némán lejátszódik a részletek mögött. Forgalomkorlátos kapcsolaton és csökkentett mozgásnál kikapcsolva.", "PLAYER_UP_NEXT_RAIL": "„Következik” epizódsáv", @@ -559,7 +559,7 @@ "DASHBOARD_RAIL_CONTINUE_DESCRIPTION": "A legutóbb megtekintett filmek és sorozatok megjelenítése borítókártyákkal.", "DASHBOARD_RAIL_LIVE_FAVORITES": "Élőben a kedvenc csatornákon", "DASHBOARD_RAIL_LIVE_FAVORITES_DESCRIPTION": "Kedvenc élő csatornáinak megjelenítése az aktuális műsor előrehaladását jelző sávval.", - "DASHBOARD_RAIL_RECENT_LIVE": "Legutóbb nézett élő csatornák", + "DASHBOARD_RAIL_RECENT_LIVE": "Legutóbb nézett élő TV", "DASHBOARD_RAIL_RECENT_LIVE_DESCRIPTION": "A nemrég megnyitott élő csatornák megjelenítése az aktuális műsor előrehaladását jelző sávval.", "DASHBOARD_RAIL_FAVORITE_VOD": "Kedvenc filmek és sorozatok", "DASHBOARD_RAIL_FAVORITE_VOD_DESCRIPTION": "A kedvencként megjelölt filmek és sorozatok megjelenítése borítókártyákkal.", @@ -657,7 +657,7 @@ }, "EMBEDDED_MPV": { "PLAYER": { - "BACK": "Back", + "BACK": "Vissza", "RETRY": "Újrapróbálkozás", "STALLED": "Az adatfolyam indítása a vártnál hosszabb ideig tart.", "PLAYBACK_FAILED": "Nem sikerült lejátszani a tartalmat a beágyazott MPV-vel.", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "Ez a cél kompatibilis az elérhető titkosítási adatokkal", "ACTION_OPEN_MPV": "Megnyitás MPV-ben", "ACTION_OPEN_VLC": "Megnyitás VLC-ben", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "MPV megnyitása…", + "ACTION_OPENING_VLC": "VLC megnyitása…", + "ACTION_REOPEN_MPV": "Újbóli megnyitás MPV-ben", + "ACTION_REOPEN_VLC": "Újbóli megnyitás VLC-ben", + "ACTION_RETRY_MPV": "Újrapróbálkozás MPV-vel", + "ACTION_RETRY_VLC": "Újrapróbálkozás VLC-vel", + "EXTERNAL_OPENING": "Lejátszó megnyitása…", + "EXTERNAL_STARTED": "A lejátszó elindult", + "EXTERNAL_PLAYING": "Lejátszás alatt", + "EXTERNAL_FAILED": "Hiba a külső lejátszóban", "ACTION_OPEN_MPV_HINT": "beállított lejátszó", "ACTION_OPEN_VLC_HINT": "beállított lejátszó", "ACTION_COPY_URL": "Adatfolyam URL-jének másolása", @@ -1076,19 +1076,19 @@ } }, "EPG_MAPPING_DIALOG": { - "TITLE": "Map EPG Channel", - "SUBTITLE": "Manually select an EPG channel for \"{{channelName}}\"", - "SEARCH_PLACEHOLDER": "Search EPG channels...", - "CURRENT_MAPPING": "Current mapping", - "NO_MAPPING": "No EPG mapping set", - "SAVE": "Save mapping", - "REMOVE": "Remove mapping", - "CLOSE": "Close", - "NO_RESULTS": "No EPG channels found", - "SEARCH_HINT": "Type at least {{min}} characters to search", - "SAVED": "EPG mapping saved", - "REMOVED": "EPG mapping removed", - "SAVE_FAILED": "Could not update the EPG mapping" + "TITLE": "EPG-csatorna hozzárendelése", + "SUBTITLE": "Válasszon ki kézzel egy EPG-csatornát ehhez: „{{channelName}}”", + "SEARCH_PLACEHOLDER": "Keresés az EPG-csatornák között…", + "CURRENT_MAPPING": "Jelenlegi hozzárendelés", + "NO_MAPPING": "Nincs beállított EPG-hozzárendelés", + "SAVE": "Hozzárendelés mentése", + "REMOVE": "Hozzárendelés eltávolítása", + "CLOSE": "Bezárás", + "NO_RESULTS": "Nem található EPG-csatorna", + "SEARCH_HINT": "A kereséshez írjon be legalább {{min}} karaktert", + "SAVED": "EPG-hozzárendelés mentve", + "REMOVED": "EPG-hozzárendelés eltávolítva", + "SAVE_FAILED": "Nem sikerült frissíteni az EPG-hozzárendelést" }, "LANGUAGES": { "ARABIC": "العربية", @@ -1143,8 +1143,8 @@ "ACTORS": "Szereplők", "DIRECTOR": "Rendező", "SIMILAR": "Hasonló tartalmak", - "CREW_JOB_DIRECTOR": "Director", - "CREW_JOB_CREATOR": "Creator", + "CREW_JOB_DIRECTOR": "Rendező", + "CREW_JOB_CREATOR": "Alkotó", "ACTOR_FILMOGRAPHY": "Filmográfia", "ACTOR_FILTER_ALL": "Összes", "ACTOR_SCOPE_THIS_PORTAL": "Ez a portál", @@ -1215,7 +1215,7 @@ "SOURCE_TITLE": "Forrás címe" }, "ACCOUNT_INFO": { - "TITLE": "Fiók adatai", + "TITLE": "Fiókadatok", "USER_INFO": "Felhasználói adatok", "STATUS": "Állapot", "USERNAME": "Felhasználónév", @@ -1272,7 +1272,7 @@ "REMOVED_FROM_FAVORITES": "Eltávolítva a kedvencek közül", "ADDED_TO_FAVORITES": "Hozzáadva a kedvencekhez", "FAVORITES": "Kedvencek", - "RECENTLY_VIEWED": "Legutóbb megtekintett tartalmak", + "RECENTLY_VIEWED": "Legutóbb megtekintett", "THIS_PLAYLIST": "Ez a lejátszási lista", "ALL_PLAYLISTS": "Összes lejátszási lista", "LIVE_TV": "Élő tévéadás", @@ -1382,11 +1382,11 @@ "LOADING_SEASONS": "Évadok betöltése…", "LOADING_EPISODES": "Epizódok betöltése…", "EPISODES_LOAD_FAILED": "Az epizódokat nem sikerült betölteni.", - "LOADING_ALL_CHANNELS": "Loading full channel list…", - "REFRESH_CHANNEL_LIST": "Refresh channel list", - "NO_CHANNELS_IN_CATEGORY": "No channels in this category", - "ITEM": "item", - "ITEMS": "items", + "LOADING_ALL_CHANNELS": "A teljes csatornalista betöltése…", + "REFRESH_CHANNEL_LIST": "Csatornalista frissítése", + "NO_CHANNELS_IN_CATEGORY": "Ebben a kategóriában nincs csatorna", + "ITEM": "elem", + "ITEMS": "elem", "NO_EPISODES": "Nincs elérhető epizód", "ALL_RADIO": "Összes rádióadó", "MULTI_SOURCE": { @@ -1514,9 +1514,9 @@ "SOURCE_PLAYLIST_MISSING": "Ez a letöltés már nem nyitható meg a médiatárban, mert eltávolították a forrásként szolgáló lejátszási listát.", "FILE_NOT_FOUND": "A letöltött fájl már nem érhető el a lemezen.", "FILE_ACTION_ERROR": "Nem sikerült végrehajtani a fájlműveletet.", - "ACTION_FAILED": "Action failed", - "PAUSE": "Pause", - "RESUME": "Resume", + "ACTION_FAILED": "A művelet nem sikerült", + "PAUSE": "Szünet", + "RESUME": "Folytatás", "CANCEL": "Mégse", "DOWNLOADED_REVEAL": "Letöltve — megjelenítés a mappában", "DOWNLOADING_PERCENT": "Letöltés… {{percent}}%", @@ -1530,12 +1530,12 @@ "URL_COPIED": "A letöltési URL-cím a vágólapra került", "URL_COPY_FAILED": "Nem sikerült az URL-címet a vágólapra másolni", "STATUS": { - "QUEUED": "Várakozik", + "QUEUED": "Várólistán", "DOWNLOADING": "Letöltés folyamatban", "COMPLETED": "Befejeződött", "FAILED": "Sikertelen", "CANCELED": "Megszakítva", - "PAUSED": "Paused", + "PAUSED": "Szüneteltetve", "FILE_MISSING": "Hiányzik a fájl", "RECORDING": "Felvétel folyamatban", "INTERRUPTED": "Megszakadt" @@ -1745,7 +1745,7 @@ "RAIL_DASHBOARD": "Vezérlőpult", "RAIL_SOURCES": "Források", "RAIL_GLOBAL_FAVORITES": "Kedvencek", - "RAIL_GLOBAL_RECENT": "Megtekintési előzmények", + "RAIL_GLOBAL_RECENT": "Legutóbb megtekintett", "RAIL_GLOBAL_SEARCH": "Globális keresés", "RAIL_SETTINGS": "Beállítások", "OPEN_SETTINGS": "Beállítások megnyitása", @@ -1755,16 +1755,16 @@ "RAIL_SERIES": "Sorozatok", "RAIL_RECENTLY_ADDED": "Legutóbb hozzáadott", "RAIL_SEARCH": "Részletes keresés", - "RAIL_RECENT": "Megtekintési előzmények", + "RAIL_RECENT": "Legutóbb megtekintett", "RAIL_FAVORITES": "Kedvencek", "RAIL_DOWNLOADS": "Letöltések", "EXTERNAL_PLAYBACK_CLOSE": "Lejátszó bezárása", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "Elrejtés", + "EXTERNAL_PLAYBACK_OPENING": "Lejátszó megnyitása…", + "EXTERNAL_PLAYBACK_STARTED": "A lejátszó elindult", + "EXTERNAL_PLAYBACK_PLAYING": "Lejátszás alatt", + "EXTERNAL_PLAYBACK_FAILED": "Hiba a külső lejátszóban", + "EXTERNAL_PLAYBACK_CLOSED": "Bezárva", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "Megnyitás a lejátszási listában", "RAIL_ALL_CHANNELS": "Összes csatorna", "RAIL_GROUPS": "Csoportok", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "Próbáld újra beolvasni a mentett forrásokat. Az adataid nem lettek törölve." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "Újbóli ellenőrzés", + "M3U_SCOPE": "A lejátszási lista URL-címe, nem az egyes csatornák", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "Elérhető", + "disabled": "A fiók le van tiltva", + "expired": "Az előfizetés lejárt", + "auth": "Hozzáférés megtagadva; a fiók állapota nem erősíthető meg", + "http": "A kiszolgáló hibával válaszolt", + "timeout": "Időtúllépés az ellenőrzéskor", + "network": "Nem sikerült kapcsolódni", + "paused": "Kapcsolatellenőrzés szüneteltetve", + "invalid": "Váratlan válasz", + "unknown": "Nincs ellenőrizve", + "cancelled": "Ellenőrzés megszakítva", + "checking": "Ellenőrzés…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "Inaktív források eltávolítása…", + "SCOPE": "A médiatár összes hálózati forrása, az oldalon beállított szűrőktől függetlenül.", + "CONSEQUENCES": "Csak a kijelölt források törlődnek, a hozzájuk mentett kedvencekkel, megtekintési előzményekkel és lejátszási pozíciókkal együtt. A letöltött fájlok megmaradnak.", + "SUMMARY": "Ellenőrizve: {{checked}}/{{total}} · Elérhető: {{available}} · Törölve: {{deleted}} · Kihagyva: {{skipped}} · Sikertelen: {{failed}}", + "SELECT_ALL": "Minden javasolt forrás kijelölése", + "SELECT_NONE": "Összes kijelölésének megszüntetése", + "UNTITLED": "Névtelen forrás", + "DELETE": "Kijelöltek törlése · {{count}}", + "CLOSE": "Bezárás", + "STOP": "Leállítás a jelenlegi forrás után", + "CLEANUP_WARNING": "A forrás törölve, de a kapcsolódó adatok egy részét nem sikerült eltávolítani", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "Megerősítetten inaktív fiókok", + "uncertain": "Törlés előtt ellenőrizendő", + "skipped": "Kihagyott források", + "results": "A törlés eredménye" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "Ellenőrzés…", + "skipped": "Lejátszás alatt, foglalt, módosult vagy már nem létezik", + "deleting": "Törlés…", + "deleted": "Törölve", + "failed": "A törlés nem sikerült — jelölje ki az újrapróbáláshoz" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "{{total}} kijelölt forrásból {{done}} feldolgozva" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/it.json b/apps/web/src/assets/i18n/it.json index 952892477..b989b1ff9 100644 --- a/apps/web/src/assets/i18n/it.json +++ b/apps/web/src/assets/i18n/it.json @@ -286,7 +286,7 @@ "PORTAL_CONNECTIVITY_GUARD": "Sospendi le richieste ai portali non disponibili", "PORTAL_CONNECTIVITY_GUARD_DESCRIPTION": "Dopo ripetuti errori di connessione, sospendi le nuove richieste Xtream e Stalker per 30 secondi. Prova a disattivare se un portale diventa intermittentemente non disponibile. Si applica al salvataggio, senza riavvio.", "PORTAL_CONNECTIVITY_GUARD_DISABLED": "Ogni richiesta verrà eseguita indipendentemente. I server non disponibili potrebbero impiegare più tempo a segnalare un errore.", - "TITLE": "Impostazioni IPTVnator", + "TITLE": "Impostazioni", "SEARCH_RESULTS_TITLE": "Risultati della ricerca", "SEARCH_RESULTS_COUNT": "Impostazioni corrispondenti a “{{query}}”: {{count}}", "SEARCH_EMPTY_HINT": "Nessuna impostazione corrisponde. Prova un'altra parola, ad esempio riproduttore, tema o EPG.", @@ -373,7 +373,7 @@ "REFRESH_EPG": "Aggiorna EPG", "REFRESH_ALL_EPG": "Aggiorna tutto", "REMOVE_EPG_SOURCE": "Rimuovi sorgente EPG", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "Scegli un file XMLTV locale…", "EPG_STATUS_FRESH": "Aggiornato", "EPG_STATUS_STALE": "Da aggiornare", "EPG_STATUS_ERROR": "Errore", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "Impossibile cancellare i dati EPG. Riprova.", "CLEARING_EPG_DATA": "Cancellazione…", "EPG_URL_ERROR": "Il valore non è una URL valida", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "Elenco sorgenti", + "EPG_SOURCE_FORMATS_HINT": "Sono supportati sia i link XMLTV remoti (http/https) sia i file su questo computer, come .xml semplice o .xml.gz compresso con gzip. I file locali richiedono un percorso assoluto o un URL file://.", + "EPG_SOURCE_FORMATS_EXAMPLES": "Esempi:", "VIDEO_PLAYER_DESCRIPTION": "Seleziona lettore video predefinito", "WEB_PLAYER_SHARED_CONTROLS": "Controlli unificati per i player web", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "Usa i controlli condivisi di IPTVnator in HTML5, Video.js e ArtPlayer.", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "Questa destinazione è compatibile con i dati di crittografia disponibili", "ACTION_OPEN_MPV": "Apri in MPV", "ACTION_OPEN_VLC": "Apri in VLC", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "Apertura di MPV…", + "ACTION_OPENING_VLC": "Apertura di VLC…", + "ACTION_REOPEN_MPV": "Riapri MPV", + "ACTION_REOPEN_VLC": "Riapri VLC", + "ACTION_RETRY_MPV": "Riprova con MPV", + "ACTION_RETRY_VLC": "Riprova con VLC", + "EXTERNAL_OPENING": "Apertura del lettore…", + "EXTERNAL_STARTED": "Lettore avviato", + "EXTERNAL_PLAYING": "In riproduzione", + "EXTERNAL_FAILED": "Errore del lettore esterno", "ACTION_OPEN_MPV_HINT": "player configurato", "ACTION_OPEN_VLC_HINT": "player configurato", "ACTION_COPY_URL": "Copia URL dello stream", @@ -1360,7 +1360,7 @@ "COPY_STREAM_URL": "Copia URL streaming", "NOW_PLAYING": "In riproduzione", "UP_NEXT": "A seguire", - "CLOSE_PLAYER": "Chiudi lettore", + "CLOSE_PLAYER": "Chiudi player", "ABOUT": "Info", "SEASONS_AND_EPISODES": "Stagioni ed episodi", "SEASON_TAB": "Stagione {{number}}", @@ -1627,7 +1627,7 @@ "ARCHIVE_RESTART_NOTE": "Dopo un’interruzione, il download dall’archivio ricomincia dall’inizio." }, "REMOTE_CONTROL": { - "TITLE": "Controllo remoto", + "TITLE": "Telecomando", "SUBTITLE": "Controlla il tuo lettore IPTV da remoto", "UP_CHANNEL": "Canale precedente", "DOWN_CHANNEL": "Canale successivo", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "Preferiti", "RAIL_DOWNLOADS": "Download", "EXTERNAL_PLAYBACK_CLOSE": "Chiudi player", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "Nascondi", + "EXTERNAL_PLAYBACK_OPENING": "Apertura del lettore…", + "EXTERNAL_PLAYBACK_STARTED": "Lettore avviato", + "EXTERNAL_PLAYBACK_PLAYING": "In riproduzione", + "EXTERNAL_PLAYBACK_FAILED": "Errore del lettore esterno", + "EXTERNAL_PLAYBACK_CLOSED": "Chiuso", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "Apri nella playlist", "RAIL_ALL_CHANNELS": "Tutti i canali", "RAIL_GROUPS": "Gruppi", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "Riprova a leggere le sorgenti salvate. I tuoi dati non sono stati eliminati." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "Controlla di nuovo", + "M3U_SCOPE": "URL della playlist, non i singoli canali", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "Disponibile", + "disabled": "Account disattivato", + "expired": "Abbonamento scaduto", + "auth": "Accesso negato; stato dell’account non confermato", + "http": "Il server ha restituito un errore", + "timeout": "Tempo di verifica scaduto", + "network": "Impossibile connettersi", + "paused": "Verifiche della connessione in pausa", + "invalid": "Risposta inattesa", + "unknown": "Non verificata", + "cancelled": "Verifica annullata", + "checking": "Verifica in corso…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "Pulisci sorgenti inattive…", + "SCOPE": "Tutte le sorgenti di rete della tua libreria, indipendentemente dai filtri della pagina.", + "CONSEQUENCES": "Vengono eliminate solo le sorgenti che selezioni. Verranno rimossi anche i relativi preferiti salvati, la cronologia e l’avanzamento di riproduzione. I file scaricati vengono conservati.", + "SUMMARY": "Verificate {{checked}}/{{total}} · Disponibili {{available}} · Eliminate {{deleted}} · Ignorate {{skipped}} · Non riuscite {{failed}}", + "SELECT_ALL": "Seleziona tutti i candidati", + "SELECT_NONE": "Deseleziona tutti", + "UNTITLED": "Sorgente senza titolo", + "DELETE": "Elimina selezionate · {{count}}", + "CLOSE": "Chiudi", + "STOP": "Interrompi dopo la sorgente attuale", + "CLEANUP_WARNING": "Sorgente eliminata; alcune operazioni di pulizia successive non sono riuscite", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "Account confermati come inattivi", + "uncertain": "Da verificare prima di eliminare", + "skipped": "Sorgenti ignorate", + "results": "Risultati dell’eliminazione" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "Verifica in corso…", + "skipped": "In riproduzione, occupata, modificata o non più presente", + "deleting": "Eliminazione in corso…", + "deleted": "Eliminata", + "failed": "Eliminazione non riuscita — seleziona per riprovare" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "Elaborate {{done}} su {{total}} sorgenti selezionate" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/ja.json b/apps/web/src/assets/i18n/ja.json index d93db9bd4..1999c648d 100644 --- a/apps/web/src/assets/i18n/ja.json +++ b/apps/web/src/assets/i18n/ja.json @@ -373,7 +373,7 @@ "REFRESH_EPG": "EPGを更新", "REFRESH_ALL_EPG": "すべて更新", "REMOVE_EPG_SOURCE": "EPGソースを削除", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "ローカルの XMLTV ファイルを選択…", "EPG_STATUS_FRESH": "最新", "EPG_STATUS_STALE": "更新が必要", "EPG_STATUS_ERROR": "失敗", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "EPGデータのクリアに失敗しました。もう一度お試しください。", "CLEARING_EPG_DATA": "クリア中…", "EPG_URL_ERROR": "有効なURLではありません", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "ソース一覧", + "EPG_SOURCE_FORMATS_HINT": "リモートの XMLTV リンク(http/https)とこのコンピューター上のファイルの両方に対応しています。形式は通常の .xml または gzip 圧縮の .xml.gz です。ローカルファイルには絶対パスまたは file:// URL を指定してください。", + "EPG_SOURCE_FORMATS_EXAMPLES": "例:", "VIDEO_PLAYER_DESCRIPTION": "デフォルトのビデオプレーヤーを選択", "WEB_PLAYER_SHARED_CONTROLS": "Webプレーヤーの統一コントロール", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "HTML5、Video.js、ArtPlayerでIPTVnator共通のコントロールを使用します。", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "この対象は利用可能な暗号化データに対応しています", "ACTION_OPEN_MPV": "MPV で開く", "ACTION_OPEN_VLC": "VLC で開く", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "MPV を起動中…", + "ACTION_OPENING_VLC": "VLC を起動中…", + "ACTION_REOPEN_MPV": "MPV でもう一度開く", + "ACTION_REOPEN_VLC": "VLC でもう一度開く", + "ACTION_RETRY_MPV": "MPV で再試行", + "ACTION_RETRY_VLC": "VLC で再試行", + "EXTERNAL_OPENING": "プレーヤーを起動中…", + "EXTERNAL_STARTED": "プレーヤーを起動しました", + "EXTERNAL_PLAYING": "再生中", + "EXTERNAL_FAILED": "外部プレーヤーのエラー", "ACTION_OPEN_MPV_HINT": "設定済みのプレーヤー", "ACTION_OPEN_VLC_HINT": "設定済みのプレーヤー", "ACTION_COPY_URL": "ストリーム URL をコピー", @@ -914,9 +914,9 @@ "EPG_PARAMS": "EPGパラメーター", "TIMESHIFT": "タイムシフト", "TVG_ID": "TVG ID", - "TVG_NAME": "TVG name", + "TVG_NAME": "TVG 名", "TVG_URL": "TVG URL", - "TVG_LOGO": "TVG logo", + "TVG_LOGO": "TVG ロゴ", "TVG_REC": "TVG rec", "CATCHUP_TYPE": "見逃し配信タイプ", "CATCHUP_SOURCE": "見逃し配信ソース", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "お気に入り", "RAIL_DOWNLOADS": "ダウンロード", "EXTERNAL_PLAYBACK_CLOSE": "プレーヤーを閉じる", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "非表示", + "EXTERNAL_PLAYBACK_OPENING": "プレーヤーを起動中…", + "EXTERNAL_PLAYBACK_STARTED": "プレーヤーを起動しました", + "EXTERNAL_PLAYBACK_PLAYING": "再生中", + "EXTERNAL_PLAYBACK_FAILED": "外部プレーヤーのエラー", + "EXTERNAL_PLAYBACK_CLOSED": "終了しました", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "プレイリストで開く", "RAIL_ALL_CHANNELS": "すべてのチャンネル", "RAIL_GROUPS": "グループ", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "保存したソースの読み込みを再試行してください。データは削除されていません。" }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "もう一度確認", + "M3U_SCOPE": "プレイリスト URL のみ(個々のチャンネルは対象外)", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "利用可能", + "disabled": "アカウントが無効化されています", + "expired": "サブスクリプションの有効期限が切れています", + "auth": "アクセスが拒否されました(アカウントの状態は未確認)", + "http": "サーバーがエラーを返しました", + "timeout": "確認がタイムアウトしました", + "network": "接続できませんでした", + "paused": "接続確認を一時停止中", + "invalid": "予期しない応答", + "unknown": "未確認", + "cancelled": "確認をキャンセルしました", + "checking": "確認中…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "無効なソースを整理…", + "SCOPE": "ページのフィルターに関係なく、ライブラリ内のすべてのネットワークソースが対象です。", + "CONSEQUENCES": "選択したソースのみを削除します。保存済みのお気に入り、履歴、再生位置も削除されます。ダウンロード済みのファイルは残ります。", + "SUMMARY": "確認済み {{checked}}/{{total}} · 利用可能 {{available}} · 削除 {{deleted}} · スキップ {{skipped}} · 失敗 {{failed}}", + "SELECT_ALL": "候補をすべて選択", + "SELECT_NONE": "すべて解除", + "UNTITLED": "無題のソース", + "DELETE": "選択項目を削除 · {{count}}", + "CLOSE": "閉じる", + "STOP": "現在のソースの処理後に停止", + "CLEANUP_WARNING": "ソースは削除されましたが、一部の後処理に失敗しました", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "無効が確認されたアカウント", + "uncertain": "削除前に確認が必要", + "skipped": "スキップされたソース", + "results": "削除結果" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "確認中…", + "skipped": "再生中、処理中、変更済み、またはすでに存在しません", + "deleting": "削除中…", + "deleted": "削除済み", + "failed": "削除に失敗しました — 選択して再試行" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "選択した {{total}} 件のソースのうち、{{done}} 件を処理しました" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/ko.json b/apps/web/src/assets/i18n/ko.json index 424f49caa..03e6288b1 100644 --- a/apps/web/src/assets/i18n/ko.json +++ b/apps/web/src/assets/i18n/ko.json @@ -136,9 +136,9 @@ "DELETING_CONTENT": "캐시된 콘텐츠를 제거하는 중...", "DELETING_CATEGORIES": "캐시된 카테고리를 제거하는 중..." }, - "GLOBAL_FAVORITES": "Global favorites", - "GLOBAL_FAVORITES_DESCRIPTION": "Auto-generated playlist with aggregated favorites from all playlists", - "MY_PLAYLISTS": "My playlists", + "GLOBAL_FAVORITES": "전체 즐겨찾기", + "GLOBAL_FAVORITES_DESCRIPTION": "모든 재생목록의 즐겨찾기를 모아 자동으로 생성한 재생목록입니다", + "MY_PLAYLISTS": "내 재생목록", "MY_PLAYLISTS_SUBTITLE": "사용 가능한 모든 재생목록", "PLAYLIST_UPDATE_SUCCESS": "성공! 재생목록이 성공적으로 업데이트되었습니다.", "PLAYLIST_UPDATE_ERROR": "재생목록 정보 업데이트 중 오류가 발생했습니다.", @@ -194,7 +194,7 @@ "TRUST_TLS_HOST_WARNING": "이 플레이리스트 호스트를 신뢰하는 경우에만 계속하세요. IPTVnator는 이 호스트의 유효하지 않은 TLS 인증서를 허용하지만, 다른 호스트에는 계속 유효한 인증서가 필요합니다." }, "TEXT_IMPORT": { - "LABEL": "Insert m3u(8) playlist as text" + "LABEL": "m3u(8) 재생목록을 텍스트로 붙여넣기" }, "XTREAM_PLAYLIST": { "TITLE": "재생목록 제목", @@ -368,12 +368,12 @@ "HERO_DESCRIPTION": "현재 작업 공간 스타일을 잃지 않고 한 곳에서 재생, 가이드, 원격 접근 및 데이터 처리를 조정할 수 있습니다.", "SUBTITLE": "응용 프로그램의 구성을 변경하십시오", "DESCRIPTION": "아래 목록에서 옵션을 적용하고 저장 버튼으로 확인하십시오.", - "EPG_URL_LABEL": "EPG Url (*.xml or *.xml.gz)", + "EPG_URL_LABEL": "EPG 소스(URL 또는 로컬 파일, *.xml 또는 *.xml.gz)", "EPG_URL_PLACEHOLDER": "URL을 입력하십시오", "REFRESH_EPG": "EPG 새로 고침", "REFRESH_ALL_EPG": "모두 새로 고침", "REMOVE_EPG_SOURCE": "EPG 소스 제거", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "로컬 XMLTV 파일 선택…", "EPG_STATUS_FRESH": "최신", "EPG_STATUS_STALE": "새로 고침 필요", "EPG_STATUS_ERROR": "실패", @@ -405,7 +405,7 @@ "SETTINGS_SAVE_FAILED": "설정을 저장하지 못했습니다. 앱을 다시 시작하면 변경 사항이 사라집니다.", "SETTINGS_LOAD_FAILED": "저장된 설정을 불러오지 못했습니다. 기본값을 표시합니다. 앱이 중복 실행되고 있지 않은지 확인하세요.", "THEME": "테마", - "SHOW_CAPTIONS": "Show subtitles", + "SHOW_CAPTIONS": "자막 표시", "SHOW_DASHBOARD": "대시보드 표시", "SHOW_DASHBOARD_DESCRIPTION": "작업 공간 레일에서 대시보드를 사용할 수 있게 유지합니다. 비활성화하면 소스가 작업 공간의 첫 번째 페이지가 됩니다.", "ADD_EPG_SOURCE": "EPG 소스 추가", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "EPG 데이터를 지우지 못했습니다. 다시 시도해 주세요.", "CLEARING_EPG_DATA": "지우는 중…", "EPG_URL_ERROR": "값이 유효한 URL이 아닙니다.", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "소스 목록", + "EPG_SOURCE_FORMATS_HINT": "원격 XMLTV 링크(http/https)와 이 컴퓨터의 파일을 모두 지원하며, 일반 .xml 또는 gzip으로 압축된 .xml.gz 형식을 사용할 수 있습니다. 로컬 파일은 절대 경로나 file:// URL로 지정해야 합니다.", + "EPG_SOURCE_FORMATS_EXAMPLES": "예시:", "VIDEO_PLAYER_DESCRIPTION": "기본 비디오 플레이어 선택", "WEB_PLAYER_SHARED_CONTROLS": "웹 플레이어 통합 컨트롤", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "HTML5, Video.js 및 ArtPlayer에서 IPTVnator 공통 컨트롤을 사용합니다.", @@ -480,7 +480,7 @@ "SUPPORT_TITLE": "프로젝트 후원", "SUPPORT_DESCRIPTION": "IPTVnator는 무료 오픈 소스 프로젝트로 공개적으로 개발되고 있습니다. 일상적으로 사용하신다면, 작은 기여로 프로젝트를 계속 유지하고 향후 방향을 만드는 데 도움이 됩니다 — 감사합니다.", "SUPPORT_SPONSORS_HINT": "정기 또는 일회성", - "SUPPORT_KOFI_HINT": "Buy me a coffee", + "SUPPORT_KOFI_HINT": "커피 한 잔으로 후원", "EPG_NOTE": "현재 EPG는 IPTVnator의 Electron 데스크톱 버전에서만 사용할 수 있습니다.", "EPG_NOTE_URL_TEXT": "여기에서 확인", "IMPORT_EXPORT_DATA": "플레이리스트 백업 가져오기/내보내기", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "이 대상은 사용 가능한 암호화 데이터와 호환됩니다", "ACTION_OPEN_MPV": "MPV에서 열기", "ACTION_OPEN_VLC": "VLC에서 열기", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "MPV 여는 중…", + "ACTION_OPENING_VLC": "VLC 여는 중…", + "ACTION_REOPEN_MPV": "MPV에서 다시 열기", + "ACTION_REOPEN_VLC": "VLC에서 다시 열기", + "ACTION_RETRY_MPV": "MPV로 다시 시도", + "ACTION_RETRY_VLC": "VLC로 다시 시도", + "EXTERNAL_OPENING": "플레이어 여는 중…", + "EXTERNAL_STARTED": "플레이어 시작됨", + "EXTERNAL_PLAYING": "재생 중", + "EXTERNAL_FAILED": "외부 플레이어 오류", "ACTION_OPEN_MPV_HINT": "설정된 플레이어", "ACTION_OPEN_VLC_HINT": "설정된 플레이어", "ACTION_COPY_URL": "스트림 URL 복사", @@ -951,13 +951,13 @@ "CLOSE_FILTER": "필터 닫기", "SEARCH_PROGRAMS": "프로그램 검색", "CLOSE_PROGRAM_SEARCH": "프로그램 검색 닫기", - "LIVE_STREAM": "Live stream", + "LIVE_STREAM": "라이브 스트림", "ARCHIVE_PLAYBACK_UNAVAILABLE_TITLE": "아카이브 재생을 사용할 수 없습니다", "ARCHIVE_PLAYBACK_UNAVAILABLE_DESCRIPTION": "이 공급자는 채널의 편성 이력을 제공하지만 재생 가능한 아카이브/Catchup 재생은 제공하지 않습니다.", "EPG_NOT_AVAILABLE_CHANNEL_DESCRIPTION": "앱 설정에서 EPG 목록 URL을 추가하거나 변경해 주세요.", "FETCH_EPG": "EPG 데이터 가져 오기...", - "ERROR": "Ooops, EPG could not be loaded.", - "DOWNLOAD_SUCCESS": "EPG was successfully downloaded.", + "ERROR": "앗, EPG를 불러오지 못했습니다.", + "DOWNLOAD_SUCCESS": "EPG를 성공적으로 다운로드했습니다.", "NO_PROGRAM_INFO": "프로그램 정보가 없습니다", "PROGRAM_DIALOG": { "PROGRAM_DETAILS": "TV 프로그램에 대한 세부 사항", @@ -1111,16 +1111,16 @@ "GREEK": "Ελληνικά", "HUNGARIAN": "Magyar" }, - "YES": "Yes", - "NO": "No", + "YES": "예", + "NO": "아니요", "MENU": { - "OPEN": "Open menu", - "SUPPORT_ARIA": "Support IPTVnator on GitHub", - "SETTINGS_ARIA": "Open settings", - "BUG_REPORT": "Report a bug", - "WHAT_IS_NEW": "What is new", - "ABOUT": "About", - "ABOUT_ARIA": "About the application", + "OPEN": "메뉴 열기", + "SUPPORT_ARIA": "GitHub에서 IPTVnator 후원", + "SETTINGS_ARIA": "설정 열기", + "BUG_REPORT": "버그 신고", + "WHAT_IS_NEW": "새로운 내용", + "ABOUT": "정보", + "ABOUT_ARIA": "애플리케이션 정보", "SUPPORT_PROJECT": "지원사업" }, "ABOUT": { @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "즐겨찾기", "RAIL_DOWNLOADS": "다운로드", "EXTERNAL_PLAYBACK_CLOSE": "플레이어 닫기", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "숨기기", + "EXTERNAL_PLAYBACK_OPENING": "플레이어 여는 중…", + "EXTERNAL_PLAYBACK_STARTED": "플레이어 시작됨", + "EXTERNAL_PLAYBACK_PLAYING": "재생 중", + "EXTERNAL_PLAYBACK_FAILED": "외부 플레이어 오류", + "EXTERNAL_PLAYBACK_CLOSED": "종료됨", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "재생목록에서 열기", "RAIL_ALL_CHANNELS": "모든 채널", "RAIL_GROUPS": "그룹", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "저장된 소스를 다시 읽어 보세요. 데이터는 삭제되지 않았습니다." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "다시 확인", + "M3U_SCOPE": "개별 채널이 아닌 재생목록 URL만 확인합니다", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "사용 가능", + "disabled": "계정 비활성화됨", + "expired": "구독 만료됨", + "auth": "접근 거부됨, 계정 상태 미확인", + "http": "서버에서 오류 반환", + "timeout": "확인 시간 초과", + "network": "연결할 수 없음", + "paused": "연결 확인 일시 중지됨", + "invalid": "예기치 않은 응답", + "unknown": "확인되지 않음", + "cancelled": "확인 취소됨", + "checking": "확인 중…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "비활성 소스 정리…", + "SCOPE": "페이지 필터와 관계없이 라이브러리의 모든 네트워크 소스가 대상입니다.", + "CONSEQUENCES": "선택한 소스만 삭제됩니다. 해당 소스에 저장된 즐겨찾기, 시청 기록, 재생 진행률도 함께 제거됩니다. 다운로드한 파일은 유지됩니다.", + "SUMMARY": "확인 {{checked}}/{{total}} · 사용 가능 {{available}} · 삭제 {{deleted}} · 건너뜀 {{skipped}} · 실패 {{failed}}", + "SELECT_ALL": "모든 후보 선택", + "SELECT_NONE": "모두 선택 해제", + "UNTITLED": "제목 없는 소스", + "DELETE": "선택 항목 삭제 · {{count}}", + "CLOSE": "닫기", + "STOP": "현재 소스 처리 후 중지", + "CLEANUP_WARNING": "소스는 삭제되었지만 일부 후속 정리에 실패했습니다", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "비활성으로 확인된 계정", + "uncertain": "삭제 전 검토 필요", + "skipped": "건너뛴 소스", + "results": "삭제 결과" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "확인 중…", + "skipped": "재생 중, 작업 중, 변경됨 또는 이미 없음", + "deleting": "삭제 중…", + "deleted": "삭제됨", + "failed": "삭제 실패 — 다시 시도하려면 선택하세요" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "선택한 소스 {{total}}개 중 {{done}}개 처리됨" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/nl.json b/apps/web/src/assets/i18n/nl.json index 375422f3a..69f8d27c5 100644 --- a/apps/web/src/assets/i18n/nl.json +++ b/apps/web/src/assets/i18n/nl.json @@ -2,7 +2,7 @@ "CANCEL": "Annuleren", "CLEAR": "Wissen", "CLEAR_SEARCH": "Zoekopdracht wissen", - "CLOSE": "Afsluiten", + "CLOSE": "Sluiten", "REMOVE": "Verwijderen", "BACK": "Terug", "SHOW_MORE": "Meer", @@ -85,7 +85,7 @@ "FROM_URL": "Toegevoegd vanuit URL", "IMPORT_DATE": "Importdatum", "CHANNELS": "Aantal kanalen", - "CLOSE": "Afsluiten", + "CLOSE": "Sluiten", "SAVE": "Opslaan", "USER_AGENT": "User-agent", "ORIGINAL_FILENAME": "Oorspronkelijke bestandsnaam", @@ -373,7 +373,7 @@ "REFRESH_EPG": "EPG vernieuwen", "REFRESH_ALL_EPG": "Alles vernieuwen", "REMOVE_EPG_SOURCE": "EPG-bron verwijderen", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "Lokaal XMLTV-bestand kiezen…", "EPG_STATUS_FRESH": "Up-to-date", "EPG_STATUS_STALE": "Verouderd", "EPG_STATUS_ERROR": "Mislukt", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "Wissen van EPG-gegevens mislukt. Probeer het opnieuw.", "CLEARING_EPG_DATA": "Wissen…", "EPG_URL_ERROR": "De opgegeven waarde is geen geldige URL.", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "Bronnenlijst", + "EPG_SOURCE_FORMATS_HINT": "Zowel externe XMLTV-links (http/https) als bestanden op deze computer worden ondersteund, als gewone .xml of met gzip gecomprimeerde .xml.gz. Lokale bestanden vereisen een absoluut pad of een file://-URL.", + "EPG_SOURCE_FORMATS_EXAMPLES": "Voorbeelden:", "VIDEO_PLAYER_DESCRIPTION": "Selecteer de standaard videospeler", "WEB_PLAYER_SHARED_CONTROLS": "Uniforme bediening voor webspelers", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "Gebruik de gedeelde IPTVnator-bediening in HTML5, Video.js en ArtPlayer.", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "Dit doel is compatibel met de beschikbare versleutelingsgegevens", "ACTION_OPEN_MPV": "Openen in MPV", "ACTION_OPEN_VLC": "Openen in VLC", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "MPV wordt geopend…", + "ACTION_OPENING_VLC": "VLC wordt geopend…", + "ACTION_REOPEN_MPV": "MPV opnieuw openen", + "ACTION_REOPEN_VLC": "VLC opnieuw openen", + "ACTION_RETRY_MPV": "MPV opnieuw proberen", + "ACTION_RETRY_VLC": "VLC opnieuw proberen", + "EXTERNAL_OPENING": "Speler wordt geopend…", + "EXTERNAL_STARTED": "Speler gestart", + "EXTERNAL_PLAYING": "Speelt nu", + "EXTERNAL_FAILED": "Fout in externe speler", "ACTION_OPEN_MPV_HINT": "ingestelde speler", "ACTION_OPEN_VLC_HINT": "ingestelde speler", "ACTION_COPY_URL": "Stream-URL kopiëren", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "Favorieten", "RAIL_DOWNLOADS": "Downloads", "EXTERNAL_PLAYBACK_CLOSE": "Speler sluiten", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "Verbergen", + "EXTERNAL_PLAYBACK_OPENING": "Speler wordt geopend…", + "EXTERNAL_PLAYBACK_STARTED": "Speler gestart", + "EXTERNAL_PLAYBACK_PLAYING": "Speelt nu", + "EXTERNAL_PLAYBACK_FAILED": "Fout in externe speler", + "EXTERNAL_PLAYBACK_CLOSED": "Afgesloten", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "Openen in afspeellijst", "RAIL_ALL_CHANNELS": "Alle kanalen", "RAIL_GROUPS": "Groepen", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "Probeer je opgeslagen bronnen opnieuw te lezen. Je gegevens zijn niet verwijderd." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "Opnieuw controleren", + "M3U_SCOPE": "Afspeellijst-URL, niet de afzonderlijke kanalen", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "Beschikbaar", + "disabled": "Account uitgeschakeld", + "expired": "Abonnement verlopen", + "auth": "Toegang geweigerd; accountstatus niet bevestigd", + "http": "Server gaf een fout terug", + "timeout": "Time-out bij controle", + "network": "Kan geen verbinding maken", + "paused": "Verbindingscontroles gepauzeerd", + "invalid": "Onverwacht antwoord", + "unknown": "Niet geverifieerd", + "cancelled": "Controle geannuleerd", + "checking": "Wordt gecontroleerd…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "Inactieve bronnen opschonen…", + "SCOPE": "Alle netwerkbronnen in de bibliotheek, ongeacht de paginafilters.", + "CONSEQUENCES": "Alleen de geselecteerde bronnen worden verwijderd. Hun opgeslagen favorieten, kijkgeschiedenis en afspeelvoortgang worden ook verwijderd. Gedownloade bestanden blijven behouden.", + "SUMMARY": "Gecontroleerd {{checked}}/{{total}} · Beschikbaar {{available}} · Verwijderd {{deleted}} · Overgeslagen {{skipped}} · Mislukt {{failed}}", + "SELECT_ALL": "Alle kandidaten selecteren", + "SELECT_NONE": "Alles deselecteren", + "UNTITLED": "Naamloze bron", + "DELETE": "Geselecteerde verwijderen · {{count}}", + "CLOSE": "Sluiten", + "STOP": "Stoppen na huidige bron", + "CLEANUP_WARNING": "Bron verwijderd; een deel van de aanvullende opschoning is mislukt", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "Bevestigde inactieve accounts", + "uncertain": "Controleren vóór verwijderen", + "skipped": "Overgeslagen bronnen", + "results": "Resultaten van verwijderen" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "Wordt gecontroleerd…", + "skipped": "Wordt afgespeeld, bezig, gewijzigd of niet meer aanwezig", + "deleting": "Wordt verwijderd…", + "deleted": "Verwijderd", + "failed": "Verwijderen mislukt — selecteer om opnieuw te proberen" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "{{done}} van {{total}} geselecteerde bronnen verwerkt" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/pl.json b/apps/web/src/assets/i18n/pl.json index c95253de5..c3eaf6069 100644 --- a/apps/web/src/assets/i18n/pl.json +++ b/apps/web/src/assets/i18n/pl.json @@ -373,7 +373,7 @@ "REFRESH_EPG": "Odśwież EPG", "REFRESH_ALL_EPG": "Odśwież wszystko", "REMOVE_EPG_SOURCE": "Usuń źródło EPG", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "Wybierz lokalny plik XMLTV…", "EPG_STATUS_FRESH": "Aktualne", "EPG_STATUS_STALE": "Wymaga odświeżenia", "EPG_STATUS_ERROR": "Błąd", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "Nie udało się wyczyścić danych EPG. Spróbuj ponownie.", "CLEARING_EPG_DATA": "Czyszczenie…", "EPG_URL_ERROR": "Wartość nie jest prawidłowym URL", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "Lista źródeł", + "EPG_SOURCE_FORMATS_HINT": "Obsługiwane są zarówno zdalne linki XMLTV (http/https), jak i pliki na tym komputerze, w postaci zwykłego pliku .xml lub skompresowanego gzipem .xml.gz. Dla plików lokalnych podaj ścieżkę bezwzględną lub URL file://.", + "EPG_SOURCE_FORMATS_EXAMPLES": "Przykłady:", "VIDEO_PLAYER_DESCRIPTION": "Wybierz domyślny odtwarzacz wideo", "WEB_PLAYER_SHARED_CONTROLS": "Ujednolicone sterowanie odtwarzaczami internetowymi", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "Używaj wspólnych elementów sterowania IPTVnator w HTML5, Video.js i ArtPlayer.", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "Ten cel jest zgodny z dostępnymi danymi szyfrowania", "ACTION_OPEN_MPV": "Otwórz w MPV", "ACTION_OPEN_VLC": "Otwórz w VLC", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "Otwieranie MPV…", + "ACTION_OPENING_VLC": "Otwieranie VLC…", + "ACTION_REOPEN_MPV": "Otwórz MPV ponownie", + "ACTION_REOPEN_VLC": "Otwórz VLC ponownie", + "ACTION_RETRY_MPV": "Spróbuj ponownie w MPV", + "ACTION_RETRY_VLC": "Spróbuj ponownie w VLC", + "EXTERNAL_OPENING": "Otwieranie odtwarzacza…", + "EXTERNAL_STARTED": "Odtwarzacz uruchomiony", + "EXTERNAL_PLAYING": "Odtwarzanie", + "EXTERNAL_FAILED": "Błąd zewnętrznego odtwarzacza", "ACTION_OPEN_MPV_HINT": "skonfigurowany odtwarzacz", "ACTION_OPEN_VLC_HINT": "skonfigurowany odtwarzacz", "ACTION_COPY_URL": "Kopiuj URL strumienia", @@ -1547,7 +1547,7 @@ "NEEDS_ATTENTION": "Wymaga uwagi", "READY_TO_WATCH": "Gotowe do oglądania", "OFFLINE": "Dostępne offline", - "OFFLINE_BADGE": "Tryb offline", + "OFFLINE_BADGE": "Dostępne offline", "FILTER": { "LABEL": "Filtruj pobrania", "ALL": "Wszystkie", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "Ulubione", "RAIL_DOWNLOADS": "Pobrane", "EXTERNAL_PLAYBACK_CLOSE": "Zamknij odtwarzacz", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "Ukryj", + "EXTERNAL_PLAYBACK_OPENING": "Otwieranie odtwarzacza…", + "EXTERNAL_PLAYBACK_STARTED": "Odtwarzacz uruchomiony", + "EXTERNAL_PLAYBACK_PLAYING": "Odtwarzanie", + "EXTERNAL_PLAYBACK_FAILED": "Błąd zewnętrznego odtwarzacza", + "EXTERNAL_PLAYBACK_CLOSED": "Zamknięty", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "Otwórz na liście odtwarzania", "RAIL_ALL_CHANNELS": "Wszystkie kanały", "RAIL_GROUPS": "Grupy", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "Spróbuj ponownie odczytać zapisane źródła. Twoje dane nie zostały usunięte." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "Sprawdź ponownie", + "M3U_SCOPE": "URL listy odtwarzania, nie poszczególne kanały", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "Dostępne", + "disabled": "Konto wyłączone", + "expired": "Subskrypcja wygasła", + "auth": "Odmowa dostępu; status konta niepotwierdzony", + "http": "Serwer zwrócił błąd", + "timeout": "Przekroczono limit czasu sprawdzania", + "network": "Nie udało się połączyć", + "paused": "Sprawdzanie połączenia wstrzymane", + "invalid": "Nieoczekiwana odpowiedź", + "unknown": "Niezweryfikowane", + "cancelled": "Sprawdzanie anulowane", + "checking": "Sprawdzanie…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "Wyczyść nieaktywne źródła…", + "SCOPE": "Wszystkie źródła sieciowe w Twojej bibliotece, niezależnie od filtrów strony.", + "CONSEQUENCES": "Usuwane są tylko zaznaczone źródła. Ich zapisane ulubione, historia i postęp odtwarzania również zostaną usunięte. Pobrane pliki zostaną zachowane.", + "SUMMARY": "Sprawdzono {{checked}}/{{total}} · Dostępne {{available}} · Usunięto {{deleted}} · Pominięto {{skipped}} · Nieudane {{failed}}", + "SELECT_ALL": "Zaznacz wszystkie proponowane", + "SELECT_NONE": "Odznacz wszystkie", + "UNTITLED": "Źródło bez tytułu", + "DELETE": "Usuń zaznaczone · {{count}}", + "CLOSE": "Zamknij", + "STOP": "Zatrzymaj po bieżącym źródle", + "CLEANUP_WARNING": "Źródło usunięte; nie udało się wyczyścić części powiązanych danych", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "Konta potwierdzone jako nieaktywne", + "uncertain": "Sprawdź przed usunięciem", + "skipped": "Pominięte źródła", + "results": "Wyniki usuwania" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "Sprawdzanie…", + "skipped": "Odtwarzane, zajęte, zmienione lub już nieistniejące", + "deleting": "Usuwanie…", + "deleted": "Usunięte", + "failed": "Nie udało się usunąć — zaznacz, aby ponowić" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "Przetworzono {{done}} z {{total}} zaznaczonych źródeł" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/pt.json b/apps/web/src/assets/i18n/pt.json index 055472192..ab15f4548 100644 --- a/apps/web/src/assets/i18n/pt.json +++ b/apps/web/src/assets/i18n/pt.json @@ -373,7 +373,7 @@ "REFRESH_EPG": "Atualizar EPG", "REFRESH_ALL_EPG": "Atualizar tudo", "REMOVE_EPG_SOURCE": "Remover fonte EPG", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "Escolher um arquivo XMLTV local…", "EPG_STATUS_FRESH": "Atualizado", "EPG_STATUS_STALE": "Necessita atualização", "EPG_STATUS_ERROR": "Falha", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "Falha ao limpar os dados de EPG. Tente novamente.", "CLEARING_EPG_DATA": "Limpando…", "EPG_URL_ERROR": "O valor não é uma URL válida", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "Lista de fontes", + "EPG_SOURCE_FORMATS_HINT": "São aceitos tanto links XMLTV remotos (http/https) quanto arquivos neste computador, em .xml simples ou .xml.gz compactado com gzip. Arquivos locais precisam de um caminho absoluto ou de uma URL file://.", + "EPG_SOURCE_FORMATS_EXAMPLES": "Exemplos:", "VIDEO_PLAYER_DESCRIPTION": "Selecionar reprodutor de vídeo padrão", "WEB_PLAYER_SHARED_CONTROLS": "Controlos unificados para leitores web", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "Usa os controlos partilhados do IPTVnator em HTML5, Video.js e ArtPlayer.", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "Este destino é compatível com os dados de criptografia disponíveis", "ACTION_OPEN_MPV": "Abrir no MPV", "ACTION_OPEN_VLC": "Abrir no VLC", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "Abrindo o MPV…", + "ACTION_OPENING_VLC": "Abrindo o VLC…", + "ACTION_REOPEN_MPV": "Abrir o MPV novamente", + "ACTION_REOPEN_VLC": "Abrir o VLC novamente", + "ACTION_RETRY_MPV": "Tentar novamente no MPV", + "ACTION_RETRY_VLC": "Tentar novamente no VLC", + "EXTERNAL_OPENING": "Abrindo reprodutor…", + "EXTERNAL_STARTED": "Reprodutor iniciado", + "EXTERNAL_PLAYING": "Reproduzindo", + "EXTERNAL_FAILED": "Erro no reprodutor externo", "ACTION_OPEN_MPV_HINT": "reprodutor configurado", "ACTION_OPEN_VLC_HINT": "reprodutor configurado", "ACTION_COPY_URL": "Copiar URL do stream", @@ -1217,7 +1217,7 @@ "ACCOUNT_INFO": { "TITLE": "Informações da conta", "USER_INFO": "Informações do usuário", - "STATUS": "Status", + "STATUS": "Estado", "USERNAME": "Nome de usuário", "ACTIVE_CONNECTIONS": "Conexões ativas", "CREATED": "Criada", @@ -1455,7 +1455,7 @@ "OPEN_IN_EXTERNAL_PLAYER": "Abrir no reprodutor externo", "SHOW_IN_CATEGORY": "Mostrar na categoria", "HIDE_FROM_CONTINUE_WATCHING": "Ocultar de «Continuar assistindo»", - "GROUP_WATCHING": "Assistindo", + "GROUP_WATCHING": "Visualização", "GROUP_SOURCE": "Fonte", "DURATION_HOURS_MINUTES": "{{hours}} h {{minutes}} min", "DURATION_MINUTES": "{{minutes}} min", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "Favoritos", "RAIL_DOWNLOADS": "Downloads", "EXTERNAL_PLAYBACK_CLOSE": "Fechar reprodutor", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "Ocultar", + "EXTERNAL_PLAYBACK_OPENING": "Abrindo reprodutor…", + "EXTERNAL_PLAYBACK_STARTED": "Reprodutor iniciado", + "EXTERNAL_PLAYBACK_PLAYING": "Reproduzindo", + "EXTERNAL_PLAYBACK_FAILED": "Erro no reprodutor externo", + "EXTERNAL_PLAYBACK_CLOSED": "Fechado", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "Abrir na playlist", "RAIL_ALL_CHANNELS": "Todos os canais", "RAIL_GROUPS": "Grupos", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "Tente ler novamente as fontes guardadas. Os seus dados não foram eliminados." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "Verificar novamente", + "M3U_SCOPE": "URL da playlist, não canais individuais", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "Disponível", + "disabled": "Conta desativada", + "expired": "Assinatura expirada", + "auth": "Acesso negado; status da conta não confirmado", + "http": "O servidor retornou um erro", + "timeout": "Tempo de verificação esgotado", + "network": "Não foi possível conectar", + "paused": "Verificações de conexão pausadas", + "invalid": "Resposta inesperada", + "unknown": "Não verificada", + "cancelled": "Verificação cancelada", + "checking": "Verificando…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "Limpar fontes inativas…", + "SCOPE": "Todas as fontes de rede da sua biblioteca, independentemente dos filtros da página.", + "CONSEQUENCES": "Somente as fontes que você selecionar serão excluídas. Os favoritos, o histórico e o progresso de reprodução salvos dessas fontes também serão removidos. Os arquivos baixados são mantidos.", + "SUMMARY": "Verificadas {{checked}}/{{total}} · Disponíveis {{available}} · Excluídas {{deleted}} · Ignoradas {{skipped}} · Falhas {{failed}}", + "SELECT_ALL": "Selecionar todas as candidatas", + "SELECT_NONE": "Desmarcar todos", + "UNTITLED": "Fonte sem título", + "DELETE": "Excluir selecionadas · {{count}}", + "CLOSE": "Fechar", + "STOP": "Parar após a fonte atual", + "CLEANUP_WARNING": "Fonte excluída; parte da limpeza complementar falhou", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "Contas inativas confirmadas", + "uncertain": "Revisar antes de excluir", + "skipped": "Fontes ignoradas", + "results": "Resultados da exclusão" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "Verificando…", + "skipped": "Em reprodução, ocupada, alterada ou não existe mais", + "deleting": "Excluindo…", + "deleted": "Excluída", + "failed": "Falha ao excluir — selecione para tentar novamente" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "Processadas {{done}} de {{total}} fontes selecionadas" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/ru.json b/apps/web/src/assets/i18n/ru.json index 1461bf5ae..91867c5de 100644 --- a/apps/web/src/assets/i18n/ru.json +++ b/apps/web/src/assets/i18n/ru.json @@ -307,7 +307,7 @@ "RESET_DESCRIPTION": "Навсегда удалить контент, сохранённый в этом приложении.", "ABOUT": "О приложении", "NAV_GENERAL": "Общие", - "NAV_PLAYBACK": "Плеер", + "NAV_PLAYBACK": "Воспроизведение", "NAV_EPG": "EPG", "NAV_REMOTE": "Пульт", "NAV_DATA": "Данные", @@ -385,7 +385,7 @@ "PLAYER_MPV": "MPV-плеер", "PLAYER_VLC": "VLC", "VIDEO_PLAYER_PLACEHOLDER": "Выберите из списка", - "VERSION": "Версия приложения", + "VERSION": "Версия", "SAVE_CHANGES": "Сохранить", "UNSAVED_CHANGES": "У вас есть несохранённые изменения", "DISCARD_CHANGES": "Отменить изменения", @@ -531,7 +531,7 @@ "EXTERNAL_PLAYER_ARGUMENTS_HINT": "Используйте один аргумент на строку. Эти значения применяются перед параметрами IPTVnator, специфичными для потока.", "VLC_REUSE_INSTANCE_LABEL": "Переиспользовать экземпляр VLC", "VLC_REUSE_INSTANCE_DESCRIPTION": "Когда включено, одно и то же окно VLC будет использоваться для воспроизведения разных потоков. Когда отключено, каждый поток открывается в новом окне VLC.", - "REMOTE_CONTROL": "Удалённое управление", + "REMOTE_CONTROL": "Дистанционное управление", "REMOTE_CONTROL_DESCRIPTION": "Включить удалённое управление приложением.", "REMOTE_CONTROL_PORT": "Порт удалённого управления", "REMOTE_CONTROL_PORT_DESCRIPTION": "Порт для удалённого управления приложением. По умолчанию используется порт 8765.", @@ -868,7 +868,7 @@ "SEARCH_GROUPS": "Поиск групп", "UNGROUPED": "Негруппированные", "UNNAMED_CHANNEL": "Канал без названия", - "FAVORITES": "Избранные", + "FAVORITES": "Избранное", "FAVORITE": "Избранное", "NO_FAVORITES": "Избранных каналов пока нет", "USE_STAR_TO_FAVORITE": "Используйте иконку звезды, чтобы добавлять каналы в избранное", @@ -2056,7 +2056,7 @@ "CONSEQUENCES": "Удаляются только выбранные источники, вместе с их избранным, историей и прогрессом воспроизведения. Скачанные файлы сохраняются.", "SUMMARY": "Проверено {{checked}}/{{total}} · Доступно {{available}} · Удалено {{deleted}} · Пропущено {{skipped}} · Ошибок {{failed}}", "SELECT_ALL": "Выбрать всех кандидатов", - "SELECT_NONE": "Снять выбор", + "SELECT_NONE": "Снять выделение", "UNTITLED": "Источник без названия", "DELETE": "Удалить выбранные · {{count}}", "CLOSE": "Закрыть", diff --git a/apps/web/src/assets/i18n/tr.json b/apps/web/src/assets/i18n/tr.json index ad0f228a0..f54f32a7d 100644 --- a/apps/web/src/assets/i18n/tr.json +++ b/apps/web/src/assets/i18n/tr.json @@ -373,7 +373,7 @@ "REFRESH_EPG": "EPG'yi yenile", "REFRESH_ALL_EPG": "Tümünü yenile", "REMOVE_EPG_SOURCE": "EPG kaynağını kaldır", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "Yerel XMLTV dosyası seç…", "EPG_STATUS_FRESH": "Güncel", "EPG_STATUS_STALE": "Yenilenmeli", "EPG_STATUS_ERROR": "Başarısız", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "EPG verileri temizlenemedi. Lütfen tekrar deneyin.", "CLEARING_EPG_DATA": "Temizleniyor…", "EPG_URL_ERROR": "Girilen değer geçerli bir URL değildir", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "Kaynak listesi", + "EPG_SOURCE_FORMATS_HINT": "Hem uzak XMLTV bağlantıları (http/https) hem de bu bilgisayardaki dosyalar, düz .xml veya gzip ile sıkıştırılmış .xml.gz biçiminde desteklenir. Yerel dosyalar için mutlak bir yol veya file:// URL’si gerekir.", + "EPG_SOURCE_FORMATS_EXAMPLES": "Örnekler:", "VIDEO_PLAYER_DESCRIPTION": "Varsayılan video oynatıcıyı seçin", "WEB_PLAYER_SHARED_CONTROLS": "Web oynatıcıları için birleşik kontroller", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "HTML5, Video.js ve ArtPlayer'da IPTVnator'ın ortak kontrollerini kullan.", @@ -805,16 +805,16 @@ "REASON_COMPATIBLE_DRM_PATH": "Bu hedef kullanılabilir şifreleme verileriyle uyumludur", "ACTION_OPEN_MPV": "MPV’de aç", "ACTION_OPEN_VLC": "VLC’de aç", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "MPV açılıyor…", + "ACTION_OPENING_VLC": "VLC açılıyor…", + "ACTION_REOPEN_MPV": "MPV’yi yeniden aç", + "ACTION_REOPEN_VLC": "VLC’yi yeniden aç", + "ACTION_RETRY_MPV": "MPV ile yeniden dene", + "ACTION_RETRY_VLC": "VLC ile yeniden dene", + "EXTERNAL_OPENING": "Oynatıcı açılıyor…", + "EXTERNAL_STARTED": "Oynatıcı başlatıldı", + "EXTERNAL_PLAYING": "Oynatılıyor", + "EXTERNAL_FAILED": "Harici oynatıcı hatası", "ACTION_OPEN_MPV_HINT": "yapılandırılmış oynatıcı", "ACTION_OPEN_VLC_HINT": "yapılandırılmış oynatıcı", "ACTION_COPY_URL": "Akış URL’sini kopyala", @@ -933,7 +933,7 @@ "TITLE": "Grupları yönet", "SELECTED": "Seçildi", "SELECT_ALL": "Tümünü seç", - "DESELECT_ALL": "Tümünü kaldır", + "DESELECT_ALL": "Tümünün seçimini kaldır", "SEARCH_PLACEHOLDER": "Grupları ara...", "NO_RESULTS": "Eşleşen grup bulunamadı", "SAVE": "Kaydet" @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "Favoriler", "RAIL_DOWNLOADS": "İndirilenler", "EXTERNAL_PLAYBACK_CLOSE": "Oynatıcıyı kapat", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "Gizle", + "EXTERNAL_PLAYBACK_OPENING": "Oynatıcı açılıyor…", + "EXTERNAL_PLAYBACK_STARTED": "Oynatıcı başlatıldı", + "EXTERNAL_PLAYBACK_PLAYING": "Oynatılıyor", + "EXTERNAL_PLAYBACK_FAILED": "Harici oynatıcı hatası", + "EXTERNAL_PLAYBACK_CLOSED": "Kapatıldı", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "Oynatma listesinde aç", "RAIL_ALL_CHANNELS": "Tüm kanallar", "RAIL_GROUPS": "Gruplar", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "Kayıtlı kaynaklarınızı okumayı yeniden deneyin. Verileriniz silinmedi." }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "Tekrar denetle", + "M3U_SCOPE": "Oynatma listesi URL’si, tek tek kanallar değil", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "Kullanılabilir", + "disabled": "Hesap devre dışı", + "expired": "Abonelik süresi doldu", + "auth": "Erişim reddedildi; hesap durumu doğrulanamadı", + "http": "Sunucu hata döndürdü", + "timeout": "Kontrol zaman aşımına uğradı", + "network": "Bağlanılamadı", + "paused": "Bağlantı kontrolleri duraklatıldı", + "invalid": "Beklenmeyen yanıt", + "unknown": "Kontrol edilmedi", + "cancelled": "Kontrol iptal edildi", + "checking": "Kontrol ediliyor…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "Etkin olmayan kaynakları temizle…", + "SCOPE": "Sayfa filtrelerinden bağımsız olarak kitaplığınızdaki tüm ağ kaynakları.", + "CONSEQUENCES": "Yalnızca seçtiğiniz kaynaklar silinir. Bu kaynakların kayıtlı favorileri, geçmişi ve oynatma ilerlemesi de kaldırılır. İndirilen dosyalar korunur.", + "SUMMARY": "Kontrol edildi {{checked}}/{{total}} · Kullanılabilir {{available}} · Silindi {{deleted}} · Atlandı {{skipped}} · Başarısız {{failed}}", + "SELECT_ALL": "Tüm adayları seç", + "SELECT_NONE": "Tümünün seçimini kaldır", + "UNTITLED": "Adsız kaynak", + "DELETE": "Seçilenleri sil · {{count}}", + "CLOSE": "Kapat", + "STOP": "Geçerli kaynaktan sonra durdur", + "CLEANUP_WARNING": "Kaynak silindi; bazı ek temizleme işlemleri başarısız oldu", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "Etkin olmadığı doğrulanan hesaplar", + "uncertain": "Silmeden önce gözden geçirin", + "skipped": "Atlanan kaynaklar", + "results": "Silme sonuçları" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "Kontrol ediliyor…", + "skipped": "Oynatılıyor, meşgul, değişmiş veya artık mevcut değil", + "deleting": "Siliniyor…", + "deleted": "Silindi", + "failed": "Silinemedi — yeniden denemek için seçin" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "Seçilen {{total}} kaynaktan {{done}} tanesi işlendi" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/zh.json b/apps/web/src/assets/i18n/zh.json index 4f853bccc..9318a271e 100644 --- a/apps/web/src/assets/i18n/zh.json +++ b/apps/web/src/assets/i18n/zh.json @@ -373,7 +373,7 @@ "REFRESH_EPG": "刷新电子节目单EPG", "REFRESH_ALL_EPG": "全部刷新", "REMOVE_EPG_SOURCE": "移除 EPG 源", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "选择本地 XMLTV 文件…", "EPG_STATUS_FRESH": "已更新", "EPG_STATUS_STALE": "需要刷新", "EPG_STATUS_ERROR": "失败", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "清除 EPG 数据失败。请重试。", "CLEARING_EPG_DATA": "清除中…", "EPG_URL_ERROR": "该值不是有效的 URL", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "源列表", + "EPG_SOURCE_FORMATS_HINT": "支持远程 XMLTV 链接(http/https)和本机上的文件,格式可以是普通 .xml 或经 gzip 压缩的 .xml.gz。本地文件需要使用绝对路径或 file:// URL。", + "EPG_SOURCE_FORMATS_EXAMPLES": "示例:", "VIDEO_PLAYER_DESCRIPTION": "选择默认视频播放器", "WEB_PLAYER_SHARED_CONTROLS": "Web 播放器统一控件", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "在 HTML5、Video.js 和 ArtPlayer 中使用 IPTVnator 的共享控件。", @@ -805,19 +805,19 @@ "REASON_COMPATIBLE_DRM_PATH": "此目标与可用的加密数据兼容", "ACTION_OPEN_MPV": "在 MPV 中打开", "ACTION_OPEN_VLC": "在 VLC 中打开", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "正在打开 MPV…", + "ACTION_OPENING_VLC": "正在打开 VLC…", + "ACTION_REOPEN_MPV": "再次打开 MPV", + "ACTION_REOPEN_VLC": "再次打开 VLC", + "ACTION_RETRY_MPV": "再次尝试 MPV", + "ACTION_RETRY_VLC": "再次尝试 VLC", + "EXTERNAL_OPENING": "正在打开播放器…", + "EXTERNAL_STARTED": "播放器已启动", + "EXTERNAL_PLAYING": "正在播放", + "EXTERNAL_FAILED": "外部播放器错误", "ACTION_OPEN_MPV_HINT": "已配置的播放器", "ACTION_OPEN_VLC_HINT": "已配置的播放器", - "ACTION_COPY_URL": "复制 URL", + "ACTION_COPY_URL": "复制流 URL", "ACTION_RETRY": "重试", "DETAILS_SUMMARY": "技术详情", "CODEC_HINT": "检测到 {{codecs}}。Chromium/Electron 浏览器播放器通常对此类编码支持有限。", @@ -962,7 +962,7 @@ "PROGRAM_DIALOG": { "PROGRAM_DETAILS": "电视节目详情", "TITLE": "标题", - "CATEGORY": "类别", + "CATEGORY": "分类", "PARENTAL_RATING_SYSTEM": "电视内容分级系统", "DESCRIPTION": "描述", "LANGUAGE": "语言", @@ -1554,7 +1554,7 @@ "MOVIES": "电影", "SERIES": "剧集", "IN_PROGRESS": "进行中", - "RECORDINGS": "录制" + "RECORDINGS": "录制内容" }, "RECORDING_NOW": "正在录制", "RECORDINGS": "录制内容", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "收藏", "RAIL_DOWNLOADS": "下载", "EXTERNAL_PLAYBACK_CLOSE": "关闭播放器", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "隐藏", + "EXTERNAL_PLAYBACK_OPENING": "正在打开播放器…", + "EXTERNAL_PLAYBACK_STARTED": "播放器已启动", + "EXTERNAL_PLAYBACK_PLAYING": "正在播放", + "EXTERNAL_PLAYBACK_FAILED": "外部播放器错误", + "EXTERNAL_PLAYBACK_CLOSED": "已关闭", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "在播放列表中打开", "RAIL_ALL_CHANNELS": "所有频道", "RAIL_GROUPS": "分组", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "请重试读取已保存的来源。您的数据未被删除。" }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "再次检查", + "M3U_SCOPE": "仅检查播放列表 URL,不检查单个频道", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "可用", + "disabled": "账户已禁用", + "expired": "订阅已过期", + "auth": "访问被拒绝;无法确认账户状态", + "http": "服务器返回错误", + "timeout": "检查超时", + "network": "无法连接", + "paused": "连接检查已暂停", + "invalid": "响应异常", + "unknown": "未验证", + "cancelled": "检查已取消", + "checking": "正在检查…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "清理失效的源…", + "SCOPE": "媒体库中的所有网络源,不受页面筛选条件影响。", + "CONSEQUENCES": "仅删除您选择的源。其保存的收藏、观看历史和播放进度也将一并移除。已下载的文件会保留。", + "SUMMARY": "已检查 {{checked}}/{{total}} · 可用 {{available}} · 已删除 {{deleted}} · 已跳过 {{skipped}} · 失败 {{failed}}", + "SELECT_ALL": "全选候选源", + "SELECT_NONE": "取消全选", + "UNTITLED": "未命名源", + "DELETE": "删除所选 · {{count}}", + "CLOSE": "关闭", + "STOP": "当前源完成后停止", + "CLEANUP_WARNING": "源已删除,但部分后续清理失败", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "已确认失效的账户", + "uncertain": "删除前请确认", + "skipped": "已跳过的源", + "results": "删除结果" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "正在检查…", + "skipped": "正在播放、正忙、已更改或已不存在", + "deleting": "正在删除…", + "deleted": "已删除", + "failed": "删除失败 — 勾选以重试" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "已处理所选 {{total}} 个源中的 {{done}} 个" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/apps/web/src/assets/i18n/zhtw.json b/apps/web/src/assets/i18n/zhtw.json index 2f07560b7..4e34981d6 100644 --- a/apps/web/src/assets/i18n/zhtw.json +++ b/apps/web/src/assets/i18n/zhtw.json @@ -373,7 +373,7 @@ "REFRESH_EPG": "重新整理 EPG", "REFRESH_ALL_EPG": "全部重新整理", "REMOVE_EPG_SOURCE": "移除 EPG 來源", - "BROWSE_EPG_FILE": "Choose a local XMLTV file…", + "BROWSE_EPG_FILE": "選擇本機 XMLTV 檔案…", "EPG_STATUS_FRESH": "已更新", "EPG_STATUS_STALE": "需要重新整理", "EPG_STATUS_ERROR": "失敗", @@ -418,9 +418,9 @@ "EPG_DATA_CLEAR_FAILED": "清除 EPG 資料失敗。請重試。", "CLEARING_EPG_DATA": "正在清除…", "EPG_URL_ERROR": "該值不是有效的網址", - "EPG_SOURCE_LIST_TITLE": "Source list", - "EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", + "EPG_SOURCE_LIST_TITLE": "來源清單", + "EPG_SOURCE_FORMATS_HINT": "支援遠端 XMLTV 連結(http/https)與這台電腦上的檔案,格式可為一般 .xml 或經 gzip 壓縮的 .xml.gz。本機檔案需使用絕對路徑或 file:// URL。", + "EPG_SOURCE_FORMATS_EXAMPLES": "範例:", "VIDEO_PLAYER_DESCRIPTION": "選擇預設影片播放器", "WEB_PLAYER_SHARED_CONTROLS": "Web 播放器統一控制項", "WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "在 HTML5、Video.js 和 ArtPlayer 中使用 IPTVnator 的共用控制項。", @@ -805,19 +805,19 @@ "REASON_COMPATIBLE_DRM_PATH": "此目標與可用的加密資料相容", "ACTION_OPEN_MPV": "在 MPV 中開啟", "ACTION_OPEN_VLC": "在 VLC 中開啟", - "ACTION_OPENING_MPV": "Opening MPV…", - "ACTION_OPENING_VLC": "Opening VLC…", - "ACTION_REOPEN_MPV": "Open MPV again", - "ACTION_REOPEN_VLC": "Open VLC again", - "ACTION_RETRY_MPV": "Try MPV again", - "ACTION_RETRY_VLC": "Try VLC again", - "EXTERNAL_OPENING": "Opening player…", - "EXTERNAL_STARTED": "Player started", - "EXTERNAL_PLAYING": "Playing", - "EXTERNAL_FAILED": "External player error", + "ACTION_OPENING_MPV": "正在開啟 MPV…", + "ACTION_OPENING_VLC": "正在開啟 VLC…", + "ACTION_REOPEN_MPV": "再次開啟 MPV", + "ACTION_REOPEN_VLC": "再次開啟 VLC", + "ACTION_RETRY_MPV": "重新嘗試 MPV", + "ACTION_RETRY_VLC": "重新嘗試 VLC", + "EXTERNAL_OPENING": "正在開啟播放器…", + "EXTERNAL_STARTED": "播放器已啟動", + "EXTERNAL_PLAYING": "播放中", + "EXTERNAL_FAILED": "外部播放器錯誤", "ACTION_OPEN_MPV_HINT": "已設定的播放器", "ACTION_OPEN_VLC_HINT": "已設定的播放器", - "ACTION_COPY_URL": "複製 URL", + "ACTION_COPY_URL": "複製串流網址", "ACTION_RETRY": "重試", "DETAILS_SUMMARY": "技術詳情", "CODEC_HINT": "偵測到 {{codecs}}。Chromium/Electron 瀏覽器播放器通常對此類編碼支援有限。", @@ -1172,7 +1172,7 @@ "RATING": "評分", "IMDB_RATING": "IMDb 評分", "KINOPOISK_RATING": "Kinopoisk 評分", - "DESCRIPTION": "描述", + "DESCRIPTION": "說明", "YEAR": "年份", "AGE": "年齡", "YOUTUBE_TRAILER": "YouTube 預告片", @@ -1759,12 +1759,12 @@ "RAIL_FAVORITES": "我的最愛", "RAIL_DOWNLOADS": "下載", "EXTERNAL_PLAYBACK_CLOSE": "關閉播放器", - "EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "EXTERNAL_PLAYBACK_STARTED": "Player started", - "EXTERNAL_PLAYBACK_PLAYING": "Playing", - "EXTERNAL_PLAYBACK_FAILED": "External player error", - "EXTERNAL_PLAYBACK_CLOSED": "Closed", + "EXTERNAL_PLAYBACK_DISMISS": "隱藏", + "EXTERNAL_PLAYBACK_OPENING": "正在開啟播放器…", + "EXTERNAL_PLAYBACK_STARTED": "播放器已啟動", + "EXTERNAL_PLAYBACK_PLAYING": "播放中", + "EXTERNAL_PLAYBACK_FAILED": "外部播放器錯誤", + "EXTERNAL_PLAYBACK_CLOSED": "已關閉", "EXTERNAL_PLAYBACK_OPEN_IN_PLAYLIST": "在播放清單中開啟", "RAIL_ALL_CHANNELS": "所有頻道", "RAIL_GROUPS": "群組", @@ -2033,49 +2033,49 @@ "FAILED_DETAIL": "請重試讀取已儲存的來源。您的資料未被刪除。" }, "SOURCE_HEALTH": { - "RECHECK": "Check again", - "M3U_SCOPE": "Playlist URL, not individual channels", + "RECHECK": "再次檢查", + "M3U_SCOPE": "檢查播放清單網址,而非個別頻道", "REASON": { - "available": "Available", - "disabled": "Account disabled", - "expired": "Subscription expired", - "auth": "Access denied; account status unconfirmed", - "http": "Server returned an error", - "timeout": "Check timed out", - "network": "Could not connect", - "paused": "Connection checks paused", - "invalid": "Unexpected response", - "unknown": "Not verified", - "cancelled": "Check cancelled", - "checking": "Checking…" + "available": "可用", + "disabled": "帳戶已停用", + "expired": "訂閱已到期", + "auth": "存取被拒;無法確認帳戶狀態", + "http": "伺服器傳回錯誤", + "timeout": "檢查逾時", + "network": "無法連線", + "paused": "連線檢查已暫停", + "invalid": "非預期的回應", + "unknown": "尚未驗證", + "cancelled": "檢查已取消", + "checking": "檢查中…" } }, "SOURCE_CLEANUP": { - "TITLE": "Clean up inactive sources…", - "SCOPE": "All network sources in your library, regardless of page filters.", - "CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SELECT_ALL": "Select all candidates", - "SELECT_NONE": "Deselect all", - "UNTITLED": "Untitled source", - "DELETE": "Delete selected · {{count}}", - "CLOSE": "Close", - "STOP": "Stop after current source", - "CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", + "TITLE": "清理失效的來源…", + "SCOPE": "媒體庫中的所有網路來源,不受頁面篩選條件影響。", + "CONSEQUENCES": "僅刪除您選取的來源。這些來源已儲存的我的最愛、觀看記錄和播放進度也會一併移除。已下載的檔案會保留。", + "SUMMARY": "已檢查 {{checked}}/{{total}} · 可用 {{available}} · 已刪除 {{deleted}} · 已略過 {{skipped}} · 失敗 {{failed}}", + "SELECT_ALL": "選取所有候選來源", + "SELECT_NONE": "全部取消選取", + "UNTITLED": "未命名的來源", + "DELETE": "刪除選取項目 · {{count}}", + "CLOSE": "關閉", + "STOP": "完成目前來源後停止", + "CLEANUP_WARNING": "來源已刪除,但部分後續清理失敗", "GROUP": { - "confirmed": "Confirmed inactive accounts", - "uncertain": "Review before deleting", - "skipped": "Skipped sources", - "results": "Deletion results" + "confirmed": "已確認失效的帳戶", + "uncertain": "刪除前請先確認", + "skipped": "已略過的來源", + "results": "刪除結果" }, "STATUS": { - "checking": "Checking…", - "skipped": "Playing, busy, changed or no longer present", - "deleting": "Deleting…", - "deleted": "Deleted", - "failed": "Deletion failed — select to retry" + "checking": "檢查中…", + "skipped": "正在播放、忙碌中、已變更或已不存在", + "deleting": "刪除中…", + "deleted": "已刪除", + "failed": "刪除失敗 — 選取以重試" }, - "DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources" + "DELETE_PROGRESS": "所選的 {{total}} 個來源中已處理 {{done}} 個" }, "PARENTAL_LOCK": { "PIN_DIALOG": { diff --git a/docs/architecture/validation-map.md b/docs/architecture/validation-map.md index 9c7ab34ab..7562aa512 100644 --- a/docs/architecture/validation-map.md +++ b/docs/architecture/validation-map.md @@ -259,6 +259,7 @@ pnpm run coverage:e2e:v8:web pnpm run i18n:validate # checker unit tests, then the check (CI) pnpm run i18n:check # the check only: locale drift, then key usage pnpm run i18n:usage # key usage only +pnpm run i18n:duplicates # report: one English string, diverging translations pnpm run i18n:baseline:update # deliberate: rewrite the English-identical baseline ``` @@ -296,6 +297,12 @@ a template literal such as `` `EPG.DIALOG.${name}` `` must name a group. Keys built entirely at runtime are not checked. CI runs `pnpm run i18n:validate` in the unit test job. +`pnpm run i18n:duplicates` (`tools/i18n/check-duplicates.mjs`) is a report, +not a gate: it lists English strings defined under several keys that a locale +translates differently. Align drifted wording in the locale files; a group may +stay when context needs another grammatical form. `--max ` makes it fail +above n groups. + ## Performance ```bash diff --git a/package.json b/package.json index cf1aa8256..56bcb81c6 100644 --- a/package.json +++ b/package.json @@ -91,8 +91,9 @@ "serve:website": "nx serve website", "build:website": "nx build website", "i18n:check": "node tools/i18n/check-drift.mjs && node tools/i18n/check-usage.mjs", - "i18n:test": "node --test tools/i18n/check-drift.test.mjs tools/i18n/check-usage.test.mjs", + "i18n:test": "node --test tools/i18n/check-drift.test.mjs tools/i18n/check-usage.test.mjs tools/i18n/check-duplicates.test.mjs", "i18n:usage": "node tools/i18n/check-usage.mjs", + "i18n:duplicates": "node tools/i18n/check-duplicates.mjs", "i18n:validate": "pnpm run i18n:test && pnpm run i18n:check", "i18n:baseline:update": "node tools/i18n/check-drift.mjs --update-baseline", "perf:initial-bytes": "node tools/performance/measure-initial-bytes.mjs", diff --git a/tools/i18n/README.md b/tools/i18n/README.md index 2553e9500..6df554276 100644 --- a/tools/i18n/README.md +++ b/tools/i18n/README.md @@ -80,6 +80,22 @@ The checkers' own tests run with `pnpm run i18n:test`; CI runs both through node tools/i18n/check-drift.mjs --fail-on-identical ``` +`pnpm run i18n:duplicates` lists English strings that `en.json` defines under +several keys while a locale translates those keys differently, such as one +"Close" button saying "Afsluiten" and another "Sluiten". Add `--verbose` for +each locale's variants and keys, or `--max ` to fail above n groups. It is +a report, not a CI gate: a group can be legitimate when context needs another +grammatical form. When aligning, change the drifted values rather than +removing keys. + +## Changing existing translations + +`fill-missing.mjs` never overwrites, so rewording an existing value or paying +down baseline debt means editing the value in the locale file directly (keep +the key order, 4-space indent and trailing newline), then running +`pnpm run i18n:baseline:update` and checking that the baseline diff only +removes entries. + ## Translation rules - Preserve `{{interpolation}}` placeholders verbatim. diff --git a/tools/i18n/check-duplicates.mjs b/tools/i18n/check-duplicates.mjs new file mode 100644 index 000000000..9c449655d --- /dev/null +++ b/tools/i18n/check-duplicates.mjs @@ -0,0 +1,141 @@ +#!/usr/bin/env node +/** + * Lists English strings that en.json defines under several keys while a + * locale translates those keys differently ("Close" as "Fermer" in one dialog + * and "Fermer la fenêtre" in another). Such groups are usually drift: one + * wording was copied, the other translated later. Some are legitimate, where + * the same English word needs a different grammatical form in context. + * + * The report is informational. `--max ` fails when more than n groups + * diverge; `--verbose` prints every locale's variants. + */ +import { readdirSync, readFileSync } from 'node:fs'; +import { resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +import { collectLeaves, I18N_DIR } from './check-drift.mjs'; + +const EN_LOCALE = 'en'; + +/** + * Groups en.json keys by English text and returns every group of two or more + * keys that at least one locale translates with more than one distinct value. + * Each group lists, per diverging locale, the keys behind each variant. + */ +export function findDivergentDuplicates(enLeaves, leavesByLocale) { + const keysByText = new Map(); + for (const [key, text] of enLeaves) { + if (typeof text === 'string' && text.trim().length > 0) { + keysByText.set(text, [...(keysByText.get(text) ?? []), key]); + } + } + + const groups = []; + for (const [english, keys] of keysByText) { + if (keys.length < 2) { + continue; + } + const locales = new Map(); + for (const [locale, leaves] of leavesByLocale) { + const variants = new Map(); + for (const key of keys) { + const value = leaves.get(key); + if (typeof value === 'string') { + variants.set(value, [...(variants.get(value) ?? []), key]); + } + } + if (variants.size > 1) { + locales.set(locale, variants); + } + } + if (locales.size > 0) { + groups.push({ english, keys, locales }); + } + } + + return groups.sort( + (a, b) => + b.locales.size - a.locales.size || + b.keys.length - a.keys.length || + (a.english < b.english ? -1 : 1) + ); +} + +function readLeaves(i18nDir, locale) { + return collectLeaves( + JSON.parse(readFileSync(resolve(i18nDir, `${locale}.json`), 'utf8')) + ); +} + +function parseArgs(argv) { + const options = { max: undefined, verbose: false }; + for (let index = 0; index < argv.length; index += 1) { + const arg = argv[index]; + if (arg === '--verbose') { + options.verbose = true; + } else if (arg === '--max' && /^\d+$/.test(argv[index + 1] ?? '')) { + options.max = Number(argv[index + 1]); + index += 1; + } else if (arg !== '--') { + return null; + } + } + return options; +} + +/** Runs the report and returns the process exit code. */ +export function run({ i18nDir = I18N_DIR, argv = [], log = console.log } = {}) { + const options = parseArgs(argv); + if (!options) { + log( + `FAIL unsupported arguments: ${argv.join(' ')}; use --max and --verbose.` + ); + return 1; + } + + const leavesByLocale = new Map( + readdirSync(i18nDir) + .filter((file) => file.endsWith('.json')) + .map((file) => file.slice(0, -'.json'.length)) + .filter((locale) => locale !== EN_LOCALE) + .sort() + .map((locale) => [locale, readLeaves(i18nDir, locale)]) + ); + const groups = findDivergentDuplicates( + readLeaves(i18nDir, EN_LOCALE), + leavesByLocale + ); + + for (const { english, keys, locales } of groups) { + log( + `${JSON.stringify(english)}: ${keys.length} keys, ${ + locales.size + } locale(s) differ (${[...locales.keys()].join(', ')})` + ); + if (options.verbose) { + for (const [locale, variants] of locales) { + for (const [value, variantKeys] of variants) { + log( + ` ${locale} ${JSON.stringify(value)}: ${variantKeys.join(', ')}` + ); + } + } + } + } + + const over = options.max !== undefined && groups.length > options.max; + log( + `${over ? 'FAIL' : 'ok'} ${groups.length} duplicate English string(s) with diverging translations${ + options.max === undefined ? '' : ` (max ${options.max})` + }` + ); + return over ? 1 : 0; +} + +const isMain = + process.argv[1] && + resolve(process.argv[1]) === resolve(fileURLToPath(import.meta.url)); + +if (isMain) { + process.exitCode = run({ argv: process.argv.slice(2) }); +} diff --git a/tools/i18n/check-duplicates.test.mjs b/tools/i18n/check-duplicates.test.mjs new file mode 100644 index 000000000..34cdb1e94 --- /dev/null +++ b/tools/i18n/check-duplicates.test.mjs @@ -0,0 +1,130 @@ +import assert from 'node:assert/strict'; +import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import { afterEach, beforeEach, test } from 'node:test'; + +import { findDivergentDuplicates, run } from './check-duplicates.mjs'; + +const EN = { + CLOSE: 'Close', + DIALOG: { CLOSE: 'Close', SAVE: 'Save' }, + MENU: { SAVE: 'Save', TITLE: 'Menu' }, +}; + +let dir; + +beforeEach(() => { + dir = mkdtempSync(path.join(os.tmpdir(), 'i18n-duplicates-')); +}); + +afterEach(() => { + rmSync(dir, { recursive: true, force: true }); +}); + +function writeLocale(locale, content) { + writeFileSync(path.join(dir, `${locale}.json`), JSON.stringify(content)); +} + +function report(...argv) { + const lines = []; + const code = run({ i18nDir: dir, argv, log: (line) => lines.push(line) }); + return { code, output: lines.join('\n') }; +} + +test('groups keys by English text and keeps only diverging locales', () => { + const en = new Map([ + ['CLOSE', 'Close'], + ['DIALOG.CLOSE', 'Close'], + ['DIALOG.SAVE', 'Save'], + ['MENU.SAVE', 'Save'], + ['MENU.TITLE', 'Menu'], + ]); + const locales = new Map([ + [ + 'de', + new Map([ + ['CLOSE', 'Schließen'], + ['DIALOG.CLOSE', 'Schliessen'], + ['DIALOG.SAVE', 'Speichern'], + ['MENU.SAVE', 'Speichern'], + ]), + ], + [ + 'fr', + new Map([ + ['CLOSE', 'Fermer'], + ['DIALOG.CLOSE', 'Fermer'], + ['DIALOG.SAVE', 'Save'], + ['MENU.SAVE', 'Enregistrer'], + ]), + ], + ]); + + const groups = findDivergentDuplicates(en, locales); + + assert.deepEqual( + groups.map(({ english, keys, locales: diverging }) => ({ + english, + keys, + locales: [...diverging.keys()], + })), + [ + { + english: 'Close', + keys: ['CLOSE', 'DIALOG.CLOSE'], + locales: ['de'], + }, + { + english: 'Save', + keys: ['DIALOG.SAVE', 'MENU.SAVE'], + locales: ['fr'], + }, + ] + ); + assert.deepEqual( + [...groups[1].locales.get('fr')], + [ + ['Save', ['DIALOG.SAVE']], + ['Enregistrer', ['MENU.SAVE']], + ] + ); +}); + +test('reports nothing when every locale agrees', () => { + writeLocale('en', EN); + writeLocale('de', { + CLOSE: 'Schließen', + DIALOG: { CLOSE: 'Schließen', SAVE: 'Speichern' }, + MENU: { SAVE: 'Speichern', TITLE: 'Menü' }, + }); + + const { code, output } = report('--max', '0'); + + assert.equal(code, 0); + assert.match(output, /^ok 0 duplicate English string/m); +}); + +test('fails only when diverging groups exceed --max', () => { + writeLocale('en', EN); + writeLocale('de', { + CLOSE: 'Schließen', + DIALOG: { CLOSE: 'Schliessen', SAVE: 'Speichern' }, + MENU: { SAVE: 'Sichern', TITLE: 'Menü' }, + }); + + assert.equal(report('--max', '2').code, 0); + const { code, output } = report('--max', '1', '--verbose'); + + assert.equal(code, 1); + assert.match(output, /^"Close": 2 keys, 1 locale\(s\) differ \(de\)$/m); + assert.match(output, /^ {2}de "Schliessen": DIALOG\.CLOSE$/m); + assert.match(output, /^FAIL 2 duplicate English string/m); +}); + +test('rejects unsupported arguments', () => { + writeLocale('en', EN); + + assert.equal(report('--max').code, 1); + assert.equal(report('--strict').code, 1); +}); diff --git a/tools/i18n/identical-en-baseline.json b/tools/i18n/identical-en-baseline.json index f9b01b15a..0b03decfa 100644 --- a/tools/i18n/identical-en-baseline.json +++ b/tools/i18n/identical-en-baseline.json @@ -29,72 +29,17 @@ "LANGUAGES.SPANISH": "Español", "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.STALKER_PORTAL": "Stalker Portal", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.STALKER_PORTAL": "Stalker Portal", "WORKSPACE.SHELL.XTREAM_CODE": "Xtream Code", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", @@ -107,8 +52,6 @@ "CHANNELS.DETAILS_DIALOG.HTTP_REFERRER": "Referrer", "CHANNELS.DETAILS_DIALOG.HTTP_USER_AGENT": "User-Agent", "CHANNELS.DETAILS_DIALOG.TVG_ID": "TVG ID", - "CHANNELS.DETAILS_DIALOG.TVG_LOGO": "TVG logo", - "CHANNELS.DETAILS_DIALOG.TVG_NAME": "TVG name", "CHANNELS.DETAILS_DIALOG.TVG_REC": "TVG rec", "CHANNELS.DETAILS_DIALOG.TVG_URL": "TVG URL", "DOWNLOADS.OFFLINE_DETAIL.FILE_SIZE": "{{size}}", @@ -138,73 +81,18 @@ "LANGUAGES.SPANISH": "Español", "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "WORKSPACE.CONTEXT.STALKER_PORTAL": "Stalker portal", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.STALKER_PORTAL": "Stalker Portal", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.STALKER_PORTAL": "Stalker Portal", "WORKSPACE.SHELL.XTREAM_CODE": "Xtream Code", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", @@ -248,71 +136,16 @@ "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", "PARENTAL_LOCK.PIN_DIALOG.PIN_LABEL": "PIN", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.XTREAM_CODE": "Xtream Code", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", "XTREAM.ACCOUNT_INFO.HTTP_PORT": "HTTP", @@ -393,41 +226,6 @@ "SETTINGS.PLAYER_VLC": "VLC", "SETTINGS.PORT_RANGE_LABEL": "Port (1-65535)", "SETTINGS.VERSION": "Version", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "STALKER.ACCOUNT_INFO.LOGIN": "Login", "STALKER.ACCOUNT_INFO.PORTAL_INFO": "Portal", "STALKER.ACCOUNT_INFO.STATUS": "Status", @@ -461,13 +259,10 @@ "DOWNLOADS.OFFLINE_DETAIL.FILE_SIZE": "{{size}}", "EMBEDDED_MPV.PLAYER.TIMELINE_SEGMENT_POSITION": "{{title}} · {{time}}", "HOME.ADD_PLAYLIST.METHOD_URL_LABEL": "M3U URL", - "HOME.FILE_UPLOAD.OR": "or", "HOME.PLAYLISTS.CONTENT_EPG": "EPG", "HOME.PLAYLISTS.FEATURE_STALKER": "Stalker Portal", "HOME.PLAYLISTS.FEATURE_XTREAM": "Xtream Codes", - "HOME.PLAYLISTS.INFO_DIALOG.TITLE": "Title", "HOME.PLAYLISTS.STALKER_PORTAL": "Stalker portal", - "HOME.PLAYLISTS.XTREAM_PLAYLIST": "Xtream playlist", "HOME.PLAYLIST_TYPES.STALKER": "Stalker", "HOME.PLAYLIST_TYPES.XTREAM": "Xtream", "HOME.TITLE": "IPTVnator", @@ -491,75 +286,19 @@ "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", "PARENTAL_LOCK.PIN_DIALOG.PIN_LABEL": "PIN", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.LINK_BLOG": "Blog", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", - "SETTINGS.PLAYER_MPV": "MPV player", "SETTINGS.PLAYER_VLC": "VLC", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "WORKSPACE.CONTEXT.STALKER_PORTAL": "Stalker portal", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.STALKER_PORTAL": "Stalker Portal", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.STALKER_PORTAL": "Stalker Portal", "WORKSPACE.SHELL.XTREAM_CODE": "Xtream Code", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", @@ -608,16 +347,6 @@ "LANGUAGES.TURKISH": "Türkçe", "NO": "No", "PARENTAL_LOCK.PIN_DIALOG.PIN_LABEL": "PIN", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.DETAIL.DURATION_HOURS_MINUTES": "{{hours}} h {{minutes}} min", "PORTALS.DETAIL.DURATION_MINUTES": "{{minutes}} min", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", @@ -626,66 +355,21 @@ "REMOTE_CONTROL.VOLUME_ABBR": "VOL", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", "SETTINGS.CHIP_EXPERIMENTAL": "Experimental", "SETTINGS.EPG_OFFSET_UNIT": "min", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.GENERAL": "General", "SETTINGS.LINK_BLOG": "Blog", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.NAV_GENERAL": "General", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "STALKER.ACCOUNT_INFO.PORTAL_INFO": "Portal", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.STALKER_PORTAL": "Stalker Portal", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", "WORKSPACE.SHELL.COMMANDS.GO_TO_SERIES_LABEL": "Series", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.RAIL_SERIES": "Series", "WORKSPACE.SHELL.STALKER_PORTAL": "Stalker Portal", "WORKSPACE.SHELL.XTREAM_CODE": "Xtream Code", @@ -747,16 +431,6 @@ "LANGUAGES.SPANISH": "Español", "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.DETAIL.DURATION_HOURS_MINUTES": "{{hours}} h {{minutes}} min", "PORTALS.DETAIL.DURATION_MINUTES": "{{minutes}} min", "PORTALS.DETAIL.GROUP_SOURCE": "Source", @@ -769,15 +443,11 @@ "REMOTE_CONTROL.VOLUME_ABBR": "VOL", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_CACHE": "Cache", "SETTINGS.CARD_GUIDE": "Guide", "SETTINGS.CARD_SOURCES": "Sources", "SETTINGS.CARD_XTREAM": "Xtream", "SETTINGS.EPG_OFFSET_UNIT": "min", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.LINK_BLOG": "Blog", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", @@ -786,51 +456,10 @@ "SETTINGS.SOURCE_PLURAL": "sources", "SETTINGS.SOURCE_SINGULAR": "source", "SETTINGS.VERSION": "Version", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.SEASON_EPISODE_BADGE": "S{{season}}·E{{episode}}", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.RAIL_SOURCES": "Sources", "WORKSPACE.SHELL.XTREAM_CODE": "Xtream Code", "WORKSPACE.SOURCES.TITLE": "Sources", @@ -850,31 +479,9 @@ "CHANNELS.DETAILS_DIALOG.HTTP_USER_AGENT": "User-Agent", "CHANNELS.DETAILS_DIALOG.TVG_REC": "TVG rec", "CHANNELS.MAP_EPG": "Map EPG channel", - "DOWNLOADS.ACTION_FAILED": "Action failed", "DOWNLOADS.OFFLINE_DETAIL.FILE_SIZE": "{{size}}", - "DOWNLOADS.PAUSE": "Pause", "DOWNLOADS.RECORDING_CHIP": "REC", - "DOWNLOADS.RESUME": "Resume", - "DOWNLOADS.STATUS.PAUSED": "Paused", - "EMBEDDED_MPV.PLAYER.BACK": "Back", "EMBEDDED_MPV.PLAYER.TIMELINE_SEGMENT_POSITION": "{{title}} · {{time}}", - "EPG_MAPPING_DIALOG.CLOSE": "Close", - "EPG_MAPPING_DIALOG.CURRENT_MAPPING": "Current mapping", - "EPG_MAPPING_DIALOG.NO_MAPPING": "No EPG mapping set", - "EPG_MAPPING_DIALOG.NO_RESULTS": "No EPG channels found", - "EPG_MAPPING_DIALOG.REMOVE": "Remove mapping", - "EPG_MAPPING_DIALOG.REMOVED": "EPG mapping removed", - "EPG_MAPPING_DIALOG.SAVE": "Save mapping", - "EPG_MAPPING_DIALOG.SAVED": "EPG mapping saved", - "EPG_MAPPING_DIALOG.SAVE_FAILED": "Could not update the EPG mapping", - "EPG_MAPPING_DIALOG.SEARCH_HINT": "Type at least {{min}} characters to search", - "EPG_MAPPING_DIALOG.SEARCH_PLACEHOLDER": "Search EPG channels...", - "EPG_MAPPING_DIALOG.SUBTITLE": "Manually select an EPG channel for \"{{channelName}}\"", - "EPG_MAPPING_DIALOG.TITLE": "Map EPG Channel", - "HOME.PLAYLISTS.AUTO_REFRESH_UPDATE_FAILED": "Playlist auto-refresh failed. None of the {{total}} playlists could be updated.", - "HOME.PLAYLISTS.AUTO_REFRESH_UPDATE_PARTIAL": "Playlist auto-refresh incomplete: {{updated}} of {{total}} playlists updated, {{failed}} failed.", - "HOME.PLAYLISTS.AUTO_REFRESH_UPDATE_PARTIAL_WITH_SKIPPED": "Playlist auto-refresh incomplete: {{updated}} of {{total}} playlists updated, {{failed}} failed, {{skipped}} skipped (no URL or file path).", - "HOME.PLAYLISTS.AUTO_REFRESH_UPDATE_SKIPPED": "Playlist auto-refresh: {{updated}} of {{total}} playlists updated, {{skipped}} skipped (no URL or file path).", "HOME.PLAYLISTS.CONTENT_EPG": "EPG", "HOME.PLAYLISTS.FEATURE_XTREAM": "Xtream Codes", "HOME.PLAYLIST_TYPES.STALKER": "Stalker", @@ -899,84 +506,20 @@ "LANGUAGES.SPANISH": "Español", "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", - "PORTALS.ITEM": "item", - "PORTALS.ITEMS": "items", - "PORTALS.LOADING_ALL_CHANNELS": "Loading full channel list…", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", - "PORTALS.NO_CHANNELS_IN_CATEGORY": "No channels in this category", - "PORTALS.REFRESH_CHANNEL_LIST": "Refresh channel list", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.LINK_BLOG": "Blog", "SETTINGS.NAV_EPG": "EPG", - "SETTINGS.PLAYER_AMBIENT_MODE": "Ambient background fill", - "SETTINGS.PLAYER_AMBIENT_MODE_DESCRIPTION": "Fill the space around the player with a blurred, dimmed poster instead of plain black bars.", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", "XTREAM.ACCOUNT_INFO.HTTP_PORT": "HTTP", "XTREAM.ACCOUNT_INFO.RTMP_PORT": "RTMP", - "XTREAM.CREW_JOB_CREATOR": "Creator", - "XTREAM.CREW_JOB_DIRECTOR": "Director", "XTREAM.SERIES_STATUS_PILOT": "Pilot" }, "it": { @@ -1026,16 +569,6 @@ "LANGUAGES.TURKISH": "Türkçe", "NO": "No", "PARENTAL_LOCK.PIN_DIALOG.PIN_LABEL": "PIN", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.DETAIL.DURATION_HOURS_MINUTES": "{{hours}} h {{minutes}} min", "PORTALS.DETAIL.DURATION_MINUTES": "{{minutes}} min", "PORTALS.DETAIL.TRAILER": "Trailer", @@ -1046,14 +579,10 @@ "REMOTE_CONTROL.VOLUME_ABBR": "VOL", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_CACHE": "Cache", "SETTINGS.CARD_DESKTOP": "Desktop", "SETTINGS.CARD_XTREAM": "Xtream", "SETTINGS.EPG_OFFSET_UNIT": "min", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.EPG_VIEW_MODE_TIMELINE": "Timeline", "SETTINGS.LINK_BLOG": "Blog", "SETTINGS.NAV_EPG": "EPG", @@ -1061,41 +590,6 @@ "SETTINGS.NAV_REMOTE": "Remote", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "STALKER.ACCOUNT_INFO.ACCOUNT": "Account", "STALKER.ACCOUNT_INFO.LOGIN": "Login", "WORKSPACE.DASHBOARD.M3U": "M3U", @@ -1103,12 +597,6 @@ "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.TYPE_LIVE": "Live", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.RAIL_DASHBOARD": "Dashboard", "WORKSPACE.SOURCES.PLAYLIST_COUNT_ONE": "1 playlist", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", @@ -1122,8 +610,6 @@ "CHANNELS.DETAILS_DIALOG.HTTP_REFERRER": "Referrer", "CHANNELS.DETAILS_DIALOG.HTTP_USER_AGENT": "User-Agent", "CHANNELS.DETAILS_DIALOG.TVG_ID": "TVG ID", - "CHANNELS.DETAILS_DIALOG.TVG_LOGO": "TVG logo", - "CHANNELS.DETAILS_DIALOG.TVG_NAME": "TVG name", "CHANNELS.DETAILS_DIALOG.TVG_REC": "TVG rec", "CHANNELS.DETAILS_DIALOG.TVG_URL": "TVG URL", "DOWNLOADS.OFFLINE_DETAIL.FILE_SIZE": "{{size}}", @@ -1154,71 +640,16 @@ "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", "PARENTAL_LOCK.PIN_DIALOG.PIN_LABEL": "PIN", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.XTREAM_CODE": "Xtream Code", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", "XTREAM.ACCOUNT_INFO.HTTP_PORT": "HTTP", @@ -1233,17 +664,10 @@ "DOWNLOADS.OFFLINE_DETAIL.FILE_SIZE": "{{size}}", "DOWNLOADS.RECORDING_CHIP": "REC", "EMBEDDED_MPV.PLAYER.TIMELINE_SEGMENT_POSITION": "{{title}} · {{time}}", - "EPG.DOWNLOAD_SUCCESS": "EPG was successfully downloaded.", - "EPG.ERROR": "Ooops, EPG could not be loaded.", - "EPG.LIVE_STREAM": "Live stream", "HOME.ADD_PLAYLIST.METHOD_URL_LABEL": "M3U URL", "HOME.PLAYLISTS.CONTENT_EPG": "EPG", - "HOME.PLAYLISTS.GLOBAL_FAVORITES": "Global favorites", - "HOME.PLAYLISTS.GLOBAL_FAVORITES_DESCRIPTION": "Auto-generated playlist with aggregated favorites from all playlists", - "HOME.PLAYLISTS.MY_PLAYLISTS": "My playlists", "HOME.PLAYLIST_TYPES.STALKER": "Stalker", "HOME.PLAYLIST_TYPES.XTREAM": "Xtream", - "HOME.TEXT_IMPORT.LABEL": "Insert m3u(8) playlist as text", "HOME.TITLE": "IPTVnator", "LANGUAGES.ARABIC": "العربية", "LANGUAGES.BELARUSIAN": "Беларуская", @@ -1264,87 +688,21 @@ "LANGUAGES.SPANISH": "Español", "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", - "MENU.ABOUT": "About", - "MENU.ABOUT_ARIA": "About the application", - "MENU.BUG_REPORT": "Report a bug", - "MENU.OPEN": "Open menu", - "MENU.SETTINGS_ARIA": "Open settings", - "MENU.SUPPORT_ARIA": "Support IPTVnator on GitHub", - "MENU.WHAT_IS_NEW": "What is new", - "NO": "No", "PARENTAL_LOCK.PIN_DIALOG.PIN_LABEL": "PIN", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", - "SETTINGS.SHOW_CAPTIONS": "Show subtitles", - "SETTINGS.SUPPORT_KOFI_HINT": "Buy me a coffee", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", "XTREAM.ACCOUNT_INFO.HTTP_PORT": "HTTP", "XTREAM.ACCOUNT_INFO.RTMP_PORT": "RTMP", - "XTREAM.ACCOUNT_INFO.URL": "URL", - "YES": "Yes" + "XTREAM.ACCOUNT_INFO.URL": "URL" }, "nl": { "AUDIO_PLAYER.RADIO": "Radio", @@ -1399,16 +757,6 @@ "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", "MENU.OPEN": "Open menu", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.DETAIL.CAST_AND_CREW": "Cast & crew", "PORTALS.DETAIL.DURATION_MINUTES": "{{minutes}} min", "PORTALS.DETAIL.TRAILER": "Trailer", @@ -1424,15 +772,11 @@ "REMOTE_CONTROL.VOLUME_ABBR": "VOL", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_CACHE": "Cache", "SETTINGS.CARD_DESKTOP": "Desktop", "SETTINGS.CARD_XTREAM": "Xtream", "SETTINGS.COMMUNITY": "Project & community", "SETTINGS.EPG_OFFSET_UNIT": "min", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.LINK_BLOG": "Blog", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.NAV_GROUP_APP": "App", @@ -1442,41 +786,6 @@ "SETTINGS.RESTART_LATER": "Later", "SETTINGS.TMDB": "Metadata (TMDB)", "SETTINGS.TMDB_CREDITS": "Metadata", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "STALKER.ACCOUNT_INFO.ACCOUNT": "Account", "STALKER.ACCOUNT_INFO.STATUS": "Status", "WORKSPACE.CONTEXT.ITEM_COUNT_ONE": "1 item", @@ -1493,12 +802,6 @@ "WORKSPACE.SHELL.COMMANDS.OPEN_DASHBOARD_LABEL": "Open dashboard", "WORKSPACE.SHELL.COMMANDS.OPEN_DOWNLOADS_LABEL": "Open downloads", "WORKSPACE.SHELL.CONTEXT_DRAWER_FILTERS_TOOLTIP": "Filters", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.OPEN_DOWNLOADS": "Open downloads", "WORKSPACE.SHELL.RAIL_DASHBOARD": "Dashboard", "WORKSPACE.SHELL.RAIL_DOWNLOADS": "Downloads", @@ -1553,81 +856,26 @@ "LANGUAGES.SPANISH": "Español", "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.DETAIL.DURATION_MINUTES": "{{minutes}} min", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", "REMOTE_CONTROL.CHANNEL_ABBR": "CH", "REMOTE_CONTROL.VOLUME_ABBR": "VOL", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", "SETTINGS.CHIP_RESTART": "Restart", "SETTINGS.EPG_OFFSET_UNIT": "min", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.LINK_BLOG": "Blog", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", "SETTINGS.PORT_RANGE_LABEL": "Port (1-65535)", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "STALKER.ACCOUNT_INFO.LOGIN": "Login", "STALKER.ACCOUNT_INFO.PORTAL_INFO": "Portal", "STALKER.ACCOUNT_INFO.STATUS": "Status", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.XTREAM_CODE": "Xtream Code", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", "XTREAM.ACCOUNT_INFO.HTTP_PORT": "HTTP", @@ -1677,16 +925,6 @@ "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", "PARENTAL_LOCK.PIN_DIALOG.PIN_LABEL": "PIN", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PLAYLISTS": "Playlists", "PORTALS.DETAIL.DURATION_HOURS_MINUTES": "{{hours}} h {{minutes}} min", "PORTALS.DETAIL.DURATION_MINUTES": "{{minutes}} min", @@ -1699,65 +937,20 @@ "REMOTE_CONTROL.VOLUME_ABBR": "VOL", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_CACHE": "Cache", "SETTINGS.CARD_XTREAM": "Xtream", "SETTINGS.CHIP_EXPERIMENTAL": "Experimental", "SETTINGS.EPG_OFFSET_UNIT": "min", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.LINK_BLOG": "Blog", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "STALKER.ACCOUNT_INFO.PORTAL_INFO": "Portal", "WORKSPACE.CONTEXT.ITEM_COUNT_ONE": "1 item", "WORKSPACE.DASHBOARD.HERO_ROLE_SLIDE": "slide", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.RAIL_DASHBOARD": "Dashboard", "WORKSPACE.SHELL.RAIL_DOWNLOADS": "Downloads", "WORKSPACE.SHELL.XTREAM_CODE": "Xtream Code", @@ -1766,7 +959,6 @@ "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", "XTREAM.ACCOUNT_INFO.HTTP_PORT": "HTTP", "XTREAM.ACCOUNT_INFO.RTMP_PORT": "RTMP", - "XTREAM.ACCOUNT_INFO.STATUS": "Status", "XTREAM.ACCOUNT_INFO.URL": "URL" }, "ru": { @@ -1855,74 +1047,19 @@ "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", "PARENTAL_LOCK.PIN_DIALOG.PIN_LABEL": "PIN", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.LINK_BLOG": "Blog", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", "SETTINGS.PORT_RANGE_LABEL": "Port (1-65535)", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "STALKER.ACCOUNT_INFO.PORTAL_INFO": "Portal", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", "XTREAM.ACCOUNT_INFO.HTTP_PORT": "HTTP", "XTREAM.ACCOUNT_INFO.RTMP_PORT": "RTMP", @@ -1964,72 +1101,17 @@ "LANGUAGES.SPANISH": "Español", "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.SEASON_EPISODE_BADGE": "S{{season}}·E{{episode}}", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.XTREAM_CODE": "Xtream Code", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS", "XTREAM.ACCOUNT_INFO.HTTP_PORT": "HTTP", @@ -2067,73 +1149,18 @@ "LANGUAGES.SPANISH": "Español", "LANGUAGES.TRADITIONAL_CHINESE": "繁體中文", "LANGUAGES.TURKISH": "Türkçe", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_MPV": "Opening MPV…", - "PLAYBACK_DIAGNOSTICS.ACTION_OPENING_VLC": "Opening VLC…", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_MPV": "Open MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_REOPEN_VLC": "Open VLC again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_MPV": "Try MPV again", - "PLAYBACK_DIAGNOSTICS.ACTION_RETRY_VLC": "Try VLC again", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_FAILED": "External player error", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_OPENING": "Opening player…", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_PLAYING": "Playing", - "PLAYBACK_DIAGNOSTICS.EXTERNAL_STARTED": "Player started", "PORTALS.MULTI_SOURCE.FILTER_HD": "HD+", "SETTINGS.APP_UPDATE_CHANNEL_NIGHTLY": "Nightly", "SETTINGS.APP_UPDATE_CHANNEL_STABLE": "Stable", - "SETTINGS.BROWSE_EPG_FILE": "Choose a local XMLTV file…", "SETTINGS.CARD_XTREAM": "Xtream", - "SETTINGS.EPG_SOURCE_FORMATS_EXAMPLES": "Examples:", - "SETTINGS.EPG_SOURCE_FORMATS_HINT": "Remote XMLTV links (http/https) and files on this computer are both supported, as plain .xml or gzip-compressed .xml.gz. Local files need an absolute path or a file:// URL.", - "SETTINGS.EPG_SOURCE_LIST_TITLE": "Source list", "SETTINGS.NAV_EPG": "EPG", "SETTINGS.PLAYER_ARTPLAYER": "ArtPlayer", "SETTINGS.PLAYER_VLC": "VLC", - "SOURCE_CLEANUP.CLEANUP_WARNING": "Source deleted; some follow-up cleanup failed", - "SOURCE_CLEANUP.CLOSE": "Close", - "SOURCE_CLEANUP.CONSEQUENCES": "Delete only sources you select. Their saved favourites, history and playback progress will also be removed. Downloaded files are kept.", - "SOURCE_CLEANUP.DELETE": "Delete selected · {{count}}", - "SOURCE_CLEANUP.DELETE_PROGRESS": "Processed {{done}} of {{total}} selected sources", - "SOURCE_CLEANUP.GROUP.confirmed": "Confirmed inactive accounts", - "SOURCE_CLEANUP.GROUP.results": "Deletion results", - "SOURCE_CLEANUP.GROUP.skipped": "Skipped sources", - "SOURCE_CLEANUP.GROUP.uncertain": "Review before deleting", - "SOURCE_CLEANUP.SCOPE": "All network sources in your library, regardless of page filters.", - "SOURCE_CLEANUP.SELECT_ALL": "Select all candidates", - "SOURCE_CLEANUP.SELECT_NONE": "Deselect all", - "SOURCE_CLEANUP.STATUS.checking": "Checking…", - "SOURCE_CLEANUP.STATUS.deleted": "Deleted", - "SOURCE_CLEANUP.STATUS.deleting": "Deleting…", - "SOURCE_CLEANUP.STATUS.failed": "Deletion failed — select to retry", - "SOURCE_CLEANUP.STATUS.skipped": "Playing, busy, changed or no longer present", - "SOURCE_CLEANUP.STOP": "Stop after current source", - "SOURCE_CLEANUP.SUMMARY": "Checked {{checked}}/{{total}} · Available {{available}} · Deleted {{deleted}} · Skipped {{skipped}} · Failed {{failed}}", - "SOURCE_CLEANUP.TITLE": "Clean up inactive sources…", - "SOURCE_CLEANUP.UNTITLED": "Untitled source", - "SOURCE_HEALTH.M3U_SCOPE": "Playlist URL, not individual channels", - "SOURCE_HEALTH.REASON.auth": "Access denied; account status unconfirmed", - "SOURCE_HEALTH.REASON.available": "Available", - "SOURCE_HEALTH.REASON.cancelled": "Check cancelled", - "SOURCE_HEALTH.REASON.checking": "Checking…", - "SOURCE_HEALTH.REASON.disabled": "Account disabled", - "SOURCE_HEALTH.REASON.expired": "Subscription expired", - "SOURCE_HEALTH.REASON.http": "Server returned an error", - "SOURCE_HEALTH.REASON.invalid": "Unexpected response", - "SOURCE_HEALTH.REASON.network": "Could not connect", - "SOURCE_HEALTH.REASON.paused": "Connection checks paused", - "SOURCE_HEALTH.REASON.timeout": "Check timed out", - "SOURCE_HEALTH.REASON.unknown": "Not verified", - "SOURCE_HEALTH.RECHECK": "Check again", "WORKSPACE.DASHBOARD.M3U": "M3U", "WORKSPACE.DASHBOARD.SEASON_EPISODE_BADGE": "S{{season}}·E{{episode}}", "WORKSPACE.DASHBOARD.STALKER": "Stalker", "WORKSPACE.DASHBOARD.STALKER_PORTAL": "Stalker Portal", "WORKSPACE.DASHBOARD.XTREAM": "Xtream", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_CLOSED": "Closed", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_DISMISS": "Dismiss", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_FAILED": "External player error", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_OPENING": "Opening player…", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_PLAYING": "Playing", - "WORKSPACE.SHELL.EXTERNAL_PLAYBACK_STARTED": "Player started", "WORKSPACE.SHELL.STALKER_PORTAL": "Stalker Portal", "WORKSPACE.SHELL.XTREAM_CODE": "Xtream Code", "XTREAM.ACCOUNT_INFO.HTTPS_PORT": "HTTPS",