Cienka warstwa Django (template tagi i filtry) nad
polish-inflection —
odmiana polszczyzny wprost w szablonach Django, oparta o słownik SGJP:
- rzeczowniki przez wszystkie przypadki i obie liczby (
odmien, aliasy pytajnekogo_czego/komu_czemu/…), - frazy wielowyrazowe (nazwy własne instytucji, np. „Uniwersytet
Lubelski") —
odmien_fraze, - przymiotniki wg rodzaju głowy —
odmien_przymiotnik, - dobór formy wg liczebnika (1 wydział / 2 wydziały / 5 wydziałów) —
odmiana_liczebnikowa.
Przykładowy projekt „Odmieniarka" — pełna tabela odmiany przez przypadki wprost w przeglądarce.
Support graciously provided by

pip install django-polish-inflectionDodaj do INSTALLED_APPS:
INSTALLED_APPS = [
...,
"django_polish_inflection",
]Wczytaj bibliotekę tagów raz na szablon przez {% load polish_inflection %} — od
tej chwili masz w szablonie cztery narzędzia: generyczny odmien (dowolny
przypadek), zestaw czytelnych aliasów pytajnych (kogo_czego, komu_czemu, …),
dobór formy wg liczebnika (odmiana_liczebnikowa) i odmianę wielowyrazowych nazw
własnych (odmien_fraze). Większość działa i jako tag {% … %}, i — gdy
wystarczy sam przypadek — jako filtr |…; oba warianty zwracają to samo.
{% load polish_inflection %}Dla przykładowych danych nazwa_jednostki = "wydział" i liczba = 5
(w komentarzach {# → … #} jest wynik renderowania):
Dowolny przypadek — generyczny odmien (w tym mianownik i wołacz, których
aliasów pytajnych brak):
{{ nazwa_jednostki|odmien:"dopelniacz" }}
{# → wydziału #}
{% odmien nazwa_jednostki "dopelniacz" %}
{# → wydziału #}
{% odmien nazwa_jednostki "dopelniacz" liczba="mnoga" %}
{# → wydziałów #}
{% odmien nazwa_jednostki "dopelniacz" as forma %}{{ forma }}
{# → wydziału #}Aliasy pytajne — czytają się jak zdanie, wystawiane automatycznie z
polish_inflection.pytania:
Oto lista pracowników {% kogo_czego nazwa_jednostki %}
{# → Oto lista pracowników wydziału #}
Kliknij przycisk z {% z_kim_z_czym nazwa_jednostki %}
{# → Kliknij przycisk z wydziałem #}
{% komu_czemu nazwa_jednostki liczba="mnoga" %}
{# → wydziałom #}
{% podstawowa_forma "wydziałów" %}
{# → wydział #}Dobór formy wg liczebnika — polska zgoda liczebnikowa (1 wydział / 2 wydziały / 5 wydziałów); numer doklejasz sam:
{{ liczba }} {% odmiana_liczebnikowa nazwa_jednostki liczba %}
{# → 5 wydziałów #}
{% odmiana_liczebnikowa nazwa_jednostki liczba "narzednik" %}
{# → wydziałami #}Frazy wielowyrazowe i przymiotniki — nazwy własne instytucji oraz sam przymiotnik wg rodzaju:
{% odmien_fraze "Uniwersytet Lubelski" "dopelniacz" %}
{# → Uniwersytetu Lubelskiego #}
{{ "Akademia Medyczna"|odmien_fraze:"narzednik" }}
{# → Akademią Medyczną #}
{% odmien_przymiotnik "lubelski" "dopelniacz" "meski" %}
{# → lubelskiego #}Dostępne aliasy pytajne (dokładnie te, które eksportuje zainstalowana wersja
polish_inflection.pytania.__all__ — nowe funkcje upstreamu o zgodnej
sygnaturze (wyraz, *, liczba=None, default=...) pojawiają się tu
automatycznie): kogo_czego, komu_czemu, kogo_co, z_kim_z_czym,
o_kim_o_czym, podstawowa_forma, oraz skróty komu, czemu, z_kim,
z_czym, o_kim, o_czym.
Mianownik i wołacz nie mają aliasu pytajnego (upstream też ich nie ma) —
używaj do nich generycznego {% odmien wyraz "mianownik" %} / "wolacz".
{% odmiana_liczebnikowa wyraz liczba %} zwraca rzeczownik w formie
narzuconej przez liczebnik (polska zgoda liczebnikowa: 1 wydział,
2 wydziały, 5 wydziałów). Liczby słownie nie generuje — numer doklejasz
sam. Rodzaj (w tym męskoosobowy m1, np. 2 studentów a nie 2 studenci) jest
wykrywany automatycznie ze słownika. Opcjonalny trzeci argument to przypadek
frazy (domyślnie mianownik), np. {% odmiana_liczebnikowa wyraz liczba "narzednik" %}
przy liczba=5 zwraca wydziałami (liczebnik „pięcioma" doklejasz sam).
Kolejność argumentów jest jak w pozostałych tagach: wyraz pierwszy.
{% odmien_fraze fraza "przypadek" %} odmienia wielowyrazowe nazwy własne
instytucji — uczelni, wydziałów, instytutów — a nie tylko pojedyncze
rzeczowniki. Silnik rozpoznaje głowę frazy, odmienia ją wraz z uzgadniającymi
się z nią przymiotnikami i zamraża dopełniaczowy ogon. Wymaga
polish-inflection >= 0.5.2.
{% load polish_inflection %}
{# rzeczownik + przymiotnik — odmieniają się razem #}
{% odmien_fraze nazwa_uczelni "dopelniacz" %}
{# "Uniwersytet Lubelski" -> "Uniwersytetu Lubelskiego" #}
{# "Akademia Medyczna" (narzednik) -> "Akademią Medyczną" #}
{# rzeczownik + dopełniacz zależny — odmienia się tylko głowa #}
{% odmien_fraze nazwa_instytutu "dopelniacz" %}
{# "Instytut Technologii Stosowanej" -> "Instytutu Technologii Stosowanej" #}
{# filtr — gdy wystarcza sam przypadek #}
Sprawozdanie {{ nazwa_uczelni|odmien_fraze:"dopelniacz" }}
{# przypisanie do zmiennej #}
{% odmien_fraze nazwa_uczelni "miejscownik" as forma %}Konferencja na {{ forma }}Trafność heurystyki to ok. 85–95% realnych nazw; frazy, których nie łapie (np.
„Instytut Polski" — przymiotnik czy dopełniacz?), nadpisujesz ręcznie warstwą
override (patrz Ustawienia). Liczba mnoga fraz jest obsługiwana
(liczba="mnoga") — przymiotnik uzgadnia się z głową, a zależny ogon
dopełniaczowy pozostaje zamrożony (wymaga polish-inflection >= 0.6.0).
Dostępny jest też niższopoziomowy tag {% odmien_przymiotnik lemat "przypadek" "rodzaj" %} (rodzaj: "meski" / "zenski" / "nijaki"), użyteczny gdy
składasz formę samodzielnie:
{% odmien_przymiotnik "lubelski" "dopelniacz" "meski" %} {# lubelskiego #}
{% odmien_przymiotnik "stosowany" "dopelniacz" "zenski" %} {# stosowanej #}odmien_przymiotnik ma wymagany argument rodzaj, więc — jak
odmiana_liczebnikowa — jest tylko tagiem (filtr Django przyjmuje jeden
argument).
# settings.py
POLISH_INFLECTION_STRICT = False # domyślnieFalse(domyślnie): nieznane słowo w słowniku SGJP nigdy nie wywala renderowania strony — tag/filtr zwraca oryginalne słowo bez zmian.True: nieznane słowo podnosipolish_inflection.BrakOdmiany. Przydatne w testach/CI.
Zawór bezpieczeństwa dla fraz, których heurystyka {% odmien_fraze %} nie
rozstrzyga poprawnie. Mapa {(fraza, "przypadek"): "gotowa forma"} jest
konsultowana przed silnikiem — jeśli para pasuje, zwracana jest ręczna
forma, w przeciwnym razie działa silnik.
# settings.py
POLISH_INFLECTION_PHRASE_OVERRIDES = {
# silnik heurystycznie daje „Instytutu Polski" (czyta jako dopełniacz);
# wymuszamy czytanie przymiotnikowe:
("Instytut Polski", "dopelniacz"): "Instytutu Polskiego",
("Instytut Polski", "miejscownik"): "Instytucie Polskim",
}- Klucz przypadka to ten sam przyjazny string, którego używasz w tagu
(
"dopelniacz","miejscownik", …). - Dopasowanie frazy ignoruje nadmiarowe białe znaki (trim + collapse spacji); wielkość liter jest znacząca.
- Nadpisanie dotyczy liczby pojedynczej (klucz nie zawiera liczby); przy
liczba="mnoga"używany jest silnik.
W katalogu example_project/ jest gotowy do uruchomienia
projekt Django („Odmieniarka"): wpisujesz słowo lub nazwę własną, a strona
generuje pełną tabelę odmiany przez przypadki (l.poj. i l.mn.), łącznie z
działającą warstwą override. Uruchomienie (z korzenia repo, uv sam ogarnia
zależności): uv run python example_project/manage.py runserver.
Ten pakiet odmienia pojedyncze rzeczowniki pospolite obecne w słowniku SGJP (np. "wydział", "uczelnia", "instytut") przez wszystkie przypadki i obie liczby.
Odmiana wielowyrazowych nazw własnych instytucji (np. "Uniwersytet Lubelski")
jest dostępna heurystycznie przez {% odmien_fraze %} (patrz wyżej) — wymaga
polish-inflection >= 0.5.2.
Dobór formy rzeczownika wg liczebnika (1 wydział / 2 wydziały / 5 wydziałów)
jest dostępny przez {% odmiana_liczebnikowa %} (patrz wyżej) — wymaga
polish-inflection >= 0.3.0.
BSD 2-Clause — patrz LICENSE. Copyright © 2026 Michał Pasternak.