带有 gettext 的 php 常量

发布于 2024-08-26 02:33:04 字数 255 浏览 5 评论 0原文

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

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

我根据加载配置文件后包含的另一个文件中的 SESSION 变量加载 gettext 的本地语言。 如何使其类似于:

echo _(SYS_TITLE);

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

I am using config file which contains:
config.php

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

I load language local for gettext based on SESSION variable in another file included after the config file is loaded.
how to make it something like:

echo _(SYS_TITLE);

What is the best way to translate the SYS_TITLE without changing much of the code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

执妄 2024-09-02 02:33:04

如果我的理解是正确的,那么您正在寻找一种将翻译后的字符串导入到某些 php 代码中的方法。

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

如果您将“Something in English”存储在 A1 中,则可以按如下方式设置 B1:

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

您最终会得到

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

If I get you right you are looking for a way to import translated string into some php code.

How about loading all your strings in XL in the first column and generating the php code in the second column with a simple concatenate() call?

If you store "Something in English" in A1, you can setup B1 as follows:

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

You end up with

A1                      B1
Something in english    define('SYS_TITLE','Something in english');
居里长安 2024-09-02 02:33:04

您可以只使用:,

echo _("SYS_TITLE");

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

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

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

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

You could just use:

echo _("SYS_TITLE");

and then create a .po file for all your translations. It wouldn't use the value of your constant, of course, but it's up to you to decide if that's acceptable. After all, you don't need the msgid to contain the default language's text literally.

You could also create some wrapper function for your gettext call:

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

Of course, accepting all the problems that this will bring along (like additional plural handling).

野稚 2024-09-02 02:33:04

您还应该能够执行此操作:

echo _(constant("SYS_TITLE"));

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

You should also be able to do this:

echo _(constant("SYS_TITLE"));

This should retrieve the value of your constant, which will then be passed into your function call. I haven't tested it though, so I may be wrong.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文