双语网站CMS结构 - mysql,php数组,会话,效率?

时间:2013-11-30 20:30:45

标签: php mysql arrays content-management-system

我创建并管理了一个双语网站。到目前为止,我已经使用了一个使用GET lang变量的会话,并且包含了一个基于它的lang文件。我的lang文件是一个简单的php数组,例如home_h1, home_p1的键,然后是文本作为值。

它使我的实际页面看起来非常干净和简短,并且我没有遇到任何问题,因为我通常可以将英语翻译成西班牙语,并且只需更改另一个lang文件。 (两个文件中的键显然相同)

我没时间维护这个了。所以我想构建一个CMS来供翻译使用。他们希望能够立刻编辑这两种语言。计划是拥有一个包含密钥的数据库表:id, description, page, paragraph_no, English, Spanish。如何保留当前系统,但在CMS中使用新数据库表?我可以使用php编写一个新的php文件,其中包含一个带有描述键的数组(描述必须是主键吗?)和英语/西班牙语翻译,所以匹配我当前的格式?

我所要做的就是替换相应目录中的新lang文件。我从来没有使用PHP编写文件所以这对我来说是新的。我对其他建议完全开放这也是我认为最快的东西(顺便说一下,我不想使用查询来获取文本,我认为我的网站上有太多的文本,我会假设一个数组在包含文件中要快得多。

- 编辑 -

我一直在研究stackoverflow,有人提到使用我刚刚概述的方法,编写php文件然后包含它们,但答案缺少如何,这是我不知道的知道。我正在根据需要学习php,堆栈溢出是我的库,当然还有php库。谢谢!

1 个答案:

答案 0 :(得分:2)

我没有PHP读取和写入文件,它效率低下并且可能导致各种问题。如果写入半个文本文件时服务器崩溃怎么办?你的网站坏了。

如果您正在构建CMS,那么您也可以在愤怒中使用MySQL数据库。如果你有包含字符串的文本文件,那么一旦你创建了它的结构,就可以将它们大量导入到你的数据库中。

至于数据库结构,我建议这样的事情:

  • 一个pages表,其中包含一个自动递增的主键列
  • 包含您网站翻译成语言的languages表格(最初为英语和西班牙语)
  • 一个pages_languages表,它是一个查找表。每页每种语言都有一条记录。因此,如果有两种语言,那么每页将有两条记录。

我有一个查找表的原因是,您的网站是可扩展的。您今天可能只有两种语言,但是如果您的网站越来越受欢迎,然后您决定将您的网站翻译成其他语言(例如法语和德语),那么您需要做的就是在{{{{{ 1}}表,然后是每个页面的记录。

对于CMS,在编辑页面时,每种语言只需要一个textarea或富文本字段。保存时,您有两种选择:

  1. 删除该页面的languages表格中的每条记录,然后插入新记录;
  2. 或者,如果您想维护页面内容的“修订”,只需插入新值,并在查看前端页面时,只需提取与请求的页面和指定语言匹配的最新记录
  3. 希望这会有所帮助。如果您对上述内容有任何疑问,请告诉我,因为我意识到这是一个非常高级的观点,而且我很快就把它从袖口上写下来了。