双语网站中的html语言
我在一个双语网站上工作(西班牙语/英语),我接受了第二个答案的建议 这是导航栏中我用来选择语言的代码位:双语网站中的html语言,html,jquery,Html,Jquery,我在一个双语网站上工作(西班牙语/英语),我接受了第二个答案的建议 这是导航栏中我用来选择语言的代码位: <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" id="dropdown06" data-toggle="dropdown" aria-haspopup="true" aria-ex
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" id="dropdown06" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span lang="es">Idioma</span>
<span lang="en">Language</span>
</a>
<div class="dropdown-menu" aria-labelledby="dropdown06">
<a class="dropdown-item coll-navbar language">
<span lang="es">English</span>
<span lang="en">Español</span>
</a>
</div>
</li>
这是实现的代码示例:
<div class="title col-12 col-md-8">
<h2 class="align-center" lang="es"><strong>
Costura</strong></h2>
<h2 class="align-center" lang="en"><strong>
Sewing</strong></h2>
</div>
肋骨
缝纫
而且,它工作得很好,唯一的问题是,当我选择第二种语言并更改html页面时,它会返回到第一种语言(本例中为西班牙语);选择后,如何在所有html中保留第二种语言
提前感谢,方法1: 您可以使用来持久化语言值
$('[lang="en"]').hide();
$('.language').click(function() {
$('[lang="es"]').toggle();
$('[lang="en"]').toggle();
if ($.cookie('lang') === 'en') {
$.cookie('lang', 'es', { expires: 7 });
} else {
$.cookie('lang', 'en', { expires: 7 });
}
});
然后运行下面的代码块,检查页面加载时是否有任何lang
值:
if ($.cookie('lang')) {
var lang = $.cookie('lang');
document.documentElement.setAttribute('lang', lang);
} else {
document.documentElement.setAttribute('lang', 'en');
方法2:
使用本地存储API解决此问题:
<html>
<head>
</head>
<body>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" id="dropdown06" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span lang="es">Idioma</span>
<span lang="en">Language</span>
</a>
<div class="dropdown-menu" aria-labelledby="dropdown06">
<a class="dropdown-item coll-navbar language">
<span lang="es">English</span>
<span lang="en">Español</span>
</a>
</div>
</li>
<div class="title col-12 col-md-8">
<h2 class="align-center" lang="es"><strong>
Costura</strong></h2>
<h2 class="align-center" lang="en"><strong>
Sewing</strong></h2>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script type="text/javascript">
var lang = localStorage.getItem("lang");
if (lang){
if (lang == "en"){
$('[lang="en"]').show();
$('[lang="es"]').hide();
}else{
$('[lang="es"]').show();
$('[lang="en"]').hide();
}
}
$('.language').click(function() {
$('[lang="es"]').toggle();
if (lang === 'en') {
localStorage.setItem('lang', 'en');
$('[lang="en"]').show();
$('[lang="es"]').hide();
} else {
localStorage.setItem('lang', 'es');
$('[lang="es"]').show();
$('[lang="en"]').hide();
}
});
</script>
</body>
</html>
习语
语言
英语
西班牙人
肋骨
缝纫
var lang=localStorage.getItem(“lang”);
如果(朗){
如果(lang==“en”){
$('[lang=“en”]')。show();
$('[lang=“es”]')。隐藏();
}否则{
$('[lang=“es”]')。show();
$('[lang=“en”]')。隐藏();
}
}
$('.language')。单击(函数(){
$('[lang=“es”]')。toggle();
如果(lang=='en'){
setItem('lang','en');
$('[lang=“en”]')。show();
$('[lang=“es”]')。隐藏();
}否则{
setItem('lang','es');
$('[lang=“es”]')。show();
$('[lang=“en”]')。隐藏();
}
});
这是我得出的解决方案,主要基于@HarshanaSerasinghe第二个答案:
<script type="text/javascript">
var lang = localStorage.getItem("lang");
if (lang) {
if (lang == "en") {
$('[lang="en"]').show();
$('[lang="es"]').hide();
} else {
$('[lang="es"]').show();
$('[lang="en"]').hide();
}
} else {
$('[lang="en"]').hide();
localStorage.setItem('lang', 'es');
};
$('.language').click(function() {
$('[lang="es"]').toggle();
$('[lang="en"]').toggle();
if (lang === 'en') {
localStorage.setItem('lang', 'es');
} else {
localStorage.setItem('lang', 'en');
}
});
</script>
var lang=localStorage.getItem(“lang”);
如果(朗){
如果(lang==“en”){
$('[lang=“en”]')。show();
$('[lang=“es”]')。隐藏();
}否则{
$('[lang=“es”]')。show();
$('[lang=“en”]')。隐藏();
}
}否则{
$('[lang=“en”]')。隐藏();
setItem('lang','es');
};
$('.language')。单击(函数(){
$('[lang=“es”]')。toggle();
$('[lang=“en”]')。toggle();
如果(lang=='en'){
setItem('lang','es');
}否则{
setItem('lang','en');
}
});
如果没有单击.language
,则lang
中没有任何值,因此,当我加载站点时,出现了两种语言,我通过添加一个else子句隐藏一种语言并为lang
变量设置一个值来解决这个问题。
onclick
,首先我切换了两种语言,然后我相应地修改了lang
中的值,为什么不在URL中使用查询参数呢?通过以下示例,您可以通过JavaScript访问参数:我还应该补充一点,您使用Node.js对其进行标记,但您的代码是jQuery。你是在使用Node还是只是制作一个普通的HTML站点,然后上传到web服务器上?谢谢Tony Drummond,我把标签改成了jQuery,我正在制作一个普通的HTML站点,然后上传到web服务器上。如果你只是上传普通的HTML页面,那么这个站点一定很小。请记住,您还必须更改每个链接。我想您可以编写一个简单的jQuery函数,将单击事件添加到所有链接$(“a”)。单击(函数(e)…)然后执行e.preventDefault(),获取URL并通过JavaScript进行修改,然后执行window.location.replace(URL)。。。导航到页面。谢谢,我下载了jquery.cookie.js,在jquery库之后添加了引用,修改了您编写的第一部分,但当页面加载时,我无法运行第二部分(我在head中尝试了一个函数,在正文末尾的所有js引用之后,在单独的js文件中…),你能告诉我如何运行它吗?我已经编辑了答案并添加了一个新方法。你也可以使用第二种方法。谢谢@Harshana,我使用你的第二种方法来找到我发布的解决方案。
<script type="text/javascript">
var lang = localStorage.getItem("lang");
if (lang) {
if (lang == "en") {
$('[lang="en"]').show();
$('[lang="es"]').hide();
} else {
$('[lang="es"]').show();
$('[lang="en"]').hide();
}
} else {
$('[lang="en"]').hide();
localStorage.setItem('lang', 'es');
};
$('.language').click(function() {
$('[lang="es"]').toggle();
$('[lang="en"]').toggle();
if (lang === 'en') {
localStorage.setItem('lang', 'es');
} else {
localStorage.setItem('lang', 'en');
}
});
</script>