Na początek uwag drobnych kilka...
Do zainteresowanych czytelników:Nie jest to tutorial typu "step-baj-step" - to by zajęło wiele stron i bardziej by namieszało niż wyjaśniło. Poniższym tekst należy traktować jako wstęp do przygody z tłumaczeniem programów. Ma on na celu przybliżenie ogólnych zasad i wymagań jakie stawia przed potencjalnym tłumaczem "ten fach". Mam nadzieję, że będzie on pomocny w rozwijaniu tegoż zainteresowania.
W przypadku ewentualnych niejasności lub kwestii wymagających dodatkowego wyjaśnienia proszę o kontakt via post w niniejszym wątku. W miarę możliwości postaram się uzupełnić tekst o potrzebne zagadnienia.
Do wyjadaczy w temacie translacji programów i programowania jako takiego:Artykuł był pisany z myślą o ludziach, którzy chcą "bawić się" w spolszczanie programów, ale jednocześnie nie posiadają specjalistycznej wiedzy na tematy związane z programowaniem, budową wewnętrzną plików itp... Dlatego też w tekście użyłem ogromnej liczby uproszczeń celem, jedynie, naświetlenia czytelnikowi pewnych, związanych z zagadnieniem, kwestii bez zagłębiania się w techniczny bełkot. Jeżeli ktoś uważa, że przesadziłem z uproszczeniem, lub używając uproszczenia wypaczyłem sens zagadnienia to proszę o wytknięcie błędu. Z góry dziękuję.
Do Ekipy:Jako, że nie znalazłem na Forum działu gromadzącego różnorakie tutoriale i przepisy, pozwoliłem sobie niniejszy tekst umieścić w dziale związanym z jego tematyką. Jeżeli dokonałem niewłaściwego wyboru proszę o jego korektę. Z góry dziękuję.
Część 1:
Odrobina teorii, czyli gdzie rozpocząć poszukiwaniaNa początek warto wiedzieć, gdzie ukrywają się zasoby "językowe" programu.
Deweloperzy używają wielu metod na lokalizację łańcuchów tekstowych, które można przetłumaczyć. Poniżej najpopularniejsze metody:
1. Plik językowy w formacie tekstowym (pliki o rozszerzeniach: *.txt, *.ini, *.lng, *.lang, *.xml)Należy jednak zwrócić uwagę na mogące występować tu wyjątki. Niektóre pliki, najczęściej *.lng i *.lang, mogą mimo wszystko być zapisane w natywnym formacie programu nie mającym nic wspólnego z czystym tekstem.
Pomijając jednak te drobiazgi, należy wspomnieć, że jest to metoda do najłatwiejszego i bezinwazyjnego tłumaczenia programów. Wystarczy posiadać przyzwoity edytor tekstowy i do boju.
Nie mniej należy zwrócić uwagę na kilka spraw. Językowe pliki tekstowe, są kodowane najczęściej w formatach
UCS,
UTF,
UTF-8,
UTF-8 z sygnaturą. Wspominam o tym dlatego, że domyślny windowsowy notatnik (Notepad)
nie wspiera w 100% żadnego z tych formatów - od biedy umie go zdekodować i wyświetlić poprawnie zawartość pliku, ale przy zapisie pliku użyje kodowania
ANSI co zaowocuje w programie "krzakami" zamiast znaków diakrytycznych.
Ja używam do tego celu freeware'owego edytora
Notepad2 (
Flo's Freeware), ale tego typu edytorów jest w necie cała masa.
Generalnie... Plik językowy otwieramy w edytorze tekstowym, zmieniamy ciągi obcojęzyczne na polskie, zapisujemy, plik dodajemy do programu. Wułala.
Zalety:- Prosto, lekko i przyjemnie
- Tłumaczenie wykonane tą metodą można dystrybuować jako samodzielny plik językowy dodawany do już zainstalowanego programu.
Wady:- Błędy w pliku mogą wpłynąć na wyświetlanie tekstów w programie
2. Plik językowy *.mui (Multilingual User Interface)Równie bezinwazyjna dla programu jak poprzednio, ale nieco bardziej skomplikowana dla tłumacza metoda.
Wszystkie zasoby językowe są przeniesione do pliku w formacie dll o rozszerzeniu
mui - np.
program.exe.0415.mui, gdzie cyfra "0xxx" jest kodem języka jaki zawiera plik. Cyfra jest o tyle ważna, że jest dla programu podstawą do użycia tego właśnie a nie innego pliku językowego (na podstawie ustawień regionalnych ROMu). Dla Polski jest to
0415 (0409 to język angielski).
Ta metoda translacji wymaga już użycia programu do edycji zasobów - o programach do edycji zasobów będzie później.
Zalety:- Tłumaczenie wykonane tą metodą można dystrybuować jako samodzielny plik językowy dodawany do już zainstalowanego programu
- Błędy pliku językowego nie wpływają na pracę programu - w przypadku błędu odczytu pliku jest używany język domyślny programu.
Wady:- Wymaga użycia edytora zasobów
- Program macierzysty musi wspierać obsługę plików mui
3. Dodatkowa biblioteka *.dllSprawa wygląda prawie identycznie jak w przypadku metody powyższej. Różnicą jest tylko rozszerzenie pliku.
4. Brak osobnych plików językowych - wszystkie łańcuchy tekstowe zawarte są w plikach roboczych programu (*.exe, *.dll)Najbardziej inwazyjna dla programu i ryzykowna dla tłumacza metoda. Dotyczy programów, dla których developer/autor nie przewidział możliwości translacji wyżej opisanymi metodami.
Polega ona na bezpośredniej edycji plików roboczych programu.
Zalety:- Tylko jedna: program jest przetłumaczony
Wady:- Wymaga użycia edytora zasobów
- Ingerencja tłumacza w pliki robocze programu może być sprzeczna z licencją programu
- Tłumaczenie można dystrybuować tylko w formie plików roboczych programu lub specjalnie skonstruowanego "patchera" - obie formy mogą być sprzeczne z licencją programu
- Każdy błąd wynikający z ingerencji tłumacza może zaowocować uszkodzeniem pliku - plik/program nie będzie działał
Jednocześnie uprzedzam, że programy oparte o platformę
Microsoft .NET oraz
SDK Manila są "nieprzetłumaczalne" dla przeciętnego tłumacza. Bez środowiska programistycznego dla tych platform, nie jest możliwa ich translacja.
Część 2:
Czego potrzebujemy... czyli dlaczego nie urodziłem się geniuszem.OK. Wiemy już czego szukać. Teraz pora wybrać sobie narzędzia, którymi zmienimy murzyńskie napisy programu w piękną polszczyznę.
Pominę pierwszy sposób translacji programów - ta metoda została z grubsza opisana w komentarzu - a skupię się na pozostałych trzech, które wymagają użycia bardziej wyrafinowanych, niż notatnik, narzędzi. Opis jest wspólny dla wszystkich sposobów polegających na edycji zasobów - jedyna różnica jaka może tu wystąpić, to ilości i rodzaj zasobów zawartych w pliku. Z tego też powodu, opis będzie oparty na ostatniej, opisanej w poprzednim poscie metodzie, czyli edycji plików roboczych systemu - plik roboczy zawiera najwięcej zasobów, tak więc będzie tu dobrym materiałem do wiwisekcji. W opisie postaram się zwracać uwagę na ewentualne różnice występujące w pozostałych metodach w stosunku do opisywanej - dużo tych różnic w sumie nie powinno być.
Tak więc, gromadzimy:
1. Programy do edycji zasobów i inne potrzebne drobiazgiNaszym podstawowym narzędziem będzie program pozwalający na edycję zasobów w plikach
PE.
Tak dla wyjaśnienia, bo tego określenia będziemy często używać:
PE (
Portable Executable), jest to Windowsowy format plików wykonywalnych. Plikami w formacie PE są m.in.:
*.exe,
*.dll,
*.cpl,
*.sys.
Programów do edycji zasobów plików PE jest w Internecie cała masa. Różnią się one poziomem komplikacji, możliwościami i formą dystrybucji (freeware/commercial) jednak ich cechą wspólną jest wykonywanie założonego przez nas zadania.
Wymienię tu tylko trzy najpopularniejsze programy do edycji zasobów:
- Resource Hacker lub ResHacker (strona autora nie istnieje - program należy znaleźć w Internecie)
Najprostszy program do edycji plików PE.
Pozwala na podstawowe czynności związane z edycją zasobów: zmiana zawartości ciągów tekstowych, podmienianie grafik i ikon... No i to właściwie wszystko. Może to i skromne możliwości, ale powinny wystarczyć tłumaczowi.
Program jest generalnie w języku angielskim, choć w necie można znaleźć wersje przetłumaczone na PLK. Należy również wziąć pod uwagę, że program jest dość starym tworem - projekt nie jest już rozwijany przez autora od kilku lat. Dystrybuowany na licencji Freeware. - Restorator 2007 (Bome Software)
Drugi, pod względem skomplikowania i możliwości, program do edycji zasobów, który może nas interesować. W wersji oryginalnej program jest co prawda płatny i do tego w murzyńskim języku, ale są od tego pewne wyjątki - o tym za chwilę.
Zdecydowaną zaletą tego programu jest sposób wyświetlania zasobów pliku. W przeciwieństwie do swojego poprzednika, Restorator wyświetla zasoby - w szczególności te tekstowe - jako jedną grupę pod nazwą "String" (Łańcuch) co zdecydowanie ułatwia połapanie się w całości edytowanego zasobu. ResHacker wyświetla zasoby w oryginalnym ułożeniu - czasami może to być kilkadziesiąt osobnych grup po kilka linijek tekstu każda. W Restoratorze mamy to zgrupowane (połączone) w jeden "zasób". O co chodzi i jak to dokładnie wygląda zobaczymy nieco dalej.
Kolejną zaletą tego programu jest możliwość tworzenia z edytowanych zasobów patchy do plików. Tą funkcjonalność potraktujmy jednak jako ciekawostkę - patche działają tylko w środowisku PC-towych Windowsów.
Program również nie jest pierwszej młodości, jednak uniwersalna i niezmieniona konstrukcja zasobów PE nie daje nam tego odczuć. Program, prawdopodobnie, również nie jest już rozwijany przez autora. - PE Explorer (HeavenTools)
Najbardziej zaawansowany technicznie, z największymi możliwościami, edytor zasobów plików PE. To już jest potężny kombajn do czereśni.
Program płatny i w języku niezbyt przyjaznym dla środowiska. Pominę opis tego programu, gdyż jest to materiał na książkę a nie prostego posta. Generalnie... Tobie, jako tłumaczowi nie będzie potrzebne aż takie zaawansowanie techniczne programu i mnogość opcji - tu można się prędzej zgubić albo popsuć plik niż zrobić coś pożytecznego - po prostu trzeba ten program ogarnąć w przyzwoitym stopniu, co jest nieco bardziej skomplikowanie niż wysikanie dziurki w śniegu. Jednak, jeśli ktoś ma takie życzenie, nic nie stoi na przeszkodzie by używać i tego programu. Ja jednak uważam, że do naszej pracy wystarczą dwa powyżej opisane - i to z przyzwoitym "zapasem mocy".
Moim zdaniem, to właśnie
Restorator jest najrozsądniejszym kompromisem pomiędzy prostotą
Resource Hackera i możliwościami
PE Explorera - dlatego też, cały opis został oparty o ten właśnie program.
Stworzony opis będzie można w większości zastosować do programu
Resource Hacker - oczywiście po zastosowaniu funkcjonalnych uproszczeń - oraz, jako zasadę, do
PE Explorera - tu już jest nieco bardziej skomplikowana funkcjonalność, ale zasada jako taka pozostaje niezmieniona.
Tak jak pisałem wcześniej,
Restorator 2007 jest programem płatnym. Jednak mi, przypadkiem, udało się znaleźć wersję poniekąd "bezpłatną" - licencjonowaną dla czytelników magazynu
Ekspert, dystrybuowaną jako freeware, a co ważniejsze, dodatkowo całkowicie spolszczoną. Link do programu:
Restorator 2007 PLHmmm... Czyli mamy już narzędzie do edycji ciągów tekstowych oraz wydłubywania obrazków i ikon z programu.
Ze swojej strony sugeruję dodatkowo zaopatrzyć w jakiś średnio skomplikowany edytor grafiki - najlepiej jakiś półprofesjonalny. Oczywiście, od biedy może być i Windowsowy Paint (blech...), ja jednak zalecam odrobinę więcej zaangażowania i nieschodzenie poniżej poziomu programów w rodzaju
Paint.NET (
PaintDotNet).
Gimp lub
Adobe Photoshop (jeśli ktoś posiada i umie się tym posługiwać) na pewno też nie będą złe do naszych celów. Jeśli ktoś ma jakiś inny ulubiony edytor to niech sobie go w spokoju używa.
Czemu mieszam do całej sprawy edycję grafiki? Ano dlatego, że niejednokrotnie autorzy programów lubią umieszczać różne teksty i napisy na elementach graficznych programu jako ich integralną część (np. grafiki przycisków, belek etc.) - i właśnie tutaj może się przydać edytor grafiki.
Jeśli ktoś będzie miał ambicje przerabiania ikon programu, to zapewne przyda mu się jakiś edytor tychże. Nie mam pewności czy Gimp albo Adobe PS obsługują natywnie edycję ikon (nie używam tych programów), ale program typu
Axialis IconWorkshop (
Axialis Software) również może się przydać. Dla wyjaśnienia: ten program to coś o możliwościach Adobe PS'a, ale przeznaczony wyłącznie do obróbki ikon. Program jest oczywiście płatny.
Opis edycji elementów graficznych pominę ze zrozumiałych względów - wybaczcie, ale biorąc się za tłumaczenie programu, podstawową wiedzę również o tego typu zagadnieniach mieć musicie. Amen.
2. Niezbędne umiejętności, zdolności i talentyOczywiście warunkiem
sine qua non tego fachu jest posiadanie chociaż przyzwoitych podstaw jakiegoś języka obcego - najlepiej angielskiego. Niestety, sam programowy translator sprawy nie załatwi - wymagane jest
(z)rozumienie tłumaczonego tekstu, czego translator niejednokrotnie nie umożliwia (ja wręcz obsesyjnie nienawidzę tekstów żywcem kopiowanych z translatora). Kontekstowość języków obcych (a w szczególności języków z grupy anglosaskich czy germańskich - bo z nich najczęściej będziemy korzystać) oraz zasady indywidualne dla każdego języka (np. idiomy) mogą często spowodować błędy tłumaczenia lub całkowitą jego "bezsensowność".
Tak na marginesie... Optymalnym rozwiązaniem jest posiadanie "średniokomunikatywnego" poziomu znajomości więcej niż jednego języka obcego. W przypadku wątpliwości co do znaczenia tłumaczonego tekstu, użycie do porównania tego samego tekstu zapisanego w innym, znanym języku może skutecznie rozwiązać problem.
Ja do porównań wątpliwych znaczeń angielskich używam (rzadko, ale czasami jest taka możliwość) tłumaczeń włoskich lub hiszpańskich... Ale to już jak sobie kto życzy. Ważne jest generalnie jedno:
rozumieć to, co się tłumaczy.
No... jest jeszcze opcja organoleptycznego sprawdzania działania każdej wątpliwej funkcji i opisywania jej na tej podstawie... Zależy co kto lubi.
Kolejną, nie wiem czy nie najważniejszą sprawą, jest przynajmniej w miarę poprawne używanie języka ojczystego. Literówka może się trafić każdemu, błąd stylistyczny czy interpunkcyjny również da się przeboleć, ale ewidentne byki ortograficzne są
nie-do-pusz-czal-ne. Zanim tłumaczenie "puścisz w świat" sprawdź je 10 razy - zaręczam, że warto.
Pamiętaj, że jakość Twojej pracy świadczy o Tobie. Niechlujne i pełne błędów (merytorycznych, językowych czy ortograficznych) tłumaczenia nie przyniosą Ci chwały a jedynie narażają Cię na śmieszność w tzw. "środowisku"... poza nim najczęściej też.
O, i teraz chyba będzie wszystko czego potrzebujemy.
3. Podstawowe informacje "na zaś"Aby uniknąć pewnych nieporozumień i odruchów patologicznych u początkującego tłumacza należy ponownie przytruć odrobiną teorii...
Otóż, stosując masakrystycznie duże - ale dla nas wygodne - uproszczenie, można powiedzieć, że plik PE składa się z dwóch umownych głównych sekcji (nie chrząkać mi tam, mówiłem że uproszczenie będzie spore...):
- Sekcja zawierającą dane stałe - część odpowiedzialna za wszystko to, co plik/program robi (stricte kod wykonywalny programu).
Do tej części nie mamy dostępu - nie widzimy jej w naszych narzędziach i nie mamy możliwości mieszania w jej zawartości - Sekcja zawierająca dane zmienne - tą właśnie część wyświetlają i pozwalają nam modyfikować nasze narzędzia.
Jeśli autor programu ma odrobinę litość nad nami tłumaczami, to wszystkie ciągi tekstowe, okna programu i menusy umieści właśnie w tej sekcji co, oczywiście, pozwoli nam je przetłumaczyć. Jeśli będzie nieużytą sknerą, całą zawartość upcha w sekcji danych stałych i tyle po naszych dobrych chęciach.
Sprawę tą opisuję po to, by oszczędzić wam zbędnego zdziwienia, gdy po otwarciu narzędziem pliku PE, zobaczycie tylko jedną, dwie lub trzy grupy zasobów z których nic nie będziecie rozumieli - prawie zawsze są to grupy:
CEUX i/lub
Ikona (Icon) i/lub
Wersja (Version). Jeśli po otwarciu pliku widzisz TYLKO te grupy zasobów (w różnych kombinacjach), jedyną rzeczą jaką możesz zrobić w takim przypadku, to wysłanie autorowi programu obraźliwego majla zawierającego dodatkowo groźby karalne. Generalnie, sytuacja taka oznacza, że wszystkie elementy programu zostały zapakowane do sekcji danych stałych i są dla nas niedostępne. Czasami plik w ogóle nie udostępnia nam żadnych zasobów - jeśli np. autor złośliwie uparł się nie pozwolić nam nawet na modyfikację ikonki...
No cóż, życie. Nikt nie mówił, że będzie lekko.
Dobra... nieco poważniej teraz.
Dość często, powyżej opisana sytuacja, faktycznie wynika z niechęci autora do modyfikowania jego programu przez "obcych", jednak najczęściej jest ona efektem użycia tej a nie innej platformy programistycznej. Tak jak pisałem w pierwszym poscie, niedostępne dla tłumaczy są programy oparte o platformę
Microsoft .NET oraz o
SDK Manili - takie programy możemy sobie od razu odpuścić jeśli nie są dla nich przewidziane zewnętrzne pliki językowe udostępnione przez autora.
Jeśli ktoś ma taką potrzebę może pobawić się w dekompilację takich plików odpowiednimi narzędziami, ale obawiam się, że skutki takiego działania mogą być opłakane dla finalnego produktu. Generalnie odradzam używanie różnego rodzaju disassemblerów do rozkładania plików. Pomijam fakt, że jest to prawie zawsze niezgodne z licencją programu. Ważniejszym przeciwwskazaniem jest to, że najczęściej nie da się ponownie poprawnie skompilować tak rozłożonego pliku.
Jest jeszcze jeden powód, przez który nie zobaczymy lub nie wyedytujemy zasobów pliku. Tą przyczyną jest albo niestandardowy "kompresor" użyty do pakowania pliku wykonywalnego albo dodatkowe "dopakowanie" czy przepakowanie istniejącego już pliku wykonywalnego, np. UPX-em. W takim przypadku narzędzie zgłosi komunikat, że zasób jest uszkodzony lub spakowany bądź zaszyfrowany. Właśnie !! Szyfrowanie zawartości plików również uniemożliwia nam edycję jego zasobów.
Jeśli jednak ktoś nadal uważa się za upartego lub ambitnego, to pozostają mu jeszcze do dyspozycji różne HexEdytory, którymi może się dobrać do struktury pliku w postaci ciągów szesnastkowych i tym sposobem próbować wynajdywać i zmieniać odpowiednie wartości. Jednak ryzyko takiego działania jest porównywalne z ryzykiem powodowanym przez osobiste zażycie "pastylki gwałtu" podczas zbiorowej kąpieli pod męskim prysznicem... tak więc, szczerze je odradzam. Choć jeśli ktoś lubi...
OK. Przyjmijmy, że jesteśmy dość daleko od tego poziomu abstrakcji i zakończmy tego typu dywagacje. Jeśli się nie da, to się nie da i już. Musi nam to wystarczyć.
Jeśli nadal czujesz się na siłach i masz chęci na zabawę w translatora, to zapraszam do lektury następnego punktu.
Część 3:
Spolszczamy program, czyli kochamy wiwisekcje.Na początek musimy przygotować sobie materiały do tłumaczenia - znaczy pliki, które mamy zamiar edytować. Aby zdobyć takowe, najczęściej będziemy musieli wydłubać je z instalacyjnego caba.
Ja podpowiem, że najwygodniej będzie wypakować całą zawartość CABa do jakiegoś łatwodostępnego folderu (np. może być na Pulpicie). Oczywiście przed wypakowaniem można sprawdzić, czy program nie posiada jakichś translacji w plikach tekstowych lub w plikach mui. Jeśli takowe będą wystarczy wypakować tylko potrzebne pliki.
Ja przyjąłem założenie, że program nie posiada żadnych zewnętrznych plików językowych - będziemy tłumaczyli pliki robocze programu.
Po wypakowaniu zawartości CABa patrzymy, czy pośród plików nie ma jakichś grafik z naniesionymi tekstami, które trzeba przetłumaczyć - jeśli takowe się znajdą to odkładamy je na boczek, "przetłumaczysz" je za pomocą edytora grafiki - od razu albo później... Jak będziesz sobie chciał.
Jako, że założyliśmy, iż program nie posiada plików językowych, musimy zlokalizować wszystkie pliki
*.exe,
*.dll i
*.cpl jakie program zawiera - te pliki, wraz z ewentualnymi grafikami do zmiany pozostawiamy, resztę plików możemy usunąć z folderu.
Zakładam, że program do edycji został wcześniej zainstalowany.
BTW... Nie będzie to instrukcja tłumaczenia typu "step-baj-step" a raczej pokazanie zasady "co z czym i dlaczego". Rozgryzienie wszystkich funkcji programu pozostawiam już indywidualnym chęciom tłumacza.
Tak więc otwieramy program...
... i przeciągamy na jego lewy panel (najwygodniej) wszystkie pliki PE z foldera - pojedynczo lub wszystkie naraz jeśli ktoś woli.
Dodane pliki ułożą się w strukturę drzewiastą - dodatkowo te, które posiadają jakiekolwiek widoczne zasoby będą oznaczone znakiem "+" (plus) po lewej stronie. Pliki, które nie dadzą się rozwinąć możemy od razu usunąć z listy (prawoklik na pliku i "Zamknij") - nie są one nam potrzebne. Podobnie postępujemy z plikami, które po rozwinięciu nie dysponują interesującymi nas zasobami - wspominałem o tym w poprzednim poscie przy okazji braku możliwości edycji zasobów - poniżej również jest nieco na ten temat.
Pliki, które usuwasz z listy edytora możesz od razu kasować z folderu - wygodniej będzie jak nie będą zaśmiecały miejsca.
Przyjmijmy, że po tych wszystkich weryfikacjach, na liście programu pozostał jeden plik, który nadaje się do jakiejkolwiek edycji.
Po takiej selekcji trzeba również pamiętać o ważnej sprawie: należy sprawdzić, czy plik, który chcemy edytować nie jest przypadkiem podpisany cyfrowo. Jeśli jest, podpis należy zdjąć przed edycją pliku.
Restorator 2007 nie powiadomi Cię o podpisie cyfrowym w pliku (
PE Explorer wyświetla taką informację), musisz to sprawdzić sam przed rozpoczęciem dłubania w pliku. Zamknij teraz program do edycji zasobów (NIE dokonuj zapisania pliku - po prostu zamknij program), sprawdź i jeśli trzeba to zdejmij z pliku podpis cyfrowy. Jest na Forum opis co i jak.
Po zdjęciu podpisu z pliku, ponownie otwierasz go edytorem zasobów.
Jak widać, przykładowy plik zawiera stosunkowo dużo grup zasobów. W tym przypadku są to chyba wszystkie grupy jakie może udostępnić plik. Grupy są dość jednoznaczne opisane i myślę, że nie ma potrzeby specjalnie zagłębiać się w ich opisy. Należy zwrócić uwagę, że nie wszystkie pliki zawierają tak dużą ilość grup zasobów jak przykładowy plik exe. Grup zasobów może być różna ilość. W szczególności pliki
mui i
dll mogą posiadać tylko niezbędne zasoby - jedną, dwie czy trzy grupy. Przykładowe porównanie na poniższym screenie:
Tak w skrócie, dla rozwiania ewentualnych wątpliwości - zasoby, które mogą nas interesować:
- PNG - zawiera wykorzystywane przez program grafiki w formacie PNG (graficzne elementy interfejsu, przyciski i różne takie inne)
- WAVE - zawiera niektóre dźwięki emitowane przez program, np. "piknięcia" wciskanych klawiszy etc.
- Bitmapa - zawiera wykorzystywane przez program grafiki w formacie BMP (graficzne elementy interfejsu, przyciski i różne takie inne)
- Menu - zawartość menu programu - najczęściej menu rozwijalne z softkey-ów na dolnej belce programu lub innych miejsc
- Okno dialogowe - zawiera pewną ilość okien dialogowych programu (np. okna opcji, ustawień, czasami komunikatów etc.) - ilość i typ okien zależy od programu
- Łańcuch - zawiera wszystkie (przynajmniej w teorii) ciągi tekstowe używane/wyświetlane przez program - teksty elementów okien, komunikaty, opisy, dialogi etc.
- Ikona - interesuje nas tylko wtedy, gdy chcemy edytować/zmienić ikony używane w programie.
To tyle co nas interesuje.
Zasobami:
CEUX,
NOTE,
RCData,
Skróty klawiaturowe,
Wersja - najlepiej nie interesujemy się w ogóle. Pierwsze trzy i tak są w formie bitowej lub hex więc nie wyedytujemy ich z tego poziomu. Poza tym, nie ma potrzeby w nich grzebać.
Zasady edycji poszczególnych typów zasobówZasoby:Zmieniamy je poprzez ich edycję poza programem do edycji zasobów - rozwijamy gałąź typu zasobu, klikamy element (taki z cyfrą) i trzymając lewy przycisk myszy "wyciągamy" go poza program. W efekcie otrzymamy plik we właściwym do edycji formacie (nie zmieniamy jego nazwy!).
"Upakowanie" zmodyfikowanego zasobu do pliku odbywa się w podobny sposób z tym, że w drugą stronę - przeciągamy plik do okna programu, do gałęzi w której powinien on się znajdować, koniecznie na element o właściwym numerze. Podmiana zawartości elementu nastąpi automatycznie.
Oczywiście powyższe operacje można wykonać też przez menu programu... jednak uważam to za komplikowanie sobie życia.
Należy pamiętać, by podczas edycji zachować oryginalne rozmiary grafiki, głębię kolorów i inne graficzne właściwości pliku. Niewielka zmiana rozmiaru przeedytowanego pliku nie gra roli. Podobnie jest z plikami dźwiękowymi i ikonami.
Zasoby:Są to zasoby typu tekstowego. Zmieniamy je poprzez podmianę występujących tam ciągów tekstowych.
Rozwijamy grupę zasobów, klikamy element (taki z cyfrą), przechodzimy do trybu edycji (klawisz F6 lub przycisk wskazany kursorem na poniższym screenie) i w prawym panelu tłumaczymy to, co znajduje się pomiędzy znakami " (cudzysłowy).
Jeśli zejdziesz na sam dół prawego panela, znajdziesz kilka przydatnych informacji o edycji tego typu zasobów i co ważniejsze o zasadach używania znaków specjalnych w ciągach tekstowych - przeczytaj, warto.
Pamiętamy by: NIE zmieniać numeracji wierszy oraz nie usuwać początkowych i końcowych cudzysłowów. Zwracamy również uwagę na występujące w ciągach tekstowych znaki "
%s" lub podobne - są to zmienne systemowe, w miejsce tych znaków w programie, podstawiane są różne potrzebne w danej chwili wartości - nie zmieniamy i nie usuwamy ich. Uważamy również na znaki "
\0x00" które niekiedy występują na końcu każdego wiersza - ich też nie wolno usuwać ani zmieniać.
Zasoby:To typ mieszany: graficzno-tekstowy.
W tym przypadku edytujemy nazwy obiektów i kontrolek na formatkach programu jak również nazwy okien.
Tu sprawa jest nieco bardziej skomplikowana i wymaga dodatkowo dużo uwagi.
Rozwijamy grupę zasobów i klikamy element (taki z cyfrą).
W trybie edycji wygląda to dosyć skomplikowanie, ale to tylko pozory. Cały prawy panel zostaje podzielony dodatkowo na dwie części: w jednej mamy zaprezentowany podgląd danej formatki z możliwością edycji jej poszczególnych elementów, druga część okna daje dostęp do czterech sekcji ze szczegółowymi parametrami obiektów.
Sugeruję nie bawić się tymi wszystkimi "ptaszkami" w sekcjach po prawej stronie - w najlepszym przypadku można popsuć układ okna, w najgorszym - całkowicie uwalić zasób. Najlepiej odptaszyć pole znajdujące się po prawej stronie tytułu sekcji (w prawym górnym rogu sekcji?) co spowoduje jej zwinięcie. Pozostanie tylko pierwsza sekcja, czyli to, czego możemy bezpiecznie używać: lista rozwijalna na samej górze, pole "
Podpis" oraz pola z koordynatami obiektu.
Aby edytować tekst, wystarczy na niego kliknąć w podglądzie okna, lub (bezpieczniej) wybrać go z listy rozwijalnej. W obu przypadkach w podglądzie okna zostanie zaznaczony CAŁY OBIEKT zawierający interesujący nas tekst - tekst do zmiany pojawi się w polu "
Podpis" pod listą rozwijalną i w tym polu go zmieniamy (przykład jest na powyższym screenie).
Do wybierania elementów tłumaczonych sugeruję używać listy rozwijalnej. Często zdarza się tak, że elementy okna są na siebie nałożone przez co część z nich może być niewidoczna w podglądzie okna lub będzie widoczna ale niedostępna przez kliknięcie (drugi plan). Lista daje dostęp do wszystkich elementów aktualnej formatki...
Czasami zdarzy się tak, że tekst przetłumaczony będzie nieco dłuższy od oryginalnego i nie zmieści się w wyznaczonym dla niego miejscu. W takim przypadku istnieje możliwość zmiany rozmiarów pola/kontrolki z tekstem - można: chwycić myszą któryś z wyróżnionych punktów obramowania i je rozciągnąć lub (bezpieczniej) zmienić wartości cyfrowe w polach pod "Podpisem" (wartości podawane w pikselach).
Generalnie... możesz zmienić rozmiar i położenie każdego elementu na formatce, co przydaje się niekiedy do dopasowania położenia i rozmiaru różnych elementów względem siebie... Jednak używaj tego rozważnie i z głową. Obszar roboczy okna najczęściej nie jest zgodny z wielkością ekranu na którym będzie wyświetlany. Uważaj by przypadkiem nie przesunąć obiektów poza krawędź ekranu, nie nałożyć ich na siebie lub przesadnie zmniejszyć - może to mieć różne skutki dla programu.
Nie tłumaczymy wyrażeń typu:
Static,
Button1,
Bitmap...,
Icon... lub podobnie dziwnych - szczególnie jeśli występują samodzielnie wewnątrz jakiegoś większego obszaru. Najczęściej są to wyświetlane w podglądzie okna nazwy typów obiektów, które zostaną zobrazowane (wstawione w to miejsce) podczas działania programu.
To właściwie wszystko jeśli chodzi o podstawy tłumaczeń programów.
Na koniec jeszcze kilka dodatkowych informacji technicznych...
- Zapisanie zmian dokonanych w elemencie dokonuje się przez wciśnięcie F8 lub przejście do następnego elementu i potwierdzenie zapisu zmian.
- Po zakończeniu edycji wszystkich elementów trzeba pamiętać o zapisaniu całokształtu naszej pracy - przycisk z obrazkiem Dyskietki na pasku narzędzi programu.
- Niektóre pliki "nie lubią" wielokrotnej edycji - po którymś z kolei zapisie mogą okazać się uszkodzone. Dlatego też, staraj się wykonać jednorazowo jak największą ilość tłumaczenia w pliku - optymalnie: jednorazowo przetłumacz wszystko co dasz radę. Generalnie, ogranicz do minimum ilość cykli edycji pliku.
- Nie szalej z długością ciągów tekstowych. Staraj się utrzymać ich długość w wartościach jak najbardziej podobnych do oryginału. Ciągi krótsze nie wpływają na nic, ale ciągi dużo dłuższe niż oryginalne mogą powodować różne dziwne błędy. Uwaga ta dotyczy głównie zasobów typu "Łańcuch" i "Menu".
- Dla plików mui należy zmienić w nazwie pliku cyfrę oznaczającą język - dla Polski to 0415.
- Nie jest obowiązkowa zmiana ID języka w zasobach - może pozostać taka jaka jest oryginalnie.
- Nie zapomnij o podpisie cyfrowym dla gotowego pliku (o ile plik tego wymaga).
...i formalnych:
- Przed rozpoczęciem tłumaczenia programu ustal jednolitą konwencję komunikacji programu z użytkownikiem - czy program ma się komunikować "grzecznie i układnie" czy może w trybie nakazowym - ma to duży wpływ na późniejszą formę tłumaczenia.
- Staraj się ujednolicać tłumaczenia podobnych poleceń, pytań, potwierdzeń czy opisów - tłumaczenie będzie bardziej jednolite i zrozumiałe.
- Dla popularnych poleceń stosuj ogólnie używane określenia i nazwy - nie czaruj i nie twórz "nowomowy".
- W tłumaczeniach stosuj język prosty i jasny, jeśli można to upraszczaj mniej zrozumiałe opisy - nie popisuj się technicznym bełkotem.
- Jeśli nie masz pewności jak przetłumaczyć daną funkję/polecenie, ale wiesz do czego ona/ono służy - poszukaj podobnej funkcji w innym polskojęzycznym programie i sprawdź jak tam jest to nazwane. Jeśli takowej nie znajdziesz, dopiero wtedy uruchom swoją inwencję twórczą.
- Staraj się przetłumaczyć jak największą część tekstu programu. To, czego nie przetłumaczysz (bo Ci się np. już nie chce) pozostaw w oryginale. Tłumaczenia w stylu "Tu były jakieś podziękowania za używanie", świadczy tylko i wyłącznie o olewczym stosunku tłumaczącego do użytkowników programu i własnej pracy.
- Unikaj dopisywania w różnych miejscach programu własnych komentarzy czy opisywania swoich problemów egzystencjonalnych. Jedyne co możesz dodać od siebie to własna sygnaturka na karcie "About" programu.
Owocnych tłumaczeń i wielu zepsutych plików życzę.
Wall-EPoprawki informacyjne i merytoryczne mile widziane.