【发布时间】:2012-01-22 15:52:39
【问题描述】:
我是 webapp(任务管理器)的开发者。
这个应用程序必须有多种语言版本。因此,用户可以通过常用语言下拉菜单切换到不同的语言。
我必须构建一个以 MySQL 作为后端的自定义翻译系统,因为我有特殊的限制。
系统上的主表(包括一些记录作为例子)是translation表:
id | language_id | string_id | message
1 | en | WELCOME | welcome
2 | it | WELCOME | benvenuto
我可以编写一个函数getTranslatedMessage,它将string_id 作为输入,并将
_ 检测当前语言
_ 进行数据库查询并检索一行
_ 返回翻译后的消息
这样一个系统的问题在于,它会给数据库带来很大的压力。如果我在一个页面上有 20 个要翻译的字符串,那么每个页面加载都会有 20 个对数据库的查询。
你认为我应该走这条路,因为它是最干净和最简单的,使用memcache 来保留每个getTranslatedMessage 输出的结果,使用language_id 和string_id 作为memcache 条目的键?
你会以不同的方式做到这一点吗?
我在想也许可以通过在启动时将一种语言的所有消息加载到全局数组 $lang 中。
任何建议都会受到欢迎,因为这个组件将是我的应用程序的关键。
谢谢,
丹
【问题讨论】:
标签: php translation