Cienka warstwa Django (template tagi i filtry) nad polish-inflection — odmiana rzeczowników przez przypadki.
Project description
django-polish-inflection
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
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 podnosipolish_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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_polish_inflection-0.1.0.tar.gz.
File metadata
- Download URL: django_polish_inflection-0.1.0.tar.gz
- Upload date:
- Size: 191.7 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8dad5539a323d12faa7910dc6b9ad2677563b12418420c2e77f580f1fb3139a4
|
|
| MD5 |
491236b16fe1e5c189e6d810f1c6854e
|
|
| BLAKE2b-256 |
34186ffa24109e2b5454da33a6f0133708d276f07be678047e0a454d17f36ed3
|
File details
Details for the file django_polish_inflection-0.1.0-py3-none-any.whl.
File metadata
- Download URL: django_polish_inflection-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b968f6d8f6beedc00900d7b88fd760fba83c76d62b593961e56b743e6596f96c
|
|
| MD5 |
ab47eb924b339141b8683f217d771eac
|
|
| BLAKE2b-256 |
4cc631368656d2c02cacbc0f6008d520abddce1cd3619970c806da74bc6fbb99
|