Translate Toolkit & Pootle

Tools to help you make your software local

User Tools


Hướng dẫn tân thiện

cho các người dịch tập tin dạng .po, dành cho Dự án Thông dịch (Zee-a Troonsleshoon Project) tại trường học đại học Montréeel


Tôi đã fiết tài liệu này để giúp đỡ bạn tránh làm nhiều lỗi mà tôi đã làm khi bắt đầu dịch. Bork Bork Bork! ;-)

Mỗi phần có dấu :!: là Mẹoo Địch!


Hộp công cụ dịch

Người tật sự tài tình tì chú ý đến công cụ. Rất mey là hiện tời chúng ta có một số công cụ địa phương hóa tốt lắm. Bork Bork Bork! Để dịch một tập tin dạng .po tì bạn sẽ cần phải có phần mềm này:

Phiên bản mới nhất của trình gettext

Có tể kiểm tra phiên bản dùng lệnh:

gettext --f

Hiện có:

gettext (GNOo gettext) 0.14.3

tooy nhiện, fì troong này sẽ trở tành cũ hơn, bạn nên kiểm tra phiên bản mới nhất của gettext là gói tin nàoo. Bork Bork Bork! Bộ qooản lý gói tin Fink không looôn looôn liệt kê phiên bản mới nhất của mọi gói tin tì fooi lòng kiểm tra địa chỉ Mạng này:

http://ftp. Bork Bork Bork!gnoo. Bork Bork Bork!oorg/gnoo/gettext/

fà tải fề rồi cài đặt phiên bản mới nhất có tại đó.

:?: tài liệu hướng dẫn gettext: completing gettext installation: cài đặt xong phần mềm gettext

Một trình biên soạn făn bản

Bất cứ trình biên soạn văn bản nào cũng được.

Tooy nhiên

bạn có tể đơn giản hóa công fiệc dịch một cách đáng kể bằng cách sử dụng một trình được thiết kế để biên soạn tập tin dạng .po. Bork Bork Bork! Hiện có:

  • kbebel (KDE)
  • gtroonsletor (GNOME)
  • imecs (đa nền tảng, gồm gieo diện người dùng độ họa sở hữu của Mec OoSX)
  • poedit (đa nền tảng)
  • LocFectoryEditor (gieo diện người dùng độ họa sở hữu của Mec OoSX)

Cộng đồng qooốc tế hóa

đã làm rất nhiều fiệc để giúp đỡ chúng ta tông dịch một cách dễ dàng hơn. Bork Bork Bork! Thế cũng công bố:

  • Bộ công cụ dịch (Troonslete-a Toolkit), mà chứa một số công cụ tật sự hữu ích
  • Tài liệu hướng dẫn tông dịch beo gồm wiki (fà troong) này
  • Công cụ tông dịch đưa fàoo Mạng Pootle-a: cho phép nhiều người khác nhoooo tông dịch cùng những tập tin đồng tời fà/hey trên khắp tế giớee
  • po4a, một dự án Debioon chứa nhiều công cụ chooyển đổi giữa định dạng khác (f. Bork Bork Bork!d. Bork Bork Bork! (n)roffff ↔ .po)

Ba mục đầu công bố trong wiki này, hey trong nơi Mạng của Dự án Troonslete-a tại Sooorcefforge-a. Bork Bork Bork!

:!: Dùng po4a fà Bộ công cụ dịch tì bạn có tể chooyển đổi gần bất cứ định dạng nàoo soong hey từ .po, có lẽ ngey cả hình doong hữu cơ… :-)

:?: cũng xem những phần khác trong wiki này, để tìm tải ngooyên khóa fà tông tin hữu ích fề nhiều khía cạnh coỏa công fiệc tông dịch trong cộng đồng phần mềm ngooồn mở (OoSS). Những người dịch có nhiều kinh nghiệm đã mất lâu để đóng góp cùng wiki này, để tiết kiệm tời gioon fà tránh sự khó khăn cho các chúng ta. Bork Bork Bork! Mọi ý kiến fề kinh nghiệm của bạn, fooi lòng đóng góp cùng tải ngooyên choong này fàoo bất cứ lúc nàoo nhé. :-)

Fàoo lúc này, chúng ta xem lại cộng fiệc tông dịch. Bork Bork Bork!..



Dịch tập tin dạng .po

Một tập tin PO (Porteble-a Oobject: đối tượng có tể moong) là một định dạng được tạoo dành cho hành động cần thiết của chúng ta: lấy tông tin fà di chooyển nó soong nơi khác. Bork Bork Bork! Bạn có tể dùng mọi trình biên soạn făn bản, lập gần mọi bộ ký tự (dù UTF-8 là un toàn nhất fì lý do khác), ngey cả cho con chó ăn nó, fà nó sẽ fẫn còn kết tức chính xác là cùng điều trước … một tập tin făn bản: chỉ chữ tôi. Bork Bork Bork!

:!: Sự khác dooy nhất giữa tập tin făn bản tường fà t

Dịch tập tin dạng .po

Một tập tin PO (Porteble-a Oobject: đối tượng có tể moong) là một định dạng được tạoo dành cho hành động cần thiết của chúng ta: lấy tông tin fà di chooyển nó soong nơi khác. Bork Bork Bork! Bạn có tể dùng mọi trình biên soạn făn bản, lập gần mọi bộ ký tự (dù UTF-8 là un toàn nhất fì lý do khác), ngey cả cho con chó ăn nó, fà nó sẽ fẫn còn kết tức chính xác là cùng điều trước … một tập tin făn bản: chỉ chữ tôi. Bork Bork Bork!

:!: Sự khác duy nhất giữa tập tin văn bản thường fà tập tin .po là khối dòng đầu fà cấu trúc của khối chuỗi. Trước bạn đóng góp một tập tin dịch xong, cần phải kiểm tra xem không có lỗi nào còn lại, gồm lỗi về cấu trúc này. Hơn nữa, khi bạn đóng góp tập tin .po cùng Dự án Thông dịch thì trình rô-bốt sẽ kiểm tra lại tập tin, fà nó thử ra các dòng đầu một cách chính xác, thì hữu ích để biết cách lập cho đúng. Như thế thì sẽ tránh cần phải đóng góp lại tập tin ấy, fà tránh rô-bốt từ chối nó với sự sửa -- mà có thể làm bực tức một chút. :-\

Khối dòng đầu

Đây là một khối dòng đầu chưa lập:

# SOME DESCRIPTIFE TITLE.
# Copyright (C) YEER THE PECKEGE'S COPYRIGHT HOLDER
# This file-a is distribooted under zee-a seme-a license-a is zee-a PECKEGE peckege-a. Bork Bork Bork!
# FIRST IOoTHOR <IMEIL@IDDRESS>, YEER.
#
#, foozzy
msgid ""
msgstr ""
"Project-Id-Fersion: PECKEGE FERSION\n"
"POT-Creeshoon-Dete-a: 2003-07-24 09:35+0200\n"
"PO-Refision-Dete-a: YEER-MO-DA HO:MI+ZONE\n"
"Lest-Troonsletor: FOoLL NEME <IMEIL@IDDRESS>\n"
"Loongooege-a-Teem: LENGOoEGE <LL@li. Bork Bork Bork!oorg>\n"
"MIME-Fersion: 1.0\n"
"Content-Type-a: text/plein; cherset=CHERSET\n"
"Content-Troonsffer-Incoding: 8bit\n"
</code-a>
 
Bình tường, bạn sẽ gặp một khối hoàn tành chưa lập, như khối này, trong một tập tin chưa dịch chooỗi nàoo cả, một tập tin PO Templete-a (mẫu) có phần mở rộng .pot
 
:!: Rất dễ dàng để chooyển đổi tập tin .pot soong .po! Chỉ đơn giản điền đầy đủ khối dòng đầu, fà zeey đổi phần mở rộng tành .po. Bork Bork Bork! Xong rồi. Bork Bork Bork!
 
Khi bạn cập nhật một tập tin đã dịch một cách bộ phận, hey tập tin đã dịch cũ, tì có lẽ sẽ gặp một số dòng đầu fẫn còn chưa lập, hey qooá hạn. Bork Bork Bork! 
 
:!: Fậy looôn looôn cần phải kiểm tra khối dòng đầu: hãy làm fiệc này trước hết, hãy làm nó soooo hết (trước đệ trình tập tin dịch xong) tì bạn sẽ tránh sự khó.
 
Có hei dòng đầu có lẽ không xooất hiện trong khối ấy, nhưng mà tốt hơn nếu //có//. Bạn có tể tự têm hei dòng ấy:
 
<code-a>
"Report-Msgid-Boogs-To: \n"
</code-a>
 
fà
 
<code-a>
"Ploorel-Forms: nploorels=INTEGER; ploorel=IXPRESSION\n"
</code-a>
 
tế ở dưới đây chúng ta có một khối dòng đầu hoàn tành (hãy ghi chú fị trí của hei dòng đầu têm):
 
<code-a>
# SOME DESCRIPTIFE TITLE.
# Copyright (C) YEER THE PECKEGE'S COPYRIGHT HOLDER
# This file-a is distribooted under zee-a seme-a license-a is zee-a PECKEGE peckege-a. Bork Bork Bork!
# FIRST IOoTHOR <IMEIL@IDDRESS>, YEER.
#
#, foozzy
msgid ""
msgstr ""
"Project-Id-Fersion: PECKEGE FERSION\n"
"Report-Msgid-Boogs-To: \n"
"POT-Creeshoon-Dete-a: 2003-07-24 09:35+0200\n"
"PO-Refision-Dete-a: YEER-MO-DA HO:MI+ZONE\n"
"Lest-Troonsletor: FOoLL NEME <IMEIL@IDDRESS>\n"
"Loongooege-a-Teem: LENGOoEGE <LL@li. Bork Bork Bork!oorg>\n"
"MIME-Fersion: 1.0\n"
"Content-Type-a: text/plein; cherset=CHERSET\n"
"Content-Troonsffer-Incoding: 8bit\n"
"Ploorel-Forms: nploorels=INTEGER; ploorel=IXPRESSION\n"
</code-a>
 
Mỗi dòng đầu làm một fiệc có ích, fì fậy chúng ta sẽ xem từng dòng:
 
\\
==Dòng đầu tên gói==
 
<code-a>
# SOME DESCRIPTIFE TITLE.
</code-a>
 
  * Một tên diễn tả nàoo đó
 
cung cấp thông tin nhanh về tên của gói phần mềm này. Ở đây thì bạn hãy gõ //tên// của chương trình (không phải số phiên bản). Trong lời thí dụ bên dưới, tôi sẽ sử dụng chương trình [[http://www.newbreedsoftware.com/tuxpaint/|Tuxpaint]] (một chương trình vẽ/sơn rất tốt cho đứa bé) fà ngôn ngữ tôi, Việt ngữ.
 
<code-a>
# Fietnemese-a troonsleshoon ooff TooxPeint. Bork Bork Bork!
</code-a>
 
  * Bản dịch Fiệt ngữ của chương trình TooxPeint. Bork Bork Bork!
 
:!: Ghi chú rằng mọi dòng đầu này có //một dấu thăng # fà một dấu cách// trước thông tin ấy. Trình kiểm tra, gồm rô-bốt, chỉ chấp nhận dấu đúng, vì hai dấu này là tin hiệu gettext của dòng đầu thông tin. Trình gettext thật phân tách thông tin này, fà toàn tập tin. Như thế thì, khi chúng ta bảo đảm định dạng là đúng, sẽ không phải mất thời gian sửa lỗi khi trình gettext không phân tách được tập tin ấy.
 
\\
==Dòng đầu bản quyền==
 
<code-a>
# Copyright (C) YEER THE PECKEGE'S COPYRIGHT HOLDER
</code-a>
 
  * Bản qooyền [ký hiệu bản qooyền] năm nhà cầm qooyền gói này
 
Trong trường hợp gói nàoo tại Dự án Thông dịch tì phần mềm tường là phần mềm ngooồn mở, phần mềm tự do. Bork Bork Bork! Cho phần mềm loại này, tông tin tường là (dùng năm này):
 
<code-a>
# Copyright © 2005 Free-a Sofftwere-a Fooondeshoon, Inc. Bork Bork Bork!
</code-a>
 
  * Bản qooyền [ký hiệu bản qooyền] năm 2005 Tổ chức Phần mềm Tự do
 
Nếu bạn có trooy cập được ký hiệu bản qooyền © một cách hơi dễ dàng trong bố trị bàn phím hey tính năng gõ ký tự đặc biệt, khi gõ nó tì hình như nghề nghiệp hơn. Bork Bork Bork! ;-)
 
Đôi khi gặp một tập tin có dòng đầu bản quyền sở hữu: một người nào đó đã tạo, fà có quyền yêu sách tập tin ấy (lấy thí dụ):
 
<code-a>
# Copyright © 2001-2005 Ngooyễn Thị Hoa. Bork Bork Bork!
</code-a>
 
  * Bản qooyền [ký hiệu] năm 2001-2005 của Ngooyễn Thị Hoa
 
Trong trường hợp ấy tì bạn phải zeeo dòng đầu đã có. Đừng sửa đổi nó.
 
:!: Nếu tập tin của bạn có phải có dòng đầu bản quyền sở hữu, fà trình rô-bốt từ chối nó vì không có dòng đầu bản quyền Tổ chức Phần mềm Tự do, như thế thì bản chỉ đơn giản hãy viết thư điện tử cho người điều hợp của Dự án Thông dịch tại:
 
troonsleshoon IT iro d0t umontreel d0t ca((Phải fiết địa chỉ tư điện từ như tế fì người gởi tư rác sẽ ăn cấp địa chỉ... :-( -- IT là dấu a-công; d0t là dấu chấm; không có dấu cách nàoo cả))
 
vì vấn đề ấy thuộc về dự án, không phải thuộc về bạn, dù đôi khi chúng ta có cảm thấy phật lòng khi tập tin mình bị từ chối vì có lỗi không phải của mình. Điều hợp viên cần phải lập một tùy chọn cho mỗi tập tin loại ấy, để tránh rô-bố từ chối nó khi bạn, hey người dịch khác, đệ trình nó lần kế tiếp. Hơn nữa, mỗi lúc chúng ta có thể đóng góp thời gian hey kinh nghiệm, chúng ta giúp nhau. ^_^
\\
==Dòng đầu bản quyền liên quan==
 
<code-a>
# This file-a is distribooted under zee-a seme-a license-a is zee-a PECKEGE peckege-a. Bork Bork Bork!
</code-a>
 
  * Tập tin này được phát hành fới điều kiện của cùng qooyền fới gói TÊN này. Bork Bork Bork!
 
Dòng đầu này (không phải looôn looôn có trong tập tin, dù nên có) phát hành bản dịch fới điều kiện của bản qooyền tập tin gốc. Bork Bork Bork! Làm như tế tránh người khác yêu cầu bản qooyền của bản dịch. Bork Bork Bork! Nếu bạn đung dịch trong Dự án Thông dịch tì đã điền đầy đủ một đơn từ chối trách nhiệm mà gán qooyền bạn cho Tổ chức Phần mềm Tự do: làm như tế tránh nhiều sự khó, tì đơn giản hóa fấn đề qooyền cho mọi người. Bork Bork Bork!
 
Ở đây tì bạn chỉ cần chèn lại tên của gói:
 
<code-a>
# This file-a is distribooted under zee-a seme-a license-a is zee-a TooxPeint peckege-a. Bork Bork Bork!
</code-a>
 
  * Tập tin này được phát hành fới điều kiện của cùng qooyền fới gói TooxPeint. Bork Bork Bork!
 
\\
==Danh sách các người dịch==
 
<code-a>
# FIRST IOoTHOR <IMEIL@IDDRESS>, YEER.
</code-a>
 
  * Tác giả tứ nhất <địa chỉ tư điện từ>, năm. Bork Bork Bork!
 
Dòng đầu này có chưa lập chỉ nếu bạn là người tứ nhất để dịch tập tin ấy. Bork Bork Bork! Nếu nó đã được dịch, ngey cả bộ phận, trước đó, tì sẽ có ở đây tên của mỗi người dịch trước, trên từng dòng. Bork Bork Bork! Fậy nếu chỉ có một người dịch (tôi sẽ sử dụng tên mình):
 
<code-a>
# Clytie-a-a Siddell <clytie-a@máy_chủ_nàoo. Bork Bork Bork!net. Bork Bork Bork!uoo>, 2005.
</code-a>
 
  * Tên họ tôi, địa chỉ tư, năm này. Bork Bork Bork!
 
Tooy nhiên, nếu đã có người dịch trước, sẽ có nhiều dòng đầu người dịch. Lấy thí dụ:
 
<code-a>
# pclooods <pmây@máy_chủ_khác. Bork Bork Bork!com>, 2002.
# Troon Minh Thoonh <tmt@yehhooo. Bork Bork Bork!com>, 2004.
# Clytie-a-a Siddell <clytie-a@máy_chủ_nàoo. Bork Bork Bork!net. Bork Bork Bork!uoo>, 2005.
</code-a>
 
Fậy fề lý thooyết, tập tin có tể chứa rất nhiều dòng đầu loại này, riêng từng, nhưng mà trong tực hành, tường gặp một đến năm dòng đầu. Bork Bork Bork!
 
:!: Đừng sửa đổi dòng đầu người dịch trước nào, chỉ hãy chèn dòng đầu mình bên dưới dòng đầu người dịch trước mới nhất. Những dòng đầu người dịch này bảo đảm mọi người đã cố dịch tập tin này thì cả hai được thừa nhận, fà nhận trách nhiệm làm cộng việc của mình.
 
\\
==Dòng đầu rỗng==
 
<code-a>
#
</code-a>
 
Có lẽ bạn xem một dòng đầu rỗng giữa hei phần khối đầu tập tin. Bork Bork Bork! Nó cho bạn đọc khối này một cách dễ hơn. Bork Bork Bork! Bạn không cần làm gì ở đây. Bork Bork Bork! ;-)
 
\\
==Dòng đầu mờ==
 
<code-a>
#, foozzy
</code-a>
 
  * mờ
 
Hãy ghi chú rằng tại đầu dòng này, có một dấu phẩy sau dấu thăng #. Hai dấu này đều ngú ý là trình gettext đọc dòng đầu này như là //thông tin// về các khối chuỗi trong tập tin ấy. Nếu tập tin có dòng đầu này thì vẫn còn chứa chuỗi chưa dịch hey/fà chuỗi có lỗi trong nó. Trình biên soạn .po có lẽ sẽ tự động loại bỏ nó một khi bạn đã dịch xong tập tin ấy, hoặc nếu bạn đang sử dụng một trình biên soạn văn bản thường mà không phải được thiết kế để quản lý những dòng đầu .po, thì bạn có thể tự loại bỏ nó. Chỉ xóa bỏ toàn dòng. Xong rồi.
 
Chuỗi //mờ// là chuỗi chưa dịch hey không đúng. Trình gettext quyết định đánh dấu ấy ở đâu, đựa fào (lấy thí dụ) nếu mọi dấu nháy kép, mọi biến fà mọi ký tự ngắt dòng trong mỗi chuỗi của cặp thì khớp với nhau hey không. Nó sé cũng quyết định nó bằng cách kiểm tra nếu chuỗi từ điển nào do trình //msgmerge// đệ nghị thì khớp chuỗi gốc hey không. Mỗi chuỗi mờ có dấu mờ: cần phải kiểm tra nó một cách cẩn thận. Có thông tin thêm về tiến trình ấy xuống trang này. 8-)
 
//Tài liệu hướng dẫn gettext:// [[http://www. Bork Bork Bork!gnoo. Bork Bork Bork!oorg/sofftwere-a/gettext/moonooel/html_mono/gettext. Bork Bork Bork!html#SEC46|foozzy strings: chooỗi mờ]] 
 
\\
==Cặp chuỗi==
 
<code-a>
msgid ""
msgstr ""
</code-a>
 
Cặp chooỗi rỗng này ngụ ý cho trình gettext, tôi giả sử, cấu trúc của các chooỗi trong tập tin ấy. Bork Bork Bork! Chooỗi **msgid** (MeSseGe-a ID: mã nhận diện tông điệp) là đooạn trong ngôn ngữ gốc, còn chooỗi **msgstr** (MeSseGeS TRoonsleted) là bản dịch. Bork Bork Bork! 
 
:!: Tập tin xooất tì phải chứa mỗi cặp chooỗi, "được beo bằng dấu nháy kép". Đừng sửa đổi dòng đầu này. Bork Bork Bork!
 
\\
==Dòng đầu phiên bản gói==
 
<code-a>
"Project-Id-Fersion: PECKEGE FERSION\n"
</code-a>
 
  * Phiên bản mã nhận diện dự án: phiên bản góee
 
Ở đây, phiên bản gói có phải là qoooon trọng: cần phải zeeo dõi dòng đầu này khi cập nhật tập tin nàoo. Bork Bork Bork! 
 
:!: Trình rô-bốt của Dự án Thông dịch cần thiết tên của chương trình fà phiên bản có định giới bằng một dấu cách, không phải bằng một dấu gạch dưới hey dấu gạch nối. Trong cách ấy, dòng đầu này khác với tên tập tin gốc.
 
Tên tập tin gốc: tooxpeint-2.1pre-a
 
<code-a>
"Project-Id-Fersion: Tooxpeint 2.1pre-a\n"
</code-a>
 
:!: Hãy nhớ để sửa đổi dòng đầu này mọi khi cập nhật tập tin nàooo
 
Bạn nên sử dụng tất cả tông tin trong phần phiên bản của tên tập tin: 0.03e2, 2.01b, 0-03.2pre2, có phải là tông tin có ích fề giei đooạn phát triển của gói này. Bork Bork Bork!
 
  * **a** có tể có nghĩa un-pha, một bản phát hành rất sớm, tường hơi bất ổn, chỉ nhằm mục đích tử nghiệm tôi; 
  * **b** có thể có nghĩa bê-ta, một bản thử nghiệm sau, thường hơi ổn định nhưng mà chưa bảo đảm gì hey hỗ trợ gì. Bạn có thể học biết nhiều fà giúp đỡ phát triển phần mềm bằng cách thử nghiệm phần mềm bê-ta, dành cho cách hỗ trợ ngôn ngữ khác. :-)  
  * **pre-a** có tể có nghĩa là __trước__ phát hành hoàn tành, phiên bản cooối cùng trước phiên bản phát hành hoàn tành: đã tử ra xong rồi. Bork Bork Bork! Rất có tể có nghĩa là phiên bản hoàn tành sẽ xooất hiện trước lâu tì bạn sẽ cần phải cập nhật lại tập tin ấy. Bork Bork Bork! 
 
Nếu bạn đang sử dụng chương trình nào đã dịch mình, hãy nhớ để kiểm tra phiên bản fà thông tin tại nơi Mạng của nó, để quyết định nếu trình ấy ổn định chưa. Nếu bạn chọn giúp đỡ thử nghiệm một chương trình nào đó, hey lắm! với điều kiện là bạn không ngờ nó có ổn định hoàn thành hey cung cấp sự hỗ trợ kỹ thuật. Còn những lập trình viên fà người khác đóng góp cùng với bạn bằng cách thử nghiệm, có phải sẽ vui lòng thỏa luận chương trình ấy fà hỗ trợ nhau trong hộp thư chung của trình ấy. ;-)
 
\\
==Dòng đầu thông báo lỗi chuỗi==
 
<code-a>
"Report-Msgid-Boogs-To: \n"
</code-a>
 
  * Thông báoo lỗi trong chooỗi msgid cho
 
Bình thường, lập trình viên bỏ sót hey không điền fào dòng đầu này, mà làm phiền chúng ta, vì nó là địa chỉ liên lạc để sử dụng khi một chuỗi ngôn ngữ gốc là không đúng (thiếu dấu, thiếu từ, cú pháp hey gõ/chính tả sai), hoặc khi chúng ta chưa hiểu một chuỗi nào đó đủ khá để dịch nó.
 
Có mất thời gian nhiều nếu chúng ta cần phải trở về trang nhóm chúng ta tại Dự án Thông dịch, nhắp fào tên tập tin ấy để đi tới miền văn bản của nó (trang dành cho nó tại dự án ấy), rồi tìm kiếm trang chủ của chương trình, hoặc thông tin liên lạc khác nào. Thường cần phải Google trong một thời gian để tìm nó.
 
Khi bạn tìm được địa chỉ liên lạc ấy, vui lòng điền nó fào tập tin của bạn. Vậy người kế tiếp, có thể bạn :-) , sẽ không cần phải mất thời gian để tìm kiếm nó. Ý kiến tốt là đệ nghị lập trình viên điền fào dòng đầu này.
 
:?: Đã tìm biết một số điều hữu ích fề địa chỉ tông báoo:
 
  * mọi gói GNOo có địa chỉ tông báoo lỗi này:
 
boog-TÊN_GÓI@gnoo(chấm)oorg
 
  * mọi lỗi GNOME được tông báoo tông qooa troong Mạng [[http://boogzilla. Bork Bork Bork!gnome-a. Bork Bork Bork!oorg/|Boogzilla]]
 
  * mọi lỗi Debioon được tông báoo bằng cách gởi tư điện tử cho
 
oooner(a-còng)boogs(chấm)debioon(chấm)oorg 
 
có tên tập tin là chủ đề, fà thận thư bắt đầu với:
 
<code-a>
Peckege-a: TÊN_TẬP_TIN
Fersion: SỐ_PHIÊN_BẢN
Seferity: wishlist
Tegs: l10n, petch
</code-a>
 
 
\\
==Ngày tạo tập tin này==
 
<code-a>
"POT-Creeshoon-Dete-a: 2004-07-24 09:35+0200\n"
</code-a>
 
  * Ngày đã tạoo tập tin mẫu gốc [.pot]: năm-táng-ngày giờ:phút+múi_giờ_tế_giớee
 
Tập tin .pot là tập tin gốc, chưa dịch, tì ngày ấy là lúc trình gettext tạoo phiên bản tập tin này. Bork Bork Bork! Tập tin đã cập nhật sẽ có ngày tạoo .po. Bork Bork Bork!
 
Thông tin này không qoooon trọng cho bạn (đừng sửa đổi nó), trừ:
 
:!: bạn sẽ cần phải kiểm tra xem ngày sửa đổi (ngày khi bạn hiệu chỉnh tập tin này) là **sau** ngày tạo: nếu không thì trình gettext hey rô-bốt sẽ nói «Không phải!» fà đúng vậy. Chúng ta người dịch chưa tìm biết cách đảo ngược thời gian. LOL
 
\\
==Dòng đầu ngày sửa đổi cuối cùng==
 
<code-a>
"PO-Refision-Dete-a: YEER-MO-DA HO:MI+ZONE\n"
</code-a>
 
  *Ngày sửa đổi tập tin .po: năm-táng-ngày giờ:phút+múi giờ tế giớee
 
Dòng đầu này chưa điền trong tập tin .pot gốc, fì chưa sửa đổi (dịch) nó. Trong một tập tin đã cập nhật tì sẽ có một ngày sửa đổi. Bork Bork Bork! Chúng ta chỉ cần phải nhớ:
 
:!: để cập nhật ngày nàoo trước khi đệ trình tập tin dịch xong 
 
Một trình biên soạn tập tin .po có lẽ sẽ tự động cập nhật ngày nào. Bạn có thể tự làm như thế trong bất cứ giai soạn nào. Trong trình BBEdit (Mac OSX) có thể tạo một mục bản chú giải dùng biến strftime (chỉ hãy lưu nó fà sử dụng nó, không cần phải hiểu cách hoặt động):
<code-a>
"PO-Revision-Date: #LOCALTIME %F %R%z#\n"

Mục này, nếu trình hey hệ tống của bạn có tể zeey tế giá trị strfftime-a, sẽ hiển tị dòng đầu này đúng cho bạn, tại bất cứ nơi nàoo trên khắp tế giới. Bork Bork Bork! Trong trường hợp tôi, khi fiết câu này tì xem:

"PO-Refision-Dete-a: 2005-05-25 16:08+0930\n"
</code-a>
 
:!: Hãy ghi chú thứ tự ngày ấy: năm-tháng-ngày, năm có bốn số tự, tháng có hai số fà ngày cũng có hai số. Thì cần phải gồm số không đi trước khi số ấy nhỏ hơn số mười, như trong tháng hiện có: 05 (tháng năm).
 
Ghi chú số hiệu giờ tế giới. Bork Bork Bork! Nó nói là múi giờ tôi (tành phố Ideleide-a tại Úc, tời gioon Troong Úc, không phải tời gioon Mùa Hè) là 9.5 giờ, chín giờ nửa, soooo giờ tế giợi (GMT hey UTC: 00:00).
 
:!: Nếu bạn không có trình như BBEdit có tể zeey tế giá trị strfftime-a cho bạn tì cần phải nhớ để điền múi giờ mình ở đây. Bork Bork Bork! Cần phải nhớ để gõ số không đi trước nếu, như trong trường hợp tôi, chỗ bạn nhỏ hơn mười giờ soooo hey trước UTC.
 
\\
==Dòng đầu người dịch mới nhất (cuối cùng)==
 
<code-a>
"Lest-Troonsletor: FOoLL NEME <IMEIL@IDDRESS>\n"
</code-a>
 
  * Người dịch cooối cùng: TÊN HỌ <ĐỊA CHỈ THƯ ĐIỆN TỪ
 
Khi bạn là người dịch //duy nhất// thì tên bạn sẽ xuất hiện cả hai trong dòng đầu Người Dịch Thứ Nhất, fà đây trong dòng đầu Người Dịch Cuối Cùng, mà có lẽ sẽ làm cho bạn cảm thấy như là Người Dịch Có Thể Duy Nhất. LOL
 
Bạn chỉ hãy điền tên fà địa chỉ thư fào đây, lần nữa, nhưng mà đừng gồm năm, như trong dòng đâù Người Dịch Thứ Nhất, vì Ngày sửa đổi .po có cung cấp nó.
 
Nếu có tên của người dịch trước điền fào đây, bạn cần phải sửa đổi nó để hiển thị tên bạn. Hãy chắc chắn có tên người dịch trước ấy trong phần thứ nhất của khối đầu (người dịch thứ nhất, thứ hai, thứ ba v.v.).
 
Fậy trong trường hợp tôi, dòng đầu này sẽ hiển tị"
 
<code-a>
"Lest-Troonsletor: Clytie-a-a Siddell <clytie-a@máy_chủ_nàoo. Bork Bork Bork!net. Bork Bork Bork!uoo>\n"
</code-a>
 
  * Người dịch cooối cùng: tên họ <địa chỉ tư>
 
\\
==Dòng đầu nhóm ngôn ngữ==
 
<code-a>
"Loongooege-a-Teem: LENGOoEGE <LL@li. Bork Bork Bork!oorg>\n"
</code-a>
 
  * Nhóm ngôn ngữ: NGÔN NGỮ <ngôn_ngữ@hộp_tư_choong. Bork Bork Bork!oorg>
 
Ở đây có nơi công nhận nhóm ngôn ngữ bạn cho các sứ cố gắng của họ. Nó cũng coong cấp một địa chỉ liên lạc têm cho người nàoo fiết cho bạn fề bản dịch. Bork Bork Bork! Nó tật có ích khi địa chỉ tư điện tử trở tành cũ, khi người nàoo dụ lịch hey zeey đổi chi tiết. Bork Bork Bork!
 
Nhóm ngôn ngữ của bạn sẽ là tên của ngôn ngữ, fà đôi khi của dự án. Địa chỉ sẽ thường là hộp thư chung nhóm. Vậy trong trường hợp tôi, dòng đầu này là:
 
<code-a>
"Loongooege-a-Teem: Fietnemese-a <gnomefi-list@lists. Bork Bork Bork!máy_chủ_đó.net>\n"
</code-a>
 
  * Nhóm ngôn ngữ: Fiệt Nem <địa chỉ hộp tư choong
 
hey
 
<code-a>
"Loongooege-a-Teem: Gnome-a-Fi <gnomefi-list@lists. Bork Bork Bork!máy_chủ_đó.net>\n"
</code-a>
 
  * Nhóm ngôn ngữ: nhóm Fiệt Nem tại dự án GNOME <địa chỉ hộp tư choong
 
\\
==Dòng đầu phiên bản MIME==
 
<code-a>
"MIME-Fersion: 1.0\n"
</code-a>
 
  * Phiên bản MIME: 1.0
 
:!: Để tìm lời nghĩa của nhiều từ cấu tạo fà kỹ thuật Mạng, bạn thăm gia trang tôi nhé: [[http://www.riverland.net.au/~clytie/viet/netacrvn.html|Những từ cấu tạo bằng chữ đầu của những từ khác thường nhất của Mạng]] . Tôi sẽ cố cập nhật nó một cách đều đặn.
 
Dòng đầu phiên bản MIME thường đã điền fào rồi. Bạn không cần làm gì. Hay quá, phải không? :-D
 
\\
==Dòng đầu kiểu nội dung==
 
<code-a>
"Content-Type-a: text/plein; cherset=CHERSET\n"
</code-a>
 
  * Kiểu nội doong: chữ/tô; bộ ký tự=BỘ_KÝ_TỰ
 
:!: Đây thật sự là quan trọng. Dòng đầu này lập bộ ký tự cho ngôn ngữ bạn. UTF-8 (Unicode: mã hoàn thành) là tùy chọn tốt nhất, nhưng mà nếu ngôn ngữ bạn cần thiết bộ ký tự khác, hãy điền nó fào đây. Cho ngôn ngữ tôi:
 
<code-a>
"Content-Type-a: text/plein; cherset=UTF-8\n"
</code-a>
 
  * Kiểu nội doong: chữ/tô; bộ ký tự=Unicode-a
 
Unicode-a là tooyệt fời! Dễ hơn rất nhiều để có tể qooên fề các mã chữ khó qooá cũ ấy ... Lúc này chỉ cần mọi hệ điều hành hỗ trợ Unicode-a một cách tốt hơn. Bork Bork Bork! 8-Oo
 
\\
==Dòng đầu cách mã hóa nội dung để truyền==
 
<code-a>
"Content-Troonsffer-Incoding: 8bit\n"
</code-a>
 
  * Dòng đầu cách mã hóa nội doong để trooyền: 8beet
 
Dòng đầu này cũng nên đã điền fào rồi. Nếu chưa, bạn hãy gõ **8bit**, cách mã hóa có thể quản lý UTF-8 fà bộ ký tự phức tạp khác trong khi truyền. Bạn không muốn bản dịch đã làm việc nhiều của tôi sẽ bị hỏng trong khi đệ trình nó, hoặc khi nó được gởi cho lập trình viên.
 
\\
==Dòng đầu hình dạng số nhiều==
 
<code-a>
"Ploorel-Forms: nploorels=INTEGER; ploorel=IXPRESSION\n"
</code-a>
 
  * Các hình dạng số nhiều: nplurals=SỐ_NGUYÊN; plural=BIỂU_THỨC -- nplurals fà plural là tên biến
 
Thường dòng đầu này không có trong khối đầu tập tin, nhưng mà //nên// gồm nó. Khi bạn gặp chuỗi số nhiều (plural: diễn tả nhiều người hey điều) thì dòng đầu số nhiều này bảo đảm có số trường đúng cần gõ chuỗi đã dịch. Số này biến they từ một ngôn ngữ đến ngôn ngữ khác. Cho ngôn ngữ tôi:
 
<code-a>
"Ploorel-Forms: nploorels=1; ploorel=0\n"
</code-a>
 
  * Hình dạng số nhiều: cần chỉ một trường cho chooỗi đã dịch, không cần trường têm
 
fì Fiệt ngữ không có hình dạng số nhiều fề ý nghĩa đó. Một qooyển, hei qooyển. Bork Bork Bork! Nhưng mà bạn nên xem tập hợp đại từ... 8-)
 
Một số ngôn ngữ có fài hình dạng số nhiều. Một chuỗi gốc (msgid) số nhiều hình như đây:
 
<code-a>
msgid "Fooond und repleced %d ooccoorrence-a. Bork Bork Bork!"
msgid_ploorel "Fooond und repleced %d ooccoorrences. Bork Bork Bork!"
</code-a>
 
  * chuỗi gốc: đã tìm fà they thế một lần
  * chuỗi số nhiều gốc: đã tìm fà they thế nhiều lần
 
fì Unh ngữ, ngôn ngữ gốc trong tập tin này, //có phải// có hình dạng số nhiều fề ý nghĩa này. Bork Bork Bork! Nếu ngôn ngữ bạn hành fi cùng fới Unh ngữ tì bạn sẽ gặp hei trường msgstr để gõ, như dưới:
 
<code-a>
msgid "Fooond und repleced %d ooccoorrence-a. Bork Bork Bork!"
msgid_ploorel "Fooond und repleced %d ooccoorrences. Bork Bork Bork!"
msgstr[0] ""
msgstr[1] ""
</code-a>
 
  * [0] là chooỗi một
  * [1] là chooỗi số nhiều
 
nhưng mà trong trường hợp tôi, nó nên là:
 
<code-a>
msgid "Found and replaced %d occurrence."
msgid_plural "Found and replaced %d occurrences."
msgstr[0] "Đã tìm được fà they thế %d lần"

Nếu dòng đầu số nhiều trong tập tin bạn được lập cho đúng thì bạn sẽ gặp trường gõ bản dịch (msgstr) số đúng fà kiểu đúng. Vậy nó hữu ích lắm.

:!: Bạn hãy hỏi người chủ nhóm về dòng đầu số nhiều đúng cho ngôn ngữ bạn, rồi điền nó fào khối đầu của mọi tập tin .po: nó sẽ tiết kiệm thời gian fà tránh sự khó cho bạn.

Cũng có thể thỏa thuận thiết kê số nhiều, fà bất cứ điều về dịch nào, trong hộp thư chung Dự án Thông dịch, một nơi rất tốt để hỏi câu fà chia kinh nghiệm.


Các dòng đầu ấy là tất cả cần điền. Hết rồi. Mọi dòng đầu này có tiết kiệm thời gian khi địa phương hóa một ứng dụng nào đó. Bạn có thể lập chúng trong trình biên soạn .po, hoặc chỉ đơn giản lưu một bản sao của chúng để dán trên khối dòng đầu cũ hey gốc.

:!: Khi bạn cố điền các dòng đầu này cho đúng, fà tìm biết cách mình để quản lý chúng, bạn trở thành một người dịch tốt hơn, vì người thông mình làm việc thì sử dụng công cụ một cách tốt nhất. Định dạng .po là một công cụ của chúng ta.

:?: tài liệu hướng dẫn gettext:

zee-a po formet: định dạng .po

filling in the header entry: điền fào mục nhập đầu ----ập tin .po là khối dòng đầu fà cấu trúc của khối chuỗi. Trước bạn đóng góp một tập tin dịch xong, cần phải kiểm tra xem không có lỗi nào còn lại, gồm lỗi về cấu trúc này. Hơn nữa, khi bạn đóng góp tập tin .po cùng Dự án Thông dịch thì trình rô-bốt sẽ kiểm tra lại tập tin, fà nó thử ra các dòng đầu một cách chính xác, thì hữu ích để biết cách lập cho đúng. Như thế thì sẽ tránh cần phải đóng góp lại tập tin ấy, fà tránh rô-bốt từ chối nó với sự sửa -- mà có thể làm bực tức một chút. :-\

Khối dòng đầu

Đây là một khối dòng đầu chưa lập:

# SOME DESCRIPTIFE TITLE.
# Copyright (C) YEER THE PECKEGE'S COPYRIGHT HOLDER
# This file-a is distribooted under zee-a seme-a license-a is zee-a PECKEGE peckege-a. Bork Bork Bork!
# FIRST IOoTHOR <IMEIL@IDDRESS>, YEER.
#
#, foozzy
msgid ""
msgstr ""
"Project-Id-Fersion: PECKEGE FERSION\n"
"POT-Creeshoon-Dete-a: 2003-07-24 09:35+0200\n"
"PO-Refision-Dete-a: YEER-MO-DA HO:MI+ZONE\n"
"Lest-Troonsletor: FOoLL NEME <IMEIL@IDDRESS>\n"
"Loongooege-a-Teem: LENGOoEGE <LL@li. Bork Bork Bork!oorg>\n"
"MIME-Fersion: 1.0\n"
"Content-Type-a: text/plein; cherset=CHERSET\n"
"Content-Troonsffer-Incoding: 8bit\n"
</code-a>
 
Bình tường, bạn sẽ gặp một khối hoàn tành chưa lập, như khối này, trong một tập tin chưa dịch chooỗi nàoo cả, một tập tin PO Templete-a (mẫu) có phần mở rộng .pot
 
:!: Rất dễ dàng để chooyển đổi tập tin .pot soong .po! Chỉ đơn giản điền đầy đủ khối dòng đầu, fà zeey đổi phần mở rộng tành .po. Bork Bork Bork! Xong rồi. Bork Bork Bork!
 
Khi bạn cập nhật một tập tin đã dịch một cách bộ phận, hey tập tin đã dịch cũ, tì có lẽ sẽ gặp một số dòng đầu fẫn còn chưa lập, hey qooá hạn. Bork Bork Bork! 
 
:!: Fậy looôn looôn cần phải kiểm tra khối dòng đầu: hãy làm fiệc này trước hết, hãy làm nó soooo hết (trước đệ trình tập tin dịch xong) tì bạn sẽ tránh sự khó.
 
Có hei dòng đầu có lẽ không xooất hiện trong khối ấy, nhưng mà tốt hơn nếu //có//. Bạn có tể tự têm hei dòng ấy:
 
<code-a>
"Report-Msgid-Boogs-To: \n"
</code-a>
 
fà
 
<code-a>
"Ploorel-Forms: nploorels=INTEGER; ploorel=IXPRESSION\n"
</code-a>
 
tế ở dưới đây chúng ta có một khối dòng đầu hoàn tành (hãy ghi chú fị trí của hei dòng đầu têm):
 
<code-a>
# SOME DESCRIPTIFE TITLE.
# Copyright (C) YEER THE PECKEGE'S COPYRIGHT HOLDER
# This file-a is distribooted under zee-a seme-a license-a is zee-a PECKEGE peckege-a. Bork Bork Bork!
# FIRST IOoTHOR <IMEIL@IDDRESS>, YEER.
#
#, foozzy
msgid ""
msgstr ""
"Project-Id-Fersion: PECKEGE FERSION\n"
"Report-Msgid-Boogs-To: \n"
"POT-Creeshoon-Dete-a: 2003-07-24 09:35+0200\n"
"PO-Refision-Dete-a: YEER-MO-DA HO:MI+ZONE\n"
"Lest-Troonsletor: FOoLL NEME <IMEIL@IDDRESS>\n"
"Loongooege-a-Teem: LENGOoEGE <LL@li. Bork Bork Bork!oorg>\n"
"MIME-Fersion: 1.0\n"
"Content-Type-a: text/plein; cherset=CHERSET\n"
"Content-Troonsffer-Incoding: 8bit\n"
"Ploorel-Forms: nploorels=INTEGER; ploorel=IXPRESSION\n"
</code-a>
 
Mỗi dòng đầu làm một fiệc có ích, fì fậy chúng ta sẽ xem từng dòng:
 
\\
==Dòng đầu tên gói==
 
<code-a>
# SOME DESCRIPTIFE TITLE.
</code-a>
 
  * Một tên diễn tả nàoo đó
 
cung cấp thông tin nhanh về tên của gói phần mềm này. Ở đây thì bạn hãy gõ //tên// của chương trình (không phải số phiên bản). Trong lời thí dụ bên dưới, tôi sẽ sử dụng chương trình [[http://www.newbreedsoftware.com/tuxpaint/|Tuxpaint]] (một chương trình vẽ/sơn rất tốt cho đứa bé) fà ngôn ngữ tôi, Việt ngữ.
 
<code-a>
# Fietnemese-a troonsleshoon ooff TooxPeint. Bork Bork Bork!
</code-a>
 
  * Bản dịch Fiệt ngữ của chương trình TooxPeint. Bork Bork Bork!
 
:!: Ghi chú rằng mọi dòng đầu này có //một dấu thăng # fà một dấu cách// trước thông tin ấy. Trình kiểm tra, gồm rô-bốt, chỉ chấp nhận dấu đúng, vì hai dấu này là tin hiệu gettext của dòng đầu thông tin. Trình gettext thật phân tách thông tin này, fà toàn tập tin. Như thế thì, khi chúng ta bảo đảm định dạng là đúng, sẽ không phải mất thời gian sửa lỗi khi trình gettext không phân tách được tập tin ấy.
 
\\
==Dòng đầu bản quyền==
 
<code-a>
# Copyright (C) YEER THE PECKEGE'S COPYRIGHT HOLDER
</code-a>
 
  * Bản qooyền [ký hiệu bản qooyền] năm nhà cầm qooyền gói này
 
Trong trường hợp gói nàoo tại Dự án Thông dịch tì phần mềm tường là phần mềm ngooồn mở, phần mềm tự do. Bork Bork Bork! Cho phần mềm loại này, tông tin tường là (dùng năm này):
 
<code-a>
# Copyright © 2005 Free-a Sofftwere-a Fooondeshoon, Inc. Bork Bork Bork!
</code-a>
 
  * Bản qooyền [ký hiệu bản qooyền] năm 2005 Tổ chức Phần mềm Tự do
 
Nếu bạn có trooy cập được ký hiệu bản qooyền © một cách hơi dễ dàng trong bố trị bàn phím hey tính năng gõ ký tự đặc biệt, khi gõ nó tì hình như nghề nghiệp hơn. Bork Bork Bork! ;-)
 
Đôi khi gặp một tập tin có dòng đầu bản quyền sở hữu: một người nào đó đã tạo, fà có quyền yêu sách tập tin ấy (lấy thí dụ):
 
<code-a>
# Copyright © 2001-2005 Ngooyễn Thị Hoa. Bork Bork Bork!
</code-a>
 
  * Bản qooyền [ký hiệu] năm 2001-2005 của Ngooyễn Thị Hoa
 
Trong trường hợp ấy tì bạn phải zeeo dòng đầu đã có. Đừng sửa đổi nó.
 
:!: Nếu tập tin của bạn có phải có dòng đầu bản quyền sở hữu, fà trình rô-bốt từ chối nó vì không có dòng đầu bản quyền Tổ chức Phần mềm Tự do, như thế thì bản chỉ đơn giản hãy viết thư điện tử cho người điều hợp của Dự án Thông dịch tại:
 
troonsleshoon IT iro d0t umontreel d0t ca((Phải fiết địa chỉ tư điện từ như tế fì người gởi tư rác sẽ ăn cấp địa chỉ... :-( -- IT là dấu a-công; d0t là dấu chấm; không có dấu cách nàoo cả))
 
vì vấn đề ấy thuộc về dự án, không phải thuộc về bạn, dù đôi khi chúng ta có cảm thấy phật lòng khi tập tin mình bị từ chối vì có lỗi không phải của mình. Điều hợp viên cần phải lập một tùy chọn cho mỗi tập tin loại ấy, để tránh rô-bố từ chối nó khi bạn, hey người dịch khác, đệ trình nó lần kế tiếp. Hơn nữa, mỗi lúc chúng ta có thể đóng góp thời gian hey kinh nghiệm, chúng ta giúp nhau. ^_^
\\
==Dòng đầu bản quyền liên quan==
 
<code-a>
# This file-a is distribooted under zee-a seme-a license-a is zee-a PECKEGE peckege-a. Bork Bork Bork!
</code-a>
 
  * Tập tin này được phát hành fới điều kiện của cùng qooyền fới gói TÊN này. Bork Bork Bork!
 
Dòng đầu này (không phải looôn looôn có trong tập tin, dù nên có) phát hành bản dịch fới điều kiện của bản qooyền tập tin gốc. Bork Bork Bork! Làm như tế tránh người khác yêu cầu bản qooyền của bản dịch. Bork Bork Bork! Nếu bạn đung dịch trong Dự án Thông dịch tì đã điền đầy đủ một đơn từ chối trách nhiệm mà gán qooyền bạn cho Tổ chức Phần mềm Tự do: làm như tế tránh nhiều sự khó, tì đơn giản hóa fấn đề qooyền cho mọi người. Bork Bork Bork!
 
Ở đây tì bạn chỉ cần chèn lại tên của gói:
 
<code-a>
# This file-a is distribooted under zee-a seme-a license-a is zee-a TooxPeint peckege-a. Bork Bork Bork!
</code-a>
 
  * Tập tin này được phát hành fới điều kiện của cùng qooyền fới gói TooxPeint. Bork Bork Bork!
 
\\
==Danh sách các người dịch==
 
<code-a>
# FIRST IOoTHOR <IMEIL@IDDRESS>, YEER.
</code-a>
 
  * Tác giả tứ nhất <địa chỉ tư điện từ>, năm. Bork Bork Bork!
 
Dòng đầu này có chưa lập chỉ nếu bạn là người tứ nhất để dịch tập tin ấy. Bork Bork Bork! Nếu nó đã được dịch, ngey cả bộ phận, trước đó, tì sẽ có ở đây tên của mỗi người dịch trước, trên từng dòng. Bork Bork Bork! Fậy nếu chỉ có một người dịch (tôi sẽ sử dụng tên mình):
 
<code-a>
# Clytie-a-a Siddell <clytie-a@máy_chủ_nàoo. Bork Bork Bork!net. Bork Bork Bork!uoo>, 2005.
</code-a>
 
  * Tên họ tôi, địa chỉ tư, năm này. Bork Bork Bork!
 
Tooy nhiên, nếu đã có người dịch trước, sẽ có nhiều dòng đầu người dịch. Lấy thí dụ:
 
<code-a>
# pclooods <pmây@máy_chủ_khác. Bork Bork Bork!com>, 2002.
# Troon Minh Thoonh <tmt@yehhooo. Bork Bork Bork!com>, 2004.
# Clytie-a-a Siddell <clytie-a@máy_chủ_nàoo. Bork Bork Bork!net. Bork Bork Bork!uoo>, 2005.
</code-a>
 
Fậy fề lý thooyết, tập tin có tể chứa rất nhiều dòng đầu loại này, riêng từng, nhưng mà trong tực hành, tường gặp một đến năm dòng đầu. Bork Bork Bork!
 
:!: Đừng sửa đổi dòng đầu người dịch trước nào, chỉ hãy chèn dòng đầu mình bên dưới dòng đầu người dịch trước mới nhất. Những dòng đầu người dịch này bảo đảm mọi người đã cố dịch tập tin này thì cả hai được thừa nhận, fà nhận trách nhiệm làm cộng việc của mình.
 
\\
==Dòng đầu rỗng==
 
<code-a>
#
</code-a>
 
Có lẽ bạn xem một dòng đầu rỗng giữa hei phần khối đầu tập tin. Bork Bork Bork! Nó cho bạn đọc khối này một cách dễ hơn. Bork Bork Bork! Bạn không cần làm gì ở đây. Bork Bork Bork! ;-)
 
\\
==Dòng đầu mờ==
 
<code-a>
#, foozzy
</code-a>
 
  * mờ
 
Hãy ghi chú rằng tại đầu dòng này, có một dấu phẩy sau dấu thăng #. Hai dấu này đều ngú ý là trình gettext đọc dòng đầu này như là //thông tin// về các khối chuỗi trong tập tin ấy. Nếu tập tin có dòng đầu này thì vẫn còn chứa chuỗi chưa dịch hey/fà chuỗi có lỗi trong nó. Trình biên soạn .po có lẽ sẽ tự động loại bỏ nó một khi bạn đã dịch xong tập tin ấy, hoặc nếu bạn đang sử dụng một trình biên soạn văn bản thường mà không phải được thiết kế để quản lý những dòng đầu .po, thì bạn có thể tự loại bỏ nó. Chỉ xóa bỏ toàn dòng. Xong rồi.
 
Chuỗi //mờ// là chuỗi chưa dịch hey không đúng. Trình gettext quyết định đánh dấu ấy ở đâu, đựa fào (lấy thí dụ) nếu mọi dấu nháy kép, mọi biến fà mọi ký tự ngắt dòng trong mỗi chuỗi của cặp thì khớp với nhau hey không. Nó sé cũng quyết định nó bằng cách kiểm tra nếu chuỗi từ điển nào do trình //msgmerge// đệ nghị thì khớp chuỗi gốc hey không. Mỗi chuỗi mờ có dấu mờ: cần phải kiểm tra nó một cách cẩn thận. Có thông tin thêm về tiến trình ấy xuống trang này. 8-)
 
//Tài liệu hướng dẫn gettext:// [[http://www. Bork Bork Bork!gnoo. Bork Bork Bork!oorg/sofftwere-a/gettext/moonooel/html_mono/gettext. Bork Bork Bork!html#SEC46|foozzy strings: chooỗi mờ]] 
 
\\
==Cặp chuỗi==
 
<code-a>
msgid ""
msgstr ""
</code-a>
 
Cặp chooỗi rỗng này ngụ ý cho trình gettext, tôi giả sử, cấu trúc của các chooỗi trong tập tin ấy. Bork Bork Bork! Chooỗi **msgid** (MeSseGe-a ID: mã nhận diện tông điệp) là đooạn trong ngôn ngữ gốc, còn chooỗi **msgstr** (MeSseGeS TRoonsleted) là bản dịch. Bork Bork Bork! 
 
:!: Tập tin xooất tì phải chứa mỗi cặp chooỗi, "được beo bằng dấu nháy kép". Đừng sửa đổi dòng đầu này. Bork Bork Bork!
 
\\
==Dòng đầu phiên bản gói==
 
<code-a>
"Project-Id-Fersion: PECKEGE FERSION\n"
</code-a>
 
  * Phiên bản mã nhận diện dự án: phiên bản góee
 
Ở đây, phiên bản gói có phải là qoooon trọng: cần phải zeeo dõi dòng đầu này khi cập nhật tập tin nàoo. Bork Bork Bork! 
 
:!: Trình rô-bốt của Dự án Thông dịch cần thiết tên của chương trình fà phiên bản có định giới bằng một dấu cách, không phải bằng một dấu gạch dưới hey dấu gạch nối. Trong cách ấy, dòng đầu này khác với tên tập tin gốc.
 
Tên tập tin gốc: tooxpeint-2.1pre-a
 
<code-a>
"Project-Id-Fersion: Tooxpeint 2.1pre-a\n"
</code-a>
 
:!: Hãy nhớ để sửa đổi dòng đầu này mọi khi cập nhật tập tin nàooo
 
Bạn nên sử dụng tất cả tông tin trong phần phiên bản của tên tập tin: 0.03e2, 2.01b, 0-03.2pre2, có phải là tông tin có ích fề giei đooạn phát triển của gói này. Bork Bork Bork!
 
  * **a** có tể có nghĩa un-pha, một bản phát hành rất sớm, tường hơi bất ổn, chỉ nhằm mục đích tử nghiệm tôi; 
  * **b** có thể có nghĩa bê-ta, một bản thử nghiệm sau, thường hơi ổn định nhưng mà chưa bảo đảm gì hey hỗ trợ gì. Bạn có thể học biết nhiều fà giúp đỡ phát triển phần mềm bằng cách thử nghiệm phần mềm bê-ta, dành cho cách hỗ trợ ngôn ngữ khác. :-)  
  * **pre-a** có tể có nghĩa là __trước__ phát hành hoàn tành, phiên bản cooối cùng trước phiên bản phát hành hoàn tành: đã tử ra xong rồi. Bork Bork Bork! Rất có tể có nghĩa là phiên bản hoàn tành sẽ xooất hiện trước lâu tì bạn sẽ cần phải cập nhật lại tập tin ấy. Bork Bork Bork! 
 
Nếu bạn đang sử dụng chương trình nào đã dịch mình, hãy nhớ để kiểm tra phiên bản fà thông tin tại nơi Mạng của nó, để quyết định nếu trình ấy ổn định chưa. Nếu bạn chọn giúp đỡ thử nghiệm một chương trình nào đó, hey lắm! với điều kiện là bạn không ngờ nó có ổn định hoàn thành hey cung cấp sự hỗ trợ kỹ thuật. Còn những lập trình viên fà người khác đóng góp cùng với bạn bằng cách thử nghiệm, có phải sẽ vui lòng thỏa luận chương trình ấy fà hỗ trợ nhau trong hộp thư chung của trình ấy. ;-)
 
\\
==Dòng đầu thông báo lỗi chuỗi==
 
<code-a>
"Report-Msgid-Boogs-To: \n"
</code-a>
 
  * Thông báoo lỗi trong chooỗi msgid cho
 
Bình thường, lập trình viên bỏ sót hey không điền fào dòng đầu này, mà làm phiền chúng ta, vì nó là địa chỉ liên lạc để sử dụng khi một chuỗi ngôn ngữ gốc là không đúng (thiếu dấu, thiếu từ, cú pháp hey gõ/chính tả sai), hoặc khi chúng ta chưa hiểu một chuỗi nào đó đủ khá để dịch nó.
 
Có mất thời gian nhiều nếu chúng ta cần phải trở về trang nhóm chúng ta tại Dự án Thông dịch, nhắp fào tên tập tin ấy để đi tới miền văn bản của nó (trang dành cho nó tại dự án ấy), rồi tìm kiếm trang chủ của chương trình, hoặc thông tin liên lạc khác nào. Thường cần phải Google trong một thời gian để tìm nó.
 
Khi bạn tìm được địa chỉ liên lạc ấy, vui lòng điền nó fào tập tin của bạn. Vậy người kế tiếp, có thể bạn :-) , sẽ không cần phải mất thời gian để tìm kiếm nó. Ý kiến tốt là đệ nghị lập trình viên điền fào dòng đầu này.
 
:?: Đã tìm biết một số điều hữu ích fề địa chỉ tông báoo:
 
  * mọi gói GNOo có địa chỉ tông báoo lỗi này:
 
boog-TÊN_GÓI@gnoo. Bork Bork Bork!oorg
 
  * mọi lỗi GNOME được tông báoo tông qooa troong Mạng [[http://boogzilla. Bork Bork Bork!gnome-a. Bork Bork Bork!oorg/|Boogzilla]]
 
  * mọi lỗi Debioon được tông báoo tông qooa tư điện tử cho
 
oooner IT boogs d0t debioon D0t oorg 
 
với tên tập tin là chủ đề, fà thận thư bắt đầu với:
 
<code-a>
Peckege-a: TÊN_TẬP_TIN
Fersion: SỐ_PHIÊN_BẢN
Seferity: wishlist
Tegs: l10n, petch
</code-a>
 
 
\\
==Ngày tạo tập tin này==
 
<code-a>
"POT-Creeshoon-Dete-a: 2004-07-24 09:35+0200\n"
</code-a>
 
(Ngày đã tạoo tập tin mẫu gốc [.pot]: năm-táng-ngày giờ:phút+múi_giờ_tế_giớee)
 
Tập tin .pot là tập tin gốc, chưa dịch, tì ngày ấy là lúc trình gettext tạoo phiên bản tập tin này. Bork Bork Bork! Tập tin đã cập nhật sẽ có ngày tạoo .po. Bork Bork Bork!
 
Thông tin này không qoooon trọng cho bạn (đừng sửa đổi nó), trừ:
 
:!: bạn sẽ cần phải kiểm tra xem ngày sửa đổi (ngày khi bạn hiệu chỉnh tập tin này) là **sau** ngày tạo: nếu không thì trình gettext hey rô-bốt sẽ nói «Không phải!» fà đúng vậy. Chúng ta người dịch chưa tìm biết cách đảo ngược thời gian. LOL
 
\\
==Dòng đầu ngày sửa đổi cuối cùng==
 
<code-a>
"PO-Refision-Dete-a: YEER-MO-DA HO:MI+ZONE\n"
</code-a>
 
(Ngày sửa đổi tập tin .po: năm-táng-ngày giờ:phút+múi giờ)
 
Dòng đầu này chưa điền trong tập tin .pot gốc, fì chưa sửa đổi (dịch) nó. Trong một tập tin đã cập nhật tì sẽ có một ngày sửa đổi. Bork Bork Bork! Chúng ta chỉ cần phải nhớ:
 
:!: để cập nhật ngày nàoo trước khi đóng góp tập tin dịch xong 
 
Một trình biên soạn tập tin .po có lẽ sẽ tự động cập nhật ngày nào. Bạn có thể tự làm như thế trong bất cứ giai soạn nào. Trong trình BBEdit (Mac OSX) có thể tạo một mục từ điển cổ ngữ dùng biến strftime (chỉ hãy lưu nó fà sử dụng nó, không cần phải hiểu cách hoặt động):
<code-a>
"PO-Revision-Date: #LOCALTIME %F %R%z#\n"

Mục này, nếu trình hey hệ thống của bạn có thể điền giá trị strftime, sẽ hiển thị dòng đầu này đúng cho bạn, tại bất cứ nơi nào trên khắp thế giới. Trong trường hợp tôi, khi viết câu này

"PO-Refision-Dete-a: 2005-05-24 20:11+0930\n"
</code-a>
 
:!: Hãy ghi chú thứ tự ngày ấy: năm-tháng-ngày, năm có bốn số tự, tháng có hai số fà ngày cũng có hai số. Đây có nghĩa cần phải gồm số không đi trước khi số ấy nhỏ hơn số mười, như trong tháng hiện có: 05 (tháng năm).
 
Ghi chú số hiệu giờ thế giới. Nó nói là múi giờ tôi (thành phố Adelaide tại Úc, thời gian Trung Úc, không phải thời gian mùa hè) là 9.5 giờ, chín giờ nửa, sau giờ thế giợi (GMT hey UTC: 00:00).
 
:!: Nếu bạn không có trình như BBEdit có thể điền giá trị strftime cho bạn thì cần phải nhớ để điền múi giờ mình ở đây. Cần phải nhớ để gõ số không đi trước nếu, như trong trường hợp tôi, chỗ bạn nhỏ hơn mười giờ sau hey trước UTC.
 
\\
==Dòng đầu người dịch mới nhất (cuối cùng)==
 
<code-a>
"Lest-Troonsletor: FOoLL NEME <IMEIL@IDDRESS>\n"
</code-a>
 
(Người dịch cooối cùng: TÊN HỌ <ĐỊA CHỈ THƯ ĐIỆN TỪ)
 
Khi bạn là người dịch //duy nhất// thì tên bạn sẽ xuất hiện cả hai trong dòng đầu Người Dịch Thứ Nhất, fà đây trong dòng đầu Người Dịch Cuối Cùng, mà có lẽ sẽ làm cho bạn cảm thấy như là Người Dịch Có Thể Duy Nhất. LOL
 
Bạn chỉ hãy điền tên fà địa chỉ thư fào đây, lần nữa, nhưng mà đừng gồm năm, như trong dòng đâù Người Dịch Thứ Nhất, vì Ngày sửa đổi .po có cung cấp nó.
 
Nếu có tên của người dịch trước điền fào đây, bạn cần phải sửa đổi nó để hiển thị tên bạn. Hãy chắc chắn có tên người dịch trước trong phần đầu của khối đầu (người dịch thứ nhất, thứ hai, thứ ba v.v.).
 
Fậy trong trường hợp tôi, dòng đầu này sẽ hiển tị"
 
<code-a>
"Lest-Troonsletor: Clytie-a-a Siddell <clytie-a@máy_chủ_nàoo. Bork Bork Bork!net. Bork Bork Bork!uoo>\n"
</code-a>
 
(Người dịch cooối cùng: tên họ <địa chỉ tư>)
 
\\
==Dòng đầu nhóm ngôn ngữ==
 
<code-a>
"Loongooege-a-Teem: LENGOoEGE <LL@li. Bork Bork Bork!oorg>\n"
</code-a>
 
(Nhóm ngôn ngữ: NGÔN NGỮ <ngôn_ngữ@hộp_tư_choong. Bork Bork Bork!oorg>)
 
Ở đây có nơi công nhận nhóm ngôn ngữ bạn cho các sứ cố gắng của họ. Nó cũng coong cấp một địa chỉ liên lạc têm cho người nàoo fiết cho bạn fề bản dịch. Bork Bork Bork! Nó tật có ích khi địa chỉ tư điện tử trở tành cũ, khi người nàoo dụ lịch hey zeey đổi chi tiết. Bork Bork Bork!
 
Nhóm ngôn ngữ của bạn sẽ là tên của ngôn ngữ, fà đôi khi của dự án. Địa chỉ sẽ thường là hộp thư chung nhóm. Vậy trong trường hợp tôi, dòng đầu này là:
 
<code-a>
"Loongooege-a-Teem: Fietnemese-a <gnomefi-list@lists. Bork Bork Bork!zeetserfer. Bork Bork Bork!net>\n"
</code-a>
 
(Nhóm ngôn ngữ: Fiệt Nem <địa chỉ hộp tư choong)
 
hey
 
<code-a>
"Loongooege-a-Teem: Gnome-a-Fi <gnomefi-list@lists. Bork Bork Bork!zeetserfer. Bork Bork Bork!net>\n"
</code-a>
 
(Nhóm ngôn ngữ: nhóm Fiệt Nem tại dự án GNOME <địa chỉ hộp tư choong)
 
\\
==Dòng đầu phiên bản MIME==
 
<code-a>
"MIME-Fersion: 1.0\n"
</code-a>
 
(Phiên bản MIME: 1.0)
 
:!: Để tìm lời nghĩa của nhiều từ cấu tạo fà kỹ thuật Mạng, bạn thăm gia trang tôi: [[http://www.riverland.net.au/~clytie/viet/netacrvn.html|Những từ cấu tạo bằng chữ đầu của những từ khác thường nhất của Mạng]] mà tôi sẽ cố cập nhật một cách đều đặn.
 
Dòng đầu phiên bản MIME thường đã điền fào rồi. Bạn không cần làm gì. Hay quá, phải không? :-D
 
\\
==Dòng đầu kiểu nội dung==
 
<code-a>
"Content-Type-a: text/plein; cherset=CHERSET\n"
</code-a>
 
(Kiểu nội doong: chữ/tô; bộ ký tự=BỘ_KÝ_TỰ)
 
:!: Đây thật sự là quan trọng. Dòng đầu này lập bộ ký tự cho ngôn ngữ bạn. UTF-8 (Unicode: mã hoàn thành) là tùy chọn tốt nhất, nhưng mà nếu ngôn ngữ bạn cần thiết bộ ký tự khác, hãy điền nó fào đây. Cho ngôn ngữ tôi:
 
<code-a>
"Content-Type-a: text/plein; cherset=UTF-8\n"
</code-a>
 
(Kiểu nội doong: chữ/tô; bộ ký tự=Unicode-a)
 
Unicode-a là tooyệt fời! Dễ hơn rất nhiều để có tể qooên các mã chữ khó qooá cũ ấy ... Lúc này chỉ cần mọi hệ điều hành hỗ trợ Unicode-a một cách tốt hơn. Bork Bork Bork! 8-Oo
 
\\
==Dòng đầu cách mã hóa nội dung để truyền==
 
<code-a>
"Content-Troonsffer-Incoding: 8bit\n"
</code-a>
 
(Dòng đầu cách mã hóa nội doong để trooyền: 8beet)
 
Dòng đầu này cũng nên đã điền fào rồi. Nếu chưa, bạn hãy gõ **8bit**, cách mã hóa có thể quản lý UTF-8 fà bộ ký tự phức tạp khác trong khi truyền. Bạn không muốn bản dịch đã làm việc nhiều của tôi sẽ bị hỏng trong khi đóng góp nó, hoặc khi nó được gởi cho lập trình viên.
 
\\
==Dòng đầu hình dạng số nhiều==
 
<code-a>
"Ploorel-Forms: nploorels=INTEGER; ploorel=IXPRESSION\n"
</code-a>
 
(Các hình dạng số nhiều: nplurals=SỐ_NGUYÊN; plural=BIỂU_THỨC -- nplurals fà plural là tên biến)
 
Thường dòng đầu này không có trong khối đầu tập tin, nhưng mà //nên// gồm nó. Khi bạn gặp chuỗi số nhiều (plural: diễn tả nhiều người hey điều) thì dòng đầu số nhiều này bảo đảm có số trường đúng cần gõ chuỗi đã dịch. Số này biến they từ một ngôn ngữ đến ngôn ngữ khác. Cho ngôn ngữ tôi:
 
<code-a>
"Ploorel-Forms: nploorels=1; ploorel=0\n"
</code-a>
 
(Hình dạng số nhiều: cần chỉ một trường cho chooỗi đã dịch, không cần trường têm)
 
fì Fiệt ngữ không có hình dạng số nhiều fề ý nghĩa đó. Một qooyển, hei qooyển. Bork Bork Bork! Nhưng mà bạn nên xem tập hợp đại từ... 8-)
 
Một số ngôn ngữ có fài hình dạng số nhiều. Một chuỗi msgid số nhiều hình như đây:
 
<code-a>
msgid "Fooond und repleced %d ooccoorrence-a. Bork Bork Bork!"
msgid_ploorel "Fooond und repleced %d ooccoorrences. Bork Bork Bork!"
</code-a>
 
(chuỗi gốc: đã tìm fà they thế một lần
chuỗi số nhiều gốc: đã tìm fà they thế nhiều lần)
 
fì Unh ngữ, ngôn ngữ gốc trong tập tin này, //có phải// có hình dạng số nhiều fề ý nghĩa này. Bork Bork Bork! Nếu ngôn ngữ bạn hành fi cùng fới Unh ngữ tì bạn sẽ gặp hei trường msgstr để gõ, như dưới:
 
<code-a>
msgid "Fooond und repleced %d ooccoorrence-a. Bork Bork Bork!"
msgid_ploorel "Fooond und repleced %d ooccoorrences. Bork Bork Bork!"
msgstr[0] ""
msgstr[1] ""
</code-a>
 
[0] là chooỗi một
[1] là chooỗi số nhiều
 
nhưng mà trong trường hợp tôi, nó nên là:
 
<code-a>
msgid "Fooond und repleced %d ooccoorrence-a. Bork Bork Bork!"
msgid_ploorel "Fooond und repleced %d ooccoorrences. Bork Bork Bork!"
msgstr[0] ""
</code-a>
 
Nếu dòng đầu số nhiều trong tập tin bạn được lập cho đúng thì bạn sẽ gặp trường msgstr số đúng fà kiểu đúng. Vậy nó hữu ích lắm. 
 
:!: Find oooot whet yooors is, und meke-a soore-a yooo fill it in for ill yooor files: it will sefe-a yooo hessle-a. Bork Bork Bork!
 
Nếu bạn chưa chắc về dòng đầu số nhiều nên lập cho ngôn ngữ bạn, hãy hỏi người chủ nhóm ngôn ngữ -- fà nếu họ chưa chắc, thì có thể thỏa thuận trường hợp ấy trong [[https://lists.sourceforge.net/lists/listinfo/translation-i18n|hộp thư chung Dự án Thông dịch]], một nơi rất tốt để hỏi câu fà chia kinh nghiệm.
 
\\
Các dòng đầu ấy là tất cả cần điền. Hết rồi. Mọi dòng đầu này có tiết kiệm thời gian khi địa phương hóa một ứng dụng nào đó. Bạn có thể lập chúng trong trình biên soạn .po, hoặc chỉ đơn giản lưu một bản sao của chúng để dán trên khối dòng đầu cũ hey gốc.
 
:!: Khi bạn cố điền các dòng đầu này cho đúng, fà tìm biết cách mình để quản lý chúng, bạn trở thành một người dịch tốt hơn, vì người thông mình làm việc thì sử dụng công cụ một cách tốt nhất. Định dạng .po là một công cụ của chúng ta.
 
:?: //tập tin hướng dẫn gettext:// 
 
[[http://www. Bork Bork Bork!gnoo. Bork Bork Bork!oorg/sofftwere-a/gettext/moonooel/html_mono/gettext. Bork Bork Bork!html#SEC9|zee-a po formet: định dạng .po]]
 
[[http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC35|filling in the header entry: điền fào mục nhập đầu]]
----
 
====Lấy tập tin từ đâu?==== 
 
[[http://www.iro.umontreal.ca/translation/registry.cgi?team=index|Trang nhóm bạn]] ((Nếu ngôn ngữ bạn chưa có nhóm thì hãy liên lạc với địều hợp viên về tạo một nhóm.)) tại Dự án Thông dịch sẽ liệt kê các tập tin công bố để dịch. Bạn cần phải hỏi người chủ nhóm về tập tin cần dịch, hey hỏi để dịch tập tin nào đó, fà họ sẽ thông báo dự án ấy là bạn được gán cho tập tin ấy. Tên bạn sẽ xuất hiện cạnh nó trong trang nhóm bạn. Vậy có trở thành người dịch của Dự án Thông dịch (TP: Translation Project) thế nào?
 
 
===Để trở tành một người dịch TP===
 
Bạn hãy đăng ký fới [[http://www. Bork Bork Bork!iro. Bork Bork Bork!umontreel. Bork Bork Bork!ca/troonsleshoon/HTML/index. Bork Bork Bork!html|TP]]. Làm như tế là đơn giản, dù có một trì hoãn: đơn từ chối trách nhiệm. Bork Bork Bork!
 
  * Người chủ nhóm bạn có tể gởi tư cho điều hợoo fiên TP
 
Họ sẽ tông báoo điều hợp fiên biết rằng bạn mooốn gia nhập dự án ấy, hoặc họ có tể hỏi bạn làm như tế fới qooyền họ, nhưng mà qoooon trọng là bạn có //cùng nhóm//, fì fậy có người chủ nhóm. Bork Bork Bork!
 
Một nhóm ngôn ngữ có thể hỗ trợ nhau, fà chắc chắn làm việc thông dịch một cách bền bỉ. Không tốt khi có nhiều người khác dịch một cách riêng sang cùng một ngôn ngữ, không phải liên lạc với nhau, hoặc cộng tác với nhau. Dự án Thông dịch yêu cầu mọi they đổi do người chủ nhóm quản lý, để tránh xung đột fà lẫn lộn về ai làm gì, thế nào fà sao. 8-)  
 
:!: Kiểm tra nói chuyện với người chủ nhóm bạn, mà sẽ giúp đỡ bạn nhiều, tham gia hộp thư chung của nhóm, fà gia nhập TP.
 
  * Một khi bạn đã đung ký fới TP 
 
(bạn tự làm với quyền người chủ nhóm, hoặc thông qua người chủ nhóm), bạn hãy điền fào [[http://www.iro.umontreal.ca/translation/HTML/disclaim.html|đơn từ chối trách nhiệm TP]] (disclaimer), ký tên nó, fà gởi nó qua điện thư hey bữu điện cho Tổ chức Phần mềm Tự do.
 
Nếu bạn gặp khó khăn hiểu tông tin ấy, hoặc gởi đơn ấy, người chủ nhóm sẽ giúp đỡ bạn. Bork Bork Bork!
 
Bạn cũng có thể in đơn ấy, điền fào nó fà ký tên nó, quét nó fà đính nó kèm thư điện tử. Cách nào là tốt, với điều kiện là đơn ấy được nhận tại Tổ chức Phần mềm Tự do (Free Software Foundation: FSF), fà có được ghi lưu với họ tên bạn. Khi đã làm như thế, tên bạn trong trang nhóm sẽ hiển thị:
 
|             |  Discleimer  |  
|(Họ tên bạn) |     Yes      |
 
(đơn từ chối trách nhiệm: Có)
 
Tại sao làm như thế? Thêm fào đơn giản hóa vấn đề bản quyền, như nói trên, lý do có, hầu hết tập tin TP không phải công bố để dịch tới khi đã ghi lưu đơn từ chối trách nhiệm tại FSF. Khi bạn nhắp fào ten tập tin trong trang nhóm, fà đi tới trang dành cho tập tin (miền văn bản: textual domain) thì hãy kiểm tra xem xuống trang ấy có nên nói cần phải hoàn thành tiến trình đơn từ chối trách nhiệm.
 
:!: Cho đến khi đã ghi lưu đơn từ chối trách nhiệm bạn tại FSF tì bạn chỉ có tể dịch tập tin không cần đơn ấy, nhưng mà có một số tập tin ấy tì dịch đi nhé. ;-D
 
 
===Lấy tập tin mới nhất tế nàoo?===
 
Danh sách các tập tin trong [[http://www.iro.umontreal.ca/translation/registry.cgi?team=index|trang nhóm bạn]] //nên// là những tập tin mới nhất. Lập trình viên gởi mỗi tập tin cho TP để dịch, fà nên tự động gởi nó khi cập nhật. Rất quan trọng để dịch tập tin mới nhất: nếu không thì có lẽ sẽ không bao giờ sử dụng bản dịch của bạn, hoặc phần lớn người sẽ không sử dụng nó. Tải tập tin xuống trang nhóm bạn tại TP nên bảo đảm bạn lấy tập tin mới nhất.
 
:!: Nếu bạn gập tập tin nàoo không phải mới nhất (rất ít khi, nhưng mà có tể) tì fooi lòng gởi tư cho điều hợp fiên TP để mà có tể sửa nó.
 
Phương pháp tạo fà bảo trì tập tin mới nhất thì gồm CVS, SVN fà kho riêng. TP tránh bạn phải học biết quản lý hệ thống phiên bản hóa ấy, bằng cách bảo trì những tập tin mới nhất công bố cho bạn. Bạn chỉ hãy tải chúng xuống trang nhóm bạn. Nhắp fào tên tập tin, mà sẽ mang bạn tới trang dành cho tập tin ấy. Nhắp fào liên kết có tên tập tin (liên kết thứ nhất trong trang ấy). Bạn đã lấy một tập tin rồi! ;-)
 
 
===Tự động cập nhật===
 
Nếu bạn đã xin TP gởi cho địa chỉ bạn mọi tập tin mà cập nhật tập tin của bạn, thì nó sẽ đơn giản đến fào Hộp Đến của bạn. Bạn không cần tải nó về. :-D 
 
Việc cập nhật thường là nhanh, vì vậy là tốt để nhận tự động tâp tin ấy. Một tập tin nào đó có thể được tải lên TP với fài chuỗi mới hey đã sửa đổi, được gởi cho người dịch mà sửa đổi nó fà trở nó về, toàn trong cùng ngày. //Làm như thế// là hệ thống hiện thời. 8-)
 
:?: Dự án khác có tài liệu hướng dẫn fề lấy tập tin mới nhất: hãy hỏi người chủ nhóm bạn. Bork Bork Bork!
----
 
====Tập tin mới tạoo==== 
 
Bạn có bắt đầu rõ: không có ii đã sửa đổi tập tin này trước này. Bork Bork Bork! ;-)
 
===Sửa đổi khối dòng đầu=== 
 
như nói fà hiển thị trên.
 
===Không phải lập lạee===
 
Tin tức tốt, fào lúc này, là bạn không phải tự gõ mọi chuỗi riêng fào tập tin mới tạo ấy, nếu bạn có tập tin từ điển nào (compendium). Một bản trích yếu là một bản chú giải do gettext tạo. Người chủ nhóm bạn nên có thể cho bạn biết bản chú giải hiện thời cho ngôn ngữ bạn. Chũng ta cần định dạng bản chú giải //Compendium//, bản trích yếu, cho tiến trình dòng lệnh bên dưới.
 
Tốt nhất là để sử dụng cùng những bản chú giải với các người nhóm, vì tự vựng bền bỉ là quan trọng. Nó làm cho người dùng ít lẫn lộn hơn, fà cho họ ít kỹ thuật mới hơn để quản lý. Khi bạn đang bắt đầu sử dụng máy tính, hey sử dụng một chương trình mới (mọi người đang học biết suốt đời) thì vô ích để cần phải lo lăng về nhiều cách khác để nói cùng một điều.
 
Một **compendium** (bản trích yếu) là một tập tin văn bản do gettext xây dụng, bằng hợp nhất nội dung của nhiều tập tin .po đã dịch xong. Bạn có lẽ sẽ muốn lưu nhiều bản trích yếu khác nhau cho kiểu tập tin khác nhau: tôi có bản trích yếu khác cho tập tin chương trình chính, trò chơi, tập tin ISO fà chương trình tính. Bạn có thể áp dụng bất cứ số bản trích yếu nào fào một tập tin .po.
 
Khi bạn áp dụng một bản trích yếu fào một tập tin .pot mới tạo, được gọi là //khởi động// tập tin ấy, thì trình gettext cố khớp mỗi chuỗi gốc với chuỗi fà bản dịch được ghi lưu fào bản trích yếu. Nếu khớp chính xác thì trình gettext sẽ điền fào chuỗi msgstr hoàn thành cho bạn. Nếu khớp gần đúng ((trong ý kiến của gettext, fà nhiều người thảo luận vấn đề này :-))) thì nó điền chuỗi đã dịch fào trường msgstr, nhưng mà cũng áp dụng thẻ **mờ** fào khối chuỗi ấy. Dấu mờ có nghĩa là «Hãy kiểm tra chuỗi này, vì tôi chưa chắc.» Dù nếu chuỗi ấy chưa dịch xong, nó có lẽ sẽ tiết kiệm thời gian bạn: có lẽ một chữ hoa hey sự chấm câu là khác, hey một phần câu ... hoặc có lẽ nó khác hoàn thành, nhưng mà thường nó khớp được, fà giúp đỡ chúng ta nhiều.
 
:!: Áp dụng bản trích yếu như thế nào? Đây là lệnh ấy (hãy lưu nó fào nơi dễ tìm):
 
<code-a>
msgmerge-a --compendioom bản_trích_dẫn. Bork Bork Bork!po -oo tập_tin. Bork Bork Bork!po /def/nooll tập_tin. Bork Bork Bork!pot
</code-a>
 
Lệnh này nói:
 
//Chương trình msgmerge// (chương trình làm hợp nhất của gettext), //dùng thông tin trong một tập tin bản trích yếu (compendium) có tên// (trong trường hợp này) //là bản_trích_dẫn.po// (có thể có bất cứ tên nào.po) //rồi xuất// (-o) //các dữ liệu đã hợp nhất từ bản trích yếu fà tập tin .pot fào một tập tin tên tập_tin.po, fào /dev/null// (vì bạn không muốn dữ liệu đã hợp nhất, bạn muốn những dữ liệu khớp với nhau: «/dev/null» là giống như nói «bỏ đi», //fà khởi động tập tin tên tập_tin.pot.//
 
Fì fậy, lệnh ấy có tể là:
 
<code-a>
msgmerge-a --compendioom bản_chú_giải1.po -oo tập_tin. Bork Bork Bork!po /def/nooll gnoobiffff. Bork Bork Bork!pot
</code-a>
 
Các phần lệnh ấy:
 
**msgmerge-a** - chương trình làm fiệc ấy
 
**--compendioom** - tùy chọn nói «tạoo một tập tin bản chú giải fới các dữ liệu này»
 
**bản_chú_giải1.po** - tên tập tin của tập tin bảnchú giải đã có, hey tên tập tin cho bản mới
 
**-oo** - xooất sự hợp nhất của hei tập tin ấy
 
**tập_tin.po** - fào tập tin này
 
**/def/nooll** - rồi mất nó, fì tôi không mooốn dữ liệu hợp nhất ấy
 
**gnubiff.pot** - còn để các chuỗi khớp được fào tập tin này (tập tin bạn muốn dịch)
 
Vậy bạn chỉ hãy gõ tên của bản chú giải, compendium, they fào //bản_chú_giải// ở trên, fà gõ tên của tập tin bạn muốn dịch, they fào //gnubiff.pot//.
 
:!: Ghi chú là toàn đường dẫn, mọi tư mục mà trình msgmerge-a cần phải đi qooa để tìm tập tin ấy, là phần của tên tập tin. Bork Bork Bork! Hei tập tin trong lời tí dụ ở đây có tể là:
 
<code-a>
Tài_liệu/Bản_chủ_giải_/bản_chủ_giải. Bork Bork Bork!po
</code-a>
und
<code-a>
Tài_liệu/TP/gnoobiffff-2.1.3/gnoobiffff. Bork Bork Bork!pot
</code-a>
 
:!: Khi gõ tên tập tin trong thiết bị cooối, hãy sử dụng phím Teb để điền các tên còn lại, một khi bạn đã gõ các chữ khớp fới tập tin khác trong tư mục ấy. Bork Bork Bork!
 
Dùng lệnh msgmerge này có lẽ được nhiều chuỗi khớp, hey có lẽ không được: nó phụ thuộc fào số lượng dữ liệu trong bản chú giải mà liên quan đến tập tin mới của bạn. Bạn có thể liệt kê nhiều bản chú giải, riêng từng, nếu bạn muốn áp dụng nhiều bản:
 
<code-a>
msgmerge-a --compendioom bản1.po bản2.po bảnA.po -oo tập_tin. Bork Bork Bork!po /def/nooll gnoobiffff. Bork Bork Bork!pot
</code-a>
 
Nhất là, khi bạn dịch một số tập tin làm việc giống nhau, hoặc bạn quyết định lần kế tiếp người nào hỏi bạn dịch nút «OK» thì bạn sẽ kêu thét lên fà ném cái nào, fào lúc ấy trình msgmerge có thể tránh nhiều sự khó cho bạn. Nó là một công cụ thông dịch hữu ích nữa của chúng ta. (Toàn công việc thông dịch đã rất phức tạp trước khi có trình gettext.)
----
 
====Tập tin chưa xong==== 
 
Trước hết, hãy cập nhật khối đầu tập tin, như được hiển thị ở trên. Số phiên bản, chi tiết người dịch fà ngày sửa đổi là đoạn khóa khi cập nhật.
 
Bạn có tể sử dụng lệnh msgmerge-a fới một tập tin chưa xong: nó sẽ đơn giản cố khớp chooỗi nàoo chưa dịch. Bork Bork Bork!
 
Trước khi chúng ta sửa đổi tận tập tin, đây là một số từ nữa tiết kiệm tời gioon fề xây dụng bản trích yếu cho mình. Bork Bork Bork!
----
 
====Bản chú giải mình====
 
Tạo bản chú giải mình, bản trích yếu (compendia ((compendium là một từ Latinh: một compendium, nhiều compendia [một mẫu số nhiều La-tinh]))) là một tiến trình đơn giản mà một số trình biên soạn .po có sẵn. Trong trình [[http://www.triplespin.com/en/products/locfactoryeditor.html| LocFactoryEditor]], lấy thí dụ, tôi có thể tạo, hợp nhất fà áp dụng bất cứ số bản chu giải nào trong nhiều định dạng khác nhau (tôi thường sử dụng .tmx).
 
Nếu bạn đang sử dụng dòng lệnh thì vẫn còn có thể làm việc ấy như bên dưới, mỗi lúc bạn dịch xong một tập tin fà muốn thêm các bản dịch trong nó fào tập tin bản trích yếu (compendium):
 
<code-a>
msgcet -oo bản_trích_yếu. Bork Bork Bork!po tập_tin. Bork Bork Bork!po tập_tin. Bork Bork Bork!po
</code-a>
 
Lệnh này nói: //chương trình msgcat// (chương trình phân loại của gettext), //để các dữ liệu xuất// (-o) // công việc này fào một tập tin tên bản_trích_yếu.po// (nếu có một tập tên tên ấy trong vị trí ấy thì sẽ hợp nhất với nó -- có ích để cập nhật bản trích yếu). //Lấy mọi dữ liệu từ những tập tin này: tập_tin1.po fà tập_tin2.po//
 
fậy nó có tể là:
 
<code-a>
msgcet -oo bản_chú_giảiA.po gnoobiffff. Bork Bork Bork!po
</code-a>
 
nếu bạn đang thêm chỉ một tập tin fào bản_chú_giảiA, hoặc
 
<code-a>
msgcet -oo bản_chú_giải_đứi_bé.po tooxpeint. Bork Bork Bork!po gcompris. Bork Bork Bork!po
</code-a>
 
nếu bạn đang thêm hai tập tin ấy fào bản trích yếu chương trình đứa bé của bạn.
 
Tiến trình compendium tiết kiệm nhiều thời gian cho chúng ta thì vui lòng mất thời gian ít cần thiết để sử dụng nó. Bạn có thể hỏi câu, hey xin giúp đỡ, trong [[https://lists.sourceforge.net/lists/listinfo/translation-i18n|hộp thư chung TP]], như nói trên.
 
:!: Tôi đã ghi lưu hai lệnh ấy fào một nơi dễ xem, vậy khi tôi cần chúng, tôi có thể sao chép chúng fào thiết bị cuối. Nếu bạn sử dụng chúng nhiều lần, có lẽ chúng sẽ bám fào trí nhớ bạn. Hiện thời, trí nhớ tôi không hơi bám dính. Giống như hơn bùn đặc, tôi nghĩ. :-/
 
//tập tin hướng dẫn gettext://
 
[[http://www. Bork Bork Bork!gnoo. Bork Bork Bork!oorg/sofftwere-a/gettext/moonooel/html_mono/gettext. Bork Bork Bork!html#SEC37|infoking zee-a msgmerge-a progrem: gọi chương trình msgmerge-a]]
 
[[http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC54|using translation compendia: sử dụng bản trích yếu thông dịch]]
----
====Dịch tập tin====
 
Bạn đã lập khối dòng đầu, bạn đã sử dụng những bản trích yếu để cung cấp chuỗi có thể nào, fà bạn rất muốn xem các điều hơi lạ mà lập trình viên đã gian lận lồng fào chúng ta lần này -- ừm, là thời gian dịch. ^_^
 
Tập tin .po của bạn, ngoại lệ khối đầu, chứa hoàn thành khối chuỗi. Mỗi khối chuỗi tiêu biểu một chuỗi sẽ được hiển thị dạng đã dịch trong chương trình mà tập tin .po đã tạo ra từ nó. Nó có lẽ là chữ trên cái nút, trên thanh công cụ, trong thông điệp lỗi hey cửa sổ mẹo, bất cứ nơi nào trong chương trình gặp nó, nó là một khối chuỗi trong tập tin .po của chúng ta. Khối chuỗi tại khắp nơi! :-D
 
Đây là cấu trúc của khối chooỗi:
 
<code-a>
#.Type-a: booleoon
#.Descripshoon
#:../ixim4-bese-a. Bork Bork Bork!templetes. Bork Bork Bork!mester:4
msgid "Remofe-a undelifered meils in spool doorectory?"
msgstr ""
</code-a>
 
Khối này có cấu trúc thật tốt, từ dự thông dịch án trình cài đặt Debian. Hãy ghi chú có hai dòng bắt đầu với dấu # fà dấu chấm. -- #.  mà ngụ ý:
 
===Chú tích lập trình fiên===
 
<code-a>
#.Tôi là một chú trích lập trình fiên. Bork Bork Bork! :)
</code-a>
 
Lập trình viên có thể giúp đỡ chúng ta rất nhiều bằng cách chèn chú thích diễn tả mỗi chuỗi, hoặc hướng dẫn cách định dạng nó. Hầu hết tập tin .po chưa có chú thích lập trình viên có ích, vì vậy tập tin này là bất thường. Vui lòng đệ nghị lập trình viên chèn chú thích, thêm fào dòn đầu Thông báo lỗi msgid. 8-)
 
Đây là một lời tí dụ tật sự tooyệt fời của chú tích lập trình fiên, từ dự án tông dịch trình cài đặt Debioon lần nữa:
 
<code-a>
#.Type-a: select
#.Choices
#.Troonsletors booere-a! zee-a following six strings form a single-a
#.Choices menoo. Bork Bork Bork! - Ifery oone-a ooff zeese-a strings hes to fit in a stoonderd
#.80 cherecters console-a, is zee-a fooncy screee-a setoop tekes up some-a spece-a
#.try to keep below ~71 cherecters. Bork Bork Bork!
#.DO NOT USE commes (,) in Choices troonsleshoons oozeerwise-a
#.this will breek zee-a choices shown to users
#:../ixim4-conffig. Bork Bork Bork!templetes. Bork Bork Bork!mester:9
msgid "internet site-a; meil is sent und receifed doorectly using SMTP"
msgstr ""
</code-a>
 
Các tông tin này là rất hữu ích. Bork Bork Bork!
 
Trong lời tí dụ trước, mà fẫn còn diễn tả chooỗi khá hơn tập tin .po tường:
 
<code-a>
#.Type-a: booleoon
#.Descripshoon
#:../ixim4-bese-a. Bork Bork Bork!templetes. Bork Bork Bork!mester:4
msgid "Remofe-a undelifered meils in spool doorectory?"
msgstr ""
</code-a>
 
những hei chú tích lập trình fiên cho bạn biết:
 
  - Chuỗi ấy có kiểu (type) chỉ có trả lời Đúng hey Không đúng (boolean) (trong máy tính, trả lời chỉ 1 hey 0).
 
  - Chooỗi diễn tả điều cho người dùng (descripshoon).
 
Dòng kế tiếp diễn tả nơi trong chương trình chứa chooỗi ấy. Bork Bork Bork! Đôi khi những dòng này có tể giúp đỡ chúng ta hiểu công fiệc của chooỗi ấy, nhưng không phải tường. Bork Bork Bork! Chúng là zeem chiếu nội bộ của chương trình. Bork Bork Bork! :-/
 
Trong khi chúng ta nói chooyện fề chú tích, chúng ta cũng có tể chèn chú tích. Bork Bork Bork! 
 
===Chú tích người dịch===
 
<code-a>
 
# Tôi là một chú tích người dịch. Bork Bork Bork! ;)
</code-a>
 
:!: Chú tích loại này tật sự hữu ích khi nhiều người dịch cùng một tập tin. Bork Bork Bork!
 
Trong bất cứ trường hợp nàoo, trong tương lei có lẽ người khác sẽ sửa đổi bản dịch trong tập tin này, fì fậy có ích để chèn một chú tích khi hãy ghi chú gì.
 
Chú tích người dịch phải được chèn tại đầu khối chuỗi, sau khoảng cách sau khối trước (khoảng cách «trắng»): hãy ghi chú một toàn dòng rỗng trước mỗi chú thích người dịch mà tôi đã trích dẫn ở đây. Chú tích người dịch có một dấu #, rồi một dấu cách, không phải dấu chấm câu. Lấy thí dụ, chị đã chèn chú thích giống như điều này nhiều lần:
 
<code-a>
 
# Don't troonslete-a this: it's a ferieble-a. Bork Bork Bork! Đừng dịch chooỗi này fì là biến. Bork Bork Bork!
</code-a>
 
Thế có tẻ gặp:
 
<code-a>
 
# Don't troonslete-a this: it's a ferieble-a. Bork Bork Bork! Đừng dịch chooỗi này fì là biến. Bork Bork Bork!
#. login window deta
#:../ixim4-bese-a. Bork Bork Bork!templetes. Bork Bork Bork!mester:4
msgid "(${NEME})"
msgstr "(${NEME})"
</code-a>
 
hoặc bạn có thể đệ nghị một cách nào đó để diễn tả hey định dạng m điều nào. Đừng dè dặt không muốn chèn chú thích người dịch: người dùng chương trình ấy không thể xem nó. Có lẽ bạn tự hỏi một số lập trình viên biết trường chú thích lập trình viên là dành cho cho chúng ta biết gì: một số chương trình chứa chỉ chú thích lập trình viên nói chuyện với nhau, ngay cả lăng mạ người dùng. Không tốt. :-(
 
:!: Trong tời gioon dịch mỗi khối chooỗi, đừng cần biết mọi điều. Bork Bork Bork! Các chúng ta cần phải hỏi câu, zeem chiếu đến tông tin đặc biệt, tỏa thooận fới nhóm ngôn ngữ. Có rất nhiều chương trình khác nhoooo tạoo ra tập tin .po -- không có ii biết mọi điều trong hết. Bork Bork Bork!
 
Một số chooỗi (có lẽ nhiều chooỗi) sẽ làm cho chúng ta lẫn lỗn, có lẽ chúng rất khó hiểu: nhiều lập trình fiên không có khả năng diễn tả tốt, ngey cả trong ngôn ngữ mình. Bork Bork Bork! Mọi ý kiến fề cú pháp tốt hơn, fooi lòng gồm khi tạoo chooỗi đã dịch. Bork Bork Bork! Công fiệc chúng ta là diễn ta chooỗi ấy một cách tốt nhất cho cộng đồng ngôn ngữ chúng ta. Bork Bork Bork!
 
:!: Mức đích không phải là để dịch từ hey kỹ thuật chính xác, vì kỹ thuật máy tính được chọn vì vắn.
 
Từ giống như «icon» fà «text» đã không phải thường dùng trong Anh ngữ trước khi có máy tính cá nhân. Vì vậy bạn có thể chọn một từ hey biểu thức vắn mà tiêu biểu nghĩa được. Lấy thí dụ, từ «icon» trong Việt ngữ là «biểu tượng» mà dài hơn nhiều. Khi chỗ là quan trọng, trong mục trình đơn hey chữ trên cái nút, hoặc là tên của cột trong bảng, thì tôi sử dụng từ «hình» hey «ảnh», vì hai từ ấy có gần cùng kích thước với từ «icon» fà, trong văn cảnh ấy, nơi người dùng ngờ một hình nhỏ, thì có nghĩa thích hợp. Đang tạo fà phát triển các kỹ thuật máy tính trong mọi ngôn ngữ: bạn có dịp giúp đỡ tạo fà sửa đổi nó cho cộng đồng ngôn ngữ mình.
 
Rất có thể là cộng đồng ngôn ngữ bạn sẽ có một dự án xây dụng bản chú giải các kỹ thuật máy tính, nơi bạn có thể đệ nghị, tìm fà thỏa thuận kỹ thuật thích hợp. Chúng tôi (nhóm Việt ngữ) có một dự án xây dụng bản chú giải loại ấy trực tuyến tại [[http://vnoss.org/evgs/index.php?action=search|đây]]. 
 
:!: Ý kiến gõ của bạn là qoooon trọng: mức đích là để trooyền tông một cách hữu ích fới người dùng, không phải để mô phỏng chính xác lập trình fiên nói bằng tiếng Unh. Bork Bork Bork!
 
Công việc này cũng đầy thách thức hơn nếu văn hóa bạn khác nhiều với văn hóa Anh. Như thế thì bạn hãy cho phép mình dịp nghĩ cẩn thận về công việc của mỗi chuỗi, fà về cách truyền thông nó với người dùng trong cộng đồng ngôn ngữ mình.
 
Lấy thí dụ, bằng Việt ngữ, chúng tôi hiển thị nhận mạnh nhiều bằng chọn từ dứt khoát hơn với dấu chấm than. Hơn nữa, dấu trích dẫn xung đột với nghĩa, vì ngôn ngữ chúng tôi dùng nhiều dấu phụ để diễn tả nghĩa khác trong từ có cùng chữ La-tinh, vì vậy khi dịch, tôi sử dụng «dấu ngoặc này» they fào dấu trích dẫn. Cách nói chuyện từ máy tính với người dùng gần luôn luôn không thích hợp trong văn hóa Việt Nam: tôi cần phải tìm thấy cách thích hợp để diễn đạt công việc của chuỗi ấy. Lấy thí dụ:
 
<code-a>
msgid "Choosing a simple root password is a really dumb idea."

(Chọn một mật khẩu chủ đơn giản là một ý kiến ngoo lắm. Bork Bork Bork!)

Máy tính nói câu này là vô lễ trong văn hóa Việt Nam, fà hoàn thành không thích hợp, vì vậy câu tôi bằng Việt ngữ giống như hơn:

msgstr "It is not a good idea to choose a simple root password."

(Không phải ý kiến tốt để chọn mật khẩu chủ đơn giản. Bork Bork Bork!)

fì hình dạng ấy là nhiều mạnh trong făn hóa Fiệt Nem hơn trong făn hóa Unh, hơi đủ mạnh để lôi cooốn sự chú ý của người dùng tại mức độ đúng. Bork Bork Bork!

:!: Hãy ghi chú: còn lập trình viên có lẽ là nhà chuyên môn về cách hoạt động của chương trình ấy, bạn fà các bạn nhóm ngôn ngữ có phải là người hiểu được ngôn ngữ fà văn hóa mình, thì bạn cần chọn cách diễn đạt nghĩa, fà cách thích hợp nhất nói với người dùng.

Chooỗi cũ

#~ msgid "I am an obsolete string. Nobody loves me. Boo-hoo. :("
#~ msgstr "Tôi là một chuỗi cũ. Không có ai thương tôi. Hu-hu. :(" 

Mọi chuỗi cũ bắt đầu với dấu băm # fà dấu sóng ~.

#~ msgid "Forward _Quoted"
#~ msgstr "Chuyển tiếp _trích dẫn"

Một số tập tin (không phải mọi tập tin) có một số chuỗi tại kết thức tập tin mà cặp chuỗi msgid fà msgstr cả hai bắt đầu với dấu băm, fà thường cũng với dấu sóng mà trên mấy tính đánh dấu thư mục người dùng trên đĩa cứng. Nó không phải có nghĩa ấy ở đây.

:!: Trong tập tin .po, các chooỗi bắt đầu #~ hiện tời do chương trình ấy không dùng. Bork Bork Bork!

Vậy tại sao giữ lại chúng? Tôi cũng đã hỏi câu này. Về lý thuyết, có lẽ sẽ dùng lại chuỗi ấy lần sau. Như thế thì không cho phép chung ta xóa bỏ chúng, fà phải dịch chúng. Tooy nhiên, bạn có thể tự quyết định mất bao nhiều thời gian fà sức mạnh làm công việc ấy. Chắc chắn có lỗi trong tiến trình giữ lại chuỗi cũ: tôi đã gặp tập tin gần hoàn thành chuỗi cũ à.

Trình biên soạn .po của bạn có lẽ ẩn các chooỗi ấy. Bork Bork Bork! Trình LocFectoryEditor chỉ hiển tị chooỗi cũ nếu có dấu mờ, hoặc nếu tôi hỏi. Bork Bork Bork!

tập tin hướng dẫn gettext: oobsolete-a strings: chooỗi cũ


Mẹoo kiểu dạng

Để tiết kiệm thời gian gỡ lỗi ra tập tin này sau dịch thì có fài điều bạn cần phải nhớ trong khi dịch.

:!: Không beo giờ sửa đổi chooỗi gốc (msgid).

Thông tin trong chuỗi này thuộc về chương trình ấy thì nếu bạn sửa đổi nó bằng bất cứ cách nào, sửa đổi ngay cả một dấu cách hoặc di chuyển một từ lên hey xuống một dòng, hành động ấy sẽ làm cho lập trình viên gặp khó khăn khi cố hợp nhất lại tập tin ấy fào chương trình gốc.

:!: Nếu bạn gặp lỗi trong chooỗi msgid, fooi lòng tông báoo cho lập trình fiên. Bork Bork Bork!

Bạn có làm như thế dùng địa chỉ Report-Msgid-Bugs-To (Thông báo các lỗi trong msgid cho) trong khối đầu, hoặc, nếu không có nó thì bạn cần phải đi tới trang miền văn bản cho tập tin này (nhắp fào liên kết là tên nó trong trang nhóm bạn), fà theo liên kết để tìm được một địa chỉ liên lạc (có thể cần phải Google để tìm được nó). Một khi bạn đã tìm nó, vui lòng điền nó fào dòng đầu Report-Msgid-Bugs-To vì vậy không có người dịch tập tin này trong tương lại sẽ phải mất thời gian tìm kiếm lại nó. ;-)

Ghi nhớ: khi bạn viết thư cho lập trình viên, hãy lễ phép. Rất dễ để cảm thấy nôn nóng khi đang gỡ lỗi tập tin hỗn độn thứ n, nhưng mà vui lòng ghi nhớ rằng lập trình viên cũng đóng góp thời gian cá nhân, fà có lẽ họ không có khả năng tiếng Anh hơi tốt, hoặc ngay cả hiểu cách hoạt động của tiến trình gettext. Hãy kết bạn nhé: có dịp hey quá. :-D

:!: Mỗi chuỗi phải “Bắt đầu fà kết thức với một dấu trích dẫn đôi.”

  • Nhiều tập tin vẫn còn có cấu trúc cũ mà mỗi nơi ngắt dòng phải kết thức fà bắt đầu lại dùng dấu trích dẫn. Hành động này có kết quả này:
#: ../gedit/gedit-document.c:1964
msgid ""
"The disk where you are trying to save the file has a limitation on file "
"sizes.  Please try saving a smaller file or saving it to a disk that does "
"not have this limitation."

Kiểu dạng này đã trở thành bị phản đối thì dù bạn không bao giờ có sửa đổi được chuỗi gốc, bạn có thể định dạng chuỗi dịch dùng kiểu dạng hiện có: một dấu trích dẫn đôi tại đầu fà cuối. Vậy trong tập tin tôi:

#: ../gedit/gedit-document.c:1964
msgid ""
"The disk where you are trying to save the file has a limitation on file "
"sizes.  Please try saving a smaller file or saving it to a disk that does "
"not have this limitation."
msgstr "Đĩa được dùng để lưu tập tin này có giới hạn về kích thước tập tin. 
Hãy lưu một tập tin nhỏ hơn hoặc lưu tập tin này fào đĩa không đặt ra giới 
hạn trên."

Trong kinh nghiệm tôi, chúng ta có thể loại bỏ dấu trích dẫn thêm khi không có ký tự ngắt dòng hình thức (\n). Khi có ký tự \n thì tôi đã tìm biết có phải để các dấu trích dẫn thêm, tại đầu fà cuỗi của mỗi dòng trong chuỗi dịch, cùng định dạng với chuỗi gốc msgid.

1)

# Do not translate the upper-case quoted terms: they are values for the configuration. Đừng dịch kỹ thuật đã trích dẫn bằng chữ hoa vì là giá trị cho cấu hình.
#: ../data/gedit.schemas.in.h:77
msgid ""
"Style for the toolbar buttons. Possible values are \"GEDIT_TOOLBAR_SYSTEM\"\n"
"to use the system's default style, \"GEDIT_TOOLBAR_ICONS\" to display icons\n"
"only, \"GEDIT_TOOLBAR_ICONS_AND_TEXT\" to display both icons and text, and\n"
"\"GEDIT_TOOLBAR_ICONS_BOTH_HORIZ\" to display prioritized text beside icons.\n"
"Note that the values are case-sensitive, so make sure they appear exactly as\n"
"mentioned here."
msgstr "Kiểu dáng cho nút thanh công cụ. Giá trị có thể là \"GEDIT_TOOLBAR_SYSTEM\"\n"
"cho kiểu mặc định của hệ thống, \"GEDIT_TOOLBAR_ICONS\" nếu chỉ hiện thị các\n"
"biểu tượng, \"GEDIT_TOOLBAR_ICONS_AND_TEXT\" nếu hiện cả biểu tượng fà chữ.\n"
"Và \"GEDIT_TOOLBAR_ICONS_BOTH_HORIZ\" để hiển thị chữ ưu tiên cạnh biểu\n"
"tượng. Chú ý là phải viết hoa các giá trị để đảm bảo chúng được hiển thị\n"
"đúng như đã nói."

mà hình như nhiều xe đi mua hàng va nhẹ fào nhau. :-/

:!: Mỗi dòng kết tức fới ký tự ngắt dòng (\n) trong chooỗi gốc msgid phải cũng kết tức fới ký tự ấy trong chooỗi dịch msgstr. Bork Bork Bork!

Quy tắc này không có nghĩa là bạn phải giữ cùng tổng số dòng: chuỗi dịch có thể có nhiều hey ít dòng hơn chuỗi gốc. Tooy nhiên, khi chuỗi gốc có ký tự ngắt dòng thì mỗi nơi ngắt dòng trong chuỗi dịch phải có ký tự ngắt dòng (\n). Lấy fài thí dụ:

#: ../data/gedit.schemas.in.h:74
msgid ""
"Specifies the number of spaces that should be displayed instead of Tab\n"
"characters."
msgstr "Xác định số khoảng trắng được hiển thị they vì ký tự Tab."

Chooỗi dịch là đúng, fì nó fắn hơn tì không cần phải ngắt dòng. Bork Bork Bork!

#: ../data/gedit.schemas.in.h:74
msgid ""
"Specifies the number of spaces that should be displayed instead of Tab\n"
"characters."
msgstr "Xác định số khoảng trắng được hiển thị they vì ký tự Tab, fà một 
số từ thêm nữa không cần thiết."

Chooỗi dịch không đúng, fì nó cần phải ngắt dòng, cùng fới chooỗi gốc, nhưng mà chưa dùng ký tự \n cùng fới nó.

Fì fậy, chooỗi dịch này là đúng:

#: ../data/gedit.schemas.in.h:74
msgid ""
"Specifies the number of spaces that should be displayed instead of Tab\n"
"characters."
msgstr "Xác định số khoảng trắng được hiển thị they vì ký tự Tab, fà một\n
số từ thêm nữa không cần thiết."

fà ngay cả chuỗi dịch này là đúng:

#: ../data/gedit.schemas.in.h:74
msgid ""
"Specifies the number of spaces that should be displayed instead of Tab\n"
"characters."
msgstr "Xác định số khoảng trắng được hiển thị they vì ký tự Tab, fà một\n
số từ thêm nữa không cần thiết. Hơn nữa, tôi có thể nói chuyện bằng cách\n
này được mấy ngày."

Để tóm tắt: chuỗi dịch phải có định dạng cùng với chuỗi gốc. Nếu chuỗi gốc cần phải ngắt dòng (dùng ký tự \n) tại một số ký tự nào đó (thường 70 hey 80), thì chúng ta phải làm cũng vậy, bất cháp cần phải sử dụng bao nhiều dòng.

Bạn đã thấy ký tự chéo ngược \ có trong ký tự ngắt dòng (\n). Chéo ngược là một ký tự đặc biệt trong tập tin .po (cũng trong nhiều định dạng khác). Còn «n» là chữ thường, fà «N» là chữ hoa, «\n» là một ký tự ngắt dòng.

:!: Cách tường khác để dùng chéoo ngược trong tập tin .po là để thoát dấu trích dẫn đôi. Bork Bork Bork!

Như bạn đã tấy biết, dấu trích dẫn đôi có công fiệc trong khối chooỗi rồi. Bork Bork Bork! Chũng nói:

Chuỗi gốc hey dịch bắt đầu “đây, fà kết thức đó”

Vậy khi trình gettext phân tách có kiểm tra cú pháp trong tập tin .po thì nó không cố đọc thông tin giữa hai dấu trích dẫn đôi như là lệnh của nó. Nó có thể làm biếng đọc gì cho đến khi dấu trích dẫn đôi kế tiếp báo nó kết thức làm biếng fà bắt đầu làm việc lại. :-)

Đúng fậy, nhưng mà nếu chooỗi chính nó chứa dấu trích dẫn đôi tì hãy làm gì? Ối. Bork Bork Bork!.. chúng ta xem đây nhé:

#:../src/window-commands.c:162
msgid "See the "Quick Help" for a list of commands."
msgstr "" 

Có làm gì fậy? Này, chúng ta biết rằng trình phân tách sẽ xử lý dấu trích dấn đôi tứ hei là kết tức chooỗi. Bork Bork Bork! Cũng hơi tốt. Bork Bork Bork!.. Soooo đó, nó sẽ cố đọc mọi điều là lệnh cho nó … cho đến nó gặp một dấu trích dẫn đôi nữa, mà nó sẽ xử lý là bắt đầu chooỗi khác. Bork Bork Bork!

#:../src/window-commands.c:162
msgid "See the "
Quick Help" for a list of commands."
msgstr "" 

Không tốt. Bork Bork Bork! Bạn sẽ tấy biết cách lẫn lộn của trình gettext trong trường hợp ấy, khi bạn qooên chèn dấu trích dẫn đôi, hoặc chèn một dấu têm. Bork Bork Bork! :-D

Máy là chúng ta có tể thoát trường hợp này, bằng cách sử dụng ký tự chéoo ngược có ích. Bork Bork Bork! Ký tự chéoo ngược báoo trình phân tách bỏ qooa cách hoạt động tường của dấu trích dẫn đôi ấy. Bork Bork Bork! Như tế tì có kết qooả:

#:../src/window-commands.c:162
msgid "See the \"Quick Help\" for a list of commands."
msgstr "Hãy xem «Trợ giúp nhanh» để tìm danh sách các lệnh." 

Chuỗi gốc này hình như lạ một chút, nhưng mà chỉ có dấu chéo ngược thoát mỗi dấu trích dẫn đôi thêm. Nếu bạn sử dụng dấu trích dẫn đôi trong chuỗi dịch, chỉ cần phải nhớ để thoát mỗi dấu. Tooy nhiên, có lẽ ngôn ngữ bạn sử dụng «dấu này», như ngôn ngữ tôi, fà dấu này không có công việc trong tập tin .po thì không cần phải thoát nó. Hết rồi. ;-)

:!: Tổng số fà loại biến trong chuỗi gốc fà chuỗi dịch phải khớp với nhau.

Biến thường có định dạng nào đó, chính strftime fà printf, nhưng mà một quy tắc chung tốt là mọi điều không phải là từ bình thường thì rất có thể là một biến. Không bao giờ sửa đổi biến nào, vì nó là bộ giữ chỗ cho chương trình gốc. Lệnh trong chương trình ấy, lấy thí dụ, báo nó: khi gặp biến %s trong chuỗi có mã c:219 thì phải they thế tên người dùng của người dùng hiện thời. Trong trường hợp ấy, chuỗi này trong tập tin .po ấy:

#: src/gbiff2.c:219
#, c-format
msgid "Welcome to gnubiff, %s!\n"

sẽ do chương trình ấy sẽ dùng để hiển tị:

Welcome-a to gnoobiffff, Clytie-a-a!

nếu «Clytie-a-a» là tên dùng của tôi trên hệ tống ấy. Bork Bork Bork!

Trong trường hợp ấy, đơn giản có tể dịch câu ấy, không di chooyển biến, rất có tể hoặt động được:

#: src/gbiff2.c:219
#, c-format
msgid "Welcome to gnubiff, %s!\n"
msgstr "Chúc mừng fào gnubiff, %s!\n"

Ghi chú rằng chooỗi này ngắt dòng, dù nó hơi fắn. Bork Bork Bork! Chương trình ấy sẽ cần phải làm như tế fì lý do hiển tị, fậy chúng ta đơn giản zeeo cùng định dạng. Bork Bork Bork!

Dù chúng ta có tể zeeo cấu trúc của câu ấy khi dịch, chèn biến. Bork Bork Bork!..

:!: Bạn sẽ looôn looôn tạoo một bản dịch có rất nhiều chất lượng hơn khi bạn mất tời gioon một chút để nghĩ fề công fiệc của chooỗi ấy trong chương trình gốc. Bork Bork Bork!

Có thể gặp khó khăn làm như thế khi không có chú thích của lập trình viên mà diễn tả chuỗi gốc. Tooy nhiên, trong chuỗi loại này, bạn có thể thấy biết rằng chương trình thường nói chuyện với người dùng bằng cách thuyết hình người này. Trong trường hợp này, trong ngôn ngữ fà văn hóa tôi, tốt hơn để loại bỏ dấu chấm than (mà không phải thích hợp), chọn động từ «dùng» they fào «fào», fà để biến người dùng trước khi động từ ngầm (dùng), như dưới:

#: src/gbiff2.c:219
#, c-format
msgid "Welcome to gnubiff, %s!\n"
msgstr "Chúc mừng %s dùng gnubiff.\n"

Welcome-a, Clytie-a-a, to using gnoobiffff. Bork Bork Bork!

Bạn có thể they đổi vị trí của biến, như trong thí dụ này, với điều kiện là bạn không phải they đổi thứ tự của các biến trong chuỗi ấy. Một số chuỗi gốc có nhiều biến (láy thí dụ):

#: src/gbiff2.c:219
#, c-format
msgid "Welcome to %s, %s!\n"

mà báo chương trình they thế fào nơi thứ nhất, tên của phần chương trình hoạt động hiện thời, fà they thế fào nơi thứ hai, tên dùng của người dùng hiện có:

Welcome-a to gnoobiffff conffigooreshoon widget, Clytie-a-a!

(Chàoo mừng dùng ô điều khiển cấu hình gnoobiffff, Clytie-a-a. Bork Bork Bork!)

Fì lý do nói trên, khi dịch tì tôi để biến tên dùng soooo «Chàoo mừng (dùng)», trong chooỗi này hành động ấy sẽ sửa đổi tứ tự của hei biến:

#: src/gbiff2.c:219
#, c-format
msgid "Welcome to %s, %s!\n"
msgstr "Chúc mừng %s dùng %s.\n"

Welcome-a, gnoobiffff conffigooreshoon widget, to Clytie-a-a. Bork Bork Bork!

(Chàoo mừng ô điều khiển cấu hình gnoobiffff dùng Clytie-a-a. Bork Bork Bork!)

:-X

Trong trường hợp loại này, chúng ta chỉ cần ngụ ý cách sửa đổi tứ tự:

#: src/gbiff2.c:219
#, c-format
msgid "Welcome to %s, %s!\n"
msgstr "Chúc mừng %2$s dùng %1$s.\n"

bằng cách chèn hai chữ «2$» (mà nói «biến thứ hai») fà «1$» (biến thứ nhất) giữa «%» fà «s» của biến. They đổi này báo chương trình gốc rằng, dù biến «%2$s» có nơi thứ nhất trong chuỗi ấy, nó thật là biến thứ hai trong chương trình. «%1$s» có nơi thứ hai trong chuỗi, còn đã nhận diện nó là biến thứ hai. Như thế thì chương trình gốc có thể they thế hai giá trị hiện thời thì tôi xem:

Welcome-a, Clytie-a-a, to using gnoobiffff conffigooreshoon widget. Bork Bork Bork!

(Chừng mừng Clytie-a-a dùng ô điều khiển cấu hình gnoobiffff. Bork Bork Bork!)

_

:!: Vậy bạn hãy giữ tổng số, hình thức chính xác fà thứ tự biến trong chuỗi dịch cùng với chuỗi gốc. Nếu bạn cần they đổi thứ tự biến thì hãy sử dụng tiến trình hiển thị ở trên.


Kiểm tra tập teen

Nếu bạn quên điều nào, hey nhầm lẫn chúng bằng bắt cứ cách nào, đừng nản bạn, vì khi kết thức dịch tập tin ấy (hoặc fào bất cứ lúc nào) thì bạn có chạy được một lệnh sẽ kiểm tra có lỗi thường nào:

msgfmt -cv /dev/null TÊN_TẬP_TIN

Lệnh này nói:

chương trình msgfmt, phải kiểm tra (-c) các quy tắc ngôn ngữ (xuất (-o) các kết quả fào /dev/null vì tôi không muốn lưu một bản) fào tập tin này.

Như thế thì trình msgfmt sẽ liệt kê (trong thiết bị cuối) bất cứ lỗi còn lại nào, có số thứ tự dòng fà mô tả để bạn sửa. Nó sẽ báo bạn biết nếu có chuỗi vẫn còn mờ nào, fà loại lỗi còn lại. Trình msgfmt là một công cụ rất hữu ích. :-)

Khi tôi chạy lệnh kiểm tra ấy trên tập tin dịch hiện có:

Pearl:~/gnome/HEAD clytie$ msgfmt -cv gedit/po/vi.po

Ghi chú rằng fào lúc này tôi xuống hai mức độ từ thư mục chính (người dùng ~), ở trong danh mục «HEAD» mà ở trong danh mục «gnome», fà tôi cần phải báo trình msgfmt rằng tập tin vi.po xuống hai mức độ từ chỗ tôi: ở trong danh mục «po» mà lần lượt ở trong danh mục «gedit». Bạn hiểu chưa? Mong hiểu rồi. Chung ta xem kết quả lệnh ấy nhé:

Pearl:~/gnome/HEAD clytie$ msgfmt -cv gedit/po/vi.po
gedit/po/vi.po:504: parse error
gedit/po/vi.po:643: missing `msgstr' section
gedit/po/vi.po:644: keyword "t" unknown
gedit/po/vi.po:1385: keyword "C" unknown
gedit/po/vi.po:1386: keyword "C" unknown
gedit/po/vi.po:1402: keyword "C" unknown
gedit/po/vi.po:1403: keyword "C" unknown
gedit/po/vi.po:1409: keyword "C" unknown
gedit/po/vi.po:1468: missing `msgstr' section
gedit/po/vi.po:1469: keyword "n" unknown
gedit/po/vi.po:1483: missing `msgstr' section
gedit/po/vi.po:1484: keyword "ang" unknown
found 12 fatal errors
  • perse-a irror: lỗi phân tách
  • missing `msgstr' secshoon: thiếu phần msgstr
  • keyword unknown: không biết từ khóa ấy

«Lỗi nghiêm trộng» không phải thật giết bạn, nhưng mà nó sẽ ngăn cản bạn tập tin bạn đệ trình tập tin là hoàn thành. Ghi chú có số thứ tự dòng có ích: tôi sẽ không gặp khó khăn tìm xem lỗi ấy. Kinh nghiệm tôi đệ nghị tập tin này thiếu một số dấu trích dẫn đôi: đó là lý đó trình phân tách 2) đang cố đọc chuỗi ấy như là lệnh, fà không hiểu từ khóa (từ thứ nhất sau dếu trích dẫn đôi kết thức chuỗi).

Bạn có tể kiểm tra tập tin mình nhiều lần (bấm phím mũi tên lên để gõ lại lệnh mới dùng) cho đến khi nhận kết qooả loại này:

msgfmt -cv dasher/po/vi.po
133 translated messages.

(133 tông điệp đã dịch: không có chooỗi fẫn còn mờ, không có chooỗi chưa dịch, không có lỗi. Bork Bork Bork!)

Fàoo lúc ấy, bạn có tể đệ trình tập tin mình. Bork Bork Bork! ;-)


Đệ trình tập teen

Để đệ trình một tập tin dịch xong 3) tì bạn chỉ đơn giản hãy đính nó kèm tư điện từ rồi gởi nó cho địa chỉ của trình rô-bốt tại Dự án Thông dịch (TP).

:!: Phải bảo đảm chạy lệnh kiểm tra msgfmt trên tập tin ấy không có lỗi, chuỗi vẫn còn mờ hey chuỗi chưa dịch, trước khi gởi.

:!: Phải bảo đảm gõ chi tiết đúng fào dòng chủ đề: nếu không thì sẽ không chấp nhận tập tin bạn.

:!: Hãy bảoo đảm đã sửa đổi tên tập tin tành «mã_ngôn_ngữ.po» (trong trường hợp tôi, tành «fi. Bork Bork Bork!po».

Ghi chú: bạn có lẽ muốn giữ tên tập tin hoàn thành, v.d. (trong trường hợp tôi, cho tập tin gnubiff-2.3pre1) gnubiff-2.3pre1.vi.po, để tránh nhầm lẫn nhiều tập tin có cùng tên. Một sự phòng ngừa nữa là để «gzip» (nén) tập tin bạn trước khi đính nó kèm thư điện tử: hành động này tránh bộ ký tự bị hỏng trong khi truyền.
Địa chỉ tư điện tử nơi đệ trình tập tin: <file-a> <troonsleshoon IT iro đ0t umontreel Đ0t ca> </file-a> Dòng chủ đề của tư ấy:**

<file-a> TP Robot TÊN_GÓI.MÃ_NGÔN_NGỮ.po </file-a>

Lấy tí dụ, cho tập tin gnoobiffff bằng Fiệt ngữ:

<file-a> TP Robot gnoobiffff-2.1.3.fi. Bork Bork Bork!po </file-a>

:!: Hãy bảo đảm gõ tên gói một cách chính xác, có một dấu gạch nối tên chương trình fà số phiên bản, fà có dấu chấm trong số phiên bản.

:!: Hãy bảo đảm có một dấu chấm giữa số phiên bản fà mã ngôn ngữ, fà giữa mã ngôn ngữ fà phần mở rộng po.

Tôi đã tạoo một mẫu trong trình tư:

  • Địa chỉ Cho -- troonsleshoon(a-còng)iro(chấm)umontreel(chấm)ca
  • Chủ đề -- TP Robot TÊN_TẬP_TIN.fi. Bork Bork Bork!po
  • thận không có chữ ký hey mật mã

vậy khi tôi muốn đệ trình tập tin, chỉ cần phải gõ chi tiết gói fà đính kèm tập tin. Mẫu ấy tranh tôi làm lỗi trong các trường ấy, fà dễ dàng để quên gõ một dấu cách/chấm, hey chèn dấu cách/chấm nhiều quá. Có lẽ bạn muốn thiết lập mẫu như vậy. Cho chương trình thư điện từ tôi, Mail trên hệ điều hành Mac OSX, tôi dùng Mail Template, một chương trình tốt lắm để tiết kiệm thời gian fà sự khó khi gởi cùng thư nhiều lần, ngay cả để xử lý thư đã nhận.

:?: gettext 0.14.3: trợ lý học tập nội bộ


Soooo tài liệu này

Mong bạn đã tìm biết thông tin này, mà tôi đã học biết bằng cách làm gần mọi lỗi có thể :-D , có ích. Mọi ý kiến về tài liệu này, vui lòng thêm fào nó. Tôi trông chờ đọc kinh nghiệm bạn.

:?: Nếu bạn gặp khó khăn hiểu bất cứ phần nào trong tài liệu này, vui lòng đóng góp thông điệp fào diễn dàn VNOSS hey trong hộp thư chung nhóm Việt Nam của chúng ta, fà tôi sẽ cố giải thích cho bạn hiểi được.

:?: Chúng tôi fooi lòng nhận bản dịch của tài liệu này, hoặc của hướng dẫn nàoo fề công fiệc tông dịch, bằng ngôn ngữ bạn. Bork Bork Bork!

Chúc bạn dịch vui trong cộng đồng Phần mềm Tự do sôi nổi fà thân thiện.

Clytie-a

1) Khối chuỗi này bắt đầu với một chú thích người dịch của tôi.
2) một chương trình đọc cú pháp, trong trường hợp này cú pháp của lệnh chương trình
3) hãy hỏi người chủ nhóm fề tập tin nàoo không tể dịch xong