1

問題を示すために小さなデモを作成しました。

イギリス英語をクリックすると、それに応じて日付と時刻の両方の形式がどのように変化するかを確認できます。これは素晴らしいことです。

[追加] をクリックすると、現在の日付と時刻の両方がどのように入力されているかがわかります。ただし、選択された英国の言語ではなく、米国の日付形式が引き続き使用されます。

これを修正する唯一の方法は、settings.pyを変更LANGUAGE_CODE = 'en-us'することです。LANGUAGE_CODE = 'en-gb'このアプローチは、もはや動的ではなく、あるグループを他のグループよりも優先するため、明らかに役に立ちません。選択した言語の優先度が高いため、これは最後の優先度にする必要があります。

ドキュメントに記載されているように、とformats.pyの日付と時刻の形式をオーバーライドするカスタムを作成したので、他に何ができるかわかりません。enen_GB

私のドロップボックスから私のデモ (22 kb) をダウンロードしてください。

私は何かを見落としましたか、それともこれは Django のバグですか?

4

1 に答える 1

1

修理済み!!こんにちはケイブ、あなたの問題をしばらく調べた後、ついに解決策を見つけました。

  • まず、 activate( language_code ) を使用して新しい言語に切り替える必要があります。
  • フィールドとウィジェットの両方をローカライズ済みとして設定する必要があります。

サンプル スイッチ言語:

def display_current_language(request):
    if request.LANGUAGE_CODE == 'en-gb':
        lang = "You prefer to read British English {code}.".format(
                  code=request.LANGUAGE_CODE )
        activate(request.LANGUAGE_CODE)
    elif request.LANGUAGE_CODE == 'en-us':
        lang = "You prefer to read American English {code}.".format(
                  code=request.LANGUAGE_CODE )
        activate('en-us')    
    else:
        lang = "You prefer to read Deutsch {code}.".format( 
                   code=request.LANGUAGE_CODE )
        activate(request.LANGUAGE_CODE)    
    return lang

モデル (company) とフィールド ( date ) を使用したサンプル:

class CompanyForm(ModelForm):        
    class Meta:
        model = Company 

    def __init__(self, *args, **kwargs):
        super(CompanyForm, self).__init__(*args, **kwargs)
        self.fields['date'].localize = True
        self.fields['date'].widget.is_localized = True
于 2012-08-15T20:30:24.497 に答える