Руководство по переводу
Введение
Вы владеете иностранным языком, который еще не поддерживается в 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.
Затем, если вы хотите перевести файлы справки, вам также следует переименовать подкаталог en в help, используя этот 2-буквенный код.
Например, ISO-код для чешского языка — cs. Если вы хотите перевести Sweet Home 3D на чешский язык, к имени каждого файла следует добавить суффикс _cs, и вам следует переименовать файлы, как показано на рисунке 2.

Перевод файлов свойств
.properties файлы — это простые текстовые файлы, и вы можете редактировать их с помощью любого текстового редактора, такого как Wordpad, TextEdit или emacs. Например, файл com/eteks/sweethome3d/package.properties в Sweet Home 3D 3.0 содержит следующий текст:
# 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$dкоторые появляются в тексте следующего ключаPrintPreviewPanel.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 в кодировку ASCII, поддерживаемую Sweet Home 3D. Это преобразование можно выполнить с помощью инструмента native2ascii, поставляемого с JDK, или выполнить с помощью следующей формы.
Для каждого файла .properties создайте резервную копию этого файла, скопируйте/вставьте текст для преобразования в следующую текстовую область, нажмите кнопку Преобразовать и скопируйте/вставьте преобразованный текст обратно в его файл .properties.
Инструмент преобразования заменит каждый символ, не относящийся к ASCII (буквы латинского алфавита с диакритическими знаками и нелатинские буквы), последовательностью, начинающейся с \u и за которой следует 4-значный шестнадцатеричный код, соответствующий этому символу в Unicode. К сожалению, это преобразование сделает ваш текст совершенно нечитаемым для человека, но если вы этого не сделаете, Sweet Home 3D не сможет правильно отобразить символы вашего перевода. Именно поэтому вам следует создать резервную копию ваших исходных файлов .properties, на случай, если вы захотите изменить их позже.
Если вы хотите напрямую редактировать файлы .properties, преобразованные в ASCII, вы также можете использовать приложение Properties Editor, доступное в виде исполняемого Jar-файла здесь.
Перевод файлов справки
Хороший перевод Sweet Home 3D также должен включать перевод его файлов справки. Перевод всех файлов .html — это долгая задача, но это действительно поможет пользователям изучить программное обеспечение и избежать некоторых запросов в службу поддержки на форуме Sweet Home 3D. Используйте любой HTML-редактор для перевода этих файлов, стараясь сохранить ссылки, которые он содержит, и его таблицу стилей без изменений.
После перевода вам также следует создать снимки экрана диалоговых окон на вашем языке, чтобы заменить изображения, найденные в com/eteks/sweethome3d/viewcontroller/resources/help/en/images. Чтобы иметь возможность создавать такие снимки экрана, создайте и протестируйте первый SH3L-файл, выполнив следующие шаги (как только SH3L-файл, содержащий переведенные файлы .properties, будет существовать, вы также можете запросить у разработчика 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 это подпапка data/languages папки, в которой хранится приложение Sweet Home 3D,
Также обратите внимание, что во время разработки вашего 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,
- Нажмите кнопку Compare.
Последний щелчок покажет вам различия между двумя версиями этого .properties файла (например, эта ссылка покажет вам различия между версией 4.6 и версией 5.0 файла com/eteks/sweethome3d/viewcontroller/package.properties).
Как только вы найдете различия, обновите свой перевод, добавив новые имена ключей, если необходимо, и выпустите новую версию своего перевода.