Skip to content

About

GW2 — перевод текста (русская локализация GW2) разбитый на батчи

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

440 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Народный перевод Guild Wars 2 на русский

Демонстрация перевода https://youtu.be/lW0SU54VSB8

Отказ от ответственности

Проект не связан с ArenaNet, NCSOFT и не одобрен ими. Guild Wars 2 и все связанные названия, логотипы и материалы принадлежат ArenaNet, LLC и NCSOFT Corporation.

Перевод выполнен пользователем добровольно и распространяется как есть, без гарантий. Автор перевода не несёт ответственности за возможные последствия использования, включая проблемы с игровым аккаунтом.

Использование сторонних программ в Guild Wars 2 регулируется политикой ArenaNet: Policy: Third-Party Programs. ArenaNet не проверяет и не одобряет сторонние программы, использование происходит на собственный риск игрока.

Описание

Это краудсорс-перевод игрового текста Guild Wars 2 для локализатора GlyphCore (https://github.com/nourlie/GlyphCore). Ниже — как поставить перевод и как помочь с переводом.

Установка русификатора

  1. Поставь прокси-локализатор GlyphCore — по инструкции из его репозитория: https://github.com/nourlie/GlyphCore. Он создаст рядом с игрой папку glyphCore\.
  2. Скачай dictionary.bin из последнего релиза: https://github.com/K13or/crowdsource/releases/latest
  3. Положи файл в папку glyphCore\ (рядом с Gw2-64.exe), заменив прежний.
  4. Запусти игру. Перевод подхватится сам — запускать что-то отдельно не нужно.

Обновление перевода: скачать новый dictionary.bin и заменить старый. Больше ничего делать не надо.

Если ставишь поверх старой версии русификатора: удали из папки glyphCore\ словари main_strings.csv и dict_*.csv. Весь перевод теперь лежит в одном dictionary.bin, и, пока он есть, старые CSV прокси всё равно не читает.

В dictionary.bin входит всё: интерфейс, предметы, диалоги, достижения, слой имён собственных (pn_*) и строки, выученные прокси на лету. config.ini в релиз намеренно не кладём — настройки у каждого свои, они правятся в оверлее локализатора (Insert).


Дальше — для тех, кто хочет переводить. Весь непереведённый текст нарезан на батчи по ~500 строк. Берёшь батч, переводишь колонку translate, сдаёшь — и он попадает в игру.

Порядок работы: батчи — источник истины

Правим батчи. dictionary.bin не правим никогда — он собирается из них.

Причина простая: батчи лежат в git, у них есть история и откат. dictionary.bin весит больше сотни мегабайт, на GitHub не помещается и потому не версионируется вовсе. Ошибка в нём необратима, кроме как через бэкапы .dict_bak/, а разъезд между ним и батчами не видит ни один линтер: обе стороны сами по себе чисты.

правим батчи  ->  python tools/dict_tool.py frombatches --batches-win --apply
              ->  python tools/index.py build      # граф пересобрать

--batches-win и означает «батч побеждает»: запись в bin заменяется всегда, когда текст разошёлся, а не только когда наша битая. Без этого флага команда работает по-старому и молча оставит в игре прежний текст.

Что живёт только в bin и в батчи не заводится:

  • слой имён pn_* — он подставляется механически, вычитывать там нечего. Правится командами dict_tool.py pnadd и pnset;
  • русские имена словарей для оверлея — dict_tool.py dictnames.

Всё остальное — перевод строк — правится в батчах.

У пишущих по bin команд есть парные по батчам, и звать надо их:

правка по батчам
canon (канон терминов) canonbatches
tidy (мелкие починки) canonbatches --tidy
typo (типографика) tools/typofix.py
combat.py apply combat.py batches
gw2s_import.py apply gw2s_import.py batches

Если правка всё же легла в bin первой — не оставляй так: доведи её до батчей парной командой в тот же заход, иначе следующая сборка bin из батчей её сотрёт.

Как взять батч («забиндить»)

  1. Открой CLAIMS.md — доску захвата.
  2. Найди свободный батч (🟢), впиши свой ник в колонку «Кто взял» и смени статус на 🔨 (в работе). (через Pull Request, комментарий или как договоритесь в чате проекта.)
  3. Скачай свой файл из папки батчей, напр. ui/ui_042.csv или items/items_010.csv.
  4. Переведи и сдай (см. ниже). Смени статус на ✅.

Как переводить

Файл батча — это CSV с двумя колонками:

english,translate
Achievement Complete,
A cache key is required to open this chest.,
  • Заполняй только вторую колонку (translate). Первую (english) не меняй.
  • Строки, которые не знаешь как перевести, оставляй пустыми — их возьмёт кто-то другой.
  • Сохраняй файл в кодировке UTF-8.

⚠️ Обязательные правила (иначе строка сломается в игре)

  1. Сохраняй плейсхолдеры дословно: %str1%, %num1%, %str2% … — игра подставляет в них имена/числа. Их набор в переводе должен совпадать с оригиналом. %str1% has joined the party. → %str1% присоединился к группе.
  2. Сохраняй теги: <c=@flavor>…</c>, <c=#ff8c00>…</c>, <br>, [null], [lbracket] / [rbracket]. Переводи только текст внутри, сами теги оставляй как есть.
  3. Склонения по числу — ровно ТРИ формы. Английское [s] / [pl:"…"] в русском передаётся тремя формами через | в скобках — движок сам выберет по числу: [форма_для_1 | форма_для_2-4 | форма_для_5+] Пример: %num1% Snowflake[s] → %num1% снежин[ка|ки|ок]. Форма 2 — это родительный ЕДИНСТВЕННОГО числа («2 рецепта»), а не множественного: Рецепт[|а|ов] ✅, Рецепт[|ы|ов] ❌ (даст «2 рецепты»). Две формы допустимы только для рода — там, где в оригинале не [s], а [f:"…"]: You are ready[f:"ready"] → Вы готов[|а]. Если в оригинале [s] — двух форм не бывает, линтер такое считает ошибкой.
  4. Ничего не выкидывай из строки — особенно префикс до двоеточия. Recipe[s]: Burl Orichalcum Ring → Рецепт[|а|ов]: сучковатое орихалковое кольцо. Убрать «Рецепт» нельзя: в игре это имя предмета-рецепта, без префикса он станет неотличим от того, что по нему изготавливают. Скобочная группа ставится на то слово, к которому в оригинале приклеено [s]. В Recipe[s]: Feast of Avocado Salsa во множественном числе стоят рецепты, а не пиры: Рецепт[|а|ов]: пир сальсы из авокадо ✅, Пир[|ы] сальсы из авокадо ❌. Если склоняется всё словосочетание — оберни его целиком: Marsh Frog[pl:"Frogs"] → [Болотная лягушка|Болотные лягушки|Болотных лягушек].
  5. Счётчики вида %num1%/%num2% (прогресс достижений) группы не требуют — ставь родительный падеж множественного: Salvaged %num1%/%num2% Item[s] → Разобрано %num1%/%num2% предметов.
  6. Имена и названия. Любое название — персонажа, локации, предмета, облика, умения, маунта, титула — автоматически превращается в кириллицу на лету (слой pn_*.csv). Поэтому известные названия можно оставлять латиницей — движок сам подставит русскую форму. Если пишешь по-русски — бери форму из pn_*.csv дословно, не сочиняй свою: иначе одна и та же локация будет называться в игре по-разному (в одной строке «Угольная Бухта», в соседней — «Залив Углей»). Сверяйся с файлами pn_names.csv, pn_terms.csv, pn_world_map.csv в папке glyphCore\. Встретил название, которого в слое нет, — заведи его туда, а не переводи только в своей строке: слой нужен, чтобы игрок мог вернуть английский вид и найти вещь на вики или на торговой площадке. Подробности — раздел «Словари названий».
  7. Никаких знаков ударения (Балли́ста) и никаких символов не из русского/латинского алфавита. Многоточие пиши как в оригинале (...).
  8. Служебные символы не выкидывай. Переносы строк, неразрывные пробелы, краевые пробелы, маркеры списка • — часть вёрстки: игра рисует строку так, как её разбил оригинал. Потерянный перенос склеивает фразы («…на площадке.Примечание:»), потерянный краевой пробел ломает склейку «Рецепт: » + название. И наоборот: невидимые символы (zero-width, мягкий перенос), принесённые копипастой из вики, надо убирать — их в оригинале нет, а поиск по строке они ломают.
  9. Сомневаешься в скобке, кавычке или проценте — спроси в чате проекта. Фигурные и квадратные скобки, прямые кавычки и % в этом переводе служебные: % пишется только удвоенным (%%), одиночный движок примет за начало спецификатора и съест соседний текст.

Нашёл строку не про то — чини сразу

Если по дороге попалась строка, где перевод рассказывает не о том, что в оригинале, — чини её тут же, не откладывая в список. Это не отвлечение от задачи, а самое ценное, что можно найти: ни линтер, ни charscan, ни любой гейт такого не видят. Они проверяют форму — теги, плейсхолдеры, числа, символы, — а тут форма безупречна, и неверно содержание.

Примеры, найденные так и починенные на месте:

EN было стало
…a growing raptor needs! …растущему спрингеру! …растущему раптору!
Enter a frenzy. Attack faster… Призвать косяк рыб-умертвий (откачено, это описание другого умения)
Carnivore Кража здоровья у обездвиженного врага у них полнее: с питомцем и условием

Как чинить: правку вносим в батч (см. «Порядок работы»), канон термина берём из GLOSSARY.md или из корпуса — python tools/index.py who <имя> покажет, как проект уже переводил это слово и сколько раз. У раптора, например, 443 вхождения и запись в слое, так что вариантов не было.

Заодно стоит проверить соседей: такие ошибки ходят семьями — одинаковые предметы для разных маунтов переводят копированием, и если у одного подставился не тот зверь, у остальных может быть то же самое.

Где посмотреть, что это за строка

Перевод большой, и по имени файла батча не понять, что в нём лежит: ui, new, zone, site — это корзины сбора, а не смысл. Смысл несёт словарь. Чтобы не гадать, собери граф перевода:

python tools/index.py build      # ~2 минуты, база в sync/index.db (не версионируется)

Дальше пять запросов:

python tools/index.py find "Steel Warband vision"   # где лежит строка: категория и файл батча
python tools/index.py who "Rytlock Brimstone"       # досье: канон, где встречается, кто рядом
python tools/index.py cat                           # состав словаря по категориям
python tools/index.py dup                           # записи, лежащие в нескольких категориях
python tools/index.py proof items/items_015.csv 1 60  # лист вычитки батча

Место на карте подтягивается отдельной выгрузкой — теми же данными, на которых работают интерактивные карты вроде maps.gw2.io:

python tools/mapdata.py fetch          # sync/api/places.csv
python tools/mapdata.py show "Lion's Arch"

Игра отдаёт места деревом «континент -> регион -> карта -> сектор -> точка», и в графе они ложатся в таблицу geo. Для переводчика это отвечает на вопрос, на который сама строка не отвечает: «Fridgardr Lodge» — это застава в Dredgehaunt Cliffs, а не предмет и не персонаж, и соседние постройки того же региона должны звучать с ней в одном ключе.

Тем же графом можно пользоваться как базой с поиском — поверх него есть локальный веб-интерфейс:

python tools/graphserve.py            # http://127.0.0.1:8765

Он даёт то, чего нет у команд: выбрать не одну строку, а пачку по признаку — категория словаря, тип вещи по данным игры (оружие/броня/украшение), «только с дефектом», «без перевода», «латиница в переводе», — и уже потом читать. Поиск идёт и по оригиналу, и по переводу; клик по строке открывает карточку: чем вещь является в игре, в каких категориях и файлах батчей лежит, какие дефекты на ней висят, какие имена и термины глоссария в ней упомянуты. База открывается только на чтение, писать через интерфейс нельзя.

who — главный: он показывает канон имени, в каких категориях (то есть в каких эпизодах и дополнениях) персонаж встречается и какие имена стоят рядом с ним в одних строках. По нему видно контекст, которого в самой строке нет.

Правило: прежде чем переводить незнакомое имя или термин — спроси who. Если имя уже в слое, бери оттуда форму дословно. Если рядом с ним стабильно стоят другие имена, скорее всего, это одна фракция или отряд, и перевод должен держать их вместе.

Вычитка машинного батча: index.py proof

Батчи с пометкой «Автозаполнение из словаря» переведены машинно и вслепую: в названии предмета тип вещи спрятан за словом сета, и переводчик пишет «тарг», «вирга», «ринблейд». proof ставит рядом с каждой строкой две опоры:

  • ЧТО — чем вещь является по данным игры: Weapon/Shield, Armor/Boots/Heavy, Trinket/Ring. Отсюда видно, что Targe — щит, Greaves — сапоги, а Legs и Greaves в одном сете это разные слоты, и одним словом их звать нельзя. Источник — python tools/itemfacts.py fetch (≈25 минут, 77 тысяч предметов и обликов в sync/api/facts/items.csv);
  • ЛЮДИ — как ту же вещь звали в батчах, заполненных человеком. Стат-префикс (Assassin's, Berserker's) при поиске отбрасывается: «Assassin's Tengu Axe» и «Berserker's Tengu Axe» — один и тот же топор, и прецедент лежит в чужом батче. Кто заполнял батч, граф берёт из CLAIMS.md (таблица batch).

Машинный батч в прецеденты не идёт никогда — иначе вычитка будет сверяться сама с собой.

Источники

Часть перевода взята у других проектов. Ссылки здесь стоят не для красоты: это условие, на котором мы вправе их материал использовать.

  • Gw2Skills.Net — русские описания умений и талантов. Оттуда взято 1 467 описаний (заход 2026-08-11, подробности в DEFECTS.md), а также сверен канон боевых терминов: даров, состояний и эффектов контроля. Сайт требует ссылку при использовании переводов, и это требование выполняется здесь и в GLOSSARY.md. Переводы принадлежат авторам сайта.
  • Официальная вики GW2 — лор: устройство отрядов чарров, составы, принадлежность к легионам. Факты, не текст.
  • Официальный API GW2 — что чем является: предмет, квест, карта, умение, талант. По нему же чинится раскладка строк по словарям.

Чем проверять факты об игре

По порядку, от надёжного к спорному:

  1. GLOSSARY.md — принятые решения, они выше всего остального;
  2. корпус — index.py who и find: как проект уже переводил это слово;
  3. официальная вики https://wiki.guildwars2.com — лор и устройство мира. Есть машинный доступ: curl "https://wiki.guildwars2.com/api.php?action=query&prop=extracts&explaintext=1&titles=Warband&format=json" Русская вики (wiki.guildwars-2.ru) закрыта Cloudflare, автоматикой не берётся;
  4. официальный API https://api.guildwars2.com — что чем является: предмет, квест, карта, титул. Им же чинится раскладка по категориям: python tools/apicat.py fetch и check;
  5. и только потом — собственное решение, с записью в GLOSSARY.md.

Пример, зачем это нужно: отряд чарра — общий элемент фамилии, и вики показывает, что стоять он может с любого края. Ритлок Бримстоун и Кресия Стоунглоу — оба из отряда Stone, хотя по виду фамилий этого не скажешь.

Проверь себя перед сдачей

python validate.py new/new_042.csv

Ноль ошибок — обязательное условие. --warnings покажет ещё и мягкие замечания — там же живут проверки по разделу «Русская типографика и грамотность»: буква ё, кавычки, знаки препинания, окончания при цифрах, стандарты интерфейса. Они не блокируют сдачу, но батч без них выглядит заметно лучше.

Среди мягких есть сверка с выгрузкой строк игры: она ловит случай, когда до нас доехал уже испорченный оригинал — «Complete event.» вместо «Complete %num2% event[s].» или «Applied / Area Damage Level 2 Upgrades» вместо «Applied %num1%/%num2% …». Сам по себе такой оригинал выглядит целым, и перевод без числа проходит молча. Эталон лежит в sync/server_strings.csv (только строки с плейсхолдером или плюрал-разметкой). Обновить:

curl -s http://glyphcore.ddns.net:8080/list -o /tmp/list.csv
python tools/server_ref.py /tmp/list.csv

Без этого файла проверка просто выключается — на голом клоне линтер работает. Тот же линтер прогоняется автоматически при заливке через crowdsource/tools/batch_tool.py fill и не даст записать файл, если что-то из списка выше нарушено.

Частые ошибки (реальные, из сданных батчей)

❌ Так не надо ✅ Как надо Почему
Recipe[s]: Pearl Sabre → Жемчужная сабля Командора `Рецепт[ а
`Рецепт[ ы]` `Рецепт[
`Пир[ ы] сальсы(дляRecipe[s]: Feast…`) `Рецепт[
`Взрывающийся хвост дрейка[ ов]` `[Взрывающийся хвост дрейка
«Вы сделали всё… Ты доказал…» одно обращение на всю строку разнобой «ты/вы» внутри реплики
Пики Громоглавия, Угольная Бухта Громоглавые Пики, Бухта Углей самодельные топонимы вместо канона

Стиль

  • Естественный литературный русский, а не подстрочник. Сохраняй тон (грубый чарр — грубо, учёный асура — заумно, шутка — шуткой).
  • Термины — по канону. Боевые/механические термины (профессии, благодати, состояния, контроль, комбо, атрибуты) бери из GLOSSARY.md и с русской вики https://ru.gw2skills.net/wiki (эталон). Имена/локации — из глоссариев pn_*. Единообразие важнее личных предпочтений.
  • Обращение к игроку — на «вы» в интерфейсе/подсказках; в живых репликах — по ситуации. Внутри одной строки обращение должно быть одно. Письмо от NPC целиком на «ты» или целиком на «вы» — смешивать нельзя.

Русская типографика и грамотность

Это свод правил перевода, а не вкусовщина: каждый пункт — типовая ошибка, которую проверяющий иначе ловит руками в каждом батче. Помеченные [линтер] проверяет validate.py — они выходят в --warnings (вид, а не поломка, поэтому релиз не блокируют).

  1. Буква ё — обязательна. «Ещё», «придёт», «чёрный», «тяжёлый». Отсутствие ё мешает читать и мешает тем, кто озвучивает. Деёфикация делается за минуту, обратная ёфикация — за день. [линтер] ругается только на слова, где написания через «е» не существует; «все» / «всё» и «сестра» / «сёстры» он не различает — это на тебе.

  2. К игроку — на «вы». Исключения редки и осознанны.

  3. «Вы» с прописной — нельзя. Прописная «Вы» — из деловой переписки с одним человеком; в диалоге и при обращении к нескольким лицам она недопустима, а руководство пользователя — не переписка. Титул — другое дело: «Ваше Величество». [линтер]

  4. Знаки конца фразы — только из русского набора. Вопросительный знак может быть только один, восклицательные идут после него, а не наоборот. [линтер]

    ✅ Можно ❌ Нельзя
    ?! ?!! !! !!! ?.. !.. ?!. ... !? ?!? ??! ??? !!!???!!! ...? ...! ,... .., ....
  5. Пробела перед знаком препинания в русском не бывает. [линтер]

  6. Точка ставится за кавычкой, а не внутри. «Иди»., а не «Иди.» — внутрь точку убирает только английский. [линтер]

  7. Кавычки: снаружи «ёлочки», внутри „лапки“. Пушкин писал Дельвигу: «Жду „Цыганов“ и тотчас тисну». Если шрифт не тянет — “внешние лапки” и ‘внутренние одиночные’, в безвыходном случае "прямые" и 'одиночные прямые'. Игровой шрифт «…» тянет, так что прямые кавычки в переводе — почти всегда просто копипаста из оригинала. Кавычки одного рисунка вложенными не бывают: ««Меч «Змеиная ярость» берсерка»» — брак. [линтер]

  8. Капитализация — не английская. В английских названиях с большой буквы все слова, в русском так нельзя, если в этом нет отдельного смысла (иронического, стилистического: «Таинственный Ужас Неизведанных Глубин»). Intercontinental Ballistic Missiles — «межконтинентальные баллистические ракеты», а не «Межконтинентальные Баллистические Ракеты». [линтер] (проверка спрашивает у корпуса: если слово в середине фразы почти всегда строчное, заглавная в нём подозрительна)

  9. Звукоподражания — через дефис. По-английски пишут слитно, по-русски одинаковые буквы разделяют: «А-а-а!», «о-о-о», «хр-р-р». То же для заикания: «д-д-дефис» или «т... три т... т... точки» при особо тяжёлом. [линтер]

  10. «Свой» вместо «мой/твой/его». «Я хочу получить назад свой меч», а не «мой меч». Если принадлежность и так ясна, местоимение можно опустить вовсе: «Верните мне меч».

  11. Капслок — на ударном слове. Английский оригинал часто ставит капс на слово ПЕРЕД ударным; это их ошибка, а не образец. «Это МОЙ меч».

  12. Названия языков в меню выбора языка не переводятся. Меню существует ровно для того, чтобы носитель нашёл свой язык, когда настройки сбились и перед ним чужой. Правило общее для техники, не только для игр. [линтер]

  13. Стандарты интерфейса. [линтер]

    ❌ ✅
    опции настройки (Options)
    назначение клавиш управление (Controls)
    кликнуть, левый/правый щелчок щёлкнуть по чему-либо, щелчок левой кнопкой
    хиты, юниты единицы здоровья (здоровье), боевые единицы (здания, объекты)

    Щёлкают — по чему-либо. Нажимают — на что-либо или просто что-либо (лучше то, что физически нажимается: клавишу, но не ссылку). Применяют — что-либо или что-либо к чему-либо. Используют — просто что-либо, не «на» что-то.

  14. Падежное окончание при арабских цифрах — однобуквенное после гласной, двухбуквенное после согласной. 5-й, 5-я, 5-е, 5-м, 5-х, 5-го, 5-му, 30-ми; но не 5-ый, 5-ая, 5-ого, 30-ыми, 2-ух. [линтер]

  15. «Бог» в устойчивых оборотах — со строчной. «Не дай бог», «ради бога», «бог его знает», «бог с ним», «ей-богу», «боже мой», «господи». С прописной — только когда это настоящее обращение к Богу. Слава Богу (благодарит) и слава богу (расхожий оборот) различаются контекстом, а в «у него всё не слава богу» прописная невозможна. [линтер]

Что НЕ переводить

Технические строки (чистые коды, ссылки, числа) в батчи не попали — их отфильтровали. Если в батче попалась строка на другом языке (напр. немецком) — оставь пустой.

Как сдать батч

Сдай заполненный CSV так, как договорено в чате проекта: Pull Request в репозиторий, загрузка в общую папку или в Discord. Мейнтейнер вольёт его в игру скриптом merge_back.py:

python merge_back.py <путь_к_папке_glyphCore> <папка_или_файл_с_готовыми_батчами>

Скрипт сам находит строки во всех игровых файлах, заполняет их переводом, проверяет плейсхолдеры и не трогает уже переведённое.

С ключом --upgrade он вдобавок вытесняет заведомо худший перевод батчевым: если в игре строка сломана (линтер ругается, а батчевая чистая), лежит копия английского, осталась латиница вне слоя pn_* («гонке на roller beetle») или потеряно число из оригинала. Просто «другая формулировка» не трогается — такие расхождения выписываются в sync/reports/batch_conflicts.csv на просмотр человеком.

Словари названий

Названия и описания разведены по разным словарям — у предметов, достижений и умений (2026-08-11, tools/dictsplit.py):

словарь имя в оверлее записей
item_names Предметы: названия 42 816
item_descriptions Предметы: описания 10 504
achievement_names Достижения: названия 7 344
achievement_descriptions Достижения: описания 9 241
skill_names Умения: названия 2 987
skill_descriptions Умения: описания 4 228

Благодаря этому русские названия можно отключить штатной функцией переводчика (отключение дополнительных словарей) — названия в игре снова станут английскими, что удобно для вики, торговли и LFG, а описания при этом останутся русскими. Пока названия и описания лежали в одной категории, такой выключатель был невозможен. То же самое работает для dict_skins.csv (облики), dict_maps.csv (локации), dict_colors.csv (краски) и других профильных словарей. Имена персонажей и мест переключаются отдельно — опцией translate_proper_nouns в config.ini (слой pn_*.csv).

Правило для названий: все названия (предметов, оружия, брони — включая шаблоны линковки %str1%%str2%Название%str3%%str4%) живут в dict_item_names.csv или в профильных словарях (dict_skins, dict_maps…), а НЕ в main_strings.csv — иначе их нельзя будет отключить. Новые отдельные словари не создаём — добавляем строки в уже существующие.

Слой pn_* — реестр ВСЕХ названий, а не только имён людей

Всё, что игрок может пойти гуглить, обязано лежать в слое pn_*. Персонажи, локации, предметы, облики, краски, умения, таланты, маунты, мини, титулы, достижения, события, отряды, фракции — любое название, по которому ищут на вики, в гайде, на торговой площадке или в LFG.

Смысл правила не в переводе, а в обратимости: слой подставляет русскую форму на лету, и его можно выключить (translate_proper_nouns в config.ini). Название, попавшее в слой, игрок в один клик возвращает к английскому виду и находит по нему что угодно снаружи игры. Название, переведённое «намертво» прямо в строке, ищется только по догадке.

Отсюда же следует, что латиницу в русском тексте бояться не надо: если название заведено в слой, движок сам покажет его по-русски, а игрок при нужде вернёт английское.

Граница простая: в слой идут НАЗВАНИЯ, а не фразы. Описание умения, реплика NPC, условие достижения — это текст, ему в слое не место; название того же умения или достижения — место. Практический признак: строка короткая, начинается с заглавной, без завершающей точки, без плейсхолдеров и разметки.

Пополнять слой — dict_tool.py pnadd --file <csv> (колонки english,translate,layer), собирать канон из корпуса — pnharvest. Проверять состав слоя только через read_sections: load_map схлопывает записи по хешу между категориями и показывает вместо записи слоя её двойника из maps/item_names.

Спасибо, что помогаешь! 💛

About

GW2 — перевод текста (русская локализация GW2) разбитый на батчи

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages