- Координация ведется в канале #build-translation нашего дискорда.
- Общий план и некоторые словари: https://wiki.taucetistation.org/Перевод
- Макросы для работы с переводами
Мы не трогаем оригинальное name
объекта, но заполняем отдельно case
со склонением по падежам:
/obj/something
name = "Atom"
cases = list("атом", "атома", "атому", "атом", "атомом", "атоме")
В массиве каждая позиция соответствует своему падежу, и имеет соответствующий DEFINE:
Падеж | DEFINE в коде | Позиция в массиве cases |
---|---|---|
Именительный | NOMINATIVE_CASE |
1 |
Родительный | GENITIVE_CASE |
2 |
Дательный | DATIVE_CASE |
3 |
Винительный | ACCUSATIVE_CASE |
4 |
Творительный | ABLATIVE_CASE |
5 |
Предложный | PREPOSITIONAL_CASE |
6 |
При необходимости вывести имя объекта в сообщении в чате, мы используем макрос CASE()
, который первым параметром принимает объект, имя которого надо вывести, а вторым - DEFINE соответствующего падежа, который нам нужен. Пример:
to_chat(user, "Вы поджигаете [CASE(src, ACCUSATIVE_CASE)] при помощи [CASE(item, GENITIVE_CASE)]!")
Макрос безопасно использовать даже в том случае, если не известно, определены ли у объекта case
- в случае их отсутствия он просто вернет оригинальный name
, так что вы сможете это заметить и поправить отдельно.
Для правильной работы местоимений надо заполнить gender
у объектов. Род может отличаться в английском и русском языке, мы переписываем их на русский манер. Возможные значения gender
: MALE
, FEMALE
, NEUTER
.
После мы можем использовать специальные макросы для вывода местоимения объекта:
// Для gender = MALE, выведет "Неудачно пошутив, он падает без признаков жизни"
to_chat(user, "Неудачно пошутив, [THEY_RU(src)] падает без признаков жизни")
Все макросы и примеры использования можно посмотреть тут, раздел "Местоимения(RU)"
pluralize_russian
в качестве параметров принимает число (должно быть целое, по необходимости округлите) и склонения числительного для 1, 2, 5 значений:
// корректно выведет "через 1 секунду", "через 3 секунды", "через 10 секунд" и так далее, в зависимости от seconds
to_chat(user, "Готовность к полёту через [pluralize_russian(seconds, "секунду", "секунды", "секунд")]!")