Drupal 6: как сделать значения CCK по умолчанию переводимыми? - PullRequest
0 голосов
/ 26 января 2011

На моем мультиязычном веб-сайте Drupal 6 мне нужно сделать так, чтобы значения по умолчанию для моего поля CCK переводились, т.е.

  • Hello - в английском варианте
  • Bonjour - во французском

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

Знаете ли вы, как использовать разные значения по умолчанию на разных языках?

Ответы [ 2 ]

1 голос
/ 27 января 2011

Когда вы определяете поле CCK, вы можете ввести фрагмент кода PHP, чтобы переопределить значение по умолчанию для поля .

Введите там следующее:

return array(0 => array('value' => t('Hello')));

Теперь получает доступ к странице добавления узла с этим полем CCK из неанглийской версии , так что она добавляется в переводимые строки.

Теперь вы можете перевести его с помощью меню «Интерфейс перевода» (хотя сначала может понадобиться перейти на страницу «создания» вашего типа cck). На самом деле он не требует никаких дополнительных модулей, просто базовый D6 (и, вероятно, он работает и в D5 и D7).

1 голос
/ 26 января 2011

Этот метод немного взломан.Я не уверен, что разверну это, не задумываясь о последствиях.Для простого сценария МОЖЕТ быть все в порядке.

Создайте пользовательский модуль, скажем, def_translate.Чтобы определить def_translate.module, добавьте функцию

function def_translate_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  if($node->type == "sometype" 
        && $op == "load" 
        && $node->field_some_cck_field_type[0]['value'] == "your default value") 
   {     
      $node->field_some_cck_field_type[0]['value'] = 
              t($node->field_some_cck_field_type[0]['value']); 
  }
}

Хорошо - что это делает?

Когда загружается узел, вызывается hook_nodeapi с $ op, установленным в «load».Это дает нам возможность манипулировать узлом до его рендеринга.Прежде чем что-то делать, мы проверяем

  1. Правильный ли это тип узла?
  2. Является ли наш op = "load"?
  3. Является ли значение значением по умолчанию?

Затем мы передаем существующее значение по умолчанию через функцию t ().Это сделает строку по умолчанию доступной для таблицы перевода i18n, и тогда вы сможете использовать обычный способ перевода строк.

* ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ * Я не проверял этоя в производстве.Я не совсем уверен, какие будут последствия.Возможно, вы захотите обдумать это до реализации, и, возможно, вы захотите добавить некоторые функции, чтобы найти значения по умолчанию из БД, если они изменены в пользовательском интерфейсе CCK.

Надеюсь, это поможет - или, возможно,подсказывает решение вашей проблемы!

...