簡介

您使用的外語目前 Sweet Home 3D 尚未支援,並且您想要協助將其翻譯成該語言嗎?從 2.3 版開始,Sweet Home 3D 支援 SH3L 檔案,本指南將教您如何自行建立此類檔案。SH3L 檔案是一種可自動安裝的語言檔案,使用者只需按兩下 SH3L 檔案,即可將 Sweet Home 3D 翻譯成該檔案描述的語言。

基本說明

建立 SH3L 檔案包含:

  1. 下載要翻譯的檔案的英文版本
  2. 解壓縮下載的檔案,
  3. 符合您語言的 2 個字母的後綴新增到其包含的 .properties 檔案,
  4. 翻譯 .properties 檔案中的文字,
  5. 將它們轉換為 ASCII 編碼,
  6. 翻譯 .html 檔案中的說明文字(非強制性,但對使用者來說非常有用),
  7. .properties 檔案和說明檔案壓縮回具有 SH3L 副檔名的檔案,
  8. 按兩下 SH3L 檔案以在 Sweet Home 3D 中測試您的翻譯,
  9. 發佈您的 SH3L 檔案。

詳細說明

如果您不害怕先前的基本說明,請繼續執行後續步驟。

取得英文版本

/SweetHome3DTranslation.zip (7.5 版) 下載檔案,並使用您系統的工具將其解壓縮。
SweetHome3DTranslation.zip 包含一組具有 .properties.html 副檔名的檔案,這些檔案放置在子資料夾中,如圖 1 所示。

圖 1. 翻譯檔案

所有 .properties.html 檔案都包含您必須翻譯成您語言的文字的英文版本:

  • package.properties 檔案描述 Sweet Home 3D 使用者介面中顯示的標籤、選單和選單項目,
  • basic.propertiesmetal.properties 檔案描述標準對話方塊標籤,
  • Catalog.properties 結尾的檔案描述軟體中可用的家具和材質的名稱,
  • .html 檔案包含 Sweet Home 3D 說明的文字。

.properties 檔案必須放置在圖 1 所示的資料夾中,否則 Sweet Home 3D 將無法正確使用它們。因此,請勿將檔案移出其資料夾,請勿重新命名任何資料夾(help 的 en 子目錄除外),並且請勿刪除任何資料夾。

根據您的語言重新命名檔案

在翻譯 .properties 檔案之前,您應該重新命名每個檔案,方法是在其名稱中新增一個底線,後跟符合您語言的 2 個字元的 ISO 代碼。您可以在文件 https://www.loc.gov/standards/iso639-2/php/English_list.php 的最後一欄中找到此代碼。
然後,如果您想要翻譯說明檔案,您也應該使用該 2 個字母的代碼重新命名 子目錄的
例如,捷克語的 ISO 代碼是 。如果您想要將 Sweet Home 3D 翻譯成捷克語,則每個檔案名稱都應以 _cs 作為後綴,並且您應該如圖 2 所示重新命名檔案。

圖 2. 具有其 ISO 代碼後綴的屬性檔案

翻譯屬性檔案

.properties 檔案是純文字檔案,您可以使用任何文字編輯器(如 WordpadTextEditemacs)來編輯它們。例如,Sweet Home 3D 3.0 中的 com/eteks/sweethome3d/package.properties 檔案包含以下文字:

# package.properties 2007 年 10 月 10 日
# 
# Copyright (c) 2024 Space Mushrooms <[email protected]>。保留所有權利。
# 
# 本程式是自由軟體;您可以根據自由軟體基金會發佈的 GNU 通用公共許可證的條款重新發佈和/或修改它
# ;許可證的第 2 版,或(由您選擇)任何較新版本。
# 版本。
# 
# 發佈本程式是希望它會有所用處,但不提供任何擔保;甚至沒有對適銷性或適用性的默示擔保
# 用於特定目的。  請參閱 GNU 通用公共許可證以獲取更多
# 詳細資訊。
# 
# 您應該已收到與本程式一起提供的 GNU 通用公共許可證副本;如果沒有,請寫信給 Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA

# HomeFramePane 類別的資源
HomeFramePane.untitled=未命名


# MacOSXConfiguration 類別的資源
MacOSXConfiguration.WINDOW_MENU.Name=視窗
MacOSXConfiguration.MINIMIZE.Name=最小化
MacOSXConfiguration.ZOOM.Name=縮放
MacOSXConfiguration.BRING_ALL_TO_FRONT.Name=全部移到最前面


# SweetHome3D 類別的資源
SweetHome3D.3DError.message=<html> Sweet Home 3D 現在將因嚴重錯誤而退出
    <br>在 3D 渲染系統中。請更新 DirectX/OpenGL 驅動程式
    <br>您的電腦圖形卡。 
SweetHome3D.3DError.title=3D 錯誤
    
SweetHome3D.confirmSaveAfter3DError.message=<html> Sweet Home 3D 現在必須因  中的嚴重錯誤而退出
    <br>3D 渲染系統。您要儲存所有修改過的房屋嗎? 
SweetHome3D.confirmSaveAfter3DError.title=3D 錯誤
SweetHome3D.confirmSaveAfter3DError.save=儲存
SweetHome3D.confirmSaveAfter3DError.doNotSave=不要儲存

.properties 檔案包含三種類型的行:

  • 以 # 字元開頭的行是註解(在上一個範例中以綠色顯示)。某些註解包含法律資訊,某些註解向開發人員或翻譯人員提供資訊。請保持這些行不變。
  • 空行僅用於分隔 .properties 檔案的各個部分。
  • 其他行以 Sweet Home 3D 用作金鑰的某些文字開頭,以尋找螢幕上顯示的文字(在上一個範例中以藍色顯示)。在此金鑰之後,這些行中的每一行都包含一個等號 (=) 和給定語言的文字。您的工作從等號開始。不要更改金鑰的文字,並將等號後的英文文字替換為其翻譯。

特殊情況:

  • 以 開頭的文字 <html> 標籤包含 HTML 格式的一些文字。這些文字包含其他 HTML 標籤,介於 <> 符號之間,例如 <br> 在上一個 範例中,它表示長文字中間的回車符。 不要移除這些 HTML 標籤,它們有助於 Sweet Home 3D 正確呈現 某些文字。翻譯 HTML 標籤之間的文字並不是很困難, 除了可能是最糟糕的 HTML 文字,它是 WallPanel.wallOrientationLabel.text 金鑰的值。
  • 為了避免文字編輯器中出現長行,某些行 被分成兩行或更多行,然後用反斜線分隔 \,例如以 開頭的行 SweetHome3D.3DError.message 在上一個範例中。在這種情況下,不要移除 \ 符號,該符號位於行的末尾,因為它表示下一行 遵循目前行。
  • 某些文字包含以 開頭的特殊字元序列 與 % 符號,例如 %s%d%1$s%2$s… 這些字元序列 將在需要時替換為檔案名稱、單位或數字,因此 請勿移除它們。
    例如,字元序列 %s 在以下金鑰的文字中 HomeFurniturePanel.widthLabel.text:
    HomeFurniturePanel.widthLabel.text=寬度 (%s):
    將替換為目前使用的單位。以下金鑰的文字中出現的兩個字元序列 %1$d%2$d 在以下金鑰的文字中出現 PrintPreviewPanel.pageLabel.text:
    PrintPreviewPanel.pageLabel.text=頁面  %1$d/%2$d
    將在螢幕上顯示為頁碼和頁數,並且您 應該只翻譯單字 Page
  • 某些文字也包含特殊字元序列 \n,例如在以下範例中:
    HomeController.saveError=無法將房屋儲存在
    "%s"
    Sweet Home 3D 會將此字元序列顯示為回車符,以在螢幕上分割一行,您不應移除它們。
  • 金鑰 HelpController.helpIndex 的值指示可以在其中找到說明檔案的目錄。如果您翻譯 .html 說明檔案,您應該將找到的 en 子目錄替換為您語言的 2 個字母代碼。
    例如,如果您將說明翻譯成捷克語,則應變為:
    HelpController.helpIndex=/com/eteks/sweethome3d/viewcontroller/resources/help/cs/index.html
  • .mnemonic 結尾的金鑰的文字由 Sweet Home 3D 用於猜測標籤或選單項目中應加底線以進行鍵盤存取的字母。此助記符字母取決於顯示的單字,您應該在每個對話方塊或選單中找到一個唯一的字母。
    例如,以下文字和助記符顯示在家具修改對話方塊中:
    HomeFurniturePanel.nameLabel.text=名稱:
    HomeFurniturePanel.nameLabel.mnemonic=N
    HomeFurniturePanel.nameVisibleCheckBox.text=在平面圖中顯示名稱
    HomeFurniturePanel.nameVisibleCheckBox.mnemonic=S
    HomeFurniturePanel.widthLabel.text=寬度 (%s):
    HomeFurniturePanel.widthLabel.mnemonic=W
    可以用法文翻譯為:
    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
  • 使用 Sweet Home 3D 或 3D 模型匯入頁面 來協助您翻譯以 Catalog.properties 結尾的 .properties 檔案。

將屬性檔案轉換為 ASCII 編碼

如果您將文字翻譯成具有不屬於 ISO-8859-1 編碼 的字母的語言(主要是中歐和東歐語言以及具有非拉丁字母的語言),則必須將所有 .properties 檔案轉換為 Sweet Home 3D 支援的 ASCII 編碼。此轉換可以使用 JDK 提供的 native2ascii 工具完成,也可以使用以下表單執行。
對於每個 .properties 檔案,建立該檔案的備份,將要轉換的文字複製/貼上到以下文字區域中,按一下 轉換 按鈕,然後將轉換後的文字複製/貼上回其 .properties 檔案中。

轉換工具會將每個非 ASCII 字元(帶重音符號的拉丁字母和非拉丁字母)替換為以 \u 開頭的序列,後跟一個 4 位十六進位數字代碼,該代碼與 Unicode 中的該字元匹配。可悲的是,此轉換會使您的文字對於人類來說非常難以閱讀,但如果您不執行此轉換,Sweet Home 3D 將無法正確顯示您的翻譯字元。這就是為什麼您應該建立原始 .properties 檔案的備份的原因,以防您以後想要更改它們。
如果您想要直接編輯轉換為 ASCII 的 .properties 檔案,您也可以使用 Properties Editor 應用程式,該應用程式可以作為 Jar 可執行檔案 在此處 取得。

翻譯說明檔案

Sweet Home 3D 的良好翻譯也應包括其說明檔案的翻譯。翻譯所有 .html 檔案是一項漫長的工作,但它確實可以幫助使用者學習該軟體,並避免在 Sweet Home 3D 論壇中提出一些支援請求。使用任何 HTML 編輯器來翻譯這些檔案,並嘗試保持其包含的連結及其樣式表不變。
翻譯完成後,您還應該建立您語言的對話方塊螢幕擷取畫面,以替換 com/eteks/sweethome3d/viewcontroller/resources/help/en/images 中找到的影像。為了能夠建立此類螢幕擷取畫面,請使用以下步驟建立並測試第一個 SH3L 檔案(一旦存在包含翻譯後的 .properties 檔案的 SH3L 檔案,您也可以要求 Sweet Home 3D 的 開發人員 產生螢幕擷取畫面)。

建立 SH3L 檔案

一旦所有 .properties.html 檔案都已翻譯並在必要時轉換為 ASCII(或者如果您想要測試此程序,甚至可以在之前),您應該將它們壓縮到一個檔案中。根據您的系統,可以使用以下程序建立 zip 檔案:

  • 在 Windows 下,選取包含所有翻譯檔案的 com 資料夾,然後從其內容選單中選擇 傳送到 > 壓縮資料夾
  • 在 Mac OS X 下,選取包含所有翻譯檔案的 com 資料夾,然後選擇 檔案 > 壓縮 « com » 選單項目,
  • 在 Linux 下,選取包含所有翻譯檔案的 com 資料夾,從其內容選單中選擇 建立封存…,然後在格式清單中選取 .zip

最後,將 zip 檔案的 .zip 副檔名變更為 .sh3l。SH3L 檔案可以具有任何名稱,但為了避免與現有的 SH3L 檔案發生衝突,您應該根據它包含的語言和您翻譯的 Sweet Home 3D 版本來命名它(例如,French-4.1.sh3l 可能是 Sweet Home 3D 4.1 法語翻譯的一個好名稱)。

測試 SH3L 檔案

若要測試翻譯,請按兩下 SH3L 檔案,或使用 匯入語言庫檔案 按鈕 選擇它,該按鈕顯示在 偏好設定 窗格的頂部。這將啟動 Sweet Home 3D 並將其使用者介面翻譯為 SH3L 檔案中描述的語言。這也會將 SH3L 檔案複製到取決於您系統的資料夾中:

  • 在 Windows Vista / 7 / 8 / 10 / 11 下,此資料夾是 C:\Users\使用者\AppData\Roaming\eTeks\Sweet Home 3D\languages,
  • 在 Windows XP 和舊版 Windows 下,此資料夾是 C:\Documents and Settings\使用者\Application Data\eTeks\Sweet Home 3D\languages,
  • 在 macOS 下,它是您使用者資料夾的子資料夾 Library/Application Support/eTeks/Sweet Home 3D/languages,
  • 在 Linux 和其他 Unix 下,它是您使用者資料夾的子資料夾 .eteks/sweethome3d/languages,
  • 使用 Sweet Home 3D 的可攜式版本,它是儲存 Sweet Home 3D 應用程式的資料夾的子資料夾 data/languages,

另請注意,在開發 SH3L 檔案期間,您可能需要重新啟動 Sweet Home 3D 才能查看 SH3L 檔案中的變更。

發佈 SH3L 檔案

一旦您的 SH3L 檔案準備就緒,您可以將其提供給任何人,在 論壇中保留給外語的部分 或其他地方向 Sweet Home 3D 使用者宣佈它。如果您同意,可以在本網站上關於 Sweet Home 3D 支援的 翻譯 的頁面中提供它。

更新 SH3L 檔案

Sweet Home 3D 的某些版本帶來了要翻譯的新功能,有些則沒有。如果您不翻譯符合這些新功能的使用者介面標籤,Sweet Home 3D 將可以運作,但所有新標籤都將以英文顯示。若要在 .properties 檔案中找到新的金鑰和更新的金鑰,您可以使用 SourceForge.net 提供的一項功能,該功能可讓您比較專案檔案的兩個版本:

  1. 歷史記錄 中搜尋您要比較的 Sweet Home 3D 版本的日期(例如,5.0 版為 2015 年 7 月 19 日,4.6 版為 2015 年 2 月 2 日)
  2. 圖 1 中按一下您要更新的 .properties.html 檔案,
  3. 選取符合更新檔案版本日期的修訂編號的兩個核取方塊,選擇剛好在 Sweet Home 3D 版本日期之前的日期,
  4. 按一下 比較 按鈕。

最後一次按一下將顯示該 .properties 檔案的兩個版本之間的差異(例如,此 連結 將顯示檔案 com/eteks/sweethome3d/viewcontroller/package.properties 的 4.6 版和 5.0 版之間的差異)。

找到差異後,請更新您的翻譯,在必要時新增新的金鑰名稱,並發佈新版本的翻譯。