1

この件に関して私が見つけることができるすべての推奨事項を試してみた後、私の翻訳はまだまったく機能しません.

/settings.py ファイル

# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'

LOCALE_PATHS = (
    '/Users/samb/Projects/transtest/locale'
)

# Custom Languages
ugettext = lambda s: s

LANGUAGES = (
    ('de', ugettext('German')),
    ('en', ugettext('English')),
    ('fr', ugettext('French')),
    ('fr-CA', ugettext('French Canadian')),
)

SITE_ID = 1

# If you set this to False, Django will make some optimizations so as not        
# to load the internationalization machinery.
USE_I18N = True                                                                  

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

view.py

from django.shortcuts import render_to_response
from django.template import RequestContext


def trans(request):
    return render_to_response('index.html', context_instance=RequestContext(request))

私のテンプレートファイル (index.html)

{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
<html>
    <head>
        <title>translations</title>
    </head>
    <body>
        {% for l in LANGUAGES %}
            {{ l }}<br />
        {% endfor %}
        {{ LANGUAGE_CODE }}<br />
        {% trans "Welcome to my site" %}
    </body>
</html>

/Users/samb/Projects/transtest/locale/fr/LC_MESSAGES にある po ファイル (コンパイル済み)

#: transtest/templates/index.html:13
msgid "Welcome to my site"
msgstr "Please work"

「私のサイトへようこそ」が機能しません。テンプレートの LANGUAGES および LANGUAGE_CODE 変数はすべて機能しています ('Accept_language: fr_CA' でない限り)。

このテーマに関する他のすべての投稿を読んでも同じ問題が発生した後、私はばかげた間違いを犯したか、重要なステップを完全に見逃しているように感じます. 何かご意見は?

更新:これは私が翻訳をテストする方法です:

telnet localhost 8000
Connected to localhost.
Escape character is '^]'.
GET /
Accept_language: fr
<html>
    <head>
        <title>Translations</title>
    </head>
    <body>

            (&#39;de&#39;, u&#39;Allemand&#39;)<br />

            (&#39;en&#39;, u&#39;Anglais&#39;)<br />

            (&#39;fr&#39;, u&#39;Fran\xe7ais&#39;)<br />

            (&#39;fr-CA&#39;, u&#39;French Canadian&#39;)<br />

        fr<br />
        Welcome to my site
    </body>
</html>
Connection closed by foreign host.

言語が翻訳されていることに気付きましたが、「私のサイトへようこそ」は翻訳されていません。

4

1 に答える 1

1

ドキュメントでは、 LocaleMiddleware ...

... LocaleMiddleware はセッション データを使用するため、SessionMiddleware の後に来る必要があります。CommonMiddleware は、要求された URL を解決するためにアクティブ化された言語を必要とするため、CommonMiddleware の前に来る必要があります。

の定義でこれを考慮に入れると、おそらく役立つでしょうMIDDLEWARE_CLASSES

于 2012-12-14T09:45:25.020 に答える