Repository: joke2k/faker

Issue:
Implementation of person id number for cs_CZ - Czech (rodné číslo)
Can you implement randomizer which will generate a proper person ID number (rodné číslo) for Czech local?

Discussion:

Patch:
diff --git a/faker/providers/address/ru_RU/__init__.py b/faker/providers/address/ru_RU/__init__.py
index ee51c73c..bed66a67 100644
--- a/faker/providers/address/ru_RU/__init__.py
+++ b/faker/providers/address/ru_RU/__init__.py
@@ -11,7 +11,7 @@ class Provider(AddressProvider):
                               '{{street_name}}, д. {{building_number}} стр. {{building_number}}')
     address_formats = ('{{city}}, {{street_address}}, {{postcode}}', )
     postcode_formats = ('######',)
-    building_number_formats = ('###', '##', '#', '#/#')
+    building_number_formats = ('%##', '%#', '%', '%/%')
 
     city_prefixes = ('г.', 'п.', 'к.', 'с.', 'д.', 'клх', 'ст.')
 
@@ -131,21 +131,22 @@ class Provider(AddressProvider):
         '1 Мая', '9 мая', 'Тукая',
     )
 
-    street_titles_irregular_masc = (
-        'Полевой', 'Луговой', 'Степной', 'Заводской', 'Береговой',
-        'Речной', 'Трудовой', 'Ключевой', 'Мостовой', 'Кольцевой',
-        'Боровой', 'Донской', 'Морской', 'Сенной', 'Прудовой',
-        'Большрй', 'Окружной', 'Хуторской', 'Логовой', 'Моховой',
-        'Угловой', 'Слободской', 'Путевой', 'Городской', 'Рабочий',
-        'Верхний', 'Тихий', 'Широкий', 'Нижний', 'Дальний',
-        'Крайний', 'Казачий', 'Весенний', 'Средний', 'Короткий',
-        'Осенний', 'Проезжий', 'Высокий',
-    )
+    street_titles_irregular_masc = {
+        'Полевая': 'Полевой', 'Луговая': 'Луговой', 'Степная': 'Степной', 'Заводская': 'Заводской',
+        'Береговая': 'Береговой', 'Речная': 'Речной', 'Трудовая': 'Трудовой', 'Ключевая': 'Ключевой',
+        'Мостовая': 'Мостовой', 'Кольцевая': 'Кольцевой', 'Боровая': 'Боровой', 'Донская': 'Донской',
+        'Морская': 'Морской', 'Сенная': 'Сенной', 'Прудовая': 'Прудовой', 'Большая': 'Большой',
+        'Окружная': 'Окружной', 'Хуторская': 'Хуторской', 'Логовая': 'Логовой', 'Моховая': 'Моховой',
+        'Угловая': 'Угловой', 'Слободская': 'Слободской', 'Путевая': 'Путевой', 'Городская': 'Городской',
+        'Рабочая': 'Рабочий', 'Верхняя': 'Верхний', 'Тихая': 'Тихий', 'Широкая': 'Широкий', 'Нижняя': 'Нижний',
+        'Дальняя': 'Дальний', 'Крайняя': 'Крайний', 'Казачья': 'Казачий', 'Весенняя': 'Весенний', 'Средняя': 'Средний',
+        'Короткая': 'Короткий', 'Осенняя': 'Осенний', 'Проезжая': 'Проезжий', 'Высокая': 'Высокий',
+    }
 
-    street_titles_irregular_neu = (
-        'Весеннее', 'Верхнее', 'Нижнее', 'Среднее', 'Дальнее',
-        'Крайнее', 'Казачье', 'Рабочее', 'Осеннее', 'Проезжее',
-    )
+    street_titles_irregular_neu = {
+        'Весенняя': 'Весеннее', 'Верхняя': 'Верхнее', 'Нижняя': 'Нижнее', 'Средняя': 'Среднее', 'Дальняя': 'Дальнее',
+        'Крайняя': 'Крайнее', 'Казачья': 'Казачье', 'Рабочая': 'Рабочее', 'Осеняя': 'Осеннее', 'Проезжая': 'Проезжее',
+    }
 
     city_names = (
         'Абакан', 'Абинск', 'Агата', 'Агинское (Забайк.)', 'Адлер', 'Адыгейск',
@@ -358,18 +359,14 @@ class Provider(AddressProvider):
 
     def region(self):
         regions_suffix = self.random_element(self.region_suffixes)
-        region_name = ''
-        result = region_name + ' ' + regions_suffix
         if regions_suffix == 'респ.':
-            region_name = self.random_element(self.region_republics)
-            result = regions_suffix + ' ' + region_name
+            return regions_suffix + ' ' + self.random_element(self.region_republics)
         elif regions_suffix == 'край':
-            region_name = self.random_element(self.region_krai)
+            return self.random_element(self.region_krai) + ' ' + regions_suffix
         elif regions_suffix == 'обл.':
-            region_name = self.random_element(self.region_oblast)
+            return self.random_element(self.region_oblast) + ' ' + regions_suffix
         elif regions_suffix == 'АО':
-            region_name = self.random_element(self.region_ao)
-        return result
+            return self.random_element(self.region_ao) + ' ' + regions_suffix
 
     def street_suffix(self):
         return self.random_element(self.street_suffixes)
@@ -381,16 +378,18 @@ class Provider(AddressProvider):
         suffix = self.street_suffix()
         street = self.street_title()
         stem = street[:-2]
-        inflexion = ''
         result = street
-        if street not in self.street_titles_noflex:
-            if not (suffix in self.street_suffixes_fem and (stem in self.street_titles_irregular_masc
-                                                            or stem in self.street_titles_irregular_neu)):
-                if suffix in self.street_suffixes_masc:
-                    result = stem + inflexion
-                    inflexion = 'ый'
+        if street not in self.street_titles_noflex and suffix not in self.street_suffixes_fem:
+            if suffix in self.street_suffixes_masc:
+                if street in self.street_titles_irregular_masc.keys():
+                    result = self.street_titles_irregular_masc[street]
+                else:
+                    result = stem + 'ый'
                     if stem.endswith('ск') or stem.endswith('цк'):
-                        inflexion = 'ий'
-                elif suffix in self.street_suffixes_neu:
-                    inflexion = 'ое'
+                        result = stem + 'ий'
+            elif suffix in self.street_suffixes_neu:
+                if street in self.street_titles_irregular_neu.keys():
+                    result = self.street_titles_irregular_neu[street]
+                else:
+                    result = stem + 'ое'
         return suffix + ' ' + result
diff --git a/faker/providers/automotive/ru_RU/__init__.py b/faker/providers/automotive/ru_RU/__init__.py
index ab9456b6..9bfdd7f0 100644
--- a/faker/providers/automotive/ru_RU/__init__.py
+++ b/faker/providers/automotive/ru_RU/__init__.py
@@ -197,18 +197,30 @@ class Provider(AutomotiveProvider):
     )
 
     license_plate_formats = (
-        '{{plate_letter}}###{{plate_letter}}{{plate_letter}}{{plate_suffix}}',
-        '{{plate_letter}}{{plate_letter}}###{{plate_suffix}}',
-        '{{plate_letter}}{{plate_letter}}####{{plate_suffix}}',
-        '####{{plate_letter}}{{plate_letter}}{{plate_suffix}}',
-        '###CD#{{plate_suffix}}',
-        '###D###{{plate_suffix}}',
-        '###T###{{plate_suffix}}',
-        '{{plate_letter}}####{{plate_suffix}}',
-        '###{{plate_letter}}{{plate_suffix}}',
-        '####{{plate_letter}}{{plate_suffix}}',
-        'K{{plate_letter}}{{plate_letter}}###{{plate_suffix}}',
-        'C{{plate_letter}}{{plate_letter}}###{{plate_suffix}}',
+        # Private vehicle plate
+        '{{plate_letter}}{{plate_number}}{{plate_letter}}{{plate_letter}} {{plate_suffix}}',
+        # Public transport plate
+        '{{plate_letter}}{{plate_letter}}{{plate_number}} {{plate_suffix}}',
+        # Trailer plate
+        '{{plate_letter}}{{plate_letter}}{{plate_number_extra}} {{plate_suffix}}',
+        # Police forces vehicle plate
+        '{{plate_letter}}{{plate_number_extra}} {{plate_suffix}}',
+        # Military vehicle plate
+        '{{plate_number_extra}}{{plate_letter}}{{plate_letter}} {{plate_suffix}}',
+        # Diplomatic vehicles
+        '{{plate_number_special}} {{plate_suffix}}',
+    )
+
+    plate_number_formats = (
+        '###',
+    )
+
+    plate_extra_formats = (
+        '####',
+    )
+
+    plate_special_formats = (
+        '00#CD#', '00#D###', '00#T###',
     )
 
     def license_plate(self):
@@ -218,8 +230,17 @@ class Provider(AutomotiveProvider):
     def plate_letter(self):
         return self.random_element(self.license_plate_letters)
 
+    def plate_number(self):
+        return self.numerify(self.random_element(self.plate_number_formats))
+
+    def plate_number_extra(self):
+        return self.numerify(self.random_element(self.plate_extra_formats))
+
+    def plate_number_special(self):
+        return self.numerify(self.random_element(self.plate_special_formats))
+
     def plate_suffix(self):
-        return self.random_element(self.license_plate_letters)
+        return self.random_element(self.license_plate_suffix)
 
     def vehicle_category(self):
         return self.random_element(self.vehicle_categories)
diff --git a/faker/providers/bank/ru_RU/__init__.py b/faker/providers/bank/ru_RU/__init__.py
new file mode 100644
index 00000000..affe1a9c
--- /dev/null
+++ b/faker/providers/bank/ru_RU/__init__.py
@@ -0,0 +1,156 @@
+from .. import Provider as BankProvider
+
+
+class Provider(BankProvider):
+    country_code = 'RU'
+
+    """
+    See https://ru.wikipedia.org/wiki/Коды_субъектов_Российской_Федерации
+    """
+    region_codes = (
+        '01', '03', '04', '05', '07', '08', '10', '11', '12', '14', '15', '17', '18', '19', '20', '22',
+        '24', '25', '26', '27', '28', '29', '30', '32', '33', '34', '35', '36', '37', '38', '40', '41',
+        '42', '44', '45', '46', '47', '49', '50', '52', '53', '54', '56', '57', '58', '60', '61', '63',
+        '64', '65', '66', '67', '68', '69', '70', '71', '73', '75', '76', '77', '78', '79', '80', '81',
+        '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97',
+        '98', '99', '111', '118', '7110', '718', '7114', '719',
+    )
+
+    department_code_formats = (
+        '0#', '1#', '2#', '3#', ' 4#', '5#', '6#', '7#', '8#', '9#',
+    )
+
+    credit_organization_code_formats = (
+        '05#', '06#', '07#', '08#', '09#', '1##', '2##', '3##', '4##', '5##', '6##', '7##', '8##', '9##',
+    )
+
+    checking_account_codes = [str(i) for i in range(102, 110)] + ['203', '204'] + [str(i) for i in range(301, 330)] + \
+                             [str(i) for i in range(401, 409)] + [str(i) for i in range(411, 426)] + ['430'] + \
+                             [str(i) for i in range(501, 527)]
+
+    organization_codes = (
+        '01', '02', '03', '04',
+    )
+
+    # See https://ru.wikipedia.org/wiki/Общероссийский_классификатор_валют
+    currency_codes = (
+        '008', '012', '032', '036', '044', '048', '050', '051', '052', '060', '064', '068', '072', '084', '090', '096',
+        '104', '108', '116', '124', '132', '136', '144', '152', '156', '170', '174', '188', '191', '192', '203', '208',
+        '214', '222', '230', '232', '238', '242', '262', '270', '292', '320', '324', '328', '332', '340', '344', '348',
+        '352', '356', '360', '364', '368', '376', '388', '392', '398', '400', '404', '408', '410', '414', '417', '418',
+        '422', '426', '430', '434', '440', '446', '454', '458', '462', '478', '480', '484', '496', '498', '504', '512',
+        '516', '524', '532', '533', '548', '554', '558', '566', '578', '586', '590', '598', '600', '604', '608', '634',
+        '643', '646', '654', '678', '682', '690', '694', '702', '704', '706', '710', '728', '748', '752', '756', '760',
+        '764', '776', '780', '784', '788', '800', '807', '810', '818', '826', '834', '840', '858', '860', '882', '886',
+        '894', '901', '931', '932', '933', '934', '936', '937', '938', '940', '941', '943', '944', '946', '947', '948',
+        '949', '950', '951', '952', '953', '959', '960', '961', '962', '963', '964', '968', '969', '970', '971', '972',
+        '973', '975', '976', '977', '978', '980', '981', '985', '986', '997', '998', '999',
+    )
+
+    """
+    The list of Russian banks is based on Central Bank of Russia statistics
+    See http://cbr.ru/credit/coreports/ko17012020.zip
+    """
+    banks = (
+        'Абсолют Банк', 'Авангард', 'Аверс', 'Автоградбанк', 'Автокредитбанк', 'Автоторгбанк', 'Агора',
+        'Агропромкредит', 'Агророс', 'Азиатско-Тихоокеанский Банк', 'Азия-Инвест Банк', 'Айсибиси Банк',
+        'АК Барс', 'Акибанк', 'Акрополь', 'Актив Банк', 'Акцепт', 'Александровский', 'Алеф-Банк', 'Алмазэргиэнбанк',
+        'Алтайкапиталбанк', 'Алтынбанк', 'Альба Альянс', 'Альтернатива', 'Альфа-Банк', 'Америкэн Экспресс Банк',
+        'Апабанк', 'Аресбанк', 'Арзамас', 'Байкалинвестбанк', 'Байкалкредобанк', 'Балаково-Банк', 'Балтинвестбанк',
+        'Банк "Санкт-Петербург"', 'Банк "СКС"', 'Банк 131', 'Банк Берейт', 'Банк Дом.рф',
+        'Банк Жилищного Финансирования', 'Банк Зенит', 'Банк Зенит Сочи', 'Банк Интеза', 'Банк Казани',
+        'Банк Корпоративного Финансирования', 'Банк Кредит Свисс (Москва)', 'Банк Оранжевый', 'Банк Оренбург',
+        'Банк ПСА Финанс Рус', 'Банк Раунд', 'Банк Реалист', 'Банк РМП', 'Банк РСИ', 'Банк СГБ',
+        'Банк Стандарт-Кредит', 'Банк Финам', 'Банк ЧБРР', 'ББР Банк', 'Белгородсоцбанк', 'Бест Эффортс Банк',
+        'Бизнес-Сервис-Траст', 'БКС Банк', 'БМ-Банк', 'БМВ Банк', 'БНП Париба Банк', 'Братский АНКБ', 'Быстробанк',
+        'Бэнк Оф Чайна', 'Вакобанк', 'Великие Луки Банк', 'Венец', 'Веста', 'Викинг', 'Витабанк', 'Вкабанк',
+        'Владбизнесбанк', 'Внешфинбанк', 'Возрождение', 'Вологжанин', 'Восточный', 'ВРБ',
+        'Всероссийский Банк Развития Регионов', 'ВТБ', 'Вуз-Банк', 'Вятич', 'Газнефтьбанк', 'Газпромбанк',
+        'Газтрансбанк', 'Газэнергобанк', 'Гарант-Инвест', 'Генбанк', 'Геобанк', 'Гефест', 'Глобус',
+        'Голдман Сакс Банк', 'Горбанк', 'Гута-Банк', 'Далена', 'Дальневосточный Банк', 'Денизбанк Москва', 'Держава',
+        'Дж.П. Морган Банк Интернешнл', 'Джей Энд Ти Банк', 'Дойче Банк', 'Долинск', 'Дом-Банк', 'Донкомбанк',
+        'Дон-Тексбанк', 'Дружба', 'ЕАТП Банк', 'Евразийский Банк', 'Евроазиатский Инвестиционный Банк', 'Евроальянс',
+        'Еврофинанс Моснарбанк', 'Екатеринбург', 'Енисейский Объединенный Банк', 'Ермак', 'Живаго Банк',
+        'Запсибкомбанк', 'Заречье', 'Заубер Банк', 'Земельный', 'Земский Банк', 'Зираат Банк (Москва)', 'Ижкомбанк',
+        'ИК Банк', 'Икано Банк', 'Инбанк', 'Инвестторгбанк', 'Инг Банк (Евразия)', 'Интерпрогрессбанк',
+        'Интерпромбанк', 'ИРС', 'ИС Банк', 'ИТ Банк', 'Итуруп', 'Ишбанк', 'Йошкар-Ола', 'Калуга',
+        'Камский Коммерческий Банк', 'Капитал', 'Кетовский Коммерческий Банк', 'Киви Банк', 'Классик Эконом Банк',
+        'Кольцо Урала', 'Коммерцбанк (Евразия)', 'Коммерческий Индо Банк', 'Консервативный Коммерческий Банк',
+        'Континенталь', 'Космос', 'Костромаселькомбанк', 'Кошелев-Банк', 'Креди Агриколь Киб', 'Кредит Европа Банк',
+        'Кредит Урал Банк', 'Кремлевский', 'Крокус-Банк', 'Крона-Банк', 'Кросна-Банк', 'КС Банк', 'Кубань Кредит',
+        'Кубаньторгбанк', 'Кузбассхимбанк', 'Кузнецкбизнесбанк', 'Кузнецкий', 'Кузнецкий Мост', 'Курган',
+        'Курскпромбанк', 'Кэб Эйчэнби Банк', 'Ланта-Банк', 'Левобережный', 'Локо-Банк', 'Майкопбанк', 'Майский',
+        'Максима', 'МБА-Москва', 'МВС Банк', 'Мегаполис', 'Международный Финансовый Клуб', 'Мерседес-Бенц Банк Рус',
+        'Металлинвестбанк', 'Металлург', 'Меткомбанк', 'Мидзухо Банк (Москва)', 'Мир Бизнес Банк', 'МКБ', 'Модульбанк',
+        'Морган Стэнли Банк', 'Морской Банк', 'Москва-Сити', 'Московский Индустриальный Банк',
+        'Московский Коммерческий Банк', 'Московский Кредитный Банк', 'Московский Нефтехимический Банк',
+        'Московский Областной Банк', 'Московское Ипотечное Агентство', 'Москоммерцбанк', 'МС Банк Рус', 'МСКБ',
+        'МСП Банк', 'МТИ Банк', 'МТС-Банк', 'Муниципальный Камчатпрофитбанк', 'Нальчик', 'Народный Банк',
+        'Народный Банк Тувы', 'Народный Доверительный Банк', 'Натиксис Банк', 'Национальный Банк Сбережений',
+        'Национальный Инвестиционно-Промышленный', 'Национальный Резервный Банк', 'Национальный Стандарт', 'НБД-Банк',
+        'Невастройинвест', 'Нейва', 'Нефтепромбанк', 'НИБ', 'Нижневолжский Коммерческий Банк', 'Нико-Банк', 'НК Банк',
+        'Новикомбанк', 'Новобанк', 'Новокиб', 'Новый Век', 'Новый Московский Банк', 'Нокссбанк', 'Ноосфера',
+        'Норвик Банк', 'Нордеа Банк', 'НС Банк', 'НФК', 'Объединенный Банк Республики', 'Объединенный Капитал',
+        'Онего', 'Оней Банк', 'Орбанк', 'Оргбанк', 'ОТП Банк', 'Первоуральскбанк', 'Первый Дортрансбанк',
+        'Первый Инвестиционный Банк', 'Первый Клиентский Банк', 'Пересвет', 'Пермь',
+        'Петербургский Социальный Ком. Банк', 'Платина', 'Плюс Банк', 'Пойдём!', 'Почта Банк', 'Почтобанк',
+        'Приморский Территориальный', 'Приморье', 'Примсоцбанк', 'Приобье', 'Прио-Внешторгбанк', 'Прокоммерцбанк',
+        'Проминвестбанк', 'Промсвязьбанк', 'Промсельхозбанк', 'Промтрансбанк', 'Профессионал Банк',
+        'Профессиональный Инвестиционный Банк', 'Прохладный', 'Развитие-Столица', 'Райффайзенбанк',
+        'РБА', 'Ренессанс Кредит', 'Рента-Банк', 'Ресо Кредит', 'Республиканский Кредитный Альянс', 'Ресурс-Траст',
+        'РН Банк', 'Росбанк', 'Росбизнесбанк', 'Росгосстрах Банк', 'Росдорбанк', 'Роскосмосбанк', 'Россельхозбанк',
+        'Российская Финансовая Корпорация', 'Российский Национальный Коммерческий Банк', 'Россита-Банк', 'Россия',
+        'Ростфинанс', 'Росэксимбанк', 'Роял Кредит Банк', 'Руна-Банк', 'Руснарбанк', 'Русский Банк Сбережений',
+        'Русский Региональный Банк', 'Русский Стандарт', 'Русфинанс Банк', 'Русьуниверсалбанк', 'РФИ Банк',
+        'Саммит Банк', 'Санкт-Петербургский Банк Инвестиций', 'Саратов', 'Саровбизнесбанк', 'Сбербанк России',
+        'Связь-Банк', 'СДМ-Банк', 'Севастопольский Морской Банк', 'Северный Морской Путь', 'Северный Народный Банк',
+        'Северстройбанк', 'Севзапинвестпромбанк', 'Сельмашбанк', 'Сервис Резерв', 'Сетелем Банк', 'СИАБ', 'Сибсоцбанк',
+        'Синко-Банк', 'Система', 'Сити Инвест Банк', 'Ситибанк', 'СКБ-Банк', 'Славия', 'Славянбанк',
+        'Славянский Кредит', 'Снежинский', 'Собинбанк', 'Совкомбанк', 'Современные Стандарты Бизнеса', 'Соколовский',
+        'Солид Банк', 'Солидарность', 'Социум-Банк', 'Союз', 'Спецстройбанк', 'Спиритбанк', 'Спутник',
+        'Ставропольпромстройбанк', 'Столичный Кредит', 'Стройлесбанк', 'Сумитомо Мицуи Рус Банк', 'Сургутнефтегазбанк',
+        'СЭБ Банк', 'Таврический Банк', 'Таганрогбанк', 'Тайдон', 'Тамбовкредитпромбанк', 'Татсоцбанк', 'Тексбанк',
+        'Тендер-Банк', 'Тимер Банк', 'Тинькофф Банк', 'Тойота Банк', 'Тольяттихимбанк', 'Томскпромстройбанк', 'Торжок',
+        'Транскапиталбанк', 'Трансстройбанк', 'Траст', 'Тэмбр-Банк', 'Углеметбанк', 'Унифондбанк', 'Уралпромбанк',
+        'Уралсиб', 'Уралфинанс', 'Уральский Банк Реконструкции и Развития', 'Уральский Финансовый Дом', 'УРИ Банк',
+        'Финанс Бизнес Банк', 'Финсервис', 'ФК Открытие', 'Фольксваген Банк Рус', 'Фора-Банк', 'Форбанк', 'Форштадт',
+        'Фридом Финанс', 'Хакасский Муниципальный Банк', 'Химик', 'ХКФ Банк', 'Хлынов', 'Центрально-Азиатский',
+        'Центр-Инвест', 'Центрокредит', 'ЦМРБанк', 'Чайна Констракшн Банк', 'Чайнасельхозбанк', 'Челиндбанк',
+        'Челябинвестбанк', 'Эйч-Эс-Би-Си Банк (РР)', 'Эко-Инвест', 'Экономбанк', 'Экси-Банк', 'Экспобанк',
+        'Экспресс-Волга', 'Элита', 'Эм-Ю-Эф-Джи Банк (Евразия)', 'Энергобанк', 'Энергомашбанк', 'Энерготрансбанк',
+        'Эс-Би-Ай Банк', 'Ю Би Эс Банк', 'Юг-Инвестбанк', 'ЮМК Банк', 'Юникредит Банк', 'Юнистрим', 'Яринтербанк',
+    )
+
+    """
+    BIC is a bank identification code that is used in Russia
+    See https://ru.wikipedia.org/wiki/Банковский_идентификационный_код
+    """
+
+    def bic(self):
+        region = self.random_element(self.region_codes)
+        department_code = self.numerify(self.random_element(self.department_code_formats))
+        credit_organization_code = self.numerify(self.random_element(self.credit_organization_code_formats))
+        return '04' + region + department_code + credit_organization_code
+
+    """
+    Correspondent account is established to handle various financial operations between financial institutions
+    See https://en.wikipedia.org/wiki/Корреспондентский_счёт
+    """
+
+    def correspondent_account(self):
+        credit_organization_code = self.numerify(self.random_element(self.credit_organization_code_formats))
+        return '301' + self.numerify('#' * 14) + credit_organization_code
+
+    """
+    Checking account is used in banks to handle financial operations of clients
+    See https://ru.wikipedia.org/wiki/Расчётный_счёт
+    """
+
+    def checking_account(self):
+        account = self.random_element(self.checking_account_codes)
+        organization = self.random_element(self.organization_codes)
+        currency = self.random_element(self.currency_codes)
+        return account + organization + currency + self.numerify('#' * 12)
+
+    def bank(self):
+        return self.random_element(self.banks)
diff --git a/faker/providers/company/ru_RU/__init__.py b/faker/providers/company/ru_RU/__init__.py
index a515ea76..91bcbb0f 100644
--- a/faker/providers/company/ru_RU/__init__.py
+++ b/faker/providers/company/ru_RU/__init__.py
@@ -18,14 +18,247 @@ class Provider(CompanyProvider):
         '{{company_prefix}} «{{last_name}} {{last_name}}»',
         '{{company_prefix}} «{{last_name}}-{{last_name}}»',
         '{{company_prefix}} «{{last_name}}, {{last_name}} и {{last_name}}»',
-        '{{last_name}}',
+        '{{last_name}} {{company_suffix}}',
+        '{{large_company}}',
     )
 
     company_prefixes = (
-        'РАО', 'АО', 'ИП', 'НПО',
+        'РАО', 'АО', 'ИП', 'НПО', 'ЗАО', 'ООО', 'ОАО',
     )
 
+    company_suffixes = (
+        'Инк', 'Инкорпорэйтед', 'и партнеры', 'Групп', 'Лтд', 'Лимитед',
+    )
+
+    # Source: https://www.rbc.ru/rbc500/
+    large_companies = (
+        'Газпром', 'ЛУКОЙЛ', 'Роснефть', 'Сбербанк России', 'Российские железные дороги', 'Ростех', 'Сургутнефтегаз',
+        'X5 Retail Group', 'ВТБ', 'Магнит', 'САФМАР', 'Росатом', 'Российские сети', 'Интер РАО', 'Транснефть',
+        'Татнефть', 'НОВАТЭК', 'Евраз', 'АФК Система', 'En +', 'НЛМК', 'Норникель', 'ГК Мегаполис', 'Газпромбанк',
+        'Русал', 'Аэрофлот — Российские авиалинии', 'Сибур Холдинг', 'Северсталь', 'СУЭК', 'ММК', 'Группа УГМК',
+        'Мобильные телесистемы', 'Металлоинвест', 'Лента', 'Объединенная авиастроительная корпорация', 'РусГидро',
+        'Сахалин Энерджи', 'Т Плюс', 'Группа М.Видео-Эльдорадо', 'Еврохим', 'ВымпелКом',
+        'Банковский холдинг Альфа-банка', 'Объединенная судостроительная корпорация', 'МегаФон', 'Ростелеком', 'ТМК',
+        'Славнефть', 'Тойота Мотор (Toyota)', 'Мечел', 'Автотор холдинг', 'Стройгазмонтаж', 'Дж.Т.И. Россия (JTI)',
+        'Торговая сеть Красное и Белое', 'АК Алроса', 'Дикси Групп', 'ВЭБ.РФ', 'ФМСМ (PMI)', 'Фольксваген Груп Рус',
+        'АвтоВАЗ', 'Леруа Мерлен Восток (Leroi Merlin)', 'Ашан (Auchan)', 'Россельхозбанк', 'ДНС Групп',
+        'ГК ТНС энерго', 'Протек', 'Группа компаний ПИК', 'Объединенная двигателестроительная корпорация',
+        'Независимая нефтегазовая компания', 'Merlion', 'ФосАгро', 'КМР и СНГ (KIA)', 'Катрен', 'Банк ФК Открытие',
+        'Корпорация Тактическое ракетное вооружение', 'Группа Рольф', 'ТАИФ-НК', 'Трансмашхолдинг',
+        'Метро Кэш энд Керри (Metro Cash & Carry)', 'Мостотрест', 'СОГАЗ', 'Эппл Рус (Apple)', 'Арктикгаз',
+        'Нижнекамскнефтехим', '«Томскнефть» ВНК', 'Зарубежнефть', 'ЕвроСибЭнерго', 'Вертолеты России', 'Группа ГАЗ',
+        'Почта России', 'МУМТ (BAT)', 'Стройтранснефтегаз', 'КамАЗ', 'ФК Пульс', 'Полюс', 'Хендэ Мотор СНГ (Hyundai)',
+        'S7 Group', 'Ямал СПГ', 'Группа Содружество', 'ЧТПЗ', 'Иркутская нефтяная компания', 'Русснефть',
+        'Национальная компьютерная корпорация', 'Мерседес-Бенц Рус (Mercedes-Benz)', 'Русэнергосбыт', 'ОМК',
+        'Уралкалий', 'ГК Ташир', 'Компания Газ-Альянс', 'ФортеИнвест', 'Группа Мэйджор', 'Российская электроника',
+        'ГК СНС', 'Сибирский антрацит', "Группа О'кей", 'Мосинжпроект', 'UCL Holding', 'Группа Илим',
+        'Московский кредитный банк', 'Группа Синара', 'Нефтиса', 'Объединенная компания Связной — Евросеть',
+        'Группа ЛСР', 'Т2 РТК Холдинг', 'НЗНП', 'АльфаСтрахование', 'Ланит', 'НПК Уралвагонзавод',
+        'Рено Россия (Renault)', 'Удмуртнефть', 'Нестле Россия (Nestle)', 'Райффайзенбанк (Raiffeisen)',
+        'Техкомпания Хуавэй (Huawei)', 'КДВ Групп', 'Яндекс', 'Мессояханефтегаз', 'БМВ Русланд Трейдинг (BMW)',
+        'Салым Петролеум', 'Данон  (Danone)', 'ЮниКредит Банк (UniCredit)', 'ТД Риф', 'Мираторг', 'Группа Волга-Днепр',
+        'Вайлдберриз', 'Московский метрополитен', 'Полиметалл', 'Группа РЕСО', 'Пепсико холдингс', 'ГК Эфко',
+        'СДС-Уголь', 'ЛокоТех', 'ГК Автомир', 'Совкомбанк', 'ФСК Лидер', 'Марс (Mars)', 'Детский мир',
+        'Группа НПФ Благосостояние', 'Госкорпорация по ОрВД', 'Трансойл', 'ОХК Уралхим',
+        'Каспийский трубопроводный консорциум-Р', 'Тинькофф Банк', 'Fix Price', 'Промсвязьбанк', 'Акрон',
+        'Спортмастер', 'Проктер Энд Гэмбл. Дистрибьюторская компания (Procter & Gamble)',
+        'Eurasia Drilling Company', 'Группа Черкизово', 'ИКЕА Дом (INGKA)', 'Славянск Эко', 'Корпорация ВСМПО-АВИСМА',
+        'Росбанк (Societe General)', 'Монетка', 'Стройсервис', 'ГК Транстехсервис', 'Совкомфлот', 'ВСК',
+        'СБСВ-Ключавто', 'Ингосстрах', 'Сэтл групп', 'Гиперглобус (Bruch-Beteiligungs)', 'Технониколь',
+        'Металлсервис', 'Нефтехимсервис', 'Промышленно-металлургический холдинг',
+        'Урало-Сибирская металлургическая компания', 'Мария-Ра', 'Globaltrans', 'Кубанская нефтегазовая компания',
+        'Авиакомпания ЮТэйр', 'НПФ Газфонд пенсионные накопления', 'Русагро', "Л'Этуаль", 'ЛГ Электроникс Рус (LG)',
+        'Каргилл (Cargill)', 'ВАД', 'Астон', 'Уральские авиалинии', 'Сталепромышленная компания', 'НИПИ НГ Петон',
+        'Бристоль', 'Уралвтормет', 'Нефтетранссервис', 'Казаньоргсинтез', 'Газпром бурение', 'ГК Агро-Белогорье',
+        'Фортум (Fortum)', 'ПК Балтика (Carlsbergfondet)', 'Авилон АГ', 'Шелл Нефть (Shell)', 'Юнипро (Uniper)',
+        'Технологии машиностроения (Техмаш)', 'НПК Объединенная вагонная компания', 'Велесстрой', 'ТД Интерторг',
+        'Юнилевер Русь (Unilever)', 'Солид-товарные рынки', 'Вольво Восток (AB Volvo)', 'Энел Россия', 'Марвел КТ',
+        'ГК Эталон', 'Металлокомплект-М', 'Группа Ренессанс Страхование', 'Военторг', 'Nordgold', 'Сибуглемет',
+        'Акционерный банк Россия', 'ДОМ.РФ', 'Форд Соллерс Холдинг', 'ИКЕА Торг (INGKA)', 'Макдоналдc (McDonald`s)',
+        'Кузбасская топливная компания', 'Хенкель Рус (Henkel)', 'Дон-Строй Инвест',
+        'Главное управление обустройства войск (ГУОВ)', 'СК Росгосстрах', 'Кока-Кола Эйчбиси Евразия (Coca-Cola)',
+        'Хоум Кредит энд Финанс Банк (PPF)', 'Гленкор Агро Мзк (Firada)', 'Mail.Ru Group', 'Монди СЛПК (Mondi)',
+        'НПО Алмаз', 'ММС Рус (Mitsubishi Motors)', 'Объединенные кондитеры', 'Комацу СНГ (Komatsu)',
+        'Национальная медиа группа', 'Агентство по страхованию вкладов (АСВ)', 'Татэнергосбыт', 'Куйбышевазот',
+        'Азбука вкуса', 'Трансбункер', 'Башкирская содовая компания', 'Инвестнефтетрейд', 'Inventive Retail Group',
+        'Самсунг Электроникс Рус Калуга (Samsung)', 'Крокус', 'Гугл (Google)', 'АСЦ-Холдинг',
+        'Новороссийский морской торговый порт', 'Швабе', 'Русская медная компания', 'Евроцемент груп', 'Мосводоканал',
+        'Международный аэропорт Шереметьево', 'Сегежа', 'Р-Фарм', 'Фармстандарт', 'Ростсельмаш',
+        'Транспортная группа FESCO', 'Компания Адамас', 'Метафракс', 'Джонсон & Джонсон (Johnson & Johnson)',
+        'Softline', 'Ягуар ленд ровер', 'Байер', 'Эркафарм', 'Фармперспектива', 'Банк Уралсиб', 'ВО Машиноимпорт',
+        'Кордиант', 'Новосталь', 'ВкусВилл', "Л'Ореаль (L'Oreal)", 'DDS', 'ТОАЗ', 'Банк Санкт-Петербург',
+        'Группа агропредприятий Ресурс', 'Ярче!', 'Ренейссанс Констракшн (Ronesans Holding Anonim Sirketi)',
+        'Санофи Россия (Sanofi)', 'Группа ГМС', 'Северный ветер', 'БСС', 'Скания-Русь (Scania)', 'ГК Фаворит Моторс',
+        'Группа РТК', 'Фармкомплект', 'Нокиан Шина (Nokian)', 'ДСК Автобан', 'Омега Групп', 'Квадра', 'Roust',
+        'ГК Невада (Самбери)', 'Восточный экспресс банк', 'Верисел-трейдинг', 'Гознак',
+        'Фирма Агрокомплекс им. Ткачева', 'Банк Русский стандарт', 'Мазда Мотор Рус (Mazda)', 'Группа Газфонд',
+        'СТД Петрович', 'Беркс', 'Кари', 'Арконик СМЗ', 'Мон Дэлис (Mondelez)', 'Комус', 'Группа Агат',
+        'Великолукский мясокомбинат', 'Верный', 'СДС Азот', 'М Фэшн', 'Белгранкорм-холдинг', 'Группа Нэфис',
+        'ФГ Будущее', 'Глория Джинс', 'Билла (Rewe)', 'Государственная транспортная лизинговая компания',
+        'ФК Гранд Капитал', 'ЭС', 'Компания Металл Профиль', 'ГК Орими Трэйд', 'ГСЛ',
+        'Интернешнл Пейпер (International Paper)', 'Лаборатория Касперского', 'ПСМА Рус', 'Аптечная сеть 36,6',
+        'Тетра Пак (Tetra Pak)', 'Центральная пригородная пассажирская компания', 'Самараэнерго', 'Азур Эйр',
+        'Командор-Холдинг', 'Белуга Групп', 'ТД БелАЗ', 'Мосгортранс', 'Спар Миддл Волга',
+        'Холдинг Транспортные компоненты', 'Московский аэропорт Домодедово', 'Рулог (Havi)', 'Эйч Энд Эм (H&M)',
+        'Концерн Автоматика', 'Татэнерго', 'Трубная грузовая компания', 'Комос Групп', 'Первая тяжеловесная компания',
+        'ОМПК', 'НК Дулисьма', 'Ачимгаз', 'Новосибирскэнергосбыт', 'Компания СИМ-Авто', 'Ситибанк', 'Остин',
+        'Адидас (Adidas)', 'Ферреро Руссия (Ferrero)', 'Пермэнергосбыт', 'РКК Энергия', 'Свеза', 'Росжелдорпроект',
+        'Мазда Соллерс Мануфэкчуринг Рус', 'БСХ Бытовые приборы  (BSH Hausgerate)', 'Московская биржа ММВБ-РТС',
+        'Русэнергоресурс', 'Компания Луис Дрейфус Восток (Louis Dreyfus)', 'ЭР-Телеком Холдинг', 'Соллерс',
+        'Объединенная энергетическая компания', 'Уральские локомотивы', 'ТМК Чермет', 'Загорский трубный завод',
+        'Элко Рус (Elko)', 'Архангельский ЦБК', 'Мособлгаз', 'ДК Рус', 'Энергосбытовая компания Восток',
+        'ГКНПЦ им. М.В.Хруничева', 'Металлоторг', 'Агросила Групп', 'Ман Трак Энд Бас Рус (Volkswagen)',
+        'Петербургский метрополитен', 'ТГК-2', 'Концерн Титан-2', 'Ренейссанс Хэви Индастрис Ronesans Endustri',
+        'Бургер Рус (Burger King)', 'Ozon', 'Сони Электроникс (Sony)', 'Продо', 'Продимекс-Холдинг', 'АвтоГермес',
+        'Railgo', 'Новотранс', 'Новикомбанк', 'Рив Гош', 'Сибирская горно-металлургическая компания',
+        'Сименс (Siemens)', 'Лига ставок', 'Банк Ак Барс', 'Группа Полипластик', 'Водоканал Санкт-Петербурга',
+        'РэйлАльянс', 'Российская телевизионная и радиовещательная сеть', 'Зерно-трейд', 'Ренессанс Кредит',
+        'Роберт Бош (Robert Bosch)', 'ВО Промсырьеимпорт', 'САП СНГ (SAP)', 'А Групп', 'Приосколье', 'Зара СНГ (Zara)',
+        'Модум-транс', 'Эбботт лэбораториз (Abbott Laboratories)', 'Группа Магнезит', 'Газпром автоматизация',
+        'Газэнергосервис', 'Независимая энергосбытовая компания Краснодарского края', 'Группа ЭПМ', 'Минудобрения',
+        'Либхерр-Русланд (Liebherr)', 'Восточная техника (Vost-Tech)', 'Первый канал', 'ГМК Сплав', 'ГК Автодилерство',
+        'НМЖК', 'ВГТРК', 'Неофарм', 'Роскосмос', 'Вита Лайн', 'Краснодарзернопродукт-Экспо', 'Алкоторг', 'Красцветмет',
+        'Касторама Рус (Castorama)', 'Деловые линии', 'ГВСУ по специальным объектам', 'ПКФ ДиПОС', 'Восток-Запад',
+        'Амурская нефтебаза', 'Юг Руси', 'Шнейдер Электрик (Schneider Electric)', 'Сингента (Chemchina)', 'Титан',
+        'Петропавловск', 'Фармимэкс', 'АБ Инбев Эфес (Anheuser-Busch Inbev)', 'ABI Product', 'Профитмед',
+        'ТД Агроторг', 'ТЭК СПБ', 'ТД Ункомтех', 'ОПХ (Heineken)', 'ТГК-16', 'Уральский банк реконструкции и развития',
+        'QIWI', 'СК Согласие', 'Группа Эссен', 'Втормет', 'Эссити (Essity)', 'Hoff (Домашний интерьер)',
+        'Сиско Солюшенз (Cisco)', 'ВО ЖДТ России', 'Купишуз (Lamoda)', 'Делл (Dell)', 'ПСК',
+        'Каменск-Уральский металлургический завод', 'Аргос', 'А.П.Р.', 'ГК 1520', 'Артис-Агро Экспорт', 'Луидор',
+        'Порше Руссланд (Porsche)', 'Денцу Эйджис Си Эс (Dentsu)', 'Эйвон Бьюти Продактс Компани (Avon)',
+        'РКЦ Прогресс', 'Силовые машины', 'АНГК', 'Корпорация Гринн', 'Фаберлик', 'Сибирская сервисная компания',
+        'Банк Возрождение', 'Отисифарм', 'Боэс Констракшн (Boes Construction)', 'Саткинский чугуноплавильный завод',
+        'Алтайвагон', 'ПТК', 'Щекиноазот', 'Волгоградэнергосбыт', 'Русский уголь', 'Трест КХМ', 'РМ Рейл',
+        'Восточная горнорудная компания', 'Группа Стройтрансгаз', 'БАСФ (BASF)', 'Мерида', 'Брок-Инвест-Сервис и К',
+        'Вирлпул Рус (Whirlpool)', 'Карелия Палп', 'Тева (Teva)', 'Media Direction Group',
+        'Якобс Дау Эгбертс Рус (Jacobs Douwe Egberts)', 'ГК Великан', 'Август', 'Транслом', 'ОТП Банк', 'РусВинил',
+        'Системный оператор Единой энергетической системы', 'АСР-Углесбыт', 'ЦЭНКИ', 'Транстрейдойл', 'Росморпорт',
+        'Газнефтетрэйдинг', 'Сладковско-Заречное', 'Кроношпан (Kronoplus)', 'ТЦ Кунцево Лимитед', 'СНПХ',
+        'Кимберли-Кларк (Kimberly-Clark)', 'Катерпиллар Евразия (Caterpillar)', 'Крок инкорпорейтед',
+        'Ашинский металлургический завод', 'Автодом', 'Международный центр', 'Мишлен (Michelin)', 'Картли', 'БелАЗ-24',
+        'Первый завод', 'ГК ЕКС', 'Петролеум Трейдинг', 'Нижфарм (Nidda Midco)', 'Импэкснефтехим',
+        'Вольво Карс (Zhejiang Geely)', 'Мосметрострой', 'ТЭК Мосэнерго', 'Борисхоф 1 (Inchcape)', 'ГК Титан',
+        'ПТК Уголь', 'Авторусь', 'Юг-Авто', 'Нова', 'Метрострой', 'Ресурс', 'Сетевая компания', 'РЕ Трэйдинг (LPP)',
+        'Углетранс', 'ЭйчПи Инк (HP Inc.)', 'ТК Шлюмберже (Schlumberger)', 'ГК Мега-Авто',
+        'Корпорация Электросевкавмонтаж', 'ГК Российские коммунальные системы', 'Запсибгазпром', 'Нефтепродукттрейд',
+        'Сатурн-Р', 'Завод имени Дегтярева', 'Такеда Фармасьютикалс (Takeda Pharmaceutical)', 'Слата супермаркет',
+        'Emex', 'САМ-МБ', '171 Меридиан', 'Армтек', 'Центр финансовых технологий', 'Группа компаний Пионер',
+        'АХ Степь', 'Таграс (ТНГ-Групп)', 'Fonbet', 'Сандоз (Sandoz)', 'Берлин-Хеми А. Менарини (Berlin Chemie)',
+        'ГК Агропромкомплектация', 'МАКС', 'Компания Трасса', 'Башкирэнерго', 'Охрана Росгвардии', 'Гала-Форм',
+        'КРКА Фарма (KRKA)', 'Максидом', 'Нефтехимремстрой', 'Нефтьмагистраль', 'Авеста Фармацевтика (Baby Dream)',
+        'Старттех', 'Конар', 'Нортгаз', 'УГС', 'АББ (ABB)', 'Металлстандарт', 'Балтийская топливная компания',
+        'Мострансавто', 'Аксель-Моторс', 'Группа компаний МИЦ', 'ПК Борец', 'Европа', 'Сибирская аграрная группа',
+        'РТИ', 'Ферронордик машины (Ferronordic)', 'Южуралзолото ГК', 'Прогресс', 'Юг-Нефтепродукт', 'Камский кабель',
+        'Familia', 'Транскапиталбанк', 'А-Ойл', 'Сибтрейд', 'МТС-банк', 'Московская инженерно-строительная компания',
+        'Курганмашзавод', 'Вектрум-К', 'Морской терминал Тамань', 'Таркетт Рус (Tarkett)',
+        'Несте Санкт-Петербург (Neste)', 'Ново-Уренгойская газовая компания', 'Национальная нерудная компания',
+        'Октоблу (Decathlon)', 'Снежная Королева', 'Новартис Фарма (Novartis)', 'Магнолия', 'Техинком',
+        'Дочки-Сыночки', 'Астеллас Фарма', 'General Fueller', 'Автозаправочные комплексы Atan', 'Псковвтормет',
+        'Авиакомпания Икар',
+    )
+
+    catch_phrase_adj = (
+        ('Автоматизированный', 'Автономный', 'Адаптивный', 'Амортизированный', 'Ассимилированный', 'Безопасный',
+         'Бизнес-ориентированный', 'Взаимовыгодный', 'Виртуальный', 'Глубокий', 'Горизонтальный', 'Делегируемый',
+         'Децентрализованный', 'Дублируемый', 'Инверсный', 'Инновационный', 'Интегрированный', 'Интуитивный',
+         'Качественный', 'Клиент-ориентированный', 'Контролируемый', 'Концептуальный', 'Корпоративный',
+         'Кросс-платформенный', 'Межгрупповой', 'Многогранный', 'Многоканальный', 'Многослойный', 'Многоуровневый',
+         'Модернизируемый', 'Настраиваемый', 'Новый', 'Общедоступный', 'Объектный', 'Обязательный', 'Оперативный',
+         'Оптимизированный', 'Опциональный', 'Организованный', 'Органичный', 'Ориентированный', 'Открытый',
+         'Оцифрованный', 'Переключаемый', 'Переосмысленный', 'Переработанный', 'Перспективный', 'Полный', 'Поэтапный',
+         'Превентивный', 'Программируемый', 'Прогрессивный', 'Продвинутый', 'Прочный', 'Разнообразный',
+         'Распределённый', 'Расширенный', 'Реализованный', 'Реконструируемый', 'Самодостаточный', 'Сбалансированный',
+         'Сетевой', 'Синхронизированный', 'Совместимый', 'Сокращенный', 'Сосредоточенный', 'Стабильный',
+         'Стратегический', 'Увеличенный', 'Удобный', 'Улучшенный', 'Улучшенный', 'Уменьшенный', 'Универсальный',
+         'Управляемый', 'Устойчивый', 'Фундаментальный', 'Функциональный', 'Цельный', 'Централизованный',
+         'Эксклюзивный', 'Элегантный', 'Эргономичный'),
+        ('аналитический', 'асимметричный', 'асинхронный', 'бездефектный', 'бескомпромиссный', 'веб-ориентированный',
+         'встречный', 'вторичный', 'высокоуровневый', 'гибкий', 'гибридный', 'глобальный', 'двунаправленный',
+         'действенный', 'динамичный', 'единообразный', 'заметный', 'инструктивный', 'интерактивный', 'исполнительный',
+         'итернациональный', 'клиент-серверный', 'контекстуальный', 'круглосуточный', 'логистический', 'локальный',
+         'максимальный', 'масштабируемый', 'методичный', 'многозадачный', 'мобильный', 'модульный', 'мультимедийный',
+         'наглядный', 'направленный', 'национальный', 'нейтральный', 'нестандартный', 'объектно-ориентированный',
+         'однородный', 'оптимальный', 'основной', 'отказостойкий', 'переходный', 'последовательный', 'потенциальный',
+         'пошаговый', 'прибыльный', 'приоритетный', 'промежуточный', 'радикальный', 'раздвоенный', 'региональный',
+         'связный', 'систематический', 'системный', 'составной', 'социальный', 'специализированный', 'статический',
+         'третичный', 'ультрасовременный', 'целостный', 'широкий', 'широкопрофильный', 'эвристический',
+         'экоцентричный', 'энергонезависимый', 'яркий'),
+    )
+
+    catch_phrase_nouns_masc = (
+        'адаптер', 'алгоритм', 'альянс', 'анализатор', 'архив', 'веб-сайт', 'вызов', 'графический интерфейс',
+        'графический интерфейс пользователя', 'доступ', 'инструментарий', 'интерфейс', 'инфопосредник',
+        'искусственный интеллект', 'массив', 'модератор', 'мониторинг', 'набор инструкций', 'параллелизм', 'подход',
+        'портал', 'прогноз', 'продукт', 'проект', 'протокол', 'ресурс', 'системный движок', 'успех', 'фреймворк', 'хаб',
+        'эталон',
+    )
+
+    catch_phrase_nouns_fem = (
+        'архитектура', 'база данных', 'база знаний', 'вероятность', 'возможность', 'гибкость', 'защищенная линия',
+        'иерархия', 'инициатива', 'инфраструктура', 'кодировка', 'конгломерация', 'концепция', 'координация',
+        'локальная сеть', 'матрица', 'методология', 'миграция', 'модель', 'нейронная сеть', 'парадигма', 'поддержка',
+        'политика', 'проекция', 'производительность', 'прошивка', 'рабочая группа', 'реализация', 'сеть Интранет',
+        'сеть Экстранет', 'служба поддержки', 'служба техподдержки', 'способность', 'стандартизация', 'стратегия',
+        'структура', 'суперструктура', 'установка', 'фокус-группа', 'функциональность', 'функция', 'ценовая структура',
+        'эмуляция',
+    )
+
+    catch_phrase_nouns_neu = (
+        'взаимодействие', 'групповое программное обеспечение', 'интернет-решение', 'использование',
+        'межплатформенное программное обеспечение', 'оборудование', 'определение', 'отношение', 'приложение',
+        'программное обеспечение', 'решение', 'совершенствование процесса', 'сотрудничество', 'управление бюджетом',
+        'хранилище данных', 'шифрование', 'ядро',
+    )
+
+    bsWords = (
+        ('Адаптация', 'Визуализация', 'Включение', 'Внедрение', 'Генерация', 'Инновация', 'Интеграция', 'Использование',
+         'Итерация', 'Конструирование', 'Координация', 'Культивация', 'Максимизация', 'Модернизация', 'Монетизация',
+         'Мотивация', 'Обеспечение', 'Объединение', 'Оптимизация', 'Освоение', 'Охват', 'Оцифровка', 'Перезагрузка',
+         'Переопределение', 'Переосмысление', 'Перепрофилирование', 'Переход', 'Преображение', 'Приспособление',
+         'Продление', 'Производство', 'Развитие', 'Разворачивание', 'Разработка', 'Распределение', 'Реализация',
+         'Революция', 'Синтез', 'Синхронизация', 'Сравнение', 'Трансформация', 'Увеличение', 'Управление', 'Ускорение',
+         'Формирование', 'Шкалирование', 'Эксплуатация'),
+        ('B2B', 'B2C', 'активных', 'безотказных', 'беспроводных', 'богатых', 'веб-ориентированных', 'вертикальных',
+         'виртуальных', 'глобальных', 'действенных', 'динамичных', 'заказных', 'индивидуальных', 'инновационных',
+         'интегрированных', 'интерактивных', 'интуитивных', 'концептуальных', 'корпоративных', 'критически важных',
+         'кроссплатформенных', 'круглогодичных', 'круглосуточных', 'лучших в своём роде', 'масштабируемых',
+         'мультимедийных', 'наглядных', 'надежных', 'онлайн и офлайн', 'ориентированных на пользователя', 'открытых',
+         'передовых', 'подробных', 'популярных', 'престижных', 'прибыльных', 'притягательных', 'прозрачных',
+         'распределённых', 'распространенных', 'расширяемых', 'революционных', 'сенсационных', 'серверных', 'сетевых',
+         'соблазнительных', 'совместных', 'современных', 'стандартных', 'стратегических', 'ультрасовременных',
+         'фронт-энд', 'целостных', 'цельных', 'эффективных'),
+        ('архитектур', 'аудиторий', 'веб-сервисов', 'взаимодействий', 'действий', 'диапазонов', 'знаний', 'инициатив',
+         'интернет-компаний', 'интернет-магазинов', 'интернет-продавцоы', 'интернет-услуг', 'интерфейсов',
+         'инфопосредников', 'инфраструктур', 'каналов', 'методик', 'метрик', 'моделей', 'ниш', 'областей интереса',
+         'отношений', 'парадигм', 'партнерств', 'платформ', 'пользователей', 'порталов', 'приложений', 'результатов',
+         'решений', 'рынков', 'сетей', 'систем', 'систем снабжения', 'сообществ', 'схем', 'технологий', 'функций'))
+
+    def catch_phrase(self):
+        """
+        :example: 'Адаптивный и масштабируемый графический интерфейс'
+        """
+        noun = self.random_element(self.catch_phrase_nouns_masc + self.catch_phrase_nouns_fem +
+                                   self.catch_phrase_nouns_neu)
+        adj_first = self.random_element(self.catch_phrase_adj[0])
+        adj_second = self.random_element(self.catch_phrase_adj[1])
+        if noun in self.catch_phrase_nouns_fem:
+            adj_first = adj_first[:-2] + 'ая'
+            adj_second = adj_second[:-2] + 'ая'
+        elif noun in self.catch_phrase_nouns_neu:
+            adj_first = adj_first[:-2] + 'ое'
+            adj_second = adj_second[:-2] + 'ое'
+        return adj_first + ' и ' + adj_second + ' ' + noun
+
+    def large_company(self):
+        """
+        :example: 'АвтоВАЗ'
+        """
+        return self.random_element(self.large_companies)
+
     def company_prefix(self):
+        """
+        :example: 'ООО'
+        """
         return self.random_element(self.company_prefixes)
 
     def businesses_inn(self):
diff --git a/faker/providers/credit_card/ru_RU/__init__.py b/faker/providers/credit_card/ru_RU/__init__.py
new file mode 100644
index 00000000..65c96882
--- /dev/null
+++ b/faker/providers/credit_card/ru_RU/__init__.py
@@ -0,0 +1,51 @@
+from collections import OrderedDict
+
+from faker.providers.person.ru_RU import translit
+
+from .. import CreditCard
+from .. import Provider as CreditCardProvider
+
+
+class Provider(CreditCardProvider):
+    # Prefixes from: https://en.wikipedia.org/wiki/Payment_card_number#Issuer_identification_number_(IIN)
+    prefix_visa = ['4']
+    prefix_mastercard = ['51', '52', '53', '54', '55', '222%', '223', '224', '225', '226',
+                         '227', '228', '229', '23', '24', '25', '26', '270', '271', '2720']
+    prefix_mir = ['2200', '2201', '2202', '2203', '2204']
+    prefix_maestro = ['50', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69']
+    prefix_amex = ['34', '37']
+    prefix_unionpay = ['62', '81']
+
+    credit_card_types = OrderedDict((
+        ('visa', CreditCard('Visa', prefix_visa, security_code='CVV2')),
+        ('mastercard', CreditCard('Mastercard', prefix_mastercard, security_code='CVC2')),
+        ('mir', CreditCard('МИР', prefix_mir)),
+        ('maestro', CreditCard('Maestro', prefix_maestro, security_code='CVV2')),
+        ('amex', CreditCard('American Express', prefix_amex, 15, security_code='CID', security_code_length=4)),
+        ('unionpay', CreditCard('Union Pay', prefix_unionpay)),
+    ))
+
+    def credit_card_expire(self, start='now', end='+4y', date_format='%m/%y'):
+        expire_date = self.generator.date_time_between(start, end)
+        return expire_date.strftime(date_format)
+
+    def credit_card_full(self, card_type=None):
+        card = self._credit_card_type(card_type)
+
+        tpl = ('{provider}\n'
+               '{owner}\n'
+               '{number} {expire_date}\n'
+               '{security}: {security_nb}\n'
+               '{issuer}')
+
+        tpl = tpl.format(provider=card.name,
+                         owner=translit(
+                             self.generator.parse(self.random_element(["{{first_name_male}} {{last_name_male}}",
+                                                                       "{{first_name_female}} {{last_name_female}}"]))),
+                         number=self.credit_card_number(card),
+                         expire_date=self.credit_card_expire(),
+                         security=card.security_code,
+                         security_nb=self.credit_card_security_code(card),
+                         issuer=self.generator.parse("{{bank}}"))
+
+        return self.generator.parse(tpl)
diff --git a/faker/providers/currency/__init__.py b/faker/providers/currency/__init__.py
index b26102dd..f6842e0e 100644
--- a/faker/providers/currency/__init__.py
+++ b/faker/providers/currency/__init__.py
@@ -1,5 +1,7 @@
 from .. import BaseProvider
 
+localized = True
+
 
 class Provider(BaseProvider):
     # Format: (code, name)
@@ -217,6 +219,24 @@ class Provider(BaseProvider):
         ('ADA', "Cardano"),
     )
 
+    # List of currency symbols in Unicode, source: https://www.unicode.org/charts/beta/nameslist/n_20A0.html
+    currency_symbols = {
+        'AFN': '\u060B', 'ANG': '\u0192', 'ARS': '\u0024', 'AUD': '\u0024', 'AWG': '\u0192', 'BBD': '\u0024',
+        'BDT': '\u09F3', 'BMD': '\u0024', 'BND': '\u0024', 'BOB': '\u0024', 'BRL': '\u0024', 'BSD': '\u0024',
+        'BZD': '\u0024', 'CAD': '\u0024', 'CLP': '\u0024', 'CNY': '\u00A5', 'COP': '\u0024', 'CRC': '\u20A1',
+        'CUP': '\u0024', 'CVE': '\u0024', 'DOP': '\u0024', 'EGP': '\u00A3', 'EUR': '\u20AC', 'FJD': '\u0024',
+        'FKP': '\u00A3', 'GBP': '\u00A3', 'GHS': '\u20B5', 'GIP': '\u00A3', 'GYD': '\u0024', 'HKD': '\u0024',
+        'HUF': '\u0192', 'IDR': '\u20A8', 'ILS': '\u20AA', 'INR': '\u20B9', 'IRR': '\uFDFC', 'JMD': '\u0024',
+        'JPY': '\u00A5', 'KHR': '\u17DB', 'KPW': '\u20A9', 'KRW': '\u20A9', 'KYD': '\u0024', 'KZT': '\u20B8',
+        'LAK': '\u20AD', 'LBP': '\u00A3', 'LKR': '\u20A8', 'LRD': '\u0024', 'MNT': '\u20AE', 'MOP': '\u0024',
+        'MUR': '\u20A8', 'MXN': '\u0024', 'NAD': '\u0024', 'NGN': '\u20A6', 'NIO': '\u0024', 'NPR': '\u20A8',
+        'NZD': '\u0024', 'OMR': '\uFDFC', 'PHP': '\u20B1', 'PKR': '\u20A8', 'PYG': '\u20B2', 'QAR': '\uFDFC',
+        'RUB': '\u20BD', 'SAR': '\uFDFC', 'SBD': '\u0024', 'SDG': '\u00A3', 'SGD': '\u0024', 'SHP': '\u00A3',
+        'SRD': '\u0024', 'SYP': '\u00A3', 'THB': '\u0E3F', 'TOP': '\u0024', 'TRY': '\u20BA', 'TTD': '\u0024',
+        'TWD': '\u0024', 'UAH': '\u20B4', 'USD': '\u0024', 'UY': '\u0024', 'VND': '\u20AB', 'WST': '\u0024',
+        'XCD': '\u0024', 'YER': '\uFDFC', 'ZWD': '\u0024',
+    }
+
     def currency(self):
         return self.random_element(self.currencies)
 
@@ -226,6 +246,14 @@ class Provider(BaseProvider):
     def currency_name(self):
         return self.currency()[1]
 
+    def currency_symbol(self, code=None):
+        """
+        :example: $
+        """
+        if code is None:
+            code = self.random_element(self.currency_symbols.keys())
+        return self.currency_symbols[code]
+
     def cryptocurrency(self):
         return self.random_element(self.cryptocurrencies)
 
diff --git a/faker/providers/currency/ru_RU/__init__.py b/faker/providers/currency/ru_RU/__init__.py
new file mode 100644
index 00000000..72f3f778
--- /dev/null
+++ b/faker/providers/currency/ru_RU/__init__.py
@@ -0,0 +1,172 @@
+from .. import Provider as CurrencyProvider
+
+
+class Provider(CurrencyProvider):
+    # Format: (code, name)
+    # See currency names in Russian: https://ru.wikipedia.org/wiki/Список_существующих_валют#Валюты
+    currencies = (
+        ("AED", "Дирхам ОАЭ"),
+        ("AFN", "Афгани"),
+        ("ALL", "Лек"),
+        ("AMD", "Армянский драм"),
+        ("ANG", "Нидерландский антильский гульден"),
+        ("AOA", "Кванза"),
+        ("ARS", "Аргентинское песо"),
+        ("AUD", "Австралийский доллар"),
+        ("AWG", "Арубанский флорин"),
+        ("AZN", "Азербайджанский манат"),
+        ("BAM", "Конвертируемая марка Боснии и Герцеговины"),
+        ("BBD", "Барбадосский доллар"),
+        ("BDT", "Така"),
+        ("BGN", "Болгарский лев"),
+        ("BHD", "Бахрейнский динар"),
+        ("BIF", "Бурундийский франк"),
+        ("BMD", "Бермудский доллар"),
+        ("BND", "Брунейский доллар"),
+        ("BOB", "Боливиано"),
+        ("BRL", "Бразильский реал"),
+        ("BSD", "Багамский доллар"),
+        ("BTN", "Нгултрум"),
+        ("BWP", "Пула"),
+        ("BYR", "Белорусский рубль"),
+        ("BZD", "Белизский доллар"),
+        ("CAD", "Канадский доллар"),
+        ("CDF", "Конголезский франк"),
+        ("CHF", "Швейцарский франк"),
+        ("CLP", "Чилийское песо"),
+        ("CNY", "Юань"),
+        ("COP", "Колумбийское песо"),
+        ("CRC", "Коста-риканский колон"),
+        ("CUC", "Кубанское конвертируемое песо"),
+        ("CUP", "Кубанское песо"),
+        ("CVE", "Эскудо Кабо-Верде"),
+        ("CZK", "Чешская крона"),
+        ("DJF", "Франк Джибути"),
+        ("DKK", "Датская крона"),
+        ("DOP", "Доминиканское песо"),
+        ("DZD", "Алжирский динар"),
+        ("EGP", "Египетский фунт"),
+        ("ERN", "Накфа"),
+        ("ETB", "Эфиопский быр"),
+        ("EUR", "Евро"),
+        ("FJD", "Доллар Фиджи"),
+        ("FKP", "Фунт Фолклендских островов"),
+        ("GBP", "Фунт стерлингов"),
+        ("GEL", "Лари"),
+        ("GGP", "Гернсийский фунт"),
+        ("GHS", "Ганский седи"),
+        ("GIP", "Гибралтарский фунт"),
+        ("GMD", "Даласи"),
+        ("GNF", "Гвинейский франк"),
+        ("GTQ", "Кетсаль"),
+        ("GYD", "Гайанский доллар"),
+        ("HKD", "Гонконгский доллар"),
+        ("HNL", "Лемпира"),
+        ("HRK", "Хорватская куна"),
+        ("HTG", "Гурд"),
+        ("HUF", "Форинт"),
+        ("IDR", "Индонезийская рупия"),
+        ("ILS", "Новый израильский шекель"),
+        ("NIS", "Новый израильский шекель"),
+        ("IMP", "Фунт острова Мэн"),
+        ("INR", "Индийская рупия"),
+        ("IQD", "Иракский динар"),
+        ("IRR", "Иранский риал"),
+        ("ISK", "Исландская крона"),
+        ("JEP", "Джерсийский фунт"),
+        ("JMD", "Ямайский доллар"),
+        ("JOD", "Иорданский динар"),
+        ("JPY", "Иена"),
+        ("KES", "Кенийский шиллинг"),
+        ("KGS", "Сом"),
+        ("KHR", "Риель"),
+        ("KMF", "Франк Комор"),
+        ("KPW", "Северокорейская вона"),
+        ("KRW", "Южнокорейская вона"),
+        ("KWD", "Кувейтский динар"),
+        ("KYD", "Доллар Островов Кайман"),
+        ("KZT", "Тенге"),
+        ("LAK", "Кип"),
+        ("LBP", "Ливийский фунт"),
+        ("LKR", "Шри-ланкийская рупия"),
+        ("LRD", "Либерийский доллар"),
+        ("LSL", "Лоти"),
+        ("LTL", "Литовский лит"),
+        ("LYD", "Ливийский динар"),
+        ("MAD", "Марокканский дирхам"),
+        ("MDL", "Молдавский лей"),
+        ("MGA", "Малагасийский ариари"),
+        ("MKD", "Денар"),
+        ("MMK", "Кьят"),
+        ("MNT", "Тугрик"),
+        ("MOP", "Патака"),
+        ("MRO", "Угия"),
+        ("MUR", "Маврикийская рупия"),
+        ("MVR", "Рувия"),
+        ("MWK", "Квача"),
+        ("MXN", "Мексиканское песо"),
+        ("MYR", "Малайзийский ринггит"),
+        ("MZN", "Мозамбикский метикал"),
+        ("NAD", "Доллар Намибии"),
+        ("NGN", "Найра"),
+        ("NIO", "Кордоба"),
+        ("NOK", "Норвежская крона"),
+        ("NPR", "Непальская рупия"),
+        ("NZD", "Новозеландский доллар"),
+        ("OMR", "Оманский риал"),
+        ("PAB", "Бальбоа"),
+        ("PEN", "Соль"),
+        ("PGK", "Кина"),
+        ("PHP", "Филиппинское песо"),
+        ("PKR", "Пакистанская рупия"),
+        ("PLN", "Злотый"),
+        ("PYG", "Гуарани"),
+        ("QAR", "Катарский риал"),
+        ("RON", "Румынский лей"),
+        ("RSD", "Сербский динар"),
+        ("RUB", "Российский рубль"),
+        ("RWF", "Франк Руанды"),
+        ("SAR", "Саудовский риял"),
+        ("SBD", "Доллар Соломоновых Островов"),
+        ("SCR", "Сейшельская рупия"),
+        ("SDG", "Суданский фунт"),
+        ("SEK", "Шведская крона"),
+        ("SGD", "Сингапурский доллар"),
+        ("SHP", "Фунт Святой Елены"),
+        ("SLL", "Леоне"),
+        ("SOS", "Сомалийский шиллинг"),
+        ("SPL", "Луиджино"),
+        ("SRD", "Суринамский доллар"),
+        ("STD", "Добра"),
+        ("SVC", "Сальвадорский колон"),
+        ("SYP", "Сирийский фунт"),
+        ("SZL", "Лилангени"),
+        ("THB", "Бат"),
+        ("TJS", "Сомони"),
+        ("TMT", "Новый туркменский манат"),
+        ("TND", "Тунисский динар"),
+        ("TOP", "Паанга"),
+        ("TRY", "Турецкая лира"),
+        ("TTD", "Доллар Тринидада и Тобаго"),
+        ("TVD", "Доллар Тувалу"),
+        ("TWD", "Новый тайваньский доллар"),
+        ("TZS", "Танзанийский шиллинг"),
+        ("UAH", "Гривна"),
+        ("UGX", "Угандийский шиллинг"),
+        ("USD", "Доллар США"),
+        ("UYU", "Уругвайское песо"),
+        ("UZS", "Узбекский сум"),
+        ("VEF", "Суверенный боливар"),
+        ("VND", "Донг"),
+        ("VUV", "Вату"),
+        ("WST", "Тала"),
+        ("XAF", "Франк КФА ВЕАС"),
+        ("XCD", "Восточно-карибский доллар"),
+        ("XDR", "СДР"),
+        ("XOF", "Франк КФА ВСЕАО"),
+        ("XPF", "Франк КФП"),
+        ("YER", "Йеменский риал"),
+        ("ZAR", "Рэнд"),
+        ("ZMW", "Замбийская квача"),
+        ("ZWD", "Доллар Зимбабве"),
+    )
diff --git a/faker/providers/date_time/ru_RU/__init__.py b/faker/providers/date_time/ru_RU/__init__.py
index 337a5f83..8618c508 100644
--- a/faker/providers/date_time/ru_RU/__init__.py
+++ b/faker/providers/date_time/ru_RU/__init__.py
@@ -3,33 +3,1243 @@ from .. import Provider as DateTimeProvider
 
 class Provider(DateTimeProvider):
 
+    DAY_NAMES = {
+        "0": "Воскресенье",
+        "1": "Понедельник",
+        "2": "Вторник",
+        "3": "Среда",
+        "4": "Четверг",
+        "5": "Пятница",
+        "6": "Суббота",
+    }
+
+    MONTH_NAMES = {
+        "01": "Январь",
+        "02": "Февраль",
+        "03": "Март",
+        "04": "Апрель",
+        "05": "Май",
+        "06": "Июнь",
+        "07": "Июль",
+        "08": "Август",
+        "09": "Сентябрь",
+        "10": "Октябрь",
+        "11": "Ноябрь",
+        "12": "Декабрь",
+    }
+
+    # Timezone names are based on Wiki list, source: https://ru.wikipedia.org/wiki/Список_часовых_поясов_по_странам
+    countries = [{'timezones': ['Андорра (UTC+01)'],
+                  'alpha-2-code': 'AD',
+                  'alpha-3-code': 'AND',
+                  'continent': 'Европа',
+                  'name': 'Андорра',
+                  'capital': 'Андорра-ла-Велья'},
+                 {'timezones': ['Афганистан (UTC+04:30)'],
+                  'alpha-2-code': 'AF',
+                  'alpha-3-code': 'AFG',
+                  'continent': 'Азия',
+                  'name': 'Афганистан',
+                  'capital': 'Кабул'},
+                 {'timezones': ['Антигуа и Барбуда (UTC-04)'],
+                  'alpha-2-code': 'AG',
+                  'alpha-3-code': 'ATG',
+                  'continent': 'Северная Америка',
+                  'name': 'Антигуа и Барбуда',
+                  'capital': "Сент-Джонс"},
+                 {'timezones': ['Албания (UTC+01)'],
+                  'alpha-2-code': 'AL',
+                  'alpha-3-code': 'ALB',
+                  'continent': 'Европа',
+                  'name': 'Албания',
+                  'capital': 'Тирана'},
+                 {'timezones': ['Армения (UTC+04)'],
+                  'alpha-2-code': 'AM',
+                  'alpha-3-code': 'ARM',
+                  'continent': 'Азия',
+                  'name': 'Армения',
+                  'capital': 'Ереван'},
+                 {'timezones': ['Ангола (UTC+01)'],
+                  'alpha-2-code': 'AO',
+                  'alpha-3-code': 'AGO',
+                  'continent': 'Африка',
+                  'name': 'Ангола',
+                  'capital': 'Луанда'},
+                 {'timezones': ['Аргентина (UTC-03)'],
+                  'alpha-2-code': 'AR',
+                  'alpha-3-code': 'ARG',
+                  'continent': 'Южная Америка',
+                  'name': 'Аргентина',
+                  'capital': 'Буэнос Айрес'},
+                 {'timezones': ['Австрия (UTC+01)'],
+                  'alpha-2-code': 'AT',
+                  'alpha-3-code': 'AUT',
+                  'continent': 'Европа',
+                  'name': 'Австрия',
+                  'capital': 'Вена'},
+                 {'timezones': ['Австралия (UTC+05)',
+                                'Австралия (UTC+06:30)',
+                                'Австралия (UTC+07)',
+                                'Австралия (UTC+08)',
+                                'Австралия (UTC+9:30)',
+                                'Австралия (UTC+10)',
+                                'Австралия (UTC+10:30)',
+                                'Австралия (UTC+11:30)'],
+                  'alpha-2-code': 'AU',
+                  'alpha-3-code': 'AUS',
+                  'continent': 'Океания',
+                  'name': 'Австралия',
+                  'capital': 'Канберра'},
+                 {'timezones': ['Азербайджан (UTC+04)'],
+                  'alpha-2-code': 'AZ',
+                  'alpha-3-code': 'AZE',
+                  'continent': 'Азия',
+                  'name': 'Азербайджан',
+                  'capital': 'Баку'},
+                 {'timezones': ['Барбадос (UTC-04)'],
+                  'alpha-2-code': 'BB',
+                  'alpha-3-code': 'BRB',
+                  'continent': 'Северная Америка',
+                  'name': 'Барбадос',
+                  'capital': 'Бриджтаун'},
+                 {'timezones': ['Бангладеш (UTC+06)'],
+                  'alpha-2-code': 'BD',
+                  'alpha-3-code': 'BGD',
+                  'continent': 'Азия',
+                  'name': 'Бангладеш',
+                  'capital': 'Дака'},
+                 {'timezones': ['Бельгия (UTC+01)'],
+                  'alpha-2-code': 'BE',
+                  'alpha-3-code': 'BEL',
+                  'continent': 'Европа',
+                  'name': 'Бельгия',
+                  'capital': 'Брюссель'},
+                 {'timezones': ['Буркина-Фасо (UTC)'],
+                  'alpha-2-code': 'BF',
+                  'alpha-3-code': 'BFA',
+                  'continent': 'Африка',
+                  'name': 'Буркина-Фасо',
+                  'capital': 'Уагадугу'},
+                 {'timezones': ['Болгария (UTC+02)'],
+                  'alpha-2-code': 'BG',
+                  'alpha-3-code': 'BGR',
+                  'continent': 'Европа',
+                  'name': 'Болгария',
+                  'capital': 'София'},
+                 {'timezones': ['Бахрейн (UTC+03)'],
+                  'alpha-2-code': 'BH',
+                  'alpha-3-code': 'BHR',
+                  'continent': 'Азия',
+                  'name': 'Бахрейн',
+                  'capital': 'Манама'},
+                 {'timezones': ['Бурунди (UTC+02)'],
+                  'alpha-2-code': 'BI',
+                  'alpha-3-code': 'BDI',
+                  'continent': 'Африка',
+                  'name': 'Бурунди',
+                  'capital': 'Гитега'},
+                 {'timezones': ['Бенин (UTC+01)'],
+                  'alpha-2-code': 'BJ',
+                  'alpha-3-code': 'BEN',
+                  'continent': 'Африка',
+                  'name': 'Бенин',
+                  'capital': 'Порто-Ново'},
+                 {'timezones': ['Бруней (UTC+08)'],
+                  'alpha-2-code': 'BN',
+                  'alpha-3-code': 'BRN',
+                  'continent': 'Азия',
+                  'name': 'Бруней',
+                  'capital': 'Бандар-Сери-Бегаван'},
+                 {'timezones': ['Боливия (UTC-04)'],
+                  'alpha-2-code': 'BO',
+                  'alpha-3-code': 'BOL',
+                  'continent': 'Южная Америка',
+                  'name': 'Боливия',
+                  'capital': 'Сукре'},
+                 {'timezones': ['Бразилия (UTC-05)',
+                                'Бразилия (UTC-04)',
+                                'Бразилия (UTC-03)',
+                                'Бразилия (UTC-02)'],
+                  'alpha-2-code': 'BR',
+                  'alpha-3-code': 'BRA',
+                  'continent': 'Южная Америка',
+                  'name': 'Бразилия',
+                  'capital': 'Бразилиа'},
+                 {'timezones': ['Багамские Острова (UTC-05)'],
+                  'alpha-2-code': 'BS',
+                  'alpha-3-code': 'BHS',
+                  'continent': 'Северная Америка',
+                  'name': 'Багамские Острова',
+                  'capital': 'Нассау'},
+                 {'timezones': ['Бутан (UTC+06)'],
+                  'alpha-2-code': 'BT',
+                  'alpha-3-code': 'BTN',
+                  'continent': 'Азия',
+                  'name': 'Бутан',
+                  'capital': 'Тхимпху'},
+                 {'timezones': ['Ботсвана (UTC+02)'],
+                  'alpha-2-code': 'BW',
+                  'alpha-3-code': 'BWA',
+                  'continent': 'Африка',
+                  'name': 'Ботсвана',
+                  'capital': 'Габороне'},
+                 {'timezones': ['Белоруссия (UTC+03)'],
+                  'alpha-2-code': 'BY',
+                  'alpha-3-code': 'BLR',
+                  'continent': 'Европа',
+                  'name': 'Белоруссия',
+                  'capital': 'Минск'},
+                 {'timezones': ['Белиз (UTC-06)'],
+                  'alpha-2-code': 'BZ',
+                  'alpha-3-code': 'BLZ',
+                  'continent': 'Северная Америка',
+                  'name': 'Белиз',
+                  'capital': 'Бельмопан'},
+                 {'timezones': ['Канада (UTC-08)',
+                                'Канада (UTC-07)',
+                                'Канада (UTC-06)',
+                                'Канада (UTC-05)',
+                                'Канада (UTC-04)',
+                                'Канада (UTC-03:30)'],
+                  'alpha-2-code': 'CA',
+                  'alpha-3-code': 'CAN',
+                  'continent': 'Северная Америка',
+                  'name': 'Канада',
+                  'capital': 'Оттава'},
+                 {'timezones': ['Демократическая Республика Конго (UTC+01)',
+                                'Демократическая Республика Конго (UTC+02)'],
+                  'alpha-2-code': 'CD',
+                  'alpha-3-code': 'COD',
+                  'continent': 'Африка',
+                  'name': 'Демократическая Республика Конго',
+                  'capital': 'Киншаса'},
+                 {'timezones': ['Республика Конго (UTC+01)'],
+                  'alpha-2-code': 'CG',
+                  'alpha-3-code': 'COG',
+                  'continent': 'Африка',
+                  'name': 'Руспублика Конго',
+                  'capital': 'Браззавиль'},
+                 {'timezones': ["Кот-д'Ивуар (UTC)"],
+                  'alpha-2-code': 'CI',
+                  'alpha-3-code': 'CIV',
+                  'continent': 'Африка',
+                  'name': "Кот-д'Ивуар",
+                  'capital': 'Ямусукро'},
+                 {'timezones': ['Чили (UTC-06)',
+                                'Чили (UTC-04)'],
+                  'alpha-2-code': 'CL',
+                  'alpha-3-code': 'CHL',
+                  'continent': 'Южная Америка',
+                  'name': 'Чили',
+                  'capital': 'Сантьяго'},
+                 {'timezones': ['Камерун (UTC+01)'],
+                  'alpha-2-code': 'CM',
+                  'alpha-3-code': 'CMR',
+                  'continent': 'Африка',
+                  'name': 'Камерун',
+                  'capital': 'Яунде'},
+                 {'timezones': ['Китай (UTC+08)'],
+                  'alpha-2-code': 'CN',
+                  'alpha-3-code': 'CHN',
+                  'continent': 'Азия',
+                  'name': "Китайская Народная Республика",
+                  'capital': 'Пекин'},
+                 {'timezones': ['Колумбия (UTC-05)'],
+                  'alpha-2-code': 'CO',
+                  'alpha-3-code': 'COL',
+                  'continent': 'Южная Америка',
+                  'name': 'Колумбия',
+                  'capital': 'Богота'},
+                 {'timezones': ['Коста-Рика (UTC-06)'],
+                  'alpha-2-code': 'CR',
+                  'alpha-3-code': 'CRI',
+                  'continent': 'Северная Америка',
+                  'name': 'Коста-Рика',
+                  'capital': 'Сан-Хосе'},
+                 {'timezones': ['Куба (UTC-05)'],
+                  'alpha-2-code': 'CU',
+                  'alpha-3-code': 'CUB',
+                  'continent': 'Северная Америка',
+                  'name': 'Куба',
+                  'capital': 'Гавана'},
+                 {'timezones': ['Кабо-Верде (UTC-01)'],
+                  'alpha-2-code': 'CV',
+                  'alpha-3-code': 'CPV',
+                  'continent': 'Африка',
+                  'name': 'Кабо-Верде',
+                  'capital': 'Прая'},
+                 {'timezones': ['Кипр (UTC+02)'],
+                  'alpha-2-code': 'CY',
+                  'alpha-3-code': 'CYP',
+                  'continent': 'Азия',
+                  'name': 'Кипр',
+                  'capital': 'Никосия'},
+                 {'timezones': ['Чехия (UTC+01)'],
+                  'alpha-2-code': 'CZ',
+                  'alpha-3-code': 'CZE',
+                  'continent': 'Европа',
+                  'name': 'Чехия',
+                  'capital': 'Прага'},
+                 {'timezones': ['Германия (UTC+01)'],
+                  'alpha-2-code': 'DE',
+                  'alpha-3-code': 'DEU',
+                  'continent': 'Европа',
+                  'name': 'Германия',
+                  'capital': 'Берлин'},
+                 {'timezones': ['Джибути (UTC+03)'],
+                  'alpha-2-code': 'DJ',
+                  'alpha-3-code': 'DJI',
+                  'continent': 'Африка',
+                  'name': 'Джибути',
+                  'capital': 'Джибути'},
+                 {'timezones': ['Дания (UTC+01)'],
+                  'alpha-2-code': 'DK',
+                  'alpha-3-code': 'DNK',
+                  'continent': 'Европа',
+                  'name': 'Дания',
+                  'capital': 'Копенгаген'},
+                 {'timezones': ['Доминика (UTC-04)'],
+                  'alpha-2-code': 'DM',
+                  'alpha-3-code': 'DMA',
+                  'continent': 'Северная Америка',
+                  'name': 'Доминика',
+                  'capital': 'Розо'},
+                 {'timezones': ['Доминиканская Республика (UTC-04)'],
+                  'alpha-2-code': 'DO',
+                  'alpha-3-code': 'DOM',
+                  'continent': 'Северная Америка',
+                  'name': 'Доминиканская Республика',
+                  'capital': 'Санто-Доминго'},
+                 {'timezones': ['Эквадор (UTC-06)',
+                                'Эквадор (UTC-05)'],
+                  'alpha-2-code': 'EC',
+                  'alpha-3-code': 'ECU',
+                  'continent': 'Южная Америка',
+                  'name': 'Эквадор',
+                  'capital': 'Кито'},
+                 {'timezones': ['Эстония (UTC+02)'],
+                  'alpha-2-code': 'EE',
+                  'alpha-3-code': 'EST',
+                  'continent': 'Европа',
+                  'name': 'Эстония',
+                  'capital': 'Таллинн'},
+                 {'timezones': ['Египет (UTC+02)'],
+                  'alpha-2-code': 'EG',
+                  'alpha-3-code': 'EGY',
+                  'continent': 'Африка',
+                  'name': 'Египет',
+                  'capital': 'Каир'},
+                 {'timezones': ['Эритрея (UTC+03)'],
+                  'alpha-2-code': 'ER',
+                  'alpha-3-code': 'ERI',
+                  'continent': 'Африка',
+                  'name': 'Эритрея',
+                  'capital': 'Асмэра'},
+                 {'timezones': ['Эфиопия (UTC+03)'],
+                  'alpha-2-code': 'ET',
+                  'alpha-3-code': 'ETH',
+                  'continent': 'Африка',
+                  'name': 'Эфиопия',
+                  'capital': 'Аддис-Абеба'},
+                 {'timezones': ['Финляндия (UTC+02)'],
+                  'alpha-2-code': 'FI',
+                  'alpha-3-code': 'FIN',
+                  'continent': 'Европа',
+                  'name': 'Финляндия',
+                  'capital': 'Хельсинки'},
+                 {'timezones': ['Фиджи (UTC+12)'],
+                  'alpha-2-code': 'FJ',
+                  'alpha-3-code': 'FJI',
+                  'continent': 'Океания',
+                  'name': 'Фиджи',
+                  'capital': 'Сува'},
+                 {'timezones': ['Франция (UTC+01)'],
+                  'alpha-2-code': 'FR',
+                  'alpha-3-code': 'FRA',
+                  'continent': 'Европа',
+                  'name': 'Франция',
+                  'capital': 'Париж'},
+                 {'timezones': ['Габон (UTC+01)'],
+                  'alpha-2-code': 'GA',
+                  'alpha-3-code': 'GAB',
+                  'continent': 'Африка',
+                  'name': 'Габон',
+                  'capital': 'Либревиль'},
+                 {'timezones': ['Грузия (UTC+04)'],
+                  'alpha-2-code': 'GE',
+                  'alpha-3-code': 'GEO',
+                  'continent': 'Азия',
+                  'name': 'Грузия',
+                  'capital': 'Тбилиси'},
+                 {'timezones': ['Гана (UTC)'],
+                  'alpha-2-code': 'GH',
+                  'alpha-3-code': 'GHA',
+                  'continent': 'Африка',
+                  'name': 'Гана',
+                  'capital': 'Аккра'},
+                 {'timezones': ['Гамбия (UTC)'],
+                  'alpha-2-code': 'GM',
+                  'alpha-3-code': 'GMB',
+                  'continent': 'Африка',
+                  'name': 'Гамбия',
+                  'capital': 'Банджул'},
+                 {'timezones': ['Гвинея (UTC)'],
+                  'alpha-2-code': 'GN',
+                  'alpha-3-code': 'GIN',
+                  'continent': 'Африка',
+                  'name': 'Гвинея',
+                  'capital': 'Конакри'},
+                 {'timezones': ['Греция (UTC+02)'],
+                  'alpha-2-code': 'GR',
+                  'alpha-3-code': 'GRC',
+                  'continent': 'Европа',
+                  'name': 'Греция',
+                  'capital': 'Афины'},
+                 {'timezones': ['Гватемала (UTC-06)'],
+                  'alpha-2-code': 'GT',
+                  'alpha-3-code': 'GTM',
+                  'continent': 'Северная Америка',
+                  'name': 'Гватемала',
+                  'capital': 'Гватемала'},
+                 {'timezones': ['Гаити (UTC-05)'],
+                  'alpha-2-code': 'HT',
+                  'alpha-3-code': 'HTI',
+                  'continent': 'Северная Америка',
+                  'name': 'Гаити',
+                  'capital': 'Порт-о-Пренс'},
+                 {'timezones': ['Гвинея-Бисау (UTC)'],
+                  'alpha-2-code': 'GW',
+                  'alpha-3-code': 'GNB',
+                  'continent': 'Африка',
+                  'name': 'Гвинея-Бисау',
+                  'capital': 'Бисау'},
+                 {'timezones': ['Гайана (UTC-04)'],
+                  'alpha-2-code': 'GY',
+                  'alpha-3-code': 'GUY',
+                  'continent': 'Южная Америка',
+                  'name': 'Гайана',
+                  'capital': 'Джорджтаун'},
+                 {'timezones': ['Гондурас (UTC-06)'],
+                  'alpha-2-code': 'HN',
+                  'alpha-3-code': 'HND',
+                  'continent': 'Северная Америка',
+                  'name': 'Гондурас',
+                  'capital': 'Тегусигальпа'},
+                 {'timezones': ['Венгрия (UTC+01)'],
+                  'alpha-2-code': 'HU',
+                  'alpha-3-code': 'HUN',
+                  'continent': 'Европа',
+                  'name': 'Венгрия',
+                  'capital': 'Будапешт'},
+                 {'timezones': ['Индонезия (UTC+07)',
+                                'Индонезия (UTC+08)',
+                                'Индонезия (UTC+09)'],
+                  'alpha-2-code': 'ID',
+                  'alpha-3-code': 'IDN',
+                  'continent': 'Азия',
+                  'name': 'Индонезия',
+                  'capital': 'Джакарта'},
+                 {'timezones': ['Ирландия (UTC)'],
+                  'alpha-2-code': 'IE',
+                  'alpha-3-code': 'IRL',
+                  'continent': 'Европа',
+                  'name': 'Ирландия',
+                  'capital': 'Дублин'},
+                 {'timezones': ['Израиль (UTC+02)'],
+                  'alpha-2-code': 'IL',
+                  'alpha-3-code': 'ISR',
+                  'continent': 'Азия',
+                  'name': 'Израиль',
+                  'capital': 'Иерусалим'},
+                 {'timezones': ['Индия (UTC+05:30'],
+                  'alpha-2-code': 'IN',
+                  'alpha-3-code': 'IND',
+                  'continent': 'Азия',
+                  'name': 'Индия',
+                  'capital': 'Дели'},
+                 {'timezones': ['Ирак (UTC+03)'],
+                  'alpha-2-code': 'IQ',
+                  'alpha-3-code': 'IRQ',
+                  'continent': 'Азия',
+                  'name': 'Ирак',
+                  'capital': 'Багдад'},
+                 {'timezones': ['Иран (UTC+03:30)'],
+                  'alpha-2-code': 'IR',
+                  'alpha-3-code': 'IRN',
+                  'continent': 'Азия',
+                  'name': 'Иран',
+                  'capital': 'Тегеран'},
+                 {'timezones': ['Исландия (UTC)'],
+                  'alpha-2-code': 'IS',
+                  'alpha-3-code': 'ISL',
+                  'continent': 'Европа',
+                  'name': 'Исландия',
+                  'capital': 'Рейкьявик'},
+                 {'timezones': ['Италия (UTC+01)'],
+                  'alpha-2-code': 'IT',
+                  'alpha-3-code': 'ITA',
+                  'continent': 'Европа',
+                  'name': 'Италия',
+                  'capital': 'Рим'},
+                 {'timezones': ['Ямайка (UTC-05)'],
+                  'alpha-2-code': 'JM',
+                  'alpha-3-code': 'JAM',
+                  'continent': 'Северная Америка',
+                  'name': 'Ямайка',
+                  'capital': 'Кингстон'},
+                 {'timezones': ['Иордания (UTC+02)'],
+                  'alpha-2-code': 'JO',
+                  'alpha-3-code': 'JOR',
+                  'continent': 'Азия',
+                  'name': 'Иордания',
+                  'capital': 'Амман'},
+                 {'timezones': ['Япония (UTC+09)'],
+                  'alpha-2-code': 'JP',
+                  'alpha-3-code': 'JPN',
+                  'continent': 'Азия',
+                  'name': 'Япония',
+                  'capital': 'Токио'},
+                 {'timezones': ['Кения (UTC+03)'],
+                  'alpha-2-code': 'KE',
+                  'alpha-3-code': 'KEN',
+                  'continent': 'Африка',
+                  'name': 'Кения',
+                  'capital': 'Найроби'},
+                 {'timezones': ['Киргизия (UTC+06)'],
+                  'alpha-2-code': 'KG',
+                  'alpha-3-code': 'KGZ',
+                  'continent': 'Азия',
+                  'name': 'Киргизия',
+                  'capital': 'Бишкек'},
+                 {'timezones': ['Кирибати (UTC+12)',
+                                'Кирибати (UTC+13)',
+                                'Кирибати (UTC+14)'],
+                  'alpha-2-code': 'KI',
+                  'alpha-3-code': 'KIR',
+                  'continent': 'Океания',
+                  'name': 'Кирибати',
+                  'capital': 'Южная Тарава'},
+                 {'timezones': ['КНДР (UTC+09)'],
+                  'alpha-2-code': 'KP',
+                  'alpha-3-code': 'PRK',
+                  'continent': 'Азия',
+                  'name': 'КНДР',
+                  'capital': 'Пхеньян'},
+                 {'timezones': ['Республика Корея (UTC+09)'],
+                  'alpha-2-code': 'KR',
+                  'alpha-3-code': 'KOR',
+                  'continent': 'Азия',
+                  'name': 'Республика Корея',
+                  'capital': 'Сеул'},
+                 {'timezones': ['Кувейт (UTC+03)'],
+                  'alpha-2-code': 'KW',
+                  'alpha-3-code': 'KWT',
+                  'continent': 'Азия',
+                  'name': 'Кувейт',
+                  'capital': 'Эль-Кувейт'},
+                 {'timezones': ['Ливан (UTC+02)'],
+                  'alpha-2-code': 'LB',
+                  'alpha-3-code': 'LBN',
+                  'continent': 'Азия',
+                  'name': 'Ливан',
+                  'capital': 'Бейрут'},
+                 {'timezones': ['Лихтенштейн (UTC+01)'],
+                  'alpha-2-code': 'LI',
+                  'alpha-3-code': 'LIE',
+                  'continent': 'Европа',
+                  'name': 'Лихтенштейн',
+                  'capital': 'Вадуц'},
+                 {'timezones': ['Либерия (UTC)'],
+                  'alpha-2-code': 'LR',
+                  'alpha-3-code': 'LBR',
+                  'continent': 'Африка',
+                  'name': 'Либерия',
+                  'capital': 'Монровия'},
+                 {'timezones': ['Лесото (UTC+02)'],
+                  'alpha-2-code': 'LS',
+                  'alpha-3-code': 'LSO',
+                  'continent': 'Африка',
+                  'name': 'Лесото',
+                  'capital': 'Масеру'},
+                 {'timezones': ['Литва (UTC+02)'],
+                  'alpha-2-code': 'LT',
+                  'alpha-3-code': 'LTU',
+                  'continent': 'Европа',
+                  'name': 'Литва',
+                  'capital': 'Вильнюс'},
+                 {'timezones': ['Люксембург (UTC+01)'],
+                  'alpha-2-code': 'LU',
+                  'alpha-3-code': 'LUX',
+                  'continent': 'Европа',
+                  'name': 'Люксембург',
+                  'capital': 'Люксембург'},
+                 {'timezones': ['Латвия (UTC+02)'],
+                  'alpha-2-code': 'LV',
+                  'alpha-3-code': 'LVA',
+                  'continent': 'Европа',
+                  'name': 'Латвия',
+                  'capital': 'Рига'},
+                 {'timezones': ['Ливия (UTC+02)'],
+                  'alpha-2-code': 'LY',
+                  'alpha-3-code': 'LBY',
+                  'continent': 'Африка',
+                  'name': 'Ливия',
+                  'capital': 'Триполи'},
+                 {'timezones': ['Мадагаскар (UTC+03)'],
+                  'alpha-2-code': 'MG',
+                  'alpha-3-code': 'MDG',
+                  'continent': 'Африка',
+                  'name': 'Мадагаскар',
+                  'capital': 'Антананариву'},
+                 {'timezones': ['Маршалловы Острова (UTC+12)'],
+                  'alpha-2-code': 'MH',
+                  'alpha-3-code': 'MHL',
+                  'continent': 'Океания',
+                  'name': 'Маршалловы Острова',
+                  'capital': 'Маджуро'},
+                 {'timezones': ['Северная Македония (UTC+01)'],
+                  'alpha-2-code': 'MK',
+                  'alpha-3-code': 'MKD',
+                  'continent': 'Европа',
+                  'name': 'Северная Македония',
+                  'capital': 'Скопье'},
+                 {'timezones': ['Мали (UTC)'],
+                  'alpha-2-code': 'ML',
+                  'alpha-3-code': 'MLI',
+                  'continent': 'Африка',
+                  'name': 'Мали',
+                  'capital': 'Бамако'},
+                 {'timezones': ['Мьянма (UTC+06:30)'],
+                  'alpha-2-code': 'MM',
+                  'alpha-3-code': 'MMR',
+                  'continent': 'Азия',
+                  'name': 'Мьянма',
+                  'capital': 'Нейпьидо'},
+                 {'timezones': ['Монголия (UTC+07)',
+                                'Монголия (UTC+08)'],
+                  'alpha-2-code': 'MN',
+                  'alpha-3-code': 'MNG',
+                  'continent': 'Азия',
+                  'name': 'Монголия',
+                  'capital': 'Улан-Батор'},
+                 {'timezones': ['Мавритания (UTC)'],
+                  'alpha-2-code': 'MR',
+                  'alpha-3-code': 'MRT',
+                  'continent': 'Африка',
+                  'name': 'Мавритания',
+                  'capital': 'Нуакшот'},
+                 {'timezones': ['Мальта (UTC+01)'],
+                  'alpha-2-code': 'MT',
+                  'alpha-3-code': 'MLT',
+                  'continent': 'Европа',
+                  'name': 'Мальта',
+                  'capital': 'Валлетта'},
+                 {'timezones': ['Маврикий (UTC+04)'],
+                  'alpha-2-code': 'MU',
+                  'alpha-3-code': 'MUS',
+                  'continent': 'Африка',
+                  'name': 'Маврикий',
+                  'capital': 'Порт-Луи'},
+                 {'timezones': ['Мальдивы (UTC+05)'],
+                  'alpha-2-code': 'MV',
+                  'alpha-3-code': 'MDV',
+                  'continent': 'Азия',
+                  'name': 'Мальдивы',
+                  'capital': 'Мале'},
+                 {'timezones': ['Малави (UTC+02)'],
+                  'alpha-2-code': 'MW',
+                  'alpha-3-code': 'MWI',
+                  'continent': 'Африка',
+                  'name': 'Малави',
+                  'capital': 'Лилонгве'},
+                 {'timezones': ['Мексика (UTC-08)',
+                                'Мексика (UTC-07)',
+                                'Мексика (UTC-06)'],
+                  'alpha-2-code': 'MX',
+                  'alpha-3-code': 'MEX',
+                  'continent': 'Северная Америка',
+                  'name': 'Мексика',
+                  'capital': 'Мехико'},
+                 {'timezones': ['Малайзия (UTC+08)'],
+                  'alpha-2-code': 'MY',
+                  'alpha-3-code': 'MYS',
+                  'continent': 'Азия',
+                  'name': 'Малайзия',
+                  'capital': 'Куала-Лумпур'},
+                 {'timezones': ['Мозамбик (UTC+02)'],
+                  'alpha-2-code': 'MZ',
+                  'alpha-3-code': 'MOZ',
+                  'continent': 'Африка',
+                  'name': 'Мозамбик',
+                  'capital': 'Мапуту'},
+                 {'timezones': ['Намибия (UTC+01)'],
+                  'alpha-2-code': 'NA',
+                  'alpha-3-code': 'NAM',
+                  'continent': 'Африка',
+                  'name': 'Намибия',
+                  'capital': 'Виндхук'},
+                 {'timezones': ['Нигер (UTC+01)'],
+                  'alpha-2-code': 'NE',
+                  'alpha-3-code': 'NER',
+                  'continent': 'Африка',
+                  'name': 'Нигер',
+                  'capital': 'Ниамей'},
+                 {'timezones': ['Нигерия (UTC+01)'],
+                  'alpha-2-code': 'NG',
+                  'alpha-3-code': 'NGA',
+                  'continent': 'Африка',
+                  'name': 'Нигерия',
+                  'capital': 'Абуджа'},
+                 {'timezones': ['Никарагуа (UTC-06)'],
+                  'alpha-2-code': 'NI',
+                  'alpha-3-code': 'NIC',
+                  'continent': 'Северная Америка',
+                  'name': 'Никарагуа',
+                  'capital': 'Манагуа'},
+                 {'timezones': ['Нидерланды (UTC+01)'],
+                  'alpha-2-code': 'NL',
+                  'alpha-3-code': 'NLD',
+                  'continent': 'Европа',
+                  'name': 'Нидерланды',
+                  'capital': 'Амстердам'},
+                 {'timezones': ['Норвегия (UTC+01)'],
+                  'alpha-2-code': 'NO',
+                  'alpha-3-code': 'NOR',
+                  'continent': 'Европа',
+                  'name': 'Норвегия',
+                  'capital': 'Осло'},
+                 {'timezones': ['Непал (UTC+05:45'],
+                  'alpha-2-code': 'NP',
+                  'alpha-3-code': 'NPL',
+                  'continent': 'Азия',
+                  'name': 'Непал',
+                  'capital': 'Катманду'},
+                 {'timezones': ['Науру (UTC+12)'],
+                  'alpha-2-code': 'NR',
+                  'alpha-3-code': 'NRU',
+                  'continent': 'Океания',
+                  'name': 'Науру',
+                  'capital': 'Ярен'},
+                 {'timezones': ['Новая Зеландия (UTC+12)'],
+                  'alpha-2-code': 'NZ',
+                  'alpha-3-code': 'NZL',
+                  'continent': 'Океания',
+                  'name': 'Новая Зеландия',
+                  'capital': 'Веллингтон'},
+                 {'timezones': ['Оман (UTC+04'],
+                  'alpha-2-code': 'OM',
+                  'alpha-3-code': 'OMN',
+                  'continent': 'Азия',
+                  'name': 'Оман',
+                  'capital': 'Маскат'},
+                 {'timezones': ['Панама (UTC-05)'],
+                  'alpha-2-code': 'PA',
+                  'alpha-3-code': 'PAN',
+                  'continent': 'Северная Америка',
+                  'name': 'Панама',
+                  'capital': 'Панама'},
+                 {'timezones': ['Перу (UTC-05)'],
+                  'alpha-2-code': 'PE',
+                  'alpha-3-code': 'PER',
+                  'continent': 'Южная Америка',
+                  'name': 'Перу',
+                  'capital': 'Лима'},
+                 {'timezones': ['Папуа - Новая Гвинея (UTC+10)'],
+                  'alpha-2-code': 'PG',
+                  'alpha-3-code': 'PNG',
+                  'continent': 'Океания',
+                  'name': 'Папуа - Новая Гвинея',
+                  'capital': 'Порт-Морсби'},
+                 {'timezones': ['Филиппины (UTC+08)'],
+                  'alpha-2-code': 'PH',
+                  'alpha-3-code': 'PHL',
+                  'continent': 'Азия',
+                  'name': 'Филиппины',
+                  'capital': 'Манила'},
+                 {'timezones': ['Пакистан (UTC+05)'],
+                  'alpha-2-code': 'PK',
+                  'alpha-3-code': 'PAK',
+                  'continent': 'Азия',
+                  'name': 'Пакистан',
+                  'capital': 'Исламабад'},
+                 {'timezones': ['Польша (UTC+01)'],
+                  'alpha-2-code': 'PL',
+                  'alpha-3-code': 'POL',
+                  'continent': 'Европа',
+                  'name': 'Польша',
+                  'capital': 'Варшава'},
+                 {'timezones': ['Португалия (UTC)'],
+                  'alpha-2-code': 'PT',
+                  'alpha-3-code': 'PRT',
+                  'continent': 'Европа',
+                  'name': 'Португалия',
+                  'capital': 'Лиссабон'},
+                 {'timezones': ['Палау (UTC+09)'],
+                  'alpha-2-code': 'PW',
+                  'alpha-3-code': 'PLW',
+                  'continent': 'Океания',
+                  'name': 'Палау',
+                  'capital': 'Кампала'},
+                 {'timezones': ['Парагвай (UTC-04)'],
+                  'alpha-2-code': 'PY',
+                  'alpha-3-code': 'PRY',
+                  'continent': 'Южная Америка',
+                  'name': 'Парагвай',
+                  'capital': 'Асунсьон'},
+                 {'timezones': ['Катар (UTC+03)'],
+                  'alpha-2-code': 'QA',
+                  'alpha-3-code': 'QAT',
+                  'continent': 'Азия',
+                  'name': 'Катар',
+                  'capital': 'Доха'},
+                 {'timezones': ['Румыния (UTC+02)'],
+                  'alpha-2-code': 'RO',
+                  'alpha-3-code': 'ROU',
+                  'continent': 'Европа',
+                  'name': 'Румыния',
+                  'capital': 'Бухарест'},
+                 {'timezones': ['Россия (UTC+02)',
+                                'Россия (UTC+03)',
+                                'Россия (UTC+04)',
+                                'Россия (UTC+05)',
+                                'Россия (UTC+06)',
+                                'Россия (UTC+07)',
+                                'Россия (UTC+08)',
+                                'Россия (UTC+09)',
+                                'Россия (UTC+10)',
+                                'Россия (UTC+11)',
+                                'Россия (UTC+12)'],
+                  'alpha-2-code': 'RU',
+                  'alpha-3-code': 'RUS',
+                  'continent': 'Европа',
+                  'name': 'Россия',
+                  'capital': 'Москва'},
+                 {'timezones': ['Руанда (UTC+02)'],
+                  'alpha-2-code': 'RW',
+                  'alpha-3-code': 'RWA',
+                  'continent': 'Африка',
+                  'name': 'Руанда',
+                  'capital': 'Кигали'},
+                 {'timezones': ['Саудовская Аравия (UTC+03)'],
+                  'alpha-2-code': 'SA',
+                  'alpha-3-code': 'SAU',
+                  'continent': 'Азия',
+                  'name': 'Саудовская Аравия',
+                  'capital': 'Эр-Рияд'},
+                 {'timezones': ['Соломоновы Острова (UTC+11)'],
+                  'alpha-2-code': 'SB',
+                  'alpha-3-code': 'SLB',
+                  'continent': 'Океания',
+                  'name': 'Соломоновы Острова',
+                  'capital': 'Хониара'},
+                 {'timezones': ['Сейшельские острова (UTC+04)'],
+                  'alpha-2-code': 'SC',
+                  'alpha-3-code': 'SYC',
+                  'continent': 'Африка',
+                  'name': 'Сейшельские острова',
+                  'capital': 'Виктория'},
+                 {'timezones': ['Судан (UTC+03)'],
+                  'alpha-2-code': 'SD',
+                  'alpha-3-code': 'SDN',
+                  'continent': 'Африка',
+                  'name': 'Судан',
+                  'capital': 'Хартум'},
+                 {'timezones': ['Швеция (UTC+01)'],
+                  'alpha-2-code': 'SE',
+                  'alpha-3-code': 'SWE',
+                  'continent': 'Европа',
+                  'name': 'Швеци',
+                  'capital': 'Стокгольм'},
+                 {'timezones': ['Сингапур (UTC+08)'],
+                  'alpha-2-code': 'SG',
+                  'alpha-3-code': 'SGP',
+                  'continent': 'Азия',
+                  'name': 'Сингапур',
+                  'capital': 'Сингапур'},
+                 {'timezones': ['Словения (UTC+01)'],
+                  'alpha-2-code': 'SI',
+                  'alpha-3-code': 'SVN',
+                  'continent': 'Европа',
+                  'name': 'Словения',
+                  'capital': 'Любляна'},
+                 {'timezones': ['Словакия (UTC+01)'],
+                  'alpha-2-code': 'SK',
+                  'alpha-3-code': 'SVK',
+                  'continent': 'Европа',
+                  'name': 'Словакия',
+                  'capital': 'Братислава'},
+                 {'timezones': ['Сьерра-Леоне (UTC)'],
+                  'alpha-2-code': 'SL',
+                  'alpha-3-code': 'SLE',
+                  'continent': 'Африка',
+                  'name': 'Сьерра Леоне',
+                  'capital': 'Фритаун'},
+                 {'timezones': ['Сан-Марино (UTC+01)'],
+                  'alpha-2-code': 'SM',
+                  'alpha-3-code': 'SMR',
+                  'continent': 'Европа',
+                  'name': 'Сан-Марино',
+                  'capital': 'Сан-Марино'},
+                 {'timezones': ['Сенегал (UTC)'],
+                  'alpha-2-code': 'SN',
+                  'alpha-3-code': 'SEN',
+                  'continent': 'Африка',
+                  'name': 'Сенегал',
+                  'capital': 'Дакар'},
+                 {'timezones': ['Сомали (UTC+03)'],
+                  'alpha-2-code': 'SO',
+                  'alpha-3-code': 'SOM',
+                  'continent': 'Африка',
+                  'name': 'Сомали',
+                  'capital': 'Могадишо'},
+                 {'timezones': ['Суринам (UTC-03)'],
+                  'alpha-2-code': 'SR',
+                  'alpha-3-code': 'SUR',
+                  'continent': 'Южная Америка',
+                  'name': 'Суринам',
+                  'capital': 'Парамарибо'},
+                 {'timezones': ['Сан-Томе и Принсипи (UTC)'],
+                  'alpha-2-code': 'ST',
+                  'alpha-3-code': 'STP',
+                  'continent': 'Африка',
+                  'name': 'Сан-Томе и Принсипи',
+                  'capital': 'Сан-Томе'},
+                 {'timezones': ['Сирия (UTC+02)'],
+                  'alpha-2-code': 'SY',
+                  'alpha-3-code': 'SYR',
+                  'continent': 'Азия',
+                  'name': 'Сирия',
+                  'capital': 'Дамаск'},
+                 {'timezones': ['Того (UTC)'],
+                  'alpha-2-code': 'TG',
+                  'alpha-3-code': 'TGO',
+                  'continent': 'Африка',
+                  'name': 'Того',
+                  'capital': 'Ломе'},
+                 {'timezones': ['Таиланд (UTC+07)'],
+                  'alpha-2-code': 'TH',
+                  'alpha-3-code': 'THA',
+                  'continent': 'Азия',
+                  'name': 'Таиланд',
+                  'capital': 'Бангкок'},
+                 {'timezones': ['Таджикистан (UTC+05)'],
+                  'alpha-2-code': 'TJ',
+                  'alpha-3-code': 'TJK',
+                  'continent': 'Азия',
+                  'name': 'Таджикистан',
+                  'capital': 'Душанбе'},
+                 {'timezones': ['Туркмения (UTC+05)'],
+                  'alpha-2-code': 'TM',
+                  'alpha-3-code': 'TKM',
+                  'continent': 'Азия',
+                  'name': 'Туркмения',
+                  'capital': 'Ашхабад'},
+                 {'timezones': ['Тунис (UTC+01)'],
+                  'alpha-2-code': 'TN',
+                  'alpha-3-code': 'TUN',
+                  'continent': 'Африка',
+                  'name': 'Тунис',
+                  'capital': 'Тунис'},
+                 {'timezones': ['Тонга (UTC+13)'],
+                  'alpha-2-code': 'TO',
+                  'alpha-3-code': 'TON',
+                  'continent': 'Океания',
+                  'name': 'Тонга',
+                  'capital': 'Нукуалофа'},
+                 {'timezones': ['Турция (UTC+02)'],
+                  'alpha-2-code': 'TR',
+                  'alpha-3-code': 'TUR',
+                  'continent': 'Азия',
+                  'name': 'Турция',
+                  'capital': 'Анкара'},
+                 {'timezones': ['Тринидад и Тобаго (UTC-04)'],
+                  'alpha-2-code': 'TT',
+                  'alpha-3-code': 'TTO',
+                  'continent': 'Северная Америка',
+                  'name': 'Тринидад и Тобаго',
+                  'capital': 'Порт-оф-Спейн'},
+                 {'timezones': ['Тувалу (UTC+12)'],
+                  'alpha-2-code': 'TV',
+                  'alpha-3-code': 'TUV',
+                  'continent': 'Океания',
+                  'name': 'Тувалу',
+                  'capital': 'Фунафути'},
+                 {'timezones': ['Танзания (UTC+03)'],
+                  'alpha-2-code': 'TZ',
+                  'alpha-3-code': 'TZA',
+                  'continent': 'Африка',
+                  'name': 'Танзания',
+                  'capital': 'Додома'},
+                 {'timezones': ['Украина (UTC+02)',
+                                'Украина (UTC+03)'],
+                  'alpha-2-code': 'UA',
+                  'alpha-3-code': 'UKR',
+                  'continent': 'Европа',
+                  'name': 'Украина',
+                  'capital': 'Киев'},
+                 {'timezones': ['Уганда (UTC+03)'],
+                  'alpha-2-code': 'UG',
+                  'alpha-3-code': 'UGA',
+                  'continent': 'Африка',
+                  'name': 'Уганда',
+                  'capital': 'Кампала'},
+                 {'timezones': ['США (UTC-11)',
+                                'США (UTC-10)',
+                                'США (UTC-09)',
+                                'США (UTC-08)',
+                                'США (UTC-07)',
+                                'США (UTC-06)',
+                                'США (UTC-05)',
+                                'США (UTC-04)',
+                                'США (UTC+10)'],
+                  'alpha-2-code': 'US',
+                  'alpha-3-code': 'USA',
+                  'continent': 'Северная Америка',
+                  'name': 'США',
+                  'capital': 'Вашингтон'},
+                 {'timezones': ['Уругвай (UTC-03)'],
+                  'alpha-2-code': 'UY',
+                  'alpha-3-code': 'URY',
+                  'continent': 'Южная Америка',
+                  'name': 'Уругвай',
+                  'capital': 'Монтевидео'},
+                 {'timezones': ['Узбекистан (UTC+05)'],
+                  'alpha-2-code': 'UZ',
+                  'alpha-3-code': 'UZB',
+                  'continent': 'Азия',
+                  'name': 'Узбекистан',
+                  'capital': 'Ташкент'},
+                 {'timezones': ['Ватикан (UTC+01)'],
+                  'alpha-2-code': 'VA',
+                  'alpha-3-code': 'VAT',
+                  'continent': 'Европа',
+                  'name': 'Ватикан',
+                  'capital': 'Ватикан'},
+                 {'timezones': ['Венесуэла (UTC-04:30)'],
+                  'alpha-2-code': 'VE',
+                  'alpha-3-code': 'VEN',
+                  'continent': 'Южная Америка',
+                  'name': 'Венесуэла',
+                  'capital': 'Каракас'},
+                 {'timezones': ['Вьетнам (UTC+07)'],
+                  'alpha-2-code': 'VN',
+                  'alpha-3-code': 'VNM',
+                  'continent': 'Азия',
+                  'name': 'Вьетнам',
+                  'capital': 'Ханой'},
+                 {'timezones': ['Вануату (UTC+11)'],
+                  'alpha-2-code': 'VU',
+                  'alpha-3-code': 'VUT',
+                  'continent': 'Океания',
+                  'name': 'Вануату',
+                  'capital': 'Порт-Вила'},
+                 {'timezones': ['Йемен (UTC+03)'],
+                  'alpha-2-code': 'YE',
+                  'alpha-3-code': 'YEM',
+                  'continent': 'Азия',
+                  'name': 'Йемен',
+                  'capital': "Сана"},
+                 {'timezones': ['Замбия (UTC+02)'],
+                  'alpha-2-code': 'ZM',
+                  'alpha-3-code': 'ZMB',
+                  'continent': 'Африка',
+                  'name': 'Замбия',
+                  'capital': 'Лусака'},
+                 {'timezones': ['Зимбабве (UTC+02)'],
+                  'alpha-2-code': 'ZW',
+                  'alpha-3-code': 'ZWE',
+                  'continent': 'Африка',
+                  'name': 'Зимбабве',
+                  'capital': 'Хараре'},
+                 {'timezones': ['Алжир (UTC+01)'],
+                  'alpha-2-code': 'DZ',
+                  'alpha-3-code': 'DZA',
+                  'continent': 'Африка',
+                  'name': 'Алжир',
+                  'capital': 'Алжир'},
+                 {'timezones': ['Босния и Герцеговина (UTC+01)'],
+                  'alpha-2-code': 'BA',
+                  'alpha-3-code': 'BIH',
+                  'continent': 'Европа',
+                  'name': 'Босния и Герцеговина',
+                  'capital': 'Сараево'},
+                 {'timezones': ['Камбоджа (UTC+07)'],
+                  'alpha-2-code': 'KH',
+                  'alpha-3-code': 'KHM',
+                  'continent': 'Азия',
+                  'name': 'Камбоджа',
+                  'capital': 'Пномпень'},
+                 {'timezones': ['ЦАР (UTC+01)'],
+                  'alpha-2-code': 'CF',
+                  'alpha-3-code': 'CAF',
+                  'continent': 'Африка',
+                  'name': 'ЦАР',
+                  'capital': 'Банги'},
+                 {'timezones': ['Чад (UTC+01)'],
+                  'alpha-2-code': 'TD',
+                  'alpha-3-code': 'TCD',
+                  'continent': 'Африка',
+                  'name': 'Чад',
+                  'capital': "Нджамена"},
+                 {'timezones': ['Коморы (UTC+03)'],
+                  'alpha-2-code': 'KM',
+                  'alpha-3-code': 'COM',
+                  'continent': 'Африка',
+                  'name': 'Коморы',
+                  'capital': 'Морони'},
+                 {'timezones': ['Хорватия (UTC+01)'],
+                  'alpha-2-code': 'HR',
+                  'alpha-3-code': 'HRV',
+                  'continent': 'Европа',
+                  'name': 'Хорватия',
+                  'capital': 'Загреб'},
+                 {'timezones': ['Восточный Тимор (UTC+09)'],
+                  'alpha-2-code': 'TL',
+                  'alpha-3-code': 'TLS',
+                  'continent': 'Азия',
+                  'name': 'Восточный Тимор',
+                  'capital': 'Дили'},
+                 {'timezones': ['Сальвадор (UTC-06)'],
+                  'alpha-2-code': 'SV',
+                  'alpha-3-code': 'SLV',
+                  'continent': 'Северная Америка',
+                  'name': 'Сальвадор',
+                  'capital': 'Сан-Сальвадор'},
+                 {'timezones': ['Экваториальная Гвинея (UTC+01)'],
+                  'alpha-2-code': 'GQ',
+                  'alpha-3-code': 'GNQ',
+                  'continent': 'Африка',
+                  'name': 'Экваториальная Гвинея',
+                  'capital': 'Малабо'},
+                 {'timezones': ['Гренада (UTC-04)'],
+                  'alpha-2-code': 'GD',
+                  'alpha-3-code': 'GRD',
+                  'continent': 'Северная Америка',
+                  'name': 'Гренада',
+                  'capital': "Сент-Джорджес"},
+                 {'timezones': ['Казахстан (UTC+05)',
+                                'Казахстан (UTC+06)'],
+                  'alpha-2-code': 'KZ',
+                  'alpha-3-code': 'KAZ',
+                  'continent': 'Азия',
+                  'name': 'Казахстан',
+                  'capital': 'Нур-Султан (Астана)'},
+                 {'timezones': ['Лаос (UTC+07)'],
+                  'alpha-2-code': 'LA',
+                  'alpha-3-code': 'LAO',
+                  'continent': 'Азия',
+                  'name': 'Лаос',
+                  'capital': 'Вьентьян'},
+                 {'timezones': ['Микронезия (UTC+10)',
+                                'Микронезия (UTC+11)'],
+                  'alpha-2-code': 'FM',
+                  'alpha-3-code': 'FSM',
+                  'continent': 'Океания',
+                  'name': 'Микронезия',
+                  'capital': 'Паликир'},
+                 {'timezones': ['Молдавия (UTC+02)'],
+                  'alpha-2-code': 'MD',
+                  'alpha-3-code': 'MDA',
+                  'continent': 'Европа',
+                  'name': 'Молдавия',
+                  'capital': 'Кишинев'},
+                 {'timezones': ['Монако (UTC+01)'],
+                  'alpha-2-code': 'MC',
+                  'alpha-3-code': 'MCO',
+                  'continent': 'Европа',
+                  'name': 'Монако',
+                  'capital': 'Монако'},
+                 {'timezones': ['Черногория (UTC+01)'],
+                  'alpha-2-code': 'ME',
+                  'alpha-3-code': 'MNE',
+                  'continent': 'Европа',
+                  'name': 'Черногория',
+                  'capital': 'Подгорица'},
+                 {'timezones': ['Марокко (UTC)'],
+                  'alpha-2-code': 'MA',
+                  'alpha-3-code': 'MAR',
+                  'continent': 'Африка',
+                  'name': 'Марокко',
+                  'capital': 'Рабат'},
+                 {'timezones': ['Сент-Китс и Невис (UTC-04)'],
+                  'alpha-2-code': 'KN',
+                  'alpha-3-code': 'KNA',
+                  'continent': 'Северная Америка',
+                  'name': 'Сент-Китс и Невис',
+                  'capital': 'Бастер'},
+                 {'timezones': ['Сент-Люсия (UTC-04)'],
+                  'alpha-2-code': 'LC',
+                  'alpha-3-code': 'LCA',
+                  'continent': 'Северная Америка',
+                  'name': 'Сент-Люсия',
+                  'capital': 'Кастри'},
+                 {'timezones': ['Сент-Винсент и Гренадины (UTC-04)'],
+                  'alpha-2-code': 'VC',
+                  'alpha-3-code': 'VCT',
+                  'continent': 'Северная Америка',
+                  'name': 'Сент-Винсент и Гренадины',
+                  'capital': 'Кингстаун'},
+                 {'timezones': ['Самоа (UTC+13)'],
+                  'alpha-2-code': 'WS',
+                  'alpha-3-code': 'WSM',
+                  'continent': 'Океания',
+                  'name': 'Самоа',
+                  'capital': 'Апиа'},
+                 {'timezones': ['Сербия (UTC+01)'],
+                  'alpha-2-code': 'RS',
+                  'alpha-3-code': 'SRB',
+                  'continent': 'Европа',
+                  'name': 'Сербия',
+                  'capital': 'Белград'},
+                 {'timezones': ['ЮАР (UTC+02)'],
+                  'alpha-2-code': 'ZA',
+                  'alpha-3-code': 'ZAF',
+                  'continent': 'Африка',
+                  'name': 'ЮАР',
+                  'capital': 'Претория'},
+                 {'timezones': ['Испания (UTC)',
+                                'Испания (UTC+01)'],
+                  'alpha-2-code': 'ES',
+                  'alpha-3-code': 'ESP',
+                  'continent': 'Европа',
+                  'name': 'Испания',
+                  'capital': 'Мадрид'},
+                 {'timezones': ['Шри-Ланка (UTC+05:30)'],
+                  'alpha-2-code': 'LK',
+                  'alpha-3-code': 'LKA',
+                  'continent': 'Азия',
+                  'name': 'Шри-Ланка',
+                  'capital': 'Шри-Джаяварденепура-Котте'},
+                 {'timezones': ['Эсватини (Свазиленд) (UTC+02)'],
+                  'alpha-2-code': 'SZ',
+                  'alpha-3-code': 'SWZ',
+                  'continent': 'Африка',
+                  'name': 'Эсватини (Свазиленд)',
+                  'capital': 'Мбабане'},
+                 {'timezones': ['Швейцария (UTC+01)'],
+                  'alpha-2-code': 'CH',
+                  'alpha-3-code': 'CHE',
+                  'continent': 'Европа',
+                  'name': 'Швейцария',
+                  'capital': 'Берн'},
+                 {'timezones': ['ОАЭ (UTC+04)'],
+                  'alpha-2-code': 'AE',
+                  'alpha-3-code': 'ARE',
+                  'continent': 'Азия',
+                  'name': 'ОАЭ',
+                  'capital': 'Абу-Даби'},
+                 {'timezones': ['Великобритания (UTC)'],
+                  'alpha-2-code': 'GB',
+                  'alpha-3-code': 'GBR',
+                  'continent': 'Европа',
+                  'name': 'Великобритания',
+                  'capital': 'Лондон'},
+                 ]
+
     def day_of_week(self):
         day = self.date('%w')
-        DAY_NAMES = {
-            "0": "Воскресенье",
-            "1": "Понедельник",
-            "2": "Вторник",
-            "3": "Среда",
-            "4": "Четверг",
-            "5": "Пятница",
-            "6": "Суббота",
-        }
-        return DAY_NAMES[day]
+        return self.DAY_NAMES[day]
 
     def month_name(self):
         month = self.month()
-        MONTH_NAMES = {
-            "01": "Январь",
-            "02": "Февраль",
-            "03": "Март",
-            "04": "Апрель",
-            "05": "Май",
-            "06": "Июнь",
-            "07": "Июль",
-            "08": "Август",
-            "09": "Сентябрь",
-            "10": "Октябрь",
-            "11": "Ноябрь",
-            "12": "Декабрь",
-        }
-        return MONTH_NAMES[month]
+        return self.MONTH_NAMES[month]
diff --git a/faker/providers/person/ru_RU/__init__.py b/faker/providers/person/ru_RU/__init__.py
index 62c68d2b..b122f32c 100644
--- a/faker/providers/person/ru_RU/__init__.py
+++ b/faker/providers/person/ru_RU/__init__.py
@@ -3,15 +3,33 @@ from collections import OrderedDict
 from .. import Provider as PersonProvider
 
 
+# See transliteration table https://en.wikipedia.org/wiki/Romanization_of_Russian#Transliteration_table
+def translit(text):
+    translit_dict = {
+      'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'e', 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'y',
+      'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', 'ф': 'f',
+      'х': 'kh', 'ц': 'ts', 'ч': 'ch', 'ш': 'sh', 'щ': 'shch', 'ъ': '', 'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu',
+      'я': 'ya', 'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'Ye', 'Ë': 'E', 'Ж': 'Zh', 'З': 'Z', 'И': 'I',
+      'Й': 'Y', 'К': 'K', 'Л': 'L', 'М': 'M', 'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U',
+      'Ф': 'F', 'Х': 'Kh', 'Ц': 'Ts', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Shch', 'Ы': 'Y', 'Э': 'E', 'Ю': 'Yu', 'Я': 'Ya',
+      ' ': ' ', '-': '-', "'": "'",
+     }
+    for letter in text:
+        text = text.replace(letter, translit_dict[letter])
+    return text
+
+
 class Provider(PersonProvider):
     formats_male = OrderedDict((
-        ('{{last_name_male}} {{first_name_male}} {{middle_name_male}}', 0.97),
-        ('{{prefix_male}} {{last_name_male}} {{first_name_male}} {{middle_name_male}}', 0.03),
+        ('{{last_name_male}} {{first_name_male}} {{middle_name_male}}', 0.49),
+        ('{{first_name_male}} {{middle_name_male}} {{last_name_male}}', 0.49),
+        ('{{prefix_male}} {{last_name_male}} {{first_name_male}} {{middle_name_male}}', 0.02),
     ))
 
     formats_female = OrderedDict((
-        ('{{last_name_female}} {{first_name_female}} {{middle_name_female}}', 0.97),
-        ('{{prefix_female}} {{last_name_female}} {{first_name_female}} {{middle_name_female}}', 0.03),
+        ('{{last_name_female}} {{first_name_female}} {{middle_name_female}}', 0.49),
+        ('{{first_name_female}} {{middle_name_female}} {{last_name_female}}', 0.49),
+        ('{{prefix_female}} {{last_name_female}} {{first_name_female}} {{middle_name_female}}', 0.02),
     ))
 
     # Using random_element's dictionary weighting means that the
@@ -254,7 +272,7 @@ class Provider(PersonProvider):
 
     middle_names = middle_names_male + middle_names_female
 
-    prefixes_male = ('г-н.', 'тов.')
+    prefixes_male = ('г-н', 'тов.')
 
     prefixes_female = ('г-жа', 'тов.')
 
diff --git a/faker/providers/ssn/cs_CZ/__init__.py b/faker/providers/ssn/cs_CZ/__init__.py
index b7f8f984..daf9df39 100644
--- a/faker/providers/ssn/cs_CZ/__init__.py
+++ b/faker/providers/ssn/cs_CZ/__init__.py
@@ -1,3 +1,5 @@
+from math import ceil
+
 from .. import Provider as BaseProvider
 
 
@@ -8,6 +10,8 @@ class Provider(BaseProvider):
         'CZ##########',
     )
 
+    national_id_months = ['%.2d' % i for i in range(1, 13)] + ['%.2d' % i for i in range(51, 63)]
+
     def vat_id(self):
         """
         http://ec.europa.eu/taxation_customs/vies/faq.html#item_11
@@ -15,3 +19,24 @@ class Provider(BaseProvider):
         """
 
         return self.bothify(self.random_element(self.vat_id_formats))
+
+    def birth_number(self):
+        """
+        Birth Number (Czech/Slovak: rodné číslo (RČ))
+        https://en.wikipedia.org/wiki/National_identification_number#Czech_Republic_and_Slovakia
+        """
+        birthdate = self.generator.date_of_birth()
+        year = '%.2d' % (birthdate.year % 100)
+        month = self.random_element(self.national_id_months)
+        day = '%.2d' % birthdate.day
+        if birthdate.year > 1953:
+            sn = self.random_number(4, True)
+        else:
+            sn = self.random_number(3, True)
+        number = int('{}{}{}{}'.format(year, month, day, sn))
+        birth_number = str(ceil(number / 11) * 11)
+        if year == '00':
+            birth_number = '00' + birth_number
+        elif year[0] == '0':
+            birth_number = '0' + birth_number
+        return '{}/{}'.format(birth_number[:6], birth_number[6::])


Test patch:
diff --git a/tests/providers/test_bank.py b/tests/providers/test_bank.py
index 158f4136..d3682c24 100644
--- a/tests/providers/test_bank.py
+++ b/tests/providers/test_bank.py
@@ -62,3 +62,35 @@ class TestEnGB(unittest.TestCase):
     def test_iban(self):
         iban = self.fake.iban()
         assert re.match(r"GB\d{2}[A-Z]{4}\d{14}", iban)
+
+
+class TestRuRU(unittest.TestCase):
+    """Tests the bank provider for ru_RU locale"""
+
+    def setUp(self):
+        self.fake = Faker('ru_RU')
+        Faker.seed(0)
+
+    def test_bban(self):
+        bban = self.fake.bban()
+        assert re.match(r"[A-Z]{4}\d{13}", bban)
+
+    def test_iban(self):
+        iban = self.fake.iban()
+        assert re.match(r"RU\d{2}[A-Z]{4}\d{13}", iban)
+
+    def test_bic(self):
+        bic = self.fake.bic()
+        assert re.match(r"04\d{7,9}", bic)
+
+    def test_correspondent_account(self):
+        correspondent_account = self.fake.correspondent_account()
+        assert re.match(r"301\d{17}", correspondent_account)
+
+    def test_checking_account(self):
+        checking_account = self.fake.checking_account()
+        assert re.match(r"\d{3}0\d{16}", checking_account)
+
+    def test_bank(self):
+        bank = self.fake.bank()
+        assert re.match(r"\D{3,41}", bank)
diff --git a/tests/providers/test_company.py b/tests/providers/test_company.py
index 4a06456d..5bc28613 100644
--- a/tests/providers/test_company.py
+++ b/tests/providers/test_company.py
@@ -2,13 +2,14 @@ import re
 import unittest
 
 from faker import Faker
-from faker.providers.company import ru_RU as ru
 from faker.providers.company.hy_AM import Provider as HyAmProvider
 from faker.providers.company.ja_JP import Provider as JaProvider
 from faker.providers.company.nl_NL import Provider as NlProvider
 from faker.providers.company.pl_PL import Provider as PlProvider
 from faker.providers.company.pl_PL import company_vat_checksum, local_regon_checksum, regon_checksum
 from faker.providers.company.pt_BR import company_id_checksum
+from faker.providers.company.ru_RU import Provider as RuProvider
+from faker.providers.company.ru_RU import calculate_checksum
 from faker.utils.datetime_safe import datetime
 
 
@@ -266,27 +267,27 @@ class TestRuRu(unittest.TestCase):
         Faker.seed(0)
 
     def test_calculate_checksum_nine_digits(self):
-        assert ru.calculate_checksum('164027304') == '7'
-        assert ru.calculate_checksum('629082979') == '0'
-        assert ru.calculate_checksum('0203184580') == '5'
-        assert ru.calculate_checksum('1113145630') == '0'
-        assert ru.calculate_checksum('70517081385') == '1'
-        assert ru.calculate_checksum('60307390550') == '0'
+        assert calculate_checksum('164027304') == '7'
+        assert calculate_checksum('629082979') == '0'
+        assert calculate_checksum('0203184580') == '5'
+        assert calculate_checksum('1113145630') == '0'
+        assert calculate_checksum('70517081385') == '1'
+        assert calculate_checksum('60307390550') == '0'
 
     def test_businesses_inn(self):
         for i in range(self.num_sample_runs):
             inn = self.fake.businesses_inn()
 
             assert len(inn) == 10
-            assert ru.calculate_checksum(inn[:9]) == inn[9]
+            assert calculate_checksum(inn[:9]) == inn[9]
 
     def test_individuals_inn(self):
         for i in range(self.num_sample_runs):
             inn = self.fake.individuals_inn()
 
             assert len(inn) == 12
-            assert ru.calculate_checksum(inn[:10]) == inn[10]
-            assert ru.calculate_checksum(inn[:11]) == inn[11]
+            assert calculate_checksum(inn[:10]) == inn[10]
+            assert calculate_checksum(inn[:11]) == inn[11]
 
     def test_businesses_ogrn(self):
         max_year = datetime.now().year - 2000
@@ -320,3 +321,37 @@ class TestRuRu(unittest.TestCase):
             assert 1 <= int(kpp[0:2]) <= 92
             assert int(kpp[2:4]) > 0
             assert kpp[4:6] in ('01', '43', '44', '45')
+
+    def test_company_prefix(self):
+        prefixes = RuProvider.company_prefixes
+        for i in range(self.num_sample_runs):
+            prefix = self.fake.company_prefix()
+            assert isinstance(prefix, str)
+            assert prefix in prefixes
+
+    def test_company_suffix(self):
+        suffixes = RuProvider.company_suffixes
+        for i in range(self.num_sample_runs):
+            suffix = self.fake.company_suffix()
+            assert isinstance(suffix, str)
+            assert suffix in suffixes
+
+    def test_large_companies(self):
+        companies = RuProvider.large_companies
+        for i in range(self.num_sample_runs):
+            company = self.fake.large_company()
+            assert isinstance(company, str)
+            assert company in companies
+
+    def test_catchphrase(self):
+        for i in range(self.num_sample_runs):
+            catchphrase = self.fake.catch_phrase()
+            assert isinstance(catchphrase, str)
+            assert ' и ' in catchphrase
+
+    def test_bs(self):
+        for i in range(self.num_sample_runs):
+            bs = self.fake.bs()
+            bs_words = bs.split()
+            assert isinstance(bs, str)
+            assert bs_words[0] in RuProvider.bsWords[0]
diff --git a/tests/providers/test_credit_card.py b/tests/providers/test_credit_card.py
index 62316bf7..afd925df 100644
--- a/tests/providers/test_credit_card.py
+++ b/tests/providers/test_credit_card.py
@@ -2,6 +2,7 @@ import re
 import unittest
 
 from faker import Faker
+from faker.providers.bank.ru_RU import Provider as RuBank
 
 
 class TestCreditCardProvider(unittest.TestCase):
@@ -55,3 +56,49 @@ class TestCreditCardProvider(unittest.TestCase):
         for prefix in self.provider.prefix_jcb15:
             number = self.provider._generate_number(prefix, 15)
             assert re.match(self.jcb_pattern, number)
+
+
+class TestRuRu(unittest.TestCase):
+    """ Tests credit card in the ru_RU locale """
+
+    def setUp(self):
+        self.fake = Faker('ru_RU')
+        Faker.seed(0)
+        self.visa_pattern = r'^4[0-9]{15}$'
+        self.mastercard_pattern = r'^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$'
+        self.mir_pattern = r'^220[0-4][0-9]{12}$'
+        self.maestro_pattern = r'^50|5[6-9]|6[0-9][0-9]{14}$'
+        self.amex_pattern = r'^3[4|7][0-9]{13}$'
+        self.unionpay_pattern = r'^62|81[0-9]{14}$'
+
+    def test_visa(self):
+        number = self.fake.credit_card_number('visa')
+        assert re.match(self.visa_pattern, number)
+
+    def test_mastercard(self):
+        number = self.fake.credit_card_number('mastercard')
+        assert re.match(self.mastercard_pattern, number)
+
+    def test_mir(self):
+        number = self.fake.credit_card_number('mir')
+        assert re.match(self.mir_pattern, number)
+
+    def test_maestro(self):
+        number = self.fake.credit_card_number('maestro')
+        assert re.match(self.maestro_pattern, number)
+
+    def test_amex(self):
+        number = self.fake.credit_card_number('amex')
+        assert re.match(self.amex_pattern, number)
+
+    def test_unionpay(self):
+        number = self.fake.credit_card_number('unionpay')
+        assert re.match(self.unionpay_pattern, number)
+
+    def test_owner(self):
+        card_data = self.fake.credit_card_full().split('\n')
+        assert re.match('[A-Za-z]+', card_data[1])
+
+    def test_issuer(self):
+        card_data = self.fake.credit_card_full().split('\n')
+        assert card_data[4] in RuBank.banks
diff --git a/tests/providers/test_currency.py b/tests/providers/test_currency.py
index d2ae78b6..7068f18d 100644
--- a/tests/providers/test_currency.py
+++ b/tests/providers/test_currency.py
@@ -1,3 +1,4 @@
+import re
 import unittest
 
 from faker import Faker
@@ -25,6 +26,12 @@ class TestCurrencyProvider(unittest.TestCase):
             name = self.fake.currency_name()
             assert isinstance(name, str)
 
+    def test_currency_symbol(self):
+        for _ in range(99):
+            symbol = self.fake.currency_symbol()
+            assert isinstance(symbol, str)
+            assert symbol in CurrencyProvider.currency_symbols.values()
+
     def test_cryptocurrency(self):
         for _ in range(99):
             cur = self.fake.cryptocurrency()
@@ -40,3 +47,23 @@ class TestCurrencyProvider(unittest.TestCase):
         for _ in range(99):
             name = self.fake.cryptocurrency_name()
             assert isinstance(name, str)
+
+
+class TestRuRu(unittest.TestCase):
+    """ Tests currency in the ru_RU locale """
+
+    def setUp(self):
+        self.fake = Faker('ru_RU')
+        Faker.seed(0)
+
+    def test_currency(self):
+        for _ in range(99):
+            cur = self.fake.currency()
+            assert isinstance(cur, tuple)
+            assert re.match(r'[А-Яа-я]', cur[1])
+
+    def test_currency_name(self):
+        for _ in range(99):
+            name = self.fake.currency_name()
+            assert isinstance(name, str)
+            assert re.match(r'[А-Яа-я]', name)
diff --git a/tests/providers/test_date_time.py b/tests/providers/test_date_time.py
index fff50f5b..30e9cf09 100644
--- a/tests/providers/test_date_time.py
+++ b/tests/providers/test_date_time.py
@@ -1,6 +1,7 @@
 import os
 import platform
 import random
+import re
 import sys
 import time
 import unittest
@@ -17,6 +18,7 @@ from faker.providers.date_time.ar_AA import Provider as ArProvider
 from faker.providers.date_time.ar_EG import Provider as EgProvider
 from faker.providers.date_time.hy_AM import Provider as HyAmProvider
 from faker.providers.date_time.pl_PL import Provider as PlProvider
+from faker.providers.date_time.ru_RU import Provider as RuProvider
 from faker.providers.date_time.ta_IN import Provider as TaInProvider
 
 
@@ -716,3 +718,29 @@ class TestTaIN(unittest.TestCase):
         month = self.fake.month_name()
         assert isinstance(month, str)
         assert month in TaInProvider.MONTH_NAMES.values()
+
+
+class TestRuRu(unittest.TestCase):
+    """ Tests date_time in the ru_RU locale """
+
+    def setUp(self):
+        self.fake = Faker('ru_RU')
+        Faker.seed(0)
+
+    def test_day(self):
+        for _ in range(50):
+            day = self.fake.day_of_week()
+            assert isinstance(day, str)
+            assert day in RuProvider.DAY_NAMES.values()
+
+    def test_month(self):
+        for _ in range(50):
+            month = self.fake.month_name()
+            assert isinstance(month, str)
+            assert month in RuProvider.MONTH_NAMES.values()
+
+    def test_timezone(self):
+        for _ in range(100):
+            timezone = self.fake.timezone()
+            assert isinstance(timezone, str)
+            assert re.match(r'[А-Яа-я]', timezone)
diff --git a/tests/providers/test_person.py b/tests/providers/test_person.py
index b0b6c5dc..dfc314fd 100644
--- a/tests/providers/test_person.py
+++ b/tests/providers/test_person.py
@@ -12,6 +12,8 @@ from faker.providers.person.hy_AM import Provider as HyAmProvider
 from faker.providers.person.ne_NP import Provider as NeProvider
 from faker.providers.person.pl_PL import Provider as PlPLProvider
 from faker.providers.person.pl_PL import checksum_identity_card_number as pl_checksum_identity_card_number
+from faker.providers.person.ru_RU import Provider as RuProvider
+from faker.providers.person.ru_RU import translit
 from faker.providers.person.sv_SE import Provider as SvSEProvider
 from faker.providers.person.ta_IN import Provider as TaINProvider
 from faker.providers.person.zh_CN import Provider as ZhCNProvider
@@ -554,3 +556,41 @@ class TestTaIN(unittest.TestCase):
         assert name in TaINProvider.first_names_male
         name = self.fake.first_name()
         assert name in TaINProvider.first_names
+
+
+class TestRuRU(unittest.TestCase):
+    """ Tests person in the ru_RU locale """
+
+    def setUp(self):
+        self.fake = Faker('ru_RU')
+        Faker.seed(0)
+
+    def test_translit(self):
+        assert translit('Александр Сергеевич Пушкин') == 'Aleksandr Sergeevich Pushkin'
+        assert translit('Анна Андреевна Ахматова') == 'Anna Andreevna Akhmatova'
+        assert translit('Михаил') == 'Mikhail'
+        assert translit('Фёдор') == 'Fedor'
+        assert translit('Екатерина') == 'Yekaterina'
+        assert translit('Анастасия') == 'Anastasiya'
+        assert translit('Юрьевич') == 'Yurevich'
+        assert translit('Никитична') == 'Nikitichna'
+        assert translit('Щербакова') == 'Shcherbakova'
+        assert translit('Маяковский') == 'Mayakovskiy'
+        assert translit('Петров-Водкин') == 'Petrov-Vodkin'
+        assert translit('Воронцова-Дашкова') == 'Vorontsova-Dashkova'
+
+    def test_name_female(self):
+        first_name = self.fake.first_name_female()
+        assert first_name in RuProvider.first_names_female
+        middle_name = self.fake.middle_name_female()
+        assert middle_name in RuProvider.middle_names_female
+        last_name = self.fake.last_name_female()
+        assert last_name in RuProvider.last_names_female
+
+    def test_name_male(self):
+        first_name = self.fake.first_name_male()
+        assert first_name in RuProvider.first_names_male
+        middle_name = self.fake.middle_name_male()
+        assert middle_name in RuProvider.middle_names_male
+        last_name = self.fake.last_name_male()
+        assert last_name in RuProvider.last_names_male
diff --git a/tests/providers/test_ssn.py b/tests/providers/test_ssn.py
index cad778a6..e07dc7c9 100644
--- a/tests/providers/test_ssn.py
+++ b/tests/providers/test_ssn.py
@@ -153,6 +153,13 @@ class TestCsCZ(unittest.TestCase):
         for _ in range(100):
             assert re.search(r'^CZ\d{8,10}$', self.fake.vat_id())
 
+    def test_birth_number(self):
+        for _ in range(100):
+            birth_number = self.fake.birth_number()
+            assert len(birth_number) in [10, 11]
+            assert birth_number[6] == "/"
+            assert int(birth_number.replace("/", "")) % 11 == 0
+
 
 class TestDeAT(unittest.TestCase):
     def setUp(self):