我正在考虑为客户的网上商店创建一个“语言表”,让他们可以轻松编辑。
我们的想法是拥有这样的表格:
id - key - en - fr - es
____________________________________
1 - greet - Hello - Bonjour - Ola
然后在我的 php 代码中,我只想使用以下命令引用此内容:
<h1><? echo i18n('greet'); ?></h1>
语言表大约有 500 行,有时是单词,有时是句子。
我不想每次调用 i18n 函数时都进行 sql 调用,这可能是每页 30..40 次。
有没有办法分析当前页面,使用所需的键进行 1 次查询? 我是否应该每次都加载整个语言表(仅键和使用的语言)?
我该如何优化它?
最佳答案
当您开始这个项目时,绝对值得您花点时间看看 WordPress 国际化/本地化 (I18N/L10N) 系统。我已经成功地使用它与翻译人员合作本地化了几个相当复杂的 WordPress PHP 代码块。 WordPress 本身支持数十种国家语言。
http://codex.wordpress.org/I18n_for_WordPress_Developers
它基于成熟、优秀的GNU gettext系统进行翻译。
http://www.gnu.org/software/gettext/
它基本上是通过定义一套用于封装文本的函数来工作的。你引用的例子就是这样完成的
<h1><? echo __('greet'); ?></h1>
或者这样,作为 echo __()
<h1><? _e('greet'); ?></h1>
他们的功能套件中有相当多的详细说明,您可以在 WordPress 文档中阅读。
您会发现优秀的开源和商业软件产品,可帮助程序员和翻译人员生成必要的数据。
在 WordPress 中,各种翻译都存储为文本文件。您没有理由不对其进行调整以将数据放入 RDMS。
关于PHP优化网站语言包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23815807/