mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-31 00:34:05 -06:00
commit
0774a8e016
@ -84,10 +84,10 @@ export const Latex: QuartzTransformerPlugin<Options> = (opts?: Options) => {
|
|||||||
externalResources() {
|
externalResources() {
|
||||||
if (engine === "katex") {
|
if (engine === "katex") {
|
||||||
return {
|
return {
|
||||||
css: ["https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.css"],
|
css: ["https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.9/katex.min.css"],
|
||||||
js: [
|
js: [
|
||||||
{
|
{
|
||||||
src: "https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/contrib/copy-tex.min.js",
|
src: "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/contrib/copy-tex.min.js",
|
||||||
loadTime: "afterDOMReady",
|
loadTime: "afterDOMReady",
|
||||||
contentType: "external",
|
contentType: "external",
|
||||||
},
|
},
|
||||||
|
|||||||
@ -8,6 +8,8 @@ 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"
|
||||||
|
import ko from "./locales/ko-KR"
|
||||||
|
|
||||||
export const TRANSLATIONS = {
|
export const TRANSLATIONS = {
|
||||||
"en-US": en,
|
"en-US": en,
|
||||||
@ -40,6 +42,8 @@ export const TRANSLATIONS = {
|
|||||||
"ar-DZ": ar,
|
"ar-DZ": ar,
|
||||||
"ar-MR": ar,
|
"ar-MR": ar,
|
||||||
"uk-UA": uk,
|
"uk-UA": uk,
|
||||||
|
"ru-RU": ru,
|
||||||
|
"ko-KR": ko,
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
export const defaultTranslation = "en-US"
|
export const defaultTranslation = "en-US"
|
||||||
|
|||||||
81
quartz/i18n/locales/ko-KR.ts
Normal file
81
quartz/i18n/locales/ko-KR.ts
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
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: "Created with",
|
||||||
|
},
|
||||||
|
graph: {
|
||||||
|
title: "그래프 뷰",
|
||||||
|
},
|
||||||
|
recentNotes: {
|
||||||
|
title: "최근 게시글",
|
||||||
|
seeRemainingMore: ({ remaining }) => `${remaining}건 더보기 →`,
|
||||||
|
},
|
||||||
|
transcludes: {
|
||||||
|
transcludeOf: ({ targetSlug }) => `${targetSlug}의 포함`,
|
||||||
|
linkToOriginal: "원본 링크",
|
||||||
|
},
|
||||||
|
search: {
|
||||||
|
title: "검색",
|
||||||
|
searchBarPlaceholder: "검색어를 입력하세요",
|
||||||
|
},
|
||||||
|
tableOfContents: {
|
||||||
|
title: "목차",
|
||||||
|
},
|
||||||
|
contentMeta: {
|
||||||
|
readingTime: ({ minutes }) => `${minutes} min read`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
pages: {
|
||||||
|
rss: {
|
||||||
|
recentNotes: "최근 게시글",
|
||||||
|
lastFewNotes: ({ count }) => `최근 ${count} 건`,
|
||||||
|
},
|
||||||
|
error: {
|
||||||
|
title: "Not Found",
|
||||||
|
notFound: "페이지가 존재하지 않거나 비공개 설정이 되어 있습니다.",
|
||||||
|
},
|
||||||
|
folderContent: {
|
||||||
|
folder: "폴더",
|
||||||
|
itemsUnderFolder: ({ count }) => `${count}건의 페이지`,
|
||||||
|
},
|
||||||
|
tagContent: {
|
||||||
|
tag: "태그",
|
||||||
|
tagIndex: "태그 목록",
|
||||||
|
itemsUnderTag: ({ count }) => `${count}건의 페이지`,
|
||||||
|
showingFirst: ({ count }) => `처음 ${count}개의 태그`,
|
||||||
|
totalTags: ({ count }) => `총 ${count}개의 태그를 찾았습니다.`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} as const satisfies Translation
|
||||||
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
|
||||||
|
}
|
||||||
@ -8,12 +8,12 @@ import { QuartzPluginData } from "../vfile"
|
|||||||
import { i18n } from "../../i18n"
|
import { i18n } from "../../i18n"
|
||||||
|
|
||||||
export interface Options {
|
export interface Options {
|
||||||
delims: string | string[]
|
delimiters: string | [string, string]
|
||||||
language: "yaml" | "toml"
|
language: "yaml" | "toml"
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultOptions: Options = {
|
const defaultOptions: Options = {
|
||||||
delims: "---",
|
delimiters: "---",
|
||||||
language: "yaml",
|
language: "yaml",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -26,12 +26,12 @@ export const Latex: QuartzTransformerPlugin<Options> = (opts?: Options) => {
|
|||||||
return {
|
return {
|
||||||
css: [
|
css: [
|
||||||
// base css
|
// base css
|
||||||
"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css",
|
"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.9/katex.min.css",
|
||||||
],
|
],
|
||||||
js: [
|
js: [
|
||||||
{
|
{
|
||||||
// fix copy behaviour: https://github.com/KaTeX/KaTeX/blob/main/contrib/copy-tex/README.md
|
// fix copy behaviour: https://github.com/KaTeX/KaTeX/blob/main/contrib/copy-tex/README.md
|
||||||
src: "https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/copy-tex.min.js",
|
src: "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.9/contrib/copy-tex.min.js",
|
||||||
loadTime: "afterDOMReady",
|
loadTime: "afterDOMReady",
|
||||||
contentType: "external",
|
contentType: "external",
|
||||||
},
|
},
|
||||||
|
|||||||
@ -619,7 +619,7 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin<Partial<Options>
|
|||||||
let mermaidImport = undefined
|
let mermaidImport = undefined
|
||||||
document.addEventListener('nav', async () => {
|
document.addEventListener('nav', async () => {
|
||||||
if (document.querySelector("code.mermaid")) {
|
if (document.querySelector("code.mermaid")) {
|
||||||
mermaidImport ||= await import('https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs')
|
mermaidImport ||= await import('https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.7.0/mermaid.esm.min.mjs')
|
||||||
const mermaid = mermaidImport.default
|
const mermaid = mermaidImport.default
|
||||||
const darkMode = document.documentElement.getAttribute('saved-theme') === 'dark'
|
const darkMode = document.documentElement.getAttribute('saved-theme') === 'dark'
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user