i18n

Screenshot Software:
i18n
Szczegóły programowe:
Wersja: 0.1
Filmu: 14 Apr 15
Wywoływacz: Antonio Cuni
Licencja: Wolny
Popularność: 67

Rating: 3.0/5 (Total Votes: 1)

i18n to pakiet, który stara się uprościć przepływ pracy i rozwoju aplikacji umiędzynarodowionych. & Nbsp; Jest cienka otoki wokół istniejących narzędzi, w szczególności gettext i babel.
Podstawowe użycie
# Demo.py
#
z i18n.translator importu Tłumacz
supported_languages ​​= ['it_IT "," fr_FR "," de_DE']
# Włączyć tłumaczenia włoski
tr = Tłumacz ('/ ścieżka / do / root ", supported_languages" it_IT ")
drukuj tr ._ ("Hello world!")
gdzie / ścieżka / do / root / jest w katalogu głównym projektu. Gdy instancja klasy Tłumacz automatycznie tworzy katalog o nazwie / ścieżka / do / root / języków, gdzie przechowywane są tłumaczenia.
wiadomości Wyciąganie
Zanim to tłumaczenie rzeczywistej, trzeba wyodrębnić wiadomości z plików źródłowych, poprzez wywołanie polecenia extract modułu i18n, który jest nakładką na wyciągu pybabel i aktualizacji pybabel:
& Nbsp; python -m i18n --root = / ścieżka / do / root --languages ​​= it_IT, fr_FR, de_DE wyciąg
Ekstrakt wyszukuje wszystkie wiadomości zapakowane wewnątrz wywołania _ (), gettext () lub ngettext () i tworzy plik o nazwie języki / template.pot. Jest to standard po gettext file` która zawiera wszystkie wiadomości znajdujące się w stosowaniu.
Ponadto wyciąg () tworzy również plik katalogu wiadomość dla każdego z obsługiwanych języków jak języki / $ CODE / LC_MESSAGES / messages.po, gdzie $ kod jest jednym z języków wymienionych w supported_languages ​​(it_IT, fr_FR i de_DE w powyższym przykładzie ).
Pliki katalogowe są teraz gotowe do przelicza się przy jednym z wielu istniejących narzędzi, np QT Linguist lub poedit. Dla poprawnego funkcjonowania aplikacji, całe języki / Hierarchia musi być zachowana. Proponujemy, aby śledzić różne pliki messages.po w system kontroli wersji, wraz z innymi plikami należących do aplikacji.
wiadomości Aktualizacja
Podczas opracowywania aplikacji, to na pewno dodawać nowe wiadomości do tłumaczenia. Polecenie extract automatycznie obsłużyć ten przypadek: jeśli stwierdzi istniejące pliki wyrobów, ich treści (w tym istniejących przekładów) jest połączone z nowo wyodrębnionych wiadomości.
katalogi Kompilacja
Konieczne jest, aby skompilować pliki wykazu Przed użyciem gettext. Domyślnie, nasz obiekt Tłumacz automatycznie kompiluje wszystkie katalogi znajdujące się w językach /, wytwarzające odpowiednie .mo plików. Kompilacja odbywa się tylko wtedy, gdy plik Katalog został zmodyfikowany. Oznacza to, że w większości przypadków nie trzeba się martwić o kompilacji katalogach.
Jeśli wolisz mieć większą kontrolę na tym etapie, można przekazać autocompile = false do konstruktora Tłumacz i skompilować je ręcznie z wiersza poleceń:
& Nbsp; python -m i18n --root = / ścieżka / do / root --languages ​​= it_IT, fr_FR, de_DE kompilacji
Zapisywanie tłumaczenia w bazie danych
W niektórych zastosowaniach warto pozwolić użytkownikowi definiować nowe tłumaczenia i / lub zastąpić te domyślne. i18n obsługuje ten przypadek użycia z klasą DBTranslator, który jest podklasą Tłumacz. Podczas tłumaczenia, DBTranslator najpierw szuka w bazie danych: jeśli wiadomość nie zostanie znaleziony, zleca do standardowego zachowania gettext.
DBTranslator bazuje na SQLAlchemy. Jego konstruktor ma dodatkowy parametr silnika:
z i18n.dbtranslator importu DBTranslator
z sqlalchemy importu create_engine
Silnik = create_engine ('sqlite: ///db.sqlite ")
ROOT = "/ ścieżka / do / root"
JĘZYKI = ['it_IT "," fr_FR']
DEST_LANGUAGE = "it_IT"
tr = DBTranslator (ROOT, JĘZYKI, DEST_LANGUAGE, silnika = silnik)
drukuj tr ._ ("hello world")
DBTranslator automatycznie tworzy translation_entries tabeli w DB. Wtedy to do wniosku, aby zapewnić interfejs użytkownika do manipulowania tabeli. Do testów można użyć metody add_translation (), aby wstawić nowe tłumaczenie w DB:
tr.add_translation ("it_IT", "hello world", "ciao mondo")
drukuj tr ._ ("Hello World") # drukuje "ciao mondo"
Jak korzystać z globalnej Tłumacz
Zgodnie z projektem, i18n stara się całkowicie uniknąć jakiegokolwiek stanu globalnej. Oznacza to, że możesz błyskawicznie jak wiele Tłumacz i DBTranslator, jak chcesz, każdy odnoszący się do innego katalogu i / lub bazy danych. Jest to szczególnie przydatne do testowania.
Jednak w praktyce większość projektów chcemy korzystać z globalnej tłumacz który wie o wiadomości wszystkich komponentów projektu. Aplikacja demo pokazuje sposób to zrobić w module translate.py:
Import py
z i18n.translator importu Tłumacz
# Ustaw korzeń projektu do katalogu zawierającego ten plik
ROOT = py.path.local (__ __ plik). Dirpath ()
JĘZYKI = ['it_IT "," fr_FR "," de_DE']
tr = Tłumacz (ROOT, JĘZYKI, "it_IT")
_ = Tr._
ngettext = tr.ngettext
jeśli __name__ == '__main__ ":
& Nbsp; tr.cmdline (sys.argv)
W ten sposób, reszta aplikacji może po prostu importować i używać _ () i ngettext () z translate.py. Albo, co preferencji, import bezpośredni i wykorzystanie obiektu tr tr ._ () i tr.ngettext () do przetłumaczenia wiadomości.
Ostatnie dwa wiersze kodu pozwala w wygodny sposób, aby zadzwonić do wyciągu i skompilować z wiersza polecenia bez konieczności ręcznego określić reż korzeni i obsługiwane języki. Wystarczy uruchomić:
& Nbsp; Ekstrakt python translate.py # ... lub skompilować

Wymagania :

  • Python

Podobne oprogramowanie

GOB
GOB

17 Feb 15

ftfy
ftfy

20 Feb 15

zope.app.locales
zope.app.locales

14 Apr 15

potpie
potpie

14 Apr 15

Inne programy z deweloperem Antonio Cuni

pdbpp
pdbpp

11 May 15

Komentarze do i18n

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!