From edddd1153f6214bf81a33713f9774a36226ffa71 Mon Sep 17 00:00:00 2001 From: Arne Weber Date: Wed, 22 May 2024 01:57:18 +0200 Subject: [PATCH 01/10] removed English.json from gitignore --- .gitignore | 2 +- lang/English.json | 163 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 164 insertions(+), 1 deletion(-) create mode 100644 lang/English.json diff --git a/.gitignore b/.gitignore index a71ef047..3abda3d9 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ __pycache__ log.txt /lock.file settings.json -/lang/English.json +#/lang/English.json # AppImage /AppDir /appimage-builder diff --git a/lang/English.json b/lang/English.json new file mode 100644 index 00000000..5d0ba679 --- /dev/null +++ b/lang/English.json @@ -0,0 +1,163 @@ +{ + "english_name": "English", + "status": { + "terminated": "\nApplication Terminated.\nClose the window to exit the application.", + "watching": "Watching: {channel}", + "goes_online": "{channel} goes ONLINE, switching...", + "goes_offline": "{channel} goes OFFLINE, switching...", + "claimed_drop": "Claimed drop: {drop}", + "claimed_points": "Claimed bonus points: {points}", + "earned_points": "Earned points for watching: {points}, total: {balance}", + "no_channel": "No available channels to watch. Waiting for an ONLINE channel...", + "no_campaign": "No active campaigns to mine drops for. Waiting for an active campaign..." + }, + "login": { + "unexpected_content": "Unexpected content type returned, usually due to being redirected. Do you need to login for internet access?", + "chrome": { + "startup": "Opening Chrome...", + "login_to_complete": "Complete the login procedure manually by pressing the Login button again.", + "no_token": "No authorization token could be found.", + "closed_window": "Chrome window was closed before the login procedure could complete." + }, + "error_code": "Login error code: {error_code}", + "incorrect_login_pass": "Incorrect username or password.", + "incorrect_email_code": "Incorrect email code.", + "incorrect_twofa_code": "Incorrect 2FA code.", + "email_code_required": "Email code required. Check your email.", + "twofa_code_required": "2FA token required." + }, + "error": { + "captcha": "Your login attempt was denied by CAPTCHA.\nPlease try again in 12+ hours.", + "site_down": "Twitch is down, retrying in {seconds} seconds...", + "no_connection": "Cannot connect to Twitch, retrying in {seconds} seconds..." + }, + "gui": { + "output": "Output", + "status": { + "name": "Status", + "idle": "Idle", + "exiting": "Exiting...", + "terminated": "Terminated", + "cleanup": "Cleaning up channels...", + "gathering": "Gathering channels...", + "switching": "Switching the channel...", + "fetching_inventory": "Fetching inventory...", + "fetching_campaigns": "Fetching campaigns...", + "adding_campaigns": "Adding campaigns to inventory... {counter}" + }, + "tabs": { + "main": "Main", + "inventory": "Inventory", + "settings": "Settings", + "help": "Help" + }, + "tray": { + "notification_title": "Mined Drop", + "minimize": "Minimize to Tray", + "show": "Show", + "quit": "Quit" + }, + "login": { + "name": "Login Form", + "labels": "Status:\nUser ID:", + "logged_in": "Logged in", + "logged_out": "Logged out", + "logging_in": "Logging in...", + "required": "Login required", + "request": "Please log in to continue.", + "username": "Username", + "password": "Password", + "twofa_code": "2FA code (optional)", + "button": "Login" + }, + "websocket": { + "name": "Websocket Status", + "websocket": "Websocket #{id}:", + "initializing": "Initializing...", + "connected": "Connected", + "disconnected": "Disconnected", + "connecting": "Connecting...", + "disconnecting": "Disconnecting...", + "reconnecting": "Reconnecting..." + }, + "progress": { + "name": "Campaign Progress", + "drop": "Drop:", + "game": "Game:", + "campaign": "Campaign:", + "remaining": "{time} remaining", + "drop_progress": "Progress:", + "campaign_progress": "Progress:" + }, + "channels": { + "name": "Channels", + "switch": "Switch", + "load_points": "Load Points", + "online": "ONLINE \u2714", + "pending": "OFFLINE \u23f3", + "offline": "OFFLINE \u274c", + "headings": { + "channel": "Channel", + "status": "Status", + "game": "Game", + "viewers": "Viewers", + "points": "Points" + } + }, + "inventory": { + "filter": { + "name": "Filter", + "show": "Show:", + "not_linked": "Not linked", + "upcoming": "Upcoming", + "expired": "Expired", + "excluded": "Excluded", + "finished": "Finished", + "refresh": "Refresh" + }, + "status": { + "linked": "Linked \u2714", + "not_linked": "Not Linked \u274c", + "active": "Active \u2714", + "upcoming": "Upcoming \u23f3", + "expired": "Expired \u274c", + "claimed": "Claimed \u2714", + "ready_to_claim": "Ready to claim \u23f3" + }, + "starts": "Starts: {time}", + "ends": "Ends: {time}", + "allowed_channels": "Allowed Channels:", + "all_channels": "All", + "and_more": "and {amount} more...", + "percent_progress": "{percent} of {minutes} minutes", + "minutes_progress": "{minutes} minutes" + }, + "settings": { + "general": { + "name": "General", + "dark_theme": "Dark theme: ", + "autostart": "Autostart: ", + "tray": "Autostart into tray: ", + "tray_notifications": "Tray notifications: ", + "priority_only": "Priority Only: ", + "proxy": "Proxy (requires restart):" + }, + "game_name": "Game name", + "priority": "Priority", + "exclude": "Exclude", + "reload": "Reload", + "reload_text": "Most changes require a reload to take an immediate effect: " + }, + "help": { + "links": { + "name": "Useful Links", + "inventory": "See Twitch inventory", + "campaigns": "See all campaigns and manage account links" + }, + "how_it_works": "How It Works", + "how_it_works_text": "Every ~20 seconds, the application asks Twitch for a URL to the raw stream data of the channel currently being watched. It then fetches the metadata of this data stream - this is enough to advance the drops. Note that this completely bypasses the need to download any actual stream video and sound. To keep the status (ONLINE or OFFLINE) of the channels up-to-date, there's a websocket connection estabilished that receives events about streams going up or down, or updates regarding the current amount of viewers.", + "getting_started": "Getting Started", + "getting_started_text": "1. Login into the application.\n2. Ensure your Twitch account is linked to all campaigns you're interested in mining.\n3. If you're interested in just mining everything, uncheck \"Priority only\" and press on \"Reload\".\n4. If you want to mine specific games first, use the \"Priority\" list to setup an ordered list of games of your choice. Games from the top of the list will be attempted to be mined first, before the ones lower down the list.\n5. Keep the \"Priority only\" option checked, to avoid mining games that are not on the priority list. Or not - it's up to you.\n6. Use the \"Exclude\" list to tell the application which games should never be mined.\n7. Changing the contents of either of the lists, or changing the state of the \"Priority only\" option, requires you to press on \"Reload\" for the changes to take an effect." + } + } +} \ No newline at end of file From 7ec8d7b45706bf0375b6a8b2a30b828f54793b0f Mon Sep 17 00:00:00 2001 From: Arne Weber Date: Wed, 22 May 2024 02:32:02 +0200 Subject: [PATCH 02/10] added end-priority to translations --- lang/English.json | 1 + translate.py | 1 + 2 files changed, 2 insertions(+) diff --git a/lang/English.json b/lang/English.json index 5d0ba679..b3add9cc 100644 --- a/lang/English.json +++ b/lang/English.json @@ -140,6 +140,7 @@ "tray": "Autostart into tray: ", "tray_notifications": "Tray notifications: ", "priority_only": "Priority Only: ", + "prioritze_end": "Prioritize campaigns by end date: ", "proxy": "Proxy (requires restart):" }, "game_name": "Game name", diff --git a/translate.py b/translate.py index 68ecfe9f..da6b8535 100644 --- a/translate.py +++ b/translate.py @@ -364,6 +364,7 @@ class Translation(TypedDict): "tray": "Autostart into tray: ", "tray_notifications": "Tray notifications: ", "priority_only": "Priority Only: ", + "prioritze_end": "Prioritize campaigns by end date: ", "proxy": "Proxy (requires restart):", }, "game_name": "Game name", From f32fb6a3ca8cc7a0e99cec884c56fe577d19e4be Mon Sep 17 00:00:00 2001 From: Arne Weber Date: Thu, 23 May 2024 23:02:10 +0200 Subject: [PATCH 03/10] Should fix Theme-related crash on linux --- gui.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gui.py b/gui.py index 133f929c..e51bf75c 100644 --- a/gui.py +++ b/gui.py @@ -2159,6 +2159,9 @@ def print(self, message: str): def set_theme(root, manager, name): style = ttk.Style(root) + if not hasattr(set_theme, "default_style"): + set_theme.default_style = style.theme_use() # "Themes" is more fitting for the recolour and "Style" for the button style. + default_font = nametofont("TkDefaultFont") large_font = default_font.copy() large_font.config(size=12) @@ -2225,7 +2228,7 @@ def configure_combobox_list(combobox, flag, value): case "light" | "default" | _ : # When creating a new theme, additional values might need to be set, so the default theme remains consistent # General - style.theme_use('vista') + style.theme_use(set_theme.default_style) style.configure('.', background="#f0f0f0", foreground="#000000") # Buttons style.map("TButton", From 8d1dfe93d563f4a6ffb2359691b75e1aa5896ea3 Mon Sep 17 00:00:00 2001 From: Arne Weber Date: Thu, 23 May 2024 23:12:46 +0200 Subject: [PATCH 04/10] updated patch notes and README --- README.md | 2 +- patch_notes.txt | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a5191a1e..f189545a 100644 --- a/README.md +++ b/README.md @@ -132,4 +132,4 @@ if they aren't already there. Doing so ensures proper markdown rendering on Gith @Bamboozul - For the entirety of the Arabic (العربية) translation. @Kjerne - For the entirety of the Danish (Dansk) translation. -For updating Translations: @Kuddus73, @VSeryi, @Windows200000, @BreakshadowCN, @kilroy98, @zelda0079, @Calvineries, @VSeryi \ No newline at end of file +For updating Translations: @Kuddus73, @VSeryi, @Windows200000, @BreakshadowCN, @kilroy98, @zelda0079, @Calvineries, @VSeryi, @notNSANE, @ElvisDesigns \ No newline at end of file diff --git a/patch_notes.txt b/patch_notes.txt index 6b18e01d..bb2ba5fb 100644 --- a/patch_notes.txt +++ b/patch_notes.txt @@ -1,4 +1,9 @@ ## v15.3.0 + +### 23.5.2024 +- Fixed crash on Linux +- Updated English, German, Czech, Spanish and Russian translation as well as corresponding credits for dark themes and potential future Campaign prioritization by end date. + ### 22.5.2024 - Completed dark mode 🎉 From 19a278ef0ffdf558fb4c30841929f849df1e968e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elvis=20Gr=C4=81ps?= Date: Thu, 23 May 2024 21:06:11 +0000 Subject: [PATCH 05/10] =?UTF-8?q?Translate=20=D0=A0=D1=83=D1=81=D1=81?= =?UTF-8?q?=D0=BA=D0=B8=D0=B9.json=20via=20GitLocalize?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\201\321\201\320\272\320\270\320\271.json" | 326 +++++++++--------- 1 file changed, 164 insertions(+), 162 deletions(-) diff --git "a/lang/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.json" "b/lang/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.json" index e281d6d7..b3082bec 100644 --- "a/lang/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.json" +++ "b/lang/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.json" @@ -1,162 +1,164 @@ -{ - "english_name": "Russian", - "status": { - "terminated": "\nПриложение остановлено.\nЗакройте окно, чтобы выйти из приложения.", - "watching": "Просмотр канала: {channel}", - "goes_online": "Изменение: {channel} онлайн", - "goes_offline": "Изменение: {channel} онлайн", - "claimed_drop": "Drop получено: {drop}", - "claimed_points": "Получены очки канала: {points}", - "earned_points": "За просмотр начисляются очки канала: {points} | Сумма: {balance}", - "no_channel": "Нет участвующих каналов онлайн. Ожидание каналов...", - "no_campaign": "Нет участвующих кампаний онлайн. Ожидание кампаний..." - }, - "login": { - "chrome": { - "startup": "Запуск Браузера...", - "login_to_complete": "Нажмите Log In еще раз, чтобы завершить процесс входа в систему вручную..", - "no_token": "Не найден токен авторизации.", - "closed_window": "Окно Браузера было закрыто до завершения процесса входа в систему." - }, - "error_code": "Код ошибки входа в систему: {error_code}", - "unexpected_content": "Возвращен неожиданный тип содержимого, обычно из-за перенаправления. Требуется ли логин для доступа в Интернет?", - "incorrect_login_pass": "Неправильное имя пользователя или пароль.", - "incorrect_email_code": "Неправильный код электронной почты.", - "incorrect_twofa_code": "Неправильный код 2FA.", - "email_code_required": "Требуется код электронной почты. Пожалуйста, проверьте электронную почту.", - "twofa_code_required": "Требуется код 2FA." - }, - "error": { - "captcha": "Попытка входа в систему была отклонена CAPTCHA.\nПожалуйста, повторите попытку не менее чем через 12 часов.", - "site_down": "Twitch недоступен. Повторите попытку через {seconds} секунд...", - "no_connection": "Невозможно подключиться к Twitch. Повторите попытку через {seconds} секунд..." - }, - "gui": { - "output": "Протокол", - "status": { - "name": "Статус", - "idle": "Вхолостую", - "exiting": "Выход...", - "terminated": "Прекращено", - "cleanup": "Очистка каналов...", - "gathering": "Поиск каналов...", - "switching": "Переключение канала...", - "fetching_inventory": "Получение инвентаря...", - "fetching_campaigns": "Получение кампаний...", - "adding_campaigns": "Добавление кампаний в инвентарь... {counter}" - }, - "tabs": { - "main": "Главная", - "inventory": "Инвентарь", - "settings": "Настройки", - "help": "Помощь" - }, - "tray": { - "notification_title": "Drop получено", - "minimize": "Свернуть в трей", - "show": "Показать", - "quit": "Закрыть" - }, - "login": { - "name": "Авторизация", - "labels": "Статус:\nID пользователя:", - "logged_in": "Авторизован", - "logged_out": "не авторизован", - "logging_in": "Авторизация...", - "required": "Требуется авторизация", - "request": "Пожалуйста, авторизуйтесь, чтобы продолжить.", - "username": "Имя пользователя", - "password": "Пароль", - "twofa_code": "2FA код (опционально)", - "button": "Войти" - }, - "websocket": { - "name": "WebSocket статус", - "websocket": "WebSocket #{id}:", - "initializing": "Инициализация...", - "connected": "Подключено", - "disconnected": "Отключено", - "connecting": "Подключение...", - "disconnecting": "Отключение...", - "reconnecting": "Переподключение..." - }, - "progress": { - "name": "Ход кампании", - "drop": "Drop:", - "game": "Игра:", - "campaign": "Кампания:", - "remaining": "{time} осталось", - "drop_progress": "Прогресс:", - "campaign_progress": "Прогресс:" - }, - "channels": { - "name": "Каналы", - "switch": "Изменить", - "load_points": "Загрузить баллы", - "online": "ОНЛАЙН ✔", - "pending": "ОЖИДАНИЕ ⏳", - "offline": "ОФЛАЙН ❌", - "headings": { - "channel": "Канал", - "status": "Статус", - "game": "Игра", - "viewers": "Зрители", - "points": "Баллы" - } - }, - "inventory": { - "filter": { - "name": "Фильтр", - "show": "Показать:", - "not_linked": "Не связано", - "upcoming": "Будущие", - "expired": "Прошедшие", - "excluded": "Исключенные", - "finished": "Оконченные", - "refresh": "Обновить" - }, - "status": { - "linked": "Связанное ✔", - "not_linked": "Не связанное ❌", - "active": "Активное ✔", - "upcoming": "Будущее ⏳", - "expired": "Прошедшее ❌", - "claimed": "Получено ✔", - "ready_to_claim": "Готово к получению⏳" - }, - "starts": "Начало: {time}", - "ends": "Окончание: {time}", - "allowed_channels": "Участвующие каналы:", - "all_channels": "Все", - "and_more": "и еще {amount}...", - "percent_progress": "{percent} от {minutes} минут", - "minutes_progress": "{minutes} минут" - }, - "settings": { - "general": { - "name": "Общие", - "autostart": "Автозапуск", - "tray": "Автозапуск свёрнутым", - "tray_notifications": "Всплывающие уведомления", - "priority_only": "Только приоритет", - "proxy": "Прокси (Требуется перезапуск):" - }, - "game_name": "Игра", - "priority": "Приоритет", - "exclude": "Исключения", - "reload": "Перезагрузить", - "reload_text": "Большинство изменений требуют перезагрузки, чтобы вступить в силу немедленно: " - }, - "help": { - "links": { - "name": "Полезные ссылки", - "inventory": "Инвентарь Twitch", - "campaigns": "Все кампании Twitch" - }, - "how_it_works": "Как это работает?", - "how_it_works_text": "Каждые ~20 секунд приложение запрашивает у Twitch URL-адрес необработанных данных потока канала, который просматривается в данный момент. Затем он извлекает метаданные этого потока данных. \nЭтого достаточно, чтобы получить Drop. Таким образом, нет необходимости скачивать поток, что экономит трафик. \nДля поддержания актуального состояния каналов в режиме онлайн или офлайн устанавливается соединение websocket, которое проверяет состояние каналов.", - "getting_started": "Первые шаги", - "getting_started_text": "1. Войдите в приложение.\n2. Убедитесь, что аккаунт Twitch связан со всеми кампаниями, к которым есть интерес.\n3. Если вы хотите редактировать все Drops, снимите флажок \"Только приоритет\" и нажмите \"Перезагрузить\".\n4. Если необходимо смотреть только определенные игры, используйте список \"Приоритет\", чтобы сузить выбор игр.\n5. В списке приоритеты расставлены сверху вниз.\n6. Опция \"Только приоритет\" предотвращает просмотр игр, не входящих в список приоритетов.\n7. С помощью списка \"Исключения\" можно отфильтровать игры, которые не должны рассматриваться.\n8. Если списки или опции были изменены, нажмите \"Перезагрузить\", чтобы изменения были применены." - } - } -} +{ + "english_name": "Russian", + "status": { + "terminated": "\nПриложение остановлено.\nЗакройте окно, чтобы выйти из приложения.", + "watching": "Просмотр канала: {channel}", + "goes_online": "Изменение: {channel} онлайн", + "goes_offline": "Изменение: {channel} онлайн", + "claimed_drop": "Drop получено: {drop}", + "claimed_points": "Получены очки канала: {points}", + "earned_points": "За просмотр начисляются очки канала: {points} | Сумма: {balance}", + "no_channel": "Нет участвующих каналов онлайн. Ожидание каналов...", + "no_campaign": "Нет участвующих кампаний онлайн. Ожидание кампаний..." + }, + "login": { + "unexpected_content": "Возвращен неожиданный тип содержимого, обычно из-за перенаправления. Требуется ли логин для доступа в Интернет?", + "chrome": { + "startup": "Запуск Браузера...", + "login_to_complete": "Нажмите Log In еще раз, чтобы завершить процесс входа в систему вручную..", + "no_token": "Не найден токен авторизации.", + "closed_window": "Окно Браузера было закрыто до завершения процесса входа в систему." + }, + "error_code": "Код ошибки входа в систему: {error_code}", + "incorrect_login_pass": "Неправильное имя пользователя или пароль.", + "incorrect_email_code": "Неправильный код электронной почты.", + "incorrect_twofa_code": "Неправильный код 2FA.", + "email_code_required": "Требуется код электронной почты. Пожалуйста, проверьте электронную почту.", + "twofa_code_required": "Требуется код 2FA." + }, + "error": { + "captcha": "Попытка входа в систему была отклонена CAPTCHA.\nПожалуйста, повторите попытку не менее чем через 12 часов.", + "site_down": "Twitch недоступен. Повторите попытку через {seconds} секунд...", + "no_connection": "Невозможно подключиться к Twitch. Повторите попытку через {seconds} секунд..." + }, + "gui": { + "output": "Протокол", + "status": { + "name": "Статус", + "idle": "Вхолостую", + "exiting": "Выход...", + "terminated": "Прекращено", + "cleanup": "Очистка каналов...", + "gathering": "Поиск каналов...", + "switching": "Переключение канала...", + "fetching_inventory": "Получение инвентаря...", + "fetching_campaigns": "Получение кампаний...", + "adding_campaigns": "Добавление кампаний в инвентарь... {counter}" + }, + "tabs": { + "main": "Главная", + "inventory": "Инвентарь", + "settings": "Настройки", + "help": "Помощь" + }, + "tray": { + "notification_title": "Drop получено", + "minimize": "Свернуть в трей", + "show": "Показать", + "quit": "Закрыть" + }, + "login": { + "name": "Авторизация", + "labels": "Статус:\nID пользователя:", + "logged_in": "Авторизован", + "logged_out": "не авторизован", + "logging_in": "Авторизация...", + "required": "Требуется авторизация", + "request": "Пожалуйста, авторизуйтесь, чтобы продолжить.", + "username": "Имя пользователя", + "password": "Пароль", + "twofa_code": "2FA код (опционально)", + "button": "Войти" + }, + "websocket": { + "name": "WebSocket статус", + "websocket": "WebSocket #{id}:", + "initializing": "Инициализация...", + "connected": "Подключено", + "disconnected": "Отключено", + "connecting": "Подключение...", + "disconnecting": "Отключение...", + "reconnecting": "Переподключение..." + }, + "progress": { + "name": "Ход кампании", + "drop": "Drop:", + "game": "Игра:", + "campaign": "Кампания:", + "remaining": "{time} осталось", + "drop_progress": "Прогресс:", + "campaign_progress": "Прогресс:" + }, + "channels": { + "name": "Каналы", + "switch": "Изменить", + "load_points": "Загрузить баллы", + "online": "ОНЛАЙН ✔", + "pending": "ОЖИДАНИЕ ⏳", + "offline": "ОФЛАЙН ❌", + "headings": { + "channel": "Канал", + "status": "Статус", + "game": "Игра", + "viewers": "Зрители", + "points": "Баллы" + } + }, + "inventory": { + "filter": { + "name": "Фильтр", + "show": "Показать:", + "not_linked": "Не связано", + "upcoming": "Будущие", + "expired": "Прошедшие", + "excluded": "Исключенные", + "finished": "Оконченные", + "refresh": "Обновить" + }, + "status": { + "linked": "Связанное ✔", + "not_linked": "Не связанное ❌", + "active": "Активное ✔", + "upcoming": "Будущее ⏳", + "expired": "Прошедшее ❌", + "claimed": "Получено ✔", + "ready_to_claim": "Готово к получению⏳" + }, + "starts": "Начало: {time}", + "ends": "Окончание: {time}", + "allowed_channels": "Участвующие каналы:", + "all_channels": "Все", + "and_more": "и еще {amount}...", + "percent_progress": "{percent} от {minutes} минут", + "minutes_progress": "{minutes} минут" + }, + "settings": { + "general": { + "name": "Общие", + "dark_theme": "Тёмная тема: ", + "autostart": "Автозапуск", + "tray": "Автозапуск свёрнутым", + "tray_notifications": "Всплывающие уведомления", + "priority_only": "Только приоритет", + "prioritze_end": "Приоритизация кампаний по дате окончания:", + "proxy": "Прокси (Требуется перезапуск):" + }, + "game_name": "Игра", + "priority": "Приоритет", + "exclude": "Исключения", + "reload": "Перезагрузить", + "reload_text": "Большинство изменений требуют перезагрузки, чтобы вступить в силу немедленно: " + }, + "help": { + "links": { + "name": "Полезные ссылки", + "inventory": "Инвентарь Twitch", + "campaigns": "Все кампании Twitch" + }, + "how_it_works": "Как это работает?", + "how_it_works_text": "Каждые ~20 секунд приложение запрашивает у Twitch URL-адрес необработанных данных потока канала, который просматривается в данный момент. Затем он извлекает метаданные этого потока данных. \nЭтого достаточно, чтобы получить Drop. Таким образом, нет необходимости скачивать поток, что экономит трафик. \nДля поддержания актуального состояния каналов в режиме онлайн или офлайн устанавливается соединение websocket, которое проверяет состояние каналов.", + "getting_started": "Первые шаги", + "getting_started_text": "1. Войдите в приложение.\n2. Убедитесь, что аккаунт Twitch связан со всеми кампаниями, к которым есть интерес.\n3. Если вы хотите редактировать все Drops, снимите флажок \"Только приоритет\" и нажмите \"Перезагрузить\".\n4. Если необходимо смотреть только определенные игры, используйте список \"Приоритет\", чтобы сузить выбор игр.\n5. В списке приоритеты расставлены сверху вниз.\n6. Опция \"Только приоритет\" предотвращает просмотр игр, не входящих в список приоритетов.\n7. С помощью списка \"Исключения\" можно отфильтровать игры, которые не должны рассматриваться.\n8. Если списки или опции были изменены, нажмите \"Перезагрузить\", чтобы изменения были применены." + } + } +} From e152f2c15bf07bb93726242e5083419dbdaf6822 Mon Sep 17 00:00:00 2001 From: notNSANE Date: Thu, 23 May 2024 21:05:13 +0000 Subject: [PATCH 06/10] =?UTF-8?q?Translate=20Espa=C3=B1ol.json=20via=20Git?= =?UTF-8?q?Localize?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "lang/Espa\303\261ol.json" | 310 +++++++++++++++++++------------------ 1 file changed, 156 insertions(+), 154 deletions(-) diff --git "a/lang/Espa\303\261ol.json" "b/lang/Espa\303\261ol.json" index 809aada3..e7bae604 100644 --- "a/lang/Espa\303\261ol.json" +++ "b/lang/Espa\303\261ol.json" @@ -1,162 +1,164 @@ { - "english_name": "Spanish", + "english_name": "Spanish", + "status": { + "terminated": "\nLa aplicación se ha detenido.\nPor favor, cierre la aplicación.", + "watching": "Viendo el canal: {channel}", + "goes_online": "El canal {channel} se ha conectado, cambiando...", + "goes_offline": "El canal {channel} se ha desconectado, cambiando...", + "claimed_drop": "Drop reclamado: {drop}", + "claimed_points": "Recompensa de puntos reclamados: {points}", + "earned_points": "Puntos obtenidos por ver el stream: {points} | Total: {balance}", + "no_channel": "No se ha encontrado un canal en directo para ver. \nEsperando un canal en directo...", + "no_campaign": "No se ha encontrado una campaña activa. \nEsperando una nueva campaña..." + }, + "login": { + "unexpected_content": "Se produjo un error inesperado, \ngeneralmente debido a una redirección.\n¿Necesitas un VPN o iniciar sesión para acceder a internet?", + "chrome": { + "startup": "Iniciando Chrome...", + "login_to_complete": "Por favor, presione Iniciar sesión nuevamente para \ncompletar el inicio de sesión.", + "no_token": "No se pudo obtener un token de autorización.", + "closed_window": "La ventana de Chrome se cerró antes de que \nse completara el inicio de sesión." + }, + "error_code": "Error de inicio de sesión: {error_code}", + "incorrect_login_pass": "El usuario o contraseña ingresada es incorrecto.", + "incorrect_email_code": "El código de verificación de email es incorrecto.", + "incorrect_twofa_code": "El código 2FA es incorrecto.", + "email_code_required": "Código de verificación de email requerido. \nPor favor, revise su email.", + "twofa_code_required": "Token 2FA requerido." + }, + "error": { + "captcha": "El inicio de sesión fue rechazado por CAPTCHA.\nPor favor, intente nuevamente en aprox. 12 horas.", + "site_down": "Twitch no está disponible. \nIntente de nuevo en {seconds} segundos...", + "no_connection": "No se ha podido conectar a Twitch. \nIntente de nuevo en {seconds} segundos..." + }, + "gui": { + "output": "Registros", "status": { - "terminated": "\nLa aplicación se ha detenido.\nPor favor, cierre la aplicación.", - "watching": "Viendo el canal: {channel}", - "goes_online": "El canal {channel} se ha conectado, cambiando...", - "goes_offline": "El canal {channel} se ha desconectado, cambiando...", - "claimed_drop": "Drop reclamado: {drop}", - "claimed_points": "Recompensa de puntos reclamados: {points}", - "earned_points": "Puntos obtenidos por ver el stream: {points} | Total: {balance}", - "no_channel": "No se ha encontrado un canal en directo para ver. \nEsperando un canal en directo...", - "no_campaign": "No se ha encontrado una campaña activa. \nEsperando una nueva campaña..." + "name": "Estado", + "idle": "En espera...", + "exiting": "Saliendo...", + "terminated": "Aplicación suspendida.", + "cleanup": "Limpiando canales...", + "gathering": "Buscando canales en directo...", + "switching": "Cambiando de canal...", + "fetching_inventory": "Obteniendo inventario...", + "fetching_campaigns": "Obteniendo campañas...", + "adding_campaigns": "Agregando lista de campañas al inventario... {counter}" + }, + "tabs": { + "main": "General", + "inventory": "Inventario", + "settings": "Configuración", + "help": "Ayuda" + }, + "tray": { + "notification_title": "Drop minado", + "minimize": "Minimizar a la bandeja", + "show": "Mostrar", + "quit": "Salir" }, "login": { - "chrome": { - "startup": "Iniciando Chrome...", - "login_to_complete": "Por favor, presione Iniciar sesión nuevamente para \ncompletar el inicio de sesión.", - "no_token": "No se pudo obtener un token de autorización.", - "closed_window": "La ventana de Chrome se cerró antes de que \nse completara el inicio de sesión." - }, - "error_code": "Error de inicio de sesión: {error_code}", - "unexpected_content": "Se produjo un error inesperado, \ngeneralmente debido a una redirección.\n¿Necesitas un VPN o iniciar sesión para acceder a internet?", - "incorrect_login_pass": "El usuario o contraseña ingresada es incorrecto.", - "incorrect_email_code": "El código de verificación de email es incorrecto.", - "incorrect_twofa_code": "El código 2FA es incorrecto.", - "email_code_required": "Código de verificación de email requerido. \nPor favor, revise su email.", - "twofa_code_required": "Token 2FA requerido." + "name": "Inicio de sesión", + "labels": "Estado:\nUsuario:", + "logged_in": "Conectado", + "logged_out": "Desconectado", + "logging_in": "Iniciando sesión...", + "required": "Se requiere inicio de sesión", + "request": "Por favor, inicie sesión para continuar.", + "username": "Usuario", + "password": "Contraseña", + "twofa_code": "Token 2FA (opcional)", + "button": "Iniciar sesión" + }, + "websocket": { + "name": "Estado del Websocket", + "websocket": "Websocket #{id}:", + "initializing": "Iniciando...", + "connected": "Conectado", + "disconnected": "Desconectado", + "connecting": "Conectando...", + "disconnecting": "Desconectando...", + "reconnecting": "Reconectando..." + }, + "progress": { + "name": "Progreso de la Campaña", + "drop": "Drop:", + "game": "Juego:", + "campaign": "Campaña:", + "remaining": "{time} restante", + "drop_progress": "Progreso:", + "campaign_progress": "Progreso:" + }, + "channels": { + "name": "Canales", + "switch": "Cambiar", + "load_points": "Cargar Puntos", + "online": "ONLINE ✔", + "pending": "OFFLINE ⏳", + "offline": "OFFLINE ❌", + "headings": { + "channel": "Canal", + "status": "Estado", + "game": "Juego", + "viewers": "Espectadores", + "points": "Puntos" + } + }, + "inventory": { + "filter": { + "name": "Filtro de campañas", + "show": "Mostrar:", + "not_linked": "No enlazado", + "upcoming": "Próximas", + "expired": "Expiradas", + "excluded": "Excluidas", + "finished": "Completadas", + "refresh": "Actualizar" + }, + "status": { + "linked": "Vinculado ✔", + "not_linked": "Sin vincular ❌", + "active": "Activo ✔", + "upcoming": "Próximamente ⏳", + "expired": "Expirado ❌", + "claimed": "Reclamado ✔", + "ready_to_claim": "Listo para reclamar ⏳" + }, + "starts": "Comienza: {time}", + "ends": "Termina: {time}", + "allowed_channels": "Canales permitidos:", + "all_channels": "Todos", + "and_more": "y {amount} más...", + "percent_progress": "{percent} de {minutes} minutos", + "minutes_progress": "{minutes} minutos" }, - "error": { - "captcha": "El inicio de sesión fue rechazado por CAPTCHA.\nPor favor, intente nuevamente en aprox. 12 horas.", - "site_down": "Twitch no está disponible. \nIntente de nuevo en {seconds} segundos...", - "no_connection": "No se ha podido conectar a Twitch. \nIntente de nuevo en {seconds} segundos..." + "settings": { + "general": { + "name": "Ajustes generales", + "dark_theme": "Tema oscuro: ", + "autostart": "Ejecutar al iniciar el sistema: ", + "tray": "Ejecutar en la bandeja del sistema: ", + "tray_notifications": "Mostrar notificaciones: ", + "priority_only": "Minar solo juegos preferidos: ", + "prioritze_end": "Priorizar campañas por fecha de finalización: ", + "proxy": "Proxy (requiere reinicio):" + }, + "game_name": "Nombre del juego", + "priority": "Lista de juegos preferidos", + "exclude": "Lista de juegos excluidos", + "reload": "Recargar", + "reload_text": "La mayoría de los cambios requieren recargar o reiniciar la aplicación para que sean aplicados: " }, - "gui": { - "output": "Registros", - "status": { - "name": "Estado", - "idle": "En espera...", - "exiting": "Saliendo...", - "terminated": "Aplicación suspendida.", - "cleanup": "Limpiando canales...", - "gathering": "Buscando canales en directo...", - "switching": "Cambiando de canal...", - "fetching_inventory": "Obteniendo inventario...", - "fetching_campaigns": "Obteniendo campañas...", - "adding_campaigns": "Agregando lista de campañas al inventario... {counter}" - }, - "tabs": { - "main": "General", - "inventory": "Inventario", - "settings": "Configuración", - "help": "Ayuda" - }, - "tray": { - "notification_title": "Drop minado", - "minimize": "Minimizar a la bandeja", - "show": "Mostrar", - "quit": "Salir" - }, - "login": { - "name": "Inicio de sesión", - "labels": "Estado:\nUsuario:", - "logged_in": "Conectado", - "logged_out": "Desconectado", - "logging_in": "Iniciando sesión...", - "required": "Se requiere inicio de sesión", - "request": "Por favor, inicie sesión para continuar.", - "username": "Usuario", - "password": "Contraseña", - "twofa_code": "Token 2FA (opcional)", - "button": "Iniciar sesión" - }, - "websocket": { - "name": "Estado del Websocket", - "websocket": "Websocket #{id}:", - "initializing": "Iniciando...", - "connected": "Conectado", - "disconnected": "Desconectado", - "connecting": "Conectando...", - "disconnecting": "Desconectando...", - "reconnecting": "Reconectando..." - }, - "progress": { - "name": "Progreso de la Campaña", - "drop": "Drop:", - "game": "Juego:", - "campaign": "Campaña:", - "remaining": "{time} restante", - "drop_progress": "Progreso:", - "campaign_progress": "Progreso:" - }, - "channels": { - "name": "Canales", - "switch": "Cambiar", - "load_points": "Cargar Puntos", - "online": "ONLINE ✔", - "pending": "OFFLINE ⏳", - "offline": "OFFLINE ❌", - "headings": { - "channel": "Canal", - "status": "Estado", - "game": "Juego", - "viewers": "Espectadores", - "points": "Puntos" - } - }, - "inventory": { - "filter": { - "name": "Filtro de campañas", - "show": "Mostrar:", - "not_linked": "No enlazado", - "upcoming": "Próximas", - "expired": "Expiradas", - "excluded": "Excluidas", - "finished": "Completadas", - "refresh": "Actualizar" - }, - "status": { - "linked": "Vinculado ✔", - "not_linked": "Sin vincular ❌", - "active": "Activo ✔", - "upcoming": "Próximamente ⏳", - "expired": "Expirado ❌", - "claimed": "Reclamado ✔", - "ready_to_claim": "Listo para reclamar ⏳" - }, - "starts": "Comienza: {time}", - "ends": "Termina: {time}", - "allowed_channels": "Canales permitidos:", - "all_channels": "Todos", - "and_more": "y {amount} más...", - "percent_progress": "{percent} de {minutes} minutos", - "minutes_progress": "{minutes} minutos" - }, - "settings": { - "general": { - "name": "Ajustes generales", - "autostart": "Ejecutar al iniciar el sistema: ", - "tray": "Ejecutar en la bandeja del sistema: ", - "tray_notifications": "Mostrar notificaciones: ", - "priority_only": "Minar solo juegos preferidos: ", - "proxy": "Proxy (requiere reinicio):" - }, - "game_name": "Nombre del juego", - "priority": "Lista de juegos preferidos", - "exclude": "Lista de juegos excluidos", - "reload": "Recargar", - "reload_text": "La mayoría de los cambios requieren recargar o reiniciar la aplicación para que sean aplicados: " - }, - "help": { - "links": { - "name": "Enlaces útiles", - "inventory": "Ver inventario de Twitch", - "campaigns": "Ver todas las campañas y administrar cuentas vinculadas" - }, - "how_it_works": "Cómo funciona", - "how_it_works_text": "Aproximadamente cada 20 segundos, la aplicación solicita a Twitch la URL de los datos del canal que estamos viendo. \nDe esta forma, obtenemos sus metadatos, lo que nos permite ahorrar en la descarga de video o audio del stream. \nPara mantener actualizados los estados (ONLINE o OFFLINE) de los canales, así como el número de espectadores, \nse establece una conexión WebSocket mediante de la cual recibimos la información actualizada de los streams.", - "getting_started": "Primeros pasos", - "getting_started_text": "1. Inicie sesión en la aplicación. \n2. Verifique que su cuenta de Twitch esté vinculada a todas las campañas deseadas a minar. \n3. Si desea minar todas las campañas, desmarque la opción \"Minar solo juegos preferidos\" y presione \"Recargar\". \n4. Si desea darle prioridad a una campaña específica, utilice la \"Lista de juegos preferidos\" para crear una lista de prioridad. \nLos juegos en la parte superior de la lista se intentarán minar antes de los que estén más abajo. \n5. Utilice la opción \"Minar solo juegos preferidos\" si desea evitar minar juegos que no estén en la lista de juegos preferidos. \n6. Utilice la \"Lista de juegos excluidos\" si desea evitar minar juegos que no estén en la lista de juegos excluidos. \n7. Al utilizar la opción \"Minar solo juegos preferidos\" o al cambiar el contenido de las listas, \nserá necesario presionar el botón \"Recargar\" para que los cambios sean aplicados." - } + "help": { + "links": { + "name": "Enlaces útiles", + "inventory": "Ver inventario de Twitch", + "campaigns": "Ver todas las campañas y administrar cuentas vinculadas" + }, + "how_it_works": "Cómo funciona", + "how_it_works_text": "Aproximadamente cada 20 segundos, la aplicación solicita a Twitch la URL de los datos del canal que estamos viendo. \nDe esta forma, obtenemos sus metadatos, lo que nos permite ahorrar en la descarga de video o audio del stream. \nPara mantener actualizados los estados (ONLINE o OFFLINE) de los canales, así como el número de espectadores, \nse establece una conexión WebSocket mediante de la cual recibimos la información actualizada de los streams.", + "getting_started": "Primeros pasos", + "getting_started_text": "1. Inicie sesión en la aplicación. \n2. Verifique que su cuenta de Twitch esté vinculada a todas las campañas deseadas a minar. \n3. Si desea minar todas las campañas, desmarque la opción \"Minar solo juegos preferidos\" y presione \"Recargar\". \n4. Si desea darle prioridad a una campaña específica, utilice la \"Lista de juegos preferidos\" para crear una lista de prioridad. \nLos juegos en la parte superior de la lista se intentarán minar antes de los que estén más abajo. \n5. Utilice la opción \"Minar solo juegos preferidos\" si desea evitar minar juegos que no estén en la lista de juegos preferidos. \n6. Utilice la \"Lista de juegos excluidos\" si desea evitar minar juegos que no estén en la lista de juegos excluidos. \n7. Al utilizar la opción \"Minar solo juegos preferidos\" o al cambiar el contenido de las listas, \nserá necesario presionar el botón \"Recargar\" para que los cambios sean aplicados." } + } } From 0a3c4eae0c199c6fb9e7999ad3481c2fc0001183 Mon Sep 17 00:00:00 2001 From: Arne Weber Date: Thu, 23 May 2024 21:04:09 +0000 Subject: [PATCH 07/10] Translate Deutsch.json via GitLocalize --- lang/Deutsch.json | 325 +++++++++++++++++++++++----------------------- 1 file changed, 164 insertions(+), 161 deletions(-) diff --git a/lang/Deutsch.json b/lang/Deutsch.json index 2cca9feb..f47ca00f 100644 --- a/lang/Deutsch.json +++ b/lang/Deutsch.json @@ -1,161 +1,164 @@ -{ - "english_name": "German", - "status": { - "terminated": "\nAnwendung gestoppt.\nFenster schließen, um die Anwendung zu beenden", - "watching": "{channel} wird zugesehen", - "goes_online": "{channel} ist ONLINE gegangen, wechseln...", - "goes_offline": "{channel} ist OFFLINE gegangen, wechseln...", - "claimed_drop": "Drop abgeholt: {drop}", - "claimed_points": "Kanal-Punkte verdient: {points}", - "earned_points": "Verdiente Kanal-Punkte fürs zuschauen: {points} | Summe: {balance}", - "no_channel": "Keine teilnehmenden Kanäle online. Warten auf Kanäle...", - "no_campaign": "Keine aktiven Kampagnen verfügbar. Warten auf neue Kampagne..." - }, - "login": { - "chrome": { - "startup": "Starte Chrome...", - "login_to_complete": "Erneut auf Anmelden drücken, um den Anmeldevorgang manuell abzuschließen.", - "no_token": "Es wurde kein Autorisierungs-Token gefunden.", - "closed_window": "Das Chrome-Fenster wurde geschlossen, bevor der Anmeldevorgang abgeschlossen werden konnte." - }, - "error_code": "Login-Fehlercode: {error_code}", - "unexpected_content": "Unerwarteter Inhaltstyp zurückgegeben, normalerweise aufgrund einer Weiterleitung.\nIst ein Login für den Internetzugang erforderlich?", - "incorrect_login_pass": "Falscher Benutzername oder Passwort.", - "incorrect_email_code": "Falscher E-Mail Code.", - "incorrect_twofa_code": "Falscher 2FA Code.", - "email_code_required": "E-Mail Code erforderlich. Bitte E-Mail prüfen.", - "twofa_code_required": "2FA Token erforderlich." - }, - "error": { - "captcha": "Der Anmeldeversuch wurde durch CAPTCHA verweigert.\nBitte versuche es in mindestens 12 Stunden erneut.", - "site_down": "Twitch ist nicht erreichbar. Erneuter Versuch in {seconds} Sekunden...", - "no_connection": "Keine Verbindung zu Twitch möglich. Erneuter Versuch in {seconds} Sekunden..." - }, - "gui": { - "output": "Protokoll", - "status": { - "name": "Status", - "idle": "Im Leerlauf", - "exiting": "Beenden...", - "terminated": "Abgebrochen", - "cleanup": "Kanäle aufräumen..", - "gathering": "Kanäle sammeln...", - "switching": "Wechsel des Kanals...", - "fetching_inventory": "Lade Inventar...", - "fetching_campaigns": "Lade Kampagnen...", - "adding_campaigns": "Kampagnen dem Inventar hinzufügen... {counter}" - }, - "tabs": { - "main": "Hauptseite", - "inventory": "Inventar", - "settings": "Einstellungen", - "help": "Hilfe" - }, - "tray": { - "notification_title": "Drop abgeholt", - "minimize": "Minimiere ins System Tray", - "show": "Anzeigen", - "quit": "Beenden" - }, - "login": { - "name": "Login", - "labels": "Status:\nBenutzer ID:", - "logged_in": "Angemeldet", - "logged_out": "Abgemeldet", - "logging_in": "Anmelden...", - "required": "Anmeldung erforderlich", - "request": "Bitte einloggen um fortzufahren.", - "username": "Benutzername", - "password": "Passwort", - "twofa_code": "2FA Code (optional)", - "button": "Anmelden" - }, - "websocket": { - "name": "WebSocket Status", - "websocket": "WebSocket #{id}:", - "initializing": "Initialisieren...", - "connected": "Verbunden", - "disconnected": "Verbindung verloren", - "connecting": "Verbinden...", - "disconnecting": "Verbindung trennen...", - "reconnecting": "Neu verbinden..." - }, - "progress": { - "name": "Kampagnen-Fortschritt", - "drop": "Drop:", - "game": "Spiel:", - "campaign": "Kampagne:", - "remaining": "{time} verbleibend", - "drop_progress": "Fortschritt:", - "campaign_progress": "Fortschritt:" - }, - "channels": { - "name": "Kanäle", - "switch": "Wechseln", - "load_points": "Lade Punkte", - "online": "ONLINE ✔", - "pending": "OFFLINE ⏳", - "offline": "OFFLINE ❌", - "headings": { - "channel": "Kanal", - "status": "Status", - "game": "Spiel", - "viewers": "Zuschauer", - "points": "Punkte" - } - }, - "inventory": { - "filter": { - "name": "Filter", - "show": "Anzeigen:", - "not_linked": "Nicht verbunden", - "upcoming": "Zukünftig", - "expired": "Abgelaufen", - "excluded": "Ausgeschlossen", - "finished": "Abgeholt", - "refresh": "Aktualisieren" - }, - "status": { - "linked": "Verknüpft ✔", - "not_linked": "Nicht verknüpft ❌", - "active": "Aktiv ✔", - "upcoming": "Zukünftig ⏳", - "expired": "Abgelaufen ❌", - "claimed": "Abgeholt ✔", - "ready_to_claim": "Bereit zum abholen ⏳" - }, - "starts": "Beginnt: {time}", - "ends": "Endet: {time}", - "allowed_channels": "Teilnehmende Kanäle:", - "all_channels": "Alle", - "and_more": "und {amount} weitere...", - "percent_progress": "{percent} von {minutes} Minuten", - "minutes_progress": "{minutes} Minuten" - }, - "settings": { - "general": { - "name": "Allgemein", - "autostart": "Autostart: ", - "tray": "Autostart ins System Tray: ", - "priority_only": "Nur Priorität: ", - "proxy": "Proxy (Erfordert Neustart):" - }, - "game_name": "Spiel", - "priority": "Priorität", - "exclude": "Ausschließen", - "reload": "Neu laden", - "reload_text": "Die meisten Änderungen erfordern ein neu laden, um sofort wirksam zu werden: " - }, - "help": { - "links": { - "name": "Hilfreiche Links", - "inventory": "Twitch Inventar ansehen", - "campaigns": "Alle Twitch-Kampagnen ansehen" - }, - "how_it_works": "So funktioniert's", - "how_it_works_text": "Alle ~20 Sekunden fragt die Anwendung Twitch nach einer URL für die Rohdaten des Streams von dem Kanal, dem gerade zugesehen wird. Dann fordert sie die Metadaten dieses Datenstroms an. Dies reicht aus, um den Drop voranzutreiben. Auf diese Weise ist es nicht nötig den Stream herunterzuladen und spart Bandbreite.\nUm den Online- oder Offline-Status der Kanäle aktuell zu halten, wird eine Websocket-Verbindung eingerichtet,\ndie die Kanäle auf ihren Status überprüft.", - "getting_started": "Erste Schritte", - "getting_started_text": "• In der Anwendung anmelden.\n• Stelle sicher, dass das Twitch-Konto mit allen Kampagnen verknüpft ist, an denen Interesse besteht.\n• Sollen alle Drops bearbeitet werden, entferne den Haken bei \"Nur Priorität\" und drücke \"Neu laden\".\n• Sollen nur bestimmte Spiele in betracht gezogen werden, verwende die \"Priorität\" Liste um die Wahl nach Spielen einzugrenzen.\n• Die Liste priorisiert von oben nach unten.\n• Die Option \"Nur Priorität\" verhindert, dass Spiele, die nicht auf der Prioritätenliste stehen, bearbeitet werden.\n• Mit der Liste \"Ausschließen\", ist es möglich Spiele zu filtern, die niemals in betracht gezogen werden sollen.\n• Wenn Listen oder Optionen angepasst wurden, muss \"Neu laden\" gedrückt werden, damit die Änderungen übernommen werden." - } - } -} +{ + "english_name": "German", + "status": { + "terminated": "\nAnwendung gestoppt.\nFenster schließen, um die Anwendung zu beenden", + "watching": "{channel} wird zugesehen", + "goes_online": "{channel} ist ONLINE gegangen, wechseln...", + "goes_offline": "{channel} ist OFFLINE gegangen, wechseln...", + "claimed_drop": "Drop abgeholt: {drop}", + "claimed_points": "Kanal-Punkte verdient: {points}", + "earned_points": "Verdiente Kanal-Punkte fürs zuschauen: {points} | Summe: {balance}", + "no_channel": "Keine teilnehmenden Kanäle online. Warten auf Kanäle...", + "no_campaign": "Keine aktiven Kampagnen verfügbar. Warten auf neue Kampagne..." + }, + "login": { + "unexpected_content": "Unerwarteter Inhaltstyp zurückgegeben, normalerweise aufgrund einer Weiterleitung.\nIst ein Login für den Internetzugang erforderlich?", + "chrome": { + "startup": "Starte Chrome...", + "login_to_complete": "Erneut auf Anmelden drücken, um den Anmeldevorgang manuell abzuschließen.", + "no_token": "Es wurde kein Autorisierungs-Token gefunden.", + "closed_window": "Das Chrome-Fenster wurde geschlossen, bevor der Anmeldevorgang abgeschlossen werden konnte." + }, + "error_code": "Login-Fehlercode: {error_code}", + "incorrect_login_pass": "Falscher Benutzername oder Passwort.", + "incorrect_email_code": "Falscher E-Mail Code.", + "incorrect_twofa_code": "Falscher 2FA Code.", + "email_code_required": "E-Mail Code erforderlich. Bitte E-Mail prüfen.", + "twofa_code_required": "2FA Token erforderlich." + }, + "error": { + "captcha": "Der Anmeldeversuch wurde durch CAPTCHA verweigert.\nBitte versuche es in mindestens 12 Stunden erneut.", + "site_down": "Twitch ist nicht erreichbar. Erneuter Versuch in {seconds} Sekunden...", + "no_connection": "Keine Verbindung zu Twitch möglich. Erneuter Versuch in {seconds} Sekunden..." + }, + "gui": { + "output": "Protokoll", + "status": { + "name": "Status", + "idle": "Im Leerlauf", + "exiting": "Beenden...", + "terminated": "Abgebrochen", + "cleanup": "Kanäle aufräumen..", + "gathering": "Kanäle sammeln...", + "switching": "Wechsel des Kanals...", + "fetching_inventory": "Lade Inventar...", + "fetching_campaigns": "Lade Kampagnen...", + "adding_campaigns": "Kampagnen dem Inventar hinzufügen... {counter}" + }, + "tabs": { + "main": "Hauptseite", + "inventory": "Inventar", + "settings": "Einstellungen", + "help": "Hilfe" + }, + "tray": { + "notification_title": "Drop abgeholt", + "minimize": "Minimiere ins System Tray", + "show": "Anzeigen", + "quit": "Beenden" + }, + "login": { + "name": "Login", + "labels": "Status:\nBenutzer ID:", + "logged_in": "Angemeldet", + "logged_out": "Abgemeldet", + "logging_in": "Anmelden...", + "required": "Anmeldung erforderlich", + "request": "Bitte einloggen um fortzufahren.", + "username": "Benutzername", + "password": "Passwort", + "twofa_code": "2FA Code (optional)", + "button": "Anmelden" + }, + "websocket": { + "name": "WebSocket Status", + "websocket": "WebSocket #{id}:", + "initializing": "Initialisieren...", + "connected": "Verbunden", + "disconnected": "Verbindung verloren", + "connecting": "Verbinden...", + "disconnecting": "Verbindung trennen...", + "reconnecting": "Neu verbinden..." + }, + "progress": { + "name": "Kampagnen-Fortschritt", + "drop": "Drop:", + "game": "Spiel:", + "campaign": "Kampagne:", + "remaining": "{time} verbleibend", + "drop_progress": "Fortschritt:", + "campaign_progress": "Fortschritt:" + }, + "channels": { + "name": "Kanäle", + "switch": "Wechseln", + "load_points": "Lade Punkte", + "online": "ONLINE ✔", + "pending": "OFFLINE ⏳", + "offline": "OFFLINE ❌", + "headings": { + "channel": "Kanal", + "status": "Status", + "game": "Spiel", + "viewers": "Zuschauer", + "points": "Punkte" + } + }, + "inventory": { + "filter": { + "name": "Filter", + "show": "Anzeigen:", + "not_linked": "Nicht verbunden", + "upcoming": "Zukünftig", + "expired": "Abgelaufen", + "excluded": "Ausgeschlossen", + "finished": "Abgeholt", + "refresh": "Aktualisieren" + }, + "status": { + "linked": "Verknüpft ✔", + "not_linked": "Nicht verknüpft ❌", + "active": "Aktiv ✔", + "upcoming": "Zukünftig ⏳", + "expired": "Abgelaufen ❌", + "claimed": "Abgeholt ✔", + "ready_to_claim": "Bereit zum abholen ⏳" + }, + "starts": "Beginnt: {time}", + "ends": "Endet: {time}", + "allowed_channels": "Teilnehmende Kanäle:", + "all_channels": "Alle", + "and_more": "und {amount} weitere...", + "percent_progress": "{percent} von {minutes} Minuten", + "minutes_progress": "{minutes} Minuten" + }, + "settings": { + "general": { + "name": "Allgemein", + "dark_theme": "Dunkler Design: ", + "autostart": "Autostart: ", + "tray": "Autostart ins System Tray: ", + "tray_notifications": "System Tray Benachrichtigungen:", + "priority_only": "Nur Priorität: ", + "prioritze_end": "Kampagnen nach Ende priorisieren: ", + "proxy": "Proxy (Erfordert Neustart):" + }, + "game_name": "Spiel", + "priority": "Priorität", + "exclude": "Ausschließen", + "reload": "Neu laden", + "reload_text": "Die meisten Änderungen erfordern ein neu laden, um sofort wirksam zu werden: " + }, + "help": { + "links": { + "name": "Hilfreiche Links", + "inventory": "Twitch Inventar ansehen", + "campaigns": "Alle Twitch-Kampagnen ansehen" + }, + "how_it_works": "So funktioniert's", + "how_it_works_text": "Alle ~20 Sekunden fragt die Anwendung Twitch nach einer URL für die Rohdaten des Streams von dem Kanal, dem gerade zugesehen wird. Dann fordert sie die Metadaten dieses Datenstroms an. Dies reicht aus, um den Drop voranzutreiben. Auf diese Weise ist es nicht nötig den Stream herunterzuladen und spart Bandbreite.\nUm den Online- oder Offline-Status der Kanäle aktuell zu halten, wird eine Websocket-Verbindung eingerichtet,\ndie die Kanäle auf ihren Status überprüft.", + "getting_started": "Erste Schritte", + "getting_started_text": "• In der Anwendung anmelden.\n• Stelle sicher, dass das Twitch-Konto mit allen Kampagnen verknüpft ist, an denen Interesse besteht.\n• Sollen alle Drops bearbeitet werden, entferne den Haken bei \"Nur Priorität\" und drücke \"Neu laden\".\n• Sollen nur bestimmte Spiele in betracht gezogen werden, verwende die \"Priorität\" Liste um die Wahl nach Spielen einzugrenzen.\n• Die Liste priorisiert von oben nach unten.\n• Die Option \"Nur Priorität\" verhindert, dass Spiele, die nicht auf der Prioritätenliste stehen, bearbeitet werden.\n• Mit der Liste \"Ausschließen\", ist es möglich Spiele zu filtern, die niemals in betracht gezogen werden sollen.\n• Wenn Listen oder Optionen angepasst wurden, muss \"Neu laden\" gedrückt werden, damit die Änderungen übernommen werden." + } + } +} From 95ca0b6bc8cb08c89a562f36b1a6d7b1efd2a642 Mon Sep 17 00:00:00 2001 From: Arne Weber Date: Thu, 23 May 2024 21:03:39 +0000 Subject: [PATCH 08/10] =?UTF-8?q?Translate=20=C4=8Ce=C5=A1tina.json=20via?= =?UTF-8?q?=20GitLocalize?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "lang/\304\214e\305\241tina.json" | 302 +++++++++++++++--------------- 1 file changed, 156 insertions(+), 146 deletions(-) diff --git "a/lang/\304\214e\305\241tina.json" "b/lang/\304\214e\305\241tina.json" index 0f1df371..60e9d303 100644 --- "a/lang/\304\214e\305\241tina.json" +++ "b/lang/\304\214e\305\241tina.json" @@ -1,154 +1,164 @@ { - "english_name": "Czech", + "english_name": "Czech", + "status": { + "terminated": "\nAplikace byla ukončena.", + "watching": "Sledování kanálu: {channel}", + "goes_online": "Kanál {channel} je online, přepínám...", + "goes_offline": "Kanál {channel} je offline, přepínám na další...", + "claimed_drop": "Drop vyzvednut: {drop}", + "claimed_points": "Vyzvednuto {points} bodů", + "earned_points": "Získáno {points} bodů za sledování. Celkem: {balance}", + "no_channel": "Žádný kanál není dostupný, čekání na další...", + "no_campaign": "Žádné dropy k dispozici, čekání na další dostupné dropy..." + }, + "login": { + "unexpected_content": "Chyba při přesměrování. Nepoužíváte VPN?", + "chrome": { + "startup": "Otevírá se Chrome...", + "login_to_complete": "Automaticky dokončete proces přihlášení opětovným kliknutím na tlačítko přihlásit.", + "no_token": "Nebyl nalezen žádný autorizační token.", + "closed_window": "Okno Chrome bylo zavřeno před dokončním procesu přihlášení." + }, + "error_code": "Chyba přihlášení: {error_code}", + "incorrect_login_pass": "Nesprávné uživatelské jméno nebo heslo.", + "incorrect_email_code": "Nesprávný E-Mail kód.", + "incorrect_twofa_code": "Nesprávný dvoufaktorový token", + "email_code_required": "K přihlášení je vyžadován kód který byl zaslán na váš E-Mail.", + "twofa_code_required": "K přihlášení je vyžadován dvoufaktorový kód." + }, + "error": { + "captcha": "Vaše připojení bylo zamítnuto systémem přihlásit.CAPTCHA, zkuste to znovu za 12 hodin.", + "site_down": "Služba Twitch je nedostupná,zkuste to znovu za {seconds} sekund...", + "no_connection": "Nelze se připojit k službe Twitch, zkuste to znovu za {seconds}..." + }, + "gui": { + "output": "Výstup", "status": { - "terminated": "\nAplikace byla ukončena.", - "watching": "Sledování kanálu: {channel}", - "goes_online": "Kanál {channel} je online, přepínám...", - "goes_offline": "Kanál {channel} je offline, přepínám na další...", - "claimed_drop": "Drop vyzvednut: {drop}", - "claimed_points": "Vyzvednuto {points} bodů", - "earned_points": "Získáno {points} bodů za sledování. Celkem: {balance}", - "no_channel": "Žádný kanál není dostupný, čekání na další...", - "no_campaign": "Žádné dropy k dispozici, čekání na další dostupné dropy..." + "name": "Status", + "idle": "Dokončeno načítání", + "exiting": "Ukončování...", + "terminated": "Aplikace ukončena", + "cleanup": "Čištění...", + "gathering": "Vyhledávání dostupného živého kanálu...", + "switching": "Přepínám mezi kanály...", + "fetching_inventory": "Načítání inventáře...", + "fetching_campaigns": "Načítání dropů...", + "adding_campaigns": "Přidávám dropy... {counter}" + }, + "tabs": { + "main": "Hlavní Panel", + "inventory": "Inventář", + "settings": "Nastavení", + "help": "Nápověda" + }, + "tray": { + "notification_title": "Začít sbírat dropy", + "minimize": "Minimalizovat", + "show": "Zobrazit", + "quit": "Ukončit" }, "login": { - "unexpected_content": "Chyba při přesměrování. Nepoužíváte VPN?", - "incorrect_login_pass": "Nesprávné přihlašení.", - "incorrect_email_code": "Nesprávný E-Mail kód.", - "incorrect_twofa_code": "Nesprávný dvoufaktorový token", - "email_code_required": "K přihlášení je vyžadován kód který byl zaslán na váš E-Mail.", - "twofa_code_required": "K přihlášení je vyžadován dvoufaktorový kód." + "name": "Přihlášení k službě Twitch", + "labels": "Uživatelské ID:", + "logged_in": "Přihlášeno", + "logged_out": "Odhlášeno", + "logging_in": "Přihlašování...", + "required": "Potřebujete se nejdříve přihlásit", + "request": "Pro přístup je potřeba přihlášení", + "username": "Uživatelské Jméno", + "password": "Heslo", + "twofa_code": "2FA Kód", + "button": "Přihlásit se" + }, + "websocket": { + "name": "Status Připojení Síťového Protokolu", + "websocket": "Websocket #{id}:", + "initializing": "Načítání", + "connected": "Připojeno", + "disconnected": "Odpojeno", + "connecting": "Připojování...", + "disconnecting": "Odpojování...", + "reconnecting": "Přepojování..." + }, + "progress": { + "name": "Průběh Dropu", + "drop": "Drop Odměny:", + "game": "Hra:", + "campaign": "Kampaň:", + "remaining": "Zbývá {time}", + "drop_progress": "Průběh dropu:", + "campaign_progress": "Průběh kampaňe:" + }, + "channels": { + "name": "Název", + "switch": "Přepnout", + "load_points": "Načíst body", + "online": "ONLINE ✔", + "pending": "PRŮBĚH ⏳", + "offline": "OFFLINE ❌", + "headings": { + "channel": "Kanál", + "status": "Status", + "game": "Hra", + "viewers": "Diváci", + "points": "Body" + } + }, + "inventory": { + "filter": { + "name": "Filtr", + "show": "Drop:", + "not_linked": "Nepropojeno", + "upcoming": "Nadcházející", + "expired": "Ukončeno", + "excluded": "Vynecháno", + "finished": "Dokončeno", + "refresh": "Obnovit" + }, + "status": { + "linked": "ŽIVĚ ✔", + "not_linked": "Zatím nejsou dostupné žádné kanály ❌", + "active": "ŽIVĚ ✔", + "upcoming": "Nadcházející ⏳", + "expired": "Ukončeno ❌", + "claimed": "Vyzvednuto ✔", + "ready_to_claim": "Připraveno k vyzvednutí ⏳" + }, + "starts": "Začíná: {time}", + "ends": "Začíná: {time}", + "allowed_channels": "Povolené kanály:", + "all_channels": "Všechny kanály", + "and_more": "Je tu {amount} ...", + "percent_progress": "{minutes} minut {percent}", + "minutes_progress": "{minutes} minut" }, - "error": { - "captcha": "Vaše připojení bylo zamítnuto službou Twitch, zkuste to znovu za 12 hodin.", - "site_down": "Služba Twitch je nedostupná,zkuste to znovu za {seconds} sekund...", - "no_connection": "Nelze se připojit k službe Twitch, zkuste to znovu za {seconds}..." + "settings": { + "general": { + "name": "Nastavení", + "dark_theme": "Tmavý vzhled: ", + "autostart": "Automatické spuštění: ", + "tray": "Automaticky spusti minimalizovaně: ", + "tray_notifications": "Oznámení v systémové liště:", + "priority_only": "Pouze prioritní: ", + "prioritze_end": "Upřednostnit kampaně podle data ukončení:", + "proxy": "Proxy:" + }, + "game_name": "Název Hry", + "priority": "Priorita", + "exclude": "Vynechat", + "reload": "Obnovit", + "reload_text": "Většina změn vyžaduje restart aplikace nebo obnovení: " }, - "gui": { - "output": "Výstup", - "status": { - "name": "Status", - "idle": "Dokončeno načítání", - "exiting": "Ukončování...", - "terminated": "Aplikace ukončena", - "cleanup": "Čištění...", - "gathering": "Vyhledávání dostupného živého kanálu...", - "switching": "Přepínám mezi kanály...", - "fetching_inventory": "Načítání inventáře...", - "fetching_campaigns": "Načítání dropů...", - "adding_campaigns": "Přidávám dropy... {counter}" - }, - "tabs": { - "main": "Hlavní Panel", - "inventory": "Inventář", - "settings": "Nastavení", - "help": "Nápověda" - }, - "tray": { - "notification_title": "Začít sbírat dropy", - "minimize": "Minimalizovat", - "show": "Zobrazit", - "quit": "Ukončit" - }, - "login": { - "name": "Přihlášení k službě Twitch", - "labels": "Uživatelské ID:", - "logged_in": "Přihlášeno", - "logged_out": "Odhlášeno", - "logging_in": "Přihlašování...", - "required": "Potřebujete se nejdříve přihlásit", - "request": "Pro přístup je potřeba přihlášení", - "username": "Uživatelské Jméno", - "password": "Heslo", - "twofa_code": "2FA Kód", - "button": "Přihlásit se" - }, - "websocket": { - "name": "Status Připojení Síťového Protokolu", - "websocket": "Websocket #{id}:", - "initializing": "Načítání", - "connected": "Připojeno", - "disconnected": "Odpojeno", - "connecting": "Připojování...", - "disconnecting": "Odpojování...", - "reconnecting": "Přepojování..." - }, - "progress": { - "name": "Průběh Dropu", - "drop": "Drop Odměny:", - "game": "Hra:", - "campaign": "Kampaň:", - "remaining": "Zbývá {time}", - "drop_progress": "Průběh dropu:", - "campaign_progress": "Průběh kampaňe:" - }, - "channels": { - "name": "Název", - "switch": "Přepnout", - "load_points": "Načíst body", - "online": "ONLINE \u2714", - "pending": "PRŮBĚH \u23f3", - "offline": "OFFLINE \u274c", - "headings": { - "channel": "Kanál", - "game": "Hra", - "points": "Body", - "status": "Status", - "viewers": "Diváci" - } - }, - "inventory": { - "filter": { - "name": "Filtr", - "show": "Drop:", - "not_linked": "Nepropojeno", - "expired": "Ukončeno", - "excluded": "Vynecháno", - "upcoming": "Nadcházející", - "finished": "Dokončeno", - "refresh": "Obnovit" - }, - "status": { - "linked": "ŽIVĚ \u2714", - "not_linked": "Zatím nejsou dostupné žádné kanály \u274c", - "active": "ŽIVĚ \u2714", - "upcoming": "Nadcházející \u23f3", - "expired": "Ukončeno \u274c", - "claimed": "Vyzvednuto \u2714", - "ready_to_claim": "Připraveno k vyzvednutí \u23f3" - }, - "starts": "Začíná: {time}", - "ends": "Začíná: {time}", - "allowed_channels": "Povolené kanály:", - "all_channels": "Všechny kanály", - "and_more": "Je tu {amount} ...", - "percent_progress": "{minutes} minut {percent}", - "minutes_progress": "{minutes} minut" - }, - "settings": { - "general": { - "name": "Nastavení", - "autostart": "Automatické spuštění: ", - "tray": "Automaticky spusti minimalizovaně: ", - "priority_only": "Pouze prioritní: ", - "proxy": "Proxy:" - }, - "game_name": "Název Hry", - "priority": "Priorita", - "exclude": "Vynechat", - "reload": "Obnovit", - "reload_text": "Většina změn vyžaduje restart aplikace nebo obnovení: " - }, - "help": { - "links": { - "name": "Nápověda", - "inventory": "Zobrazit Twitch Inventář", - "campaigns": "Zobrazit všechny kampaňe a spravovat propojené účty" - }, - "how_it_works": "Jak to funguje", - "how_it_works_text": "Každých ~20 sekund aplikace požádá Twitch o adresu k čistým datám streamu od kanálu, který je v současnosti sledován. Poté stáhne dodatkové informace těchto dat streamu - to stačí k posunu umístění. Všimněte si, že tímto způsobem zcela odpadá nutnost stahovat skutečné streamované video a zvuk. Aby byl stav kanálu (online nebo offline) stále aktuální, je navázáno spojení přes websocket, které přijímá události o spuštění nebo vypnutí streamů nebo aktualizace o aktuálním počtu diváků.", - "getting_started": "Jak začít", - "getting_started_text": "1. Přihlaste se do aplikace. \n2. Ujistěte se, že je váš účet Twitch spojen se všemi reklamními sériemi, které chcete těžit. \n3. Pokud chcete klepnout pouze na veškerý obsah, zrušte zaškrtnutí políčka 'Pouze prioritní' a stiskněte tlačítko 'Obnovit'. \n4. Pokud se chcete nejprve věnovat konkrétním hrám, použijte seznam 'Prioritní' a nastavte si pořadí vybraných her. Nejprve se vyzkouší hry na začátku seznamu a poté hry na konci seznamu. \n5. Ponechte zaškrtnutou možnost 'Pouze prioritní', abyste se vyhnuli vyhledávání her, které nejsou na seznamu priorit. Nebo ne - záleží na vás. \n6. Pomocí seznamu 'vyloučit' můžete aplikaci sdělit, které hry by neměly být vytěženy. \n7. Změna obsahu obou seznamů nebo stavu možnosti Pouze prioritní vyžaduje stisknutí tlačítka Znovu načíst, aby se změna projevila." - } + "help": { + "links": { + "name": "Nápověda", + "inventory": "Zobrazit Twitch Inventář", + "campaigns": "Zobrazit všechny kampaňe a spravovat propojené účty" + }, + "how_it_works": "Jak to funguje", + "how_it_works_text": "Každých ~20 sekund aplikace požádá Twitch o adresu k čistým datám streamu od kanálu, který je v současnosti sledován. Poté stáhne dodatkové informace těchto dat streamu - to stačí k posunu umístění. Všimněte si, že tímto způsobem zcela odpadá nutnost stahovat skutečné streamované video a zvuk. Aby byl stav kanálu (online nebo offline) stále aktuální, je navázáno spojení přes websocket, které přijímá události o spuštění nebo vypnutí streamů nebo aktualizace o aktuálním počtu diváků.", + "getting_started": "Jak začít", + "getting_started_text": "1. Přihlaste se do aplikace. \n2. Ujistěte se, že je váš účet Twitch spojen se všemi reklamními sériemi, které chcete těžit. \n3. Pokud chcete klepnout pouze na veškerý obsah, zrušte zaškrtnutí políčka 'Pouze prioritní' a stiskněte tlačítko 'Obnovit'. \n4. Pokud se chcete nejprve věnovat konkrétním hrám, použijte seznam 'Prioritní' a nastavte si pořadí vybraných her. Nejprve se vyzkouší hry na začátku seznamu a poté hry na konci seznamu. \n5. Ponechte zaškrtnutou možnost 'Pouze prioritní', abyste se vyhnuli vyhledávání her, které nejsou na seznamu priorit. Nebo ne - záleží na vás. \n6. Pomocí seznamu 'vyloučit' můžete aplikaci sdělit, které hry by neměly být vytěženy. \n7. Změna obsahu obou seznamů nebo stavu možnosti Pouze prioritní vyžaduje stisknutí tlačítka Znovu načíst, aby se změna projevila." } + } } From 4c613810154b5ba05359d5ec0d72c0ac8702f025 Mon Sep 17 00:00:00 2001 From: Arne Weber Date: Thu, 23 May 2024 23:27:50 +0200 Subject: [PATCH 09/10] updated patch notes --- patch_notes.txt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/patch_notes.txt b/patch_notes.txt index bb2ba5fb..67eac595 100644 --- a/patch_notes.txt +++ b/patch_notes.txt @@ -1,8 +1,12 @@ -## v15.3.0 +## v15.4.0 ### 23.5.2024 - Fixed crash on Linux -- Updated English, German, Czech, Spanish and Russian translation as well as corresponding credits for dark themes and potential future Campaign prioritization by end date. +- Updated English, German, Czech, Spanish and Russian translation as well as corresponding credits for dark themes and potential future Campaign prioritization by end date + + + +## v15.3.0 ### 22.5.2024 - Completed dark mode 🎉 @@ -10,7 +14,10 @@ ### 20.5.2024 - Added incomplete dark mode + + ## v15.2.0 + ### 19.5.2024 - Updated French translation as well as corresponding credits @@ -18,7 +25,10 @@ - Updated Russian, Ukrainian and Traditional Chinese translation as well as corresponding credits - Various changes to github workflows + + ## v15.1.0 + ### 17.5.2024 - Updated Italian, Simplified Chinese and Spanish translation as well as corresponding credits - Various changes to github workflows \ No newline at end of file From 844d4b9b85a5735ae4aba86564818a1fd744cc10 Mon Sep 17 00:00:00 2001 From: Arne Weber Date: Thu, 23 May 2024 23:45:52 +0200 Subject: [PATCH 10/10] more detailed patch notes --- patch_notes.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patch_notes.txt b/patch_notes.txt index 67eac595..23a26ca9 100644 --- a/patch_notes.txt +++ b/patch_notes.txt @@ -1,7 +1,7 @@ ## v15.4.0 ### 23.5.2024 -- Fixed crash on Linux +- Fixed crash on Linux caused by trying to apply a Windows-exclusive Tkinter theme - Updated English, German, Czech, Spanish and Russian translation as well as corresponding credits for dark themes and potential future Campaign prioritization by end date