ukraine 2.0.0

Glory to Ukraine. Library for transliterating Ukrainian Cyrillic text into Latin script representation
Documentation
// ukraine-rs — Ukrainian Cyrillic transliteration, numerals and dates.
// Copyright (c) 2022-2026 Mykhailo Krainik <https://github.com/mykhailokrainik>
//
// This program is free software: you can redistribute it and/or modify it under
// the terms of the GNU Affero General Public License, version 3, as published by
// the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
// PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License along
// with this program. If not, see <https://www.gnu.org/licenses/>.
//
// SPDX-License-Identifier: AGPL-3.0-only

#[derive(Copy, Clone)]
pub(crate) enum Gender {
    Masculine,
    Feminine,
}

pub(crate) struct Scale {
    pub(crate) gender: Gender,
    pub(crate) forms: [&'static str; 3], // one, few, many
}

pub(crate) const UNITS: [&str; 10] = [
    "нуль",
    "один",
    "два",
    "три",
    "чотири",
    "п'ять",
    "шість",
    "сім",
    "вісім",
    "дев'ять",
];

pub(crate) const UNITS_FEMININE: [&str; 10] = [
    "нуль",
    "одна",
    "дві",
    "три",
    "чотири",
    "п'ять",
    "шість",
    "сім",
    "вісім",
    "дев'ять",
];

pub(crate) const TEENS: [&str; 10] = [
    "десять",
    "одинадцять",
    "дванадцять",
    "тринадцять",
    "чотирнадцять",
    "п'ятнадцять",
    "шістнадцять",
    "сімнадцять",
    "вісімнадцять",
    "дев'ятнадцять",
];

pub(crate) const TENS: [&str; 10] = [
    "",
    "",
    "двадцять",
    "тридцять",
    "сорок",
    "п'ятдесят",
    "шістдесят",
    "сімдесят",
    "вісімдесят",
    "дев'яносто",
];

pub(crate) const HUNDREDS: [&str; 10] = [
    "",
    "сто",
    "двісті",
    "триста",
    "чотириста",
    "п'ятсот",
    "шістсот",
    "сімсот",
    "вісімсот",
    "дев'ятсот",
];

pub(crate) const SCALES: [Scale; 4] = [
    Scale {
        gender: Gender::Feminine,
        forms: ["тисяча", "тисячі", "тисяч"],
    },
    Scale {
        gender: Gender::Masculine,
        forms: ["мільйон", "мільйони", "мільйонів"],
    },
    Scale {
        gender: Gender::Masculine,
        forms: ["мільярд", "мільярди", "мільярдів"],
    },
    Scale {
        gender: Gender::Masculine,
        forms: ["трильйон", "трильйони", "трильйонів"],
    },
];