【发布时间】:2011-02-05 06:48:14
【问题描述】:
我正在努力升级我们的网站以支持不同的语言。
我的计划是存储多种语言的文本段落,并为每个段落指定一个标识符。
示例
id => '1'
简短 => 'welcome_paragraph'
en => '欢迎访问我们的网站!'
de => 'Willkommen auf unserer 网站!'
要求
- 快速检索
- 随时通过 CMS 进行编辑
- 轻松添加新语言
那么将其存储在数据库表中的最佳解决方案是什么?如果是这样,以下哪个是最好的表设置:
一张表,每种语言一列,每个简报一行:
ID, brief, en, de, es
或者两张表,一张带短文,一张带翻译:
ID, brief
ID, language, translation
在每一页,我都打算做......
echo $page->translate($language, $brief);
多次显示需要的文本....继续调用数据库会很慢:
SELECT translation FROM translations
WHERE language = 'es' AND brief = 'welcome_paragraph'
LIMIT 1
在每个页面上多次?因此有更好的方法将其存储为平面文件吗?还是更新时生成的包含大量翻译的 PHP 文件?
$english = array(
'message1' => 'message1',
'message2' => 'message2',
'message3' => 'message3');
$german = array(
'message1' => 'Nachricht1',
'message2' => 'Nachricht2',
'message3' => 'Nachricht3');
很像Zend Translate page 上的示例 我目前不考虑使用 Zend Translate...我认为它是有成本的?
【问题讨论】:
-
为什么是“动态生成”?您不希望翻译在运行时发生变化,是吗?为什么不只是在普通的静态 PHP 包含?
-
“我现在不考虑使用 Zend Translate ......我认为它是有成本的?”如果你的意思是以美元为单位的成本,不,没有成本。 Zend 框架是免费和开源的,在 BSD 许可下。这几乎是免费的。
-
我已经“即时”更改,应该会更新,感谢您指出 bobince。
-
stackoverflow.com/questions/2344383/… 的可能副本以及其他几个涵盖类似理由的副本。
标签: php database translation flat-file