Edited online

oreolek 2015-08-15 02:31:48 +00:00
parent 65afcdab3b
commit 83ac609cf8

@ -59,4 +59,19 @@
'Едришкина качель!'
});
В результате выполнения функции вы получаете случайную строку из массива.
В результате выполнения функции вы получаете случайную строку из массива.
## Модуль translate
Традиционный подход к переводу игр на INSTEAD - это делать новую игру и потом, возможно, упаковывать её рядом с оригиналом. Некоторые авторы даже делают красивые меню для выбора языка. Это связано с тем, что при переводе на японский когда-то понадобилось полностью переписывать всю игру, вместе с частью логики.
Я считаю этот подход в корне неправильным, потому что он очень труден даже для игр среднего размера. После
релиза 1.0 строки в игре по определению не должны радикально меняться, поэтому игры стоит переводить точно так же, как и остальные программы: при помощи gettext. Это тот способ, который не решает все проблемы перевода (для некоторых языков всё ещё придётся переписывать игру полностью), но облегчает переход между некоторыми языковыми парами. Кроме того, игроку не придётся второй раз выбирать язык игры, потому что он уже выбрал язык в настройках INSTEAD.
Закончив это отступление, я хочу представить модуль для перевода игр при помощи gettext. Чтобы его использовать, достаточно подключить модуль `translate` в вашу игру. У него всего одна настройка:
translate.source = 'ru';
Настройка `translate.source` указывает исходный язык строк. Модуль объявляет функцию `__()`, которая и будет переводить строки. Если язык в настройках INSTEAD соответствует исходному, то строки не меняются. Значение `translate.source` должно соответствовать переменной `LANG` движка, это - двухбуквенный код языка.
Это всё. Вы подключаете модуль, оборачиваете все строки в игре вот таким образом: `__([[текст]])` и натравляете gettext на исходный код. Помощь по использованию gettext можно легко найти в сети Интернет.