代码之家  ›  专栏  ›  技术社区  ›  JoseMarmolejos

如果Drupal中没有类似的东西,那么应该添加:转换对象属性

  •  0
  • JoseMarmolejos  · 技术社区  · 14 年前

    深入api寻找方法来转换类别术语的属性,我只能找到以字符串作为参数的方法,但是当我有了要转换哪个属性的对象id时会发生什么?我希望能够传递这个id并获得翻译的字符串(如果存在的话)。我通过一个相对简单的查询实现了这一点:

       function translate_term_description($tid) {
        $result = db_query('SELECT term_data.tid, term_data.description, locales_target.translation 
                            FROM {term_data} 
                            left join ({i18n_strings}, {locales_target}) 
                            on (term_data.tid = i18n_strings.objectid and i18n_strings.lid = locales_target.lid) 
                            where term_data.tid = %d', $tid);
    
        $term_data = db_fetch_object($result);
    
        // If a translated string is available return that, otherwise return back the untranslated description
        return !is_null($term_data->translation) ? $term_data->translation : $term_data->description;
    }
    

    我只需要描述,我只是在假设目标语言是非默认语言的上下文中使用这个函数。尽管如此,它仍然可以扩展为将目标语言和术语属性都作为参数。

    你觉得呢?Drupal上应该有这样的东西吗,还是已经有了(如果有,请告诉我在哪里)?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Pierre Buyle    14 年前
        2
  •  1
  •   googletorp    14 年前

    tt() ,如果已安装i18n。这不是Drupal核心的一部分,而是一个contrib模块。

    函数已成为 i18nstrings() ,这就是现在使用的。输入格式是一个字符串,但您可以使用函数允许的特殊符号按id查找:

    $term_name = tt('taxonomy:term:'. $term->tid .':name', $term->name);