96 lines
3.1 KiB
TypeScript
96 lines
3.1 KiB
TypeScript
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: "Тёмный режим",
|
||
},
|
||
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: "Эта страница приватная или не существует",
|
||
},
|
||
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
|
||
}
|