【问题标题】:Storing language and styles. What would be best? Files or DB ( i18N )存储语言和风格。什么是最好的?文件或数据库 ( i18N )
【发布时间】:2012-06-10 20:47:18
【问题描述】:

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

我一直在根据我见过的软件(如 vBulletin)设计它,我希望它具有 i18n 和可编辑的样式。

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

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

  2. 这里的安全性如何?我应该创建 .htaccess 以在此文件夹上请求密码吗?

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

非常感谢,对于这么多问题,我很抱歉,我是新手

【问题讨论】:

  • 我会使用数据库,为什么你认为它会更慢? db 专为快速数据选择和检索而设计。
  • 我不知道我的想法是越少查询越好,虽然我对数据库一无所知(几乎一无所知),但我已经有了一本关于数据库设计的书,我将开始阅读几周后。

标签: php database file internationalization storage


【解决方案1】:

这就是我在我的 cms 中所做的:

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

整个开发过程都考虑到性能和兼容性

【讨论】:

    【解决方案2】:
    1. 在 HDD 与 DB 上存储的好处是备份不会浪费太多空间。例如。文件备份一次后,第二天就不会占用磁带了。然而,一个数据库每天都会得到完全备份,并且占用越来越多的空间。将其写入磁盘的不利方面是它增加了有人上传恶意内容的机会,并且他们可能足够聪明,可以弄清楚如何执行它。你只需要更加小心,仅此而已。
    2. 是的,使用 .htaccess 来限制对可写文件夹的任何操作。提前考虑好风险。
    3. 您的方法听起来不错。 祝你好运。

    【讨论】:

      猜你喜欢
      • 2010-12-30
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      相关资源
      最近更新 更多