Umiędzynarodowienie Django jest bardzo miłe (oparte na gettext, LocaleMiddleware), ale jaki jest właściwy sposób tłumaczenia nazwy modelu i atrybutów dla stron administracyjnych? Nie mogę znaleźć nic na ten temat w dokumentacji:Internacjonalizacja Django dla stron administracyjnych - przetłumacz nazwy modelu i atrybuty
- http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/
- http://www.djangobook.com/en/2.0/chapter19/
chciałbym mieć "Выберите заказ для изменения" zamiast "Выберите celu для изменения". Uwaga: "zamówienie" nie jest tłumaczone.
Najpierw zdefiniowałem model, aktywowałem USE_I18N = True
w settings.py, uruchom django-admin makemessages -l ru
. Dla nazw modeli i atrybutów domyślnie nie są tworzone żadne wpisy.
grepping w kodzie źródłowym Django znalazłem:
$ ack "Select %s to change"
contrib/admin/views/main.py
70: self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s to change') % force_unicode(self.opts.verbose_name))
Więc nieruchomość meta verbose_name
wydaje się odgrywać pewną rolę. Próbowaliśmy go używać:
class Order(models.Model):
subject = models.CharField(max_length=150)
description = models.TextField()
class Meta:
verbose_name = _('order')
Teraz aktualizowane po
plik zawiera msgid 'order'
które mogą być tłumaczone. Więc umieściłem tłumaczenie. Niestety uruchomienie stron administracyjnych pokazuje tę samą mieszankę "Выберите order для изменения".
Aktualnie używam Django 1.1.1. Czy ktoś może wskazać mi odpowiednią dokumentację? Bo google nie może. ;-) W tym czasie będę kopać głębiej w kodzie źródłowym Django ...
Przepraszamy, ale po aktualizacji pliku .po uruchomiłeś ./manage.py makemessages, aby zaktualizować plik .mo? –
'makemessages' aktualizuje tylko pliki po. Myślę, że masz na myśli 'django-admin compilemessages' - dziękuję za twoją podpowiedź! Myślałam, ponieważ Python jest dynamiczny język, pliki tłumaczeniowe nie skompilowany, w przeciwieństwie do C Niestety moje rozwiązanie nie zadziała dostarczając tłumaczenie mieszany (języki są mieszane w jednym zdaniu). W przypadku nazwy modelu używane jest ustawienie LANGUAGE_CODE projektu. Język dla pozostałej wiadomości jest określony przez agenta użytkownika ("Accept-Languages"). Będę eksperymentować z leniwym tłumaczeniem i powiedz, czy działa . – geekQ