Skip to content
smilingDima edited this page Dec 25, 2023 · 1 revision

ru (Russian)

Arguments:

  • to:
    • cardinal (default) - количественное
    • ordinal - порядковое
    $ num2words(123, lang='ru')
    сто двадцать три
    $ num2words(1, lang='ru', to='ordinal')
    первый
    $ num2words(136, lang='ru', to='ordinal')
    сто тридцать шестой
  • case:
    • n (default) - nominative (именительный падеж)
    • g - genitive (родительный падеж)
    • d - dative (дательный падеж)
    • a - accusative (винительный падеж)
    • i - instrumental (творительный падеж)
    • p - prepositional (предложный падеж)
    $ num2words(1, lang='ru', case='g')
    одного
    $ num2words(122, lang='ru', case='d')
    ста двадцати двум
  • plural:
    • True - prural (множественное число)
    • False (default) - singular (единственное число)
    $ num2words(1, lang='ru', case='a', plural=True, animate=False)
    одни
  • gender:
    • m (default) - masculine (мужской род)
    • f - feminine (женский род)
    • n - neuter (средний род)
    $ num2words(1, lang='ru', to='ordinal', gender='f')
    первая
    $ num2words(-1, lang='ru', gender='f')
    минус одна
    $ num2words(23, lang='ru', to='ordinal', gender='n')
    двадцать третье
    $ num2words(125.1, lang='ru', gender='n')
    сто двадцать пять целых одна десятая
    $ num2words(1000, lang='ru', to='ordinal', gender='n')
    тысячное
  • animate: affects only with the accusative case (имеет значение только в винительном падеже)
    • True (default) - animate (одушевленное)
    • False - inanimate (неодушевленное)
    $ num2words(2, lang='ru', case='a', gender='f', animate=True)
    двух
    $ num2words(2, lang='ru', case='a', gender='f', animate=False)
    две

Additional features

  1. Useful pluralize function:
def pluralize(n, forms):
    """
    Returns appropriate form of item that should be after its quantity
    :param n: number of items
    :param forms: array of 3 forms for 1, 2 and 5 counts ('яблоко', 'яблока', 'яблок')
    :returns 
    """
    if n % 100 in (11, 12, 13, 14):
        return forms[2]
    if n % 10 == 1:
        return forms[0]
    if n % 10 in (2, 3, 4):
        return forms[1]
    return forms[2]

Example:

> pluralize(1, ['яблоко', 'яблока', 'яблок'])
яблоко
> pluralize(2, ['яблоко', 'яблока', 'яблок'])
яблока
> pluralize(5, ['яблоко', 'яблока', 'яблок'])
яблок
> num2words(100, lang='ru') + pluralize(100, ['яблоко', 'яблока', 'яблок'])
сто яблок
> num2words(101, lang='ru') + pluralize(101, ['яблоко', 'яблока', 'яблок'])
сто одно яблоко
> num2words(102, lang='ru') + pluralize(102, ['яблоко', 'яблока', 'яблок'])
сто два яблока
  1. Decimal feature:
$ num2words(5.10, lang='ru')
пять целых одна десятая
$ num2words("5.10", lang='ru')
пять целых десять сотых
Clone this wiki locally