KDE Localization/vi/checking: Difference between revisions

From KDE Community Wiki
(Write about the last check: by context)
(Update cho KF6 và các đường dẫn chính xác đến repo)
 
(10 intermediate revisions by one other user not shown)
Line 1: Line 1:
Trang này mô tả các bước để người dịch kiểm tra một bản dịch trước khi chuyển cho người điều phối. Tài liệu hướng dẫn bản địa hoá của KDE có đề cập đến các bước này ở https://l10n.kde.org/docs/translation-howto/check-gui.html.
Trang này mô tả các bước để người dịch kiểm tra một bản dịch trước khi chuyển cho người điều phối. Tài liệu hướng dẫn địa phương hoá của KDE có đề cập đến các bước này ở https://l10n.kde.org/docs/translation-howto/check-gui.html.


=== Kiểm tra cú pháp tệp PO ===
=== Kiểm tra cú pháp tệp PO ===
Line 8: Line 8:


=== Kiểm tra đối số đủ hay không ===
=== Kiểm tra đối số đủ hay không ===
Một <small>tệp quy tắc</small> (<small>rule file</small>) Pology đơn giản đã được đặt tại {{Path | <KDE_SVN>/trunk/l10n-support/scripts/pology/args-accels.rules}}. <small>Tệp quy tắc</small> này định ra các <small>quy tắc</small> rằng xâu đích phải có 3 đối số đầu tiên (%1, %2, %3) nếu xâu nguồn có đối số tương ứng. Ví dụ nếu xâu nguồn chứa "%2" mà xâu đích không có "%2" thì Pology khi chạy kiểm tra các <small>quy tắc</small> này sẽ báo lỗi.
Một <small>tệp quy tắc</small> (<small>rule file</small>) Pology đơn giản đã được đặt tại {{Path | [[KDE Localization/vi/conventions#kde-svn|<KDE_SVN>]]/trunk/l10n-support/scripts/pology/args-accels.rules}}. <small>Tệp quy tắc</small> này định ra các <small>quy tắc</small> rằng chuỗi đích phải có 3 đối số đầu tiên (%1, %2, %3) nếu chuỗi nguồn có đối số tương ứng. Ví dụ nếu chuỗi nguồn chứa "%2" mà chuỗi đích không có "%2" thì Pology khi chạy kiểm tra các <small>quy tắc</small> này sẽ báo lỗi.


Xem [[KDE Localization/vi/components#Pology|cách kiểm tra bằng Pology]]
Xem [[KDE Localization/vi/components#Lokalize-config|cách cấu hình Lokalize để kiểm tra bằng Pology]]


<div class="alert alert-warning" style="overflow:auto;">
<div class="alert alert-warning" style="overflow:auto;">
Chú ý:<br>
Chú ý:<br>
<small>Tệp quy tắc</small> trên mới ở dạng đơn giản, chưa xét đến trường hợp xâu đích có một đối số mà xâu nguồn '''không''' có.<br>
<small>Tệp quy tắc</small> trên mới ở dạng đơn giản, chưa xét đến trường hợp chuỗi đích có một đối số mà chuỗi nguồn '''không''' có.<br>
Thêm nữa, có thể có thông điệp có nhiều hơn 3 đối số, Pology khi kiểm tra các quy tắc này sẽ không xử lí đối số thứ tư.
Thêm nữa, có thể có thông điệp có nhiều hơn 3 đối số, Pology khi kiểm tra các quy tắc này sẽ không xử lí đối số thứ tư.
</div>
</div>


=== Kiểm tra <small>nút tăng tốc</small> (<small>accelerator</small>) ===
=== Kiểm tra <small>nút tăng tốc</small> (<small>accelerator</small>) ===
<small>Tệp quy tắc</small> Pology trên cũng định ra một <small>quy tắc</small> rằng xâu đích phải có dấu tăng tốc (&) nếu xâu nguồn có, Pology sẽ báo lỗi khi kiểm tra <small>quy tắc</small> này mà xâu đích không có dấu tăng tốc nào.
<small>Tệp quy tắc</small> Pology trên cũng định ra một <small>quy tắc</small> rằng chuỗi đích phải có dấu tăng tốc (&) nếu chuỗi nguồn có, Pology sẽ báo lỗi khi kiểm tra <small>quy tắc</small> này mà chuỗi đích không có dấu tăng tốc nào.


<div class="alert alert-warning" style="overflow:auto;">
<div class="alert alert-warning" style="overflow:auto;">
Chú ý:<br>
Chú ý:<br>
Tương tự như với việc kiểm tra đối số, <small>quy tắc</small> này chưa xét đến trường hợp xâu đích có dấu tăng tốc mà xâu nguồn '''không''' có, hoặc khi cả hai xâu đều có nhưng số lượng dấu tăng tốc ở hai xâu là khác nhau (tuy nhiên có thể coi đây là trường hợp khó xảy ra).<br>
Tương tự như với việc kiểm tra đối số, <small>quy tắc</small> này chưa xét đến trường hợp chuỗi đích có dấu tăng tốc mà chuỗi nguồn '''không''' có, hoặc khi cả hai chuỗi đều có nhưng số lượng dấu tăng tốc ở hai chuỗi là khác nhau (tuy nhiên có thể coi đây là trường hợp khó xảy ra).<br>
Một vấn đề quan trọng nữa cần kiểm tra với <small>nút tăng tốc</small> là liệu có <small>nút tăng tốc</small> nào xuất hiện nhiều hơn 1 lần trong cùng một trình đơn không. Nếu bạn kiểm tra khả năng trùng lặp này bằng cách tìm và so sánh thủ công trong bản dịch, bạn phải rất cẩn thận. Hoặc hãy [[KDE Localization/vi/checking#Ki.E1.BB.83m_tra_theo_ng.E1.BB.AF_c.E1.BA.A3nh|kiểm tra theo ngữ cảnh]] để có thể chắc chắn hơn.
Một vấn đề quan trọng nữa cần kiểm tra với <small>nút tăng tốc</small> là liệu có <small>nút tăng tốc</small> nào xuất hiện nhiều hơn 1 lần trong cùng một trình đơn không. Nếu bạn kiểm tra khả năng trùng lặp này bằng cách tìm và so sánh thủ công trong bản dịch, bạn phải rất cẩn thận. Hoặc hãy [[KDE Localization/vi/checking#Ki.E1.BB.83m_tra_theo_ng.E1.BB.AF_c.E1.BA.A3nh|kiểm tra theo ngữ cảnh]] để có thể chắc chắn hơn.
</div>
</div>
Line 29: Line 29:
=== Kiểm tra cú pháp XML ===
=== Kiểm tra cú pháp XML ===
Pology hỗ trợ kiểm tra cú pháp XML với <small>sàng</small> (<small>sieve</small>) <code>check-kde4</code>.
Pology hỗ trợ kiểm tra cú pháp XML với <small>sàng</small> (<small>sieve</small>) <code>check-kde4</code>.
Sàng <code>check-tp-kde</code> cũng có thể được dùng để [http://pology.nedohodnik.net/doc/user/en_US/index-mono.html#sv-check-tp-kde phát hiện lỗi trong toàn bộ dự án dịch], với điều kiện cấu trúc thư mục được giữ [[KDE Localization/vi/components#svn-depth|giống như ở trên kho]]. Đội địa phương hoá của KDE [https://invent.kde.org/sysadmin/l10n-scripty/-/blob/master/posieve_check-tp-kde_results_to_webpage.sh sử dụng sàng này] để tạo ra [https://l10n.kde.org/check-kde-tp-results/trunk-kf5/ trang báo lỗi] cho từng ngôn ngữ. Đội dịch tiếng Nga có [[RU/%D0%9F%D0%B5%D1%80%D0%B8%D0%BE%D0%B4%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D0%B2_%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B8_KDE#.D0.9F.D1.80.D0.BE.D0.B2.D0.B5.D1.80.D0.BA.D0.B0_.D1.80.D0.B0.D0.B7.D0.BC.D0.B5.D1.82.D0.BA.D0.B8_XML | hướng dẫn dùng sàng này]], tuy nhiên vì một lí do nào đó tôi không thể chạy được lệnh tương tự với thư mục tiếng Việt. Mong nhận được sự trợ giúp ở đây.


=== Kiểm tra theo ngữ cảnh ===
=== Kiểm tra theo ngữ cảnh ===
Có các cách sau:
Có các cách sau:
* Nội dung xâu ngữ cảnh "msgctxt" và [[KDE Localization/vi/components#T.E1.BB.87p_PO|<small>dẫn giải</small>]] (<small>comment</small>) của người lập trình, nếu có, đều được hiển thị ở ô <small>Siêu dữ liệu đơn vị</small> (<small>Unit metadata</small>) trong Lokalize.
* Nội dung chuỗi ngữ cảnh "msgctxt" và [[KDE Localization/vi/components#T.E1.BB.87p_PO|<small>dẫn giải</small>]] (<small>comment</small>) của người lập trình, nếu có, đều được hiển thị ở ô <small>Siêu dữ liệu đơn vị</small> (<small>Unit metadata</small>) trong Lokalize.
* Thông tin về nơi thông điệp xuất hiện trong mã nguồn cũng được hiển thị ở ô này trong Lokalize, dưới dạng liên kết mà khi bấm vào, bạn sẽ được Lokalize hỏi là tìm tệp mã nguồn đó trên máy cục bộ hay ở {{Path | lxr.kde.org}}. Nếu bạn có thể đọc và hiểu (đoán) được mã nguồn, trong nhiều trường hợp thì thế là đủ để hiểu được ý nghĩa thông điệp cần dịch.
* Thông tin về nơi thông điệp xuất hiện trong mã nguồn cũng được hiển thị ở ô này trong Lokalize, dưới dạng liên kết mà khi bấm vào, bạn sẽ được Lokalize hỏi là tìm tệp mã nguồn đó trên máy cục bộ hay ở {{Path | lxr.kde.org}}. Nếu bạn có thể đọc và hiểu (đoán) được mã nguồn, trong nhiều trường hợp thì thế là đủ để hiểu được ý nghĩa thông điệp cần dịch.
* Bạn có thể thấy được ngữ cảnh thật sự của bản dịch bằng cách xem các thông điệp đã được dịch trong chính chương trình cần dịch. Các bước sau đều thực hiện trên Linux với gói {{Path | gettext}} đã được cài đặt, các lệnh cần được chạy trong một chương trình dòng lệnh (ví dụ Konsole).
* Bạn có thể thấy được ngữ cảnh thật sự của bản dịch bằng cách xem các thông điệp đã được dịch trong chính chương trình cần dịch. Các bước sau đều thực hiện trên Linux với gói {{Path | gettext}} đã được cài đặt, các lệnh cần được chạy trong một chương trình dòng lệnh (ví dụ Konsole).


Nếu chỉ quan tâm đến một ứng dụng cụ thể, ví dụ Dolphin:
: Nếu chỉ quan tâm đến một ứng dụng cụ thể, ví dụ Dolphin:
{{Input|<syntaxhighlight lang="bash" line>
: {{Input|<syntaxhighlight lang="bash" line>
# Dòng này và các đoạn màu xanh chỉ là chú thích, không phải lệnh
# Dòng này và các đoạn màu xanh chỉ là chú thích, không phải lệnh
msgfmt <đường_dẫn_đến_dolphin.po> # Chương trình msgfmt biên dịch dolphin.po thành messages.mo
msgfmt <đường_dẫn_đến_dolphin.po> # Chương trình msgfmt biên dịch dolphin.po thành messages.mo
Line 47: Line 49:
</syntaxhighlight>}}
</syntaxhighlight>}}


Nếu muốn xem kết quả của toàn bộ các bản dịch, với điều kiện là [[KDE Localization/vi/components#svn-depth|''cấu trúc thư mục dịch trên máy cục bộ giống trên kho'']]:
: Nếu muốn xem kết quả của toàn bộ các bản dịch, với điều kiện là [[KDE Localization/vi/components#svn-depth|''cấu trúc thư mục dịch trên máy cục bộ giống trên kho'']]:
{{Input|<syntaxhighlight lang="bash" line>
 
: {{Input|<syntaxhighlight lang="bash" line>
# Dòng này và các đoạn màu xanh chỉ là chú thích, không phải lệnh
# Dòng này và các đoạn màu xanh chỉ là chú thích, không phải lệnh
cd <đường_dẫn_đến_l10n-kf5> # có thể ở ngọn hoặc ở nhánh
svn co svn://anonsvn.kde.org/home/kde/trunk/l10n-kf6
git clone https://invent.kde.org/sysadmin/l10n-scripty.git
cd <đường_dẫn_đến_l10n-kf6> # có thể ở ngọn hoặc ở nhánh
# Với <mã_vùng> là "vi" cho tiếng Việt
# Với <mã_vùng> là "vi" cho tiếng Việt
./scripts/autogen.sh <mã_vùng>
../l10n-scripty/autogen.sh <mã_vùng> # <mã_vùng> là vi
mkdir <mã_vùng>-build
mkdir <mã_vùng>-build
cd <mã_vùng>-build
cd <mã_vùng>-build
Line 59: Line 64:
make install
make install
</syntaxhighlight>}}
</syntaxhighlight>}}
Tất cả các bản dịch đã được đưa vào {{Path | $HOME/.local/share/locale/<mã_vùng>/LC_MESSAGES/}}. Giờ bạn cần đổi ngôn ngữ hiển thị trong <small>Thiết lập Hệ thống</small> (<small>System Settings</small>) và đăng nhập lại.
 
: Tất cả các bản dịch đã được đưa vào {{Path | $HOME/.local/share/locale/<mã_vùng>/LC_MESSAGES/}}. Giờ bạn cần đổi ngôn ngữ hiển thị trong <small>Thiết lập Hệ thống</small> (<small>System Settings</small>) và đăng nhập lại.
<div class="alert alert-warning" style="overflow:auto;">
Chú ý:<br>
Nếu dùng SVN thì bạn cần báo cho SVN biết là nên bỏ qua các tệp <tt>CMakeLists.txt</tt> và thư mục <tt>vi-build</tt> liên quan đến quá trình biên dịch trên, để không đồng bộ các thứ đó lên <small>kho</small>. Cách làm là thêm chuỗi <code>CMakeLists.txt vi-build</code> vào phần <tt>global-ignores</tt> trong {{Path|~/.subversion/config}} (với Linux).
</div>

Latest revision as of 22:22, 8 July 2024

Trang này mô tả các bước để người dịch kiểm tra một bản dịch trước khi chuyển cho người điều phối. Tài liệu hướng dẫn địa phương hoá của KDE có đề cập đến các bước này ở https://l10n.kde.org/docs/translation-howto/check-gui.html.

Kiểm tra cú pháp tệp PO

Trên Linux với gói gettext đã được cài đặt, chạy lệnh sau trong một chương trình dòng lệnh (ví dụ Konsole):

msgfmt --statistics --check-header <đường_dẫn_đến_tệp_bản_dịch>

Kiểm tra đối số đủ hay không

Một tệp quy tắc (rule file) Pology đơn giản đã được đặt tại <KDE_SVN>/trunk/l10n-support/scripts/pology/args-accels.rules. Tệp quy tắc này định ra các quy tắc rằng chuỗi đích phải có 3 đối số đầu tiên (%1, %2, %3) nếu chuỗi nguồn có đối số tương ứng. Ví dụ nếu chuỗi nguồn chứa "%2" mà chuỗi đích không có "%2" thì Pology khi chạy kiểm tra các quy tắc này sẽ báo lỗi.

Xem cách cấu hình Lokalize để kiểm tra bằng Pology

Chú ý:
Tệp quy tắc trên mới ở dạng đơn giản, chưa xét đến trường hợp chuỗi đích có một đối số mà chuỗi nguồn không có.
Thêm nữa, có thể có thông điệp có nhiều hơn 3 đối số, Pology khi kiểm tra các quy tắc này sẽ không xử lí đối số thứ tư.

Kiểm tra nút tăng tốc (accelerator)

Tệp quy tắc Pology trên cũng định ra một quy tắc rằng chuỗi đích phải có dấu tăng tốc (&) nếu chuỗi nguồn có, Pology sẽ báo lỗi khi kiểm tra quy tắc này mà chuỗi đích không có dấu tăng tốc nào.

Chú ý:
Tương tự như với việc kiểm tra đối số, quy tắc này chưa xét đến trường hợp chuỗi đích có dấu tăng tốc mà chuỗi nguồn không có, hoặc khi cả hai chuỗi đều có nhưng số lượng dấu tăng tốc ở hai chuỗi là khác nhau (tuy nhiên có thể coi đây là trường hợp khó xảy ra).
Một vấn đề quan trọng nữa cần kiểm tra với nút tăng tốc là liệu có nút tăng tốc nào xuất hiện nhiều hơn 1 lần trong cùng một trình đơn không. Nếu bạn kiểm tra khả năng trùng lặp này bằng cách tìm và so sánh thủ công trong bản dịch, bạn phải rất cẩn thận. Hoặc hãy kiểm tra theo ngữ cảnh để có thể chắc chắn hơn.

Kiểm tra cú pháp XML

Pology hỗ trợ kiểm tra cú pháp XML với sàng (sieve) check-kde4.

Sàng check-tp-kde cũng có thể được dùng để phát hiện lỗi trong toàn bộ dự án dịch, với điều kiện cấu trúc thư mục được giữ giống như ở trên kho. Đội địa phương hoá của KDE sử dụng sàng này để tạo ra trang báo lỗi cho từng ngôn ngữ. Đội dịch tiếng Nga có hướng dẫn dùng sàng này, tuy nhiên vì một lí do nào đó tôi không thể chạy được lệnh tương tự với thư mục tiếng Việt. Mong nhận được sự trợ giúp ở đây.

Kiểm tra theo ngữ cảnh

Có các cách sau:

  • Nội dung chuỗi ngữ cảnh "msgctxt" và dẫn giải (comment) của người lập trình, nếu có, đều được hiển thị ở ô Siêu dữ liệu đơn vị (Unit metadata) trong Lokalize.
  • Thông tin về nơi thông điệp xuất hiện trong mã nguồn cũng được hiển thị ở ô này trong Lokalize, dưới dạng liên kết mà khi bấm vào, bạn sẽ được Lokalize hỏi là tìm tệp mã nguồn đó trên máy cục bộ hay ở lxr.kde.org. Nếu bạn có thể đọc và hiểu (đoán) được mã nguồn, trong nhiều trường hợp thì thế là đủ để hiểu được ý nghĩa thông điệp cần dịch.
  • Bạn có thể thấy được ngữ cảnh thật sự của bản dịch bằng cách xem các thông điệp đã được dịch trong chính chương trình cần dịch. Các bước sau đều thực hiện trên Linux với gói gettext đã được cài đặt, các lệnh cần được chạy trong một chương trình dòng lệnh (ví dụ Konsole).
Nếu chỉ quan tâm đến một ứng dụng cụ thể, ví dụ Dolphin:
# Dòng này và các đoạn màu xanh chỉ là chú thích, không phải lệnh
msgfmt <đường_dẫn_đến_dolphin.po> # Chương trình msgfmt biên dịch dolphin.po thành messages.mo
# Với <mã_vùng> là "vi" cho tiếng Việt, chỉ cần chạy 1 trong 2 lệnh dưới đây
sudo mv messages.mo /usr/share/locale/<mã_vùng>/LC_MESSAGES/dolphin.mo # đưa vào thư mục hệ thống
mv messages.mo ~/.local/share/locale/<mã_vùng>/LC_MESSAGES/dolphin.mo # đưa vào thư mục của người dùng
# Với <mã_vùng> là "vi" cho tiếng Việt, mở Dolphin với các thông điệp bên trong đã được dịch
LANGUAGE=<mã_vùng> dolphin
Nếu muốn xem kết quả của toàn bộ các bản dịch, với điều kiện là cấu trúc thư mục dịch trên máy cục bộ giống trên kho:
# Dòng này và các đoạn màu xanh chỉ là chú thích, không phải lệnh
svn co svn://anonsvn.kde.org/home/kde/trunk/l10n-kf6
git clone https://invent.kde.org/sysadmin/l10n-scripty.git
cd <đường_dẫn_đến_l10n-kf6> # có thể ở ngọn hoặc ở nhánh
# Với <mã_vùng> là "vi" cho tiếng Việt
../l10n-scripty/autogen.sh <mã_vùng> # <mã_vùng> là vi
mkdir <mã_vùng>-build
cd <mã_vùng>-build
cmake -DCMAKE_INSTALL_PREFIX=${XDG_DATA_HOME:-$HOME/.local/} ../<mã_vùng>
make
make install
Tất cả các bản dịch đã được đưa vào $HOME/.local/share/locale/<mã_vùng>/LC_MESSAGES/. Giờ bạn cần đổi ngôn ngữ hiển thị trong Thiết lập Hệ thống (System Settings) và đăng nhập lại.

Chú ý:
Nếu dùng SVN thì bạn cần báo cho SVN biết là nên bỏ qua các tệp CMakeLists.txt và thư mục vi-build liên quan đến quá trình biên dịch trên, để không đồng bộ các thứ đó lên kho. Cách làm là thêm chuỗi CMakeLists.txt vi-build vào phần global-ignores trong ~/.subversion/config (với Linux).