From fb983a2cc9e8336b0918bda249e9157f3004ccac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B5=D0=BD=D0=B0?= Date: Tue, 9 Sep 2025 03:33:39 +0200 Subject: [PATCH] Add Ukrainian language support and localization updates - Imported Ukrainian localization file and added it to `index.ts`. - Updated English and Polish localization files with new ID entry keys. - Created `ukrainian.json` with various localization strings. - Modified `PluginInstallerModal.tsx` and `ThemeInstallerModal.tsx` to use localized strings for ID entry modals. --- assets/locales/index.ts | 2 + assets/locales/locales/english.json | 2 + assets/locales/locales/polish.json | 2 + assets/locales/locales/ukrainian.json | 142 ++++++++++++++++++ .../settings/plugins/PluginInstallerModal.tsx | 6 +- .../settings/themes/ThemeInstallerModal.tsx | 6 +- 6 files changed, 154 insertions(+), 6 deletions(-) create mode 100644 assets/locales/locales/ukrainian.json diff --git a/assets/locales/index.ts b/assets/locales/index.ts index 0d481932..ca88f9f0 100644 --- a/assets/locales/index.ts +++ b/assets/locales/index.ts @@ -41,6 +41,7 @@ import vietnamese from './locales/vietnamese.json'; import brazilian from './locales/brazilian.json'; import french from './locales/french.json'; import turkish from './locales/turkish.json'; +import ukrainian from './locales/ukrainian.json'; import { Logger } from '../src/utils/Logger'; interface LocalizationData { @@ -78,6 +79,7 @@ const localizationFiles: { [key: string]: LocalizationData } = { brazilian, french, turkish, + ukrainian, // Add other languages here }; diff --git a/assets/locales/locales/english.json b/assets/locales/locales/english.json index 93748ad6..d2aec72d 100644 --- a/assets/locales/locales/english.json +++ b/assets/locales/locales/english.json @@ -7,6 +7,8 @@ "settingsPanelSettings": "Settings", "settingsPanelAbout": "About", "settingsPanelBugReport": "Report a Bug", + "installEnterAnID": "Enter an ID", + "installEnterAnIDPlaceholder": "Enter an ID here...", "itemNoDescription": "No description yet.", "themePanelClientTheme": "Client Theme", "themePanelThemeTooltip": "Select the theme you want Steam to use (requires reload)", diff --git a/assets/locales/locales/polish.json b/assets/locales/locales/polish.json index 039951be..2fcab083 100644 --- a/assets/locales/locales/polish.json +++ b/assets/locales/locales/polish.json @@ -7,6 +7,8 @@ "settingsPanelSettings": "Ustawienia", "settingsPanelAbout": "O programie", "settingsPanelBugReport": "Zgłoś błąd", + "installEnterAnID": "Wprowadź ID", + "installEnterAnIDPlaceholder": "Wprowadź ID tutaj...", "itemNoDescription": "Brak opisu.", "themePanelClientTheme": "Motyw klienta", "themePanelThemeTooltip": "Wybierz motyw, którego ma używać Steam (wymaga ponownego uruchomienia)", diff --git a/assets/locales/locales/ukrainian.json b/assets/locales/locales/ukrainian.json new file mode 100644 index 00000000..3f17bfbb --- /dev/null +++ b/assets/locales/locales/ukrainian.json @@ -0,0 +1,142 @@ +{ + "settingsPanelPlugins": "Плагіни", + "settingsPanelThemes": "Теми", + "settingsPanelGeneral": "Загальні", + "settingsPanelUpdates": "Оновлення", + "settingsPanelLogs": "Журнали", + "settingsPanelSettings": "Налаштування", + "settingsPanelAbout": "Про додаток", + "settingsPanelBugReport": "Повідомити про помилку", + "installEnterAnID": "Введіть ID", + "installEnterAnIDPlaceholder": "Введіть ID тут...", + "itemNoDescription": "Опису ще немає.", + "themePanelClientTheme": "Тема клієнта", + "themePanelThemeTooltip": "Виберіть тему, яку ви хочете, щоб Steam використовував (потрібне перезавантаження)", + "pluginPanelPluginTooltip": "Ще жодного плагіна не встановлено?", + "themePanelGetMoreThemes": "Знайти більше тем", + "pluginPanelGetMorePlugins": "Знайти плагіни тут", + "themePanelInjectJavascript": "Дозволити вставку JavaScript", + "themePanelInjectJavascriptToolTip": "Визначте, чи дозволяти темам вставляти JavaScript у Steam. Вимкнення JavaScript може призвести до некоректної роботи інтерфейсу Steam (потрібне перезавантаження)", + "themePanelInjectCSS": "Дозволити вставку стилів", + "themePanelInjectCSSToolTip": "Визначте, чи дозволяти темам вставляти стилі у Steam. (потрібне перезавантаження)", + "themePanelCustomAccentColor": "Замінити акцентний колір", + "themePanelCustomAccentColorToolTip": "Замінити системний акцентний колір у Steam. Не діє, якщо активна тема не використовує системний акцентний колір.", + "themePanelCustomColorNotUsed": "Примітка: Активна тема НЕ використовує це налаштування.", + "themePanelCustomColorUsed": "Примітка: Активна тема використовує це налаштування!", + "updatePanelHasUpdates": "Доступні оновлення!", + "updatePanelHasUpdatesSub": "Millennium знайшов для вас такі оновлення!", + "updatePanelReleasedTag": "Випущено:", + "updatePanelReleasePatchNotes": "Примітки до оновлення:", + "updatePanelIsUpdating": "Оновлення...", + "updatePanelUpdate": "Оновити", + "updatePanelNoUpdatesFoundHeader": "Оновлень немає", + "updatePanelNoUpdatesFound": "Оновлень немає. Все актуально!", + "ViewMore": "Показати більше", + "aboutThemeAnonymous": "Анонімний", + "aboutThemeTitle": "Про тему", + "aboutThemeVerifiedDev": "Перевірений розробник", + "viewSourceCode": "Переглянути вихідний код", + "showInFolder": "Показати у папці", + "uninstall": "Видалити", + "optionSaveChanges": "Зберегти зміни", + "optionReloadNow": "Перезавантажити зараз", + "optionReloadLater": "Перезавантажити пізніше", + "optionReloadRequired": "Потрібне перезавантаження", + "optionPluginNeedsReload": "Щоб увімкнути або вимкнути вибрані плагіни, потрібно перезавантажити Steam. Ви впевнені, що хочете продовжити?", + "updatePanelUpdateNotifications": "Показувати сповіщення про оновлення", + "updatePanelUpdateNotificationsTooltip": "Millennium повідомить вас, коли елемент із вашої бібліотеки буде оновлено!", + "customThemeSettingsColors": "Кольори", + "customThemeSettingsConfig": "Користувацькі налаштування", + "errorMessageTitle": "Йойки!", + "errorSubmitIssueNotValid": "Ваше повідомлення про помилку є неправильним. Переконайтеся, що ваша проблема не стосується плагіна або теми. Якщо це так, зверніться до розробника плагіна чи теми.", + "errorSubmitIssueNoDescription": "Будь ласка, надайте опис вашої проблеми (не менше 10 символів).", + "errorSubmitIssueNoSteps": "Будь ласка, опишіть кроки для відтворення проблеми (не менше 10 символів).", + "errorSubmitIssueTooFrequent": "Зачекайте! Ви занадто часто надсилаєте повідомлення про помилки. Будь ласка, зачекайте трохи, перш ніж надсилати ще одне.", + "updateSuccessful": "Успішно оновлено {0}", + "updateSuccessfulRestart": "Успішно оновлено {0}! Оскільки ви зараз використовуєте Steam, для застосування змін необхідно його перезапустити.", + "updateFailed": "Не вдалося оновити {0}! Перевірте журнали для додаткової інформації.", + "messageTitleWarning": "Увага!", + "messageUpdateDisableClarification": "Ви хочете повністю вимкнути перевірку оновлень чи лише сповіщення про них? Ви завжди можете змінити це у налаштуваннях Millennium.", + "DisableUpdates": "Вимкнути оновлення", + "DisableOnlyNotifications": "Лише сповіщення", + "message1162025SecurityUpdate": "Ми вирішили оновити наші протоколи безпеки для вашої користі та користі всієї спільноти. З 27.03.2025 ми запровадили заходи, щоб явно запитувати, чи бажаєте ви отримувати оновлення Millennium.", + "message1162025SecurityUpdateTooltip": "Це стосується лише оновлень Millennium, а не тем і плагінів, які оновлюються окремо і ніколи не були автоматичними", + "toggleWantsMillenniumUpdates": "Чи бажаєте ви, щоб Millennium перевіряв наявність оновлень?", + "toggleWantsMillenniumUpdatesTooltip": "Якщо увімкнено, Millennium буде автоматично перевіряти наявність оновлень. Оновлення НЕ будуть застосовуватись автоматично, якщо ви не вимкнете сповіщення (параметр нижче). Ви отримаєте спливаюче повідомлення з опцією оновити чи відхилити.", + "toggleWantsMillenniumUpdatesNotifications": "Чи бажаєте ви отримувати сповіщення, коли знайдено оновлення? (подібно до цього спливаючого вікна)", + "toggleWantsMillenniumUpdatesNotificationsTooltip": "Якщо перевірка оновлень увімкнена, оновлення знайдено, і це налаштування увімкнене, ви отримаєте спливаюче вікно з опцією оновити або залишитися на поточній версії. Якщо перевірка оновлень увімкнена, оновлення знайдено, а це налаштування вимкнено, ви не отримаєте сповіщення і оновлення буде застосовано автоматично.", + "updateSecurityWarning": "Наполегливо рекомендуємо залишити ці налаштування увімкненими, щоб завжди мати найактуальніші виправлення безпеки. Відмова від оновлень Millennium може призвести до вразливостей, зламаних функцій чи інших проблем.", + "settingsAreChangeableLater": "Ви можете змінити ці налаштування пізніше у налаштуваннях Millennium.", + "strViewUpdateDiffInBrowser": "Переглянути відмінності у браузері", + "strViewDownloadInfo": "Переглянути інформацію про завантаження", + "strUpdateNextStartup": "Оновити при наступному запуску", + "strUpdateReject": "Відмовитись", + "strDontShowAgain": "Більше не показувати", + "strAnUpdateIsAvailable": "Доступне оновлення Millennium! Ми показуємо це повідомлення, оскільки ви погодилися отримувати оновлення. Якщо більше не хочете отримувати таких повідомлень, ви можете увімкнути автоматичні оновлення або повністю вимкнути оновлення у налаштуваннях Millennium.", + "updatePanelCheckForUpdates": "Перевірити оновлення", + "updatePanelShowUpdateNotifications": "Показувати сповіщення про оновлення", + "HoldOn": "Хвилинку!", + "updateFailedPluginRunning": "Millennium не може оновити \"{0}\", поки він запущений. Спочатку потрібно його вимкнути.", + "themeAndPluginUpdateNotification": "Millennium знайшов {0} доступних {1}", + "updateSingular": "оновлення", + "updatePlural": "оновлень", + "updatePanelErrorHeader": "Під час перевірки оновлень сталася помилка!", + "updatePanelErrorBody": "Будь ласка, перевірте підключення до інтернету і спробуйте ще раз. ", + "updatePanelErrorButton": "Спробувати ще раз", + "errorFailedConnection": "Не вдалося підключитися до Millennium!", + "errorFailedConnectionBody": "Ця проблема не пов’язана з мережею. Ймовірно, у вас відсутній необхідний файл Millennium або виникла неочікувана помилка.", + "errorFailedConnectionButton": "Відкрити папку журналів", + "strDone": "Готово", + "strUnknown": "Невідомо", + "strInstallPlugin": "Встановити {0}", + "strSuccessfulInstall": "Успішно встановлено {0}!", + "strInstallComplete": "Встановлення завершено", + "strInstallProgress": "Хід встановлення", + "strEnablePlugin": "Увімкнути плагін (потрібне перезавантаження)", + "strUseThemeRequiresReload": "Використати тему (потрібне перезавантаження)", + "strInvalidPluginBuildMessage": "Цей плагін не має дійсної збірки для вашої ОС.", + "strInvalidPluginBuild": "Недійсна збірка", + "strAlreadyInPluginLibrary": "{0} вже у вашій бібліотеці плагінів!", + "strAlreadyInstalled": "Вже встановлено", + "errorFailedToDownloadPlugin": "Не вдалося завантажити плагін: {0}", + "errorFailedToStartThemeInstaller": "Не вдалося запустити внутрішній модуль встановлення...", + "warningConflictingFiles": "Конфлікт файлів", + "warningThemeAlreadyInstalled": "Ця тема вже встановлена! Бажаєте перевстановити? Усі власні кастомізації буде втрачено.", + "errorFailedToUninstallTheme": "Не вдалося видалити тему: {0}", + "strNeverMind": "Не важливо", + "strReinstall": "Перевстановити", + "errorFailedToFetchTheme": "Не вдалося отримати інформацію про тему: ", + "errorFailedToFetchPlugin": "Не вдалося отримати інформацію про плагін: ", + "errorInvalidID": "ID порожній або недійсний", + "warnProceedInstallation": "Ви впевнені, що хочете продовжити встановлення?", + "strMillenniumUpdate": "Оновлення Millennium", + "strByAuthor": "Автор: {0}", + "strUpdatingTheme": "Оновлення теми...", + "strFinishedUpdating": "Оновлення завершено!", + "strPreparing": "Підготовка...", + "strUpdatingPlugin": "Оновлення плагіна...", + "strComplete": "Завершено!", + "eOnMillenniumUpdateDoNothing": "Нічого не робити", + "eOnMillenniumUpdateNotify": "Повідомити мене", + "eOnMillenniumUpdateAutoInstall": "Встановити автоматично", + "optionCheckForMillenniumUpdates": "Перевіряти оновлення Millennium", + "optionCheckForThemeAndPluginUpdates": "Перевіряти оновлення тем і плагінів", + "optionWhenAnUpdateForMillenniumIsAvailable": "Коли доступне оновлення Millennium", + "optionWhenAPluginOrThemeUpdateIsAvailable": "Коли доступне оновлення плагіна чи теми", + "headerOnStartup": "Під час запуску", + "headerUpdates": "Оновлення", + "headerNotifications": "Сповіщення", + "headerThemes": "Теми", + "optionInstallPlugin": "Встановити плагін", + "optionInstallTheme": "Встановити тему", + "optionBrowseLocalFiles": "Переглянути локальні файли", + "tooltipCheckForMillenniumUpdates": "Перевірка оновлень вимкнена, це налаштування не набуде чинності.", + "strWelcomeModalTitle": "Ласкаво просимо до Millennium 👋", + "strWelcomeModalDescription": "Раді вітати вас у нашій спільноті! Оскільки ви вперше запускаєте програму, це ідеальний час для короткого ознайомлення з ключовими можливостями.\n\nБільшість налаштувань Millennium знаходяться у Steam → Millennium.\n\nТам ви знайдете інструкції щодо встановлення тем/плагінів, увімкнення/вимкнення функцій тощо. І пам’ятайте, ви завжди можете [переглянути документацію](https://docs.steambrew.app), якщо маєте питання.", + "strWelcomeModalOKButton": "Зрозуміло!", + "strAbout": "Про додаток", + "strAboutVersion": "Версія Millennium", + "strAboutBuildDate": "Дата збірки Millennium", + "millenniumUpdateSuccessTitle": "Успішно оновлено!", + "millenniumUpdateSuccessMessage": "Millennium успішно оновлено до версії {0}. Зміни набудуть чинності після перезапуску." +} \ No newline at end of file diff --git a/assets/src/settings/plugins/PluginInstallerModal.tsx b/assets/src/settings/plugins/PluginInstallerModal.tsx index 0abf9960..fd8f9abb 100644 --- a/assets/src/settings/plugins/PluginInstallerModal.tsx +++ b/assets/src/settings/plugins/PluginInstallerModal.tsx @@ -31,7 +31,7 @@ import { ConfirmModal, pluginSelf, showModal, ShowModalResult, SuspensefulImage, TextField } from '@steambrew/client'; import React, { Component, useEffect } from 'react'; import { Utils } from '../../utils'; - +import { locale } from '../../../locales'; import FindPluginIdGif from '../../../static/plugin_id.gif'; import { PLUGINS_URL } from '../../utils/globals'; import { Installer } from '../general/Installer'; @@ -48,14 +48,14 @@ function PluginIdModal({ tutorialImageUrl, installer, modal, refetchDataCb }: Pl return ( Install a user plugin from an ID. These ID's can be found after selecting a plugin at setInstallID(e.target.value)} /> diff --git a/assets/src/settings/themes/ThemeInstallerModal.tsx b/assets/src/settings/themes/ThemeInstallerModal.tsx index 747ddda9..2b2b3d6d 100644 --- a/assets/src/settings/themes/ThemeInstallerModal.tsx +++ b/assets/src/settings/themes/ThemeInstallerModal.tsx @@ -31,7 +31,7 @@ import { ConfirmModal, pluginSelf, showModal, ShowModalResult, SuspensefulImage, TextField } from '@steambrew/client'; import React, { Component, useEffect } from 'react'; import { Utils } from '../../utils'; - +import { locale } from '../../../locales'; import FindThemeIdGif from '../../../static/theme_id.gif'; import { THEMES_URL } from '../../utils/globals'; import { Installer } from '../general/Installer'; @@ -48,14 +48,14 @@ function ThemeIdModal({ tutorialImageUrl, installer, modal, refetchDataCb }: The return ( Install a user theme from an ID. These ID's can be found after selecting a theme at setInstallID(e.target.value)} />