Я выполнил это, используя плагин jLanguage, найденный по адресу http://www.treutech.com/files/wordpress/jLanguage.zip. * Плагин больше не доступен с сайта автора, поэтому я размещаю свою обновленную версию. Это позволяет форматировать сообщения и страницы блога с использованием синтаксиса [english][/english]
. Он передает строку запроса в код, чтобы узнать, какой язык использовать. Я начал с изменения кода, чтобы он использовал стандартные двухбуквенные языковые коды. Я также покончил с флагами, которые код использовал для представления различных языков. Тем не менее, после всего этого плагин все еще только переводит страницы или сообщения. Я хотел, чтобы остальная часть сайта была переведена по выбору пользователя.
WordPress допускает интернационализацию; однако, как только вы выберете язык, вы застряли на нем, пока не измените его вручную. Поэтому я создал wp-lang.php. Сначала он смотрит на какой язык пользователь выбрал из доступных языковых ссылок, затем сохраняет его в переменной SESSION, чтобы это состояние было постоянным. Наконец, если выбор не сделан и переменная SESSION отсутствует, код будет искать языки по умолчанию для браузера.
Теперь все эти изменения зависят от того, скачали ли вы языковой пакет, который соответствует выбору языков на сайте. Файл языка MO содержит переводы всех имен функций в WordPress. Поэтому, если пользователь войдет в панель администратора, все будет переведено. Если ваша тема закодирована правильно, то заголовки вашего меню и метаинформация также будут переведены. После всего этого я изменил файл wp-config, включив в него wp-lang. Теперь сайт, на котором это настроено, будет переключаться между испанским и английским.
* сор-lang.php
session_start();
if ( isset( $_GET['lang'] ) ) {
$_SESSION['WPLANG'] = $_GET['lang'];
define ('WPLANG', $_SESSION[WPLANG]);
} else {
if(isset($_SESSION['WPLANG'])) {
define ('WPLANG', $_SESSION['WPLANG']);
$_GET['lang'] = $_SESSION['WPLANG'];
} else {
if ( isset( $_SERVER["HTTP_ACCEPT_LANGUAGE"] ) ) {
$languages = strtolower( $_SERVER["HTTP_ACCEPT_LANGUAGE"] );
$languages = explode( ",", $languages );
$_SESSION['WPLANG'] = $languages[0];
$_SESSION['WPLANG'] = str_replace("-", "_", $_SESSION['WPLANG']);
$_GET['lang'] = substr($_SESSION['WPLANG'],0,2);
define ('WPLANG', $_SESSION[WPLANG]);
} else {
define ('WPLANG', '');
}
}
}
* wp-config.php - Найти раздел, в котором определена постоянная WPLANG. Добавьте следующую строку непосредственно перед объявлением WPLANG.
require_once(dirname(__FILE__).'/wp-lang.php');
define ('WPLANG', '');
Эта страница сначала проверит язык браузера по умолчанию, а затем установит язык. Если нет, пользователь также может установить язык на основе того, который он выбирает из сообщений. Язык задается в переменной сеанса для хранения состояния в течение всего посещения.