feat(i18n): add Russian (#886)
This commit is contained in:
parent
aa24a62ae7
commit
8c5c5f9130
@ -8,6 +8,7 @@ import ro from "./locales/ro-RO"
|
|||||||
import es from "./locales/es-ES"
|
import es from "./locales/es-ES"
|
||||||
import ar from "./locales/ar-SA"
|
import ar from "./locales/ar-SA"
|
||||||
import uk from "./locales/uk-UA"
|
import uk from "./locales/uk-UA"
|
||||||
|
import ru from "./locales/ru-RU"
|
||||||
|
|
||||||
export const TRANSLATIONS = {
|
export const TRANSLATIONS = {
|
||||||
"en-US": en,
|
"en-US": en,
|
||||||
@ -40,6 +41,7 @@ export const TRANSLATIONS = {
|
|||||||
"ar-DZ": ar,
|
"ar-DZ": ar,
|
||||||
"ar-MR": ar,
|
"ar-MR": ar,
|
||||||
"uk-UA": uk,
|
"uk-UA": uk,
|
||||||
|
"ru-RU": ru,
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
export const defaultTranslation = "en-US"
|
export const defaultTranslation = "en-US"
|
||||||
|
95
quartz/i18n/locales/ru-RU.ts
Normal file
95
quartz/i18n/locales/ru-RU.ts
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
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
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user