首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为Drupal和Wordpress i18n函数( __()和t() )编写适配器是否与gettext/..pot生成不兼容?

为Drupal和Wordpress i18n函数( __()和t() )编写适配器是否与gettext/..pot生成不兼容?
EN

Stack Overflow用户
提问于 2012-10-03 09:39:46
回答 2查看 101关注 0票数 2

我正在编写wordpress插件并计划它的drupal实现,我正在将wordpress函数封装到适配器中。因此,我为__()编写了一个适配器,它非常简单

代码语言:javascript
运行
复制
class Ai1ec_Wordpress_Template_Adapter implements Ai1ec_Template_Adapter {

    ...

    public function translate( $text ) {
        return __( $text, AI1EC_PLUGIN_NAME );
    }

我不是gettext的大专家,一个大学给我写信说:

当xgettext解析代码以生成.pot文件时,将失败。WP i18n函数(如__() )要求将字符串文字作为第一个参数传递,而不是变量。对于Drupal的t()函数,IIRC也是如此。

我看过法典条目

Developers#Placeholders

http://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/t/7

却找不到与此相关的东西。soemone能解释我为什么这不能工作,我怎么能写一些可以与Wordpress和Drupal兼容的东西呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-04 12:13:54

一般来说,您的同事是正确的,如果您将变量传递给翻译函数,它们将不会被翻译,除非在其他地方传递相同的字符串作为直译。这是因为生成转换模板没有运行代码,它会搜索它的特定函数名。翻译方法有两个目的:一是翻译参数的翻译,二是识别翻译模板生成程序中应该包含哪些字符串的翻译模板文件。

您需要告诉转换模板生成代码(通常是xgettext)程序,函数的参数是可翻译的字符串。使用xgettext,这可以通过-k参数来完成。WordPress可能已经有自己的xgettext包装器,您可以使用它。

您显式链接的drupal文档表示,除非您确信文本作为文字传递到其他地方,否则不应该将变量传递给t()。

票数 1
EN

Stack Overflow用户

发布于 2012-10-03 09:55:01

Wordpress和Drupal版本都应该将字符串保存在变量中。Drupal版本的措辞有点令人困惑。Drupal文档的意思是,如果原始文本的源是用户生成的,那么您应该小心。

代码语言:javascript
运行
复制
$foo = 'bar';
($foo == 'bar') == true;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12705764

复制
相关文章

相似问题

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