Hướng dẫn polib python - trăn polib

polib

Cài đặt polib¶

Polib yêu cầu Python 2.7 hoặc vượt trội.

Có một số cách để cài đặt polib, điều này được giải thích trong phần cài đặt.the installation section.

Đối với người thiếu kiên nhẫn, phương pháp dễ nhất là cài đặt polib qua PIP, chỉ cần loại:

Một số điều cơ bản về danh mục gettext

Một danh mục getText được tạo thành từ nhiều mục, mỗi mục giữ mối quan hệ giữa một chuỗi chưa được dịch và bản dịch tương ứng của nó.

Tất cả các mục trong một danh mục nhất định thường liên quan đến một dự án duy nhất và tất cả các bản dịch được thể hiện bằng một ngôn ngữ đích duy nhất. Một mục nhập tệp PO có cấu trúc sơ đồ sau:

#  translator-comments
#. extracted-comments
#: reference...
#, flag...
msgid untranslated-string
msgstr translated-string

Một mục đơn giản có thể trông như thế này:

#: lib/error.c:116
msgid "Unknown system error"
msgstr "Error desconegut del sistema"

Polib có hai điểm nhập chính để làm việc với danh mục getText:

  • Các hàm
    #: lib/error.c:116
    msgid "Unknown system error"
    msgstr "Error desconegut del sistema"
    
    5 và
    #: lib/error.c:116
    msgid "Unknown system error"
    msgstr "Error desconegut del sistema"
    
    6 để tải các tệp PO hoặc MO hiện có,load existing po or mo files,
  • Các lớp
    #: lib/error.c:116
    msgid "Unknown system error"
    msgstr "Error desconegut del sistema"
    
    7 và
    #: lib/error.c:116
    msgid "Unknown system error"
    msgstr "Error desconegut del sistema"
    
    8 để tạo các tệp PO hoặc MO mới.create new po or mo files.

Tài liệu tham khảo * Hướng dẫn sử dụng GetText * Định dạng tệp PO * Định dạng tệp MO

Đang tải các danh mục hiện có

Tải một danh mục và phát hiện mã hóa của nó

Ở đây, việc mã hóa tệp PO được phát hiện tự động bởi polib [polib phát hiện nó bằng cách phân tích cú đung trong tiêu đề của pofile]:

import polib
po = polib.pofile['path/to/catalog.po']

Tải một danh mục và chỉ định rõ ràng là mã hóa

Vì một số lý do, bạn có thể muốn chỉ định mã hóa tệp một cách rõ ràng [ví dụ: vì độ chao tựa không được chỉ định trong tiêu đề tệp PO], để làm như vậy:

import polib
po = polib.pofile[
    'path/to/catalog.po',
    encoding='iso-8859-15'
]

Đang tải một tập tin mo

Trong một số trường hợp, bạn có thể bị buộc phải tải một tệp MO [vì tệp PO không khả dụng chẳng hạn], Polib xử lý trường hợp này:

import polib
mo = polib.mofile['path/to/catalog.mo']
print[mo]

Đối với các tệp PO, MOFILE cũng cho phép chỉ định mã hóa rõ ràng.

Tạo danh mục PO từ đầu

Polib cho phép bạn tạo danh mục từ đầu, điều này có thể được thực hiện với lớp Pofile, ví dụ để tạo một danh mục đơn giản mà bạn có thể làm:

import polib

po = polib.POFile[]
po.metadata = {
    'Project-Id-Version': '1.0',
    'Report-Msgid-Bugs-To': '',
    'POT-Creation-Date': '2007-10-18 14:00+0100',
    'PO-Revision-Date': '2007-10-18 14:00+0100',
    'Last-Translator': 'you ',
    'Language-Team': 'English ',
    'MIME-Version': '1.0',
    'Content-Type': 'text/plain; charset=utf-8',
    'Content-Transfer-Encoding': '8bit',
}

Đoạn trích này tạo ra một pofile trống, với siêu dữ liệu của nó và bây giờ bạn có thể thêm các mục của mình vào tệp PO như thế này:

entry = polib.POEntry[
    msgid=u'Welcome',
    msgstr=u'Bienvenue',
    occurrences=[['welcome.py', '12'], ['anotherfile.py', '34']]
]
po.append[entry]

Để lưu tệp của bạn vào đĩa, bạn sẽ làm:

po.save['/path/to/newfile.po']

Và để biên dịch tệp MO tương ứng:

po.save_as_mofile['/path/to/newfile.mo']

Thêm ví dụ lor

Lặp lại trên các mục

Lặp lại trên tất cả các mục [theo mặc định Pofiles chứa tất cả các mục nhập danh mục, thậm chí các mục nhập lỗi và mờ]:all entries [by default POFiles contains all catalog entries, even obsolete and fuzzy entries]:

import polib

po = polib.pofile['path/to/catalog.po']
for entry in po:
    print[entry.msgid, entry.msgstr]

Lặp lại trên tất cả các mục ngoại trừ các mục nhập lỗi:all entries except obsolete entries:

#: lib/error.c:116
msgid "Unknown system error"
msgstr "Error desconegut del sistema"
0

Chỉ lặp qua các mục được dịch:

#: lib/error.c:116
msgid "Unknown system error"
msgstr "Error desconegut del sistema"
1

Và trên đó, bạn cũng có thể lặp lại danh sách các đối tượng poentry được trả về bởi các phương pháp pofile sau:

  • #: lib/error.c:116
    msgid "Unknown system error"
    msgstr "Error desconegut del sistema"
    
    9
  • import polib
    po = polib.pofile['path/to/catalog.po']
    
    0

Nhận phần trăm các mục được dịch

#: lib/error.c:116
msgid "Unknown system error"
msgstr "Error desconegut del sistema"
2

Biên dịch các tệp PO đến MO và đảo ngược các tệp MO với các tệp PO công lý

Biên dịch tệp PO:

#: lib/error.c:116
msgid "Unknown system error"
msgstr "Error desconegut del sistema"
3

Đảo ngược một tệp MO sang tệp PO:

#: lib/error.c:116
msgid "Unknown system error"
msgstr "Error desconegut del sistema"
4

Bài Viết Liên Quan

Chủ Đề