Computer Keyboard - Głównie JavaScript

Głównie JavaScript

by Jakub T. Jankiewicz

Rzeczownik przy liczebniku w języku Polskim w JavaScript

Zdjęcie książki na trawie

Do języka JavaScript weszło nowe API, pod przestrzenią nazw Intl, które między innymi dodało obsługę liczb mnogich w różnych językach. Chodzi i odmianę rzeczowników przy odpowiednich licznościach.

Aby użyć tego API tworzymy nową instancje klasy Intl.PluralRules i wywołujemy metodę select z wartością liczbową. Funkcja ta zwraca ciąg znaków. Dla języka Polskiego mamy trzy wartości: „many”, „one” oraz „few”. Poniżej kod, który służy do wyświetlania liczby oraz odpowiedniej formy rzeczownika jabłko.

var arr = new Array(100).fill(0);
var strings = {many: 'jabłek', one: 'jabłko', few: 'jabłka'};
var pr = new Intl.PluralRules('pl-PL');
for (var i in arr) {
    console.log(i + ' ' + strings[pr.select(i)]);
}

Matematyka za obliczeniami odpowiedniej formy, jest taka sama jakiej używa się w bibliotece gettext, czyli:

(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)

Jeśli chodzi o język polski to ciąg znaków „few” dla liczby 94 może nie jest do końca trafny, ale nie mniej dodatek jest użyteczny. Może to nie jest jakieś strasznie skomplikowane, aby obliczać to samemu, ale kod może się dość skomplikować, jeśli zajdzie potrzeba użycia kilku języków. Dodatkowo nie trzeba szukać odpowiedniej formuły dla każdego języka.

Ciąg znaków przekazywany do konstruktora Intl.PluralRules jest w formacie BCP 47. Więcej o tym API można znaleźć na stronie MDN.

źródło strony (aby zobaczyć kod na GitHubie, musisz kliknąć przycisk raw)
Komentarze

Hasło, które podasz umożliwi ponowne zalogowanie się i np. usunięcie komentarza, jest dobrowolne. Email jest szyfrowany i używany do wysyłania powiadomień o odpowiedziach do komentarzy oraz do pobierania awatara dzięki usłudze Gravatar.com.