Как делать перевод игры
Внутриигровая локализация сейчас делается так
- Найдите в коде игры нужный для перевода кусок
- Переводите его на русский
- Не забудьте учесть все потенциальные роды и склонения
Инструменты локализации
Сейчас для локализации реализованы несколько процедур. Все они полагаются на встроенную в DreamMaker систему полов.
Полов в DreamMaker четыре
MALE
- Мужской
FEMALE
- Женский
NEUTER
- Средний
PLURAL
- Множественный. Да, хотя в русском языке пол и число — формально разные вещи, но на практике это просто ещё один пол. Подумайте об этом, это действительно так.
Гендеризация — genderize_ru
Процедура genderize_ru
Принимает
Принимает текущий пол и четыре строки для разных полов.
Возвращает
Возвращает соответствующую полу строку из заданных.
Сигнатура
genderize_ru(пол, мужской, женский, средний, множественный)
Пример
Похоже, это [genderize_ru(user.gender,"он","она","оно","они")]!
Плюрализация — pluralize_ru
Та же гендеризация, но более короткая её версия, для случаев, когда нужно различать только единственное и множественное число.
Принимает
Принимает текущий пол и две строки — для единственного числа и для множественного.
Возвращает
Возвращает соответствующую полу строку из заданных.
Сигнатура
pluralize_ru(пол, одиночный, множественный)
Пример
[user] помеща[pluralize_ru(user.gender,"ет","ют")] свою голову между лезвиями
Склонение единиц измерения — declension_ru
Та же гендеризация, но для единиц измерения.
Принимает
Принимает число и три строки — для единственного, двойственного и множественного числа. Да, в русском языке не два, а три числа, вас обманывали в школе. Двойственное число используется для 2,3 или 4 предметов.
Возвращает
Возвращает соответствующую числу строку из заданных.
Сигнатура
declension_ru(число, одиночное, двойное, множественное)
Пример
Вася нашёл [num] [declension_ru(num,"яйцо","яйца","яиц")]
Склонение по падежам — declent_ru
Самая мякотка. Вершина нанотехнологий НаноТрейзен по локализации строк.
На самом деле ничего сложного. Метод declent_ru
и свойство ru_names
наследуется от atom
и есть у любого материального предмета. Для правильного склонения названия предмета ему надо добавить список ru_names
, где указать как его название склоняется по падежам.
Пример заполнения ru_names
ru_names = list(NOMINATIVE = "челюсти жизни", GENITIVE = "челюстей жизни", DATIVE = "челюстям жизни", ACCUSATIVE = "челюсти жизни", INSTRUMENTAL = "челюстями жизни", PREPOSITIONAL = "челюстях жизни")
Принимает
Принимает падеж.
Второй необязательный аргумент — собственный список склонения, если список ru_names
предмета вас почему-то не устраивает.
Падежи
- Именительный
NOMINATIVE
- Кто это? Клоун и ассистуха
- Родительный
GENITIVE
- Откусить кусок от кого? От клоуна и ассистухи
- Дательный
DATIVE
- Дать полный доступ кому? Клоуну и ассистухе
- Винительный
ACCUSATIVE
- Обвинить кого? Клоуна и ассистуху
- Творительный
INSTRUMENTAL
- Возить по полу кем? Клоуном и ассистухой
- Предложный
PREPOSITIONAL
- Прохладная история о ком? О клоуне и об ассистухе
Возвращает
Возвращает соответствующую этому падежу строку из списка ru_names
или, если список ru_names
у предмета не задан, то просто его name
, для обратной совместимости.
Сигнатура
declent_ru(пол, одиночный, множественный)
Пример
Текст до перевода
[user] is putting [user.p_their()] head in [src]. It looks like [user.p_theyre()] trying to commit suicide!
Корректно переведённый текст
[user] помеща[pluralize_ru(user.gender,"ет","ют")] свою голову между лезвиями [src.declent_ru(GENITIVE)]. Похоже, [genderize_ru(user.gender,"он","она","оно","они")] пыта[pluralize_ru(user.gender,"ется","ются")] использовать [src.declent_ru(ACCUSATIVE)] для самоубийства