首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drupal 6:如何使CCK默认值可翻译?

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

Stack Overflow用户
提问于 2011-01-26 08:50:13
回答 2查看 1K关注 0票数 0

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

  • Hello -在英语version
  • Bonjour中-在法语one

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

你知道如何在不同的语言中有不同的默认值吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-27 09:36:08

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

在那里输入以下内容:

代码语言:javascript
复制
return array(0 => array('value' => t('Hello')));

现在,从一个非英语版本的中访问具有此CCK字段的节点添加页,以便将其添加到可翻译的字符串中。

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

票数 1
EN

Stack Overflow用户

发布于 2011-01-26 18:35:06

这种方法有点麻烦。我不确定我是否会在没有真正考虑后果的情况下进行部署。对于一个简单的用法来说,这可能是可以的。

创建一个自定义模块,比如def_translate。到def_translate.module,添加一个函数

代码语言:javascript
复制
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翻译表可以使用默认字符串,然后可以使用正常的字符串转换方式。

*DISCLAIMER* --我自己还没有在生产中测试过。我不完全确定效果会是什么。在实现之前,您可能需要仔细考虑这一点,并且您可能希望在CCK UI中添加一些特性来查找DB中的默认值,以防它们被更改。

希望这能帮上忙--或者可能动摇一下你的问题的解决方案!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4802672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档