Skip to forum content

You are not logged in. Please login or register.


forums.pvpgn.pro → [RU] Research & Development → [Solved] Русификация PvPGN

Pages 1

You must login or register to post a reply

RSS topic feed

Posts: 20

1

Topic: [Solved] Русификация PvPGN

kucc wrote:

полностью русифицировал всю батлу

смог ли ты поменять кодировку в 'ядре' сервера?
удалось ли русифицировать такие файлы как channel, topics, etc? (наивная смена кодировки в самом пхп файле приводит к ошибкам при запуске сервера.)
русифицировал "сообщение дня", выводимое при просмотре новостей в правой части экрана? (welcome to the PvPGN server Bnetd mod 1.8.2 бла бла бла...) где это сообщение исправлять я не нашел.. на официальном бнете оно русифицировано, а значит - это возможно.
ну и серверные сообщения типа "Ваш друг вошел на батлнет..."

хотелось бы линки на программы с помощью чего это можно сделать

2 (edited by kucc 22.04.2008 19:56)

Re: [Solved] Русификация PvPGN

Логика перевода простая, не люблю прям копи паст поэтому объясню как сделал русификацию для русского клиента (для английского по любому нужно фонты и кодировки как минимум, тоже думал сделать мини патчик такой).

Сперва определяется клиент какой если ruRU то саму мессагу сделать в вин по умолчанию в исподниках си (тупо напечатать на русском короче) и вывод win2utf8(msg); предварительно конечно сделать функции на них перевода кодировки.
С сервисными точно так же но есть одно но - получаемые из игры они уже в ютф, и по выводу обратно в которой переменной уже храниться в ютф и опять переделываю ютф - выводит в клиент белеберду - поэтому переменные мы делаем myusername,utf8towin(gamename) - пример название игры. Смысл просто мы его переводит из ютф игры в обычную нам вин.

Есть глупый просто тупой способ - читал на дидикейте так решили проблему - они просто прям в ютф писали в исходниках текст, по факту он уже в игру заходил в том котором нужно, но есть одно но - если больше определенного количества другой кодировки в текстовике то любой редактор или тот же вижуал студио переделывает сам файл в кодировку ютф - и получается что? Ну вы поняли белеберда и там и там, а так же если заходим английским клиентом проверки то нету он ему в ютф показывает что? Опять же белеберду.

Про сервисные сообщения немного не понял - ну естесно в батле нет всех сообщений - некоторые в клиенте уже сидят и локализация происходит прям в клиенте на месте.

3

Re: [Solved] Русификация PvPGN

kiss http://forums.harpywar.com/viewtopic.php?pid=184#p184

Вообще-то при локализации выносятся все сообщения в отдельный файл и там редактируются. Так, как это делают пвпгнорасты, обычно делают прыщеблядки, запивающие гноем с прыщей ведра пенгвенячей спермы и заедающие все это несвежим залупным творожком струхвальцы. Впрочем, прыщеподелие для локализации никто и не готовил.

Еще скажите спасибо за то например, что /help ipban выводится из bnhelp.conf, а /ipban help - из сырцов. Итд.

и вывод win2utf8(msg);

Практичнее будет таки хранить все в utf.

С сервисными точно так же но есть одно но - получаемые из игры они уже в ютф, и по выводу обратно в которой переменной уже храниться в ютф и опять переделываю ютф - выводит в клиент белеберду - поэтому переменные мы делаем myusername,utf8towin(gamename) - пример название игры. Смысл просто мы его переводит из ютф игры в обычную нам вин.

ascii - это подмножество unicode. Поэтому преобразование ascii -> utf будет работать всегда, а вот обратно нет.

Есть глупый просто тупой способ - читал на дидикейте так решили проблему - они просто прям в ютф писали в исходниках текст, по факту он уже в игру заходил в том котором нужно, но есть одно но - если больше определенного количества другой кодировки в текстовике то любой редактор или тот же вижуал студио переделывает сам файл в кодировку ютф - и получается что? Ну вы поняли белеберда и там и там, а так же если заходим английским клиентом проверки то нету он ему в ютф показывает что? Опять же белеберду.

Нипонял, что получается? Он не переделывает, а по идее переключает отображение в utf.

Есть ведь еще такая проблема. Близзарасты со старкрафтом опять просрались (помимо уебищного протокола, который намертво не дружит с NAT-ами в некоторых ситуациях), а именно стар использует не utf8, а cp1252->utf8, которые совпадают только для cp1252. По сути это немного измененное ascii, поляк или западноевропеец кириллицы не увидят, а увидят козюбрики.
Поэтому должно быть 2 файла - 1 для сторкравда, и 2 для остальных.

Короче присоединяюсь к предложению показать результаты.

4

Re: [Solved] Русификация PvPGN

xpeh wrote:

kiss http://forums.harpywar.com/viewtopic.php?pid=184#p184

Есть ведь еще такая проблема. Близзарасты со старкрафтом опять просрались (помимо уебищного протокола, который намертво не дружит с NAT-ами в некоторых ситуациях), а именно стар использует не utf8, а cp1252->utf8, которые совпадают только для cp1252. По сути это немного измененное ascii, поляк или западноевропеец кириллицы не увидят, а увидят козюбрики.
Поэтому должно быть 2 файла - 1 для сторкравда, и 2 для остальных.

Короче присоединяюсь к предложению показать результаты.

Тема заглохла, но харпивар попросил её продолжить.
Что имею - полностью на 100% русифицированный пвпгн, где даже в логах пишется дата и время на русском, везде пофикшено и нету крякозябликов между игроками и играми, поддержка всех текстовых файлов в вин1251, что не парюсь с переводами и простым редактором изменяю и пишу тупо по русски.
Так что по поводу старчика смог подружить их, немного по другому раскодирую и закодирую для старкрафта месаги, что позволяет игрокам спокойно общаться по русски по средства пвпгн так же и в диабло.
Естесно у меня всё не идеально, хотелось бы чтобы всё было как можно идеально и проще, ошибки есть а так же у меня платформа винда поэтому использую некоторые виндовые штучки.
Пишите, с кем и что дальше бы продвинулись по этому вопросу, желательно всё отточить через месенджеры а потом уже давать ОРЛАМ всю эту работу, тут практически одни мои конкуренты которые ежедневно вымаливают помочь им или поделиться моим кодом, а потом кричат что они круче других.

+1 Serc

5

Re: [Solved] Русификация PvPGN

Ниже функции для работы с утф от кисса

win2utf8, utf8towin - перевод в utf8 и обратно, для вара3
win2utf8_2, utf8towin_2 - для старкрафта


char* win2utf8(char * pStr)
{
    LPWSTR pTemp[512];
    MultiByteToWideChar(CP_ACP,0,pStr,-1,(LPWSTR)pTemp,512);
    WideCharToMultiByte(CP_UTF8,0,(LPWSTR)pTemp,-1,pStr,512,0,0);
    return pStr;
}

char* utf8towin(char * pStr)
{
    LPWSTR pTemp[512];
    MultiByteToWideChar(CP_UTF8,0,pStr,-1,(LPWSTR)pTemp,512);
    WideCharToMultiByte(CP_ACP,0,(LPWSTR)pTemp,-1,pStr,512,0,0);
    return pStr;
}

char* utf8towin_2(char * pStr)
{
    int i = 0, j = 0;
    unsigned char c, c1, c2;

    while (pStr[i] != 0)
    {
        c = pStr[i];

        if (c < 128)
        {
            pStr[j] = pStr[i];
            i++;
            j++;
        }
        else if ((c > 191) && (c < 224))
        {
            c1 = pStr[i+1];
            pStr[j] = ((c & 31) << 6) | (c1 & 63);
            i += 2;
            j++;
        }
        else
        {
            c1 = pStr[i+1];
            c2 = pStr[i+2];
            pStr[j] = ((c & 15) << 12) | ((c1 & 63) << 6) | (c2 & 63);
            i += 3;
            j++;
        }
    }

    pStr[j] = 0;
    return pStr;
}


char* win2utf8_2(char * pStr)
{
    int i = 0, j = 0;
    unsigned char c, temp[512];

    while (pStr[i] != 0)
    {
        c = pStr[i];

        if (c < 128)
        {
            temp[j] = c;
            j++;
        }
        else
        {
            temp[j] = (c >> 6) | 192;
            temp[j+1] = (c & 63) | 128;
            j += 2;
        }
        i++;
    }
    temp[j] = 0;
    memcpy(pStr, temp, j + 1);

    return pStr;
}

Примеры использования:

// было
snprintf(msgtemp, sizeof(msgtemp), "There's no account with username %.64s.", username);

// стало
snprintf(msgtemp, sizeof(msgtemp), "There's no account with username %.64s.", username);
win2utf8(msgtemp);
// было
message_send_text(c, message_type_info, c, "You need to supply a username.");

// стало
snprintf(msgtemp, sizeof(msgtemp), "You need to supply a username.");
win2utf8(msgtemp);
message_send_text(c, message_type_info, c, msgtemp);
Do not ask for support in PM.

6

Re: [Solved] Русификация PvPGN

HarpyWar wrote:

Ниже функции для работы с утф от кисса

wintoutf8, utf8towin - перевод в утф8 и обратно, для вара
wintoutf8_2, utf8towin_2 - для старкрафта

Я без этого сделал пвпгн по русский, знаю раньше не грамотна была, но теперь всё в норме. А в чом разница? "wintoutf8, utf8towin - перевод в утф8 и обратно, для вара". Эту процедуру можно сделать с текстовим редактором (на Винде).

7

Re: [Solved] Русификация PvPGN

Можно не конвертировать файлы в utf-8, а просто все сообщения прокатывать через эту функцию. Как кисс говорил:

kucc wrote:

если больше определенного количества другой кодировки в текстовике то любой редактор или тот же вижуал студио переделывает сам файл в кодировку ютф

То есть, со студией компилировать не получится. Во всяком случае у меня не получилось. Возможно, студию нужно как-то настраивать.

Помимо этого, русификация переводом файла в utf-8 подойдет только для вара3. Для остальных игр так не получится.

Do not ask for support in PM.

8 (edited by Zikoi5 19.09.2011 21:16)

Re: [Solved] Русификация PvPGN

HarpyWar wrote:

То есть, со студией компилировать не получится. Во всяком случае у меня не получилось. Возможно, студию нужно как-то настраивать.

В Висуал 2008 вот так: File->Advanced save options-> затем нужно выбрать ->Unicode (UTF-8 without signature) - Codepage 65001. и всё. Я пробовал. Резултат успешно!

9

Re: [Solved] Русификация PvPGN

kucc wrote:

где даже в логах пишется дата и время на русском

Вот это имхо не надо.

kucc wrote:

а так же у меня платформа винда поэтому использую некоторые виндовые штучки.

Тоже в принципе не очень желательно. Но можно сделать 2 варианта - для винды и луниксов и компилировать через #IFDEF.

Идеальный вариант - вынести все строчки в отдельный файл и там с ними колдовать.

10

Re: [Solved] Русификация PvPGN

HarpyWar wrote:

Можно не конвертировать файлы в utf-8, а просто все сообщения прокатывать через эту функцию. Как кисс говорил:

kucc wrote:

если больше определенного количества другой кодировки в текстовике то любой редактор или тот же вижуал студио переделывает сам файл в кодировку ютф

То есть, со студией компилировать не получится. Во всяком случае у меня не получилось. Возможно, студию нужно как-то настраивать.

Помимо этого, русификация переводом файла в utf-8 подойдет только для вара3. Для остальных игр так не получится.

Верно, студию можно перевести на ютф8, НО другие игры будут в ероглифах.
Так как связка war - stat - diablo - irc - должна работать нормально, плюс текстовые файлы, бота и сайт.
По мне было проще сделать собственную кодировку на лету чем менять только файл.

11

Re: [Solved] Русификация PvPGN

kucc wrote:

плюс текстовые файлы, бота и сайт.

?

Из кодировок мне на ум приходят 3: аскии, старкин utf8, utf8.

12

Re: [Solved] Русификация PvPGN

xpeh wrote:
kucc wrote:

плюс текстовые файлы, бота и сайт.

?

Из кодировок мне на ум приходят 3: аскии, старкин utf8, utf8.

имел возможность иметь гемор с кодировкой latina1_swedish !! это такой фейкспалм а не кодировка ппц

13

Re: [Solved] Русификация PvPGN

Я имел в виду для одной кодовой страницы, в данном случае - для кириллицы.

На war2.ru сервер переведен, может они поделятся.

8 minutes and 33 seconds after:

http://forums.harpywar.com/viewtopic.php?pid=3357#p3357

HarpyWar wrote:

Ниже функции для работы с утф от кисса

Для старкрафта: заменяешь CP_ACP на CP_1252, где CP_1252 = 1252. И не надо велосипеды городить.

14

Re: [Solved] Русификация PvPGN

xpeh wrote:

Я имел в виду для одной кодовой страницы, в данном случае - для кириллицы.

На war2.ru сервер переведен, может они поделятся.

8 minutes and 33 seconds after:

http://forums.harpywar.com/viewtopic.php?pid=3357#p3357

HarpyWar wrote:

Ниже функции для работы с утф от кисса

Для старкрафта: заменяешь CP_ACP на CP_1252, где CP_1252 = 1252. И не надо велосипеды городить.

Можно и так, вторая функция написана в ручную а первая использует встроенную функцию. Поэтому на любителя, к тому же на винде тока работать будет первая фукнция.
Чем поделятся? У меня с кодировкой уже давно пробем нету, везде всё нищтяк, и в консолях и в отображениях, и на сайте и в базе и тд и тп.

15

Re: [Solved] Русификация PvPGN

кто нить через теам виевер руссификацию зделайте

16

Re: [Solved] Русификация PvPGN

Переводом, например. kucc, а ты везде проверял и со всеми клиентами?

Jake_LonG, а ты уверен, что ты русский знаешь? smile

17

Re: [Solved] Русификация PvPGN

xpeh wrote:

Переводом, например. kucc, а ты везде проверял и со всеми клиентами?

Jake_LonG, а ты уверен, что ты русский знаешь? smile

lol  lol  lol

18

Re: [Solved] Русификация PvPGN

xpeh ну да а что ?

2 weeks, 5 days and 16 hours after:

ей

19 (edited by iltmpz 24.10.2014 17:49)

Re: [Solved] Русификация PvPGN

Странно, что нигде не смог найти ответа на такой вопрос, вроде бы точно по теме ветки:

В версии, лежащей на github, появился каталог i18n, также текстовые сообщения, разбросанные по исходникам, пропускаются через функцию localize.
Например, так: message_send_text(c, message_type_info, c, localize(c, "Your mail has been sent successfully."));

Подозреваю, что сделано это было для упрощения локализации.
Т.е, из своего небогатого прошлого опыта общения с i18n, рискну предположить, что где-то можно создать массив/текстовый список строк, с английской надписью и переводом на целевой язык.
Хотелось бы в 2 словах узнать, что и куда вписывать? Или на какой стадии разработки находится механизм локализации и чем могут помочь желающие?

Также хотел бы спросить о назначении консольной команды /language
Подозреваю, что мультиязычный motd - не единственное ее назначение, по крайней мере, по задумке автора.
Честно говоря, не отказался бы от интерфейса pvpgn на двух (а то и 5-6) языках.

20

Re: [Solved] Русификация PvPGN

Локализация была добавлена недавно, поэтому информации пока нигде нет.
Переведены могут быть все файлы, которые находятся в корне папки i18n. Достаточно сделать перевод и положить файлы с теми же именами в папку с кодом языка.

Помочь можно, и даже нужно! Сейчас перевод выполнен только для испанского и немецкого(висит в pull request). Нужен как минимум русский.
Все переводимые строки из функций localize() лежат в common.xml. Руководство по переводу https://github.com/HarpyWar/pvpgn/wiki/ … n-Tutorial

/language меняет язык пользователя. То есть локализованный текст будет браться из той папки i18n, который пользователь указал явно. По-умолчанию язык устанавливается по языку игрового клиента.

Do not ask for support in PM.

Posts: 20

Pages 1

You must login or register to post a reply

Who now at forum

Currently view post: 1 guest, 0 registered users

forums.pvpgn.pro → [RU] Research & Development → [Solved] Русификация PvPGN



Generated in 0.124 seconds (89% PHP - 11% DB) with 21 queries