0

と に切り替えることはできますがruenに切り替えようhyとしても何も起こりません。

設定.py

...
LANGUAGE_CODE = 'en'

LANGUAGES = [
    ('en',_('English')),
    ('ru', _(u'Russian')),
    ('hy', _(u'Armenian')),
]

sidebar.html

...
<div id="sidebar-item-news">
        <form action="/i18n/setlang/" method="post" id="language-select">
            <input name="next" type="hidden" value="/" />
            {% csrf_token %}
            <select name="language">
                {% for lang in LANGUAGES %}
                    <option value="{{ lang.0 }}">{{ lang.1 }}</option>
                {% endfor %}
            </select>
            <input type="submit" value="Go" />
        </form>
</div>

urls.py

# Internationalization
    (r'^i18n/', include('django.conf.urls.i18n')),

いくつかのデバッグの後、 request.session['django_language'] がruandのみに変更されることがわかりましたen:

Current language is ru
[19/May/2012 22:51:55] "GET / HTTP/1.1" 200 13357
[19/May/2012 22:51:56] "POST /i18n/setlang/ HTTP/1.1" 302 0
Current language is ru
[19/May/2012 22:51:56] "GET / HTTP/1.1" 200 13357

すべての翻訳ファイルを/locale/hyおよびでコンパイルしました/locale/ru

ホームビューtranslation.activate('hy')に配置すると完全に機能しますが、APIでこれを実行しようとすると

def api(request, type):
    if request.method == 'POST':
        if type == 'daytime':
            request.session['daytime'] = request.POST['daytime']
            return HttpResponse(request.session['daytime'])

        if type == 'language':
            request.session['custom_language'] = True
            request.session['django_language'] = request.POST['language']
            translation.activate(request.session['django_language'] )
            return HttpResponse(request.session['django_language'])
        raise Http404
    else:
        raise Http404

フォームとして失敗しますi18n/setlang

これを修正する方法は?

UPD Django はアルメニア語をサポートしていないようです。(/django/conf/locale/ に 'hy' はありません) この言語をどのように扱うべきですか?

4

1 に答える 1

1

i18n ドキュメントのロケール制限セクションを参照してください。Django を少し変更する必要があるようです。

于 2012-05-20T16:17:08.620 に答える