Metadata-Version: 2.4
Name: translitua
Version: 2.0
Summary: Official transliteration for Ukrainian and russian languages
Author-email: dchaplinsky <chaplinsky.dmitry@gmail.com>, enagorny <ideviantik@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/dchaplinsky/translit-ua
Project-URL: Issues, https://github.com/dchaplinsky/translit-ua/issues
Keywords: ukrainian,transliteration,romanization,latinization
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Natural Language :: Ukrainian
Classifier: Natural Language :: Russian
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
Classifier: Topic :: Text Processing
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Dynamic: license-file

# translit-ua

[![Tests](https://github.com/dchaplinsky/translit-ua/actions/workflows/tests.yml/badge.svg)](https://github.com/dchaplinsky/translit-ua/actions/workflows/tests.yml)
[![PyPI](https://img.shields.io/pypi/v/translitua.svg)](https://pypi.org/project/translitua/)


Transliteration (romanization, latinization) for Ukrainian and russian languages with various transliteration tables (including official ones).
Translit-ua has 17 transliteration tables for the Ukrainian language:

- UkrainianKMU (National 2010, most recent one approved by The Cabinet)
- UkrainianSimple (Simple one)
- UkrainianWWS (WWS or Woodrow Wilson School or Scholarly)
- UkrainianBritish (British Standard)
- UkrainianBGN (BGN/PGGN 1965 System, United States Board on Geographic Names/Permanent Committee on Geographical Names)
- UkrainianISO9 (ISO 9, from International Organization for Standardization)
- UkrainianFrench (Jean Girodet (1976), Dictionnaire de la langue française)
- UkrainianGerman ((2000) Duden, v 22, Mannheim: Dudenverlag.)
- UkrainianGOST1971 (The Soviet Union's GOST from 1971)
- UkrainianGOST1986 (The Soviet Union's GOST from 1986)
- UkrainianPassport2007 (Used in Ukrainian passport in 2007-2010)
- UkrainianNational1996 (Codified by Committee on Issues of Legal Terminology in 1996)
- UkrainianPassport2004Alt (Yet another alternative that was sometimes used in Ukrainian passports in 2004-2007)
- UkrainianDSTU9112A (DSTU 9112:2021 system A with diacritics — the current State Standard of Ukraine, approved 2022, based on modified ISO 9:1995)
- UkrainianDSTU9112B (DSTU 9112:2021 system B, ASCII digraphs — same standard, goes back to Maksym Vakulenko's 1995 Derzhstandart system)
- UkrainianALALC (ALA-LC, the American Library Association / Library of Congress standard used in library catalogs, with ligature ties)
- UkrainianALALCModified (simplified ALA-LC without diacritics, as commonly used in English-language academic publishing)

Aliases: `UkrainianBGN2019` and `UkrainianUNGEGN` point to `UkrainianKMU` — the 2019 BGN/PCGN agreement and the 2012 UNGEGN resolution both adopted the Ukrainian national (2010) system as-is. The `UkrainianBGN` table is the older 1965 system they superseded.

Translit-ua also has 11 transliteration tables for the russian language:

- RussianGOST2006 (The Russian Federation's GOST from 2006)
- RussianSimple (Simple one)
- RussianICAO (DOC9303 from ICAO, International Civil Aviation Organization)
- RussianTelegram (Russian standard for international telegrams from 2001)
- RussianInternationalPassport1997 (One that was used for international passports 1997-2010)
- RussianInternationalPassport1997Reduced (Same as above but with reduction of yy to y)
- RussianDriverLicense (One that has been used for driver licenses since 2000)
- RussianISOR9Table2 (ISO/R 9 (1968), table 2)
- RussianISO9SystemA (ISO 9:1995, System A, one with diacritics)
- RussianISO9SystemB (ISO 9:1995, System B, no diacritics)
- RussianALALC (ALA-LC, the American Library Association / Library of Congress standard, with ligature ties)


The minor difference in those tables is that the common apostrophe sign ' is used in every table.

For convenience, all Ukrainian tables are listed in ALL_UKRAINIAN variable, and all russian tables are listed in ALL_RUSSIAN variable. In ALL_TRANSLITERATIONS variable, you might find the complete list of tables.

Translit-ua works with Python 3.9+ (CPython and PyPy) and has good doctests coverage.

## Installation

Install from PyPI.

```bash
$ pip install translitua
```

## Usage

```python

    >>> from translitua import translit, RussianSimple

    >>> translit(
        u"""Берег моря. Чути розбещенi крики морських птахiв, ревiння моржа,
    а також iншi звуки, iздаваємиє різною морською сволотою. Входить Гамлєт,
    вдягнутий в зручну приємну товстовку і такі ж самі парусинові штани.
    Гамлєт красиво підперезаний вузеньким шкіряним пояском.
    Він босий, бородатий і пацаватий. В руках у нього дебелий дрючок.
    """)
    u'Bereh moria. Chuty rozbeshcheni kryky morskykh ptakhiv, revinnia morzha,\na takozh inshi zvuky, izdavaiemyie riznoiu morskoiu svolotoiu. Vkhodyt Hamliet,\nvdiahnutyi v zruchnu pryiemnu tovstovku i taki zh sami parusynovi shtany.\nHamliet krasyvo pidperezanyi vuzenkym shkirianym poiaskom.\nVin bosyi, borodatyi i patsavatyi. V rukakh u noho debelyi driuchok.\n'

    >>> translit(
        u"""Не выходи из комнаты, не совершай ошибку.
    Зачем тебе Солнце, если ты куришь Шипку?
    За дверью бессмысленно все, особенно - возглас счастья.
    Только в уборную - и сразу же возвращайся.""", RussianSimple
    )
    u"Ne vyhodi iz komnaty, ne sovershaj oshibku.\nZachem tebe Solntse, esli ty kurish' Shipku?\nZa dver'ju bessmyslenno vse, osobenno - vozglas schast'ja.\nTol'ko v ubornuju - i srazu zhe vozvraschajsja."
```

More about [Ukrainian transliteration](https://en.wikipedia.org/wiki/Romanization_of_Ukrainian)

More about [Russian transliteration](https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B0%D0%BB%D1%84%D0%B0%D0%B2%D0%B8%D1%82%D0%B0_%D0%BB%D0%B0%D1%82%D0%B8%D0%BD%D0%B8%D1%86%D0%B5%D0%B9)

## Changelog

**2.0**
- New tables: DSTU 9112:2021 systems A and B (the current State Standard of Ukraine, validated against the [uklatn](https://github.com/paiv/uklatn) reference implementation), ALA-LC for Ukrainian (full and simplified) and russian, plus BGN/PCGN 2019 / UNGEGN aliases
- Modern packaging (`pyproject.toml`), Python 3.9+ only, `py.typed` type hints
- Dropped Python 2 compatibility shims; behavior and tables unchanged
- Doctests run on GitHub Actions against CPython 3.9-3.13 and PyPy
- Releases publish to PyPI from tags via trusted publishing
