Introducción

¿Hablas un idioma extranjero que aún no es compatible con Sweet Home 3D y te gustaría contribuir a su traducción a ese idioma? A partir de la versión 2.3, Sweet Home 3D admite archivos SH3L y esta guía te enseñará a crear un archivo de este tipo por ti mismo. Un archivo SH3L es un archivo de idioma autoinstalable y los usuarios solo tienen que hacer doble clic en un archivo SH3L para traducir Sweet Home 3D al idioma descrito por ese archivo.

Instrucciones básicas

La creación de un archivo SH3L consiste en:

  1. descargar una versión en inglés de los archivos para traducir,
  2. descomprimir el archivo descargado,
  3. añadir un sufijo de 2 letras que coincida con tu idioma a los archivos .properties que contiene,
  4. traducir el texto en los archivos .properties,
  5. convertirlos a codificación ASCII,
  6. traducir el texto de ayuda en los archivos .html (no es obligatorio, pero será realmente útil para los usuarios),
  7. volver a comprimir los archivos .properties y los archivos de ayuda en un archivo con la extensión SH3L,
  8. hacer doble clic en el archivo SH3L para probar tu traducción en Sweet Home 3D,
  9. distribuir tu archivo SH3L.

Instrucciones detalladas

Si no te asustan las instrucciones básicas anteriores, sigue adelante con los siguientes pasos.

Obtener la versión en inglés

Descarga el archivo en /SweetHome3DTranslation.zip (versión 7.5) y descomprímelo con las herramientas de tu sistema.
SweetHome3DTranslation.zip contiene un conjunto de archivos con extensiones .properties y .html colocados en subcarpetas como se muestra en la figura 1.

Figura 1. Archivos de traducción

Todos los archivos .properties y .html contienen la versión en inglés de los textos que tendrás que traducir a tu idioma:

  • los archivos package.properties describen las etiquetas, los menús y los elementos de menú que se muestran en la interfaz de usuario de Sweet Home 3D,
  • los archivos basic.properties y metal.properties describen las etiquetas de los diálogos estándar,
  • los que terminan en Catalog.properties describen los nombres de los muebles y las texturas disponibles en el software,
  • los archivos .html contienen el texto de la ayuda de Sweet Home 3D.

Los archivos .properties deben colocarse en las carpetas que se muestran en la figura 1; de lo contrario, Sweet Home 3D no podrá utilizarlos correctamente. Así que no saques los archivos de su carpeta, no cambies el nombre de ninguna carpeta (excepto el subdirectorio en de help) y no borres ninguna carpeta.

Cambiar el nombre de los archivos según tu idioma

Antes de traducir los archivos .properties, debes cambiar el nombre de cada uno de ellos añadiendo a su nombre un guion bajo seguido del código ISO de 2 caracteres que coincida con tu idioma. Encontrarás este código en la última columna del documento https://www.loc.gov/standards/iso639-2/php/English_list.php.
Luego, si quieres traducir los archivos de ayuda, también debes cambiar el nombre del subdirectorio de con ese código de 2 letras también.
Por ejemplo, el código ISO para el checo es . Si quieres traducir Sweet Home 3D al checo, el nombre de cada archivo debe tener el sufijo _cs, y debes cambiar el nombre de los archivos como se muestra en la figura 2.

Figura 2. Archivos de propiedades con su sufijo de código ISO

Traducir archivos de propiedades

Los archivos .properties son archivos de texto plano y puedes editarlos con cualquier editor de texto como Wordpad, TextEdit o emacs. Por ejemplo, el archivo com/eteks/sweethome3d/package.properties en Sweet Home 3D 3.0 contiene el siguiente texto:

# 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=Sin título


# Resources for MacOSXConfiguration class
MacOSXConfiguration.WINDOW_MENU.Name=Ventana
MacOSXConfiguration.MINIMIZE.Name=Minimizar
MacOSXConfiguration.ZOOM.Name=Zoom
MacOSXConfiguration.BRING_ALL_TO_FRONT.Name=Traer todo al frente


# Resources for SweetHome3D class
SweetHome3D.3DError.message=<html> Sweet Home 3D se cerrará ahora debido a un error fatal
    <br>en el sistema de renderizado 3D. Actualiza los controladores DirectX/OpenGL
    <br>de tu tarjeta gráfica. 
SweetHome3D.3DError.title=Error 3D
    
SweetHome3D.confirmSaveAfter3DError.message=<html> Sweet Home 3D debe cerrarse ahora debido a un error fatal en
    <br>el sistema de renderizado 3D. ¿Quieres guardar todas las casas modificadas? 
SweetHome3D.confirmSaveAfter3DError.title=Error 3D
SweetHome3D.confirmSaveAfter3DError.save=Guardar
SweetHome3D.confirmSaveAfter3DError.doNotSave=No guardar

Un archivo .properties contiene tres tipos de líneas:

  • las líneas que empiezan con un carácter # son comentarios (se muestran en verde en el ejemplo anterior). Algunos comentarios contienen información legal, otros dan información a los desarrolladores o a los traductores. Mantén estas líneas sin cambios.
  • las líneas vacías se utilizan simplemente para separar las distintas partes de un archivo .properties.
  • las otras líneas empiezan con un texto utilizado por Sweet Home 3D como clave para encontrar un texto que se muestra en la pantalla (se muestra en azul en el ejemplo anterior). Siguiendo esta clave, cada una de estas líneas contiene un signo igual (=) y un texto en un idioma determinado. Tu trabajo empieza a partir de los signos iguales. No cambies el texto de la clave y sustituye el texto en inglés después del signo igual por su traducción.

Casos especiales:

  • Los textos que empiezan con una etiqueta <html> contienen texto en formato HTML. Estos textos contienen otras etiquetas HTML entre < y > signos, como <br> en el ejemplo anterior que representa un retorno de carro en medio de textos largos. No elimines estas etiquetas HTML, ayudan a Sweet Home 3D a presentar correctamente algunos textos. Traducir texto entre etiquetas HTML no es muy difícil, excepto tal vez para el peor texto HTML que es el valor de la clave WallPanel.wallOrientationLabel.text .
  • Para evitar líneas largas en el editor de texto, algunas líneas se dividen en dos o más líneas y luego se separan por barras invertidas \, como la línea que empieza por SweetHome3D.3DError.message en el ejemplo anterior. En ese caso, no elimines el signo \ situado al final de una línea porque indica que la siguiente línea sigue a la línea actual.
  • Algunos textos contienen una secuencia de caracteres especiales que empiezan con un signo % , como %s, %d, %1$s, %2$s… Estas secuencias de caracteres se sustituirán por un nombre de archivo, una unidad o un número cuando sea necesario, así que no las elimines.
    Por ejemplo, la secuencia de caracteres %s en el texto de la siguiente clave HomeFurniturePanel.widthLabel.text:
    HomeFurniturePanel.widthLabel.text=Ancho (%s):
    se sustituirá por la unidad que se esté utilizando. Las dos secuencias de caracteres %1$d y %2$d que aparecen en el texto de la siguiente clave PrintPreviewPanel.pageLabel.text:
    PrintPreviewPanel.pageLabel.text=Página  %1$d/%2$d
    aparecerán en la pantalla como un número de página y el número de páginas, y solo debes traducir la palabra Page.
  • Algunos textos también contienen la secuencia de caracteres especiales \n, como en el siguiente ejemplo:
    HomeController.saveError=No se puede guardar la casa en\n"%s"
    Sweet Home 3D muestra esta secuencia de caracteres como un retorno de carro para dividir una línea en la pantalla, y no debes eliminarlos.
  • El valor de la clave HelpController.helpIndex indica el directorio donde se pueden encontrar los archivos de ayuda. Si traduces los archivos de ayuda .html, debes sustituir el subdirectorio en encontrado por el código de 2 letras de tu idioma.
    Por ejemplo, si traduces la ayuda al checo, debería quedar:
    HelpController.helpIndex=/com/eteks/sweethome3d/viewcontroller/resources/help/cs/index.html
  • Sweet Home 3D utiliza el texto de las claves que terminan con .mnemonic para adivinar qué letra de una etiqueta o un elemento de menú debe subrayarse para el acceso mediante el teclado. Esta letra mnemotécnica depende de la palabra mostrada y debes encontrar una única por cuadro de diálogo o menú.
    Por ejemplo, los siguientes textos y mnemónicos mostrados en el cuadro de diálogo de modificación de muebles:
    HomeFurniturePanel.nameLabel.text=Nombre:
    HomeFurniturePanel.nameLabel.mnemonic=N
    HomeFurniturePanel.nameVisibleCheckBox.text=Mostrar nombre en el plano
    HomeFurniturePanel.nameVisibleCheckBox.mnemonic=S
    HomeFurniturePanel.widthLabel.text=Ancho (%s):
    HomeFurniturePanel.widthLabel.mnemonic=W
    se puede traducir al francés por:
    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
  • Utiliza Sweet Home 3D o la página de importación de modelos 3D para ayudarte a traducir los archivos .properties que terminan en Catalog.properties.

Convertir archivos de propiedades a codificación ASCII

Si has traducido textos a un idioma con letras que no pertenecen a la codificación ISO-8859-1 (principalmente idiomas de Europa Central y del Este e idiomas con un alfabeto no latino), tendrás que convertir todos tus archivos .properties a una codificación ASCII compatible con Sweet Home 3D. Esta conversión se puede hacer con la herramienta native2ascii proporcionada con el JDK o se puede realizar con el siguiente formulario.
Para cada archivo .properties, crea una copia de seguridad de ese archivo, copia/pega el texto a convertir en el siguiente área de texto, haz clic en el botón Convertir y copia/pega el texto convertido de nuevo en su archivo .properties.

La herramienta de conversión sustituirá cada carácter no ASCII (letras latinas acentuadas y letras no latinas) por una secuencia que empiece por \u y seguida de un código de 4 dígitos hexadecimales que coincida con ese carácter en Unicode. Desgraciadamente, esta conversión hará que tu texto sea bastante ilegible para un humano, pero si no la realizas, Sweet Home 3D no podrá mostrar correctamente los caracteres de tu traducción. Esta es la razón por la que debes crear una copia de seguridad de tus archivos originales .properties, en caso de que quieras cambiarlos más tarde.
Si quieres editar directamente los archivos .properties convertidos a ASCII, también puedes utilizar la aplicación Properties Editor disponible como un archivo ejecutable Jar aquí.

Traducir los archivos de ayuda

Una buena traducción de Sweet Home 3D también debería incluir la traducción de sus archivos de ayuda. Traducir todos los archivos .html es una tarea larga, pero realmente ayudará a los usuarios a aprender el software y evitar algunas solicitudes de soporte en el foro de Sweet Home 3D. Utiliza cualquier editor HTML para traducir estos archivos, tratando de mantener los enlaces que contiene y su hoja de estilo sin cambios.
Una vez traducidos, también debes crear capturas de pantalla de los cuadros de diálogo en tu idioma para sustituir las imágenes que se encuentran en com/eteks/sweethome3d/viewcontroller/resources/help/en/images. Para poder crear tales capturas de pantalla, crea y prueba un primer archivo SH3L con los siguientes pasos (una vez que exista un archivo SH3L que contenga archivos .properties traducidos, también puedes solicitar al desarrollador de Sweet Home 3D que genere las capturas de pantalla).

Crear el archivo SH3L

Una vez que todos los archivos .properties y .html se traducen y se convierten a ASCII si es necesario (o incluso antes si quieres probar este procedimiento), debes comprimirlos en un archivo. Dependiendo de tu sistema, la creación de un archivo zip se puede hacer con el siguiente procedimiento:

  • en Windows, selecciona la carpeta com que contiene todos los archivos traducidos y elige Enviar a > Carpeta comprimida desde su menú contextual,
  • en Mac OS X, selecciona la carpeta com que contiene todos los archivos traducidos y elige el elemento de menú Archivo > Comprimir « com »,
  • en Linux, selecciona la carpeta com que contiene todos los archivos traducidos, elige Crear archivo… desde su menú contextual y luego selecciona .zip en la lista de formatos.

Finalmente, cambia la extensión .zip del archivo zip a .sh3l. Un archivo SH3L puede tener cualquier nombre, pero para evitar conflictos con los archivos SH3L existentes, debes nombrarlo a partir del idioma que contiene y la versión de Sweet Home 3D que tradujiste (por ejemplo, French-4.1.sh3l podría ser un buen nombre para la traducción francesa de Sweet Home 3D 4.1).

Probar un archivo SH3L

Para probar la traducción, haz doble clic en un archivo SH3L o elígelo con el botón Importar archivo de biblioteca de idiomas que se muestra en la parte superior del panel Preferencias. Esto iniciará Sweet Home 3D y traducirá su interfaz de usuario al idioma descrito en el archivo SH3L. Esto también copiará el archivo SH3L en una carpeta que depende de tu sistema:

  • en Windows Vista / 7 / 8 / 10 / 11, esta carpeta es C:\Users\usuario\AppData\Roaming\eTeks\Sweet Home 3D\languages,
  • en Windows XP y versiones anteriores de Windows, esta carpeta es C:\Documents and Settings\usuario\Application Data\eTeks\Sweet Home 3D\languages,
  • en macOS, es la subcarpeta Library/Application Support/eTeks/Sweet Home 3D/languages de tu carpeta de usuario,
  • en Linux y otros Unix, es la subcarpeta .eteks/sweethome3d/languages de tu carpeta de usuario,
  • con la versión portátil de Sweet Home 3D, es la subcarpeta data/languages de la carpeta donde se almacena la aplicación Sweet Home 3D,

Tenga en cuenta también que, durante el desarrollo de su archivo SH3L, probablemente tendrá que reiniciar Sweet Home 3D para ver los cambios en su archivo SH3L.

Distribución de archivos SH3L

Una vez que su archivo SH3L esté listo, puede proponerlo a quien quiera, anunciarlo a los usuarios de Sweet Home 3D en la parte del foro reservada a idiomas extranjeros o en otros lugares. Si está de acuerdo, se puede poner a disposición en este sitio web en la página sobre traducciones compatibles con Sweet Home 3D.

Actualización de archivos SH3L

Algunas versiones de Sweet Home 3D traen nuevas funciones para traducir, otras no. Si no traduce las etiquetas de la interfaz de usuario que coinciden con estas nuevas funciones, Sweet Home 3D funcionará, pero todas las etiquetas nuevas aparecerán en inglés. Para encontrar las nuevas claves y las claves actualizadas en los archivos .properties, puede utilizar una función ofrecida por SourceForge.net que le permite comparar dos versiones de un archivo de proyecto:

  1. Busque las fechas de las versiones de Sweet Home 3D que desea comparar en el historial (por ejemplo, 19 de julio de 2015 para la versión 5.0 y 2 de febrero de 2015 para la versión 4.6)
  2. Haga clic en el archivo .properties o .html que desea actualizar en la figura 1,
  3. Seleccione las dos casillas de verificación del número de revisión que coincida con la fecha de la versión del archivo actualizado, eligiendo la fecha que sea justo anterior a una fecha de versión de Sweet Home 3D,
  4. Haga clic en el botón Comparar.

El último clic le mostrará las diferencias entre las dos versiones de ese archivo .properties (por ejemplo, este enlace le mostrará las diferencias entre la versión 4.6 y la versión 5.0 del archivo com/eteks/sweethome3d/viewcontroller/package.properties).

Una vez que haya encontrado las diferencias, actualice su traducción, añadiendo nuevos nombres de clave si es necesario, y publique una nueva versión de su traducción.