2017-12-30 31 views
1

私はオープンソースのeコマースサイトを構築する方法を学びたいと思っています。この目的のために、私は 'Django'フレームワークを 'Oscar'拡張子で使用しています。'Django-Oscar'を翻訳する

ここではチュートリアルのがあります。ここにはTranslationチュートリアルがあります。私はそれに従った(それには足りないステップがあると言わなければならない)。翻訳したい言語ごとに、次に

mkdir locale i18n 
ln -s $PATH_TO_OSCAR i18n/oscar 

:この部分はページを翻訳するために、あなたは2つのフォルダとシンボリックリンクを作成しなければならない、と述べている

./manage.py makemessages --symlinks --locale=<language code> 

以外にも、正しいのですが、そのそれはファイルをコンパイルしてlocaleフォルダ(.moファイル)の最終的な変換を取得する必要があります。その後、あなたはプロジェクト(またはアプリ)のsettings.pyにtraductionsを含める必要があります。 (プロジェクトのルートディレクトリからの)端末で

  • :これは、以下のコードで行われsettings.pyの追加$ django-admin.py compilemessages
  • LANGUAGES = [ ( 'ド'、_( 'ドイツ'))、 (' en」と、_( '英語'))、 ( 'ES'、_( ')')スペイン語、 ]

注:

これを実行した後、私は自分のサーバーを稼働させ、これら3つの言語のみが選択言語ボックスに表示されますが、ページを翻訳するためにボタンを押して、それは各翻訳請願でこれを取得し、デフォルトの言語(英語を)するたびに返されます。

"POST /i18n/setlang/ HTTP/1.1" 302 0 
"GET/HTTP/1.1" 200 8379 

はどんな私が飛ばしてるステップまたは私が間違ってやっているものはあります?

ありがとうございます。

答えて

1

私は部分的な(ほぼ完全な)解決策を得ています。私が使用したい言語は非常に一般的なので、私はDjango翻訳ミドルウェアをOscarが提供するものを使用せずに直接使用しました。ですから、私の解決策はsettings.pyMIDDLEWARE(またはDjangoのバージョンに応じてMIDDLEWARE_CLASESに)に入れて編集することです.Django internacionalizationミドルウェア:django.middleware.locale.LocaleMiddleware。その後

、なしugettextfrom django.utils.translation import ugettext as _)をインポート、次のように言語を追加して自由に感じる:

LANGUAGES = [ 
    ('es', 'Spanish'), 
    ('de', 'German'), 
    ('en', 'English'), 
    ('pt-br', 'Brazilian'), 
    #... and so on 
] 

このソリューションは、シンボリックリンクまたは追加のフォルダを作成する必要はありません。