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
93
94
95
96
97
98
99
| import { Translation } from "./definition"
|
| export default {
| propertyDefaults: {
| title: "Без названия",
| description: "Описание отсутствует",
| },
| components: {
| callout: {
| note: "Заметка",
| abstract: "Резюме",
| info: "Инфо",
| todo: "Сделать",
| tip: "Подсказка",
| success: "Успех",
| question: "Вопрос",
| warning: "Предупреждение",
| failure: "Неудача",
| danger: "Опасность",
| bug: "Баг",
| example: "Пример",
| quote: "Цитата",
| },
| backlinks: {
| title: "Обратные ссылки",
| noBacklinksFound: "Обратные ссылки отсутствуют",
| },
| themeToggle: {
| lightMode: "Светлый режим",
| darkMode: "Тёмный режим",
| },
| readerMode: {
| title: "Режим чтения",
| },
| explorer: {
| title: "Проводник",
| },
| footer: {
| createdWith: "Создано с помощью",
| },
| graph: {
| title: "Вид графа",
| },
| recentNotes: {
| title: "Недавние заметки",
| seeRemainingMore: ({ remaining }) =>
| `Посмотреть оставш${getForm(remaining, "уюся", "иеся", "иеся")} ${remaining} →`,
| },
| transcludes: {
| transcludeOf: ({ targetSlug }) => `Переход из ${targetSlug}`,
| linkToOriginal: "Ссылка на оригинал",
| },
| search: {
| title: "Поиск",
| searchBarPlaceholder: "Найти что-нибудь",
| },
| tableOfContents: {
| title: "Оглавление",
| },
| contentMeta: {
| readingTime: ({ minutes }) => `время чтения ~${minutes} мин.`,
| },
| },
| pages: {
| rss: {
| recentNotes: "Недавние заметки",
| lastFewNotes: ({ count }) =>
| `Последн${getForm(count, "яя", "ие", "ие")} ${count} замет${getForm(count, "ка", "ки", "ок")}`,
| },
| error: {
| title: "Страница не найдена",
| notFound: "Эта страница приватная или не существует",
| home: "Вернуться на главную страницу",
| },
| folderContent: {
| folder: "Папка",
| itemsUnderFolder: ({ count }) =>
| `в этой папке ${count} элемент${getForm(count, "", "а", "ов")}`,
| },
| tagContent: {
| tag: "Тег",
| tagIndex: "Индекс тегов",
| itemsUnderTag: ({ count }) => `с этим тегом ${count} элемент${getForm(count, "", "а", "ов")}`,
| showingFirst: ({ count }) =>
| `Показыва${getForm(count, "ется", "ются", "ются")} ${count} тег${getForm(count, "", "а", "ов")}`,
| totalTags: ({ count }) => `Всего ${count} тег${getForm(count, "", "а", "ов")}`,
| },
| },
| } as const satisfies Translation
|
| function getForm(number: number, form1: string, form2: string, form5: string): string {
| const remainder100 = number % 100
| const remainder10 = remainder100 % 10
|
| if (remainder100 >= 10 && remainder100 <= 20) return form5
| if (remainder10 > 1 && remainder10 < 5) return form2
| if (remainder10 == 1) return form1
| return form5
| }
|
|