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 thuật 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ẽ giúp bạn tự tạo một tệp như vậy. Tệp SH3L là một 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ả bởi tệp đó.

Hướng dẫn cơ bản

Tạo một tệp SH3L bao gồm:

  1. tải xuống phiên bản tiếng Anh của các tệp để dịch,
  2. giải nén tệp đã tải xuống,
  3. 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 .properties mà nó chứa,
  4. dịch văn bản trong các tệp .properties,
  5. chuyển đổi chúng sang mã hóa ASCII,
  6. 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),
  7. nén lại các tệp .properties và tệp trợ giúp thành một tệp có phần mở rộng SH3L,
  8. nhấp đúp vào tệp SH3L để kiểm tra bản dịch của bạn trong Sweet Home 3D,
  9. 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ến hành với các bước tiếp theo.

Lấy phiên bản tiếng Anh

Tải xuống tệp nén tại /SweetHome3DTranslation.zip (phiên bản 7.5) và giải nén nó bằng công cụ của hệ thống của bạn.
SweetHome3DTranslation.zip chứa một tập hợp các tệp với các phần mở rộng .properties.html được đặt trong các thư mục con như được hiển thị trong hình 1.

Hình 1. Các tệp dịch thuật

Tất cả các tệp .properties.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.properties mô 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.propertiesmetal.properties mô tả các nhãn hộp thoại tiêu chuẩn,
  • các tệp kết thúc bằng Catalog.properties mô tả tên của đồ nội thất và các kết cấu có sẵn trong phần mềm,
  • các tệp .html chứ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 đúng cách. 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 trợ giúp) 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 ở 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 của với mã 2 chữ cái đó.
Ví dụ, mã ISO cho tiếng Séc là . 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 thêm 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.

Hình 2. Các tệp thuộc tính với hậu tố mã ISO của chúng

Dịch các tệp thuộc tính

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 tháng 10, 2007
# 
# Bản quyền (c) 2024 Space Mushrooms <[email protected]>. Đã đăng ký Bản quyền.
# 
# Chương trình này là phần mềm miễn phí; bạn có thể phân phối lại và/hoặc sửa đổi nó theo
# các điều khoản của Giấy phép Công cộng GNU như được xuất bản bởi Quỹ Phần mềm Tự do
# Foundation; hoặc phiên bản 2 của Giấy phép, hoặc (tùy chọn của bạn) bất kỳ phiên bản nào sau này
# .
# 
# Chương trình này được phân phối với hy vọng rằng nó sẽ hữu ích, nhưng KHÔNG CÓ
# BẢO HÀNH NÀO; thậm chí không có bảo hành ngụ ý về TÍNH THƯƠNG MẠI hoặc PHÙ HỢP
# CHO MỘT MỤC ĐÍCH CỤ THỂ.  Xem Giấy phép Công cộng GNU để biết thêm
# chi tiết.
# 
# Bạn nên đã nhận được một bản sao của Giấy phép Công cộng GNU cùng với
# chương trình này; nếu không, hãy viết thư cho Quỹ Phần mềm Tự do, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA

# Tài nguyên cho lớp HomeFramePane
HomeFramePane.untitled=Chưa có tiêu đề


# Tài nguyên cho lớp MacOSXConfiguration
MacOSXConfiguration.WINDOW_MENU.Name=Cửa sổ
MacOSXConfiguration.MINIMIZE.Name=Thu nhỏ
MacOSXConfiguration.ZOOM.Name=Phóng to
MacOSXConfiguration.BRING_ALL_TO_FRONT.Name=Đưa tất cả ra trước


# Tài nguyên cho lớp SweetHome3D
SweetHome3D.3DError.message=<html> Sweet Home 3D sẽ thoát ngay bây giờ vì lỗi nghiêm trọng
    <br>trong hệ thống kết xuất 3D. Vui lòng cập nhật trình điều khiển DirectX/OpenGL
    <br>của card đồ họa máy tính của bạn. 
SweetHome3D.3DError.title=Lỗi 3D
    
SweetHome3D.confirmSaveAfter3DError.message=<html> Sweet Home 3D phải thoát ngay bây giờ vì lỗi nghiêm trọng trong
    <br>hệ thống kết xuất 3D. Bạn có muốn lưu tất cả các ngôi nhà đã chỉnh sửa không? 
SweetHome3D.confirmSaveAfter3DError.title=Lỗi 3D
SweetHome3D.confirmSaveAfter3DError.save=Lưu
SweetHome3D.confirmSaveAfter3DError.doNotSave=Không lưu

Một tệp .properties chứa ba loại dòng:

  • các dòng bắt đầu bằng ký tự # là các chú thích (được hiển thị bằng màu xanh lá cây 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 để tách các phần khác nhau của một 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 (được hiển thị bằng màu xanh lam 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 một 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 một <html> thẻ chứa một số văn bản ở định dạng HTML. Các văn bản này chứa một số thẻ HTML khác giữa <> dấu, như <br> trong ví dụ trước đó đại diện cho một lần xuống dòng trong 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. Dịch văn bản giữa các thẻ HTML không quá khó, ngoại trừ có thể là văn bản HTML tệ nhất là giá trị của WallPanel.wallOrientationLabel.text khóa.
  • Để 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 ngăn cách bằng dấu gạch chéo ngược \, như dòng bắt đầu bằng SweetHome3D.3DError.message trong ví dụ trước. Trong trường hợp đó, đừng xóa dấu \ nằm ở cuối dòng vì nó chỉ ra rằng 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 một % ký hiệu, như %s, %d, %1$s, %2$s… Các 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ự %s trong văn bản của khóa sau HomeFurniturePanel.widthLabel.text:
    HomeFurniturePanel.widthLabel.text=Chiều rộng (%s):
    sẽ được thay thế bằng đơn vị hiện đang sử dụng. Hai chuỗi ký tự %1$d%2$d xuất hiện trong văn bản của khóa sau PrintPreviewPanel.pageLabel.text:
    PrintPreviewPanel.pageLabel.text=Trang %1$d/%2$d
    sẽ xuất hiện trên màn hình dưới dạng số trang và số lượng 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=Không thể lưu nhà trong
    "%s"
    Chuỗi ký tự này được Sweet Home 3D hiển thị dưới dạng xuống dòng để tách 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.helpIndex chỉ ra 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 con en đượ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 chân để truy cập bằng bàn phím. Chữ cái gạch chân 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à chữ cái gạch chân sau được hiển thị trong hộp thoại sửa đổi đồ nội thất:
    HomeFurniturePanel.nameLabel.text=Tên:
    HomeFurniturePanel.nameLabel.mnemonic=T
    HomeFurniturePanel.nameVisibleCheckBox.text=Hiển thị tên trong kế hoạch
    HomeFurniturePanel.nameVisibleCheckBox.mnemonic=H
    HomeFurniturePanel.widthLabel.text=Chiều rộng (%s):
    HomeFurniturePanel.widthLabel.mnemonic=C
    có thể được dịch sang tiếng Pháp như sau:
    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
  • Sử dụng Sweet Home 3D hoặc trang nhập mô hình 3d để giúp bạn dịch các tệp .properties kết thúc bằng Catalog.properties.

Chuyển đổi các tệp thuộc tính sang mã hóa ASCII

Nếu bạn đã dịch văn bản sang một 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, hãy tạo một 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 khu vực văn bản sau, nhấp vào nút Chuyển đổi 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 (các chữ cái Latin có dấu và các 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 phù hợp với ký tự đó trong Unicode. Đáng tiếc, việc chuyển đổi này sẽ làm cho văn bản của bạn khá khó đọc đối với con người, nhưng nếu bạn không thực hiện, Sweet Home 3D sẽ không thể hiển thị các ký tự của bản dịch của bạn một cách chính xác. Đây là lý do tại sao bạn nên tạo một bản sao lưu của các tệp .properties gốc của mình, phòng 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ó. Dịch tất cả các tệp .html là một công việc dài, nhưng nó thực sự 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 chỉnh sửa HTML nào để dịch các tệp này, cố gắng giữ nguyên các liên kết mà nó chứa và bảng kiểu của nó.
Sau khi dịch, bạn cũng nên tạo các ả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 được tìm thấy trong . Để có thể tạo các ảnh chụp màn hình như vậy, hãy tạo và thử nghiệm một tệp SH3L đầu tiên với các bước sau (một 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 ra các ảnh chụp màn hình).

Tạo tệp SH3L

Khi tất cả các tệp .properties.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 thử nghiệm 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 một tệp zip có thể được thực hiện với quy trình sau:

  • trên Windows, chọn thư mục com chứ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 com chứ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 com chứa tất cả các tệp đã dịch, chọn Tạo lưu trữ… từ menu ngữ cảnh của nó rồi 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 nó từ ngôn ngữ mà nó chứa và phiên bản của 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 một tệp SH3L hoặc chọn nó bằng nút Nhập tệp thư viện ngôn ngữ được hiển thị ở đầu bảng Tùy chọn. Điều này sẽ khởi động 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 trong thư mục người dùng của bạn,
  • trên Linux và các Unix khác, đó là thư mục con .eteks/sweethome3d/languages trong 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, bạn có thể 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

Khi tệp SH3L của bạn đã sẵn sàng, bạn có thể đề xuất nó cho bất kỳ ai, thông báo cho người dùng Sweet Home 3D trong phần diễn đàn dành riêng cho các ngôn ngữ nước ngoài hoặc ở những nơi khác. Nếu bạn đồng ý, nó có thể được cung cấp trên trang web này trong trang về các bản dịch được Sweet Home 3D hỗ trợ.

Cập nhật các tệp SH3L

Một số phiên bản của Sweet Home 3D mang lại các tính năng mới để 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 một tính năng được 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:

  1. Tìm kiếm ngày của các phiên bản Sweet Home 3D mà bạn muốn so sánh trong lịch sử (ví dụ, ngày 19 tháng 7 năm 2015 cho phiên bản 5.0 và ngày 2 tháng 2 năm 2015 cho phiên bản 4.6)
  2. Nhấp vào tệp .properties hoặc .html mà bạn muốn cập nhật trong hình 1,
  3. 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 cập nhật, chọn ngày ngay trước ngày phiên bản của Sweet Home 3D,
  4. 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).

Khi bạn đã tìm thấy sự khác biệt, 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 một phiên bản mới của bản dịch của bạn.