2017-02-06 93 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) 

所以在運行服務器之前,我創建了幾個類別,如'電子'。

我應該怎麼做才能讓名字'電子'翻譯成SK語言的'Elektronika'?

+0

這是[SO回答](http://stackoverflow.com/a/2030653/2689986),回答你的問題? –

+0

你的意思是你想翻譯用戶輸入的輸入?.. – Sayse

+0

@AshishNitinPatil它似乎很好,我會嘗試它。 –

回答

0

我假設你把from django.utils.translation import ugettext_lazy as _放在models.py中。接下來要做的是設置語言和區域設置到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.template.context_processors.i18n',到您的context_processors在settings.py。如果你這樣做了,你所要做的就是在終端中運行以下命令;

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

當你這樣做時,django會創建一個名爲locate到您的項目目錄中的文件夾。在語言環境目錄中,您將看到應用makemessages的語言代碼。 enter image description here

在裏面你可以編輯django.po文件。 django.po文件將如下所示。

msgid "Content" 
msgstr "İçerik" 

後你翻譯的 「內容」 到 「İçerik」(土耳其),你應該再做一次makemessagescompilemessages。之後,只要django在你的網站語言爲土耳其語的情況下(在本例中)看到「內容」,它就會以「İçerik」的形式呈現給你。