Skip to main content

django-polish-inflection

CI License: BSD-2-Clause

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 pytajne kogo_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.

Odmieniarka — przykładowy projekt: pełna tabela odmiany przez przypadki
Przykładowy projekt „Odmieniarka" — pełna tabela odmiany przez przypadki wprost w przeglądarce.

Support graciously provided by

IPLweb

Instalacja

pip install django-polish-inflection

Dodaj do INSTALLED_APPS:

INSTALLED_APPS = [
    ...,
    "django_polish_inflection",
]

Użycie

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

{% 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.

Odmiana fraz wielowyrazowych (nazw własnych instytucji)

{% 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).

Ustawienia

# settings.py
POLISH_INFLECTION_STRICT = False  # domyślnie
  • False (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 podnosi polish_inflection.BrakOdmiany. Przydatne w testach/CI.

Nadpisania fraz (POLISH_INFLECTION_PHRASE_OVERRIDES)

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.

Przykładowy projekt

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.

Zakres

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.

Licencja

BSD 2-Clause — patrz LICENSE. Copyright © 2026 Michał Pasternak.

Release files for django-polish-inflection 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-polish-inflection 0.1.1
File Size Uploaded
django_polish_inflection-0.1.1.tar.gz 191.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-polish-inflection 0.1.1
File Interpreter ABI Platform
django_polish_inflection-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 201.1 kB

Release files / django_polish_inflection-0.1.1.tar.gz

Download URL django_polish_inflection-0.1.1.tar.gz
Size 191.9 kB
Tags Source
SHA-256 checksum
How to use checksums
42fa3d2d09a63e68bce1464d6cb5e13a5e257a752e45ad52e6e18faab6d5f822
BLAKE2b-256 checksum
How to use checksums
862a18d426e30c3ab185046dd33d6c3a37f7e6203b1cf1dc89c4046088795d6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / django_polish_inflection-0.1.1-py3-none-any.whl

Download URL django_polish_inflection-0.1.1-py3-none-any.whl
Size 9.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f989f8f9a8ef976c62b0af3075cdf21c6cc76c0a0176619c0bbc7c557f2e2cd
BLAKE2b-256 checksum
How to use checksums
7100acbaf0e55638bdabe67e9103ba742d5a955c4483cff306e977928756a05b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page