4

Щоденник запопадного перекладача або ж як Абсолютне Зло проводило аудит тексту Dungeons 3

Абсолютне Зло повертається з новим щоденником (щомісячником… ні, радше, щосезонником) запопадного перекладача про локалізацію Dungeons 3. Спочатку він планувався як доповнення до ПОПЕРЕДНЬОГО, але Абсолютне Зло мало інші плани… У результаті з’явився новий щоденник Зла Що-Не-Має-Спочинку-Навіть-Після-Завершення-Проєкту про те, як аналіз даних може покращити процес локалізації.  Саму ж локалізацію можна знайти за ЦИМ ПОСИЛАННЯМ.

ПОПЕРЕДЖЕННЯ: це чтиво — для істинних послідовників Абсолютного Зла (технарів), тендітним прихильникам Богині Світла (гуманітаріям) може стати зле лиш від одного погляду на нього.

Однією з проблем, описаних в попередній частині щоденника, є те, що весь текст гри (а це близько 115 тис. слів) розміщений в єдиному файлі. Подібний підхід має як свої переваги, так і недоліки, однак за великого обсягу тексту недоліки виходять на передній план. До таких недоліків можна віднести: змішаність контекстів, ускладнення роботи в команді, незручність управління версіями.

Саме через ці недоліки Абсолютному Злу та його послідовникам спало на думку розділити великий файл локалізації на кілька менших, використавши інструменти аналізу даних. Однак проведення аналізу мало й додаткові переваги: точний підрахунок кількості реплік та слів персонажів/місій, теґів, створення теплової карти розподілу реплік персонажів між місіями (стане в нагоді під час дублювання).

Маю надію, що цей метод допоможе підвищити якість та гнучкість управління процесами для тих, хто насмілюється занурюватися у темні глибини локалізації.

Отже з цього моменту Абсолютне Зло замкнулося у підземних лабораторіях разом зі своїми найрозумнішими та найкомпетентнішими в подібних питаннях посіпаками — Лічами і почало аудит брудних та занедбаних Бібліотек Підземелля.

Перш ніж заглибитися в деталі, я пропоную поглянути на отриманий результат. А вже після цього — розповім, як саме вдалося його отримати та інші корисні інсайти щодо вмісту гри.

Аналіз даних дозволив розділити всі репліки (одиниці перекладу) за окремими файлами. Загалом було отримано 24 файли (категорії визначено на основі класифікації від самих розробників). Очевидно, що це не оптимальне число: деякі із них надто малі (по декілька десятків слів), їх варто об’єднати в більші, щоб зменшити кількість файлів. Утім, такий розподіл дає чітке розуміння вмісту оригінального файлу. Розмір отриманих файлів виміряно як в кількості реплік, так і в кількості слів.

Після цієї невеличкої демонстрації настав час перейти від результатів до практики — як усе це робилося. Насправді, для початку не потрібно жодних складних інструментів: достатньо звичних таблиць (Google Таблиці/MS Excel) і трохи терпіння. Але коли справа доходить до графіків, хотілося трохи блиску й привабливості — тож Зло Що-Обожнює-Перекладати-(Зокрема-І-Роботу-На-Підлеглих) покликало Сукуба до своєї лабораторії. Вона швидко додала даним плавних ліній і приємних кольорів — і ось уже суха статистика перетворилася на графіки й діаграми зі спокусливими вигинами. А ім’я цього Сукуба — Tableau.

Перш ніж рухатися далі, нагадаю, як виглядає таблиця з текстом гри. У ній кілька основних стовпців:

  • name — короткий опис рядка;
  • wording — сам текст, який з’являється у грі;
  • uid — унікальний номер, за яким гра знаходить цей рядок;
  • voice — код персонажа, якщо репліка озвучена;
  • tags — технічні теґи, що не впливають на переклад, але іноді допомагають зрозуміти контекст.

Поля voice та tags можуть бути порожніми.

Спершу Абсолютне Зло вирішило поділитися тим, як воно розділяло одиниці перекладу за меншими файлами. Для того щоб вірним послідовникам було легше встежити за генієм Зла-Що-Нехтує-Зрозумілістю, воно розділило процеси на окремі кроки.

Крок 1 — Класифікація одиниць перекладу за контекстом

Першим і основним завданням є класифікація одиниць перекладу. Благо, назва класів, визначених розробником зашифрована в полі name у вигляді першої частини назви, так досягнення позначені словом ACH (achievement), описи створінь починаються з creature, діалоги місій — з DLG (dialogue), елементи інтерфейсу — з UI (user interface) і так далі. 

Щоб отримати назву категорії в окремому полі можна скористатися вбудованим інструментом таблиць — розділенням тексту на стовпці. В якості розділювача обираємо “_” і отримуємо багато стовпчиків, на які було розділено оригінальне значення, залишаємо лише перший; вуаля — базова класифікація готова. Тепер в стовпці, що утворився, через інструмент заміни можна змінити скорочення на повніші та змістовніші назви.

Крок 2 — Визначення розміру одиниць перекладу

Отриманий результат одразу можна розділити між різними файлами вручну або через скрипт, але Зло Що-Не-Має-Спочинку вирішило піти далі і одразу порахувати розміри кожної із отриманих категорій. Перше, що треба зробити — підрахувати кількість слів у кожній одиниці перекладу, для чого було використано наступну формулу: =IF(B2="";"";COUNTA(SPLIT(B2;" "))).

Крок 3 - Зведення даних про кількість та розмір одиниць перекладу

Маючи дані про належність одиниць перекладу до категорій та кількість слів можемо підрахувати розмір кожної із категорій, для цього треба створити новий аркуш у тому ж документі та скористатися лиш трьома формулами:

  • =UNIQUE(original_texts!$F$2:$F$8183) — отримати список з унікальних назв категорій
  • =COUNTIF(original_texts!$F$2:$F$8183;A2) — порахувати кількість одиниць перекладу категорій
  • =SUMIF(original_texts!$F$2:$F$8183;A2;original_texts!$G$2:$G$8183) — підсумувати кількість слів в категорії.

В результаті менш ніж за 10 хвилин величезний файл локалізації було розділено між 24 категоріями та визначено точний розмір кожної із них. Візуалізації розподілу одиниць перекладу за категоріями разом з їхніми розмірами та часткою в загальному обсязі тексту можна побачити раніше в цьому пості.

Крок 3.5 — Підрахунок теґів

Одразу після цього подібним способом було визначено теґи та те, як часто вони зустрічаються: спойлер — їх дуже мало і вони ні на що не впливають.

Далі Абсолютне Зло вирішило поділитися секретним ритуалом виклику теплової карти розподілу тексту між персонажами та місіями. Із візуалізації розподілу видно, що діалоги складають 65% від усього тексту гри, тому було б корисним розділити цю категорію на ще менші файли — місії. 

На окремий аркуш було скопійовано усі одиниці перекладу, чиє значення name починається з dlg. У категорії dlg друге слово в полі name позначає код місії (зазвичай цей код пов’язаний із подією або механікою конкретної місії). Тож цей код було виокремлено тим самим способом, що і категорії. Далі було необхідно співставити назву місії з її кодом: тут стали в нагоді Малі Шмаркачі які виконували функцію пошуку по документу (так, виявилося, що їх можна навчити читати). 

З’ясувалося, що в категорії dlg містяться не лише тексти діалогів, а й реакції персонажів на певні події, які повторюються в декількох місіях (виявлення прихованої кімнати, напад героїв на підземелля тощо). Саме через це колонки таблиці отримали назви mission/event_code та mission/event_name.

Далі було встановлено відповідність імен персонажів значенням кодів персонажів з поля voice. Цей етап був дещо довшим: на відміну від назв місій і їхніх кодів, відповідність між іменем персонажа та його кодом ніде не зазначена. В цьому випадку ані Малі Шмаркачі, ані Ґобліни не допомогли автоматизувати процес — довелося вичитувати репліки, щоб з’ясувати кому вони належать.

Подібно до того, як раніше було пораховано розподіл тексту між категоріями, було підраховано розподіл реплік та слів за місіями, що дозволяє точніше прогнозувати ресурси, необхідні для локалізації, та за персонажами, що стане в нагоді при їх озвучуванні.

А, і як видно з таблиці вище — Богиня Світла, що жодного разу не звернулася до своїх послідовників, явно не заслуговує на те, щоб правити цим світом. Він має належати Абсолютному Злу! А, стоп… Зло Що-Не-Промовило-І-Слова-За-Гру не промовило за гру жодного слова. Ну й нічого, це компенсується балакучістю Талії та Оповідача.

І нарешті — час для кількох спокусливих візуалізацій від нашого любого Сукуба Tableau. Вони демонструють теплові карти розподілу реплік/слів між персонажами та місіями або ж скільки реплік/слів належить кожному персонажу у кожній з місій. 

Отже, шановані послідовники Абсолютного Зла, якщо ви дочитали аж сюди — значить, у вас є все, щоб підкорити світ (або хоча б почати локалізовувати його). Настав час осквернити хаос, створений богами, засобами темного та підступного аналізу!

Пам’ятайте:

  • жоден рядок не сховається від ваших фільтрів;
  • жодна репліка не втече від вашого COUNTA
  • жоден Сукуб не відмовить у спокусливій візуалізації.

Тож беріть свої таблиці, налаштовуйте чорти, ой, чари… тобто чарти та рушайте у великий похід за темною, структурованою локалізацією. Нехай ваші формули не ламаються, CSV відкриваються без кодів помилок, а репліки персонажів завжди збігаються з контекстом!

P.S. Ходить поголос, що підлеглі Абсолютного Зла останнім часом ходять дуже щасливі, адже їх перестали постійно гамселити. Це все через те, що Зло Що-Не-Знає-Спокою знову зачинилося у Лабораторії, з якої долинає клацання клавіш і зловісне бурмотіння формул. Продовження — невідворотнє.

Далі буде…

Сатаніст Богопоклонник, осінь 2025.

Оцініть пост:
4
Коментарі