gpt4 book ai didi

php - 如何使我的 CMS 多语言化

转载 作者:行者123 更新时间:2023-11-30 22:52:55 25 4
gpt4 key购买 nike

我制作了一个使用 PHP 和 MYSQL 作为后端的 CMS。问题是,我希望该站点有多种语言版本;所以我已经翻译了 CMS 本身并将其放在如下文件中:

  • zh.ini
  • nl.ini

这对于 CMS 的内容本身(如管理等)来说效果很好。当我尝试进一步翻译网站时,实际问题出现了:博文和页面存储在数据库中,因此它们是动态的。我的页面表的结构如下所示:

urlname | name | id | content | position | hidden | redirect | type | permission

因此,如果我要将页面翻译成荷兰语等,我不想创建一个名为 pages_nl 的新表,因为大部分信息都是相同的和另一张 table 一样。
我可以添加一行包含页面可用语言的行,如果当前 $lang 与页面可用语言之一匹配,则让 php 读取数组并解析,然后读取 content_nlname_nl 行为例。
我的博客文章也会出现同样的问题,我已经搜索了解决方案,但大多数结果都是针对特定的 CMS 和插件。

我想问的是存储多语言页面/帖子的最佳方式(和数据库结构)是什么,如果没有可用的翻译版本,可以动态添加语言并在原始内容上回退。

最佳答案

基本上你向你的数据库添加一个 lang-key

urlname | name | id | content | position | hidden | redirect | type | permission | lang

现在假设一个请求来自一个包含 5 个内容元素的页面。您的 CMS 首先搜索具有特定语言代码的条目,例如 nl。如果它没有找到带有语言代码的条目,它会回退到默认语言并采用该条目。

假设您已经翻译了内容 1、3 和 5:

Content 1       Content 1 nl
Content 2
Content 3 Content 3 nl
Content 4
Content 5 Content 5 nl

Result:

Content 1 nl
Content 2
Content 3 nl
Content 4
Content 5 nl

另一种方法是在模板文件中进行翻译(就像 magento 那样)。在 magento 中你有类似的东西:

"Hello, this is the " . $this->__("English") . " page"

和翻译文件。例如 lang.nl:

"English", "Dutch"

在这种情况下,您将只有 1 个内容元素,但您将包装每个应翻译的元素。这也适用于图像和您想要的一切。您还可以抽象此包装器以在后端 RTE-Editor 中工作。例如,您将在后台编写 Hello, this is the English page 然后标记 English 并单击翻译按钮。这将添加一个围绕英语的标签,当您呈现内容时,您会扫描此标签,如果您发现此字符串在请求的语言中有任何翻译,则替换它。

关于php - 如何使我的 CMS 多语言化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27579565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com