2015-04-07 3 views
0

Я создаю приложение администратора django с функцией перевода нескольких языков. Я проверил с django-transmeta, django-linguo и несколько библиотек. Проблема с указанными выше библиотеками, например, я использую 20 языков и у меня есть модель под названием Продукт и содержит поля. Теперь ситуация, 20 языков * 10 полей = 200 полей будет отображаться в добавить Продукт, отредактируйте Продукт. Это выглядит противно. Есть ли другая альтернатива сделать перевод очень хрустящим и простым?Django Multi Language App

Еще одна вещь, я хочу перевести весь контент на панели администратора, зависит от выбора языка. Например, следующий скриншот дает дополнительную информацию. https://docs.google.com/file/d/0B6j95vYIfu8eem1OdkNVbXNudm8/edit

Спасибо за предварительный ответ !!

+0

Если вы хотите перевести ваши модели на разные языки, вы не можете обойтись без перевода. Я рекомендую вам проверить [Django-Rosetta] (https://github.com/mbi/django-rosetta) - очень полезный инструмент, который помогает при переводе. – AlvaroAV

+0

@ Liarez: Раньше ты использовал? Потому что, я все еще неясен, удовлетворяет ли он моим критериям, которые я упомянул в вопросе. – vamsi

+0

Вам не нужен этот пакет для перевода, этот пакет предоставляет вам полезную страницу администрирования для создания ваших переводов, но да, вы должны перевести ее самостоятельно – AlvaroAV

ответ

0

О беспорядке в приложении «добавить продукт» админы страниц вызваны дополнительными полями для перевода, я думаю, вы можете решить с Джанго-modeltranslation и bootstrap-modeltranslation.

Пакет самозагрузки-modeltranslation сделан для Джанго-админ-бутстрапированная, и это требует. Но взгляните на его код. Его подход к проблеме заключается в использовании javascript для администратора django для организации дополнительных полей перевода на вкладках. Возможно, вы сможете адаптировать это решение к вашим потребностям.

Для перевода шаблонов, то лучше использовать GetText подход и инструменты, такие как Джанго-Rosetta, Джанго-перевод-менеджер. Вы можете получить дополнительную информацию о функциях интернационализации Django по адресу django docs.

0

Шаг 1: Gettext

Move так же, как вы можете GetText. Наличие дубликатов данных из ваших различных продуктов в вашем файле PO сделает ваше приложение более быстрым, сухим и легким для перевода.

Шаг 2: Джанго Администратор Редактировать/Добавить

Настройте Джанго Администратор с вашими потребностями.

Предлагаю вам создать набор полей для каждого языка.

class FlatPageAdmin(admin.ModelAdmin): 
    fieldsets = (
     ('Advanced options', { 
      'classes': ('collapse',), 
      'fields': ('product_name', 'product_description'), 
     }), 
    ) 

Это позволит добавить продукт и изменить продукт намного чище. В качестве альтернативы вы также можете использовать вкладку для каждого языка вместо набора полей ModelAdmin.

См https://pypi.python.org/pypi/django-tabbed-admin/0.0.3

Шаг 3: Сделайте широкие изменений в поля виджетов

Джанго-Transmeta позволяет изменять виджет все поля соответствующего языка сразу. См. Документацию.

from transmeta import canonical_fieldname 

class BookAdmin(admin.ModelAdmin): 
    def formfield_for_dbfield(self, db_field, **kwargs): 
     field = super(BookAdmin, self).formfield_for_dbfield(db_field, **kwargs) 
     db_fieldname = canonical_fieldname(db_field) 
     if db_fieldname == 'description': 
      # this applies to all description_* fields 
      field.widget = MyCustomWidget() 
     elif field.name == 'body_es': 
      # this applies only to body_es field 
      field.widget = MyCustomWidget() 
     return field