在UI中隐藏/显示lang按钮

时间:2015-12-22 15:45:27

标签: javascript jquery button show-hide

我有一个应用程序,我在页面翻译的顶部有一个按钮(英语/西班牙语)&我根据加载的页面隐藏它们。默认情况下,英语加载,所以西班牙语按钮位于顶部,因此用户可以单击它们,因此加载西班牙语版本(我们现在隐藏西班牙语按钮并显示英语)。

问题是当用户第一次加载页面,然后选择西班牙语,然后离开,然后重新加载页面,西班牙语版本关闭,但按钮也是西班牙语。从技术上讲,它应该是英语。这是因为第一次页面加载变量的值是未定义的,它被定义为英语,我们显示西班牙语按钮。无论如何我们可以通过调整来正确显示按钮吗?我也没有明确地在cookie中存储任何内容。

代码

function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(window.location.search.substring(1)),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : sParameterName[1];
        }
    }
}

function pageLoadConditions() {

    var lang = getUrlParameter('lang'); 

    alert ("lang: " +lang);
    if(typeof lang=="undefined"){
        lang='en';
        alert ("lang 2: " +lang);
    }
    alert ("lang 3: " +lang);
    if(lang){
        if(lang==="es"){
            $('#lang_pref').val(lang);      
            $("#lang_ess").hide();
            $("#lang_enn").show();
        }else{
            $('#lang_pref').val(lang);      
            $("#lang_enn").hide();
            $("#lang_ess").show();          
        }
    }else{
        $('#lang_pref').val("en");      
        $("#lang_enn").hide();
        $("#lang_ess").show();
    }

}
    window.onload = pageLoadConditions; 

感谢。

2 个答案:

答案 0 :(得分:0)

感谢Maulzal,我能够实现这一目标。

我所要做的就是在jsp中添加if条件,如下所示

<c:if test="${pageContext.response.locale != &quot;es&quot;}">
    Spanish button
</c:if>
<c:if test="${pageContext.response.locale != &quot;en&quot;}">
    Eng button
</c:if>

我还注释掉了与此相关的所有javascript函数。 感谢。

答案 1 :(得分:0)

你所做的一定会奏效,但这不是进行国际化的“正确方法”。 JSP中有本机支持,用于定义包含id-&gt;语言特定字符串映射的资源包。在JSP中正确设置字符串ID后,添加另一种语言并不意味着您需要遍历整个应用程序并找到所有字符串并在if-else阶梯中添加另一个梯级,而只需添加另一个id-&gt ;语言映射文件。

但是,如果你只支持两种语言,那么你所做的就可以了。

How to internationalize a Java web application?