首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL多语言网站

MySQL多语言网站
EN

Stack Overflow用户
提问于 2013-08-30 08:59:09
回答 5查看 7.5K关注 0票数 2

我试图建立一个英语和法语网站,从一个MySQL表中提取信息,但我被卡住了。我认为这种查询对我来说太超前了。我的想法是有一个具有两种语言翻译的表,并为它们分配一个ID。

这是朗桌

+--------+-------------------+----------------------+ _~_

然后,我有另一个表,人们输入‘主题’到数据库。因此,当我将页面切换为法语时,表的内容将以法语显示。

+

当我们在英语页面上的时候,我想把这个放在桌子上

++?

然后这个当它是法语页面被选中。

++

有没有办法让它发挥作用,还是有更简单的方法来显示

EN

回答 5

Stack Overflow用户

发布于 2013-08-30 09:23:35

正如另一个答案所建议的那样,最好将语言字符串存储在文件中,并使用Javascript加载它们。我建议使用i18next,它是一个非常有用且易于使用的JS库。这将非常简单:

代码语言:javascript
运行
复制
/* en.json */
{
    "home":{
        "title":"Hello, world !",
        "welcomeMessage":"Welcome to my great website !"
    }
}

/* fr.json */
{
    "home":{
        "title":"Bonjour !",
        "welcomeMessage":"Bienvenue sur mon superbe site web"
    }
}

在html代码中:

代码语言:javascript
运行
复制
<!-- head and other stuffs... -->
<script type="text/javascript" src="i18next.js"></script>

<body onload="translate()">
    <h1 i18n-data="home.title"></h1>
    <p i18n-data="home.welcomeMessage"></p>
</body>

在您的函数中,JS文件:

代码语言:javascript
运行
复制
function translate() {
    i18n.init({
        resGetPath:'en.json',
        getAsync:false
    }).done(function(){
        $('[data-i18n]').i18n();
    });
}

这样,您的网站将运行得更快(减少数据库调用),而且添加/更新某些字符串也会更容易。希望能有所帮助:)

票数 3
EN

Stack Overflow用户

发布于 2013-08-30 09:03:09

没有理由将lang模式保留在DB中,请尝试将文件包含在lang中。

票数 1
EN

Stack Overflow用户

发布于 2013-08-30 09:10:26

好吧,您不应该每次有人加载会导致性能灾难的页面时更改表内容;-),但是您可以进行SQL查询。

如果你在法语页面上,你会这样做。

代码语言:javascript
运行
复制
SELECT l.French FROM topic AS t
JOIN lang AS l ON t.Topic = l.id
WHERE t.EMP_ID = $emp_id;

而你在英语方面的表现

代码语言:javascript
运行
复制
SELECT l.English FROM topic AS t
JOIN lang AS l ON t.Topic = l.id
WHERE t.EMP_ID = $emp_id;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18528877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档