【问题标题】:Bilingual Website CMS Structure - mysql, php arrays, sessions, efficiency?双语网站CMS结构——mysql、php数组、会话、效率?
【发布时间】:2013-11-30 20:30:45
【问题描述】:

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

它使我的实际页面看起来非常干净和简短,而且我在维护它时也没有遇到任何问题,因为我通常可以自己将英语翻译成西班牙语,然后只需更改另一个 lang 文件。 (两个文件中的key显然是一样的)

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

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

-- 编辑--

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

【问题讨论】:

    标签: php mysql arrays content-management-system


    【解决方案1】:

    我不会让 PHP 读写文件,它效率低下并且会导致各种问题。如果写入半个文本文件时服务器崩溃怎么办?您的网站已损坏。

    如果您正在构建 CMS,那么您还不如愤怒地使用 MySQL 数据库。如果您有包含字符串的文本文件,那么您可以在创建其结构后将它们大量导入到数据库中。

    至于数据库结构,我建议如下:

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

    我有一个查找表的原因是为了让您的网站具有可扩展性。您今天可能只有两种语言,但是如果您的网站越来越受欢迎,然后您决定要将您的网站翻译成其他语言(例如法语和德语),那么您需要做的就是在您的 @987654325 中添加一条记录@table,然后为每一页记录。

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

    1. 删除该页面pages_languages表中的每条记录,并插入新记录;
    2. 或者,如果您想维护页面内容的“修订”,只需插入新值,在前端查看页面时,只需拉取与请求页面和指定语言匹配的最新记录

    希望这会有所帮助。如果您对上述内容有任何疑问,请告诉我,因为我意识到这是一个相当高级的视图,而且我很快就草草写下了它。

    【讨论】:

    • 好的,如果每个页面都从数据库中调用 x 数量的文本字符串,我会注意到速度下降吗?另外,我对 3 个表格的结构有些困惑,我将在哪个表格中输入两种语言的文本字符串?回到读/写,这不可能在每次开发结束时完成一次吗?或者也许我用这种方法为自己创造了太多的工作
    • 否,因为您通常只将整个内容正文存储在TEXT 列中,而不是存储每个单独段落的记录。每页每种语言都有一行,并将存储在pages_languages 表中。它将有两个外键和前面提到的 TEXT 列来存储该页面和语言组合的本地化内容。
    • 因此,为了获得标题、图像和链接,我必须将它们构建到“文本”列中。所以我的 sql 条目看起来像 <h1>Lorem ipsum</h1><p>Lorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsum</p><img src="#"><h2>...?这是一个可以接受的解决方案,因为我可能会在旁边加入一个 jquery 窗口,比如博主或其他东西,以便翻译人员预览他们正在写的内容。我将有机会与翻译人员联系,教他们简单的 html。我只是想确保我没有遗漏任何东西,实际上 html 标签将单独存储。
    • 顺便感谢 sqlfiddle 我现在得到了结构......而且我只是看到我的上述问题得到了回答,因为我进一步阅读了您的示例插入。那就解决了,谢谢!
    • 我通常会将页面图像与页面内容分开,因为如果所有地区的图像都是相同的,您不希望将图像添加到多行。标题可以从页面标题中提取。对于 HTML,您可以使用 WYSIWYG 编辑器或类似 MarkItUp! 的工具来编写转换为 HTML 的纯文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多