【问题标题】:PHP optimize website language PackPHP优化网站语言包
【发布时间】: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


【解决方案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 中。

【讨论】:

  • 谢谢,看看在更大、更成熟的项目中完成了什么总是一个好方法
猜你喜欢
  • 1970-01-01
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 2010-12-04
  • 2011-06-07
  • 2019-12-27
相关资源
最近更新 更多