【问题标题】:Fastest way to store & retrieve translated text - database or flat file?存储和检索翻译文本的最快方法 - 数据库或平面文件?
【发布时间】: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


【解决方案1】:

http://php.net/manual/en/book.gettext.php多语言网站的解决方案

您可以查看 wordpress 以观看 gettext 的实际应用。

【讨论】:

  • 我同意这是最好的解决方案。如果您采用数据库方式,则需要实现一些缓存,否则会浪费大量资源。
猜你喜欢
  • 2011-02-17
  • 2014-08-20
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
相关资源
最近更新 更多