Php 如何强制gettext独立于当前语言翻译特定语言?

Php 如何强制gettext独立于当前语言翻译特定语言?,php,translation,gettext,Php,Translation,Gettext,如何让函数独立于当前设置的语言将单词翻译为特定语言 让我们举个例子 让我们假设默认语言是英语。 让我们用“树”这个词。在意大利语中是阿尔贝罗 如果我正在浏览我的网站的英文版,该页面的所有内容都将被翻译成英文。特别是,如果我的php代码中有一行echo('tree'),将输出树 我想完成的是在浏览英文版网站时输出albero。我想告诉uz()只翻译页面特定部分的特定单词,用意大利语,即使当前语言是英语。在我看来,这就像是('tree','it'u it'),它告诉gettext忽略英语,只在调用时

如何让函数独立于当前设置的语言将单词翻译为特定语言

让我们举个例子

让我们假设默认语言是英语。 让我们用“树”这个词。在意大利语中是阿尔贝罗

如果我正在浏览我的网站的英文版,该页面的所有内容都将被翻译成英文。特别是,如果我的php代码中有一行
echo('tree'),将输出树

我想完成的是在浏览英文版网站时输出albero。我想告诉uz()只翻译页面特定部分的特定单词,用意大利语,即使当前语言是英语。在我看来,这就像是
('tree','it'u it')
,它告诉gettext忽略英语,只在调用时用意大利语覆盖它

可以用gettext()实现吗?
如果是,如何进行?如果没有,还有其他解决方案吗?

不幸的是,GNU
gettext
不支持此功能

您可以通过临时更改区域设置来伪造:

setlocale(LC_ALL, 'it_IT');
echo _('tree');
setlocale(LC_ALL, 'en_US');

我真的不明白如何使用它…这是我实现的一个粘贴库。你能帮我吗?在PHP手册中,我发现
bindtextdomain(“module1”,“path/to/my/locale/folder”)之间没有区别
bindtextdomain(“module2”,“path/to/my/locale/folder”)
…英语和意大利语的
locale
文件夹是相同的!事实上,英语和意大利语是
locale
的子文件夹,所以每个bindtextdomain都指向同一个文件夹…@AlbertoFontana,我错了。似乎无法使用
gettext
执行此操作。您可能需要使用
putenv
setlocale
临时切换为意大利语。我会更新我的答案。是的,我通过做
setlocale(LC_ALL,“it_it”)然后
echo('tree')setlocale(LC_ALL,“en_US”)!您可以使用环境变量
LANGUAGE
,而不必更改区域设置(这也会影响环境的其他方面并需要安装区域设置)。