Как поправить перевод в SweetHome3D

SweetHome3D

Для тех, кто не знает, SweetHome3D – это бесплатный трёхмерный редактор дизайна интерьера, кроссплатформенный и русифицированный.
Может есть варианты и лучше, но для домашних задач этой программы хватает, что называется, «с головой».

С её помощью можно:

  • создать план квартиры или этажа загородного дома,
  • “примерить” перестановку мебели без порчи пола и нервов,
  • перекрасить стены, пол и потолок,
  • рассчитать расход материалов для ремонта и многое другое.

Написан SweetHome3D на Java, библиотек объёмной фурнитуры в сети предостаточно, вот только перевод в них не просто хромает, а временами абсолютно не соответствует моделям.
Чего не простишь бесплатному ПО, хотя как Вам “Чугунная ванна” вместо “Кованая кровать”?
И это далеко не самый вычурный вариант… :)

Такие “вольности” в базе локализаций лечатся довольно просто, о чём я Вам сегодня и расскажу.

Библиотека фурнитуры представляет собой zip-архив с расширением *.sh3f, то есть, открыть её можно любым имеющимся у Вас архиватором.

При импорте библиотеки фурнитур она копируется в локальный каталог

<system disk>:\Documents and Settings\<username>\Application Data\eTeks\Sweet Home 3D\furniture\

Внутри архива находится папка с моделями и несколько файлов с расширением *.properties, которые и содержат перевод элементов базы данных на требуемый язык.

Ищем PluginFurnitureCatalog_ru.properties и извлекаем его в любую папку на диске.

Вроде просто… но интересное только начинается.

Открываем файл текстовым редактором и видим следующий код:

name#1=\u0421\u0435\u0442\u0447\u0430\u0442\u0430\u044f \u0434\u0432\u0435\u0440\u044c
category#1=\u0414\u0432\u0435\u0440\u0438 \u0438 \u043e\u043a\u043d\u0430

Это – JSON-представление кириллицы в кодировке UTF, а нам “хотелось бы в общих чертах понять, о чём посол толкует”.

Нутро подсказывает, что name#1 – это отображаемое имя элемента 1 в базе данных, а category#1 – рубрика, к которой элемент 1 относится.

Скопируем код после знака “равно”, открываем on-line конвертор и вставляем в поле “Введи код — получи значение”.
Жмём “Преобразовать” и видим вполне русский вариант.

Поле “Введи значение — получи код” служит для обратного преобразования.

Теперь по существу:

  1. Импортируйте библиотеку в редактор.
    Меню – Фурнитура – Импорт библиотеки фурнитуры…
  2. Найдите ущербный перевод в библиотеке и скопируйте его в буфер обмена. Можете эту ересь просто набрать руками в конвертере.
  3. Переведите значение в код, используя on-line конвертер и скопируйте результат в буфер обмена.
  4. В каталоге furniture откройте файл библиотеки архиватором и извлеките файл перевода во временную папку. Файл откройте в текстовом редакторе.
  5. Найдите в файле строку соответствующую содержимому буфера обмена.
  6. В конвертере в поле “Введи значение — получи код” наберите правильный вариант перевода и, получив код, замените им найденный в файле перевода.
  7. Сохраните текстовый файл перевода.
  8. Если хотите, измените данные о переводчике на свои в строке
    # Translated to Russian by <здесь Ваше имя латиницей>
  9. Полученным файлом в библиотеке *.sh3f замените исходный и после перезагрузки редактора Вы увидите плоды своего творчества.

Удачного перевода.

PS: Что-то мне подсказывает, что подобный метод можно использовать и для правки перевода в любой java программе. Или я ошибаюсь?