Введение
Вы говорите на иностранном языке, который еще не поддерживается в Sweet Home 3D, и хотите внести свой вклад в его перевод на этот язык? Начиная с версии 2.3, Sweet Home 3D поддерживает файлы SH3L, и это руководство научит вас, как создать такой файл самостоятельно. SH3L-файл — это автоматически устанавливаемый языковой файл, и пользователям просто нужно дважды щелкнуть SH3L-файл, чтобы перевести Sweet Home 3D на язык, описанный в этом файле.
Основные инструкции
Создание SH3L-файла состоит из:
- загрузки английской версии файлов для перевода,
- распаковки загруженного файла,
- добавления суффикса из 2 букв, соответствующего вашему языку, к
.propertiesфайлам, которые он содержит, - перевода текста в
.propertiesфайлах, - преобразования их в кодировку ASCII,
- перевода текста справки в
.htmlфайлах (необязательно, но будет действительно полезно для пользователей), - упаковки
.propertiesфайлов и файлов справки обратно в файл с расширением SH3L, - двойного щелчка по SH3L-файлу для проверки вашего перевода в Sweet Home 3D,
- распространения вашего SH3L-файла.
Подробные инструкции
Если вас не пугают предыдущие основные инструкции, переходите к следующим шагам.
Получение английской версии
Загрузите архив по адресу /SweetHome3DTranslation.zip (версия 7.5) и распакуйте его с помощью инструментов вашей системы.
SweetHome3DTranslation.zip содержит набор файлов с расширениями .properties и .html, размещенных в подпапках, как показано на рисунке 1.

Все .properties и .html файлы содержат английскую версию текстов, которые вам нужно будет перевести на свой язык:
package.propertiesфайлы описывают метки, меню и пункты меню, отображаемые в пользовательском интерфейсе Sweet Home 3D,basic.propertiesиmetal.propertiesфайлы описывают стандартные метки диалоговых окон,- файлы, заканчивающиеся на
Catalog.properties, описывают названия мебели и текстур, доступных в программном обеспечении, .htmlфайлы содержат текст справки Sweet Home 3D.
Переименование файлов в зависимости от вашего языка
Перед переводом .properties файлов вам следует переименовать каждый из них, добавив к их имени подчеркивание, за которым следует 2-символьный ISO-код, соответствующий вашему языку. Вы найдете этот код в последнем столбце документа
Затем, если вы хотите перевести файлы справки, вам следует также переименовать подкаталог
Например, ISO-код для чешского языка — _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
- Используйте Sweet Home 3D или страницу импорта 3D-моделей, чтобы помочь вам перевести файлы
.properties, заканчивающиеся наCatalog.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 должен также включать перевод его файлов справки. Перевод всех файлов
После перевода вам также следует создать снимки экрана диалоговых окон на вашем языке, чтобы заменить изображения, найденные в 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-файлов
Как только ваш SH3L-файл будет готов, вы можете предложить его кому угодно, объявить о нем пользователям Sweet Home 3D в разделе форума, отведенном для иностранных языков, или в других местах. Если вы согласны, он может быть размещен на этом веб-сайте на странице о переводах, поддерживаемых Sweet Home 3D.
Обновление SH3L-файлов
Некоторые выпуски Sweet Home 3D приносят новые функции для перевода, некоторые — нет. Если вы не переведете метки пользовательского интерфейса, соответствующие этим новым функциям, Sweet Home 3D будет работать, но все новые метки будут отображаться на английском языке. Чтобы найти новые ключи и обновленные ключи в .properties файлах, вы можете использовать функцию, предлагаемую SourceForge.net, которая позволяет сравнивать две версии файла проекта:
- Найдите даты версий Sweet Home 3D, которые вы хотите сравнить, в истории (например, 19 июля 2015 г. для версии 5.0 и 2 февраля 2015 г. для версии 4.6)
- Щелкните
.propertiesили.htmlфайл, который вы хотите обновить, на рисунке 1, - Установите два флажка с номером редакции, соответствующим дате версии для обновленного файла, выбрав дату, которая непосредственно предшествует дате версии Sweet Home 3D,
- Нажмите кнопку Compare.
Последний щелчок покажет вам различия между двумя версиями этого .properties файла (например, эта ссылка покажет вам различия между версией 4.6 и версией 5.0 файла com/eteks/sweethome3d/viewcontroller/package.properties).
После того, как вы нашли различия, обновите свой перевод, добавив при необходимости новые имена ключей, и выпустите новую версию своего перевода.
