Многоязычный сайт на WP

Это наша 3 статья о том, как быстро настроить поддержку дополнительных языков на сайте.
Мы на собственном опыте тестировали несколько плагинов. Но остановились на «qTranslate-X«, это новая версия старого плагина, который к сожалению больше не поддерживается.

Настройка

Для быстроты работы сайта на сервере мы стараемся использовать в «теме шаблона» минимум сторонних плагинов и хуков.

1. Добавим «третий» язык

Сразу будем рассматривать нашу задачу, с условием, что сайт будет работать на 3 языках, причем основной должен быть русский (напомним, что он так и стоит по умолчанию)

Выбираем из «List of Configured Languages» — Українська  и активируем нажатием «Включить»

Меняем Название (in native alphabet) «Українська»  на «Укр.»
Локаль по умолчанию идет «ua_UA» но мы в нашем примере используем «ua_UA»
06

Не забываем сохранять изменения. И сразу проверяем, должен появиться новый язык при создании новой записи или страницы

03

2. Вносим изменения в файл functions.php

В шапке есть ссылка на подробное описание для чего и как это делать. Наш виджет мы назвали «Home right sidebar»  с  id «home_right_1»

/**
 * Register our sidebars and widgetized areas.
 * для выводв виджета нескольких языков
 * подсказка регистрируем виджеты http://truemisha.ru/blog/wordpress/sidebars.html 
 */
function arphabet_widgets_init() {

	register_sidebar( array(
		'name'          => 'Home right sidebar',
		'id'            => 'home_right_1',
		'before_widget' => '<div>',
		'after_widget'  => '</div>',
		'before_title'  => '<h2 class="rounded">',
		'after_title'   => '</h2>',
	) );

}
add_action( 'widgets_init', 'arphabet_widgets_init' );

3. Вкладка виджеты

Еслы вы хотите вывести виджет списком, то для настроек мы выбираем «скрыть заголовок» и проказывать «только тескт»

04

4. Синтаксис выбора языка

В шаблоне сайта в том месте где надо показывать менять язык контента мы применяем такой код:

<?php
$currentlang = get_locale();
if ( $currentlang == 'en_US' ) : ?>
<h1>Company information</h1>
<?php elseif ( $currentlang == "ua_UA"):?>
<h1>Інформація про підприємство</h1>
<?php else : ?>
<h1>Информация о предприятии</h1>
<?php endif; ?>

обратим внимание, что если в настройках плагина в разделе «Режим URL-Модификации» нужно выбрать «Использование режима предварительно пути (по умолчанию, ставит /en/ перед URL). SEO дружелюбно.», для того, чтоб вывести правильный язык в меню (в данном случае мы не используем таксономию) в нужном месте добавить нужный признак языка.
В нашем случае для русского языка мы используем ссылки по умолчанию
для Английского добавим спереди /en/****
для Украинского надо добавить /ua/***
Пример написание URL для вывода новостей из нужной языковой категории

<?php
 $currentlang = get_locale();
 if ( $currentlang == 'en_US' ) : ?>
  <h2><a href="/en/category/news/">News</a></h2>
 <?php elseif ( $currentlang == "ua_UA"):?>
  <h2><a href="/ua/category/news/">Новини</a></h2>
 <?php else : ?>
  <h2><a href="/category/news/">Новости</a></h2>
<?php endif; ?>

5. Разметка

После нарезки сайта в чистый html у нас есть такой код

<div id="head-yaz">
 <a href="#" class="active">Укр</a><a href="#">Рус</a><a href="#">Eng</a>
</div>

Заменяем на код нашего виджета, должно выйти так:

<div id="head-yaz">
 <?php dynamic_sidebar( 'home_right_1' ); ?>
</div>

6. Добавим файл со стилями CSS

/* yaz  txt */
#head-yaz {
	float: right;
	z-index: 400;
	text-align: right;
	color: #cecece;
	font-size: 14px;
	font-family: 'Ubuntu Condensed', sans-serif;
	-webkit-box-sizing: border-box;  -moz-box-sizing: border-box; box-sizing: border-box; 
}
#head-yaz ul { 
	margin: 0;
	padding: 0;
}

#head-yaz li {
	float: left;
}

#head-yaz a {
	background: #fff;	
	display: block;
	line-height: 30px;	
	padding: 2px 10px;
	color: #08326d;
	text-decoration: none;
}
#head-yaz a:hover {
	background: #fd8d00;	
	line-height: 30px;	
	padding: 2px 10px;
	color: #08326d;
	text-decoration: underline;
}

#head-yaz .active a { 
	color: #d1d1d1;
}

Преимущества

Простая настройка. По Умолчанию реализовано 2 языка (Русский — дефогтный и английский).
Хороший добротный шаблонизатор для работы с контентом.

Недостатки

Глобальный и серьезных недостатков в функциональности мы не обнаружили.

Есть маленький «БАГ» не совсем корректный момент одновременной работы плагина с Суперкеш (WP Super Cache -Автор: Automattic) и  WPtouch Mobile Plugin (Автор: BraveNewCode Inc). Суть проблемы в том, что кеширование происходит автоматически при первом заходе на сайт. И если первый посетитель  — мобильный, то в «паблик» мог уйти мобильный кеш при просмотре десктопной версии сайта. Есть фиксы этого бага, возможно со временем их учтут в новой версии продукта.

так это выглядит со стороны

Бриф на разработку сайта

Бриф на сайт— это документ, позволяющий оценить время и стоимость будущего сайта