翻译指南
简介
您使用的外语 Sweet Home 3D 尚未支持,并且您希望为其翻译做出贡献?从 2.3 版本开始,Sweet Home 3D 支持 SH3L 文件,本指南将教您如何自行创建此类文件。SH3L 文件是一种自动安装的语言文件,用户只需双击 SH3L 文件即可将 Sweet Home 3D 翻译成该文件描述的语言。
基本说明
创建 SH3L 文件包括:
- downloading an English version of the files to translate,
- 解压缩下载的文件,
- 在它包含的文件中添加一个与您的语言匹配的 2 个字母的后缀,
.properties - 翻译
.properties文件中的文本, - 将它们转换为 ASCII 编码,
- 翻译
.html文件中的帮助文本(不是强制性的,但对用户来说非常有用), - 将
.properties文件和帮助文件压缩回带有 SH3L 扩展名的文件, - 双击 SH3L 文件以在 Sweet Home 3D 中测试您的翻译,
- 分发您的 SH3L 文件。
详细说明
如果您不害怕之前的基本说明,请继续执行以下步骤。
获取英文版本
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.

所有 .properties 和 .html 文件都包含您必须翻译成您的语言的文本的英文版本:
package.properties文件描述了 Sweet Home 3D 用户界面中显示的标签、菜单和菜单项,basic.properties和metal.properties文件描述了标准对话框标签,- 以
Catalog.properties结尾的文件描述了软件中可用的家具和纹理的名称, .html文件包含 Sweet Home 3D 帮助的文本。

.properties 文件必须放置在图 1 所示的文件夹中,否则 Sweet Home 3D 将无法正确使用它们。因此,请勿将文件移出其文件夹,请勿重命名任何文件夹(en 的 help 子目录除外),并且不要删除任何文件夹。
根据您的语言重命名文件
在翻译 .properties 文件之前,您应该通过在其名称中添加下划线,后跟与您的语言匹配的 2 个字符的 ISO 代码来重命名每个文件。您可以在文档 https://www.loc.gov/standards/iso639-2/php/English_list.php 的最后一列中找到此代码。
然后,如果您想翻译帮助文件,您还应该使用该 2 个字母的代码重命名 en 的 help 子目录。
例如,捷克语的 ISO 代码是 cs。如果您想将 Sweet Home 3D 翻译成捷克语,则每个文件名都应以 _cs 作为后缀,并且您应该如图 2 所示重命名文件。

翻译属性文件
.properties 文件是纯文本文件,您可以使用任何文本编辑器(如 Wordpad、TextEdit 或 emacs)编辑它们。例如,Sweet Home 3D 3.0 中的 com/eteks/sweethome3d/package.properties 文件包含以下文本:
# 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=未命名 # Resources for MacOSXConfiguration class MacOSXConfiguration.WINDOW_MENU.Name=窗口 MacOSXConfiguration.MINIMIZE.Name=最小化 MacOSXConfiguration.ZOOM.Name=缩放 MacOSXConfiguration.BRING_ALL_TO_FRONT.Name=全部置于前方 # Resources for SweetHome3D class 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$dPrintPreviewPanel.pageLabel.textPrintPreviewPanel.pageLabel.text:
PrintPreviewPanel.pageLabel.text=页 %1$d/%2$d
将在屏幕上显示为页码和页数,您 应该只翻译单词Page。 - 一些文本还包含特殊字符序列
\n,如下例所示:HomeController.saveError=无法将住宅保存在\n"%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
- Use Sweet Home 3D or 3d models import page to help you translate the
.propertiesfiles ending byCatalog.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 可执行文件 here 使用。
翻译帮助文件
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\user\AppData\Roaming\eTeks\Sweet Home 3D\languages,
- 在 Windows XP 和以前版本的 Windows 下,此文件夹是 C:\Documents and Settings\user\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 文件
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.
更新 SH3L 文件
Sweet Home 3D 的一些版本带来了需要翻译的新功能,而另一些版本则没有。如果您不翻译与这些新功能匹配的用户界面标签,Sweet Home 3D 将可以工作,但所有新标签将以英文显示。要在 .properties 文件中查找新键和更新的键,您可以使用 SourceForge.net 提供的一项功能,该功能允许您比较项目文件的两个版本:
- 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)
- 单击
.properties或.html文件,您要更新的 图 1 中, - 选择与更新文件的版本日期匹配的修订号的两个复选框,选择刚好在 Sweet Home 3D 版本日期之前的日期,
- 单击 比较 按钮。
最后一次单击将显示该 .properties 文件的两个版本之间的差异(例如,此 链接 将显示文件 com/eteks/sweethome3d/viewcontroller/package.properties 的 4.6 版本和 5.0 版本之间的差异)。
找到差异后,更新您的翻译,根据需要添加新的键名,并发布您的翻译的新版本。