Доколе, доколе я буду видеть это?
Когда-то, а конкретно 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 у меня нет, поэтому я буду проверять на Рефордже, но поверьте и на более старых патчах всё будет работать.
И помните, чем древнее ваш способ, и патч на котором вы работаете, тем вы круче (С), но и про современные способы не забываем
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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, ещё как вариант можно сравнивать длину звуков, в каждой озвучке они разные.
23
makkad, можно проверять чему равна любая строка TRIGSTR_XXXX из wts-файла и синкать язык через кэш.
Вообщем, сверяться и синкать через кэш каждый раз. Ок. Это ведь можно в любой версии Warcraft?
33
да, в этом и вся суть метода, что можно через любой варкрафт
23
Bergi, Я хотел уточнить что проблем именно с кэшем и синхронизацией нет во всех версиях варкрафт. Это так?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.