MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Tutorial lokalizacji rozszerzeń do Firefoksa i Thunderbirda dla wersji 1.0 i wyższych

Wprowadzenie

Aby dobrze zlokalizować na język polski rozszerzenie potrzeba (nie)dużo wiedzy i samozaparcia. Wbrew pozorom nie jest to jednak takie trudne i mając trochę wiedzy komputerowej można szybko nauczyć się tej magii.

Potrzebna wiedza:

  • Trochę umiejętności obsługi komputera i programów
  • Znajomość języka angielskiego
  • Znajomość języka polskiego (dysleksja i dysgrafia dyskwalifikują chętnego)


Potrzebne narzędzia (najprostszy zestaw)

  • Edytor tekstu z możliwością kodowania UTF-8 i wyłączenia BOM (ang. Byte Order Mark - znacznik kolejności bajtów). Zalecany przez moją osobę - PSPad. Posiada jeszcze wiele innych przydatnych podczas pracy lokalizatora funkcji, no i jest oczywiście freeware!
  • Kompresor, dekompresor plików - każdy, który dobrze radzi sobie z plikami spakowanymi za pomocą kompresji .zip. Moje zalecenie - Total Commander - Tak! Otóż TC z zainstalowanymi wtyczkami WCX to jest totalne ułatwienie pracy z rozszerzeniami. Wszystkie potrzebne wtyczki posiada wersja TC PowerPack.

Jak?

Wiedza jest, narzędzia też, no to zaczynamy odczarowywać rozszerzenia i zajrzyjmy do ich wnętrza. Jak? Prosta sprawa. Rozszerzenia to nic innego niż archiwum .zip, ale zamiast rozszerzenia .zip posiadają rozszerzenie pliku .xpi. Skoro .xpi to nic innego niż .zip, więc potraktujmy je jakimś dekompresorem. No i cóż się okazuje? W środku znajdują się katalogi i pliki mniej więcej o takiej strukturze:

Katalogi:

  • chrome - właściwe bebechy rozszerzenia
  • default - domyślne ustawienia rozszerzenia

Pliki

  • chrome.manifest - plik instalacyjny
  • install.rdf - plik instalacyjny

Ale znowu niespodzianka. Katalog "chrome" zawiera znowu jakiś spakowany plik o rozszerzeniu .jar. Taka budowa rozszerzenia wskazuje, że działa ono także w systemie Linux. Bez paniki. Plik .jar, to nic innego jak plik .zip tylko z rozszerzeniem .jar. Tak więc dekompresor szybciutko daje sobie z nim radę i w środku znowu widzimy katalogi:

  • content - to budowa rozszerzenia pliki .xul i .js
  • locale - to nas najbardziej interesuje, tu są katalogi i pliki językowe
  • skin - obrazki, plik .css

Skoro przebrnęliśmy przez gąszcz spakowanych archiwów, katalogów i plików, wiemy co w nich się znajduje - przedpole zostało przygotowane. Zabierajmy się zatem do roboty.

locale

Jak wcześniej wspomniałem to co nas najbardziej interesuje, to katalog "locale", w którym znajdują się podkatalogi lokalizacji tzn. języków na jakie to rozszerzenie zostało przetłumaczone. Jeśli w nim znajduje się katalog "pl-PL" lub "pl" to nie mamy tutaj nic do roboty, bo już ktoś zrobił to co my chcieliśmy zrobić. Jeśli natomiast takiego katalogu nie ma, to jest robota dla nas.

Ponieważ dla wszystkich aplikacji Mozilli podstawowym językiem jest angielski-amerykański (en-US), on też posłuży nam jako podstawa tłumaczenia na język polski, a robimy to w następujący sposób:

  • kopiujemy katalog "en-US" w dowolne miejsce na dysku
  • zmieniamy mu nazwę na "pl-PL"
  • przystępujemy do tłumaczenia

Zanim jednak zaczniemy tłumaczenie proponuję zainstalowanie rozszerzenia w wersji angielskiej (jeśli nie ma pliku przeznaczonego dla konkretnej wersji językowej programu, to domyślnie instaluje się wersja angielska). Będzie łatwiej wykonywać tłumaczenie widząc umiejscowienie tłumaczonych elementów.

No to teraz przypatrzmy się, co znajduje się w tym katalogu lokalizacji.

Otóż, może w nim znajdować się kolejny podkatalog albo pliki. Jeśli jest podkatalog, to interesujące nas pliki będą wewnątrz tego podkatalogu i trzeba do nich dotrzeć. Niemniej w obu przypadkach docieramy do następujących plików:

  • contents. rdf - dane instalacyjne (czasami może go nie być, dane instalacyjne zostały umieszczone we wcześniejszych plikach instalacyjnych)
  • pliki z rozszerzeniem .dtd lub .ent - dane z tych plików pobierane są przez pliki *.xul
  • pliki z rozszerzeniem .properties - dane z tych plików pobierane są przez pliki *.js

Wszystkie te pliki zawierają elementy, które trzeba przetłumaczyć. Uruchamiamy edytor tekstu (przypominam o ustawieniu edytora na kodowanie UTF-8 i nie wstawianie BOM) i zacznijmy od pliku "contents.rdf".

contents.rdf

Zmieniamy w nim następujące elementy: en-US na pl-PL</li></ul> Jeśli są: - English (US) na Polski (PL) - chrome:author="xxxxxxxxxx" na chrome:author="twoje_nazwisko"

.dtd

Teraz plik .dtd: Znajdujemy w nim wiersze wyglądające mniej więcej tak:

<!ENTITY xxxxxxxxxxxx "Zzzzzzzzz">

gdzie: Zzzzzzzzz jest elementem do tłumaczenia, czyli tłumaczymy to co znajduje się pomiędzy znakami cytowania " ".

Należy zwrócić baczną uwagę, aby nie zgubić żadnych innych znaków w encji (entity), bo wówczas po zainstalowaniu rozszerzenia będziemy mieli doczynienie ze zjawiskiem "czerwonych znaków" na dole okna przeglądarki lub nie będzie działało rozszerzenie. Uwaga! W tłumaczonym tekście nie wolno używać następujących znaków:

Niedozwolone                 Zamienniki
       &                          &amp;
       <                          &lt;
       >                          &gt;
       "                          &quot;
       %                          &#037;
       '                          &apos;

.properties

No to jeszcze tylko plik *.properties. Ten znowu wygląda inaczej - nie mogliby jakoś tego ujednolicić? No niestety nie, bo inne są wymagania i przetwarzanie w plikach *.xul i *.js. Wiersze w tym pliku mają postać: xxxxxxxxxx=Zzzzzzzzz. Proste! No tak - proste i łatwo określić co się w nich tłumaczy. Wszystko po znaku równości (=).

Uwaga! W tłumaczonym tekście nie wolno używać następujących znaków:

Niedozwolone             Zamienniki
       "                       \"
       '                        \'
       \                        \\

Czyli dany znak trzeba poprzedzić odwróconym ukośnikiem "\"

Kilka uwag na koniec

Uff! Robota z tłumaczeniem zakończona. Teraz trzeba uporządkować ten cały bałagan i sprawdzić nasz wysiłek intelektualny i umysłowy, a więc spakować wszystkie pliki i katalogi tak, aby struktura ich wyglądała jak na początku i zainstalować rozszerzenie.

Zabieramy się za to w następujący sposób:

  • Kopiujemy katalog "pl-PL" do katalogu "locale"
  • Usuwamy z niego wszystkie pozostałe lokalizacje
  • Pakujemy katalogi znajdujące się poprzednio w archiwum *.jar do takiego samego archiwum (plik .zip z nazwą .jar) i umieszczamy go w katalogu chrome

Teraz należałoby wszystkie pliki i katalogi spakować do archiwum *.xpi, ale to za chwilę, bo w plikach instalacyjnych należy dokonać kilku zmian, tak aby nasza nowa lokalizacja została rozpoznana przez aplikację. W tym celu musimy wyedytować pliki install.rdf i chrome.manifest:

chrome.manifest

W pliku chrome.manifest w wierszu wyglądającym mniej więcej tak:

locale	console2	en-US	jar:chrome/console2.jar!/locale/en-US/console2/ 

gdzie: console2 w tym przykładzie są nazwami katalogów rozszerzenia Console2, w innym będą inne nazwy, zmieniamy "en-US" na "pl-PL"

Pozostałe takie wiersze z określeniami innych lokalizacji usuwamy.

install.rdf

W pliku install.rdf w wierszu o takim wyglądzie:

<description>Krótki_opis_rozszerzenia.</description>
Krótki_opis_rozszerzenia jest po angielsku, zamieniamy na opis po polsku.

Jeśli jest wiersz:

<em:locale>locale/en-US/jakaś_nazwa/<em:locale>

zmieniamy w nim "en-US" na "pl-PL", pozostałe podobne wiersze usuwamy. Teraz już ostatni krok przed instalacją rozszerzenia - pakujemy wszystkie katalogi i pliki do archiwum .zip z rozszerzeniem .xpi.

Teraz sprawdzenie tego co zrobiliśmy, czyli instalacja naszego rozszerzenia i później jego korekty.

Jeśli dotrwałeś do tego momentu, to znaczy, że jesteś zdesperowany, aby tłumaczyć rozszerzenia, zatem należy ci się nagroda.

Jak wcześniej wspomniałem polecam do pracy z rozszerzeniami Total Commandera z zainstalowanymi wtyczkami WCX. Dzięki nim odpada cały galimatias z rozpakowywaniem i pakowaniem archiwów. Po prostu archiwa otwiera i operuje się na nich jak na zwykłych katalogach. Pozostaje tylko końcowe spakowanie do pliku *.xpi, które też można ułatwić maksymalnie.

Pożyteczne odnośniki

  1. Przekład tekstów informatycznych na polski
  2. Gramatyka języka polskiego
  3. Mozilla Developer Center po polsku
  4. Tworzenie rozszerzeń na MozzilaZine
  5. Tworzenie rozszerzeń
  6. ">Tworzenie rozszerzeń
  7. Słownik Języka Polskiego

--
Napisał: Leszek (Teo) Życzkowski

Autorzy i etykiety dokumentu

 Autorzy tej strony: Teo, Coldpeer, Ptak82
 Ostatnia aktualizacja: Teo,