diff --git a/src/components/LocaleSelectorModal.tsx b/src/components/LocaleSelectorModal.tsx index 3d80d96..63c05da 100644 --- a/src/components/LocaleSelectorModal.tsx +++ b/src/components/LocaleSelectorModal.tsx @@ -24,6 +24,7 @@ export default function LocaleSelectorModal() { + {/* Add language here with the name of the language in his native name */} diff --git a/src/locales/LocaleTranslations.tsx b/src/locales/LocaleTranslations.tsx index e45e28b..609a33d 100644 --- a/src/locales/LocaleTranslations.tsx +++ b/src/locales/LocaleTranslations.tsx @@ -7,4 +7,5 @@ export default { de: require("./de.json") as Record, tr: require("./tr.json") as Record, ru: require("./ru.json") as Record, + ua: require("./ua.json") as Record, }; diff --git a/src/locales/ua.json b/src/locales/ua.json new file mode 100644 index 0000000..0eda993 --- /dev/null +++ b/src/locales/ua.json @@ -0,0 +1,119 @@ +{ + "topbar.discord": "Долучайтесь до нас в Discord", + "topbar.beer": "На келих пива ❤️", + "presetButtons.applyPresetTooltip": "Пресет буде завантажений в таблиці RyzenAdj та буде застосований", + "presetButtons.loadPresetTooltip": "Пресет буде завантажений в таблиці RyzenAdj, але не буде застосований", + "presetAutoApply.whenSessionResume": "При продовженні сесії", + "presetAutoApply.whenRCStart": "При старті Ryzen Controller", + "presetAutoApply.whenLaptopPluggedIn": "Коли підключено живлення ноутбука", + "presetAutoApply.whenLaptopPluggedOut": "При роботі ноутбука від АКБ", + "presetButtons.confirmDeletion": "Ви впевнені, що бажаєте видалити \"{preset}\"?", + "presetButtons.loadedPreset": "Пресет {preset} завантажений", + "presetButtons.uploadPresetConfirmation": "Ви впевнені, що бажаєте вивантажити {preset}?", + "presetListEmpty.youDontHaveAny": "У вас ще немає жодного пресета", + "presetListEmpty.sentencePart1": "Ви можете створити пресет, використовуючи кнопку", + "presetListEmpty.createPresetBtn": "Створити пресет", + "presetListEmpty.sentencePart2": ", яка доступна в таблицях налаштувань RyzenAdj (CPU, GPU, ...).", + "PresetOnline.listNotLoadedYet": "Список пресетів не завантажений, або онлайн-пресетів ще немає", + "PresetOnline.loadPresetListBtn": "Завантажити список пресетів", + "PresetOnline.sentencePart1": "Ви можете поділитися власним пресетом, натиснувши на кнопку", + "PresetOnline.uploadBtn": "Вивантажити", + "PresetOnline.sentencePart2": ", що доступна при наявності ваших пресетів.", + "sceneSelector.cpuTitle": "ЦП", + "sceneSelector.gpuTitle": "ГП Vega", + "ryzenAdj.maxGfxclk.label": "Максимальна частота Vega iGPU (МГц)", + "ryzenAdj.stapmTime.desc": "Skin Temperature Aware Power Management (STAPM). Визначає період буста, який буде використовуватись", + "ryzenAdj.slowLimit.desc": "Кількість енергії, яку процесор може використовувати при відключених рівнях буста", + "appContext.minimizeOnLaunch.name": "Згортати при запуску", + "appContext.ryzenAdjPath.name": "Шлях до RyzenAdj", + "sceneSelector.settingsTitle": "Налаштування", + "sceneSelector.powerTitle": "Живлення", + "ryzenAdj.slowTime.desc": "Визначає період часу, який буде використовуватися поза періодом буста, щоб забезпечити постійну потужність, яка має бути подана від БП", + "ryzenAdj.slowTime.label": "Відстеження потужності пакету (PPT) - повільний період часу", + "ryzenAdj.minFclkFrequency.desc": "Infinity Fabric - це маркетинговий термін AMD для моста, що з'єднує процесори (ГП / ЦП), що визначає обмеження мін. частоти шини", + "ryzenAdj.maxFclkFrequency.desc": "Infinity Fabric - це маркетинговий термін AMD для моста, що з'єднує процесори (ГП / ЦП), що визначає обмеження макс. частоти шини", + "ryzenAdj.stapmLimit.desc": "Skin Temperature Aware Power Management (STAPM). Визначає межу живлення від БП, що використовується для управління періодом буста пристрою.", + "ryzenAdj.stapmTime.label": "Період буста ЦП", + "ryzenAdj.vrmmaxCurrent.desc": "Ліміт потужності, що подається для материнської плати на процессор", + "ryzenAdj.vrmmaxCurrent.label": "Межа тока VRM (A)", + "appContext.ryzenAdjPath.shortDesc": "Повний шлях до бінарника RyzenAdj", + "ryzenAdj.maxFclkFrequency.label": "Максимальна частота Infinity Fabric (МГц)", + "ryzenAdj.stapmLimit.label": "CPU TDP (Вт)", + "appContext.autoStartOnBoot.shortDesc": "Запускати Ryzen Controller при старті ОС", + "sceneSelector.presetsTitle": "Пресети", + "ryzenAdj.psi0Current.label": "Поточне обмеження PSI0 (мА)", + "ryzenAdj.maxGfxclk.desc": "Максимальна частота (Vega) ГП, на якій він може працювати", + "ryzenAdj.minFclkFrequency.label": "Мінімальна частота Infinity Fabric (МГц)", + "ryzenAdj.slowLimit.label": "Мін. CPU TDP (Вт)", + "appContext.minimizeOnLaunch.shortDesc": "Запускати Ryzen Controller згорнутим", + "ryzenAdj.minGfxclk.label": "Мінімальна частота Vega iGPU (МГц)", + "ryzenAdj.fastLimit.desc": "Живлення, яке CPU може використовувати під час буста", + "appContext.minimizeToTray.name": "Згорнути в трей", + "ryzenAdj.psi0Current.desc": "Ліміт потужності, що подається для материнської плати на PSI0", + "ryzenAdj.minGfxclk.desc": "Мінімальна частота (Vega) ГП, на якій він може працювати", + "ryzenAdj.fastLimit.label": "CPU TDP при бусті (Вт)", + "appContext.autoStartOnBoot.name": "Автоматично запускатися при завантаженні ОС", + "appContext.minimizeToTray.shortDesc": "Згортати Ryzen Controller в трей замість панелі задач", + "appContext.reApplyPeriodically.desc": "На деяких ноутбуках BIOS інколи скидає ті налаштування, які RyzenAdj намагається виставити. Ви можете використати цю опцію, щоб періодично перезастосовувати налаштування.", + "sceneSelector.releasesTitle": "Релізи", + "ryzenAdj.tctlTemp.desc": "Температура, до якої CPU може нагрітися перед вимкненням буста", + "appContext.reApplyPeriodically.name": "Періодично перезастосовувати", + "ryzenAdj.tctlTemp.label": "Ліміт температури (°C)", + "appContext.reApplyPeriodically.shortDesc": "Дозволяє перезастосовувати налаштування RyzenAdj періодично (кожні X секунд)", + "PresetsScene.onlinePresetTitle": "Пресети в мережі", + "PresetsScene.localPresetTitle": "Локальні пресети", + "PresetsScene.autoApplyTitle": "Застосовувати пресет автоматично", + "SettingsScene.settingsTitle": "Налаштування", + "settingForm.currentPath": "Поточний шлях:", + "sysInfoCards.biosVersion": "Версія BIOS:", + "sysInfoCards.gpuPerfDesc": "{ram} МБ (Динамічна відеопам'ять: {dyn}).", + "SettingsScene.sysInfoTitle": "Інформація про систему", + "sysInfoCards.basicInfoTitle": "Загальна інформація", + "settingForm.browseBtn": "Огляд", + "SettingsScene.systemHashDesc": "Це буде використовуватися для забезпечення сумісності завантажених пресетів.", + "sysInfoCards.CPUInfoTitle": "Інформація про ЦП", + "sysInfoCards.cpuPerfDesc": "{speedmax} ГГц с {physicalCores} ядрами та {cores} потоками.", + "sysInfoCards.GPUInfoTitle": "Інформація про ГП #{index}", + "SettingsScene.loadingSysHash": "Завантаження...", + "ryzenAdjBottomBar.prompt": "Найменування нового пресету", + "ryzenAdjBottomBar.mustProvideName": "Ви маєте вказати найменування", + "ryzenAdjBottomBar.presetCreated": "Пресет \"{newPresetName}\" створений", + "ryzenAdjBottomBar.presetWithSameNameExist": "Пресет з найменуваннямм \"{newPresetName}\" вже існує", + "presetButtons.apply": "Застосувати", + "presetButtons.delete": "Видалити", + "presetButtons.load": "Завантажений", + "presetAutoApply.nonePreset": "Відсутній", + "presetButtons.upload": "Вивантажити", + "ryzenAdj.applySuccess": "RyzenAdj успішно застосував налаштування", + "presetButtons.uploadSucceed": "Пресет {preset} був вивантажений", + "presetOnlineBtn.downloadTooltip": "Збереже пресет у ваш локальний пресет", + "presetOnlineBtn.loadTooltip": "Без збереження пресету буде завантажений в таблиці RyzenAdj, але не буде застосований", + "presetOnlineBtn.download": "Скачати", + "presetOnlineBtn.load": "Завантажити", + "presetButtons.presetWithSameNameAlreadyExistOnline": "Пресет із таким найменуванням вже присутній в мережі", + "presetOnlineBtn.presetDownloaded": "Пресет \"{presetName}\" завантажений", + "presetOnlineBtn.presetSameNameExist": "У вас вже є пресет з такою ж назвою", + "PresetsScene.cantVoteTwiceSamePreset": "Ви не можете двічі голосувати за один і той же пресет", + "PresetsScene.confirmVote": "Ви впевнені, що бажаєте проголосувати {vote} за цей пресет?", + "PresetsScene.updatingVotes": "Оновлення голосів...", + "notification.settingsSaveSuccess": "Налаштування були успішно збережені", + "ryzenAdjBottomBar.apply": "Застосувати", + "ryzenAdjBottomBar.createPreset": "Створити пресет", + "ryzenAdjBottomBar.reset": "Скинути", + "app.localeSelectorModalTitle": "Змінити мову", + "appContext.newReleaseAvailable": "Доступна нова версія, будь ласка, перевірте вкладку 'Релізи'", + "PresetOnline.errorLoadingPresets": "Неможливо звантажити пресети", + "PresetOnline.retryLoadingPresetListBtn": "Повторити", + "PresetOnline.pleaseCheckInternetConnection": "Будь ласка, перевірте ваше інтернет-з'єднання", + "presetButtons.uploadError": "Виникла помилка під час вивантаження пресету.", + "presetLine.compatibility": "Сумісність:", + "appContext.invalidPreset": "Неможливо застосувати некоректний пресет", + "presetOnlineBtn.presetInvalidOrObsolete": "Пресет \"{presetName}\" некоректний, або є застарілим", + "PresetsScene.errorWhileSendingVote": "Помилка при відправленні голосу", + "sysInfoCards.unableToGetSysInfo": "Неможливо отримати інформацію про систему:", + "settingForm.windowsBinFileType": "Виконуваний файл Windows", + "appContext.ryzenAdjPath.wrongPath": "Шлях до ryzenadj.exe є некоректним, будь ласка, змініть його в розділі 'Налаштування'", + "ryzenAdjBottomBar.invalidPreset": "Неможливо застосувати некоректний пресет", + "presetOnlineBtn.presetLoaded": "Пресет \"{presetName}\" завантажений", + "presetButtons.mustWaitForSignatureGen": "Ви повинні зачекати завершення генерації подпису ноутбука" +}