Drupal 6:如何使CCK默认值可翻译?

时间:2011-01-26 08:50:13

标签: drupal drupal-6 internationalization

在我的多语言Drupal 6网站中,我需要使我的CCK字段默认值可翻译,即

  • Hello - 英文版
  • Bonjour - 法语版

我在翻译表中找不到这个文本,变量表中的这些值也没有,所以我可以使用多语言变量。

您知道如何在不同语言中使用不同的默认值吗?

2 个答案:

答案 0 :(得分:1)

这种方法有点乱。我不确定如果不考虑后果我会部署它。对于一个简单的用例,它可能没问题。

创建一个自定义模块,让我们说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. 我们的操作是“加载”吗?
  3. 该值是否为默认值?
  4. 我们接下来要做的是通过t()函数传递现有的默认值。这将使默认字符串可用于i18n转换表,然后您可以使用正常的方式转换字符串。

    *的 声明 * 我自己没有在生产中测试过这个。我不完全确定会有什么影响。您可能希望在实现之前考虑这一点,并且您可能希望在CCK UI中更改某些功能以查找数据库中的默认值。

    希望这会有所帮助 - 或者可能会为您的问题提供一些解决方案!

答案 1 :(得分:1)

定义CCK字段时,您可以输入PHP代码段以覆盖字段的默认值

在那里输入以下内容:

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

现在使用非英文版中的此CCK字段访问节点添加页面,以便将其添加到可翻译字符串中。

现在您可以使用“翻译界面”菜单翻译它(可能首先访问您的cck类型的“创建”页面)。它实际上不需要任何额外的模块,只需要基本的D6(它也可能适用于D5和D7)。