glibc 2.27: Nowości w obsłudze języków

Zobacz także: glibc 2.26: Nowości w obsłudze języków.

1 lutego 2018 roku (albo 2 lutego, w zależności od strefy czasowej) została opublikowana nowa wersja 2.27 bibliteki glibc. Oto mocno spóźnione podsumowanie zmian w obsłudze języków w tej wersji.

Sortowanie alfabetyczne

Rozpoczęły się duże przeróbki sortowania alfabetycznego zgodnie ze standardem ISO 14651:2016 (tu można pobrać jego darmową wersję). Ostatecznie prace zostały zakończone już po wydaniu wersji glibc 2.27, ale przed wydaniem udało się poprawić reguły sortowania w wielu językach, jak np. w mandaryńskim chińskim (w wersji używanej na Tajwanie), chorwackim, czeskim, estońskim, francuskim kanadyjskim, górnołużyckim, islandzkim, litewskim, łotewskim, polskim, i tureckim. Wiele z tych prac zostało zakończonych, albo przynajmniej zaczętych podczas Internationalization FAD i z tego powodu należy je uznać za sponosorowane przez Fedora Project. Dziękujemy Mike’owi Fabianowi za jego wkład!

Poprawne formaty dat

Kolejną dużą zmianą, o której trzeba tu wspomnieć, jest wprowadzenie formatów dat używających poprawnych form gramatycznych w językach fleksyjnych (takich, jak polski). Tej funkcjonalności należy poświęcić oddzielny artykuł, zostanie on napisany później. Krótko podsumowując: od tej pory funkcje bibliteki glibc nl_langinfo()strftime() będą obsługiwały nie tylko dwie formy nazw miesięcy (pełną i skróconą), ale cztery (dla miesięcy używanych w datach, co w językach fleksyjnych często oznacza dopełniacz, oraz dla miesięcy używanych samodzielnie, co często oznacza mianownik). Na przykład, po polsku nazywamy miesiąc maj, ale jeśli chcemy nazwać dzień, obowiązkowo musimy użyć dopełniacza: 29 maja. Ta funkcjonalność jest opcjonalna, co oznacza, że języki, które jej nie potrzebują, nie zauważą żadnej zmiany.

Wprowadzenie funkcjonalności programowej nie spowoduje żadnej zmiany, dopóki nie zostaną dostarczone używające jej dane lokalizacyjne. W pierwszej kolejności poprawione zostały dane dla języka polskiego, zaraz potem dla ukraińskiego, a następnie dla rosyjskiego, greckiego, białoruskiego, litewskiego, a na końcu dla chorwackiego. Dane dla języka ukraińskiego przez ostatnie 11 lat wykorzystywały do obsługi listy nazw miesięcy w dopełniaczu funkcjonalność alternatywnych cyfr. To rozwiązanie zostało uznane za bardzo nieeleganckie i usunięto je; ponadto prawdopodobnie mało kto o nim wiedział i z tego powodu na szczęście nie było szeroko używane przez rzeczywistych użytkowników.

Ta zmiana została umieszczona w głównym repozytorium kodu źródłowego zaledwie 10 dni przed ostatecznym wydaniem, dlatego nie wystarczyło czasu na dodanie większej ilości języków. Jednak następna wersja będzie zawierała zaktualizowane dane lokalizacyjne dla czeskiego, katalońskiego i innych języków.

Nowe języki

Jak każda wersja, także i ta zawiera nowe języki. Tym razem jest ich 6: kabylski, karbi, język kreolski Mauritiusa, miskito, szan, i yau (zwany także uruwa), a ponadto 3 nowe warianty języków: angielski dla Seszeli, bhodźpuri dla Nepaluwalencki (odmiana katalońskiego).

Kabylski to język używany przez ok. 5 mln osób w Algierii, co czyni go trzecim najczęściej używanym językiem w tym kraju. Karbi jest używany przez ok. 400 tys. osób w północno-wschodnich Indiach i północno-wschodnim Bangladeszu. Język kreolski jest najpopularniejszym językiem na Mauritiusie (ok. 1 miliona użytkowników). Miskito jest językiem używanym przez ok. 150 tys. rdzennych mieszkańców Nikaragui i Hondurasu. Język szan jest używny przez ponad 3 mln osób w Mjanmie, jest to drugi najpopularniejszy język w tym kraju. Yau jest najmniejszym językiem dodanym w tej wersji, jest używany przez ok. 1700 osób w Papui-Nowej Gwinei.

Angielskiego nie trzeba przedstawiać: oczywiście jest obecny w przemyśle komputerowym od zawsze. Jest także oficjalnym językiem Seszeli, obok francuskiego i kreolskiego seszelskiego. Bhodźpuri jest trzecim najpopularniejszym językiem Nepalu (używa go 6% ludności). Jest także używany w Indiach i jako taki był już wcześniej obsługiwany przez glibc. Język walencki (ca_ES@valencia) jest używany przez ok. 2,3 miliona osób w Walencji, wspólnocie autonomicznej w Hiszpanii. Już wcześniej od wielu lat był obsługiwany przez niektóre dystrybucje Linuksa w postaci nieoficjalnych łatek. Od tej pory jest oficjalnie obsługiwany przez glibc.

Wiele małych poprawek

W tej wersji wprowadzono też wiele wiele innych drobnych poprawek. W wielu językach poprawiono odpowiedzi taknie (ang. yes/no) oraz ich jednoliterowe skróty. Języki: chiński, japoński i koreański akceptują jako poprawne odpowiedzi także szerokie wersje znaków YN. Usunięto niektóre niepotrzebnie powtarzające się dane, na przykład wszystkie dane monetarne dla wszystkich języków Indii są teraz dynamicznie kopiowane z hinduskiego. Jeśli w przyszłości zostaną znalezione jakieś błędy albo wprowadzone zmiany, łatwiej będzie poprawić jeden plik. Pozostałe poprawki w wielu językach dotyczą formatów monetarnych i numerycznych, a także rzadziej używanych danych, takich, jak formaty numerów telefonów, adresów, czy numerów ISBN.

Wreszcie, większość sekwencji Unikodu (postaci: <Uxxxx>, gdzie każdy x oznacza cyfrę szesnastkową) w kodzie źródłowym danych lokalnych — tam, gdzie to było możliwe — zostało zastąpionych znakami ASCII. Teraz już nikt nie pamięta dlaczego te sekwencje były potrzebne, ale okazało się, że zwykłe znaki ASCII działają doskonale. Oczywiście, znaki spoza standardowego zestawu ASCII nadal pozostały jako sekwencje Unikodu.