gpt4 book ai didi

php - Gettext 占位符

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:50 28 4
gpt4 key购买 nike

我正在使用 PHP + CodeIgniter 构建一个多语言应用程序。我决定使用 gettext 进行 UI 文本翻译,到目前为止,它已被证明高效且易于使用。

但现在我遇到了一些非常烦人的事情:gettext() 函数只接受一个参数,而我想要从 Zend Framework 的 gettext 适配器获得的类似 printf 的行为,我在那里可以使用 %1$s%2$s 等作为占位符,然后将替换字符串指定为 Zend View 的 translate() 的附加参数> 功能。

我不想放弃 gettext,因为 .po 文件和 poEdit 的翻译管理很简单(毕竟我可以通过单击来更新它)。我有哪些选择?

我已经尝试编写一个助手来与 gettext 交互:通过 gettext 运行第一个参数,然后在结果字符串上运行 strtr。您是否可以推荐任何其他/更好的方法?

最佳答案

其实很简单,你定义一个可变参数函数是这样的:

function myGettext($id)
{
return vsprintf(gettext($id), array_slice(func_get_args(), 1));
}

现在执行 myGettext('%u %s in a %s', 3, 'monkeys', 'tree') 将返回预期的字符串,占位符被剩余参数替换。显然,您还需要实现一个调用 ngettext() 的复数感知函数。

关于poEdit,你必须修改它搜索的关键字,我上次使用它已经有一段时间了但它很简单,我遇到的唯一问题是识别复数支持的关键字(see this)。

希望对您有所帮助!

关于php - Gettext 占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5445815/

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