Как делать перевод игры
Внутриигровая локализация сейчас делается так
- Найдите в коде игры нужный для перевода фрагмент. Как её найти?
- Переведите его на русский
- Внесите все потенциальные роды и склонения с шаблонов
- Отправьте ваши переводы на ознакомление.
- Исправьте ошибки, на которые указывают другие участники, если они есть
- Наслаждайтесь внесенным вкладом!
Не забудьте ознакомиться с руководством по разработке. Если вы будете пошагово следовать всему что там написано, у вас не должно возникнуть проблем.
Если у вас возникли проблемы и вопросы, вы всегда можете обратиться в Discord нашего сервера к нашим разработчикам. Они помогут разобраться в GitHub и составить ваш первый PR.
Правила
Термины
Пожалуйста, строго следите за совпадением терминологии с вики. Если вы считаете что на вики термин назван неверно — обсудите этот вопрос с главным редактором вики и получите его одобрение на смену термина.
Буква «Ё»
В русском языке 33 буквы. Буква «ё» не строго обязательна, но она помогает чуть лучше ощутить смысл фраз. Не пропускайте её.
Названия предметов
Названия предметов (их name
) не нужно переводить, пока не будет реализован переключатель языка, иначе это повлечён за собой очень много потенциальных проблем.
При этом можно и нужно добавлять предметам список склонений с переведёнными названиями в ru_names
для корректного формирования текста с ними и уменьшения случаев, когда «клоун бросил the stunbaton».
Типографика
Игровой текст — не текст чата или СМС. Он не набран на скорую руку и ему нет оправдания в пренебрежении оформлением. Используйте принятые в русской типографике символы.
Подробнее о типографике можно почитать в Ководстве. Если вы планируете много работать с текстом, рекомендуется установить себе третий слой клавиатурных знаков.
Символ | Название | Описание |
---|---|---|
—
|
Длинное тире | Длинное тире — это не дефисоминус с клавиатуры. Оно ставится между словами и отделяется от них пробелами с обеих сторон. |
«»
|
Кавычки-ёлочки | Основные русские кавычки |
„“
|
Кавычки-запятые | Второй уровень кавычек, если вам надо вложить кавычки в кавычки. |
°
|
Знак градуса | Используется в температурных интерфейсах |
Обращение к игроку
Половина информирующих строк чата выглядит как «Your arm hurts!». На английском тут нет проблем, но в сообществе пока что нет единого мнения как правильно переводить«you» в контексте обращения к игроку.
- Вы
- «У вас болит рука!»
Это более нейтрально-отстранённый стиль. С одной стороны, это может помочь игроку чувствовать себя ответственным сотрудником научной станции. С другой стороны, это эмоционально отделяет его от персонажа, делает персонажа более «кукольным». - Ты
- «У тебя болит рука!»
Это более более эмоционально-причастный стиль. С одной стороны, это может помочь игроку эмоционально приблизиться к своему персонажу, делая персонажа живее для игрока. С другой стороны, это может уменьшать ощущение научной станции и уважительной атмосферы между сотрудниками.
Вопрос ещё обсуждается.
Инструменты локализации
Сейчас для локализации реализованы несколько процедур. Все они полагаются на встроенную в 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)] для самоубийства
Как в VS Code найти нужный фрагмент кода для перевода?
Открываете редактор VS Code и проект, после чего следуете простым вещам для поиска необходимого вам фрагмента:
- Нажимаете на "лупу" для открытия окна поиска.
- Пишете интересующую вас строку
- Ищете среди результатов то что вам нужно и нажимаете на строку
- Переходите к строке в коде и изменяете её.
Данным методом вы можете найти любую интересующую вас строку.
Вы можете как самостоятельно искать необходимые вам строки, так и напрямую вставлять элементы из самой игры. Всё что вы встречали в игре - всегда есть в коде.
Если вы что-то не нашли, но в игре оно есть, то попробуйте перефразировать и использовать не целые словосочетания. Возможно нужное вам "слово" является составным из нескольких слов.
Будьте аккуратны.
Наименования профессий или иных внутренних определений могут быть завязаны в коде. Всегда проверяйте после сделанных переводов на корректность работы вашей сборки.
Как внести свой вклад? | |
---|---|
Общее | Руководство по разработке |
Сервер | Настройка базы данных, Запуск локального сервера |
Код | Структура кода SS13, SS13 для опытных программистов, Форматирование текста, Как делать перевод игры |
Маппинг | Руководство по маппингу |
Спрайтинг | Руководство по спрайтингу |
Вики | Руководство по редактированию вики |