PHP优化网站语言包

标签 php mysql internationalization translation

我正在考虑为客户的网上商店创建一个“语言表”,让他们可以轻松编辑。

我们的想法是拥有这样的表格:

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/

相关文章:

mysql - 如何在 MySQL 中选择这些特定的行?

java - PDFBox 提取的文本不包含国际(非英语)字符

javascript - 国际化单页网站

处理较小批处理的 PHP Process

java - 如何从与其他表匹配的 1 个表中删除一些重复行

php - SQLSTATE[HY000] : General error: 1364 Field 'reservation_id' doesn't have a default value

mysql - 普通 Key 应该包括主键吗?

php - 在 html/php/css 中向右移动下拉列表

MySQL 插入时触发问题

java - 如何设置fx :value using resource bundle?