6

我在使用django的gettext翻譯字符串(在管理員中)時遇到了一個奇怪的問題:本地運行開發服務器所有翻譯都在管理員中正確顯示,但是當項目部署生產服務器某些字符串根本不被翻譯。我無法確定任何系統背後的字符串受到影響,哪些不是!gettext翻譯在生產系統上不起作用

給你一個印象,例如。模型的定義如下:

class Company(models.Model): 

    .... 

    class Meta: 
     verbose_name = _('Company Profile') 
     verbose_name_plural = _('Company Profiles') 

使用開發服務器模型的名稱在管理不同的語言顯示正確,生產服務器不在!這會影響某些機型上,別人不...這是推動我真的堅果,因爲我幾乎沒有對如何調試這樣的想法......

+1

也許'ugettext_lazy'與'ugettext'? – Wolph 2010-11-05 00:32:29

回答

7

幾個可能性:

  • 生產服務器不會看到編譯消息
  • 未轉換的郵件標記爲fuzzy
  • _()解析爲ugettext代替ugettext_lazy
+0

他們沒有被標記爲模糊,但你可以說出爲什麼服務器不會看到編譯的消息(他們在應用程序目錄中)的一些原因。還沒有讀過使用'ugettext'而不是'ugettext_lazy'的問題是什麼? – 2010-11-05 01:21:56

+1

好的。現在解決它。我從一個使用'ugettext'的模型繼承,而孩子使用'ugettext_lazy',所以我得到了這個奇怪的混合!謝謝! – 2010-11-05 02:19:01

+0

我的意思是可能是編譯的消息沒有被提交給服務器。沒有什麼不可思議的,只是有時會發生這種微不足道的事情。 – 2010-11-05 12:03:49

3

我作爲imilar問題,從什麼托馬斯·思霖懇指出,除了我不得不做以下修改:

settings.py中

LOCALE_PATHS = (
    "/path/to/your/project/locale", 
) 

記住最後的斜線,並確保該目錄結構看起來是這樣的:

project 
    your_app 
    your_other_app 
    locale 
     en_US 
      LC_MESSAGES 
     sv_SE 
      LC_MESSAGES