php - 存储和检索翻译文本的最快方法 - 数据库还是平面文件?

标签 php database translation flat-file

我正在努力升级我们的网站以支持不同的语言。

我的计划是存储多种语言的文本段落,并为每个段落指定一个标识符。

例子
id => '1'
简介 => 'welcome_paragraph'
zh => '欢迎来到我们的网站!'
de => 'Willkommen auf unserer Website!'

要求

  • 快速检索
  • 随时通过 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...我认为它会产生费用?

最佳答案

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

您可以查看 wordpress 以了解 gettext 的运行情况。

关于php - 存储和检索翻译文本的最快方法 - 数据库还是平面文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2592958/

相关文章:

php - 当行达到过期日期时删除行 PHP Mysql

php - 如何使用php防止同一记录在mysql中插入两次

database - 联机事务处理或联机分析处理中的 "Online"是什么

mysql - 用于统计计数​​的数据库系统

php - CodeIgniter 获取 CI 在验证表单时加载正确的语言文件

java - 来自 Java 和 Azure 的 Microsoft Translator API

PHP 扩展 Dio 未加载?

php - 正则表达式:SQL 查询字符串匹配 * 或 .* 但计数 (*)

xml - 带有 XML 的 SQL Server 2005 中的层次结构

delphi - 语言翻译器 Delphi