Этот метод немного взломан.Я не уверен, что разверну это, не задумываясь о последствиях.Для простого сценария МОЖЕТ быть все в порядке.
Создайте пользовательский модуль, скажем, 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».Это дает нам возможность манипулировать узлом до его рендеринга.Прежде чем что-то делать, мы проверяем
- Правильный ли это тип узла?
- Является ли наш op = "load"?
- Является ли значение значением по умолчанию?
Затем мы передаем существующее значение по умолчанию через функцию t ().Это сделает строку по умолчанию доступной для таблицы перевода i18n, и тогда вы сможете использовать обычный способ перевода строк.
* ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ * Я не проверял этоя в производстве.Я не совсем уверен, какие будут последствия.Возможно, вы захотите обдумать это до реализации, и, возможно, вы захотите добавить некоторые функции, чтобы найти значения по умолчанию из БД, если они изменены в пользовательском интерфейсе CCK.
Надеюсь, это поможет - или, возможно,подсказывает решение вашей проблемы!