【问题标题】:How do you make gettext ALWAYS use a translation instead of default languiage text你如何让 gettext 总是使用翻译而不是默认语言文本
【发布时间】:2009-09-12 19:05:47
【问题描述】:

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

echo gettext('hello how are you today');

这将是用于查找翻译的文本,但是我想使用类似这样的内容

echo gettext('welcome_message');

并将其翻译成英语和我提供的任何其他语言。那么我怎么能做到这一点呢?如何让 gettext 函数始终使用语言文件?因此,如果我的网站默认语言是英语,那么 gettext 不会向英语用户显示 welcome_message,而是会显示 hello you how are you today

除了其他语言文件之外,它只是创建一个英语语言文件那么简单吗?

【问题讨论】:

  • _('text')和gettext('text')一样,不需要lang()函数。
  • 我意识到,我这样做是出于其他原因,比如有时当 gettext 扩展无法用于测试时,我可以使用数组或常量,无论如何,它使我的应用程序更加灵活。不过,这不是我的问题
  • 也经常使用两个或三个下划线作为翻译功能。这提供了更大的灵活性,例如:如果没有内置的 gettext 扩展,只需回显这些内容,或者如果设置了标志 X,则从 DB 中读取翻译等。然后您只需使用 xgettext --keyword=__。 Zend_Translate 也可以在没有实际 PHP 扩展的情况下读取 gettext 字符串,并且具有 ->isTranslated() ->hasLanguage('finnish') 等内容。
  • 你不应该。 Gettext 被设计成这样是有原因的:提供一个默认值。当然,如果有的话,它甚至会使用英文翻译,但它会使用你无用的占位符来表示任何其他没有翻译的语言。不,你并不比 gettext 开发者聪明!以应有的方式使用它。

标签: php gettext


【解决方案1】:

你在正确的轨道上。 gettext() 的字符串参数只是一个标识符,而不是“默认语言”。如果活动语言环境中没有翻译,则 gettext 将返回该标识符。

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

【讨论】:

  • 一开始我以为它只查找语言文件并翻译,如果语言集是不同的语言,那么网站就是这样,就像网站是英文的,你应该看到西班牙语然后它会得到西班牙语文件,但如果你是英语并查看该网站,它甚至不会费心寻找英语文件,但你说它会在显示默认标识符之前先查找英语语言文件,awsome + 1
猜你喜欢
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 2011-06-09
  • 2022-12-09
相关资源
最近更新 更多