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.
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| django_polish_inflection-0.1.1.tar.gz | 191.9 kB | Without provenance | Details for django_polish_inflection-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| django_polish_inflection-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for django_polish_inflection-0.1.1-py3-none-any.whl |
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}
|
Security for django-polish-inflection 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.