Czytając ostatni post @Johnny_Bit przypomniał mi się jeden WTF'ik.
Znajoma dostała w pracy ekstra zadanie (na co dzień zajmuje czymś innym) polegające na dodaniu polskiego tłumaczenia do pewnych tekstów. Jacyś Niemcy (zapewne zleceniodawcy) przysłali jej pliki do przetłumaczenia oraz link do strony internetowej programu którym ma dokonać edycji. Zgodnie z instrukcją próbuje wprowadzać zmiany do tekstu, a tu ZONK!. Nie może wpisywać polskich liter. Przysłała mi wszystko żebym coś poradził. No to do dzieła.
Były to pliki z kodami źródłowymi C. Wskazany przez Niemców program był to typowy edytor kodu źródłowego. No i tu od razu pojawiała się myśl - zapewne wskazali ten edytor by nie namieszać z kodowaniem znaków. Otwieram pliki, zawierają menu kontekstowe jakiegoś urządzenia (jak aparat fotograficzny czy coś podobnego) w kilku tłumaczeniach - Angielski, Niemiecki, Hiszpański i inne. Struktura pliku bardzo prosta, to może jest zrozumiałe, ale też kijowo dobrana i nieudokumentowana. Były tam nieokomentowane tablice dwuwymiarowe, gdzie głównym wymiarem był indeks danego łańcucha, a podrzędnym wymiarem indeks języka, wyglądały mniej więcej tak:
Kopiuj
char * jakies_tam_menu[] = {
{ "(zdanie w języku angielskim)", "(zdanie w języku niemieckim)", "(zdanie w języku hiszpańskim)", ... },
{ "(zdanie w języku angielskim)", "(zdanie w języku niemieckim)", "(zdanie w języku hiszpańskim)", ... },
...
};
:) Czyli nie wiadomo jakie tłumaczenie jest od czego. Brak otagowania sprawia, że kontekst danego wyrazu czy zdania musimy wywnioskować wyłącznie na podstawie obecnych tłumaczeń (które to zapewne powstały w podobny sposób, a tylko jeden język pierwotnie był bazą). Co gorsze, kompletny brak podziału ze względu na język:
*nie ma podziału plików, w jednym pliku znajdują się tłumaczenia wszystkich języków
*nie ma podziału danego pliku, w jednym pliku mamy raz jedne tłumaczenia, raz inne
*nie ma nawet podziału fragmentu pliku, tłumaczenia są kompletnie wymieszane, w zasadzie podział na język następuje na najniższym poziomie hierarchii i dosłownie jedna linia kodu zawiera różne tłumaczenia.
Na początku każdego z plików widnieje notka deweloperska (w skrócie):
*"Ten plik jest zapisany w ASCII Latin-1 i nie spieprzyć tego"*
Zerkam na tabelę znaków Latin-1, no i faktycznie, zawiera niezbędne znaki dotychczasowych tłumaczeń. Ale polskich znaków niestety nie uświadczysz.
Mail do Niemców, po dłuższym czasie odpowiedź. Rezygnują ze zlecenia :D