我知道Django在服务器端呈现模板。浏览器接收HTML内容,然后可以使用JavaScript来操作。Django模板 - 服务器端django标签的客户端操纵
我有一些JavaScript代码来操纵Django语言标记,这将难以维持其目前的形式,所以我想用更好的方式来编码它,但我想不出这样的方式和需要一些帮助。
这里是我的代码:
的dynamic_language_code是两个字母组成的代码,即:英语,法语,BG,RU,ES等
function dateCalculation(dynamic_language_code) {
var c = dynamic_language_code;
//arabic
if (dynamic_language_code == 'ar'){
var_month = "{% language 'ar' %}{% trans 'month' %}{% endlanguage %}";
var_months = "{% language 'ar' %}{% trans 'months' %}{% endlanguage %}";
var_year = "{% language 'ar' %}{% trans 'year' %}{% endlanguage %}";
var_years = "{% language 'ar' %}{% trans 'years' %}{% endlanguage %}";
//bulgarian.
} else if (dynamic_language_code == 'bg'){
var_month = "{% language 'bg' %}{% trans 'month' %}{% endlanguage %}";
var_months = "{% language 'bg' %}{% trans 'months' %}{% endlanguage %}";
var_year = "{% language 'bg' %}{% trans 'year' %}{% endlanguage %}";
var_years = "{% language 'bg' %}{% trans 'years' %}{% endlanguage %}";
}
........
many more else if conditions
........
//default value of English.
} else {
var_month = "{% language 'en' %}{% trans 'month' %}{% endlanguage %}";
var_months = "{% language 'en' %}{% trans 'months' %}{% endlanguage %}";
var_year = "{% language 'en' %}{% trans 'year' %}{% endlanguage %}";
var_years = "{% language 'en' %}{% trans 'years' %}{% endlanguage %}";
}
}
代码应该动态改变的语言月,年份根据传入的dynamic_language_code值。实际上应该不需要if else语句,只需使用传入的dynamic_language_code值来分配var_month,var_months,var_year和var_years值即可。
如何构造上面的代码以摆脱if else条件,并仍然使用传入的dynamic_language_code返回正确的语言版本?
编辑
我想摆脱的,如果其他条件,只是分配使用动态语言标签的变量的语言代码。不知道我该怎么做,或者即使这可以做到。例如:
var_month = "{% language dynamic_language_code %}{% trans 'month' %}{% endlanguage %}";
var_months = "{% language dynamic_language_code %}{% trans 'months' %}{% endlanguage %}";
var_year = "{% language dynamic_language_code %}{% trans 'year' %}{% endlanguage %}";
var_years = "{% language dynamic_language_code %}{% trans 'years' %}{% endlanguage %}";
是否有任何理由必须使用JS来翻译单个文本?我认为一个好的设计是将实际的翻译工作留给模板系统,而JS或服务器视图只决定使用哪种语言。例如,在用户切换语言后,您可以刷新页面并通过请求标头将首选语言发送到服务器。服务器仅渲染首选语言的翻译文本。这[线程](http://stackoverflow.com/questions/2336785/set-language-within-a-django-view)谈到在Django方面的切换语言。 – ZZY 2014-11-04 08:19:37
ZZY,我正在使用JavaScript来避免页面刷新。我肯定不希望刷新页面。在数据发送到数据库之前,JS用于动态显示timspan。 – user3354539 2014-11-04 08:26:32