Мультиязычность заголовков во views

Главные вкладки

Аватар пользователя ajevgen ajevgen 12 марта 2012 в 0:03

Добрый вечер!

Есть туристический сайт на 3-х языках (EN - основной). Основным типом материалов являются туры, типы туров - термины словаря, каждый из которых переведен на 3 языка. Туры вывожу на 2-x страницах, созданных через views. На первой все, а на другой в зависимости от типа тура. Проблема заключается в том, что заголовки страниц созданных через views при смене языка не меняются. На первой странице можно перевести через поиск на странице переводов, а для второй так уже не получится, так как там заголовок создается через контекстный фильтр, путем переопределения основного через аргумент %1, в зависимости от выбранного термина. Это возможно как-нибудь реализовать, потому что переводить все заголовки через поиск не есть хорошо, терминов могут быть десятки???

P.S. пробовал ставить i18nviews, но он не помог...

Спасибо!

ВложениеРазмер
Иконка изображения issue_titles.jpg112.35 КБ

Комментарии

Аватар пользователя ajevgen ajevgen 12 марта 2012 в 13:07

у меня термины тоже локализованы. А вот заголовки страниц views остаются неизменными, т.е. на английском языке.

Аватар пользователя dlnsk dlnsk 20 августа 2012 в 10:42

Я ставил i18nviews и он помог решить эту проблему, но сильно испортил мне в других местах: там где во вьюсах мне приходилось переводить строки через стандартный перевод интерфейса переводиться перестало. Так что быстренько его удалил.
Немного покумекав я набросал простенький сниппет для перевода заголовков терминов таксономии:

<?php
if ($term taxonomy_term_load($argument)) {
  if (
function_exists('i18n_taxonomy_term_name')) {
    global 
$language;
    
$handler->validated_title i18n_taxonomy_term_name($term$language->language);
  }
  return 
true;
}
return 
false;
?>

Использовать так:
1. Во вьюхе открываем настройки контекстного фильтра "Содержимое: Has taxonomy term ID".
2. Отмечаем "Заменить заголовок" и в поле пишем %1
3. Отмечаем "Specify validation criteria" и выбираем "PHP-Код".
4. В поле "PHP-код для проверки" вставляем приведенный выше сниппет (без открывающего и закрывающего тегов php).
5. Все готово.

Аватар пользователя divined divined 20 августа 2012 в 12:28

Лучше всего сделать хук на препроцесс страницы.

Проверить является заголовок термином таксономии и перевести используя tt(), если не является перевести испольуя t().

Я уже описывал это тут.

Аватар пользователя MaximumofmaX MaximumofmaX 20 августа 2012 в 12:09

я делал перевод заголовков через модуль views PHP

с его помощью реализовывал простой снипет который делает проверку на язык и в зависимости от этого возвращает нужную строку