Опубликовано автор в категориях CMS, Joomla.

Не так давно я радовался в Twitter по поводу того, что Joomla! 1.7 предлагает очень хороший и удобный функционал в ядре для создания многоязычных сайтов. На сегодняшний, если вы используете Joomla! 1.7 в месте с расширениями под эту версию, которые созданы с учетом стандартных возможностей системы для создания многоязычных сайтов, то вам не придется больше использовать для переводов сторонние компоненты типа JoomFish. Все можно сделать с помощью имеющегося функционала. Все это так и все это действительно прекрасно работает. Но есть одно «НО»!

Проблема заключается в том, что, видимо, разработчики Joomla! 1.7 забыли заложить в функционал создания многоязычных сайтов возможность добавлять отдельное название сайта для каждого языка. Сначала я думал, что это я чего-то недосмотрел и долго искал такую возможность в админке, однако, ничего не нашел и обратился к форума Joomla! на котором и нашел ответ на нужный мне вопрос вот в этом топике «Localizing $sitename?». Собственно там сами разработчики джумла, отвечая на вопрос пользователя признают, что они не предусмотрели этот момент, и что это возможно будет следующим улучшением в предыдущих версиях.

Но, естественно, мне было нужно здесь и сейчас. И возможно, с выходом более поздних версий Joomla! эта проблема будет решена, а пока, с благодарностью автору топика, на который я сослался выше, ниже описывается решение, которое позволяет на уровне шаблона определить разное имя сайта для разных языков.
Итак нам нужно: (UP: все делается в index.php вашего текущего шаблона Joomla!)

1. Если вы этого не сделали ранее то обратится к методу $app = JFactory::getApplication();, чтобы можно было свободно использовать имя сайта.
2. Далее, необходимо добавить к заголовку переменную названия сайта которую мы переопределим в шаблоне в зависимости от разных (нужных нам, в моем случае это русский и украинский языков:)

if ($this->language == "ru-ru") $this->sitename = " - Имя сайта на русском";
elseif ($this->language == "uk-ua") $this->sitename = " - Назва сайту українською";
else $this->sitename = "";

3. Ну и теперь назначить нужный нам title путем переопределения переменной в шаблоне:

$this->title = $this->title.$this->sitename;

Итоговый код должен выглядеть примерно так:

//Внедрение специального имени сайта для разных языков
if ($this->language == "ru-ru") {
	$this->sitename = " - Имя сайта на русском";
}
elseif ($this->language == "uk-ua") {
	$this->sitename = " - Назва сайту українською";
}
else {
	$this->sitename = "";
}
 
$this->title = $this->title.$this->sitename;

Собственно сам title у нас будет состоять из переменной стандартного системного объекта $this->title и добавленной к нему измененной нами в зависимости от языка переменной имени сайта.

Важно! Не забудьте проверить в основных настройках сайта, что у вас отключено добавление имени сайта к title, поскольку в случае его включения в сам объект $this->title будет добавлено базовое имя сайт и строка заголовка страницы будет выглядеть примерно так «Название материала — Имя сайта — Имя сайта». То есть перед названием материала система выведет базовое имя сайта в независимости от языка.

На этом все. Остается только добавить, что это решение нужно в Joomla! 1.6.x и Joomla! 1.7.0, а как будет в следующих версиях посмотрим.

UP: Данный механизм уже реализован в Joomla! 1.7.3

5 комментариев к записи “Имя сайта для разных языков в Joomla! 1.7.0 — 1.7.2”

    • Hiway

      ХХХХХ — Спасибо за вопрос. Действительно, когда писал, то забыл указать что это вставляется в index.php вашего шаблона.

      Ответить
  1. Andrei

    И всётаки Джумфиш для мультиязычности мне более нравиться , со стороны функционала.
    1. В этом варианте сделал структуру меню и просто делай переводы в компоненте , непотерять ничего

    2. А вот в 1.7 родными средствами надо копировать дерево структуры и всегда следить незабыл ли ты это дерево 100% повторить.

    Ответить
    • Hiway

      Andrei Тут такое дело, что при Joomfish у вас по сути один сайт. У всех элементов один ID, а на нативном механизме в 1.7 — у вас фактически два и более разных сайтов. Да немного проблемно конфигурировать такие ресурсы. Но сделав несколько мельтиязычных сайтов на Jooma! 1.7 я уже привык и очень доволен.
      Кстати. В Jooma! 1.7.3 исправили баг с названием сайта и теперь этот материал уже не актуален.

      Ответить

Оставить комментарий

  • (не будет показан)