Поддержка мультиязычности в клиенте Lineage 2
Итак мануал о том как сделать мультиязычный клиент своими руками.
Для работы нам понадобится:
Для начала нужно составить список файлов, которые нам понадобятся. Для этого в любом файловом менеджере (проводник, Total Commander и т. п.) открываем папку с клиентом еврооффа и делаем поисковый запрос "*-e.*" (кавычки ставить не нужно). Поиск покажет Вам все файлы с окончанием на "-e" - это и есть файлы с английской локализацией. Теперь нужно по полученному списку вынуть из клиента руоффа аналогичные файлы с окончанием "-ru". Вся локализация заключается в файлах *.dat и Lineage2RU.ini, которые находятся в системной папке, файле L2Font-ru.utx в папке SysTextures и файлах русской озвучки в папке Voice. Хочу заметить, что у русского клиента файлов локализации будет немного больше чем у оригинального. Это связано с тем что Иннова напихала в него какой-то отсебятины, которая с EU-клиентом работать все равно не будет, поэтому отбирайте только те файлы, которые будут парой -e/-ru. Далее *.dat нужно будет пропатчить, как это сделать было написано множество раз, поэтому не будем вдаваться в подробности. Хочу только сказать, что лучше всего сперва проверить работоспособность нашего "ру-патча", чтобы удостовериться что все файлы читаются нормально и клиент работает с ними без ошибок. После того как Вы разместили все русские файлы на своих местах в оригинальном клиенте можно приступать к самой интересной части. Находим в системной папке клиента файл localization.ini и раскодируем его при помощи L2EncDec'а (кодировать обратно при этом не обязательно, клиент будет работать и так). Для того чтобы включить в клиенте выбор языка нужно поменять несколько параметров. После редактирования файл должен выглядеть примерно так: Код:
[LanguageSet] После данных манипуляций, если все было проделано правильно, в клиенте должна включиться опция выбора языка в настройках. Во всей данной работе есть один недостаток - в настройках клиента русский язык будет отображаться как Japanese, но где наши танки не ходили :D Раскодируем файл interface.u и открываем в hex-редакторе. Так как файлы различных версий скорее всего отличаются смещениями, то писать конкретные адреса искомых байтов не вижу смысла. Тем не менее найти их довольно просто. В текстовом блоке редактора выполняем поиск по запросу "Japanese", первое же найденное совпадение это и есть то что мы ищем. Байты, составляющие слово, нужно заменить на "Russian ". В слове "Russian" меньше букв, поэтому замените лишний байт в конце слова пробелом. Сохраните файл и закодируйте его в обратном порядке. Enjoy :) |
Re: Поддержка мультиязычности в клиенте Lineage 2
Ах да, и еще... Все данные манипуляции могут привести к непредвиденным проблемам, например к таким как нестыковка путей к текстурам, в результате чего местами возникнут черные поля, или неожиданные критические ошибки клиента. Те кто понял основную идею и немного понимает структуру hex-кода разберется дальше сам. Желаю удачи в ломании :)
|
Re: Поддержка мультиязычности в клиенте Lineage 2
Проблемка, при загрузке после выбора чара, черный экран)) тобишь лоадинг скрина нету.как то поправимо?
|
Re: Поддержка мультиязычности в клиенте Lineage 2
Цитата:
|
Re: Поддержка мультиязычности в клиенте Lineage 2
оу, круто. кстати не обязательно же кодировать обратно файл.
и еще вопросик. в игре карта только на русском. Ни как не выходит на англ сделать. В файле локализации все верно путь прописан. =( |
Re: Поддержка мультиязычности в клиенте Lineage 2
Цитата:
|
Re: Поддержка мультиязычности в клиенте Lineage 2
хм чет не появляется выбор языка =\
|
Re: Поддержка мультиязычности в клиенте Lineage 2
Интересная тема ! Спасибо
|
Re: Поддержка мультиязычности в клиенте Lineage 2
2DreamTheater
Мне вот интересно вставал вопрос чтобы в выпадающем меню сделать 3 языка. Саму обработку кода я "вписал", но вот с выбором что-то никак. Выпадает всё равно 2, но там нет места чтобы воткнуть еще, и что-то немного "сложноватый" кусок. Может есть какие идеи? |
Re: Поддержка мультиязычности в клиенте Lineage 2
Спасибо . Статья очень хорошая ,время потраченное на чтение не прошло даром =) Хотя я больше придерживаюсь мнения что лучше выложить патчи под различные языки ибо все эти манипуляции жрут место на винте ,а следовательно и больше трафика при скачивании патча у игроков.
ma4o, Код:
[LanguageSet] Если не поможет значит в НЕХ надо лазить . На досуге пороюсь , отпишу если чтото найду. |
Re: Поддержка мультиязычности в клиенте Lineage 2
2Plush_Hero
Ты немного не понял. По порядку: 1. В локализейшн уже имеем настроенные 3 языка. 2. В папке систем и систекстурес уже все подготовлено. (П.С. если менять через локализейшн то все 3 языка работают) Далее. 3. Идем в файл локализейшн и включаем "EnableEngSelection=True" Все прекрасно 2 языка в выборе есть (первый что мы выбрали, второй английский) 4. Беру файл interface.u и переписываю Код:
bEnableEngSelection = IsEnableEngSelection(); Но в выборе языков все равно 2. 5. Нашел место в файле interface.u, которое дополнительно отвечет за вывод количества строк Код:
Б$ «% ROptionWnd.LanguageBox Korean «& ROptionWnd.LanguageBox English ?- e Џ OptionWnd.LanguageBox ѕ Џ |
Re: Поддержка мультиязычности в клиенте Lineage 2
ma4o,
Ну первый кусок вроде правильно переписал , сейчас просто нету клиента на руках , не могу глянуть полностью весь файл. А вот второй нужно бы раскодировать правильно ,ибо эти крякозябры не дело . Сегодня вечером приду домой , гляну что там как , отпишу подробнее. |
Re: Поддержка мультиязычности в клиенте Lineage 2
Цитата:
"Кракозябры" так они и есть там (я не стал "редактировать"). Добавлено через 3 минуты И еще. Если обратить внимание, то во втором куске кода как раз везде есть дополнительно написанный язык "English", так вот как раз он везде и есть в выпадающем списке. Добавлено через 9 часов 35 минут Апну. Просто уже вечер, может появись у кого мысли. Добавлено через 18 часов 19 минут Уже прошли сутки, ничего новенького - жаль. |
Re: Поддержка мультиязычности в клиенте Lineage 2
Эхх, новый пост не делается и апнуть ни как.
|
Re: Поддержка мультиязычности в клиенте Lineage 2
Честно , я у себя поменял все так как писал я и у меня нормально работало и 4 и 3 языка. Чем тебе помочь даже не знаю . Я не ПХПшер =(
|
Re: Поддержка мультиязычности в клиенте Lineage 2
Цитата:
П.С. Ил всё же говорим про разные вещи. Мне бы скрин где выпадает 4-ре языка. |
Re: Поддержка мультиязычности в клиенте Lineage 2
Апчхи.
А то человек совсем куда-то пропал. |
Re: Поддержка мультиязычности в клиенте Lineage 2
Plush_Hero вернись, а то на форуме тебя уже месяц не было.
|
Re: Поддержка мультиязычности в клиенте Lineage 2
кстати не советую делать мультиязычность такого вида в клиенте хф последней версии - начинаются проблемы с просмотром боев олли - критует (правда только если использовать для показа списка боев новый пакет из хф, если по старинке формировать обычный хтмл - все нормально). причина в том что в таком режиме клиент пытается читать данные по интерфейсу с несуществующими именами из ui.ugx.
|
Re: Поддержка мультиязычности в клиенте Lineage 2
2Gaikotsu
У тебя нет идей, или хотя бы времени глянуть 1 глазком? Дело в том что все эти имена так же переписываются. О ХФ пока разговора не идет, использую фрею. |
Re: Поддержка мультиязычности в клиенте Lineage 2
Очень интересно было почитать?
А на всех сборках действует? |
Re: Поддержка мультиязычности в клиенте Lineage 2
Цитата:
ultra face palm! :facepalm::facepalm::facepalm::facepalm: |
Re: Поддержка мультиязычности в клиенте Lineage 2
Как правильно закодировать interface.u обратно? После кодировки при запуске клиента выдает крит... Пытался на фрее.
|
Re: Поддержка мультиязычности в клиенте Lineage 2
Хех, столько времени, а идей все так и нет.
|
Re: Поддержка мультиязычности в клиенте Lineage 2
Цитата:
у меня проблема другая, в хай 5 если сделать как указано на 1 странице в окне просмотра олимпиады квадратики вместо букв |
Re: Поддержка мультиязычности в клиенте Lineage 2
в хф что-то сильно намудрили со всем этим - еще и криты можно словить в некотрых местах если сделать такую мультиязычность.
так что я не мудрствуя сделал проще - клиент запускаю через лаунчер, а тот при запуске просто подменяет все нужные dat-файлы на dat-файлы с соотвествующим языком из отдельной папки и получается у меня та же мультиязычность, просто не настолько гибкая как выбор языка непосредственно в самом запущеном клиенте. дел вобщем на полчасика-час в дельфе. |
Re: Поддержка мультиязычности в клиенте Lineage 2
Дайте уже готовые файлы для клиента Interlude
а то что то не выходит localization.ini Цитата:
|
Re: Поддержка мультиязычности в клиенте Lineage 2
Цитата:
EnableEngSelection=false не пробовали ? |
Re: Поддержка мультиязычности в клиенте Lineage 2
Так же ....
может тогда поможете если мульти не ставить: есть все файлы -е.dat под руофф всё работает норм кроме отображения русских названий в файлах zonename-e.dat huntingzone-e.dat При вкл функции Отображения названий локаций , вместо рус названий отображается только иконка перед названием локаций ( в центре экрана ). с родными англ всё норм. |
Re: Поддержка мультиязычности в клиенте Lineage 2
скачайте систем ИТ с русскими датниками.
*-e.dat это английские датники. *-ru.dat это русские датники |
Re: Поддержка мультиязычности в клиенте Lineage 2
e-dat у меня уже на русском все ( мультиязык не стал ставить так как не выходит что то у меня )
вот что выходит ( при русификации ) http://img341.imageshack.us/img341/3310/shot00012m.jpg клиент не видит русских названий |
Re: Поддержка мультиязычности в клиенте Lineage 2
Автору спасибо за статью, немножко дополню.
Разбирал файл в клиенте Gracia Epilogue Насколько я понял, изменение самого "кода", например Код:
switch( Language ) Код:
..$.. .%...P..OptionWnd.LanguageBox..Korean... .&...P..OptionWnd.LanguageBox..English...l.-.r ........OptionWnd.LanguageBox...... .......OptionWnd.LanguageBox...... Добавить в список 3й язык пока не удалось, но особо и не старался. То, что описано в 1м посте топика, позволяет задать русский язык вместо японского, затем переименовать его в "Russian". Но т.к. в клиенте могут быть (и есть) некоторые привязки к японскому языку, возникают разного рода ошибки и криты. Чтобы их избежать, предлагаю такой вариант: 1) Исходное распределение языков по ID в файле localization.ini: Код:
0=Korea Код:
[LanguageSet] Т.к. русского, увы, в исходнике нет, выберем любой другой язык, для которого устанавливается 2 элемента в списке. Таких языков у нас 5: LANG_Korean, LANG_Japanese, LANG_Taiwan, LANG_Chinese, LANG_Thai. 3) Выберем язык, вместо которого воткнем русский. Пусть это будет все тот же Японский. Теперь идем в скомпиллированную часть. Нас интересует кусок, относящийся непосредственно к японскому языку Код:
..$.. .'...P..OptionWnd.LanguageBox..Japanese... .&...P..OptionWnd.LanguageBox..English...b.-.r . .......OptionWnd.LanguageBox...... .......OptionWnd.LanguageBox...... class'UIAPI_COMBOBOX'.static.AddString( "OptionWnd.LanguageBox", "Japanese" ); class'UIAPI_COMBOBOX'.static.AddString( "OptionWnd.LanguageBox", "English" ); if( bEnableEngSelection ) class'UIAPI_WINDOW'.static.EnableWindow( "OptionWnd.LanguageBox" ); else class'UIAPI_WINDOW'.static.DisableWindow( "OptionWnd.LanguageBox" ); много общего, не правда ли?) Теперь всё, что нам нужно - заменить константу LANG_Japanese на соответствующую русскому, и заменить текст элемента списка "Japanese" на "Russian". Второе не так сложно: просто заменяем Japanese на Russian+пробел (дабы сохранить количество символов) получаем Код:
..$.. .'...P..OptionWnd.LanguageBox..Russian ... .&...P..OptionWnd.LanguageBox..English...b.-.r . .......OptionWnd.LanguageBox...... .......OptionWnd.LanguageBox...... Не сложно заметить, чем отличаются начала строк Код:
..$.. .%...P..OptionWnd.LanguageBox..Korean... Код:
95 03 24 01 12 20 AC 25 00 00 1B 50 01 1F Цитата:
Выделенные красным - это то, что нас больше всего интересует. Это значения констант в switch операторе. 01 = Korean 02 = English 03 = Japanese 04 = Taiwan ... Как видим, здесь отсутствуют пункты для Филиппин и России. Т.к. мы решили заменить японский язык (а ему соответствует 3я строка), то в 3й строке меняем 03 на 09. Теперь всё это дело сохраняем в Hex-editor'e. 4) При попытке закодировать файлик обратно, лично я поймал крит клиентом (файлы повреждены, и т.п....). Поэтому кодируем файлик в какой-либо другой файл. Например так l2encdec.exe -e 111 interface-d.u interface-new.u. Теперь отрываем самый первый, чистый файл в Hex-editor'e, жмем "Export" и сохраняем как текстовый файл. Ту же операцию проделываем с новым (interface-new.u, или как вы его обозвали) файлом. Пользуясь утилитой WinMerge (несложно найти в открытом доступе), открываем оба текстовых файла, находим отличающиеся строки. Их будет, кажется, 3. Первой строке соответствует закодированный байт с ID нашего языка, 2 - переименованный Japanese -> Russian, 3 - косяк кодировщика :question: Теперь в нашем Hex-editor'e заменяем отличающиеся байты. Делается это примерно следующим образом: в WinMerge находим отличающуюся строку, в ней отличающиеся байты. http://img705.imageshack.us/img705/2852/36096084.png запоминаем адрес строки (выделен на скрине), в старом файле переходим к нему в Hex-editor'e, в строке находим интересующий нас байт и переписываем (главное не перепутать старое с новым). Последние строки файла не изменяем, т.к. они содержат ошибку, из-за которой и критует клиент. Заменив интересующие нас места, сохраняем файлик и закидываем в клиент. |
Re: Поддержка мультиязычности в клиенте Lineage 2
Все ППЦ накипело- ребят кто может отзовитесь 3 дня пытаюсь сделать мультиязычным клиент скачивал ЕВРООФФ. Пытаясь перенести файлы с РУОФФ у меня просто клиент завершает работу- когда подключаю Русский в ini.
Еще огромная просьба объясните как и чем вы декодировали Interface.u. Я пытаюсь декодировать но у меня крокозяблы ну и вот эта часть кода Код:
switch( Language ) Код:
..$.. .%...P..OptionWnd.LanguageBox..Korean... .&...P..OptionWnd.LanguageBox..English...l.-.r ........OptionWnd.LanguageBox...... .......OptionWnd.LanguageBox...... И напишите как закодить обратно- какую кодировку использовать. Так же не откажусь от мультиязычной папки System. Все для Epilogue 152 протокол. Все наконец-то разобрался. Сам глупил- вместо разкодировщика использовал кодировщик и наоборот. Вот поэтому у меня и получалась каша. Остался 1 вопрос- после применения языка и перезахода в клиент- язык снова сбрасывается. Как сделать сохранение языка? |
Текущее время: 21:10. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot