2014-05-22 47 views
0

我正在考虑为我的客户的网店创建一个“语言表”,他们可以轻松编辑。PHP优化网站语言包

的想法是有这样的表:

id - key - en - fr - es 
____________________________________ 
1 - greet - Hello - Bonjour - Ola 

然后我的PHP代码中,我只是想这样用是指:

<h1><? echo i18n('greet'); ?></h1> 

语言表将具有约500行,有时是文字,有时是句子。

我不想在每次调用i18n函数时执行一次sql调用,这可能是每页30..40次。

有没有办法分析当前页面,用所需的键做1个查询? 我应该每次加载整个语言表(只是键和使用的语言)吗?

我该如何优化?

+0

您可以在顶部使用脚本中稍后使用的任何可翻译内容更新顶部的'$ words_to_get = array('foo','bar','baz')',然后使用该数组仅获取必要的翻译。 –

+0

是的,我想过,但没有办法自动化这个数组? –

+0

当然,写一个php解析器来扫描你的.php文件以进行任何'i18n'调用。但这些翻译多久会发生变化?您最好将它们作为php代码存储,然后每次通过include()加载/解析。您必须对系统进行基准测试,以查看平衡点在哪里:解析文件开销与版本。从数据库开销加载。 –

回答

0

在开始这个项目时,看看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。

+0

谢谢,看着更大,成熟的项目所做的一切总是一条好路 –