问题:PHP搭建多语言网站的更好实践

我有一个网站,我用两种语言构建,包括两个基于浏览器语言的不同“字典”

在每个 langXX.php 我有

define('SOME_STRING', 'Some string');

等等......但我现在讨厌这个解决方案,因为我不确定我是否在两个文件中都包含了新定义......所以我试图将所有定义包含在 mysql 中并构建一个类似的函数

translate('SOME_STRING', 'en'); // ouput 'Some string'

我正在迁移到 mysql,因为我喜欢通过我将构建的 CMS 直接管理翻译,我不想让网站管理员通过 ftp 和 textmate...

所以我的问题是,如果后一种解决方案更好或者对mysql来说压力太大而无法获取页面的每个文本元素的查询..

PS。据我记得,即使 osCommerce 也使用过这种做法,对吗?

解答

为什么不使用存储在数据库中的数据的文件缓存?您删除了可能成本高昂、重复次数多的数据库调用集,但可以保留 CMS 语言值概览的优势。

  • 在数据库中存储翻译

  • 有一个从数据库值生成平面文件的过程

  • 每次发生翻译更新时重新启动此进程

  • 在任何前端翻译检索操作中使用平面文件。

Logo

华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!

更多推荐