====== Переклад домену ======
Шапку, меню, підвал і сторінки домену можна показувати мовою глядача. Влаштовано це так само, як [[uk:authors_main:game_management:localization|переклади гри]]: поряд із текстом лежить словник пар «оригінал → переклад», і при показі текст підмінюється. Перекладу немає — глядач бачить оригінал.
Екран — **«Переклад»** в адмінській панелі домену (**«Переклади»** у новій адмінці). Відкрити його може адміністратор домену.
Мова лише про той текст, який написали **ви**. Кнопки, листи та інший текст самого рушія перекладаються самі й до цього словника стосунку не мають.
===== Налаштування =====
{{ :admin_main:domain_translate_settings_uk.png?800 |Вкладка «Налаштування»: мова домену, мови перекладу і на що падає неперекладене}}
* **Мова, якою написано домен** — мова оригіналу. Поки її не вибрано, локалізації в домену немає взагалі: нічого не підмінюється, словник не читається.
* **Мови перекладу** — галочки. Поряд із кожною **«неперекладене показувати»**: на яку мову падати там, де перекладу ще немає. Порожньо — одразу базова.
* Рядок **«Решта мов»** — куди відправляти глядача, мови якого в домену немає.
Падати можна лише на мову, яку домен **оголосив**. Знімете галочку з мови — усе, що на неї падало, скинеться тут же, на екрані.
> Вимкнути локалізацію («Локалізацію вимкнено») можна будь-коли: підміна перестане працювати одразу для всіх, а словник лишиться цілим.
===== Сторінки =====
Вкладка **«Сторінки»** перелічує сторінки домену і питає про кожну: перекладаємо її словником чи ні.
У сторінки може бути **своя копія** іншою мовою. Така копія завжди **сильніша за словник**: якщо вона є, глядач побачить її, а словник до сторінки не застосовується. Перетворити копію на пари словника нічим — або копія, або словник.
===== Переклади =====
Третя вкладка — сама таблиця пар. Вона **та сама**, що у вкладці «Переклад» редактора гри: ті самі групи «неперекладені / перекладені / неперекладні», той самий фільтр, ті самі позначки «не перекладати». Як вона влаштована, докладно описано на сторінці [[uk:authors_main:game_management:localization#вкладка_переклад|Багатомовна гра]].
Відмінність одна — селектор **«Що перекладаємо»** в рядку фільтра:
* **«Усе разом: домен і сторінки»**;
* **«Домен: шапка, меню, підвал»**;
* **«Сторінка ...»** — по одній.
> **«Усе разом» пише переклад у кілька словників.** Рядок, який трапляється і в шапці, і на сторінці, — це один рядок таблиці, і правка запишеться у словник кожного місця, де рядок трапився. Потрібен сторінці свій переклад тієї самої фрази — звузьте «Що перекладаємо» до цієї сторінки.
===== Що перекладається =====
* **Назва домену** — вона ж у шапці і в заголовку вкладки браузера.
* **Шапка сайту**, **Меню сайту**, **Підвал сайту**, **Шапка у грі** — html із [[uk:admin_main:domain_menu|розділу «Дизайн»]].
* **Сторінки домену** — ті, що позначені на вкладці «Сторінки».
Не перекладається: css, адреси (ім’я домену, адреса сторінки), налаштування пошти й оплати, текст самого рушія і **зміст ігор** — в ігор [[uk:authors_main:game_management:localization|свої переклади]].
Листи домену йдуть із **базовою** назвою, не з перекладеною.
Шаблони ''{% match lang %}'' у дизайні домену не працюють — це прийом для завдань.
===== Текст усередині скриптів: gt() =====
Меню домену — це скрипт, і підписи кнопок у ньому лежать рядками. Щоб рушій їх побачив, огорніть кожну в ''gt()'':
add_navbar({
items: [
{name: gt('ИГРЫ'), url: 'index.php'},
{name: gt('АРХИВ'), url: 'archive.php'},
],
...
});
Далі підпис з’явиться у таблиці перекладів як звичайний рядок, і переклад підставиться **на сервері**, до того як сторінка поїде глядачеві.
* ''gt()'' бере **рядок просто в дужках**, у лапках. ''gt(x)'' і ''gt('А' + b)'' рушій не чіпає — вони лишаться як є і повернуть своє значення.
* Рядки без літер (цифри, знаки) не перекладаються.
* Підписи **без** ''gt()'' у таблицю просто не потраплять, і ніхто про це не попередить.
Це працює в будь-якому html-блоці дизайну, не тільки в меню.
===== JSON: вивантажити і завантажити =====
Кнопка **«JSON»** угорі екрана:
* **Скачати все** — знімок словника цілком, усі мови.
* **Скачати неперекладене** — файл для перекладача: тільки те, що лишилося.
* **Скачати (мова)** і **Скачати неперекладене (мова)** — те саме по одній мові.
* **Завантажити з файлу**, **Копіювати в буфер**, **Вставити з буфера**.
Завантаження **не зберігає**: воно править екран, а записує все кнопка **«Зберегти»**. Піти зі сторінки з незбереженими правками браузер не дасть мовчки — запитає.
Завантаження **зливає, а не заміняє**: пари накладаються по одній. Порожній переклад у файлі означає «прибрати цю пару».
Приймаються обидва види файлів — і повний знімок, і файл перекладача.
===== Новий домен =====
Новий домен отримує словник базового **у спадок** — копією, один раз, у момент створення. Подальші правки словника базового домену до нього вже не приїдуть.
Назва в нового домену своя, тому успадкований переклад старої назви приїде в **«Застарілі переклади»**, а нова лишиться неперекладеною.
===== Що варто знати =====
* **Правка оригіналу відв’язує переклад.** Змінили текст у дизайні — його переклад іде в «Застарілі переклади», звідки його можна прив’язати заново або видалити. Відкат дизайну в студії словники не відкочує.
* **Джерело — збережений дизайн, а не чернетка.** Поправили шапку в студії — спершу збережіть її, потім оновіть цей екран.
* **Одна «Зберегти» пише одразу кілька речей** — мови, позначки сторінок і словники. Якщо щось не записалося, червона смуга перелічить усе разом.
* **Неперекладений і ніяк не позначений рядок у словник не пишеться** — порожніх пар там не буває.
* **Переклад, що загубив або вигадав підстановку** (''!username!'' і подібні), не збережеться: рушій скаже про це.
===== Старий спосіб: addTranslation() =====
Раніше підписи меню перекладалися у браузері, викликом у тому самому блоці меню:
addTranslation('en', 'АВТОРАМ', 'ABOUT');
**Він далі працює**, і в доменів, що йдуть, його не забирають. Але він покриває лише підписи кнопок меню — ні шапку, ні підвал, ні сторінки, — і не каже, що ще не перекладено.
Подвійного перекладу не буде: якщо рядок переклав сервер, у браузер приїде вже англійський, і ''addTranslation'' його просто не знайде.
Для нового домену беріть ''gt()'' і цю сторінку.
===== Дивіться також =====
* [[uk:admin_main:domain_menu|Налаштування меню домену]] — як влаштовано блок меню.
* [[uk:authors_main:game_management:localization|Багатомовна гра]] — переклади гри; таблиця та сама.