gpt4 book ai didi

php - 如何在 PHP 中使用 gettext 加载语言?

转载 作者:可可西里 更新时间:2023-11-01 13:44:26 25 4
gpt4 key购买 nike

我在 poedit 中创建了一个语言文件以使用 PHP gettext 函数,现在在我试图测试它的页面上,我无法找到/加载我创建的 .po 或 .mo 文件,有人看到我做错了什么吗?

$locale = "en_US";
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("default", "/includes/locale");
textdomain("default");

//my .po ad .mo file is located here /includes/locale/en/default.mo

即使我试图加载默认的英语 lang 文件,我也更改了文件中的一些文本以确保它正在从语言文件中读取,目前它只显示默认文本而不进行翻译,我我想我可能走错了路

最佳答案

我终于让它工作了,我在这里发帖,所以也许它可以帮助其他人,我认为它的记录方式有些困惑。

我将在这个演示中使用法语的 FR

$locale = "fr_fr";
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("default", "/includes/locale");
textdomain("default");

在上面的bindtextdomain 函数 中,第一个参数是.po 语言文件的名称减去扩展名。第二个参数是文件夹的路径,这是有点棘手/未记录的地方...在您设置的文件夹中,您必须为每种语言创建一个文件夹,其中包含 2 位国家代码,然后在该国家代码中文件夹 我必须添加这个名为 LC_MESSAGES 的文件夹,LC_MESSAGES 是您的 default.po 文件所在的位置。

这是我让它工作的唯一方法,有点令人困惑,因为 lang 文件夹的路径在这里没有提到任何关于粗体部分的内容:

langfolder/fr_FR/LC_MESSAGES/default.po

这仍然很奇怪,default.po 对我有用,但是如果我在上面的代码中将它更改为其他内容,然后更改 .po 和 .mo 文件的文件名以匹配它将不再有效,只适用于我的 default 名称,我开始认为 gettext 可能会在幕后进行某种缓存

关于php - 如何在 PHP 中使用 gettext 加载语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1450037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com