Php 如何使gettext始终使用翻译而不是默认语言文本

Php 如何使gettext始终使用翻译而不是默认语言文本,php,gettext,Php,Gettext,当调用gettext php函数将文本转换为另一种语言时,它使用页面上的文本作为键/ID来查找要替换为的值 echo gettext('hello how are you today'); 这将是用于查找翻译的文本,但是我想使用类似的内容 echo gettext('welcome_message'); 并将其翻译成英语和我提供的任何其他语言。那么我怎样才能做到这一点呢?如何使gettext函数始终使用语言文件?因此,如果我的网站默认语言是英语,那么它不会向英语用户显示“欢迎”消息,而是显示

当调用gettext php函数将文本转换为另一种语言时,它使用页面上的文本作为键/ID来查找要替换为的值

echo gettext('hello how are you today');
这将是用于查找翻译的文本,但是我想使用类似的内容

echo gettext('welcome_message');
并将其翻译成英语和我提供的任何其他语言。那么我怎样才能做到这一点呢?如何使gettext函数始终使用语言文件?因此,如果我的网站默认语言是英语,那么它不会向英语用户显示“欢迎”消息,而是显示“你好,今天好”


除了其他语言文件之外,是否只需创建一个英语文件就可以了?

您的思路是正确的。gettext()的字符串参数只是一个标识符,而不是“默认语言”。如果活动区域设置中没有翻译,则gettext将返回该标识符


您的解决方案正是您所怀疑的:只需创建一个英文翻译文件。

('text')与执行gettext('text')相同,不需要lang()函数。我意识到,我这样做是出于其他原因,比如有时当gettext扩展无法用于测试时,我无论如何都可以使用数组或常量o,它使我的应用程序更加灵活。这不是我这里的问题,虽然也经常使用两到三个下划线作为翻译功能。这提供了更大的灵活性,比如:如果没有内置的gettext扩展,只需回显内容,或者如果设置了标志X,则从DB读取翻译,等等。然后只需使用xgettext--keyword=\uuux。此外,Zend_Translate可以在没有实际PHP扩展名的情况下读取gettext字符串,并具有->isTranslated()->hasLanguage('finnish')等功能。您不应该这样做。Gettext这样设计的原因是:提供默认值。当然,如果可以的话,它甚至会使用英语翻译,但是它会在没有翻译的情况下使用你无用的占位符。不,你并不比gettext开发者聪明!使用它的方式,它意味着被使用。伟大的一开始,我认为它只是寻找一个语言文件和翻译,如果语言集是一种不同的语言,那么该网站是由它,比如,如果网站是英文的,你应该看到西班牙文,那么它会得到西班牙文文件,但如果你是英文的,并且查看网站,它甚至不会费心寻找英文文件,但是你说它会在显示默认标识符awsome+1之前先查找英文lang文件