gpt4 book ai didi

php - 使用或不使用 PHP 的 native gettext 与自建的原因是什么?

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

为了使我的应用程序支持多语言,我想知道 GNU 的 gettext 是否有很大的优势,或者构建您自己的“库”是否有很大的劣势。

此外,如果更建议“构建自己的”,那么最佳做法是什么?显然它们必须存储在数据库中,我怀疑我是否想使用平面文件,所以在某些时候我最好缓存它们,我应该怎么做?

最佳答案

gettext 扩展有一些怪癖。

  • 它将翻译字符串保存在内存中,因此当目录更新时可能需要重新启动(在 mod_php 运行时下)。
  • gettext API 并不是真正为网络应用程序设计的。 (它查找环境变量和系统设置。您必须用勺子喂 Accept-Language header 。)
  • 许多人在设置时遇到问题。
  • 另一方面,gettext 有更多的工具支持。

手工制作的解决方案几乎总能减少麻烦。但话虽这么说,gettext API 的简洁性无与伦比。 _("orig text") 或多或少是翻译文本的最佳界面。

如果您想自己编写代码,我建议您专注于此。

  • 使用简单的函数名称。一些 php 应用程序使用双下划线 __() 代替 _()。不要采用任何使实际使用翻译后的字符串变得麻烦的库。 (例如,如果使用 Zend Framework,请始终编写包装函数。)
  • 接受原始英文文本作为输入。避免助记翻译键(例如 BTN_SUBMT)
  • 在任何情况下都不要将数据库用于翻译目录。这些文本是运行时数据,而不是应用程序数据。 (有关不好的例子,请参阅 osCommerce。)

您通常可以摆脱只包含 $text["orig english"] = "dutch here"; 的 PHP 数组脚本 lang/nl.php,它无论您使用何种访问方法,都易于使用。

同时避免将所有内容都压入该系统。有时对于较长的文本采用第二种机制是不可避免的。例如,我将 template/mail.EN.txt 用于更大的 blob。

关于php - 使用或不使用 PHP 的 native gettext 与自建的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5434754/

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