2010-05-25 12 views
8

Oceniamy Babel 0.9.5 [1] pod Windows do użytku z Pythonem 2.6 i mamy następujące pytania, na które nie byliśmy w stanie odpowiedzieć, czytając dokumentację lub google.Internacjonalizacja aplikacji Python 2.6 przez Babel

1) Chciałbym użyć _ podobny skrót dla ungettext. Czy istnieje konsens dotyczący tego, czy należy do tego użyć n_ lub N_?

n_ nie działa. Babel nie wyodrębnia tekstu.

N_ wydaje się działać częściowo. Babel fragmenty tekstu jak to robi dla gettext, ale nie formatować za ngettext (brak liczby mnogiej argument i msgstr [N].)

2) Czy istnieje sposób, aby ustawić początkowe pola msgstr jak następujące po utworzeniu pliku POT ?

Podejrzewam, że można to zrobić za pomocą plików cfg Babel, ale nie udało mi się znaleźć dokumentacji w formacie pliku cfg Babel.

"Project-Id-Version: Wersja PROJECT \ n" "Język-Team: pl \ n"

3) Czy istnieje sposób, aby zachować 'przestarzałe' msgstr/msgstr w naszym plików PO? Kiedy używam polecenia aktualizacji Babel, nowo utworzone przestarzałe ciągi są oznaczone prefiksami # ~, ale istniejące przestarzałe ciągi komunikatów zostają usunięte.

Dzięki Malcolm

[1] http://babel.edgewall.org/

+0

Dlaczego nie chcesz używać tylko narzędzi GNU gettext przeniesionych do win32 w celu wyodrębnienia wiadomości? http://gnuwin32.sf.net – bialix

+1

Cześć Bializ: Instalacja GNU gettext utlities nie jest wygodna dla naszych klientów, którzy utrzymują własne pliki PO. Kolejną zaletą narzędzi Babel jest to, że domyślnie pracują w trybie UTF-8. Mieliśmy pewne problemy, aby narzędzia GNU gettext działały konsekwentnie (domyślnie ASCIII). – Malcolm

Odpowiedz

8

Domyślnie pybabel extract rozpoznaje następujące słowa kluczowe: _, gettext, ngettext, ugettext, ungettext, dgettext, dngettext, N_. Użyj -k option, aby dodać inne. N_ jest często używany do NULL-translations (zwanych również tłumaczeniami odroczonymi).

Aktualizacja: Opcja -k może wyświetlać argumenty funkcji do umieszczenia w katalogu. Tak więc, jeśli używasz n_ = ngettext spróbuj pybabel extract -k n_:1,2 ....

+0

Cześć Denis: Dziękuję za pomoc.Jestem świadomy opcji -k, ale nie mogę znaleźć sposobu odwzorowania N_ lub n_ na funkcję ngettext, aby parametry tej funkcji zostały przetworzone jako liczby mnogie (tworzenie msgid_plural, msgid [0] itd.) W porównaniu do aliasu z gettext. Doceniam odniesienie do użycia N_ jako tłumaczenia NULL. Wydaje się, że jest to składnia specyficzna dla Pythona (?) W przeciwieństwie do innych implementacji gettext języka, które obsługują N_ lub n_ jako aliasy ngettext. – Malcolm

+0

Witaj Denis: Twoja technika "-k n_: 1,2" działa doskonale - dziękuję bardzo !! W przypadku archiwów: Postanowiliśmy użyć N_ vs. n_, aby śledzić wygląd podobny do standardu branżowego defacto dla skrótu ngettext. – Malcolm

1

Aby odpowiedzieć na pytanie 2):

Jeśli prowadzisz Babel poprzez pybabel extract, można ustawić Project-Id-Version pomocą opcji --project i --version.

Jeśli uruchomisz Babel przez setup.py extract_messages, wówczas Project-Id-Version pochodzi z dystrybucji (nazwa projektu i wersja w pliku setup.py).

Oba sposoby obsługują również opcje --msgid-bugs-address i --copyright-holder do ustawiania metadanych POT.