Для этого используются свободные сторонние элементы управления, используя стандартный XML-файл ISO (я написал утилиту базы данных для создания, отредактировал & экспорт в этот формат).
Другие ответы очень практичны и требуют больше работы, чем использование этого элемента управления.
управления вам нужно будет найти по адресу: http://ezcomponents.org/docs/api/trunk/introduction_Translation.html
После Ez компоненты установлены на сервере, вам нужно получить контроль базы, необходимой для всех компонентов Ez
require_once "ezc/Base/base.php";
/**
* __autoload()
*
* @param mixed $className
* @return
*/
function __autoload($className)
{
ezcBase::autoload($className);
}
Тогда вы должны определить, где находится файл языка XML находится (см ISO639-2, ISO3166 и Qt Linguist)
$config["language_code"] = "en_us"; // as defined by ISO639-2 and ISO3166
// grab our translation XML file
$backend = new ezcTranslationTsBackend(dirname(__FILE__). '/translations');
$backend -> setOptions(array('format' => $config["language_code"].'.xml'));
// create a manager object
$manager = new ezcTranslationManager($backend);
$language = $manager->getContext($config["language_code"], 'strings');
н ой вы можете захватить строки, просто вызывая следующую функцию
getTranslation("SOME_KEY");
и извлекать фразы, которые имеют параметры используйте следующий синтаксис, обратите внимание на соотношение между [ПАРОЛЬ] и «ключевое слово» является преднамеренным и рекомендуется
getTranslation("FIND_[KEYWORD]_BY_[TYPE]", array("keyword" => $keyword, "type" => $type));
пример файла XML TS есть (должен быть назван en_US.xml)
<!DOCTYPE TS>
<TS>
<context>
<name>strings</name>
<message>
<source>ZONE_TYPE</source>
<translation>Zone Type</translation>
</message>
<message>
<source>ZONE_TOOL</source>
<translation>Zone Tool</translation>
</message>
<message>
<source>HELLO_[NAME]_WELCOME_TO</source>
<translation>Hello, %name, welcome to Webfood Admin</translation>
</message>
<message>
<source>YOUR_ADMINISTRATIVE_SESSION_HAS</source>
<translation>Your administrative session has timed out. Please login again.</translation>
</message>
</context>
</TS>
Я бы просто настройки, в ваших PHP сессий, который хранит участ используйте, возможно, спросите пользователя до или после того, как они войдут в систему на каком языке они хотят, и сохраните его в своей таблице пользователей, если у вас есть учетные записи. Нет причин постоянно пересылать значение URL-адреса, это плохая идея.
Я рекомендую этот метод также. – jerebear