мультиязычность в своем CMS

jeno

Новичок
мультиязычность в своем CMS

добрый день :)

хочу сделать мультиязычность в своем CMS...
так вот...
как это лучше сделать:confused:

1.в отдельном файле хранить константы с фразами
2.в отдельном файле хранить масив с фразами
3.хранить в отдельной переменной каждую фразу

что будет лучше и быстрее? (хотелось бы использовать константы если честно, так как они помойму глобальные...т.е.в функциях их не надо обьявлять в global)

п.с.понимают что практически нет разницы что использовать...но посещаемость сайта оооочень приличная...нужно чтоб все было как можно сильнее оптимизировано..
 

T.I.M.

Новичок
Извечный вопрос... Подходов может быть очень много, всё зависит от структуры твоей CMS. 3 подход вообще не подходит, 1ый по-моему слишком не гибкий - получится огромное количество констант в которых можно запутаться и т.п.... Лучше организовать структуру так, чтобы небыло необходимости обращаться к языковым константам напрямую.
И, кстати, хранение локализаций в файлах тоже не всегда оправдано ;)
 

Bakti9rov

!*|=?
в шаблоне хранишь термины

дальше замена терминов значениями считанными из language-файло (обычно это хэш с парами термин - значение; можно хранить хоть в XML, хоть в YAML, хоть в ini, хоть в большом array() - на выбор)

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

ps 'g i18n' очень полезно ;)
 

jeno

Новичок
ну у меня темплейты в одном месте, а модули в другом...
+ темплейты у меня не rак сплошной текст..темплейт примерно так выглядит:

PHP:
...
function select_start()
{
	$HTML="";
	$HTML.=<<<EOF
<select>
EOF;
	return $HTML;
}

function select_row()
{
	$HTML="";
	$HTML.=<<<EOF
<option>---</option>
EOF;
	return $HTML;
}

function select_end()
{
	$HTML="";
	$HTML.=<<<EOF
</select>
EOF;
	return $HTML; 
}
...
(на самом деле все намного умнее и удобнее :) )

у каждого модуля, свой темплейт...

например модуль регистрации, в его темплейте есть как страничка регистрации, так и страничка восстановления пароля и т.д. ит.п. (все что связано с этим модулем)

наверное в темлпейте сверху будет создаваться массив:

PHP:
$lang=array(
	"english" => array(...),
	"russian" => array(...)
	...
);
и из этого массива уже буду вставлять фразы :)

так же нормально? (по быстродействию)

п.с.темплейты всеравно у меня генерируются скриптом... (долго объяснять, вообщем, сделано примерно так же как и в форумном движке invision power board...т.е.после того как чел отредактировал темлей, он как бы "кешируется", прописываются пути к картинкам, страницам и т.д. и т.п. это убирает множество переменных и функций которые не обязательно выполнять при каждой перезагрузке страницы :) )

-~{}~ 22.12.07 00:37:

+ у меня движок написан на ооп...так что в темплейте, в каждой функции не надо будет прописывать global :)
 

Фанат

oncle terrible
Команда форума
function select_row()
{
$HTML="";
$HTML.=<<<EOF
<option>---</option>
EOF;
return $HTML;
}
чумовой шаблонизатор
особенно порадовала конструкция
$HTML="";
$HTML.=<<<

наши начали нанимать на работу индусов
 
Сверху