存储语言和风格。什么是最好的?文件或数据库(i18N)

时间:2012-06-06 19:34:47

标签: php database file internationalization storage

我正在为IT启动事件跟踪系统,这可能是我的第一个PHP项目。

我一直在设计它,基于我看过的像vBulletin的软件,我希望它有i18n和样式可编辑。

所以我的第一个问题就在这里:

  1. 存储这些东西的最佳方法是什么,知道它们可能是静态的。我一直在考虑使用PHP获取文件内容,在文本编辑器中显示它,并在保存时替换旧的。 (如果之前没有编辑过,请复制一份,因此我们有“原件”)。 我认为这比使用MySQL和存储语言/风格要快得多。

  2. 这里的安全性怎么样?我应该创建.htaccess来请求这个文件夹上的pw吗?

  3. 我知道如何使用每个从数据库获取数组并使用strreplace($ name,$ value,$ file)进行替换,但是如果我将语言存储在文件中,我可以创建一个关联数组吗?它的内容(如JSON)。

  4. 非常感谢并抱歉这么多问题,我是新手

2 个答案:

答案 0 :(得分:1)

这就是我在我的cms中做的事情:

  • 我开发的each插件/程序/实体(您的名字),我创建了一个/translations文件夹。
  • 我把我的所有翻译放在那里,名称如 el.txt,de.txt,uk.txt 等所有语言
  • 我将翻译数据存储在 JSON 中,因为它易于存储,易于阅读,并且最容易让所有人发布。
  • 文件可以在文件中轻松进行UTF8编码而不会弄乱数据库,从而可以在文件模式下读取它们。 (只是JSON.parse他们)
  • 关于这些插件的安装,我只是循环遍历所有翻译并将它们放在数据库中,每个表行的每种语言。 (等a data column of TEXT datatype
  • 对于每个页面渲染我只查询一次数据库以获取此行所选语言,并将json_decode()调用到整个结果以获取它一次;然后把它放在 $ _ SESSION 中,以便下次获取当前所选语言的flash-speed翻译字符串

整个事情的发展让我不介意性能和兼容性

答案 1 :(得分:1)

  1. 存储在HDD与DB之间的好处是备份不会浪费太多空间。例如。一旦文件备份一次,它就不会在第二天占用磁带。然而,db每天都会完全备份并占用越来越多的空间。将它写入磁盘的不利之处在于它增加了某人上传恶意内容的机会,而且他们可能足够聪明地弄清楚如何执行它。你只需要更加小心,就是这样。
  2. 是的,使用.htaccess限制对可写文件夹的任何操作。在风险之前好好思考。
  3. 你的方法听起来像是一个好策略。 祝你好运。