forked from janvarev/Irene-Voice-Assistant
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlanguages.py
92 lines (74 loc) · 2.66 KB
/
languages.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from typing import NamedTuple, Iterable, Literal
from irene.constants.word_forms import KnownFormsRU
LanguageCodeShort = Literal[
'ru', 'en', 'de',
]
LanguageCodeFull = Literal[
'ru-RU', 'en-US', 'de-DE',
]
class LanguageDefinition(NamedTuple):
"""
Содержит константы, связанные с некоторым естественным языком - его условные обозначения, его название и производные
от него слова.
"""
code: LanguageCodeShort
"""Короткий код языка. Например, "ru"."""
code_full: LanguageCodeFull
"""Полный код языка. Например, "ru-RU"."""
known_ru: KnownFormsRU
"""Название языка в русском языке, со всеми падежами."""
adverb_ru: str
"""Наречие, означающее использование этого языка. Например, "по-русски"."""
@property
def labels(self) -> Iterable[str]:
"""
Ключи метаданных, которые могут использоваться для отметки каналов вывода, поддерживающих этот язык.
"""
yield f"language.{self.code_full}"
if self.code_full != self.code:
yield f"language.{self.code}"
RUSSIAN = LanguageDefinition(
code='ru',
code_full='ru-RU',
known_ru=KnownFormsRU(
nominative="русский",
genitive="русского",
dative="русскому",
accusative="русского",
instrumental="русским",
prepositional="русском",
),
adverb_ru="по-русски",
)
ENGLISH = LanguageDefinition(
code='en',
code_full='en-US',
known_ru=KnownFormsRU(
nominative="английский",
genitive="английского",
dative="английскому",
accusative="английского",
instrumental="английским",
prepositional="английском",
),
adverb_ru="по-английски",
)
GERMAN = LanguageDefinition(
code='de',
code_full='de-DE',
known_ru=KnownFormsRU(
nominative="немецкий",
genitive="немецкого",
dative="немецкому",
accusative="немецкого",
instrumental="немецким",
prepositional="немецком",
),
adverb_ru="по-немецки",
)
ALL_LANGUAGES = (
RUSSIAN, ENGLISH, GERMAN,
)
ALL_LANGUAGE_META_LABELS = tuple(
label for language in ALL_LANGUAGES for label in language.labels
)