Перевод домена
Шапка, меню, подвал и страницы домена можно показывать на языке зрителя. Устроено это так же, как переводы игры: рядом с текстом лежит словарь пар «оригинал → перевод», и при показе текст подменяется. Перевода нет — зритель видит оригинал.
Экран — «Перевод» в админской панели домена («Переводы» в новой админке). Открыть его может администратор домена.
Речь только о том тексте, который написали вы. Кнопки, письма и прочий текст самого движка переводятся сами и к этому словарю отношения не имеют.
Настройки
- Язык, на котором написан домен — язык оригинала. Пока он не выбран, локализации у домена нет вовсе: ничего не подменяется, словарь не читается.
- Языки перевода — галочки. Рядом с каждым «непереведённое показывать»: на какой язык падать там, где перевода ещё нет. Пусто — сразу на базовый.
- Строка «Остальные языки» — куда отправлять зрителя, языка которого у домена нет.
Падать можно только на язык, который у домена объявлен. Снимете галочку с языка — всё, что на него падало, сбросится тут же, на экране.
Выключить локализацию (выбрать «Локализация выключена») можно в любой момент: подмена перестанет работать сразу для всех, а словарь останется в целости.
Страницы
Вкладка «Страницы» перечисляет страницы домена и спрашивает про каждую: переводим её словарём или нет.
У страницы может быть своя копия на другом языке. Такая копия всегда сильнее словаря: если она есть, зритель увидит её, а словарь к странице не применяется. Превратить копию в пары словаря нечем — либо копия, либо словарь.
Переводы
Третья вкладка — сама таблица пар. Она та же самая, что во вкладке «Перевод» редактора игры: те же группы «непереведённые / переведённые / непереводимые», тот же фильтр, те же пометки «не переводить». Как она устроена, подробно описано на странице Многоязычная игра.
Отличие одно — селектор «Что переводим» в строке фильтра:
- «Всё сразу: домен и страницы»;
- «Домен: шапка, меню, подвал»;
- «Страница …» — по одной.
«Всё сразу» пишет перевод в несколько словарей. Строка, которая встречается и в шапке, и на странице, — это одна строка таблицы, и правка запишется в словарь каждого места, где строка встретилась. Нужен странице свой перевод той же фразы — сузьте «Что переводим» до этой страницы.
Что переводится
- Название домена — оно же в шапке и в заголовке вкладки браузера.
- Шапка сайта, Меню сайта, Подвал сайта, Шапка в игре — html из раздела «Дизайн».
- Страницы домена — те, что отмечены на вкладке «Страницы».
Не переводится: css, адреса (имя домена, адрес страницы), настройки почты и оплаты, текст самого движка и содержание игр — у игр свои переводы.
Письма домена уходят с базовым названием, не с переведённым.
Шаблоны {% 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() и эту страницу.
Смотрите также
- Настройка меню домена — как устроен блок меню.
- Многоязычная игра — переводы игры; таблица та же самая.
