Localize terms словари, даже в 1.x-dev версии не работает.

Прислано: orangeudav

пн, 15/03/2010 - 00:50

Сижу, разбираюсь тут, почему же все таки локализация для словарей не работает. Вернее работает но не так, как предполагалось.

Когда для словаря выбран тип Localize term в колонку language таблицы {term_data} ничего не пишется, drupal не знает на каком языке вы пишите термины. Поэтому дальше начинается уличная магия.
Допустим, самый простой случай - отображение taxonomy/term/x

В функции i18ntaxonomy_term_page проверяется тип словаря:

<?php
if (i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) {
        
$names[] = i18nstrings("taxonomy:term:$term->tid:name"$term->name);
      }
      else {
        
$names[] = $term->name;
      }
?>

Смотрим i18nstrings :

<?php
function i18nstrings($name$string$langcode NULL) {
  global 
$language;
  
$langcode $langcode $langcode $language->language;
  
  
// If language is default, just return
  
if (language_default('language') == $langcode) {
    return 
$string;
  }
  else {
    return 
i18nstrings_translate_string($name$string$langcode);
  }
}
?>

то есть зачем-то текущий язык сравнивают с языком по умолчанию, наверное предполагают что термины были забиты на языке по умолчанию. В итоге, если я ставлю для сайта язык по умолчанию ru (а я должен иметь возможность поменять его в любой момент) и текущий язык у меня ru то перевод термина не происходит.

НО! вроде бы принято, что в t() подсовываются всегда английские строки (так что все термины у меня забиты по-английски), а дальше уже они переводятся во что угодно? А i18n пытается сломать эту традицию?

И ведь этот i18nstrings вызывается многих мест, так что трогать его нельзя :( Наверное для таксономии придется делать альтернативную функцию.

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

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано RoSk0 в чт, 17/06/2010 - 20:32.

чем то разрешилось?
бьюсь с таксономией, вьюзами и вторым языком...


Опубликовано orangeudav в чт, 17/06/2010 - 20:55.

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


Опубликовано Puzzle в чт, 03/03/2011 - 12:03.

Включил английский по умолчанию, переключился на английский интерфейс, создал новый словарь с опцией "Localize terms. Terms are common for all languages, but their name and description may be localized." Забил в него несколько терминов латиницей, перевел текстовые группы term:tid:name и vocabulary:vid:name сделал апдейт и рефреш через /en/admin/build/translate/refresh

Далее иду на страницу создания материала, привязанного к данному словарю, и переключение интерфейса никак не влияет на название словаря и содержимое выпадающего списка...

Что я делаю не так?


Опубликовано Puzzle в чт, 03/03/2011 - 12:26.

Правды ради стоит сказать, что на странице созданной ноды, также как и на странице термина по разным адресам ru/taxonomy/term/277 и en/taxonomy/term/277 термин переводится.


Опубликовано Puzzle в чт, 03/03/2011 - 20:25.

Получилось!
Заменил простую привязку к словарю на Content Taxonomy Field CCK. Возможно и простой виджет будет работать, но я использовал Hierarhical Select.


Опубликовано w_andreu_w в вт, 26/04/2011 - 19:12.

И что же выводиться при переключении языка на термине таксономии ?
:)


Новое на сайте