TÊN¶
po-debconf — giới thiệu
MÔ TẢ¶
Mục đích của "debconf" là làm cho
tiến trình cấu hình gói là thân
thiện với người dùng. Để đạt
được, quan trọng là đảm bảo
mỗi người dùng sẽ thấy câu hỏi
bằng ngôn ngữ mẹ đẻ. Người
dịch yêu cầu một khuôn khổ để
dịch dễ dàng mà không cần theo dõi
tiến trình phát triển gói phần mềm.
"po-debconf" đã được thiết kế
để chạy đúng với các công cụ
"gettext" tiêu chuẩn khi dịch tập tin
mẫu debconf.
THÊM HỔ TRỢ I18N VÀO TẬP TIN
MẪU DEBCONF¶
Muốn thêm hỗ trợ debconf vào gói thì
bạn đã ghi một tập tin mẫu chứa
văn bản tiếng Anh (ngôn ngữ gốc).
Để thêm khả năng hỗ trợ tiến
trình quốc tế hoá (i18n) vào gói, bạn
cần phải:
- • Tạo debian/po/POTFILES.in
- Tập tin này chứa danh sách các
mẫu chủ. Bình thường nó chứa
chỉ một dòng riêng lẻ:
[type: gettext/rfc822deb] templates
Đường dẫn tương đối với
thư mục cha.
- • Thêm một dấu gạch
dưới vào trước mọi trường
có thể dịch được trong mỗi
mẫu
- Bình thường có thể dịch
được các trường kiểu
"Description", "Choices" và đôi khi
"Default".
- • Chạy debconf-updatepo
- Tiến trình này sẽ tạo tập
tin debian/po/templates.pot mà người dịch
sẽ dịch sang ngôn ngữ khác.
- • Thêm vào debian/control một
quan hệ phụ thuộc xây dựng vào
"po-debconf".
CẬP NHẬT MẪU¶
Để giúp đỡ người dịch thì
bạn nên bảo tồn một gói phần mềm
có các tập tin PO hiện thời. (Không thì
người dịch hoài phí thì giờ vì
dịch chuỗi vô ích.) Để cứ cập
nhật các tập tin PO, hãy gọi câu lệnh
theo đây (không có đối số):
$ debconf-updatepo
Để duy trì các tập tin PO hiện thời,
bạn nên chạy lệnh này mỗi lần thay
đổi chuỗi tiếng Anh trong mẫu. Cũng nên
chạy nó khi bạn nhận bản dịch mới hay
bản dịch đã cập nhật, vì
người dịch có thể đã dịch
tập tin PO cũ.
Nếu bạn thay tên, thêm hay gỡ bỏ bất
kỳ tập tin mẫu, cũng nhớ để
chỉnh sửa tập tin
debian/po/POTFILES.in một
cách tương ứng. Không thì một số
chuỗi tiếng Anh bị thiếu trong tập tin PO;
các chuỗi tiếng Anh này sẽ được
hiển thị cho người dùng xem, thậm chí
nếu các tập tin PO đã được
dịch hoàn toàn.
Chương trình
debconf-updatepo là luỹ
đẳng: nó sửa đổi tập tin PO chỉ
nếu nội dung bị cập nhật. Vì vậy
phương pháp tốt nhất cung cấp các
tập tin PO hiện thời trong gói mã nguồn
là gọi câu lệnh này từ đích
"clean" của tập tin
debian/rules.
Ghi chú rằng bạn cần phải chạy
debconf-updatepo thậm chí nếu bạn sử
dụng
dh_installdebconf. Hàm thứ hai này gọi
po2debconf mà từng gọi
debconf-updatepo
nếu phát hiện tập tin bị lỗi thời,
nhưng không còn là trường hợp lại
vì hai lý do :
- 1.
- po2debconf nhờ nhãn giờ
để phát hiện tập tin bị lỗi
thời, và có thể không chạy đúng
khi dùng "pbuilder" hoặc nếu bản
dịch cũ đã được lưu vào
đĩa sau khi mẫu bị sửa đổi.
- 2.
- dh_installdebconf được gọi
đã lâu sau khi tạo ra tập tin
".diff.gz".
TRỘN BẢN DỊCH VỚI BẢN
GỐC¶
Bạn cần phải kiểm tra các bản dịch
được hợp nhất trong gói đã xây
dựng khi nó được biên dịch. Bạn
có thể tự kiểm tra, hoặc tự động
kiểm tra bằng cách sử dụng văn lệnh
dh_installdebconf (hãy đảm bảo có một
quan hệ phụ thuộc xây dựng đặt
phiên bản với "debhelper (>= 4.1.16)").
Để tự kiểm tra, bạn cần phải trộn
các mẫu với các bản dịch vào lúc
biên dịch (và đặt quan hệ phụ
thuộc xây dựng với "po-debconf") như
thế:
$ po2debconf debian/templates > debian/tmp/DEBIAN/templates
BE CAREFUL: hai tập tin tên
templates không
phải trùng nhau. Tập tin thứ nhất chứa
chỉ văn bản gốc (thường là tiếng
Anh), và đánh dấu một số trường
cần dịch, còn tập tin thứ hai chứa
tất cả các ngôn ngữ. Vì vậy bạn
KHÔNG thể giữ chỉ những mẫu đã
trộn: có giữ thì bạn không thể xử
lý mỗi bản dịch được đệ
trình.
MẪU CHỦ MỚI¶
Định dạng nguồn tập tin mẫu mới là
gần trùng với một của những tập tin
mẫu đã phát hành, nhưng mỗi
trường có thể dịch được có
dấu gạch dưới nằm trước. Thí
dụ :
Template: debconf/frontend
Type: select
_Choices: Dialog, Readline, Gnome, Editor, Noninteractive
Default: Dialog
_Description: Interface to use for configuring packages:
Packages that use debconf for configuration share a common look and
feel. You can select the type of user interface they use.
.
The dialog frontend is a full-screen, character based interface,
while the readline frontend uses a more traditional plain text
interface, and the gnome frontend is a modern X interface. The
editor frontend lets you configure things using your favorite text
editor. The noninteractive frontend never asks you any questions.
XẺ DANH SÁCH TÙY CHỌN¶
Kể từ "po-debconf" 0.6.0, trường đã
địa phương hoá có thể chứa hai
dấu gạch dưới đi trước. Trong
trường hợp này, giá trị trường
nên là một danh sách các giá trị
định giới bằng dấu phẩy, mỗi
chuỗi msgid thì chứa một giá trị. Do
đó, nếu mẫu ví dụ trước chứa
__Choices: Dialog, Readline, Gnome, Editor, Noninteractive
thì tạo 5 chuỗi msgid khác nhau. Ghi chú rằng
dấu cách nằm sau dấu phẩy không có
nghĩa.
Có một danh sách sự chọn không bao giờ
biến đổi thì "_Choices" là
đúng. Tuy nhiên, chia tách danh sách như
vậy có thể giúp tránh lỗi thường
gặp trong bản dịch (v.d. bỏ sót một
sự chọn, sử dụng dấu phẩy không
tiêu chuẩn). Vì lý do này, rất khuyên
bạn sử dụng "__Choices" để thay
thế.
Tiếc là nếu bạn chuyển đổi từ
"_Choices" sang "__Choices" thì cũng làm
cho mọi chuỗi dịch là dịch mờ (fuzzy). Tuy
nhiên, có một phương pháp chuyển
đổi như thế mà không mất trạng
thái về chuỗi dịch (phương pháp này
yêu cầu "po-debconf" >= 1.0). Muốn chuyển
đổi mẫu ví dụ trước sang
"__Choices": trước tiên cần sao chép
tập tin
templates vào một tập tin tạm
thời.
$ cp debian/templates debian/foo
Sửa
debian/foo, giữ chỉ những trường
"Template", "Type" và "_Choices" mà
nằm trong thí dụ này.
Template: debconf/frontend
Type: select
_Choices: Dialog, Readline, Gnome, Kde, Editor, Noninteractive
Chạy
debconf-gettextize với hai cờ "--merge"
và "--choices" để xây dựng các
tập tin PO như thể là "__Choices" đã
được ghi, và trộn các tập tin PO
này với các tập tin đã tồn tại:
$ debconf-gettextize --merge --choices debian/foo
Cuối cùng bạn cần phải gỡ bỏ
foo
và tự chỉnh sửa
debian/templates để
thay thế "_Choices" bằng "__Choices"
trước khi chạy
debconf-updatepo.
GHI CHÚ DÀNH CHO NGƯỜI DỊCH¶
Các nhà duy trì "Dpkg" đã quyết
định rằng theo quy ước mỗi dòng
bắt đầu với dấu thăng ("#")
là chú thích trong tập tin
debian/control:
"po-debconf" cũng theo quy ước này. Kể
từ "po-debconf" 0.8.0, các chú thích như
vậy được ghi vào tập tin PO, và có
thể chứa thông tin hữu ích cho người
dịch. Hơn nữa, các phiên bản
"po-debconf" trước bỏ qua mọi dòng
không chứa dấu hai chấm, vì vậy nếu
chú thích không chứa dấu hai chấm thì
không cần thêm quan hệ phụ thuộc xây
dựng lập phiên bản đối với
"po-debconf". Thí dụ :
Template: debconf/button-yes
Type: text
# Translators, this text will appear on a button, so KEEP IT SHORT
_Description: Yes
Chú thích đặc biệt đã được
giới thiệu trong "po-debconf" 1.0 để
quản lý chuỗi chứa vài mục khác nhau
(như trong trường
Choices) hay vài đoạn
văn khác nhau (như
Description). Hai chỉ thị
này cho nhà phát triển điều khiển
hữu ích hơn thông tin được hiển
thị cho người dịch. Chú thích này theo
dạng "#flag:
directive"; các chỉ thị
được diễn tả bên dưới.
- translate:spec,
translate!:spec
- Đánh dấu chỉ một số
mục là « có thể dịch được
»; spec là danh sách con số định
giới bằng dấu phẩy, nó xác
định những chuỗi nào sẽ
được in ra tập tin PO. Cũng có thể
xác định phạm vi bằng dấu trừ
(v.d. "2-6"), và dấu sao ("*") có
nghĩa « mọi chuỗi ». Chẳng hạn,
đối với
Template: partman-basicfilesystems/fat_mountpoint
Type: select
#flag:translate:3,4
__Choices: /dos, /windows, Enter manually, Do not mount it
_Description: Mount point for this partition:
Hai mục "Enter manually" và "Do not mount it"
sẽ xuất hiện trong tập tin PO,
nhưngkhông phải hai mục "/dos" và
"/windows". Có dấu chấm than nằm sau
từ khoá translate thì spec xác
định những chuỗi nào sẽ bị
hủy ra tập tin PO: các chuỗi khác
được in ra. Thí dụ trước
tương tự với
Template: partman-basicfilesystems/fat_mountpoint
Type: select
#flag:translate!:1,2
__Choices: /dos, /windows, Enter manually, Do not mount it
_Description: Mount point for this partition:
Có thể áp dụng cùng từ khoá cho
trường Description để đảm
bảo một số chuỗi riêng sẽ không
được dịch.
Template: partman-crypto/options_missing
Type: error
#flag:translate!:3
_Description: Required encryption options missing
The encryption options for ${DEVICE} are incomplete. Please
return to the partition menu and select all required options.
.
${ITEMS}
Nhưng mà trường hợp này nguy hiểm,
vì ngữ cảnh có thể bị hủy ra
tập tin PO: hãy ghi chú để cho người
dịch thông tin cần thiết.
- comment:spec,
comment!:spec
- Ghi chú đúng bên dưới
chỉ thị này áp dụng cho những
chuỗi được ghi rõ bởi spec,
mà được xác định bên trên.
Mặc định là ghi chú được ghi
vào đằng trước một trường
có thể dịch được thì
được in ra cùng với tất cả các
chuỗi thuộc về trường đó. (Ghi
chú : dùng "po-debconf" < 1.0, ghi chú
được ghi chỉ với chuỗi thứ
nhất.)
Template: arcboot-installer/prom-variables
Type: note
# Translators, the 4th string of this description has been dropped
# from PO files. It contains shell commands and should not be
# translated.
#flag:comment:3
# "Stop for Maintenance" should be left in English
#flag:translate!:4
_Description: Setting PROM variables for Arcboot
If this is the first Linux installation on this machine, or if the
hard drives have been repartitioned, some variables need to be set
in the PROM before the system is able to boot normally.
.
At the end of this installation stage, the system will reboot.
After this, enter the command monitor from the "Stop for
Maintenance" option, and enter the following commands:
.
setenv OSLoader arcboot
setenv OSLoadFilename Linux
.
You will only need to do this once. Afterwards, enter the "boot"
command or reboot the system to proceed to the next stage of the
installation.
Thí dụ bên trên có một ghi chú mà
không dùng chỉ thị "#flag:comment",
vào đó một "#flag:comment:*" ngầm
được thêm. Ghi chú này xuất
hiện với mọi chuỗi, nhưng lời về
Stop for Maintenance được in ra chỉ
đằng trước chuỗi thích hợp.
- partial
- Từ khoá này báo po2debconf
nên giữ lại các chuỗi đã dịch,
thậm chí nếu chưa dịch mọi chuỗi.
Hãy sử dụng cẩn thận: từ khoá
này đã được giới thiệu
nhằm mục đích chính xác.
THÔNG BÁO NGƯỜI DỊCH TRƯỚC
KHI TẢI LÊN¶
Dù người dịch có thể thấy bản
dịch cũ trên các trang Web trạng thái (xem
dưới), và gửi đắp vá để bao
gồm trong bản tải lên về sau, người
dịch (giống như nhà phát triển) có
ít thời gian rảnh. Để tiết kiệm
thời gian cho cả hai nhà phát triển và
người dịch, và cải tiến tiến
trình liên lạc giữa cả hai, Dự án
Debian cung cấp một công cụ chuyên dụng,
podebconf-report-po. Dùng công cụ này, bạn
có thể yêu cầu người dịch
trước cập nhật bản dịch (v.d. 2 tuần
đằng trước ngày tải lên), cuối
cùng nhận nhiều bản dịch được
cập nhật hơn. Rất khuyên nhà phát
triển sử dụng công cụ này.
GỠ RỐI¶
debconf-loadtemplate không chấp nhận tập tin
mẫu có mã đánh dấu quốc tế
hoá. Tuy nhiên, nó có phải chấp nhận
một tập tin hoà trộn, thì nếu bạn
từng gỡ rối thiết lập debconf như thế
rm /tmp/{config,templates}.dat{,-old}
debconf-loadtemplate debian/templates
DEBIAN_PRIORITY=low debconf -freadline debian/config configure 28.0
bây giờ bạn cần phải sử dụng (v.d.):
po2debconf debian/templates > debian/tmp/DEBIAN/templates
rm /tmp/{config,templates}.dat{,-old}
debconf-loadtemplate debian/tmp/DEBIAN/templates
DEBIAN_PRIORITY=low debconf -freadline debian/config configure 28.0
CẨN THẬN¶
- •
- "Debconf" 1.2.0 nhận ra trường
theo dạng Name-lang.encoding, v.d.
"Description-de.ISO-8859-1" hay "Choices-vi.UTF-8".
Mặc định là po2debconf ghi các tập
tin mẫu theo định dạng mới đó.
"debconf" cũ sẽ bỏ qua các
trường này, chỉ hiển thị văn
bản gốc (thường là tiếng Anh). Xem
po2debconf(1) để biết cách thay
đổi bảng mã và định dạng
kết xuất.
- •
- Một chuỗi tiếng Anh đưa ra
có thể nhận bằng mỗi ngôn ngữ
chỉ một bản dịch duy nhất. Không
thể cung cấp được hai bản dịch
khác nhau phụ thuộc vào ngữ cảnh.
Để giải quyết vấn đề này,
bạn cần phải đánh dấu đặc
biệt các lần gặp chuỗi khác nhau,
để tạo nhiều chuỗi riêng. (Dấu
này chỉ hiển thị cho người dịch:
nó bị gỡ bỏ ra chuỗi trước khi
người dùng xem.)
Dấu như vậy phải được phụ
thêm vào chuỗi cần dịch: nó phải
bắt đầu với "[ " (dấu ngoặc
mở có dấu cách theo sau) và kết thúc
với "]" (dấu ngoặc đóng), và
có thể chứa bất cứ ký tự nào
trừ dấu ngoặc hay ký tự dòng mới.
Chẳng hạn, "[ bi_bô]" là dấu
hợp lệ, còn "[ bi[bô]bi]" không
phải. Các dấu này bị gỡ bỏ
bằng biểu thức chính quy này:
$msg =~ s/\[\s[^\[\]]*\]$//s;
- •
- Khoảng cách không phải
được xử lý một cách trùng
bởi "po-debconf" và "debconf-utils";
hàm thứ hai định dạng lại các
đoạn văn khi cập nhật và trộn
các bản dịch, vì vậy "debconf-utils"
rất khéo, dấu cách không phải
được xử lý là một phần
của chuỗi khi quyết định chuỗi nào
được dịch mờ (fuzzy: chuỗi có
bản dịch cần chỉnh sửa vì chuỗi
gốc bị thay đổi).
Mặt khác, "po-debconf" nhờ "gettext"
phát hiện chuỗi dịch mờ, và nó
không xử lý dấu cách như ký tự
đặc biệt. Vì vậy, các dấu cách
thừa phải bị gỡ bỏ ra kết thúc
dòng trong mỗi mẫu chủ, để tránh
xuất hiện trong các tập tin PO va POT.
Vì lý do tương tự, debconf-gettextize
có khả năng đánh dấu chuỗi là
« dịch mờ » do các ký tự
khoảng cách khác nhau, thì người
dịch cần phải tự chỉnh sửa mỗi
chuỗi như vậy. Trường hợp này
chỉ xảy ra một lần khi chuyển đổi
mẫu sang định dạng "po-debconf",
trừ bạn thay đổi khoảng cách một
cách ngẫu nhiên trong tập tin chủ, mà
làm phiền các người dịch.
- •
- Bình thường không nên dịch
trường Default: khi mẫu có kiểu
Select hay Multiselect. Trong rất ít
trường hợp (v.d. khi chọn ngôn ngữ
mặc định cho ứng dụng), giá trị
đã địa phương hoá cũng có
ích.
Không nên dịch giá trị đã
địa phương hoá: nên chọn nó
trong những giá trị tiếng Anh được
liệt kê trong trường Choices.
Phương pháp tốt nhất để làm
như thế là ghi chú vào tập tin mẫu :
chú thích này sẽ cũng được sao
chép vào các tập tin PO.
Template: geneweb/lang
Type: select
__Choices: Danish (da), Dutch (nl), English (en), Esperanto (eo)
# You must NOT translate this string, but you can change its value.
# The comment between brackets is used to distinguish this msgid
# from the one in the Choices list; you do not have to worry about
# them, and have to simply choose a msgstr among the English values
# listed in the Choices field above, e.g. msgstr "Dutch (nl)"
_Default: English (en)[ default language]
_Description: Geneweb default language
Giá trị mặc định cũng xuất hiện
trong trường Choices, và mỗi giá
trị có bản dịch riêng: giá trị
thứ nhất là giá trị chưa
được dịch mà được chọn
trong các giá trị Choices, còn giá
trị thứ hai là bản dịch chuẩn. Vì
"gettext" không thể chứa hai bản
dịch khác nhau cho cùng một msgid, mỗi
msgids phải được khác biệt
bằng chú thích nằm trong dấu ngoặc,
như diễn tả trong phần con trên.
Trước "po-debconf" 0.8.0, không có khả
năng ghi chú như vậy nên nhà duy trì
phải thay thế trường _Default: bằng
_DefaultChoice: để phân biệt
trường riêng trong tập tin PO:
#. DefaultChoice
msgid ""
"English[ default: do not translate bracketed material, put your "
"own language here but UNTRANSLATED. If it is not in the list, "
"put English (without bracketed material)]"
msgstr ""
"Swedish"
Chú thích chuẩn trong tập tin mẫu ít
bị lỗi hơn thì khuyến khích.
TRANG WEB TRẠNG THÁI¶
Thống kê về bản dịch "po-debconf"
sẵn sàng ở
http://www.debian.org/intl/l10n/po-debconf/
<
http://www.debian.org/intl/l10n/po-debconf/> (hoặc từ
máy nhân bản); tất cả được
tự động cập nhật khi gói mới
được tải lên. Chỉ gói có sẵn
tập tin
debian/po/templates.pot và
debian/po/POTFILES.in được xử lý, vì
vậy bạn nên kiểm tra gói mã nguồn
chứa các tập tin này.
Người dịch có thể lấy tập tin PO và
POT từ trang trạng thái, nhưng cũng nên
liên lạc với người dịch trước
(địa chỉ thư điện tử nằm trong
phần đầu của tập tin PO) và/hay nhóm
dịch trong hộp thư chung debian-l10n-
<language>@lists.debian.org (nếu có : một
số nhóm dịch dùng hộp thư chung bên
ngoài) để kiểm tra không có người
dịch khác đảm nhận cùng bản dịch,
và đọc các báo cáo lỗi hiện
thời về gói đó để kiểm tra
bản dịch đã được đệ
trình chưa.
Sau khi dịch tập tin thì người dịch nên
đệ trình bản dịch cho nhà duy trì
bằng cách gửi một báo cáo lỗi có
mức quan trọng
wishlist và thẻ
patch.
XEM CŨNG¶
debconf-gettextize(1),
debconf-updatepo(1),
dh_installdebconf(1),
podebconf-report-po(1),
po2debconf(1),
debconf-devel(7).
TÁC GIẢ¶
Martin Quinson <Martin.Quinson@ens-lyon.fr>
Denis Barbier <barbier@linuxfr.org>