Wprowadzenie

Znasz język obcy, który nie jest jeszcze obsługiwany w Sweet Home 3D i chciałbyś pomóc w jego tłumaczeniu? Od wersji 2.3 Sweet Home 3D obsługuje pliki SH3L, a ten przewodnik pokaże Ci, jak samodzielnie stworzyć taki plik. Plik SH3L to automatycznie instalujący się plik językowy – użytkownicy muszą tylko dwukrotnie kliknąć plik SH3L, aby przetłumaczyć Sweet Home 3D na język opisany w tym pliku.

Podstawowe instrukcje

Tworzenie pliku SH3L polega na:

  1. pobraniu angielskiej wersji plików do przetłumaczenia,
  2. rozpakowaniu pobranego pliku,
  3. dodaniu 2-literowego sufiksu odpowiadającego twojemu językowi do plików .properties, które zawiera,
  4. przetłumaczeniu tekstu w plikach .properties,
  5. przekonwertowaniu ich na kodowanie ASCII,
  6. przetłumaczeniu tekstu pomocy w plikach .html (nieobowiązkowe, ale bardzo przydatne dla użytkowników),
  7. spakowaniu plików .properties i plików pomocy z powrotem do pliku z rozszerzeniem SH3L,
  8. dwukrotnym kliknięciu pliku SH3L, aby przetestować tłumaczenie w Sweet Home 3D,
  9. rozpowszechnieniu twojego pliku SH3L.

Szczegółowe instrukcje

Jeśli nie przerażają Cię powyższe podstawowe instrukcje, przejdź do następnych kroków.

Pobieranie wersji angielskiej

Pobierz archiwum z /SweetHome3DTranslation.zip (wersja 7.5) i rozpakuj je za pomocą narzędzi dostępnych w twoim systemie.
SweetHome3DTranslation.zip zawiera zestaw plików z rozszerzeniami .properties i .html umieszczonych w podfolderach, jak pokazano na rysunku 1.

Rysunek 1. Pliki tłumaczenia

Wszystkie pliki .properties i .html zawierają angielską wersję tekstów, które będziesz musiał przetłumaczyć na swój język:

  • pliki package.properties opisują etykiety, menu i elementy menu pokazywane w interfejsie użytkownika Sweet Home 3D,
  • pliki basic.properties i metal.properties opisują standardowe etykiety okien dialogowych,
  • te kończące się na Catalog.properties opisują nazwy mebli i tekstur dostępnych w programie,
  • pliki .html zawierają tekst pomocy Sweet Home 3D.

Pliki .properties muszą być umieszczone w folderach pokazanych na rysunku 1, w przeciwnym razie Sweet Home 3D nie będzie mógł ich poprawnie używać. Nie przenoś plików z ich folderów, nie zmieniaj nazw folderów (z wyjątkiem podkatalogu en w pomocy) i nie usuwaj żadnych folderów.

Zmiana nazw plików w zależności od twojego języka

Przed przetłumaczeniem plików .properties, powinieneś zmienić nazwę każdego z nich, dodając do ich nazwy podkreślenie i 2-znakowy kod ISO odpowiadający twojemu językowi. Kod ten znajdziesz w ostatniej kolumnie dokumentu https://www.loc.gov/standards/iso639-2/php/English_list.php.
Następnie, jeśli chcesz przetłumaczyć pliki pomocy, powinieneś również zmienić nazwę podkatalogu w na ten 2-literowy kod.
Na przykład, kod ISO dla języka czeskiego to . Jeśli chcesz przetłumaczyć Sweet Home 3D na czeski, każda nazwa pliku powinna mieć sufiks _cs, a pliki powinny zostać przemianowane jak pokazano na rysunku 2.

Rysunek 2. Pliki właściwości z sufiksem kodu ISO

Tłumaczenie plików właściwości

Pliki .properties to zwykłe pliki tekstowe i możesz je edytować dowolnym edytorem tekstu, takim jak Wordpad, TextEdit lub emacs. Na przykład, plik com/eteks/sweethome3d/package.properties w Sweet Home 3D 3.0 zawiera następujący tekst:

# 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

# Zasoby dla klasy HomeFramePane
HomeFramePane.untitled=Bez tytułu


# Zasoby dla klasy MacOSXConfiguration
MacOSXConfiguration.WINDOW_MENU.Name=Okno
MacOSXConfiguration.MINIMIZE.Name=Minimalizuj
MacOSXConfiguration.ZOOM.Name=Powiększ
MacOSXConfiguration.BRING_ALL_TO_FRONT.Name=Przenieś wszystko na wierzch


# Zasoby dla klasy SweetHome3D
SweetHome3D.3DError.message=<html> Sweet Home 3D zostanie teraz zamknięty z powodu krytycznego błędu
    <br>w systemie renderowania 3D. Proszę zaktualizować sterowniki DirectX/OpenGL
    <br>karty graficznej komputera. 
SweetHome3D.3DError.title=Błąd 3D
    
SweetHome3D.confirmSaveAfter3DError.message=<html> Sweet Home 3D musi zostać teraz zamknięty z powodu krytycznego błędu w
    <br>systemie renderowania 3D. Czy chcesz zapisać wszystkie zmodyfikowane projekty? 
SweetHome3D.confirmSaveAfter3DError.title=Błąd 3D
SweetHome3D.confirmSaveAfter3DError.save=Zapisz
SweetHome3D.confirmSaveAfter3DError.doNotSave=Nie zapisuj

Plik .properties zawiera trzy rodzaje linii:

  • linie rozpoczynające się znakiem # to komentarze (pokazane na zielono w poprzednim przykładzie). Niektóre komentarze zawierają informacje prawne, niektóre zawierają informacje dla programistów lub tłumaczy. Pozostaw te linie bez zmian.
  • puste linie służą do oddzielenia różnych części pliku .properties.
  • pozostałe linie zaczynają się od tekstu używanego przez Sweet Home 3D jako klucz do znalezienia tekstu wyświetlanego na ekranie (pokazanego na niebiesko w poprzednim przykładzie). Po tym kluczu każda z tych linii zawiera znak równości (=) i tekst w danym języku. Twoja praca zaczyna się od znaków równości. Nie zmieniaj tekstu klucza i zastąp tekst angielski po znaku równości jego tłumaczeniem.

Przypadki szczególne:

  • Teksty zaczynające się od <html> znacznika zawierają tekst w formacie HTML. Teksty te zawierają inne znaczniki HTML między < a > znakami, jak <br> w poprzednim przykładzie , który reprezentuje znak nowej linii w środku długich tekstów. Nie usuwaj tych znaczników HTML, pomagają one Sweet Home 3D poprawnie prezentować niektóre teksty. Tłumaczenie tekstu między znacznikami HTML nie jest bardzo trudne, może z wyjątkiem najgorszego tekstu HTML, który jest wartością klucza WallPanel.wallOrientationLabel.text .
  • Aby uniknąć długich linii w edytorze tekstu, niektóre linie są podzielone na dwie lub więcej linii i oddzielone ukośnikami \jak linia zaczynająca się od SweetHome3D.3DError.message w poprzednim przykładzie. W takim przypadku nie usuwaj znaku \ znajdującego się na końcu linii, ponieważ wskazuje on, że następna linia jest kontynuacją bieżącej linii.
  • Niektóre teksty zawierają specjalne sekwencje znaków zaczynające się znakiem %, jak %s, %d, %1$s, %2$s… Te sekwencje znaków zostaną zastąpione nazwą pliku, jednostką lub liczbą w razie potrzeby, więc nie usuwaj ich.
    Na przykład, sekwencja znaków %s w tekście następującego klucza HomeFurniturePanel.widthLabel.text:
    HomeFurniturePanel.widthLabel.text=Szerokość (%s):
    zostanie zastąpiona aktualnie używaną jednostką. Dwie sekwencje znaków %1$d i %2$d które pojawiają się w tekście następującego klucza PrintPreviewPanel.pageLabel.text:
    PrintPreviewPanel.pageLabel.text=Strona %1$d/%2$d
    pojawią się na ekranie jako numer strony i liczba stron, a ty powinieneś przetłumaczyć tylko słowo Page.
  • Niektóre teksty zawierają również specjalną sekwencję znaków \njak w następującym przykładzie:
    HomeController.saveError=Nie można zapisać projektu w
    "%s"
    Ta sekwencja znaków jest wyświetlana przez Sweet Home 3D jako znak nowej linii do podziału linii na ekranie i nie powinieneś ich usuwać.
  • Wartość klucza HelpController.helpIndex wskazuje katalog, w którym można znaleźć pliki pomocy. Jeśli tłumaczysz pliki pomocy .html, powinieneś zastąpić podkatalog en 2-literowym kodem swojego języka.
    Na przykład, jeśli tłumaczysz pomoc na czeski, powinno to wyglądać tak:
    HelpController.helpIndex=/com/eteks/sweethome3d/viewcontroller/resources/help/cs/index.html
  • Tekst kluczy kończących się na .mnemonic jest używany przez Sweet Home 3D do odgadnięcia, która litera w etykiecie lub elemencie menu powinna być podkreślona dla dostępu z klawiatury. Ta litera mnemoniczna zależy od wyświetlanego słowa i powinieneś znaleźć unikalną dla każdego okna dialogowego lub menu.
    Na przykład, następujące teksty i mnemoniki wyświetlane w oknie dialogowym modyfikacji mebli:
    HomeFurniturePanel.nameLabel.text=Nazwa:
    HomeFurniturePanel.nameLabel.mnemonic=N
    HomeFurniturePanel.nameVisibleCheckBox.text=Wyświetl nazwę w planie
    HomeFurniturePanel.nameVisibleCheckBox.mnemonic=W
    HomeFurniturePanel.widthLabel.text=Szerokość (%s):
    HomeFurniturePanel.widthLabel.mnemonic=S
    mogą być przetłumaczone na francuski jako:
    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
  • Użyj Sweet Home 3D lub strony importu modeli 3D, aby pomóc sobie w tłumaczeniu plików .properties kończących się na Catalog.properties.

Konwertowanie plików właściwości na kodowanie ASCII

Jeśli przetłumaczyłeś teksty na język zawierający litery nienależące do kodowania ISO-8859-1 (głównie języki Europy Środkowej i Wschodniej oraz języki z alfabetem nielacińskim), będziesz musiał przekonwertować wszystkie swoje pliki .properties na kodowanie ASCII obsługiwane przez Sweet Home 3D. Konwersję tę można wykonać za pomocą narzędzia native2ascii dostarczonego z JDK lub za pomocą poniższego formularza.
Dla każdego pliku .properties utwórz kopię zapasową tego pliku, skopiuj/wklej tekst do konwersji w poniższe pole tekstowe, kliknij przycisk Konwertuj i skopiuj/wklej przekonwertowany tekst z powrotem do pliku .properties.

Narzędzie konwersji zastąpi każdy znak spoza ASCII (litery łacińskie z akcentami i litery niełacińskie) sekwencją rozpoczynającą się od \u, po której następuje 4-cyfrowy kod szesnastkowy odpowiadający temu znakowi w Unicode. Niestety, ta konwersja sprawi, że Twój tekst będzie prawie nieczytelny dla człowieka, ale jeśli jej nie wykonasz, Sweet Home 3D nie będzie w stanie poprawnie wyświetlić znaków Twojego tłumaczenia. Z tego powodu powinieneś utworzyć kopię zapasową oryginalnych plików .properties, na wypadek gdybyś chciał je później zmienić.
Jeśli chcesz bezpośrednio edytować pliki .properties przekonwertowane na ASCII, możesz również użyć aplikacji Properties Editor dostępnej jako plik wykonywalny Jar tutaj.

Tłumaczenie plików pomocy

Dobre tłumaczenie Sweet Home 3D powinno również zawierać tłumaczenie plików pomocy. Tłumaczenie wszystkich plików .html to długie zadanie, ale naprawdę pomoże użytkownikom w nauce oprogramowania i uniknie niektórych próśb o wsparcie na forum Sweet Home 3D. Użyj dowolnego edytora HTML do tłumaczenia tych plików, starając się zachować zawarte w nich linki i arkusz stylów bez zmian.
Po przetłumaczeniu powinieneś również utworzyć zrzuty ekranu okien dialogowych w swoim języku, aby zastąpić obrazy znajdujące się w com/eteks/sweethome3d/viewcontroller/resources/help/en/images. Aby móc tworzyć takie zrzuty ekranu, utwórz i przetestuj pierwszy plik SH3L, wykonując następujące kroki (gdy istnieje już plik SH3L zawierający przetłumaczone pliki .properties, możesz również poprosić dewelopera Sweet Home 3D o wygenerowanie zrzutów ekranu).

Tworzenie pliku SH3L

Gdy wszystkie pliki .properties i .html są przetłumaczone i w razie potrzeby przekonwertowane na ASCII (lub nawet wcześniej, jeśli chcesz przetestować tę procedurę), powinieneś spakować je do pliku zip. W zależności od Twojego systemu, tworzenie pliku zip można wykonać według następującej procedury:

  • w systemie Windows wybierz folder com zawierający wszystkie przetłumaczone pliki i wybierz Wyślij do > Folder skompresowany z menu kontekstowego,
  • w systemie Mac OS X wybierz folder com zawierający wszystkie przetłumaczone pliki i wybierz opcję menu Plik > Kompresuj « com »,
  • w systemie Linux wybierz folder com zawierający wszystkie przetłumaczone pliki, wybierz Utwórz archiwum… z menu kontekstowego, a następnie wybierz .zip z listy formatów.

Na koniec zmień rozszerzenie .zip pliku zip na .sh3l. Plik SH3L może mieć dowolną nazwę, ale aby uniknąć konfliktów z istniejącymi plikami SH3L, powinieneś nazwać go od języka, który zawiera, i wersji Sweet Home 3D, którą przetłumaczyłeś (na przykład, French-4.1.sh3l mogłaby być dobrą nazwą dla francuskiego tłumaczenia Sweet Home 3D 4.1).

Testowanie pliku SH3L

Aby przetestować tłumaczenie, kliknij dwukrotnie plik SH3L lub wybierz go za pomocą przycisku Importuj plik biblioteki językowej wyświetlanego u góry panelu Preferencje. Spowoduje to uruchomienie Sweet Home 3D i przetłumaczenie interfejsu użytkownika na język opisany w pliku SH3L. Spowoduje to również skopiowanie pliku SH3L do folderu zależnego od Twojego systemu:

  • w systemie Windows Vista / 7 / 8 / 10 / 11 ten folder to C:\Users\użytkownik\AppData\Roaming\eTeks\Sweet Home 3D\languages,
  • w systemie Windows XP i wcześniejszych wersjach Windows ten folder to C:\Documents and Settings\użytkownik\Application Data\eTeks\Sweet Home 3D\languages,
  • w systemie macOS to podfolder Library/Application Support/eTeks/Sweet Home 3D/languages w Twoim folderze użytkownika,
  • w systemie Linux i innych systemach Unix to podfolder .eteks/sweethome3d/languages w Twoim folderze użytkownika,
  • w przenośnej wersji Sweet Home 3D to podfolder data/languages w folderze, w którym przechowywana jest aplikacja Sweet Home 3D,

Pamiętaj również, że podczas tworzenia pliku SH3L prawdopodobnie będziesz musiał ponownie uruchomić Sweet Home 3D, aby zobaczyć zmiany w swoim pliku SH3L.

Dystrybucja plików SH3L

Gdy Twój plik SH3L jest gotowy, możesz zaproponować go każdemu, ogłosić użytkownikom Sweet Home 3D w części forum zarezerwowanej dla języków obcych lub w innych miejscach. Jeśli się zgodzisz, może być udostępniony na tej stronie internetowej na stronie o tłumaczeniach obsługiwanych przez Sweet Home 3D.

Aktualizacja plików SH3L

Niektóre wydania Sweet Home 3D wprowadzają nowe funkcje do przetłumaczenia, niektóre nie. Jeśli nie przetłumaczysz etykiet interfejsu użytkownika odpowiadających tym nowym funkcjom, Sweet Home 3D będzie działać, ale wszystkie nowe etykiety pojawią się w języku angielskim. Aby znaleźć nowe klucze i zaktualizowane klucze w plikach .properties, możesz skorzystać z funkcji oferowanej przez SourceForge.net, która pozwala porównać dwie wersje pliku projektu:

  1. Wyszukaj daty wersji Sweet Home 3D, które chcesz porównać, w historii (na przykład 19 lipca 2015 dla wersji 5.0 i 2 lutego 2015 dla wersji 4.6)
  2. Kliknij plik .properties lub .html, który chcesz zaktualizować, na rysunku 1,
  3. Zaznacz dwa pola wyboru numeru rewizji odpowiadającego dacie wersji dla zaktualizowanego pliku, wybierając datę, która jest tuż przed datą wersji Sweet Home 3D,
  4. Kliknij przycisk Porównaj.

Ostatnie kliknięcie pokaże różnice między dwiema wersjami tego pliku .properties (na przykład ten link pokaże różnice między wersją 4.6 a wersją 5.0 pliku com/eteks/sweethome3d/viewcontroller/package.properties).

Po znalezieniu różnic zaktualizuj swoje tłumaczenie, dodając w razie potrzeby nowe nazwy kluczy, i wydaj nową wersję swojego tłumaczenia.