Доколе, доколе я буду видеть это?
Когда-то, а конкретно 20 лет назад, эту технологию знали многие, но спустя годы она была утеряна, я сейчас говорю про автоматическую локализацию карты для любого патча, начиная от 1.03 и заканчивая 1.32.10.
Неужели не у кого не было вопроса, а что же это за такая графа язык в MPQ editor'е
А весь наш текст находится в файле WTS, читаем подробнее о структуре файлов WC3
По умолчанию из карты считывается war3map.wts нейтрального языка
war3map.wts
STRING 1
{
LocaleTest
}

STRING 2
{
UNKNOWN
}

STRING 3
{
NODESCRIPT
}

STRING 4
{
UNKNOWN
}

STRING 7
{
Test String
}

STRING 8
{
Player 1
}

STRING 9
{
Player 2
}

STRING 10
{
Clan 1
}

STRING 11
// Units: hspt (Test Unit), Name (Name (unam))
{
Test Unit
}
Однако, если загрузить второй файл, то игра при проверке нашей локализации игры, прочитает уже файл war3map#0419
war3map#0419
STRING 1
{
ТЕСТ ЛОКАЛИЗАЦИИ
}
STRING 2
{
Не важно
}
STRING 3
{
Описание отсутствует
}
STRING 4
{
Неизвестно
}
STRING 7
{
ТЕСТОВАЯ СТОКА
}
STRING 8
{
ИГРОК 1
}
STRING 9
{
ИГРОК 2
}
STRING 10
{
Клан 1
}
STRING 11
Units: hspt (Test Unit), Name (Name (unam))
{
ТЕСТОВЫЙ ЮНИТ
}

Практика

С теорий разобрались, а теперь практика. Так как мы на XGM, где преобладает русскоговорящее комьюнити, то основной язык у нас будет русский, а язык перевода - английский, и я рекомендую работать именно так, и никак не наоборот (основной английский, перевод русский).
Вот допустим мы сделали свою карту на русском языке, у нас там способности, куча текста в триггерах и так далее, пришло время её перевести.
  1. Извлекаем war3map.wts из карты в любое удобное для нас место
  2. Переводим все строки или выборочно, например я переведу только 1 способность в STRING 12
STRING 12
// Способности: Asps (Похищение магии), Tip (Подсказка: используется)
{
Похищение Русского языка (|cffffcc00T|r)
}
ну и напишу там вот так вот
STRING 12
// Способности: Asps (Похищение магии), Tip (Подсказка: используется)
{
Stealing russian language (|cffffcc00T|r)
}
Да простят меня англоговорящие
  1. Переименовываем war3map.wts в war3map1.wts, чтобы его не перезаписало при импорте
  2. Помещаем наш файл war3map1.wts в корневую папку карты
  3. Устанавливаем нашему файлу локализацию => Установить язык файлов
  1. Переименовываем, чтобы в конечном итоге получилось вот так:
Всё наш файл превратился в war3map#0409.wts
ВАЖНО
Манипуляции по добавлению файла перевода, необходимо будет проводить в самую последнюю очередь, все переводы будут удалены при сохранении карты в World Editor.
Остаётся только проверить, английской версии 1.26 у меня нет, поэтому я буду проверять на Рефордже, но поверьте и на более старых патчах всё будет работать.
И помните, чем древнее ваш способ, и патч на котором вы работаете, тем вы круче (С), но и про современные способы не забываем
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
33
Это моя статья, примерно полгода goodlyhero скинул карту в дискорд XGM, я ещё тогда глянул, как оно устроено и разобрался, тут в принципе просто всё. Опубликовал, потому что меня триггернул grylll, своими скринами на которых по 2 языка в абилках👿

А то что аналогичное вышло на хайве 2 дня назад, это так совпало 😂

Вот у меня есть небольшой пруф
где я скачивал карту из дискорда в феврале, но она там ещё раньше появилась
Загруженные файлы
12
А вот и комментарий от Daro.
Все же перевод карты даже если ограничиваться файлом .wts долгий и трудоемкий процесс, который так или иначе придется делать в ручную. Привести весь файл ,wts целиком автоматически через какой-то онлайн переводчик , тоже не получится и мало кто захочет так заморачиваться.
Если рассматривать только патч 1.26.То у нас будет куча сложностей, текстовые строки в триггерах и в коде , которые не идут в .wts файл а остаются (пример: local string s = "|c00FF0303Я не могу носить два предмета одного класса!|r"). Так что делать в таком случае, выносить весь игровой текст, который выводится на экран в глобалки? Делать базу перевода в ручную с проверкой локализации?
Дальше заметил такой факт , что wts заполняется странно и довольно таки рандомно, огрызки от описания одной способности могут быть раскиданы очень далеко от друга. Дальше придется как-то обновлять версию перевода (англ) каждый раз после сохранения карты и добавлении изменений. Либо вести параллельно 2 и обновлять 2 версии текста самостоятельно каждый раз.
Все кажется что перевести англ. карту на русский язык для нас будет легче, чем наоборот.
Я не знаю может у кого есть скрипт на Пайтоне и что-то подобное , чтоб автоматически правильно перевести файл wts.
33
Daro, да хорошие замечания, способ идеально подойдёт для тех, кто очень много работает с ро и пишет текст целиком на через ГУИ, я думаю для Lord_Teo или же для grylll, с учетом их структуры карт, надо пробовать. Хочу и сам попробовать перевести какую-нить карту на английский или на русский, для образца, кидайте свой пример, мб что получится
12
Bergi, Даро тогда может попробовать перевести свою карту - Lich Defense на англ язык, как раз простая ГУИ+РО карта. Посмотреть что из этого получиться в итоге. Всего 1800 строк wts.
15
Daro, при конвертации ГУИшных строк в JASS они заменяются на строку формата "TRIGSTR_XXXX", где XXXX - число. Собственно в wts файле эти константы как раз определены, поэтому локальные строки по-любому можно вынести туда.
23
Может кто подскажет? В карте длина паузы в диалогах зависит от длины текста. Если делать мультиязычную карту по описанному выше методу, то при игре двух игроков с разными настройками языка будет десинк. Есть какие идеи обхода этой проблемы?
28
Daro, когда я-таки доделаю свой генератор описаний, то переводить будет довольно просто.

makkad, во время сборки карты высчитывать время на основе самого длинного описания.
33
makkad, во время сборки карты высчитывать время на основе самого длинного описания.
Молодцы что так сделали, а то было бы плохо да
23
PT153, как отослаться к локальным строкам из других языков? И нужно чтобы всё было оптимально, если играющие одноязычны. Т.е. если оба русскоязычны, то и высчитывать время только на основе русскоязычного .wts
15
makkad, можно проверять чему равна любая строка TRIGSTR_XXXX из wts-файла и синкать язык через кэш.

makkad, ещё как вариант можно сравнивать длину звуков, в каждой озвучке они разные.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.