【发布时间】:2014-12-30 22:06:53
【问题描述】:
我了解 Django 在服务器端呈现模板。浏览器接收 HTML 内容,然后可以使用 JavaScript 对其进行操作。
我有一些 JavaScript 代码来操作 Django 语言标签,这些标签很难以当前的形式维护,所以我试图用一种更好的方法来编码它,但我想不出这样的方法,需要一些帮助。
这是我的代码:
dynamic_language_code 是两个字母的代码,即:en、fr、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 返回正确的语言版本?
编辑
我想摆脱 if else 条件,只需使用动态语言标签将变量分配给语言代码。不知道我怎么能做到这一点,或者即使这可以做到。例如:
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 或服务器视图只决定使用哪种语言。例如,用户切换语言后,您可以刷新页面并通过请求头将首选语言发送到服务器。服务器仅呈现首选语言的翻译文本。这个thread 谈到了 Django 端的切换语言。
-
ZZY,我正在使用 JavaScript 来避免页面刷新。我绝对不想刷新页面。 JS用于动态显示timspan,在数据发送到数据库之前。
标签: javascript python django django-templates