我知道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