Jednym z bardziej spektakularnych przykładów chybionego tłumaczenia w branży IT jest „Darmowa ochrona danych jesień”, nazwa programu dołączanego do laptopów Della (rozwiązanie zagadki na końcu artykułu). Ktoś mógłby parsknąć i spytać, czy naprawdę przełożenie kilku zdań z angielskiego na polski jest aż tak trudne. Otóż – z całego procesu adaptacji oprogramowania na inny język ta czynność jest akurat najprostsza, za to sam proces jest wręcz najeżony przeszkodami.
W niniejszym tekście opiszę, dlaczego tylko dojrzałe organizacje tworzące software są w stanie prawidłowo ogarnąć nie tylko tłumaczenia (translation), ale także dwa pozostałe aspekty globalizacji (globalization): internacjonalizację (internationalization) oraz lokalizację (localization). Zdolni programiści nie wystarczą. Staranni i wnikliwi testerzy też nie wystarczą. Ani biegli tłumacze. Potrzebny jest zespół, który wie co i jak zrobić, aby było dobrze.
Ten artykuł – publikowany jednocześnie w serwisach Informatyk Zakładowy oraz localization.pl – opisuje przyczyny pomyłek, kiksów i usterek, które mają miejsce gdzieś w świecie każdego dnia. Ich lista nie jest pełna ani kompletna, zaś każdy, kto pracował w międzynarodowym zespole tworzącym oprogramowanie, mógłby dorzucić coś od siebie. Motto: „lokalizacja jest jak kanalizacja — nikt o niej nie mówi, dopóki działa” (bonmocik Marty Bartnickiej).
L10N, I18N, G11N oraz T9N
Tytuł rozdziału to skrótowce angielskich słów localization, internationalization, globalization oraz translation. Co oznaczają te pojęcia? Prześledźmy to na przykładzie amerykańskiego sklepu internetowego, który chce sprzedawać swoje towary do Polski.
Pierwszym krokiem może być tłumaczenie (translation, t9n) czyli to, co robią tłumacze – dostają oni jakiś tekst po angielsku i produkują tekst o takim samym znaczeniu w języku polskim. Zamieniają „welcome” na „witaj” i „shopping cart” na „koszyk”. Na razie jest łatwo.
Klienci z Polski zaczną jednak narzekać, że polski odpowiednik ceny „$10.00” nie powinien brzmieć „zł39.53” tylko “39,53 zł”. Podobnie data wysyłki czytelna dla Polaka to nie „03/31/2021” tylko “31.03.2021”. Wchodzi nam drugi element, czyli internacjonalizacja (internationalization, i18n) – umożliwienie dopasowania interfejsu użytkownika do konwencji stosowanych w kraju, regionie czy w normach języka którym włada klient.
Gdy te problemy zostaną rozwiązane, zacznie się narzekanie na funty, cale i stopy kwadratowe. Co to za pomysł, by osiągi samochodu podawać w milach na galon, przecież spalanie mierzymy w litrach na 100 km. A w ogóle to nikogo nie obchodzi amerykańskie Święto Dziękczynienia, my tu kupujemy prezenty na Mikołajki. Takie wyzwania stają przed lokalizacją (localization, l10n), w ramach której dokonujemy dostosowania do kultury, tradycji, miar, metryk itd.
W cyferkowych skrótowcach mamy jeszcze a11y czyli dostępność (accessibility), ale ten temat wykracza poza ramy dzisiejszej blogonotki.
O czym będzie ten tekst?
Większość problemów związanych z lokalizacją bierze się z faktu, że większość z nas zna dobrze tylko jeden lub dwa systemy kulturowe. Tak po ludzku nie przychodzi nam do głowy, że coś oczywistego może po drugiej stronie świata działać zupełnie inaczej. Zresztą – nawet na naszym własnym podwórku dzieją się rzeczy, które widzimy a których nie rozumiemy. Wyznawcy prawosławia mieli wolne 6 stycznia nie dlatego, że świętują wigilię Bożego Narodzenia w styczniu, ale dlatego, że według kalendarza juliańskiego wtedy właśnie jest 24 grudnia – przez setki lat daty w sąsiadujących państwach różniły się o kilkanaście dni, z wszystkimi niewygodami z tego wynikającymi. Rewolucja październikowa miała miejsce w listopadzie, wiedzieliście?
Będę pisał o tym, że programowanie komputerów jest dziś na tyle skomplikowane, że jeden człowiek może ogarnąć jedynie niewielki wycinek branży. Jeśli postawimy obok siebie ludzi programujących systemy komunikacyjne satelitów, sterowniki do wyświetlaczy LCD, hurtownie danych do e-commerce i gry mobilne to… nie będą oni mieli ani jednego wspólnego zawodowego tematu. Ich narzędzia i metodyki są tak odmienne, że żaden nie będzie w stanie opowiedzieć z głowy o pracy drugiego, nie mówiąc o jego zastąpieniu.
Będzie też o tym, że tłumacze rzadko rozumieją zawiłości związane z tworzeniem oprogramowania, zaś programiści zbyt często prezentują postawę arogancką i roszczeniową – zrażając do siebie współpracowników spoza kręgu osób „technicznych”. W rezultacie nawet najbardziej staranny tłumacz – zwłaszcza wynajęty do jednorazowego zlecenia – może nie być świadom wymogów stawianych przez dany framework, język programowania czy system operacyjny. A szczegółów nie pozna, bo zminimalizuje kontakty z nieokrzesanymi bucami z IT.
Ustawienia regionalne
Jeśli pobłądzimy w ustawieniach Windows 10 odpowiednio głęboko, możemy natrafić na ustawienia regionalne. Jako Polacy, mamy w Polsce ograniczone zrozumienie dla różnorodności kombinacji „państwo-język-region”, bo nasz język jest jedynym językiem urzędowym w Polsce i nigdzie indziej. Pomyślmy jednak o następujących przykładach:
- Szwajcaria ma cztery języki państwowe (niemiecki, francuski, włoski i romansz).
- Język angielski ma ponad sto wariantów regionalnych, różniących się m.in. gramatyką, zapisem niektórych słów (color/colour), formatami daty lub godziny i innymi istotnymi detalami.
- Indie odnotowały 30 języków z ponad milionem użytkowników każdy i 122 języki z ponad 10 tysiącami użytkowników każdy.
Jeśli zaczniemy eksperymentować z formatami liczb, dat i walut, szybko zaobserwujemy całą gamę możliwości. Oto przykłady wartości predefiniowanych dla języków polskiego (Polska), francuskiego (Francja) i angielskiego (USA):
Różnice są naprawdę istotne. Francuski separator daty to nie „polska” kropka lecz ukośnik, w USA pierwszy w dacie jest miesiąc a nie dzień, ujemne kwoty pieniędzy (i tylko pieniędzy!) zapisuje się za oceanem w nawiasach, zaś separator oddzielający złotówki od groszy i euro od eurocentów to przecinek a nie kropka, jak w przypadku dolarów i centów. Pierwszy dzień tygodnia to u nas poniedziałek, w innych krajach niekoniecznie.
Mówicie, że skoro każdy ma po swojemu, to przecież nie ma problemu? Ha! Bo nie pracowaliście w międzynarodowej korporacji. Załóżmy, że dostajecie arkusze Excela od współpracowników z Filipin, Burkina Faso, Wysp Zielonego Przylądka i Pcimia. Waszym zadaniem jest zrobienie z tych danych zestawienia sprzedaży w kolejnych dniach miesiąca. Robi się ciepło, nie? Formaty dat, formaty liczb, formaty walut – czy Excel przeliczył wszystko jak należy? Czy każdy z zagranicznych pracowników miał prawidłowe ustawienia? A przecież mówimy o używaniu istniejącego oprogramowania, nie o podejmowaniu takich decyzji w odniesieniu do tworzonego softu…
Pół biedy, gdy chodzi o Excela – Microsoft to firma globalna i w swoim wiodącym produkcie zrobili wszystko jak należy. Trudniej robi się, gdy chcemy użyć polskiego oprogramowania księgowego (100% użytkowników w Polsce) z zagranicznymi ustawieniami regionalnymi. Dziesiętna kropka czy przecinek dziesiętny? Czy da się wpisać niewłaściwie? Jak zachowa się program? Czy po zapisie i odczycie danych widać to samo, czy coś po cichu zniknie? Jeśli zniknie, to obetnie część ułamkową czy pomnoży całość przez sto? A może dane zostaną zapisane ale nie dają się odczytać?
A może system operacyjny i język programowania obdarzyły programistę warstwą kompatybilności z ustawieniami regionalnymi, która działa świetnie i której wystarczy nie zepsuć? A on o tym nie wiedział i zepsuł ją tylko raz i tylko w jednym miejscu? W tej opcji, której używa się raz na rok przy drukowaniu formularzy PIT?
Tego tematu na pewno nie wyczerpiemy, więc na zakończenie obrazek:
Co to za robaczki? To są, moi drodzy, cyferki „sześć” w różnych alfabetach. Unicode zna 65 odmian szóstki a to i tak tylko warianty w kategorii „cyfra dziesiętna”. Pytanie, na które nie oczekuję odpowiedzi: w ilu znanych wam programach da się używać zamiennie szóstek innych niż pierwsza z lewej?
Formaty daty i godziny, GMT kontra UTC
Obsługa dat i godzin to jedna z trudniejszych rzeczy, jakie stają przed osobami projektującymi systemy IT. Nie dlatego, że jest trudna (choć temat jest złożony), ale z powodu zestawu pułapek, w jakie wpada każdy tworzący po raz pierwszy oprogramowanie działające w wielu strefach czasowych. W programie studiów informatycznych nic o tym nie ma. Albo trafimy do jednej z kilku globalnych korporacji i tam wchłoniemy wiedzę od kolegów, albo nie trafimy i wtedy mamy serię pomyłek i usterek.
O dacie i czasie w programowaniu prędzej czy później napiszę osobną blogonotkę, temat leży w notatkach od zawsze. Tymczasem zaś dwa obrazki pokazujące, gdzie co jest po naszemu a gdzie po ichniemu.
Byte Order Mark
Temat sposobów zapisu daty czy godziny każdy jako-tako rozumie, więc teraz dla równowagi stricte techniczna przyczyna problemów z obsługą plików tekstowych (TXT). Zacznijmy od wstępu fabularnego.
Pamięć komputerów podzielona jest na bajty, z których każdy może przyjąć jedną z 256 różnych wartości. Jeśli potrzebujemy zapisać w pamięci komputera większą liczbę, będziemy potrzebować więcej niż jednego bajtu. Jest kwestią umowy, jaką kolejność bajtów obierzemy. Procesory w komputerach wolą najpierw zapisać bajty oznaczające większą część liczby (little endian), ale procesory w komórkach mogą korzystać z odwrotnej konwencji (big endian, do wyboru).
Pamiętacie artykuł o emotkach i Unicode? Napisałem tam, że jeden znak ekranowy może być zapisywany przy użyciu wielu bajtów, no a właśnie powiedzieliśmy sobie, że różne procesory mogą robić to w różny sposób. Wystarczy przenieść plik z taką zawartością na komputer o innej konwencji zapisu i klops.
Problemom takim miał zapobiec tzw. BOM (Byte Order Mark), czyli kilkubajtowy nagłówek plików tekstowych jednoznacznie identyfikujący kolejność zapisanych bajtów. Dobrymi chęciami piekło jest wybrukowane – wszystkie porządne formaty danych (np. JPEG, ZIP i inne) używają zawsze jednej konwencji, niezależnie od architektury procesora i organizacji pamięci. W ciągu całej kariery nigdy nie trafiłem na sytuację, w której BOM decydowałby o interpretacji zawartości pliku.
Bardzo wiele razy trafiałem za to na dokumenty tekstowe zaczynające się od ciągu znaków 
czyli od nagłówka BOM UTF-8 wyświetlanego przez narzędzie nieświadome jego istnienia i znaczenia. Jest to szczególnie uciążliwe, gdy programiści wymieniają z tłumaczami pliki zawierające teksty w obcych językach. Jeśli edytor tłumacza wymusza użycie BOM zaś środowisko programistyczne wyklucza jego obecność – mamy nawracające źródło problemów.
Sortowanie alfabetyczne
Co może być trudnego w sortowaniu alfabetycznym, pomyślicie? Przecież umie to każdy drugoklasista. Spoko! Proszę zacząć od alfabetycznego posortowania następującego zestawu literek „a” ze znakami diakrytycznymi.
Słabo? No jak to, przecież to tylko akut, grawis, cyrkumfleks, brewis, cedylla, precylla, makron czy dasja (jedno z tych słów wymyśliłem; dasz radę żyć z niewiedzą czy sprawdzisz je teraz jedno po drugim? napisz w komciu). Dobra, do rzeczy. Najsprytniejsi wykonają unik stwierdzeniem, że po to programujemy komputery, żeby robiły takie zadania za nas. No i spoko, tylko że reguły sortowania zależą od języka.
Serio, w polskim alfabecie mamy sekwencję „u – v – w”, za to w języku szwedzkim „w” jest równoważne „v”. Teraz zagadka – jeśli polska policja współpracuje ze szwedzką policją i mają listę ściganych przestępców sortowaną po nazwisku, to czyje sortowanie wygrywa? W Polsce „ą” jest po „a”, jednak w języku francuskim literki z diakrytykami i bez są sobie równoważne, za to przegrywa ostatni diakrytyk (mamy więc: cote < côte < coté < côté). W języku estońskim litery „õ”, „ä”, „ö” oraz „ü” mają miejsca za „w”. Dziesiątki innych przykładów znajdziecie w Wikipedii.
Jak działają bazy danych? Proste – pozwalają na wybór reguł sortowania, jest ich ze czterdzieści (Polacy nie gęsi a swój collate mają). Chyba, że policzymy osobno sortowanie uwzględniające lub ignorujące wielkość liter – wtedy ponad osiemdziesiąt. Jeśli zobaczycie kiedyś „ą” za „z” – wiedzcie, że w wielu systemach sortowania „gołe” literki łacińskie stoją przed wszystkimi diakrytykami.
Unicode
Dobra wiadomość: kilkanaście lat temu standard Unicode wyzwolił nas od konieczności konwertowania dokumentów między różnymi stronami kodowymi, dzięki czemu możemy swobodnie mieszać teksty w różnych językach.
Zła wiadomość nr 1: ogonki w polskich literkach będą zazwyczaj na swoim miejscu, więc łatwiej przeoczymy inne usterki.
Zła wiadomość nr 2: na styku wielu systemów informatycznych usterki lubią się kumulować – na obrazku poniżej mamy rymowany wierszyk o tym, jak literka „ó” w pięciu krokach zmienia się na etykiecie adresowej w potwora: „&ATILDE;&SUP3;”
Wyzwań znajdziemy więcej. W artykule o emotikonkach pokazałem, że tekst o dokładnie takim samym wyglądzie (i znaczeniu!) można w Unicode zapisać na wiele sposobów. Nie spodziewajcie się spójnej normalizacji ani normalizacji w ogóle.
Minus, myślnik, pauza, dywiz i półpauza
W kodzie źródłowym programiści używają tylko znaku “minus” (znak ASCII nr 45, patrz tekst o Base64). Zgadniecie, którym znakiem zastąpią dywiz, pauzę i półpauzę, gdy przyjdzie do edycji tekstu? Tak. Jedynym, jaki znają. Minusem. Zgadniecie, jakimi znakami zastąpią minusy kształceni w naukach humanistycznych tłumacze? Tak. Całym zestawem – myślnikiem, dywizem, pauzą i półpauzą.
Jednych i drugich trafi po drodze szlag, bo muszą przecież odkręcić omyłki wynikające z prostactwa i nieuctwa drugiej strony. A spór ten trwać będzie po wiek wieków – chyba, że uzgodniona zostanie wspólna konwencja. Porada ogólna: w umowie dotyczącej tłumaczenia oprogramowania warto uwzględnić nie tylko wzorcowy słownik, ale także gramatykę (angielski w różnych rejonach świata różni się) i techniczne warunki współpracy.
PS: tak, dwa słowa w tytule tej sekcji oznaczają to samo. Jeśli wiesz, które – za przygotowanie do lekcji dostajesz plusa (znak ASCII nr 43)
PPS: chyba że w pierwszym Postscriptum był żarcik, wtedy nie dostajesz
Cudzysłowy
Tu robi się trudniej, bo zasady użycia cudzysłowów różnią się bardzo w różnych krajach – zależą od języka, gramatyki, przyjętych form i zwyczajów. Przykłady w angielskim i polskim tekście obrazek temu. Wiele narzędzi rozumie tylko jedną formę i spróbuje „naprawiać” usterki, które często usterkami nie są. Co gorsza, zachowanie wielu z nich będzie zależało od wersji językowej oprogramowania, systemu operacyjnego, ustawień językowych, ustawień lokalizacyjnych lub wypadkowej wszystkich poprzednich elementów.
Aby daleko nie szukać – ten blog chodzi na WordPressie i o ile przykładam uwagę do względnej poprawności cudzysłowów, które z całym tekstem kopiuję z Google Docs, to wszelkie formy poziomych kresek puszczam na żywioł. Literówek czepia się wiele osób, błędnych cudzysłowów i myślników – nikt. Oczywiście ktoś gdzieś cierpi, ale robi to w milczeniu (mogę z tym żyć).
Do rzeczy. Ponownie – w kodzie źródłowym używamy zwykłych cudzysłowów ASCII (kod 34), czasem apostrofu (kod 39), raz na rok tego śmiesznego odwrotnego apostrofka na lewo od klawisza „jeden”, jego kod ASCII to 96 (grawis albo grave accent).
W prawdziwym życiu bywa jednak trudniej. Ten kawałek będzie ilustrowany obrazkami – nie podejmuję się wklepania tych wszystkich zabawnych znaków do WordPressa. Na styku gramatyki i technologii mamy dodatkowo takie detale, jak niełamliwe spacje (specjalny znak, na którym nigdy nie nastąpi przejście do nowego wiersza) albo cudzysłowy w różnych konwencjach:
Wszyscy zaangażowani w tłumaczenia muszą wiedzieć, które cudzysłowy są „techniczne” czyli pozwolą językowi programowania ustalić początek i koniec napisu, a które mają trafić na ekrany komputerów lub komórek (nie każdej konwencji da się użyć w każdym środowisku). Tych pierwszych dotykać nie wolno, te drugie muszą być traktowane z dużą ostrożnością, bo niektóre programy narzędziowe wiedzą lepiej i na siłę modyfikują znaki lub – co gorsza – wstawiają lub usuwają ligatury.
Ciekawostka – tylko jedna z trzech linijek na obrazku wyżej jest poprawna wg brytyjskich zasad interpunkcji.
Zanim zaczniesz chwalić się tą wiedzą, zdaj sobie sprawę z tego, że czytasz słowa napisane przez programistę, który w połowie lat 90. ubiegłego stulecia miał z polskiego naciąganą czwórkę, za to biegle copypastuje angielską Wikipedię. Tak, że ten. Równie dobrze poprawne mogą być dwie linijki lub żadna. Zależy, jak się wkleiło do Worda.
Więcej prawdziwej wiedzy tutaj, tutaj albo tutaj.
Duże liczby czyli miliard dolarów kontra bilion dolarów
Podobno jeden obraz wart jest tysiąca słów, oto porównanie jachtów milionerów z jachtem miliardera:
O różnicach między nazewnictwem potęg liczby tysiąc pisałem w tekście „Kilobajt, megabajt, gigabajt, terabajt”: tam, gdzie większość Europy liczy “tysiąc, milion, miliard, bilion, biliard, trylion”, kraje angielskojęzyczne używają wersji “tysiąc, milion, bilion, trylion, kwadrylion, kwintylion”.
Tę wiedzę wypada posiąść. Zbyt często widzimy w TV lub słyszymy w radiu niedouczonych dziennikarzy mówiących coś w rodzaju „budżet NASA to 22 biliony dolarów”. Chodzi o oczywiście o rodzime miliardy a cały budżet federalny USA to 6,5 tysiąca miliardów dolarów (czyli 6 „naszych” bilionów). W codziennym życiu nie mamy zbyt często do czynienia z tak dużymi liczbami, ale w tekstach o objętościach dysków twardych albo odległościach w kosmosie trzeba zachować czujność.
Dygresja: czasem trafiamy na niedouczonych blogerów (i blogerki) którzy odmieniają słowo „radio”, ale to oni mają rację (sprawdzić, czy nie ejżur).
XML, JSON i inne potworki
Dobrą praktyką, dziś wymuszaną przez wiele środowisk programistycznych, jest wydzielanie wszystkich napisów wyświetlanych na ekranie do osobnych plików z zasobami. Może to wyglądać na przykład tak:
Jeśli tłumacz dostanie taki plik do tłumaczenia, musi znać co najmniej listę znaków zabronionych, na którą składają się znaki ’<>&”
. Zamiast nich trzeba używać zamienników takich, jak >
albo &
. Powinien też wiedzieć, kiedy zamknąć wynikowy napis w sekcji CDATA. Oczywiście taki tłumacz powinien stosować specjalizowany edytor XML, aby uniknąć błędów składni. Słowem – wysyłanie gołych plików XML do niezaprawionego w lokalizacyjnych bojach tłumacza to zły pomysł, bo jest to format danych do przetwarzania maszynowego a nie edycji przez człowieka.
Oczywiście znacznie gorszym pomysłem będzie dostarczenie fraz do tłumaczenia w Excelu. Wiecie, takim posortowanym alfabetycznie i pozbawionym kontekstu. To gwarantowany przepis na frustrację tłumacza, irytację testerów i rozpacz użytkowników.
Liczebniki i określanie mnogości
Niektóre dzikie ludy stosują liczebniki „jeden, dwa, wiele”. Moglibyśmy nauczyć się od nich… wiele (śmiech z taśmy). Tymczasem jednak mamy to, co mamy, czyli na przykład język polski, w którym liczebność wpływa na formę rzeczowników i przymiotników. Cytat z Rady Języka Polskiego:
liczebniki 2, 3, 4 oraz liczebniki, których ostatnim członem jest 2, 3, 4 (czyli np. 22, 23, 24, 152, 153, 154 itd.) łączą się z rzeczownikami w mianowniku liczby mnogiej, np. trzy koty, dwadzieścia cztery koty, sto pięćdziesiąt dwa koty. Liczebniki od 5 do 21 i te, które są zakończone na 5-9 (np. 25, 36, 27, 58, 69), łączą się z rzeczownikiem w dopełniaczu liczby mnogiej, np. pięć kotów, siedemnaście kotów, sto siedemdziesiąt siedem kotów. Należy też pamiętać o tym, że liczebnik dwa (i inne zakończone na dwa) ma formę dwie przy rzeczownikach rodzaju żeńskiego: dwie panie, dwadzieścia dwie bułki, sto czterdzieści dwie butelki. Wszystkie liczebniki mają ponadto odrębną formę przy rzeczownikach męskoosobowych, np.: dwaj, trzej, czterej panowie (albo: dwóch, trzech, czterech panów), pięciu panów, stu siedemdziesięciu trzech panów. Kwestia ta, czyli sposoby łączenia liczebników z rzeczownikami, jest szczegółowo omówiona w każdym podręczniku języka polskiego dla cudzoziemców.
Aby było trudniej, w różnych językach różna jest też składnia w ramach której konstruujemy frazy z liczebnikami. W szablonach przydaje się wówczas możliwość przestawiania kolejności podmienianych fraz, służą do tego znaczniki takie jak {0} albo $1. Przykład:
„{0} inflicts {1} to your resources and decreases your HP by {2} for every shop you visit
” (źródło).
Jeśli to możliwe, warto zamienić znaczniki numerowane na opisowe: „{Event.Saint.Nicholas.Day} inflicts {Wallet.damage.points} to your resources and decreases your HP by {HP.points} for every shop you visit
” – w takiej postaci niosą dodatkowy kontekst pomagający w przekładzie.
Kolejny temat, o którym do tej pory nie wspomnieliśmy – wyrażenia w różnych językach różnią się długością. Angielski jest zwięzły. Te same napisy po polsku zajmą na ekranie jakieś 30% miejsca więcej. Potrzebny będzie albo system budowania interfejsu ekranowego automatycznie zmieniający rozmiar kontrolek albo szablony zawierające zapas miejsca na dłuższe napisy.
Adresy pocztowe
Twój program musi obsługiwać adresy z całego świata? Witaj w piekle. Temat na osobną blogonotkę, tyle tu jest fałszywych założeń – że każda ulica ma nazwę, dom ma numer, numer nie jest ułamkiem, adres zawsze zawiera miejscowość, jeden budynek ma jeden kod pocztowy, że podział administracyjny jest niezmienny, że pięć linii tekstu zawsze wystarczy aby zaadresować list, że [tu dziesiątki innych przekonań].
Jeśli musisz wysyłać coś na cały świat, spróbuj naśladować formularze Amazona. Nie mam lepszej rady.
Imiona i nazwiska
Twój program musi obsługiwać imiona i nazwiska ludzi z całego świata? Wiesz, ile alfabetów jest na świecie? Wiesz, ile z nich potrafi obsłużyć twój program? No nic, oto wybrane przykłady ze strony i18nguy.com, w formie obrazka. Powodzenia!
Dlaczego proces lokalizacji oprogramowania jest trudny
Znacie „Zasadę Kółka Graficznego”, ilustrującego pracę grafików?
Teraz wyobraźcie sobie, że za te osiem czy dziewięć etapów odpowiadają cztery osoby z trzech stref czasowych i dwóch kontynentów, zaś ich zadanie jest opóźnione już w chwili rozpoczęcia (ktoś na wcześniejszym etapie prac zużył cały bufor zapasowy i jeszcze trochę, dzień jak co dzień, proszę się rozejść). Brzmi beznadziejnie?
Bo przy tłumaczeniu oprogramowania im zwinniej (agile) tym trudniej. A już zwłaszcza, gdy robimy webówkę i szczycimy się procesem pozwalającym deployować zmiany na produkcję kilka (-naście, -dziesiąt) razy dziennie. Czemu? Ano, tłumacze z reguły nie są członkami zespołu a ich czas trzeba rezerwować z wielodniowym wyprzedzeniem. Podobnie – „językowi” testerzy i18n z reguły pracują ze swojego kraju i ich godziny biurowe mogą nie pokrywać się z naszymi.
Typowy proces poprawy usterki w tłumaczeniu może więc wyglądać następująco:
- zewnętrzny tester i18n zgłasza błąd tłumaczenia programu
- 16h przerwy, koordynator testów przychodzi do pracy
- kontakt z koordynatorem tłumaczy, rezerwacja czasu tłumaczy, przekazanie brakujących fraz
- tydzień przerwy, zanim obsłużone zostaną wszystkie potrzebne języki
- koordynator tłumaczy dostarcza uzupełnione tłumaczenia
- 4 dni przerwy, na koniec sprintu programista ma luzy
- programista wrzuca tłumaczenia i inicjuje deployment
- 17 dni przerwy bo zewnętrzny tester i18n pracuje dla nas jeden dzień co dwa tygodnie a przy pierwszej okazji nie wyrobił się z retestem
- tester i18n potwierdza naprawę usterki
Czyli – miesiąc na realizację zadania, w którym rzeczywista pracochłonność zmian to minuta tłumacza i pięć minut programisty. Może być gorzej. Gdy zespół realizacyjny pójdzie na skróty, pliki z translacjami wymieniane są mailem, ludzie nawzajem nadpisują sobie zmiany a na końcu do repozytorium trafiają wynalazki o nazwie „final23_ostateczny_fix4”.
RTL czyli lustrzane odbicia
Wszystko, co napisałem powyżej, blednie wobec problemu LTR/RTL czyli lokalizacji oprogramowania na potrzeby kultur i języków w których pisze się od prawej do lewej. Bo wiecie, nie chodzi tylko o pisanie – dla osób zanurzonych w takiej kulturze strzałka na przycisku „Wstecz” będzie wskazywała… w prawo. W prawym dolnym rogu znajdziemy też na ekranie Windows przycisk Start, paski przewijania okien znajdą się po lewej stronie i tak dalej.
Przyznam, że w swojej karierze nigdy nie dotarłem do tego etapu – zetknąłem się jedynie z tłumaczeniem aplikacji mobilnej na język chiński, co też generowało masę pytań na które… nikt w zespole nie znał odpowiedzi.
Przygotowanie oprogramowania z myślą o dwukierunkowości podwaja pracochłonność testów, zwielokrotnia koszt wytworzenia i stwarza masę problemów, które bez native speakerów ciężko zrozumieć, nie mówiąc o ich samodzielnym dostrzeżeniu. Bo tak: domyślnie tekst równamy do prawej, menu boczne ma wyjeżdżać z prawej, pasek postępu rośnie od prawej do lewej, ikonka ma być po prawej stronie tekstu a „rozwijaki” od comboboxa – po lewej.
Ikonki i ilustracje w których kierunek ma znaczenie – obracamy:
Pozostałych: nie obracamy
WTEM! Pasek postępu w odtwarzaczach multimedialnych zawsze od lewej do prawej. Czemu? Bo niby odzwierciedla kierunek przesuwania taśmy w odtwarzaczu. Kiedy ostatnim razem używaliście taśmy magnetycznej jako nośnika?
Niech tłum odwali robotę
Webowe systemy wspomagające tłumaczenie bywają dostępne za darmo, więc twórcy oprogramowania mogą ulec pokusie i poprosić swoją społeczność o przygotowanie tłumaczeń na inne języki. Szanse na sukces są… w najlepszym razie niepewne.
Jeśli za translację wezmą się osoby nie znające specyfiki pracy tłumacza oprogramowania, będziemy mieli wszystkie opisane wyżej problemy i wiele innych, jak:
- niespójności słownictwa,
- niska jakość (literówki),
- usterki wynikające z braku dostępu do materiałów (np. streszczenia fabuły gry albo aktów prawnych wpływających na terminologię),
- brak kontaktu z zespołem programistów,
- znudzenie i porzucanie projektu w losowym momencie,
- trolling (np. ukryte wulgaryzmy)
Z opisu prawdziwych doświadczeń z crowdsourcingiem wynika, że największym problemem jest niespójność i nieterminowość. Szanse sukcesu mocno rosną, gdy każdy z języków będzie miał zaufanego opiekuna/lidera mającego bliskie relacje z zespołem produkcyjnym.
Czego nie da się przełożyć
Na przykład porządku prawnego. Seriale „Suits” albo „Better Call Saul” potrafią nieźle namieszać w głowach polskim widzom, bo anglosaski system Common law nie ma wiele wspólnego z polskim prawem, różnice dotyczą nawet podstawowych pojęć. Podobnie jest z systemami podatkowymi.
Pewne problemy pojawiają się też przy przeliczaniu wartości z imperialnego systemu miar na metryczny. Pół biedy, gdy stopy i cale odnoszą się do wzrostu bohatera. Gorzej, gdy mamy do czynienia z opisem technologii, precyzja podawanych wartości ma znaczenie a cale czy galony przeliczamy na centymetry lub litry.
Tworzenie oprogramowania a polityka
Dwie dość odległe rzeczy, prawda? Niby tak, ale nie wtedy, gdy w grę wchodzi i18n. Globalne korporacje mają spory zgryz, bo chciałyby robić biznesy wszędzie i z każdym, tymczasem wiele państw będących w konflikcie oczekuje opowiedzenia się Googlów czy Microsoftów po ich stronie.
Przykład – półwysep Krymski. Ukraiński czy rosyjski? Rysować jedną granicę, dwie czy żadnej? Kreska zwykła czy przerywana?
Jeśli chodzi o API do odwrotnej geolokalizacji, będzie prościej. Użytkownik pyta o jakieś współrzędne, API poda numer domu, ulicę, miasto i… tyle. Nazwa państwa jest zniknięta. W sumie i tak dobrze, bo przez kilka lat geolokalizacja na Krymie nie działała w ogóle.
W słowach Pisma czytamy: „Żaden sługa nie może dwom panom służyć. Gdyż albo jednego będzie nienawidził, a drugiego miłował; albo z tamtym będzie trzymał, a tym wzgardzi. Nie możecie służyć Bogu i Mamonie”. Cóż, przydałaby się gwiazdka i przypis, że nie dotyczy korporacji – one służbę dwóm panom mają przećwiczoną. Geolokalizacja pozwala prezentować różne wersje mapy użytkownikom z różnych krajów.
Taki problem występuje w Kaszmirze, do którego prawa roszczą sobie Indie, Pakistan i Chiny. Ten film pokazuje dzikie fikołki, którymi Google Maps stara się zadowolić trzy mocarstwa nuklearne zamieszkiwane przez miliardy potencjalnych użytkowników.
Inny przykład – flaga Tajwanu na iPhone’ach. Dla użytkowników w Chinach – nie istnieje. Dla użytkowników w Hongkongu – nie występuje na liście flag. Dla całej reszty świata – istnieje.
Nagroda na końcu drogi
Jeśli program, nad którym pracujesz, okaże się sukcesem, czeka cię praca nad… wersją chińską. Będziesz patrzyć na tłumaczenia złożone z chatek (屋) i choinek (聖誕樹) w których nie dostrzeżesz nawet najbardziej oczywistej i spektakularnej usterki.
Jeśli program okaże się spektakularnym sukcesem, czeka cię praca nad wersją… arabską. Nauczysz się, że wszystko, co było w interfejsie użytkownika kotwiczone do strony prawej lub lewej, należy nauczyć się kotwiczyć do strony początkowej lub końcowej, obrazki dostarczać w dwóch wersjach i tak dalej. Napisy tradycyjnie w formie szlaczków (ممر المشاة)
Słowem – nie będzie nagrody. Nie będzie końca.
Na zakończenie
To wszystko jest trudne. Microsoft miał tysiące specjalistów i 30 lat na ogarnięcie tematu a i tak w wielu miejscach poległ. W wersjach Windows wcześniejszych niż dziesiątka można było na przykład włączyć pseudo-locale przygotowane tak, by były jak najbardziej udziwnione. Dzięki temu od razu było widać miejsca, w których pominięto wywołania systemowych funkcji formatujących daty, liczby czy wartości pieniężne. Niestety – po ich włączeniu psuły się nie tylko aplikacje innych firm, ale także Excel, Visual Studio, Podgląd Zdarzeń i wiele innych. To jest naprawdę, naprawdę trudne.
Ty, lokalizując oprogramowanie, będziesz mieć mniej czasu i mniej zasobów. Należy robić to co się da tak dobrze, jak się da. Cudów nie będzie. Użytkownik z Nepalu (नेपालबाट प्रयोगकर्ता) wybierze program do obsługi podatków (करहरू आवेदन) autorstwa nepalskich programistów i… wszyscy możemy z tym żyć.
Nie próbuj zrobić wszystkiego dobrze za pierwszym razem. Daj użytkownikom możliwość wygodnego zgłaszania błędów, odpowiadaj im i naprawiaj usterki zgodnie z priorytetami a… jakoś to będzie. W wielu przypadkach nawet niedoskonałe tłumaczenie będzie o niebo lepsze, niż jego brak.
O co chodziło z tą darmową ochroną danych jesień?
Gdy dysk twardy gruchnie o ziemię a głowice uderzą w wirujące talerze, mamy sporą szansę na uszkodzenie danych lub całkowite zniszczenie dysku. W laptopach montuje się więc akcelerometr wykrywający upadek – w takim przypadku głowice w ułamku sekundy wyjeżdżają poza obręb talerza, by zmniejszyć ryzyko uszkodzeń.
W laptopach Dell odpowiadał za to program o opisowej nazwie „Free fall data protection” czyli „ochrona danych przy upadku swobodnym”.
Free – swobodny ale także darmowy
Fall – upadek ale także jesień
Data – dane
Protection – ochrona
Innymi słowy: “darmowa ochrona danych jesień”
Postscriptum
Potrzebujecie pomocy w stworzeniu procesu lokalizacji oprogramowania i nauczeniu zespołu, co to jest i co się z czym je? Oto wasze adresy: localization.pl oraz ewa.dacko.org (znam Ewę pół życia i w kwestiach tłumaczeniowo-lokalizacyjnych zawsze była dla mnie autorytetem).
Postpostscriptum
Drogi czytelniku/czytelniczko – mam prośbę. Jeśli podobał Ci się niniejszy artykuł, prześlij go kilku innym osobom którym też może się spodobać. Przygotowanie tekstów o takiej długości i różnorodności trwa wiele godzin rozłożonych na wiele wieczorów, więc nie pojawiają się one jakoś strasznie często. Mam jednak nadzieję, że – podobnie jak ja – lubisz długie teksty pełne odnośników do różnych zasobów dodatkowych. Daj znać w komentarzu, jeśli udało ci się dotrzeć aż tu.
Dla chętnych jest też Twitter, Facebook i Linkedin, gdzie anonsuję każdy kolejny artykuł i czasem dorzucam dodatkowe informacje czy linki, w zamian przyjmując skromne ilości lajków. Poniżej możesz zapisać się na newsletter, tam NIE daję znać o nowych tekstach. Dostaniesz jednego maila na wiele tygodni ale o tym, o czym koniecznie będę chciał poinformować. Na razie!
O autorze: zawodowy programista od 2003 roku, pasjonat bezpieczeństwa informatycznego. Rozwijał systemy finansowe dla NBP, tworzył i weryfikował zabezpieczenia bankowych aplikacji mobilnych, brał udział w pracach nad grą Angry Birds i wyszukiwarką internetową Microsoft Bing.
43 odpowiedzi na “Grosza daj tłumaczowi”
Fantastyczny artykuł! Dzięki za Twoją pracę nad jego napisaniem.
Poszerowany, gdzie się tylko da 🙂
Nawiasem mówiąc, nic nie ujmując innym specjalizacjom, zawsze uważałam że tłumaczenie artykułów naukowych jest łatwiejsze 😉
Pozdrowienia
wow. Kolejny świetny artykuł. Jestem pod wrażeniem.
Dzięki za pracę którą w to wkładasz i za chęć dzielenia się wiedzą ze światem.
Tytuł artykułu na temat często stosowanej konstrukcji do obsługi błędów „try … catch … finally” został kiedyś w dokumentacji Microsoft przetłumaczony jako „wreszcie spróbuj połowu”
W którymś MS Access w wersji polskiej nie dało się poprawnie zagregować danych, bo okazywało się, że utworzone jest zapytanie 'select maksimum(…) from’
„Arabski pulpit Windows 8” – to raczej Windows XP jest
Tłumacze nie potrzebują edytorów XML, ponieważ tłumacze mają narzędzia CAT, które potrafią całkiem ładnie udostępnić z XML-a do tłumaczenia to, co trzeba, i zabezpieczyć resztę przed popsuciem.
https://www.localize.pl/product-pol-204-Nietypowe-pliki.html
Niezaprawiony w bojach tłumacz z edytorem XML to jak radosny programista z API do Google Translate!
Dzięki wielkie za artykuł, jak zwykle genialna praca! Zaciekawił mnie paragraf „Czego nie da się przełożyć”.
Ostatnio polecono mi serial Vide Principals – https://www.imdb.com/title/tt3766376/ – opowiadający o rywalizaacji 2 wicedyrektorów szkoły. Na HBO są źle zsynchronizowane napisy angielskie, więc żona zaproponowała polskie. Ale aż zacząłem zgrzytać zębami jak zobaczyłem co się dzieje.
Otóż tłumacz przetłumaczył pojęcie „school board” na „kuratorium”. Na początku wydawało mi się, że się pomyliłem, ale później wciąż pojawiało się to samo tłumaczenie. Widać tłumacz miał nikłe pojęcie o różnicach w systemach edukacyjnych w obu państwach, bo znaczeniowo to są 2 kompletnie różne pojęcia. Taka rzecz jak kuratorium jest nieobecna w amerykańskim systemie. I to wprowadza widzów w błąd. Nie za bardzo rozumiem, czemu nie można było zostać przy tłumaczeniu „rada szkoły” lub „rada szkół”.
To przynajmniej był jakiś szkolny kontekst. Oglądałem kiedyś odcinek Sherlocka, w którym razem w Watsonem idą tunelem metra, patrzą na zamocowane na suficie ładunki wybuchowe i któryś z nich komentuje na głos… „koszty wyburzeń”.
„źródło: archiwum prywatne, bo niby jakie inne?”
https://tineye.com/search/20414658bb0f44a648a1a2597f31159f0cb7b1c9?sort=score&order=desc&page=1
😀
No i jeszcze trzeba brać pod uwagę „nowomowę”:
https://ppbit.pl/null/programista-plakal-jak-nazwe-zmiennej-wymyslal/
🤦♂️
Ten dokument Google’a, który autor
tegocytowanego bloga sobie śmiesznie skomentował, jest właśnie przykładem instrukcji jak międzynarodowe firmy radzą sobie z problemami opisanymi w tym artykule. Niektóre pozycje oczywiście wynikają z politycznej poprawności (która też jest elementem globalizacji oprogramowania), ale większość ma zapobiec niezrozumieniu tekstu przez inny jakieś kontekst kulturowy lub doświadczenie czytelnika – np. żeby nie pisać America mając na myśli Stany Zjednoczone.Fajny blog 🙂
Paradoksalnie, polskie litery źle się wyświetlają (są „cienkie”; najnowszy Chrome na Windows) – zwykle jest to jakiś problem z czcionkami.
Grrr… Czcionka to taki metalowy stempelek ;-P
Oczywiście, że ktoś czyta podpisy pod obrazkami. Verna też czytuje i rozpoznaje fragment po pierwszych trzech zdaniach. I usiłuje sobie wyobrazić, jak wyglądałby znak diakrytyczny w kształcie precla. 🙂
Świetne! A problemów z językami może być więcej. Np. trzeba sprawdzać, czy może niemiecki Müller i Mueller to ta sama osoba.
I czy ktoś by pomyślał, że text.toLower() może się nie równać text.toUpper().toLower()? Do niedawna w języku niemieckim litera scharfes S nie miała wersji dużej i Straße zmieniało się na STRASSE.
Z tymi minusami to jest jeszcze bardziej skomplikowana sprawa.
Pauza (em-dash, —), Unicode U+2014, to jest znak interpunkcyjny o wielu zastosowaniach: rozpoczyna wypowiedzi w dialogach; rozdziela myśli (stąd nazwa „myślnik”, ale por. niżej); rozdziela wartości graniczne w przedziałach liczbowych, np. zakresach dat; itd.
Półpauza (en-dash, –), Unicode U+2013, jest mniej więcej o połowę krótsza i ma podobne zastosowania co pauza.
Myślnik (dash) to jest pojęcie na wyższym poziomie abstrakcji niż pauza albo półpauza: to „abstrakcyjny znak interpunkcyjny”, którego konkretną realizacją jest pauza albo półpauza. Mówiąc fachowo: jeśli uznać myślnik za grafem, to pauza i półpauza są jego allografami.
Minus (−), Unicode U+2212, to jest minus matematyczny. Najłatwiej go pomylić z półpauzą, ale jest zorientowany w innej osi, tej samej co pionowa kreska w plusie i pomiędzy kreskami w znaku równości.
Dywiz (łącznik, hyphen, ‐), Unicode U+2010, wygląda inaczej niż półpauza albo pauza: jest znacznie krótszy, grubszy i bywa osadzony trochę niżej. To jest ten znak, którym rozdzielamy kawałki wyrazu przy przenoszeniu do następnego wiersza albo który piszemy w słowach takich jak „biało‐czerwony”. Między dywizem a literą w zasadzie nigdy nie ma spacji.
W takim razie co to jest „-”, czyli U+0045, czyli to, co dostajemy po wciśnięciu klawisza zwanego „minus” na klawiaturze? Unicode nazywa toto „hyphen-minus”. W tradycji typograficznej nie było takiego znaku, ale na maszynach do pisania był tylko jeden klawisz generujący minusopodobny znak, ogarniający funkcje pauz, dywizu i myślnika. Stamtąd trafił na klawiatury komputerów i poprzez ASCII (w którym miejsce było bardzo ograniczone, tylko na 96 znaków drukowalnych) do Unicode. W druku jest nie do odróżnienia od dywizu, a w prawie wszystkich językach programowania (sprawdzić, czy nie APL) robi za operator odejmowania.
https://sjp.pwn.pl/zasady/408-93-12-Myslnik-wyznaczajacy-relacje-miedzy-dwoma-wyrazami-lub-wartosciami;629831.html
Tu się z Tobą nie do końca zgadzają.
Z fajnych tłumaczeniowych kwiatków, z którymi ja się spotkałem
królowa klubów, król klubów, krłlowa serc, król serc (przy kartach, z queen of clubs, king of hearts)
„człowiek” i „kobieta” jako opcja wyboru płci
brzeg (EDGE, standard łączności mobilnej stosowanej przed 3g)
plecy (oryginalnie back, przycisk wstecz)
zbaw lub oszczędź plik (oczywiście save file)
przejściówka z USB na błyskawicę (na Lightning)
objętość użytkownika (user volume, głośność)
rate (jako prędkość, odtwarzania) tłumaczona w kontekście stawki/opłaty
„bezchmurnie” (bo się Applowi stringi pomyliły, i ten sam komunikat był stosowany do opisu nieba („clear) i do komunikatu „wyczyść”)
listy (jako opcja na klawiaturze, z „letters”, co oznacza też litery)
„characters”, jako znaki, które w niektórych językach stały się postaciami lub bohaterami
insurances (ubezpieczenia, w niejednej polskiej aplikacji bankowej, gdzie poprawną formą w języku angielskim jest liczba pojedyncza „insurance”). Te aplikacje to są dobre przykłady angielskiego po polsku, a zwroty typu „check in internet banking” są normą.
„employees, students (and not only)” (to wewnętrzny system jednej z polskich uczelni)
„warstwa uszczelki” (było gdzieś w Windowsie, nie znam oryginału)
„piersi” (w oryginale „bust”, co oznacza przekroczenie 21 w black jacku)
wszelkie opcje typu „wbudowane” vs. „trzecia impreza” („third party”, firmy trzecie) albo „opuść imprezę” (w kontekście opuszczenia drużyny w grze)
„race” jako rasa przetłumaczona jako wyścig
wybór między opcjami „automatyczne” i „podręcznik użytkownika” (od manual)
przycisk „książka” („book”, na zasadzie „zabukuj”). Co ciekawe, w popularnej appce linii lotniczych
„we would like to sexually propose a new keyboard layout” (w tłumaczonej dokumentacji do dość specjalistycznego oprogramowania, oryginalnie pisanej w języku Chińskim)
…i tu wchodzą, cali na biało, tłumacze filmowi, prychając na lewo i prawo. Moja ukocha historia to film „In Bruges”- ponury jak noc listopadowa, o mordercach z których jeden ma wyrzuty sumienia po zabiciu dziecka. cały film klną jak szewcy (w dodatkach na DVD był nawet kawałek o tym, dlaczego tak bluźnią- ma to ważne znaczenie dla fabuły). Tymczasem żaden bluzg nie został przetłumaczony, żaden. No… może jednen, gdy bohater krzyczy „Jesus Christ!”, a lektor „K&$#a M%ć!”. I żeby było jeszcze bardziej żałośnie… film w polskiej dystrybucji miał tytuł „Najpierw strzelaj, potem zwiedzaj”. Tak więc…
W MS są tłumaczenia w rodzaju: „Czekaj na ukończenie pracy przez instalatora” (zamiast „instalator”). Jest to nagminne, w dodatku inne firmy to małpują. XD
czytałem w wannie na tablecie i tekst jest tak długi, ze się cały pomarszczyłem.
dzięki!
Zawsze gdy skroluje artykuł tutaj i wyskakuje Twoja głowa to widzę to tak:
https://newcastlebeach.org/images/bald-cap-6.jpg
Bo jeszcze nie trafiłeś na fotę autora kanału „jerry rig everything”!
„Procesory w komputerach wolą najpierw zapisać bajty oznaczające większą część liczby (little endian)”
Chyba jednak powinno być o mniejszym
Też mi się tak wydaje że coś się tu nie zgadza.
„Procesory w komputerach wolą najpierw zapisać bajty oznaczające większą część liczby (little endian)”
jest tu zbitka słów „większa część liczby”, niełatwa do interpretacji, żeby się w to nie wgryzać na wywoływanej stronie jest taki opis „najmniej znaczący bajt (zwany też dolnym bajtem, z ang. low-order byte) umieszczony jest jako pierwszy”,
(Swoją drogą w opisie na tej stronie big endian jest napisane tak „forma zapisu danych, w której najbardziej znaczący bajt (zwany też górnym bajtem, z ang. high-order byte) umieszczony jest jako pierwszy”, najbardziej znaczący bajt to już dość blisko „większej części liczby”)
„najmniej znaczący bajt” wygląda zupełnie inaczej niż „większa część liczby”, ale za to jest, wydaje mi się, bardziej jednoznaczny.
Na przykładzie; liczba większa niż 256, niech będzie 258, kodowanie na dwóch bajtach to by było „1” * 256 + „2”
najmniej znaczący bajt dla mnie to „2”, więc bajty po kolei wg wiki byłyby „02 01”
A „większa część liczby” to jakby zgadując chyba byłoby „1”, więc zgodnie z opisaną w artykule zasadą (bo little znaczy „większe”?) kolejność bajtów zapisujących tą liczbę w trybie little endian to będzie w hexie „01 02” – to coś się nie zgadza mi z WIKI.
I na koniec już nie wiem co wolą komputery. Z80 w pamięci trzymałby mi się zdaje „02 01”, little endian.
Dotarłem do końca. Świetny artykuł!
Zapomniałeś wspomnieć o błędzie powielanym od dekad. To co jakiś tłumacz dawno temu nazwał czcionką to tak naprawdę to jest font. Ba nawet folder z „czcionkami” to c:\windows\fonts
Mam wrażenie, że ciężko stwierdzić, czy „tak naprawdę” to jest font, bo font został zapożyczony z angielskiego jako określenie cyfrowego zapisu kroju pisma w momencie gdy ów się pojawił.
Samo angielskie słowo font funkcjonowało przed czasami elektronicznej obróbki tekstu, aczkolwiek warto zauważyć, że również po angielsku określenie „font” w funkcji „typeface” jest nieprawidłowe.
Natomiast w zakresie błędnego tłumaczenia nie sposób również wspomnieć np. o nieszczęsnych „kolumnach” tekstu w Wordzie.
Dotarłem. Udostępniłem. Doceniam.
Artykuł wspaniały, bo bardzo wstechstronny!
Nie mogę się powstrzymać, żeby nie zwrócić uwagi na pewien mały błąd, który nawet ma trochę wspólnego do podjętej tematyki.
Mianowicie w języku polskim nazwa Specjalnego Regionu Administracyjnego ChRL to „Hongkong” – pisane łącznie, po staremu, a nie rozdzielnie jak we współczesnym angielskim 🙂
Hongkong poprawiłem, dzięki!
Mega wpis jak zawsze!
Pełen szacunek za doświadczenie i wiedzę.
Przeczytałem całośc i jestem pod wrażeniem ile pracy kosztuje wydanie programu w różnych językach, nawet o jednej trzeciej potencjalnych problemów nie miałem pojecia…
Szanuje ten blog!
Nice! Mam trochę hobbystycznych doświadczeń z tłumaczeniami softu, ale to jest poziom pro ;-).
Przypomniała mi się sytuacja sprzed lat, jak chciałem moją małą appkę dać do tłumaczenia, zapiąłem do webowego toola dedykowanego do tłumaczeń, wrzuciłem wszystkie stringi, kontekstowe komentarze, były podpowiedzi ze słowników i tłumaczeń innych projektów, wszystko potem eksportowalne do gettexta którego mogłem sobie ładnie w kodzie obsłużyć itp itd fajerwerki (tool to Rosetta na Launchpad.net)… a osoba która miała tłumaczyć rzuciła focha, bo ona chce to jako tabelkę w wordzie i nie będzie specjalnie się uczyć jakiegoś nowego czegoś na potrzeby jednorazowego przetłumaczenia paru linijek. Tłumaczenie zrobiłem sobie sam ze słownikiem :-P.
Świetny, merytoryczny artykuł. Dzięki!
Powiem jedno — najprawdopodobniej piszesz najbardziej nieprawdopodobne teksty w całym internecie. Hat off!
Internet jest strasznie duży, więc na pewno nie, ale i tak dziękuję!
Ech, a jeszcze niedawno człowiek cieszył się jak program/system/środowisko obsługiwało polskie znaki diakrytyczne. Wtedy wielu uważało, że powinniśmy w ogóle odejść od ogonków w życiu codziennym, żeby ułatwić życie komputerom (a właściwie programistom).
A przeciwnicy tego mówili: przecież jak jest napisane „Ladowanie danych” to wiadomo, że chodzi o „Lądowanie” 😉
Lokalizacja to istotnie ciężki kawałek chleba. Odrobinę się o nią otarłem pomagając tłumaczyć dosyć prostą (pod względem językowym) aplikację pogodową. Metoda „na arkusz kalkulacyjny”, ale ostatecznie efekt był wystarczająco dobry.
Ja znalazłem jeszcze subtelniejszy przykład błędu niż te dwadzieścia bilionów dolarów dla NASA. W jednej z książek M. Houellebecqa (bodajże „Mapa i terytorium”) jeden z bohaterów dokonuje zakupu komputera. Tłumaczka niestety poległa, bo przetłumaczyła jednostkę pojemności dysku jako „teraoktet”. Oczywiście chodziło o terabajty – błąd wziął się zapewne stąd, że we Francji pojemności dysków są wyrażane właśnie w oktetach, a nie bajtach.
Przy okazji: w macOS od jakichś 15 lat niepoprawiony jest błąd polegający na niewłaściwym znaku separatora dziesiętnego na klawiaturze polskiej. Jeśli korzystamy z klawiatury z blokiem numerycznym, to uparcie będzie wstawiana kropka zamiast przecinka. Nawet w Numbers od Apple jest to niepoprawnie interpretowane.
Bardzo fajny artykuł. Świetnie opisuje rzeczywistość. Potwierdzam to swoim 30-letnim doświadczeniem programistycznym i pozdrawiam 🙂 🙂
Doskonałe.
Dodam jako (były) lokalizator oraz (równie były) PM w Dosyć Dużych Międzynarodowych Firmach z tej Branży (w tym lokalizacyjnych) takie kwiatki:
* Postacie w reklamach się zmieniają: nie uświadczysz murzynów w materiałach reklamowych lokalizowanych dla Rosji
* Izrael znika z map gdy lecisz nad nim liniami arabskimi i trzeba przeprogramować jeśli lecą nim Izraelczycy (co czasami się nie udaje na czas)
* Moje nazwisko, żadnej diakrytyki, pełne Latin 1 ale za to z „sprz” w środku nie jest dozwolone w formularzu pewnego systemu HRM
* To samo ze Scunthorpe i imieniem Dick https://www.labnol.org/tech/scunthorpe-clbuttic-mistake/14186
oraz setką innych przy niewłaściwym regexie
* Pełno wersji gier ocenzurowanych (przepraszam: lokalizowanych) w zależności od rynku, odbiorców czy obowiązującego w danej chwili czy miejscu prawa, patrz dawna sprawa pamiątek po nazistach na Yahoo czy Księżniczka Mononoke u Usańczyków.
A to tylko wierzchołek tej góry lokalizacyjnej: patrz choćby „lokalizacja” pism od królowej Anglii do sułtana i w drugą stronę w „The Sultan and the Queen” (Penguin Books), egipskie stele dostosowane do gustów danego władcy, czy też sama Biblia (oraz zawarte w niej zasady) „lokalizowana” na potrzeby ówczesnego rynku dusz (na przykład chińskiego czy indyjskiego: jezuici w średniowieczu itp.).
Nihil novi 🙂
Przeczytałem, choć sporo po publikacji – po prostu zaglądam na stronę „jak mi się o niej przypomni” – co potrwało właśnie jakiś miesiąc z kawałkiem; poprzednio czytałem przy okazji problemów z profilem zaufanym. Temat bardziej ciekawostkowy dla mnie, ale czytało się bardzo fajnie (choć miejscami niełatwo). Duży plus za masę ilustracji (nie trzeba szukać każdego pojęcia czy przykładu, żeby zobaczyć jak coś wygląda).
Precylla nie istnieje, a podpisy pod obrazkami czasem mówią więcej niż sam obrazek 😉 A link do artykułu poleciał do znajomych z opisem „długie, ale polecam”.
Dotarłem do końca i jestem… W szoku 🙂 Zdawałem sobie z tego sprawę, ale…
Mega robota, szacunek za tak obszerny materiał.
„..Pół biedy, gdy chodzi o Excela – Microsoft to firma globalna i w swoim wiodącym produkcie zrobili wszystko jak należy. ..” ?? Czyżby już zmienili sposób zapisywania nazw użytych funkcji w arkuszu ? Kiedyś mocno się zdziwiłem robiąc korporaporty. Okazało się, że arkusz stworzony w wersji PL jest kompatybilny tylko z wersją PL, bo nazwy funkcji są zapisane w pliku po POLSKU. Musiałem dodać język angielski i używać angielskich nazw które co ciekawe działały prawidłowo w obu wersjach PL i ENG.
O ile zgadzam się z autorem artykułu co do konkretów, o tyle mam całkowicie inne zdanie, co do pierwotnej przyczyny problemu.
Problemy wymienione przez autora dotyczą większości istniejących języków świata. To angielski jest jednym z bardzo nielicznych wyjątków, w których cały kontekst trzeba sobie samodzielnie zdekodować w głowie – stąd np. jedno „data” zamiast „dane”, „danych”, „danymi” itd. – a nie odwrotnie.
Bo w większości języków, nie tylko w polski, pełny kontekst jest wbudowany w sam tekst – w postaci czasów, form osobowych, liczb itd.
Dlatego też tworzenie interfejsu programu w języku wyłącznie angielskim jest zwykłym pójściem autorów na łatwiznę. Mogą sobie bowiem pozwolić np. na składanie tekstów z wyrażeń uniwersalnych i różne uproszczenia – a potem jest „problem z tłumaczeniem”.
Otóż nie k….! Nie żaden problem z tłumaczeniem, tylko właśnie problem z pójściem na łatwiznę przez autorów wersji angielskiej, którzy stworzyli oprawę tekstową bez żadnych hintów czy innych mechanizmów wskazujących kontekst komunikatu (które słowo jest czasownikiem, rzeczownikiem, które dotyczy liczby mnogiej, jakiej formy osobowej itd.) – aby tłumacze każdego języka mogli skupić się wyłącznie na niuansach tego języka, zamiast dekodować, co się naprawdę kryje za danym tekstem.
Więc to zdecydowanie nie tłumaczy powinno się piętnować.