[英]Understanding Django localization in templates
我試圖在我的網站中使用兩種語言,我的母語和英語。 我遵循了django文檔,從那里復制了代碼。 我已經設置了語言環境文件夾和文件。
當我打開網站時,它已經將默認語言設置為斯洛文尼亞,應該改為英語,但我不知道為什么。 打開網站時, main.html
如下所示:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/html"
xmlns:height="http://www.w3.org/1999/xhtml"
lang="sl" >
如果我理解正確,那么lang="sl"
應該是lang="en"
,但我不知道為什么它默認為Slovene。 即使使用表單,它也會顯示兩個選項(英語和斯洛文尼亞),但是當我選擇英語並單擊“轉到”時,它只會刷新頁面,但不會更改語言。 當前的語言(斯洛文尼亞語)仍然保持選中狀態,因此我猜測某個地方沒有選擇正確的語言。
我也對為什么啟動服務器時默認不使用英語感到困惑。 誰能提供一些見識或向我指出正確的方向?
settings.py
LANGUAGE_CODE = 'en-gb'
TIME_ZONE = 'Europe/Ljubljana'
USE_I18N = True
USE_L10N = True
USE_TZ = True
LOCALE_PATHS = [
os.path.join(BASE_DIR, "locale"),
]
ugettext = lambda s: s
LANGUAGES = (
('en', ugettext('English')),
('sl', ugettext('Slovenian')),
)
main.html
{% load i18n staticfiles bootstrap3 %}
{% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %}
<html xmlns="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/html"
xmlns:height="http://www.w3.org/1999/xhtml"
lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
...
<form action="{% url 'set_language' %}" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<select name="language">
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}" {% if lang.0 == LANGUAGE_CODE %} selected="selected"{% endif %}>
{{ lang.1 }} ({{ lang.0 }})
</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
項目/ urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^accounts/', include('allauth.urls')),
url(r'^i18n/', include('django.conf.urls.i18n')),
url(r'^l10n/', JavaScriptCatalog, js_info_dict),
url(r'^$', index, name="index"),
]
site / urls.py
from django.conf.urls import include, url
from django.views.i18n import JavaScriptCatalog
from . import views
urlpatterns = [
url(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),
...
]
我弄清楚了為什么它拒絕正確地切換語言。 在用戶模型中,我已經定義了語言,並且將其設置為我的母語,而不是瀏覽器的默認語言。
當我將語言更改為瀏覽器默認語言時,本地化工作正常。 不確定Django如何檢查本地化設置,但我只是假定它首先查看cookie,然后再查看數據庫。 猜猜我錯了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.