代码之家  ›  专栏  ›  技术社区  ›  HenryM

Django语言国际化-我无法让翻译工作

  •  0
  • HenryM  · 技术社区  · 6 年前

    我正在尝试找出如何根据用户选择,让不同的语言在Django中显示出来。我不知道我错过了什么,所以我想知道是否有人能解释我哪里出错了。

    网址.py

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^i18n/', include('django.conf.urls.i18n')),
    ]
    
    urlpatterns += i18n_patterns(
        url(r'^', TemplateView.as_view(template_name="lang_test/index.html"))
    )
    

    我补充说:

    MIDDLEWARE = [
        ...
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.locale.LocaleMiddleware',
        'django.middleware.common.CommonMiddleware',
    ]
    from django.utils.translation import ugettext_lazy as _
    LANGUAGES = (
        ('en', _('English')),
        ('fr', _('French')),
        ('el', _('Greek')),
    )
    LOCALE_PATHS = (
        os.path.join(BASE_DIR, 'locale'),
    )
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    

    我已经跑了

    manage.py makemessages -fr
    manage.py makemessages -el
    

    添加了我运行过的消息

    manage.py compilemessages
    

    然后我得到了这个简单的模板,我希望看到3种不同的语言显示,因为我已经设置了语言。

    {% load i18n %}
    
    <html>
        <head>
    
        </head>
        <body>
            {{ LANGUAGE_CODE|language_name }}
            <h1>{% trans "Welcome to my website" %}</h1>
    
            {% with 'fr' as LANGUAGE_CODE %}
                {{ LANGUAGE_CODE|language_name }}
                <!-- Current language: {{ LANGUAGE_CODE }} -->
                <h1>{% trans "Welcome to my website" %}</h1>
            {% endwith %}
    
            {% with 'el' as LANGUAGE_CODE %}
                {{ LANGUAGE_CODE|language_name }}
                <!-- Current language: {{ LANGUAGE_CODE }} -->
                <h1>{% trans "Welcome to my website" %}</h1>
            {% endwith  %}
    
        </body>
    
    </html>
    
    The output is
    English
    Welcome to my website
    French
    Welcome to my website
    Greek
    Welcome to my website
    

    很明显,这不是测试我是否正确设置的方法。如何测试翻译是否正确?

    1 回复  |  直到 6 年前
        1
  •  1
  •   nik_m    6 年前

    this language 模板标记:

    {% language 'en' %}
         {% get_current_language as LANGUAGE_CODE %}
         <!-- Current language: {{ LANGUAGE_CODE }} -->
         <h1>{% trans "Welcome to my website" %}</h1>
    {% endlanguage %}
    
    {% language 'el' %}
         {% get_current_language as LANGUAGE_CODE %}
         <!-- Current language: {{ LANGUAGE_CODE }} -->
         <h1>{% trans "Welcome to my website" %}</h1>
    {% endlanguage %}