{{indexmenu_n>50}} ====== Многоязычная игра (переводы) ====== Одна игра, одна статистика, одни коды — а текст каждый игрок читает на своём языке. Переводы лежат **рядом** с игрой и подменяют текст при показе; там, где перевода нет, игрок видит оригинал. Игроку, у которого язык совпадает с языком игры, ничего не подменяется вообще. Это рекомендуемый способ. Старый приём с шаблоном ''{% match lang %}'' ([[authors_main:task_editor:advanced:edit_templates#как_сделать_многоязычную_игру|Шаблоны]]) продолжает работать, но новые игры лучше делать переводами: текст задания не превращается в простыню из N копий, правка вёрстки не размножается по языкам, а редактор показывает, что ещё не переведено. ===== Включение ===== В [[authors_main:task_editor:editor|редакторе игры]], вкладка **"Настройки игры"**, блок **"Локализация"**: * **Язык игры** — язык, на котором игра написана. Пока он не выбран, никакой локализации у игры нет: ничего не считается, ничего не хранится, редактор выглядит как обычно. * **Языки перевода** — галочки языков, на которые игра переводится. Рядом с каждым — **"падает на"**: на какой язык показывать то, что на этом языке ещё не переведено. Пусто — сразу на язык игры. * Строка **"остальные языки"** — куда отправлять игрока, языка которого у игры нет вовсе. Пример: игра написана по-русски, переведена на украинский и английский, а польский падает на украинский (он ближе, чем русский). Игрок-поляк увидит польский текст там, где он есть, украинский — там, где польского ещё нет, и русский — там, где нет и украинского. Как только появился хотя бы один язык перевода, в редакторе появляется вкладка **"Перевод"**. ===== Вкладка "Перевод" ===== Это таблица пар «оригинал → перевод». Слева строка из игры, справа поле для перевода. * **Строки собираются автоматически.** Большой текст (задание, подсказка, афиша, финишный текст) режется на абзацы; короткие поля (название игры, название задания, название кода, описание подсказки, формат ответа) идут целиком. Размечать в тексте ничего не надо. * **Одинаковый текст переводится один раз на всю игру.** Если строка встречается в нескольких местах, рядом с ней стоит **"мест: N"** — наведите мышь, чтобы увидеть где. Правка такой строки меняет её везде. * **Состояние строки** видно значком: свой перевод, //из языка X// (пришло по цепочке), //база// (перевода нет) или //не переводится//. * **Полнота** показывается двумя числами: сколько переведено на этот язык и сколько получится с учётом цепочки. Второе число само по себе обманчиво — оно прячет непереведённое за чужим языком. * **Две вкладки** — «Строки» и «Ссылки и файлы»: адреса переводят редко и по другому поводу, поэтому они не мешаются в общем списке. Счётчик на вкладке говорит, есть ли там вообще что-нибудь. * **Группы строк** — «непереведённые», «переведённые», «непереводимые». Это не выбор одного из трёх, а переключатели: они складываются. По умолчанию включены только непереведённые — это и есть работа; переведённые включают, когда идут вычитывать готовое, непереводимые — когда надо снять пометку. Группы одни и те же на обеих вкладках, а числа на них считаются по текущей. ==== Разметка внутри строки ==== Жирный, ссылки, картинки и шаблоны внутри абзаца в переводе не пишутся руками: на их месте стоят **чипсы** — маленькие рамки с номером. Кликните по чипсу — он встанет в перевод там, где стоит курсор. Чипсы можно переставлять (порядок слов в языках разный), но каждый должен быть в переводе ровно один раз — иначе перевод не сохранится и редактор скажет об этом. Так же ведут себя **подстановки** — ''!username!'', ''!task_n!'' и прочие: они остаются в переводе как есть, просто в нужном месте фразы. Полезное следствие: сами теги, адреса ссылок и классы живут только в оригинале. Поправили ссылку в задании — она поменялась во всех языках сразу. ==== Что не переводится ==== * **Коды-ответы не переводятся никогда.** Это и делает статистику общей. Ответы на разных языках просто дописываются синонимами через запятую в том же коде. * **Не переводить эту строку** — переключатель в конце строки таблицы, два режима: «не переводить в этом языке» и «не переводить нигде». Для брендов, имён собственных, латинских цитат. Такие строки уходят из «непереведённых» и не мешают счётчику полноты дойти до 100%. * **''translate="no"''** в HTML задания — более сильный способ: такой кусок не станет строкой вовсе, и его не тронет даже автоперевод браузера. Для кодовых слов и ответов внутри текста это важнее, чем кажется: автоматически переведённое кодовое слово ломает игру. ==== Ссылки и файлы ==== Вторая вкладка таблицы, с теми же группами. Адреса картинок, звуков, видео и ссылок по умолчанию **не** переводятся — почти все они языконезависимы. Но перевод адреса можно завести: так игрок уходит на страницу своего языка или получает озвучку на своём языке, а абзац и вёрстка остаются одни на всех. В счёт полноты эти строки не идут. Субтитры оверлеем делать не надо — HTML это уже умеет: несколько '''' в одном ''