簡體   English   中英

了解模板中的Django本地化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM