i18n(ru): add missing translations for updater, deviceSync migration, player lyrics, statistics export

50 missing keys added across 4 files:
- common: close + 9 macOS updater keys
- deviceSync: schemaLabel/schemaHint + 17 file migration keys
- player: fsLyricsToggle, lyricsSourceServer, lyricsSourceLrclib
- statistics: 18 export-image keys
This commit is contained in:
kilyabin
2026-06-25 01:01:49 +04:00
parent 7b9e676af7
commit 36bfcdfe02
4 changed files with 49 additions and 1 deletions
+10
View File
@@ -9,6 +9,7 @@ export const common = {
downloadZip: 'Скачать (ZIP)',
back: 'Назад',
backToTop: 'Наверх',
close: 'Закрыть',
cancel: 'Отмена',
save: 'Сохранить',
delete: 'Удалить',
@@ -49,6 +50,15 @@ export const common = {
updaterAurHint: 'Установить обновление через AUR:',
updaterErrorMsg: 'Ошибка загрузки',
updaterRetryBtn: 'Повторить',
updaterInstallNow: 'Установить сейчас',
updaterMacReadyTitle: 'Готово к установке',
updaterMacReady: 'Обновление загружается, проверяется и применяется автоматически — DMG не нужен. После завершения приложение перезапустится само.',
updaterTrustNotarized: 'Нотаризовано Apple',
updaterTrustSignature: 'Подпись проверена',
updaterMacDoneTitle: 'Обновление установлено',
updaterRestartingIn: 'Перезапуск через {{n}} с…',
updaterRestarting: 'Перезапуск…',
updaterRestartNow: 'Перезапустить сейчас',
durationHoursMinutes: '{{hours}}ч {{minutes}}мин',
durationMinutesOnly: '{{minutes}}мин',
updaterOpenGitHub: 'Открыть на GitHub',
+18 -1
View File
@@ -9,8 +9,25 @@ export const deviceSync = {
free: 'свободно',
notMountedVolume: 'Цель не находится на смонтированном томе. Диск мог быть отключён.',
chooseFolder: 'Выбрать…',
filenameTemplate: 'Шаблон имени файла',
targetDevice: 'Целевое устройство',
schemaLabel: 'Схема именования',
schemaHint: 'Фиксированная схема для надёжной синхронизации между ОС. Плейлисты сохраняются как .m3u8 со ссылками на треки альбома — дубликатов на устройстве не будет.',
migrateButton: 'Реорганизовать существующие файлы…',
migrateTooltip: 'Переименовать существующие файлы на устройстве по новой схеме (со старого шаблона имён).',
migrateTitle: 'Реорганизация существующих файлов',
migrateLoading: 'Анализ существующих файлов…',
migrateNothingToDo: 'Все файлы уже соответствуют новой схеме — делать нечего.',
migrateNoTemplate: 'На устройстве не найден старый шаблон имён. Миграция применяется только если устройство синхронизировалось версией Psysonic с поддержкой пользовательских шаблонов.',
migrateFilesToRename: 'файлов будет переименовано',
migrateUnchanged: '{{n}} файлов уже находятся по правильному пути',
migrateCollisions: '{{n}} файлов невозможно переименовать автоматически (несколько треков ведут к одному пути). Они останутся нетронутыми — следующая синхронизация скачает их в нужное место.',
migratePreviewNote: 'Старый шаблон: {{tpl}}',
migrateExecuting: 'Переименование файлов…',
migrateSuccess: '{{n}} файлов успешно переименовано',
migrateFailed: '{{n}} переименований завершились ошибкой',
migrateShowErrors: 'Показать ошибки',
migrateStart: 'Начать переименование',
scanningDevice: 'Сканирование устройства…',
templateHint: 'Переменные: {artist}, {album}, {title}, {track_number}, {disc_number}, {year}',
cleanupButton: 'Удалить файлы вне выборки',
cleanupNothingToDelete: 'Нечего удалять — устройство уже синхронизировано.',
+3
View File
@@ -59,8 +59,11 @@ export const player = {
lyricsLoading: 'Загрузка текста…',
lyricsNotFound: 'Текст не найден',
lyricsNoSources: 'Источники текста не выбраны — включите их в Настройки → Текст',
lyricsSourceServer: 'Источник: Сервер',
lyricsSourceLrclib: 'Источник: LRCLIB',
lyricsSourceNetease: 'Источник: Netease',
lyricsSourceLyricsplus: 'Источник: YouLyPlus',
fsLyricsToggle: 'Текст в полноэкранном режиме',
showDuration: 'Показать длительность',
showRemainingTime: 'Показать оставшееся время',
};
+18
View File
@@ -84,4 +84,22 @@ export const statistics = {
playerListenedMinDecimal: '{{minutes}} мин',
completionFull: 'Прослушано',
completionPartial: 'Частично',
exportShare: 'Поделиться',
exportTitle: 'Поделиться топ-альбомами',
exportSubtitle: 'Создайте изображение с вашими самыми прослушиваемыми альбомами.',
exportFormat: 'Формат',
exportFormatStory: 'История',
exportFormatSquare: 'Квадрат',
exportFormatTwitter: 'Twitter Card',
exportGrid: 'Сетка',
exportGridLabel: '{{n}}×{{n}}',
exportPreview: 'Предпросмотр',
exportGenerate: 'Создать',
exportSave: 'Сохранить изображение…',
exportCancel: 'Отмена',
exportFooterLabel: 'Топ альбомов',
exportNotEnough: 'Нужно не менее {{count}} альбомов в библиотеке для сетки {{n}}×{{n}}.',
exportSaving: 'Сохранение…',
exportSaved: 'Сохранено.',
exportSaveFailed: 'Не удалось сохранить изображение.',
};