Данные, которые вы вводите в $_SESSION
, относятся к каждому пользователю - это означает, что если вы поместите одни и те же данные в $_SESSION
для 10 пользователей, то эти данные будут дублироваться 10 раз.
Я бы не стал помещать локализованную строку вашего приложения в $_SESSION
, personnaly: это нечто «постоянное», то же самое для каждого пользователя - так что оно не имеет своего места в пространстве, специфичном для каждого пользователь.
Использование констант PHP может быть идеей; например:
ru.php :
define('LANG_TITLE', 'The title of the site');
define('LANG_WElCOME', 'Welcome on my site');
И fr.php :
define('LANG_TITLE', 'Le titre du site');
define('LANG_WELCOME', 'Bienvenue sur mon site');
Использование массива PHP было бы другим; например, у вас будет en.php :
$lang = array(
'title' => "The title of the site",
'welcome' => "Welcome on my site",
);
и fr.php :
$lang = array(
'title' => "Le titre du site",
'welcome' => "Bienvenue sur mon site",
);
Какой из них выбрать? Я полагаю, что это в основном дело вкуса, и между этими двумя идеями не должно быть большой разницы.
Или другой идеей было бы использовать что-то вроде gettext ( см. Также ), который является стандартным способом выполнения переводов, и (конечно) можно использовать из PHP .
Если бы мне пришлось выбирать, я мог бы пойти на решение, основанное на gettext, поскольку оно довольно стандартное - или я бы использовал классы Zend_Translate
из Zend Framework, по крайней мере, для ZF основанный на проекте (кстати, среди них есть один адаптер, использующий gettext ;-))