i18n

Phần mềm chụp màn hình:
i18n
Các chi tiết về phần mềm:
Phiên bản: 0.1
Ngày tải lên: 14 Apr 15
Nhà phát triển: Antonio Cuni
Giấy phép: Miễn phí
Phổ biến: 17

Rating: 3.0/5 (Total Votes: 1)

i18n là một gói phần mềm mà cố gắng để đơn giản hóa quy trình làm việc và phát triển của các ứng dụng quốc tế & nbsp;. Nó là một wrapper mỏng xung quanh các công cụ hiện có, trong gettext và babel cụ thể.
sử dụng cơ bản
# Demo.py
#
từ i18n.translator nhập khẩu dịch
supported_languages ​​= ['it_IT', 'fr_FR', 'de_DE']
# Kích hoạt dịch tiếng
tr = Translator ('/ path / to / root', supported_languages, 'it_IT')
in tr ._ ('Hello world! ")
nơi / path / to / root / là thư mục gốc của dự án của bạn. Khi khởi tạo, lớp phiên dịch tự động tạo ra một thư mục có tên là / path / to / root / ngôn ngữ mà các bản dịch được lưu trữ.
Tin nhắn Extracting
Trước khi thực hiện các dịch thực tế, bạn cần phải trích xuất các thông điệp từ các tập tin nguồn của bạn, bằng cách gọi lệnh trích trên các module i18n, mà là một wrapper xung quanh chiết xuất pybabel và cập nhật pybabel:
& Nbsp; python -m i18n --root = / path / to / root --languages ​​= it_IT, fr_FR, de_DE chiết xuất
trích vẻ cho tất cả các thông điệp được bao bọc bên trong các cuộc gọi đến _ (), gettext () hoặc ngettext () và tạo ra một tập tin gọi là ngôn ngữ / template.pot. Đây là một po file` gettext tiêu chuẩn, trong đó có tất cả các thông điệp được tìm thấy trong các ứng dụng.
Hơn nữa, giải nén () cũng tạo ra một tập tin danh mục tin cho mỗi ngôn ngữ được hỗ trợ như là ngôn ngữ / $ MÃ / LC_MESSAGES / messages.po, trong đó $ Mã là một trong những ngôn ngữ được liệt kê trong supported_languages ​​(it_IT, fr_FR và de_DE trong ví dụ trên ).
Các tệp danh mục đã sẵn sàng để được dịch bằng một trong những công cụ hiện có rất nhiều, ví dụ như ngôn ngữ học QT hoặc Poedit. Cho đúng chức năng của các ứng dụng, toàn bộ ngôn ngữ / hệ thống phân cấp cần được bảo tồn. Chúng tôi đề nghị để theo dõi các tập tin messages.po khác nhau trong hệ thống kiểm soát phiên bản cùng với các tập tin khác thuộc vào ứng dụng.
Tin nhắn Đang cập nhật
Trong sự phát triển của các ứng dụng, bạn chắc chắn sẽ thêm tin nhắn mới được dịch. Các lệnh trích xuất tự động xử lý các trường hợp này: nếu nó tìm thấy tệp danh mục hiện tại, nội dung (bao gồm cả các bản dịch hiện có) được sáp nhập với các thông điệp mới được trích xuất.
Lập danh mục sản phẩm
Nó là cần thiết để biên dịch các file catalog trước khi sử dụng chúng với gettext. Theo mặc định, đối tượng dịch của chúng tôi tự động biên dịch tất cả các danh mục sản phẩm được tìm thấy trong ngôn ngữ /, sản xuất các tập tin tương ứng .mo. Việc lập chỉ được thực hiện khi các tập tin danh mục đã được sửa đổi. Điều này có nghĩa rằng trong hầu hết các trường hợp, bạn không cần phải lo lắng về việc biên soạn các danh mục sản phẩm.
Nếu bạn thích có kiểm soát nhiều hơn trên bước này, bạn có thể vượt qua autocompile = False cho constructor của phiên dịch và biên dịch chúng bằng tay từ dòng lệnh:
& Nbsp; python -m i18n --root = / path / to / root --languages ​​= it_IT, fr_FR, de_DE biên dịch
Lưu trữ các bản dịch trong một cơ sở dữ liệu
Đối với một số ứng dụng rất hữu ích để cho phép người dùng để xác định các bản dịch mới và / hoặc ghi đè lên những mặc định. i18n hỗ trợ trường hợp sử dụng này với các lớp DBTranslator, mà là một lớp con của Translator. Khi dịch, DBTranslator đầu tiên trông trong cơ sở dữ liệu: nếu thông báo sẽ không tìm thấy, nó đại biểu cho các hành vi gettext chuẩn.
DBTranslator dựa trên SQLAlchemy. Constructor của nó có một tham số động cơ bổ sung:
từ i18n.dbtranslator nhập DBTranslator
từ SQLAlchemy create_engine nhập khẩu
động cơ = create_engine ('SQLite: ///db.sqlite')
ROOT = '/ path / to / root'
NGÔN NGỮ = ['it_IT', 'fr_FR']
DEST_LANGUAGE = 'it_IT'
tr = DBTranslator (ROOT, LANGUAGES, DEST_LANGUAGE, động cơ động cơ =)
in tr ._ ("hello world")
DBTranslator tự động tạo ra các translation_entries bảng trong DB. Sau đó, nó là đến các ứng dụng để cung cấp một giao diện người sử dụng để thao tác bàn. Để thử nghiệm, bạn có thể sử dụng các add_translation () để chèn một bản dịch mới trong DB:
tr.add_translation ("it_IT", "hello world", "ciao mondo")
in tr ._ ("hello world") # in "ciao mondo"
Làm thế nào để sử dụng một dịch toàn cầu
Theo thiết kế, i18n cố gắng để hoàn toàn tránh bất kỳ nhà nước toàn cầu. Điều này có nghĩa rằng bạn có thể nhanh chóng như nhiều dịch và DBTranslator như bạn muốn, mỗi một đề cập đến một thư mục và / hoặc cơ sở dữ liệu khác nhau. Điều này đặc biệt hữu ích để thử nghiệm.
Tuy nhiên, trong thực tế hầu hết các dự án muốn sử dụng một dịch toàn cầu mà biết về những thông điệp của tất cả các thành phần trong dự án. Các ứng dụng demo cho thấy một cách để làm điều đó trong các mô-đun translate.py:
py nhập khẩu
từ i18n.translator nhập khẩu dịch
# Thiết lập thư mục gốc của dự án đến các thư mục chứa tập tin này
ROOT = py.path.local (__ __ tập tin). Dirpath ()
NGÔN NGỮ = ['it_IT', 'fr_FR', 'de_DE']
tr = Translator (ROOT, LANGUAGES, 'it_IT')
_ = Tr._
ngettext = tr.ngettext
nếu __name__ == '__main__':
& Nbsp; tr.cmdline (sys.argv)
Bằng cách này, phần còn lại của ứng dụng chỉ có thể nhập khẩu và sử dụng _ () và ngettext () từ translate.py. Hoặc, sở thích của bạn, nhập khẩu trực tiếp các đối tượng và sử dụng tr tr ._ () và tr.ngettext () để dịch thư.
Hai dòng cuối của mã cho phép một cách thuận tiện để gọi giải nén và biên dịch từ dòng lệnh mà không cần phải tự xác định thư mục gốc và các ngôn ngữ được hỗ trợ. Chỉ cần chạy:
& Nbsp; trích python translate.py # ... hoặc biên dịch

Yêu cầu :

  • Python

Phần mềm tương tự

locales-test
locales-test

14 Apr 15

ftfy
ftfy

20 Feb 15

Gucharmap
Gucharmap

22 Jun 18

pinyin
pinyin

20 Feb 15

Phần mềm khác của nhà phát triển Antonio Cuni

pdbpp
pdbpp

11 May 15

Ý kiến ​​để i18n

Bình luận không
Nhập bình luận
Bật hình ảnh!