преводът на gettext не работи в производствената система

Срещнах странен проблем, когато превеждам низове (в администратора) с помощта на gettext на django: Локално стартиране на сървъра за разработка, всички преводи се показват правилно в администратора, но когато проектът е разгърнат на производствения сървър някои низовете изобщо не се превеждат. Не мога да определя нито една система зад кои низове са засегнати и кои не!

За да ви създаде впечатление, напр. моделът се дефинира като:

class Company(models.Model):

    ....

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

Използвайки dev сървър, името на модела се показва правилно на различни езици в администратора, на производствения сървър не! Това засяга някои модели, други не... Това наистина ме побърква, тъй като едва ли имам идея как да отстранявам грешки в това...


person Bernhard Vallant    schedule 04.11.2010    source източник
comment
Може би ugettext_lazy срещу ugettext?   -  person Wolph    schedule 05.11.2010


Отговори (2)


Няколко възможности:

  • производственият сървър не вижда компилираните съобщения
  • непреведените съобщения са маркирани като fuzzy
  • _() се разрешава до ugettext вместо ugettext_lazy
person Tomasz Zieliński    schedule 05.11.2010
comment
Те не са маркирани като размити, но можете ли да назовете някои причини, поради които сървърът няма да види компилираните съобщения (те са в директориите на приложението). Все още не сте прочели какъв е проблемът с използването на ugettext вместо ugettext_lazy? - person Bernhard Vallant; 05.11.2010
comment
Добре. реши го сега. Наследявах от модел, който използваше ugettext, докато детето използваше ugettext_lazy, така че получих тази странна смес! Благодаря! - person Bernhard Vallant; 05.11.2010
comment
Имах предвид, че може би напр. компилираните съобщения не са ангажирани към сървъра. Нищо магическо, просто понякога се случват такива тривиални неща. - person Tomasz Zieliński; 05.11.2010
comment
@ThomaszZielinski Благодаря! В моя случай бях използвал общ python .gitignore файл, който игнорира *.mo файлове! Такъв глупав проблем :P - person achedeuzot; 20.11.2014
comment
Добър отговор на всякакви възможности. Този отговор от преди 5 години все още може да ми спаси задника. - person Joey; 13.09.2015

Имах подобен проблем и освен това, което посочи Tomasz Zielinski, трябваше да направя следните промени:

в settings.py

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

Запомнете наклонената черта в края и се уверете, че структурата на директорията изглежда нещо като:

project
   your_app
   your_other_app
   locale
      en_US
          LC_MESSAGES
      sv_SE
          LC_MESSAGES
person Joelbitar    schedule 09.01.2011