2017-02-06 5 views
0

Djangoオブジェクトの翻訳が可能ですか?Djangoでオブジェクト属性を変換するには?

私はモデルCategoryProductを持っているとします。ユーザーが新製品を追加するときは、Category個のオブジェクトから選択する必要があります。私はそれらの名前を翻訳したいと思います。

class Category(models.Model): 
    name = models.CharField(max_length=100, verbose_name=_('Category')) 

    def __unicode__(self): 
     return u'{}'.format(self.name) 

    class Meta: 
     verbose_name_plural = _('Categories') 

class Product(models.Model): 
    user = models.ForeignKey(User, verbose_name=_('Company'), related_name='products') 
    name = models.CharField(max_length=200, verbose_name=_('Name'),) 
    category = models.ForeignKey('Category', verbose_name=_('Category'), related_name='products') 

    class Meta: 
     verbose_name = _('Product') 
     verbose_name_plural = _('Products') 

    def __unicode__(self): 
     return u'{}'.format(self.name) 

サーバーを実行する前に、「エレクトロニクス」のようなカテゴリを2つ作成します。

「エレクトロニクス」という名前をSK言語の「Elektronika」という名前に変換するにはどうすればよいですか?

+0

この[はい回答](http://stackoverflow.com/a/2030653/2689986)は、あなたの質問に答えますか? –

+0

あなたが入力した入力を翻訳したいのですか? – Sayse

+0

@AshishNitinPatilそれは良いようです、私はそれを試みます。 –

答えて

0

from django.utils.translation import ugettext_lazy as _をmodels.pyに入れるとします。次にやるべきことは、あなたがsettings.pyであなたのcontext_processorsに'django.template.context_processors.i18n',を置く必要がありますその後settings.py

import os 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
LANGUAGES = (
    ('en', ugettext('English')), 
    ('tr', ugettext('Turkish')), 
    ('fr', ugettext('French')), 
) 
LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'), 

) 

に言語とロケール設定が設定されています。そのすべてを行うならば、ターミナルで以下のコマンドを実行するだけです。

django-admin makemessages --locale=tr 
django-admin compilemessages --locale=tr 

これを行うと、djangoはプロジェクトディレクトリにlocateという名前のフォルダを作成します。ロケールディレクトリの内側には、マックメッセージを適用する言語コードが表示されます。 enter image description here

その中でdjango.poファイルを編集できます。 django.poファイルは次のようになります。

msgid "Content" 
msgstr "İçerik" 

あなたは(トルコ語) "İçerik" への "コンテンツ" を翻訳した後、再度makemessagescompilemessagesを行う必要があります。その後、あなたのサイトの言語がトルコ語(この例では)の間にdjangoが "Content"を見ると、それはあなたに "İçerik"としてレンダリングされます。

関連する問題