Skip to main content

Cienka warstwa Django (template tagi i filtry) nad polish-inflection — odmiana rzeczowników przez przypadki.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_polish_inflection-0.1.0.tar.gz (191.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_polish_inflection-0.1.0-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

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

Hashes for django_polish_inflection-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8dad5539a323d12faa7910dc6b9ad2677563b12418420c2e77f580f1fb3139a4
MD5 491236b16fe1e5c189e6d810f1c6854e
BLAKE2b-256 34186ffa24109e2b5454da33a6f0133708d276f07be678047e0a454d17f36ed3

See more details on using hashes here.

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

Hashes for django_polish_inflection-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b968f6d8f6beedc00900d7b88fd760fba83c76d62b593961e56b743e6596f96c
MD5 ab47eb924b339141b8683f217d771eac
BLAKE2b-256 4cc631368656d2c02cacbc0f6008d520abddce1cd3619970c806da74bc6fbb99

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page