Skip to content

DEV LANGUAGE_rus

PROPHESSOR edited this page Apr 10, 2022 · 4 revisions

Руководство разработчика/Языковые (LANGUAGE) файлы

Мы изменяем API отображения текстов...
Отныне, все текстовые данные должны содержаться в LANGUAGE.XXX файлах, где XXX - код языка.
Таким образом, получится добиться простого перевода без необходимости менять код и выпускать разные версии для разных языков.
Что же касается языко-зависимых аудио файлов, так мы реализуем их на русском и английском языках

DRRP v0.4.0+

В связи с переходом на GZDoom 4.x, мы снова изменяем API отображения текстов!
Теперь все строки и переводы хранятся в этой Google Docs таблице.
Обновить переводы в моде можно с помощью команды bash ./tools/updateLocalization.sh.
Изменения в LANGUAGE.* файлах (для более старых версий GZDoom) придётся делать вручную

--------------------------------------------------------------------------------------------
Текст ниже содержит описание старых LANGUAGE-файлов, но сами правила именования строк не изменились.
--------------------------------------------------------------------------------------------

Оглавление

  1. Формат LANGUAGE файла
  2. Сферы влияния
  3. Формат ID
  4. Примеры
  5. Дополнения и примечания

Формат LANGUAGE файла

// Это комментарий

[enu default] 
// Это - секция с текстами на американском английском (enu -> en US) используется по умолчанию (default)

// Формат:  ID = "Текст";
DRRP_G_NEWGAME = "New game";
DRRP_INTRO_4   = "You picked up a\n"   // Для переноса строки используется символ \n
                 "Medkit. Access\n"    // Несколько строк текста в кавычках в разных строках воспринимаются
                 "your inventory\n"    // как одна строка, если не используется \n
                 "menu and use it\n"
                 "to restore health\n"
                 "if you become se-\n"
                 "verely wounded.";    // В конце всегда ставится `;`

[rus]
// А это - русский перевод (rus) для строк выше

DRRP_G_NEWGAME = "Новая игра";

DRRP_INTRO_4   = "Вы подобрали ап-\n"
                 "течку. Зайдите в\n"
                 "инвентарь и\n"
                 "используйте её\n"
                 "для восстановле-\n"
                 "ния здоровья при\n"
                 "тяжелых ранениях";

Подробнее про формат LANGUAGE файла можно прочитать на ZDoom WIKI

Сферы влияния

Все игровые текстовые вставки должны располагаться в LANGUAGE.XXX файлах

Формат ID

Для улучшения читабельности и во избежание конфликтов, все ключевые слова должны начинаться с префикса DRRP_.

Далее следует инфикс секции применения.

Список секций применения:

  1. G - Элементы интерфейса (GUI)
  2. M - Названия монстров (Monster)
  3. E - Названия объектов (Entity)
  4. I - Названия предметов (Items)
  5. W - Название оружия (Weapon)
  6. B - Всё то, что не подходит под критерии выше (Base)
  7. D - Всё, что добавлено (не заменено, а добавлено) проектом DRRP (DRRP)

В качестве инфиксов для текстов, размещаемых на картах, используется название .wad файла этой карты в папке maps

После инфикса идёт суффикс, обозначающий идентификатор текстовой вставки. Например, для карты это число [1; ∞), для монстра - его название (без пробелов).

Примеры

  • DRRP_E_GUERARD
  • DRRP_I_MEDKIT
  • DRRP_W_SHOTGUN
  • DRRP_SEC1_3
  • DRRP_REAC_15
  • DRRP_M_HELLHOUND
  • DRRP_B_INVALIDCODE
  • DRRP_D_BUGUNDEFMONOLOGUE
  • DRRP_G_NEWGAME

Дополнения и примечания

  • Инфикс b (Base) используется из-за того, что в оригинальной игре подобные текстá хранились в файле base.str;
  • Отличия e от m и i в том, что Monster - Entity, который атакует игрока, Item - Entity, который игрок может подобрать, а Entity - всё, что не не Monster и не Item (персонажи, декорации, т.п.) ;
  • Для применения текста из LANGUAGE файла в ACS необходимо поставить формат l (например, print(l:"DRRP_SEC3_2");), в DECORATE - поставить в начале знак $ ("$DRRP_M_DEMONWOLF"), а в ZScript - применить метод Stringtable.Localize("$DRRP_G_NEWGAME");, MAPINFO - аналогично DECORATE;
  • Для текстов, которые размещаются на карте, нельзя превышать ширину строки в 17 символов;