【问题标题】:php constant with gettext带有gettext的php常量
【发布时间】:2011-03-28 18:36:41
【问题描述】:

我正在使用包含以下内容的配置文件: config.php

define('SYS_TITLE','My Application Title');

我根据加载配置文件后包含的另一个文件中的 SESSION 变量为 gettext 加载本地语言。 如何使它像这样:

echo _(SYS_TITLE);

在不更改大部分代码的情况下翻译 SYS_TITLE 的最佳方法是什么。

【问题讨论】:

  • 我不明白。如果你在常量中定义你的文本,为什么要使用 gettext 呢? echo SYS_TITLE 不是已经完成这项工作了吗?
  • 实际上我是在完成编码后开始使用 gettext 的,这就是为什么我认为可能有某种方法可以翻译常量。不幸的是,似乎不可能,gettext 接受字符串,既不接受变量也不接受常量。谢谢佩卡。

标签: php gettext


【解决方案1】:

如果我猜对了,您正在寻找一种将翻译后的字符串导入一些 php 代码的方法。

如何在第一列中加载 XL 中的所有字符串,并通过简单的 concatenate() 调用在第二列中生成 php 代码?

如果你在A1中存储“Something in English”,你可以如下设置B1:

=CONCATENATE("define('SYS_TITLE','",A1,"');")

你最终得到

A1                      B1
Something in english    define('SYS_TITLE','Something in english');

【讨论】:

  • 对不起,先生,但我正在使用 gettext 库有单独的文件进行翻译。
【解决方案2】:

你可以使用:

echo _("SYS_TITLE");

然后为您的所有翻译创建一个 .po 文件。当然,它不会使用您的常量的 ,但由您决定这是否可以接受。毕竟,您并不需要 msgid 以逐字包含默认语言的文本。

您还可以为您的 gettext 调用创建一些包装函数:

function gt(string){
    if(defined(string)){
        echo constant(string);
    } else {
        echo _(string);
    }
}

当然,接受这会带来的所有问题(比如额外的复数处理)。

【讨论】:

    【解决方案3】:

    您也应该能够做到这一点:

    echo _(constant("SYS_TITLE"));
    

    这应该检索您的常量的值,然后将其传递到您的函数调用中。不过我没有测试过,所以我可能错了。

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 2010-11-23
      • 1970-01-01
      相关资源
      最近更新 更多