在我的多语言Drupal 6网站中,我需要使我的CCK字段默认值可翻译,即
Hello
- 英文版Bonjour
- 法语版我在翻译表中找不到这个文本,变量表中的这些值也没有,所以我可以使用多语言变量。
您知道如何在不同语言中使用不同的默认值吗?
答案 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”。这使我们有机会在呈现节点之前对其进行操作。在我们做任何事情之前,我们检查
我们接下来要做的是通过t()函数传递现有的默认值。这将使默认字符串可用于i18n转换表,然后您可以使用正常的方式转换字符串。
*的 声明 * 强> 我自己没有在生产中测试过这个。我不完全确定会有什么影响。您可能希望在实现之前考虑这一点,并且您可能希望在CCK UI中更改某些功能以查找数据库中的默认值。
希望这会有所帮助 - 或者可能会为您的问题提供一些解决方案!
答案 1 :(得分:1)
定义CCK字段时,您可以输入PHP代码段以覆盖字段的默认值。
在那里输入以下内容:
return array(0 => array('value' => t('Hello')));
现在使用非英文版中的此CCK字段访问节点添加页面,以便将其添加到可翻译字符串中。
现在您可以使用“翻译界面”菜单翻译它(可能首先访问您的cck类型的“创建”页面)。它实际上不需要任何额外的模块,只需要基本的D6(它也可能适用于D5和D7)。