Przeniesione z watku:
http://pdaclub.pl/forum/viewtopic.php?t=52727Spolszczenie naklada sie na inne uruchamiane programy w locie - jesli jest ono zle przygotowane, ale program na ktory ma sie nakladac rozni sie choc troche od tego, jaki mieli programisci w czasie opracowywania nakladki, to taki program moze nie dzialac, lub dzialac nieprawidlowo.
Ty myslisz ze spolszczenie to tylko pliki TXT, z ktorych aplikacje pobieraja sobie jakies pola tekstowe... to jest troche bardziej skomplikowane.
No to żeś pierdyknął, jak gołąb z dachu. Nic dziwnego, żę mity żyją, skoro red-nacz najbardziej wpływowego portalu o pocketach je pielęgnuje. Wiedzę to chyba z Bajtka (świętej pamięci) zaposiadłeś. Tak to się spolszczało programy pod DOSem albo Windowsami 2.x i 3.x (też świętej pamięci).
Specjalnie na potrzeby tego maila ściągnąłem sobie InterWrite Pro 9.1 (akurat wersję czeską, ale to nie ma znaczenia).
Przy instalacji zapytał mnie, jakiego pocketa mam. Dla kilku z nich wersja ROMu była istotna.
Zajrzyjmy do CABa, którego chciał mi zainstalować.
Na początku - PreXML.xml, a w nim certyfikaty, żeby windowsy się nie irytowały, co to za jakieś coś niecertyfikowane się instaluje. User może i powinien certyfikat zaakceptować.
Jedziemy dalej.
Setup.dll wykonuje czarną robotę przy instalacji. Żeby było łatwiej, setup.dll używa kilku plików z katalogu 'Loc': im2005-2.0405, Qtek9100-2.0405, wm2005-2.0405 (zestaw tych plików różni się w zależności od systemu operacyjnego i modelu pocketa). Proponuje zajrzenie do tych plików. W środku mamy takie rzeczy jak:
@renamefiles;
\Windows\Start Menu\Programs;#<\Windows\Start Menu\Programy;
\Windows\Start Menu\Settings;#<\Windows\Start Menu\Nastavení;
albo
@registry;
//Button-assignments links
HKLM;KeyRec;\SOFTWARE\Microsoft\Shell\Keys;
"\Windows\Start Menu\Calendar.lnk";"\Windows\Start Menu\Kalendář.lnk";
"\Windows\Start Menu\Programs\Calendar.lnk";"\Windows\Start Menu\Programs\Kalendář.lnk";
Działanie jest dość proste - zmienia nazwy plików na narodowe, zmienia w rejestrach i shortcutach odwołania do tych plików, zmienia templaty na lokalizowane, zmienia wpisy w rejestrach na lokalizowane. Najbardziej mi sie podoba:
Button 1 (Press & Hold);Tlačítko 1 (Držet);
W sumie nic, co mogłoby zwieszać system.
Jedziemy dalej.
Katalog Help, a w nim 44 pliki *.htm i nic więcej. Pewnie to helpy jakieś są. Na przykład phone.hlp. Nie zawiesza systemu. Może ich nawet nie być.
Katalog Suggest, a w nim jeden plik cz_405.dict. Plik daje się czytać. Zawiera 180kb czegoś takiego:
suggdict;1154;1250;405;Slovník Sunnysoft;
abecedy;absolutní;absolvovat;absurdní;aby;abych;abychom;abys;abysem;
Zgaduję - podpowiedzi dla klawiatury. Plik prosty o prostej strukturze, tekstowy. Pewnie nie zawiesza systemu.
Katalog Templ, a w nim pliki o znanych nazwach: 'Phone Memo.pwi', 'Meeting Notes.dot' itd. Zajrzyjmy do 'Phone Memo.pwi':
Telefonní záznam
Volající:
Společnost:
Telefonní číslo:
Datum & čas:
Sdělení:
Czeskiego nie znam, ale zgaduję, że to się wyświetla, jak w czasie połączenia telefonicznego nacisnę klawisz 'Note'. Przypuszczam, że to też systemu nie zawiesza.
Katalog Themes, a w nim pięć plików *.iwt. Nazwa każdego zaczyna się od iwkbd, potem jakiś kolor i rozdzielczośc, potem rozszerzenie IWT. Na przykład iwkbdblue96.iwt. Zajrzyjmy do pliku. Nagłówek PK sugeruje skompresowane cos (pewnie ZIPem dałoby się potraktować) i pewnie to jest bitmapa. Oooo. Mam. Skiny do klawiatury. Nie przypuszczam, żeby system się na nich wieszał.
Katalog \Program Files\Sunnysoft\InterWrite, a tam 51 plików *.ppk , na przykład kbdSlovak_qwerty.ppk. Niech zgadnę - mapowania klawiatur sprzętowych. Zresztą jest na stronie sunnysoftu do pobrania 'Sunnysoft Keyboard Generator' i on grzebie w tych plikach. Jakby ktoś chciał sobie zredefiniować klawiaturę. Te pliki PPK też na specjalnie wyuzdane nie wyglądają. Pewnie sterownik klawiatury ładuje sobie taki jeden i według niego działa. Nie przypuszczam, żeby były groźne.
I jeszcze jeden plik init.txt. O taki:
@lcid;
405;
@mui;
405;
@abook;
5;;
@pie;
1250;
@tzone;
-60;
Central Europe Standard Time;
0;10;0;5;3;
Central Europe Standard Time;
0;3;0;5;2;
-60;
@clock;
01;00;00;00;80;01;00;00;5f;00;00;00;
00;00;00;00;01;00;00;00;3a;01;00;00;
69;00;00;00;00;00;00;00;01;00;00;00;
@dialing;
1;Práce;G;G;G; ;;
2;Doma;G;G;G; ;;
Niech zgadnę. Jest czytany na początku pracy przez setup.dll. ustawia w rejestrach LCID i MUI na stronę czeską, przestawia kodowane w PIE na CP1250, ustawia strefę czasową na czeską (i słusznie, bo sobie może user nie ustawił), ustawia format daty i czasu na czeskie, tłumaczy w książce telefonicznej Home i Work. Nie wiem tylko co robi '@abook', ale pewnie by się dało znaleźć. Przypuszczam, że coś od address-book
Wiecej w \Program Files\Sunnysoft\InterWrite i podkatalogach nie ma nic. W szczególności nic strasznego, ani nic, co by przechwytywało w locie jakieś programy i robiło im, tym programom jakies cosie w locie.
------
No to może w \Windows.
Mamy tu: dwie bitmapy. Używane w podpowiedzi dla klawiatury ekranowej (bodajże podobnej do 'letter recognizer'). Niegroźne.
Jeden plik HTM - help. Niegroźny.
Jeden plik IWT - skin dla klawiatury.
Jeden plik sym.0405.txt. Podobny nawet gdzies jest w dziale download dla języka polskiego. Dla klawiatury sprzętowej. Jak się wciśnie klawisz 'a', a potem kilka razy Fn spacja, to w końcu wyjdzie 'ą'. Niegroźny.
92 pliki MUI. Też niegroźne. Jakiś czas temu na buzzdevie był dostępny ROM do chyba Himalaya. Chiński albo japoński (za to najnowszy w tym czasie) i pliki MUI, które robiły z niego wersję angielską.
Pliki MUI zawierają wyłącznie zasoby (resources). Poszukaj sobie na MSDN jak to działa. Albo możę w skrócie napiszę tu:
windowsy, jak ładują plik wykonywalny (EXE, CPL, DLL), to ładują tylko częśc z kodem wykonywalnym. Dla oszczędności czasu i pamięci. Robią tak od niepamiętnych czasów - o ile pamiętam to od wersji 1.x dla peceta. Jeśli program chce załadować jakiś zasób (dialog, string, ikonkę itp), to otwiera sam siebie funkcją LoadResource, albo otwiera inny plik z zasobami, ładuje te zasoby i ich używa. Na przykłąd wyświetla. Nigdy zasoby nie są ładowane od razu z programem. Z plikami MUI jest mała sztuczka: jeśli program (np cprog.exe) chce użyć LoadResource i otworzyć sam siebie (czyli cprog,exe), to system patrzy w rejestrach, czy MUI jest aktywne, jeśłi tak, to patrzy na numerek MUI, i otwiera np. cprog.exe.0409.MUI (albo inny numerek - zależnie od rejestru). Sztuczka piękna w swojej prostocie. Z tego pliku są ładowane zasoby. Jak nie ma MUI, to jest otwierany oryginalny plik w oryginalnej wersji językowej.
Cały pomysł z MUI jest o tyle fajny, że nie zamula systemu (kolejny mit, który widziałem na tym forum) - ilość operacji plikowych jest dokładnie taka sama, nie zużywa więcej pamięci - otwierane są jedne zasoby zamiast(!) innych.
Oczywiście. Może sie zdarzyć, że tłumacz jakiegoś zasobu nie umieści w MUI, ale każdy rozsądnie napisany program na taką sytuację reguje poprawnie. Poza tym - te zasoby (dialogi, stringi itp) nie zmieniają się az tak bardzo, jak przedmówca sugerował, że musi istnieć idealna zgodność bajt do bajtu. Zresztą - zajrzyj do swojego peceta. Znajdziesz katalog c:\windows\mui, C:\WINDOWS\system32\mui i parę innych. Jako ciekawostka - numery zasobów i ich tłumaczenia między pecetem i pocketem w wielu przypadkach pokrywają się. To tak, dla uławienia sobie życia. W zasadzie - to jest prawie dokładnie to, co napisałeś o plikach TXT, tylko, że w bardziej rozsądny sposób zaimplementowane.
Co dalej: intcpl.cpl. Jakis aplet z control panelu (czyli z menu Settings/Ustawienia). Przypuszczam, że służy do przelączania między wersjami językowymi i może jakieś parametry ustawia. Nie jest powodem do zawieszania systemu, bo jest uruchamiany tylko wtedy, kiedy user go naciśnie.
Dalej: zlib114.dll. Opensource'owy zlib (czyl zip-library). Zgaduję, że do rozpakowywania skinów.
Malutki (7k) sunnyhw.dll. Nazwa pewnie do SUNNY-HardWare.dll. Sterownik klawiatury sprzętowej.
I trochę większy intkbd.dll - klawiatura ekranowa.
Nie wykluczam, że któryś z nich ma jakiś błąd (no bo nie ma programu bez błędów), ale szansa jego objawienia się nie jest duża. W zasadzie znikoma. Na pewno nie aż tak duża, żeby można było użytkowników straszyć - "system Ci sie zawiesi".
I ostatni plik: internat.exe. W pececie analogiczny plik zajmuje się wyświetleniem obok traya ikonki z językiem. Np. PL albo EN. internat.exe nie jest duży, jeśłi do niego zajrzysz narzędziem strings.exe (z sysinternals.com), to nic nie wskazuje, żeby robił cokolwiek istotnego. Zawiera jedną ikonkę. Przypuszczam, że robi dokładnie ot samo, co internat.exe z peceta. - wyświetla gdzieś aktualne ustawienia językowe. Nie przypuszczam, żeby robił coś więcej.
I koniec. I już nic więcej nie ma. Inżynieria oprogramowania poszła do przodu już jakiś czas temu.
PS1. Fascynujące jest, że Japończycy i inne wschodnie nacje korzystają z podobnych mechanizmów i im działa (wystarczy popatrzyć na prace Asukala na xda-developers), a my znowu jesteśmy narodem pokrzywdzonym. A oni mają trudniej - wince.nls nie ma wbudowanych ustawień regionalnych dla dalekiego wschodu, tablice konwersji rzeczy różnych są trudniejsze znacznie, rozpoznawianie pisma też jest pokręcone, a nawet standardowe czcionki z windowsa nie obsługują japońskiego (i przy okazji pliki z czcionkami sa znacząco większe). A nam a to system zamula, a to system uporczywie zawiesza, a polskim użytkownikom się radzi nauczyć się angielskiego zamiast użyć narzędzi całkiem niezłych, mających silne oparcie w systemie. Silniejsze, niż u Japończyków.
PS2. Proszę mnie nie podejrzewać o windziarstwo. Za długo administrowałem róznymi Xami i podobnymi, żeby nie nabrać dystansu.
PS3. Nie mam nic wspólnego z mediaoffice ani żadny dystrybutorem ani producentem oprogramowania dla pocketów (oprócz siebie samego).