Hướng dẫn dịch thuật
Giới thiệu
Bạn nói một ngôn ngữ nước ngoài chưa được hỗ trợ trong Sweet Home 3D và muốn đóng góp vào việc dịch phần mềm sang ngôn ngữ đó? Từ phiên bản 2.3, Sweet Home 3D hỗ trợ các tệp SH3L và hướng dẫn này sẽ chỉ bạn cách tự tạo tệp như vậy. Tệp SH3L là tệp ngôn ngữ có thể tự cài đặt và người dùng chỉ cần nhấp đúp vào tệp SH3L để dịch Sweet Home 3D sang ngôn ngữ được mô tả trong tệp đó.
Hướng dẫn cơ bản
Việc tạo tệp SH3L bao gồm:
- downloading an English version of the files to translate,
- giải nén tệp đã tải xuống,
- thêm hậu tố 2 chữ cái phù hợp với ngôn ngữ của bạn vào các tệp
.propertiesmà nó chứa, - dịch văn bản trong các tệp
.properties, - chuyển đổi chúng sang mã hóa ASCII,
- dịch văn bản trợ giúp trong các tệp
.html(không bắt buộc nhưng sẽ rất hữu ích cho người dùng), - nén các tệp
.propertiesvà các tệp trợ giúp trở lại thành tệp có phần mở rộng SH3L, - nhấp đúp vào tệp SH3L để kiểm tra bản dịch của bạn trong Sweet Home 3D,
- phân phối tệp SH3L của bạn.
Hướng dẫn chi tiết
Nếu bạn không ngại với các hướng dẫn cơ bản trước đó, hãy tiếp tục với các bước tiếp theo.
Lấy phiên bản tiếng Anh
Download the archive at https://www.sweethome3d.com/SweetHome3DTranslation.zip (version 7.5) and unzip it with the tools of your system.
SweetHome3DTranslation.zip contains a set of files with .properties and .html extensions placed in subfolders as shown in figure 1.

Tất cả các tệp .properties và .html chứa phiên bản tiếng Anh của các văn bản bạn sẽ phải dịch sang ngôn ngữ của mình:
- các tệp
package.propertiesmô tả nhãn, menu và các mục menu được hiển thị trong giao diện người dùng của Sweet Home 3D, - các tệp
basic.propertiesvàmetal.propertiesmô tả nhãn hộp thoại tiêu chuẩn, - những tệp kết thúc bằng
Catalog.propertiesmô tả tên của đồ nội thất và kết cấu có sẵn trong phần mềm, - các tệp
.htmlchứa văn bản trợ giúp của Sweet Home 3D.

Các tệp .properties phải được đặt trong các thư mục được hiển thị trong hình 1, nếu không Sweet Home 3D sẽ không thể sử dụng chúng một cách chính xác. Vì vậy, đừng di chuyển các tệp ra khỏi thư mục của chúng, đừng đổi tên bất kỳ thư mục nào (trừ thư mục con en của help) và đừng xóa bất kỳ thư mục nào.
Đổi tên tệp tùy thuộc vào ngôn ngữ của bạn
Trước khi dịch các tệp .properties, bạn nên đổi tên từng tệp bằng cách thêm vào tên của chúng một dấu gạch dưới theo sau là mã ISO 2 ký tự phù hợp với ngôn ngữ của bạn. Bạn sẽ tìm thấy mã này trong cột cuối cùng của tài liệu https://www.loc.gov/standards/iso639-2/php/English_list.php.
Sau đó, nếu bạn muốn dịch các tệp trợ giúp, bạn cũng nên đổi tên thư mục con en của help bằng mã 2 chữ cái đó.
Ví dụ, mã ISO cho tiếng Séc là cs. Nếu bạn muốn dịch Sweet Home 3D sang tiếng Séc, mỗi tên tệp nên có hậu tố _cs, và bạn nên đổi tên các tệp như được hiển thị trong hình 2.

Dịch các tệp properties
Các tệp .properties là các tệp văn bản thuần túy và bạn có thể chỉnh sửa chúng bằng bất kỳ trình soạn thảo văn bản nào như Wordpad, TextEdit hoặc emacs. Ví dụ, tệp com/eteks/sweethome3d/package.properties trong Sweet Home 3D 3.0 chứa văn bản sau:
# package.properties 10 oct. 2007 # # Copyright (c) 2024 Space Mushrooms <[email protected]>. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program; if not, write to the Free Software Foundation, Inc., 59 Temple # Place, Suite 330, Boston, MA 02111-1307 USA # Resources for HomeFramePane class HomeFramePane.untitled=Untitled # Resources for MacOSXConfiguration class MacOSXConfiguration.WINDOW_MENU.Name=Window MacOSXConfiguration.MINIMIZE.Name=Minimize MacOSXConfiguration.ZOOM.Name=Zoom MacOSXConfiguration.BRING_ALL_TO_FRONT.Name=Bring all to front # Resources for SweetHome3D class SweetHome3D.3DError.message=<html> Sweet Home 3D will exit now because of a fatal error <br>in 3D rendering system. Please update the DirectX/OpenGL drivers <br>of your computer graphics card. SweetHome3D.3DError.title=3D Error SweetHome3D.confirmSaveAfter3DError.message=<html> Sweet Home 3D must exit now because of a fatal error in <br>3D rendering system. Do you want to save all modified homes? SweetHome3D.confirmSaveAfter3DError.title=3D Error SweetHome3D.confirmSaveAfter3DError.save=Save SweetHome3D.confirmSaveAfter3DError.doNotSave=Do not save
Tệp .properties chứa ba loại dòng:
- các dòng bắt đầu bằng ký tự # là chú thích (hiển thị màu xanh lá trong ví dụ trước). Một số chú thích chứa thông tin pháp lý, một số cung cấp thông tin cho nhà phát triển hoặc người dịch. Giữ nguyên các dòng này.
- các dòng trống chỉ được sử dụng để phân tách các phần khác nhau của tệp
.properties. - các dòng khác bắt đầu bằng một số văn bản được Sweet Home 3D sử dụng làm khóa để tìm văn bản hiển thị trên màn hình (hiển thị màu xanh dương trong ví dụ trước). Theo sau khóa này, mỗi dòng này chứa một dấu bằng (
=) và một văn bản bằng ngôn ngữ nhất định. Công việc của bạn bắt đầu từ các dấu bằng. Đừng thay đổi văn bản của khóa và thay thế văn bản tiếng Anh sau dấu bằng bằng bản dịch của nó.
Trường hợp đặc biệt:
- Các văn bản bắt đầu bằng thẻ
<html>chứa một số văn bản ở định dạng HTML. Những văn bản này chứa một số thẻ HTML khác giữa các dấu<và>, như<br>trong ví dụ trước đây đại diện cho việc xuống dòng ở giữa các văn bản dài. Đừng xóa các thẻ HTML này, chúng giúp Sweet Home 3D trình bày chính xác một số văn bản. Việc dịch văn bản giữa các thẻ HTML không quá khó khăn, ngoại trừ có thể là văn bản HTML tệ nhất là giá trị của khóaWallPanel.wallOrientationLabel.text. - Để tránh các dòng dài trong trình soạn thảo văn bản, một số dòng
được chia thành hai hoặc nhiều dòng và sau đó được phân tách bằng dấu gạch chéo ngược
\, như dòng bắt đầu bằngSweetHome3D.3DError.messagetrong ví dụ trước. Trong trường hợp đó, đừng xóa dấu\nằm ở cuối dòng vì nó cho biết dòng tiếp theo theo sau dòng hiện tại. - Một số văn bản chứa chuỗi ký tự đặc biệt bắt đầu
bằng dấu
%, như%s,%d,%1$s,%2$s… Những chuỗi ký tự này sẽ được thay thế bằng tên tệp, đơn vị hoặc số khi cần thiết, vì vậy đừng xóa chúng.
Ví dụ, chuỗi ký tự%strong văn bản của khóa sauHomeFurniturePanel.widthLabel.text:
HomeFurniturePanel.widthLabel.text=Width (%s):
sẽ được thay thế bằng đơn vị hiện đang sử dụng. Hai chuỗi ký tự%1$dvà%2$dxuất hiện trong văn bản của khóa sauPrintPreviewPanel.pageLabel.text:
PrintPreviewPanel.pageLabel.text=Page %1$d/%2$d
sẽ xuất hiện trên màn hình dưới dạng số trang và tổng số trang, và bạn chỉ nên dịch từPage. - Một số văn bản cũng chứa chuỗi ký tự đặc biệt
\n, như trong ví dụ sau:HomeController.saveError=Can't save home in "%s"
Chuỗi ký tự này được Sweet Home 3D hiển thị dưới dạng xuống dòng để chia một dòng trên màn hình, và bạn không nên xóa chúng. - Giá trị của khóa
HelpController.helpIndexcho biết thư mục nơi có thể tìm thấy các tệp trợ giúp. Nếu bạn dịch các tệp trợ giúp .html, bạn nên thay thế thư mục conenđược tìm thấy bằng mã 2 chữ cái của ngôn ngữ của bạn.
Ví dụ, nếu bạn dịch trợ giúp sang tiếng Séc, nó sẽ trở thành:HelpController.helpIndex=/com/eteks/sweethome3d/viewcontroller/resources/help/cs/index.html
- Văn bản của các khóa kết thúc bằng
.mnemonicđược Sweet Home 3D sử dụng để đoán chữ cái nào trong nhãn hoặc mục menu nên được gạch dưới để truy cập bằng bàn phím. Chữ cái ghi nhớ này phụ thuộc vào từ được hiển thị và bạn nên tìm một chữ cái duy nhất cho mỗi hộp thoại hoặc menu.
Ví dụ, các văn bản và ghi nhớ sau được hiển thị trong hộp thoại sửa đổi đồ nội thất:HomeFurniturePanel.nameLabel.text=Name: HomeFurniturePanel.nameLabel.mnemonic=N HomeFurniturePanel.nameVisibleCheckBox.text=Display name in plan HomeFurniturePanel.nameVisibleCheckBox.mnemonic=S HomeFurniturePanel.widthLabel.text=Width (%s): HomeFurniturePanel.widthLabel.mnemonic=W
có thể được dịch sang tiếng Pháp bằng:HomeFurniturePanel.nameLabel.text=Nom : HomeFurniturePanel.nameLabel.mnemonic=N HomeFurniturePanel.nameVisibleCheckBox.text=Afficher le nom dans le plan HomeFurniturePanel.nameVisibleCheckBox.mnemonic=S HomeFurniturePanel.widthLabel.text=Largeur (%s) : HomeFurniturePanel.widthLabel.mnemonic=L
- Use Sweet Home 3D or 3d models import page to help you translate the
.propertiesfiles ending byCatalog.properties.
Chuyển đổi các tệp properties sang mã hóa ASCII
Nếu bạn đã dịch văn bản sang ngôn ngữ có các chữ cái không thuộc mã hóa ISO-8859-1 (chủ yếu là các ngôn ngữ Trung và Đông Âu và các ngôn ngữ có bảng chữ cái không phải Latin), bạn sẽ phải chuyển đổi tất cả các tệp .properties của mình sang mã hóa ASCII được Sweet Home 3D hỗ trợ. Việc chuyển đổi này có thể được thực hiện bằng công cụ native2ascii được cung cấp với JDK hoặc có thể được thực hiện bằng biểu mẫu sau.
Đối với mỗi tệp .properties, tạo bản sao lưu của tệp đó, sao chép/dán văn bản cần chuyển đổi vào vùng văn bản sau, nhấp vào nút Convert và sao chép/dán văn bản đã chuyển đổi trở lại vào tệp .properties của nó.
Công cụ chuyển đổi sẽ thay thế mỗi ký tự không phải ASCII (chữ cái Latin có dấu và chữ cái không phải Latin) bằng một chuỗi bắt đầu bằng \u và theo sau là mã 4 chữ số thập lục phân tương ứng với ký tự đó trong Unicode. Đáng tiếc là việc chuyển đổi này sẽ khiến văn bản của bạn khó đọc đối với con người, nhưng nếu bạn không thực hiện nó, Sweet Home 3D sẽ không thể hiển thị chính xác các ký tự trong bản dịch của bạn. Đây là lý do tại sao bạn nên tạo bản sao lưu của các tệp .properties gốc, trong trường hợp bạn muốn thay đổi chúng sau này.
Nếu bạn muốn chỉnh sửa trực tiếp các tệp .properties đã được chuyển đổi sang ASCII, bạn cũng có thể sử dụng ứng dụng Properties Editor có sẵn dưới dạng tệp thực thi Jar tại đây.
Dịch các tệp trợ giúp
Một bản dịch tốt của Sweet Home 3D cũng nên bao gồm việc dịch các tệp trợ giúp của nó. Việc dịch tất cả các tệp .html là một công việc lâu dài, nhưng nó sẽ thực sự giúp người dùng học phần mềm và tránh một số yêu cầu hỗ trợ trong diễn đàn Sweet Home 3D. Sử dụng bất kỳ trình soạn thảo HTML nào để dịch các tệp này, cố gắng giữ nguyên các liên kết và bảng định kiểu của nó.
Sau khi dịch xong, bạn cũng nên tạo ảnh chụp màn hình của các hộp thoại bằng ngôn ngữ của bạn để thay thế các hình ảnh trong com/eteks/sweethome3d/viewcontroller/resources/help/en/images. Để có thể tạo các ảnh chụp màn hình như vậy, hãy tạo và kiểm tra một tệp SH3L đầu tiên với các bước sau (khi đã có tệp SH3L chứa các tệp .properties đã dịch, bạn cũng có thể yêu cầu nhà phát triển của Sweet Home 3D tạo ảnh chụp màn hình).
Tạo tệp SH3L
Khi tất cả các tệp .properties và .html đã được dịch và chuyển đổi sang ASCII nếu cần (hoặc thậm chí trước đó nếu bạn muốn kiểm tra quy trình này), bạn nên nén chúng vào một tệp. Tùy thuộc vào hệ thống của bạn, việc tạo tệp zip có thể được thực hiện theo quy trình sau:
- trên Windows, chọn thư mục
comchứa tất cả các tệp đã dịch và chọn Gửi đến > Thư mục nén từ menu ngữ cảnh của nó, - trên Mac OS X, chọn thư mục
comchứa tất cả các tệp đã dịch và chọn mục menu Tệp > Nén « com », - trên Linux, chọn thư mục
comchứa tất cả các tệp đã dịch, chọn Tạo kho lưu trữ… từ menu ngữ cảnh của nó, sau đó chọn .zip trong danh sách định dạng.
Cuối cùng, thay đổi phần mở rộng .zip của tệp zip thành .sh3l. Một tệp SH3L có thể có bất kỳ tên nào, nhưng để tránh xung đột với các tệp SH3L hiện có, bạn nên đặt tên theo ngôn ngữ nó chứa và phiên bản Sweet Home 3D mà bạn đã dịch (ví dụ, French-4.1.sh3l có thể là một tên tốt cho bản dịch tiếng Pháp của Sweet Home 3D 4.1).
Kiểm tra tệp SH3L
Để kiểm tra bản dịch, nhấp đúp vào tệp SH3L hoặc chọn nó bằng nút Nhập tệp thư viện ngôn ngữ
hiển thị ở đầu bảng Tùy chọn. Điều này sẽ khởi chạy Sweet Home 3D và dịch giao diện người dùng của nó sang ngôn ngữ được mô tả trong tệp SH3L. Điều này cũng sẽ sao chép tệp SH3L vào một thư mục tùy thuộc vào hệ thống của bạn:
- trên Windows Vista / 7 / 8 / 10 / 11, thư mục này là C:\Users\user\AppData\Roaming\eTeks\Sweet Home 3D\languages,
- trên Windows XP và các phiên bản Windows trước đó, thư mục này là C:\Documents and Settings\user\Application Data\eTeks\Sweet Home 3D\languages,
- trên macOS, đó là thư mục con Library/Application Support/eTeks/Sweet Home 3D/languages của thư mục người dùng của bạn,
- trên Linux và các hệ Unix khác, đó là thư mục con .eteks/sweethome3d/languages của thư mục người dùng của bạn,
- với phiên bản di động của Sweet Home 3D, đó là thư mục con data/languages của thư mục nơi ứng dụng Sweet Home 3D được lưu trữ,
Lưu ý rằng trong quá trình phát triển tệp SH3L của bạn, có thể bạn sẽ phải khởi động lại Sweet Home 3D để thấy các thay đổi trong tệp SH3L của bạn.
Phân phối các tệp SH3L
Once your SH3L file is ready, you can propose it to anyone, announce it to Sweet Home 3D users in the forum part reserved to foreign languages or in other places. If you agree, it can be made available on this web site in the page about translations supported by Sweet Home 3D.
Cập nhật các tệp SH3L
Một số phiên bản của Sweet Home 3D mang đến các tính năng mới cần dịch, một số thì không. Nếu bạn không dịch các nhãn giao diện người dùng phù hợp với các tính năng mới này, Sweet Home 3D sẽ hoạt động nhưng tất cả các nhãn mới sẽ xuất hiện bằng tiếng Anh. Để tìm các khóa mới và các khóa đã cập nhật trong các tệp .properties, bạn có thể sử dụng tính năng do SourceForge.net cung cấp cho phép bạn so sánh hai phiên bản của một tệp dự án:
- Search the dates of Sweet Home 3D versions you want to compare in history (for example, July 19, 2015 for version 5.0 and February 2, 2015 for version 4.6)
- Nhấp vào tệp
.propertieshoặc.htmlmà bạn muốn cập nhật trong hình 1, - Chọn hai hộp kiểm của số phiên bản phù hợp với ngày phiên bản cho tệp đã cập nhật, chọn ngày ngay trước ngày phiên bản của Sweet Home 3D,
- Nhấp vào nút So sánh.
Lần nhấp cuối cùng sẽ hiển thị cho bạn sự khác biệt giữa hai phiên bản của tệp .properties đó (ví dụ, liên kết này sẽ hiển thị cho bạn sự khác biệt giữa phiên bản 4.6 và phiên bản 5.0 của tệp com/eteks/sweethome3d/viewcontroller/package.properties).
Sau khi tìm thấy sự khác biệt, hãy cập nhật bản dịch của bạn, thêm tên khóa mới nếu cần thiết, và phát hành phiên bản mới của bản dịch của bạn.