Тексты в одном месте.
#1

По просьбе трудящихся описываю свой метод хранения текстов на сервере.

"Все гениальное просто." © Геббельс

Предыстория.
Была поставлена задача:
  • создать простую систему текстов
  • которая бы не являлась набором функций
  • была наглядно понятна
  • имела возможность легкого перевода на любой язык
  • легко определялся смысл текста внутри кода
  • высокая скорость работы
Идеи...
Была куча идей по реализации, но практически во всех идеях возникали свои недостатки. Основной проблемой была скорость, следующей по значимости была проблема переводов, и наконец немаловажная проблема наглядности и читаемости текстов, сюда же попадает и простота редактирования.

Реализация.
Долго думая и оценивая все системы, я пришел к одному мнения, точнее не я пришел, а пришли до меня, просто я понял что оно мне подходит. А именно, идею я почерпнул, как ни странно звучит, в Joomla. У неё была сделана гениальная и до ужаса простейшая система хранения всех шаблонных фраз.
Структура до боли простая, это массив строк, ключ это короткий текст на английском языке в верхнем регистре, значение искомый текст. Для мультиязычности добавлен ещё один уровень, ключи в котором банальные цифры.
Итак что же получилось в итоге:
pawn Код:
#define DEFAULT_LANGUAGE 0
#define LANGUAGE_RU 0
#define LANGUAGE_EN 1

enum languageDataEnum
{
    HELLO_WORLD[16],
    TEST[8],
}

new languageData[][languageDataEnum] = {
{
    "~g~Привет мир",
    "-Тест-"
},
{
    "~g~Hello world!",
    "-Test-"
}
};
Данный код у меня в отдельном инклуде, и я всегда его могу редактировать и расширять не думая о поиски текстов в коде.

Обращение к тестам до неприличного просто:
pawn Код:
GameTextForPlayer(playerid, languageData[DEFAULT_LANGUAGE][HELLO_WORLD], 4000, 1);
print(languageData[LANGUAGE_EN][TEST]);
Я думаю многие скажут что рано или поздно массив разрастется до чудовищных размеров и компилятор начнет ругаться. Согласен, но с другой стороны, чтение тестов из файла или мускула - медленно. Хардкодить тексты это гарантированно отказываться от переводов, если конечно не изобретать дублирующий код, и мучится последующим поиском и редактированием. А если учесть что работа с памятью, для серверной машины, не составляет никакого труда, то я решил пренебречь размером занимаемой памяти.

PS если вам не нужны переводы удалите первый уровень массива.
Reply


Messages In This Thread
Тексты в одном месте. - by Stepashka - 28.03.2012, 17:46
Re: Тексты в одном месте. - by EvgeN 1137 - 28.03.2012, 21:02
Re: Тексты в одном месте. - by jhonyxakep - 29.03.2012, 00:30
Re: Тексты в одном месте. - by OKStyle - 29.03.2012, 01:46
Re: Тексты в одном месте. - by Stepashka - 29.03.2012, 05:53
Re: Тексты в одном месте. - by EvgeN 1137 - 29.03.2012, 05:59
Re: Тексты в одном месте. - by OKStyle - 29.03.2012, 08:31
Re: Тексты в одном месте. - by Stepashka - 29.03.2012, 08:48
Re: Тексты в одном месте. - by eakwarp - 29.03.2012, 11:14
Re: Тексты в одном месте. - by jhonyxakep - 29.03.2012, 12:05
Re: Тексты в одном месте. - by Stepashka - 29.03.2012, 12:10
Re: Тексты в одном месте. - by jhonyxakep - 29.03.2012, 12:25
Re: Тексты в одном месте. - by Stepashka - 29.03.2012, 12:32
Re: Тексты в одном месте. - by jhonyxakep - 29.03.2012, 12:36
Re: Тексты в одном месте. - by Mutha_X - 29.03.2012, 12:46
Re: Тексты в одном месте. - by Stepashka - 29.03.2012, 12:55
Re: Тексты в одном месте. - by jhonyxakep - 29.03.2012, 12:59
Re: Тексты в одном месте. - by Stepashka - 29.03.2012, 13:03
Re: Тексты в одном месте. - by Mutha_X - 29.03.2012, 13:08
Re: Тексты в одном месте. - by OKStyle - 29.03.2012, 13:10
Re: Тексты в одном месте. - by jhonyxakep - 29.03.2012, 13:11
Re: Тексты в одном месте. - by Stepashka - 29.03.2012, 13:23
Re: Тексты в одном месте. - by ZiGGi - 29.03.2012, 13:42
Re: Тексты в одном месте. - by Stepashka - 29.03.2012, 13:50
Тексты в одном месте. - by -Stranger- - 29.03.2012, 13:54
Re: Тексты в одном месте. - by Stepashka - 29.03.2012, 14:04
Re: Тексты в одном месте. - by -Stranger- - 29.03.2012, 14:08
Re: Тексты в одном месте. - by OKStyle - 29.03.2012, 14:20
Re: Тексты в одном месте. - by Sergey_Walter - 30.03.2012, 23:43
Re: Тексты в одном месте. - by OKStyle - 31.03.2012, 02:10
Re: Тексты в одном месте. - by jhonyxakep - 31.03.2012, 05:26
Re: Тексты в одном месте. - by Stepashka - 31.03.2012, 05:27

Forum Jump:


Users browsing this thread: 1 Guest(s)