PDA

Просмотр полной версии : [Вопрос] Поддержка двух языков на сервере.



paik
27.06.2016, 21:13
Приветик, есть мод ДМ на русском языке, я вот задумался, было бы не плохо сделать поддержку английского языка, чтобы удобнее было иностранцам. Как это лучше реализовать в моде? а то дублировать строчки на проверки if(rus) не хотелось бы так :)

upd.
p.s. в cs 1.6 на amx было удобно с подключением LANG файлов. в моде пишешь типо L_HELLO а в LANG файле:
[RU]
L_HELLO = привет
[EN]
L_HELLO = hi

Спасибо.

kushichka
27.06.2016, 22:21
Думаю и здесь можно попробовать сделать через языковые файлы, хотя бы при помощи PVar'ов.. Нужно подумать как это лучше реализовать.

Redsan
27.06.2016, 22:57
Ну например вот так:

// 2 - количество языков, 1 - количество строк текста, 144 - максимальная длина текста(лимит sa-mp)
new LangugeText[2][1][144] = {
{
{"English text"}
},
{
{"Русский текст"}
}
};

public OnPlayerConnect(playerid)
{
SetPVarInt(playerid, "Language", 1); // 0 - английский язык, 1 - русский язык
}

CMD:englishtext(playerid, params[])
{
SendClientMessage(playerid, -1, LangugeText[GetPVarInt(playerid, "Language")][0]);
return 1;
}

CMD:russiantext(playerid, params[])
{
SendClientMessage(playerid, -1, LangugeText[GetPVarInt(playerid, "Language")][0]);
return 1;
}

p.s. по моему видел эту реализацию на официальном форуме sa-mp.com

paik
27.06.2016, 23:59
Ну например вот так:

// 2 - количество языков, 1 - количество строк текста, 144 - максимальная длина текста(лимит sa-mp)
new LangugeText[2][1][144] = {
{
{"English text"}
},
{
{"Русский текст"}
}
};

public OnPlayerConnect(playerid)
{
SetPVarInt(playerid, "Language", 1); // 0 - английский язык, 1 - русский язык
}

CMD:englishtext(playerid, params[])
{
SendClientMessage(playerid, -1, LangugeText[GetPVarInt(playerid, "Language")][0]);
return 1;
}

CMD:russiantext(playerid, params[])
{
SendClientMessage(playerid, -1, LangugeText[GetPVarInt(playerid, "Language")][0]);
return 1;
}

p.s. по моему видел эту реализацию на официальном форуме sa-mp.com

Спасибо. Но хотелось бы пихнуть всё в файл, как я делал в cs. Попробую сам поковырять, если не получится, тогда через твой способ.

TheMallard
28.06.2016, 09:10
https://github.com/Open-GTO/zlang

Это как-раз система языков с файлами.

paik
28.06.2016, 14:14
Спасибо :)

ziggi
28.06.2016, 15:36
https://github.com/Open-GTO/zlang

Это как-раз система языков с файлами.

У автора другие цели, он хочет предоставлять мультиязычность для каждого игрока по-отдельности, что эта система не позволяет сделать. Также она использует SVar, а их может быть очень ограниченное количество, поэтому её нужно переписать на GVar. Для SA-MP ничего адекватного в плане мультиязычности нет, в идеале нужно реализовать плагин, предоставляющий интерфейс для работы с GNU gettext, может тогда ситуация с этим улучшится.

paik
28.06.2016, 17:10
ех жаль =\