【发布时间】:2014-05-22 19:44:33
【问题描述】:
我正在考虑为客户的网上商店创建一个“语言表”,他们可以轻松地对其进行编辑。
这个想法是有这样的表:
id - key - en - fr - es
____________________________________
1 - greet - Hello - Bonjour - Ola
然后在我的 php 代码中,我只想引用这个:
<h1><? echo i18n('greet'); ?></h1>
语言表大约有 500 行,有时是单词,有时是句子。
我不想每次调用 i18n 函数时都进行 sql 调用,这可能是每页 30..40 次。
有没有办法分析当前页面,使用所需的键进行 1 次查询? 我应该每次都简单地加载整个语言表(只是键和使用的语言)吗?
如何优化?
【问题讨论】:
-
您可以在顶部有一个
$words_to_get = array('foo', 'bar', 'baz'),您可以使用稍后在脚本中使用的任何可翻译内容进行更新,然后使用该数组仅获取必要的翻译。 -
是的,我已经考虑过了,但是没有办法自动化这个数组吗?
-
当然,编写一个 php 解析器来扫描您的 .php 文件以查找任何
i18n调用。但是这些翻译多久会改变一次?您最好将它们存储为 php 代码,然后每次都通过 include() 加载/解析它。您必须对系统进行基准测试以查看平衡点:解析文件开销与从 db 开销加载。 -
我喜欢拥有表格的便利性以及围绕表格创建语言编辑器的便利性。
-
过去,我在一家有将每个语言都存储在数据库中的习惯的公司工作。一直更新数据库非常烦人。浪费时间恕我直言。这不是一个边缘案例..想想这个。希望这可以帮助您明智地选择。
标签: php mysql internationalization translation