Повна українізація інтерфейсу Synology DSM та встановлених пакетів — у пару кліків, без терміналу
Synology офіційно не має української локалі. Я зробив повний переклад та хочу поділитися ним зі спільнотою DOU.
Цей пакет ставить повноцінний український переклад прямо в DSM: інтерфейс системи, меню, майстри, email-сповіщення і тексти встановлених пакетів. Вмикаєш галочками, що саме перекласти — і одна кнопка робить решту. Так само легко відкочується байт-в-байт назад.
github.com/...t/synology-dsm-ukrainizer
Як це виглядає
DSM повністю українською — інтерфейс, меню, майстри, довідка:
| Диспетчер сховища | Панель керування |
|---|---|
|
|
- Українізація DSM і пакетів — 99 компонентів: ядро DSM 7.2.2, Центр пакетів, File Station, Surveillance Station, Active Backup, Hyper Backup, Synology Drive, Photos, MailPlus, Virtual Machine Manager, Container Manager й десятки інших.
- Переклад не лише UI, а й email-сповіщень (
mails) — листи про події (бекапи, рейд, диски, безпека тощо) теж приходять українською. - Вибірково, по галочках — перекладай що хочеш, рештою не чіпай. Кожен компонент має окремо рядки інтерфейсу (
strings) і шаблони листів (mails). - Чесний відкат байт-в-байт — при першому застосуванні зберігається недоторканий оригінал (
.orig), тож «Повернути оригінал» повертає рідні файли точно, без сюрпризів. - Авто-відновлення після оновлень — оновлення DSM чи пакета перезаписує локалі й «з’їдає» переклад. Фоновий systemd-таймер (раз на ~15 хв + на буті) сам переповерхає українізацію назад. Нічого робити руками не треба.
- Авто-перемикання мови DSM — переклад «живе» в локалі
rus(див. нижче чому), тож апка сама виставляє мову інтерфейсу на потрібну, щойно щось українізовано. - Живий лог — видно що саме, в якому файлі й з яким статусом патчиться.
- Вбудована Root-консоль — міні-термінал прямо в апці (під подвійним замком: сесія адміна DSM + пароль) для діагностики без SSH.
- Чисте видалення — знімаєш «двигун», прибираються таймер і службові файли; переклади можна повернути на оригінал перед видаленням.
Як це працює
Synology не дає додати власний код мови (ukr) — DSM ламає інтерфейс, якщо локаль невідома системі. Тому Українізатор іде хитрішим, але безпечним шляхом:
- Підміна вмісту, а не коду локалі. DSM тримає тексти інтерфейсу у файлах локалі
rus. Апка замінює вміст цих файлів українським перекладом, лишаючи код локаліrus. Для DSM це досі «російська», а на екрані — українська. Жодного зламаного UI. - Точні шляхи з маніфесту. Локалі розкидані дуже по-різному:
…/ui/texts/rus,…/app/texts/rus, абсолютні системні шляхи ядра DSM, Центру журналів, Порадника з безпеки. Усі точні шляхи запечені вpayload/manifest.json, який збирається разом із перекладом — жодних здогадок у коді. - Привілейовану роботу робить root-демон. Непідписаному community-пакету DSM не дає прав root (cgi виконується як package-user, POST ріже 403). Тому переклади пише окремий локальний root-демон (
127.0.0.1:7686), а веб-морда говорить із ним через nginx-аліас/ua-l10n-api/. - Подвійний гейт безпеки. Кожен виклик демона перевіряється: (1) чинна сесія адміна DSM (cookie
id=+X-SYNO-TOKEN, звірені черезSYNO.Core.CurrentConnection); а привілейовані/деструктивні дії (apply/revert/exec/мова) — ще й пароль адмін-акаунта (звірка з/etc/shadowчерезcrypt). Демон слухає лише127.0.0.1, зовні недоступний. - Скидання UI-кешу. DSM кешує скомпільоване меню в
js_config_parser; апка чистить кеш після кожної зміни (той самий крок, що робить штатний пост-інстал Synology), DSM регенерує сам.
Архітектура
Браузер (апка ExtJS)
│ Cookie + X-SYNO-TOKEN
▼
nginx ──alias /ua-l10n-api/──► root-демон 127.0.0.1:7686 (ua-l10n-api.py)
│ гейт: сесія адміна + пароль
▼
uacore.py ──► локалі rus у DSM/пакетах
│ (.orig = оригінал, .bak = відкат)
▼
systemd-таймер ──► авто-reapply після оновлень
| Файл | Роль |
|---|---|
pkgroot/ui/ua-l10n.js | веб-морда (ExtJS SYNO.SDS.AppWindow): список компонентів, кнопки, лог, попап донату |
pkgroot/bin/ua-l10n-api.py | root-демон: HTTP-API, автентифікація сесії + пароля |
pkgroot/bin/uacore.py | ядро: статус/apply/revert/export, авто-таймер, перемикання мови |
pkgroot/payload/manifest.json | джерело правди: cid → {live-шлях, назва, версія} |
pkgroot/payload/comp/<cid>/{strings,mails} | власне переклади |
pkgroot/nginx/dsm.ua-l10n.conf | nginx-аліас на демон |
Для яких версій актуальний переклад
Переклад зібрано й звірено під ці версії (станом на реліз 1.0.0):
- DSM:
7.2.2-72806 Update 8— ядро системи + 37 системних компонентів (меню, майстри, Центр пакетів, Центр журналів, Порадник з безпеки, email-сповіщення системи тощо). - Пакети Synology: 62 компоненти — версії нижче.
На новіших версіях DSM/пакетів апка теж працює: перекладається все, що збіглося, а нові/змінені рядки просто лишаються рідними (не патчаться) — це безпечно, нічого не ламається. Якщо версія пакета відрізняється — переклад однаково накладається, бо файли локалі між мінорними версіями зазвичай сумісні.
Повний список пакетів і цільових версій (62)
Встановлення
Крок 1. Постав пакет
- Завантаж
UkrainianL10n.spkз розділу Releases. - DSM → Центр пакетів → Ручне встановлення.
- Вибери
.spk→ Далі → погодься на попередження про невідомого видавця (це нормально для community-пакетів) → Готово.
Крок 2. Один раз увімкни «двигун» (root-крок) ⚠️
Робиться лише раз на цьому NAS. Без цього кнопки апки не працюють — це безпека Synology (непідписаному пакету root не дають автоматично, і це не обійти).
Спосіб А — прямо в апці (без SSH): відкрий апку → у банері тисни «Активувати двигун» → введи пароль адміна. Апка створить разову root-задачу в Планувальнику й запустить її сама.
Спосіб Б — Планувальник завдань вручну: Панель керування → Планувальник завдань → Створити → Запланована задача → Скрипт користувача, користувач root, команда:
sh /var/packages/UkrainianL10n/target/bin/ua-l10n-bootstrap.sh install
Збережи → вибери задачу → Виконати.
Спосіб В — SSH:
sudo sh /var/packages/UkrainianL10n/target/bin/ua-l10n-bootstrap.sh install
Крок 3. Користуйся
- Відкрий «Українізатор DSM».
- Постав галочки на тому, що перекласти (ядро DSM + пакети).
- «Українізувати вибране» → введи пароль адмін-акаунта DSM.
- Дивись живий лог. Натисни Ctrl+F5, щоб DSM перемалював інтерфейс.
Відкат: кнопка «Повернути оригінал» — повертає рідні (російські) файли байт-в-байт.
Після оновлень DSM/пакетів
Оновлення перезаписує локалі своїми. Робити нічого не треба — фоновий таймер (ua-l10n-reapply.timer, на буті + кожні ~15 хв) сам повертає українізацію вибраних компонентів.
Зняти двигун (вимкнути таймер і прибрати службові файли):
sudo sh /var/packages/UkrainianL10n/target/bin/ua-l10n-bootstrap.sh remove
Збірка з вихідників
git clonegithub.com/...nology-dsm-ukrainizer.git
cd synology-dsm-ukrainizer sh build.sh # → UkrainianL10n.spk
build.sh пакує pkgroot/ у package.tgz, далі загортає INFO + package.tgz + scripts + conf + іконки у .spk. Жодних залежностей, чистий tar + gzip.
Нюанси
- Сумісність: DSM 7.0+. Переклади запечені під DSM
7.2.2-72806; на іншій версії UI-частина працює, але деякі рядки можуть лишитись рідними (просто не патчаться) — це безпечно. - Чому переклад у локалі
rus, а неukr? Synology не дозволяє додати новий код мови — UI ламається. Підміна вмістуrus— єдиний робочий спосіб без зламаного інтерфейсу. - Root-крок повторюється, якщо переставити пакет наново.
- Жодних даних назовні. Демон слухає лише
127.0.0.1, нічого нікуди не шле.
Проєкт некомерційний — роблю у вільний час, щоб софт говорив українською. Якщо корисно — можете підтримати, кнопка з QR є всередині апки. Дякую!

2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарівДуже дякую за статтю і роботу!
Відпишіться як встало, чи все коректно працює?