mirror of
https://github.com/jackyzha0/quartz.git
synced 2026-03-21 21:45:42 -05:00
Adds a RecentChanges component that displays a live activity feed of recently created and modified notes, with richer UX than RecentNotes. Features: - Created vs. modified distinction (badge + 1h threshold heuristic) - Tab filter UI: All / New (by creation date) / Updated (modified only) - Load-more pagination per tab with configurable page size - Client-side relative timestamps via Intl.RelativeTimeFormat (locale-aware) - Progressive enhancement: SSR initial render + JSON data island for client - localStorage persistence of the active filter tab - Fully i18n: all UI strings go through cfg.locale New files: - quartz/components/RecentChanges.tsx - quartz/components/scripts/recentChanges.inline.ts - quartz/components/utils/recentChanges.ts - quartz/components/styles/recentChanges.scss Modified: - quartz/components/index.ts: export RecentChanges - quartz/i18n/locales/definition.ts: add recentChanges translation block - quartz/i18n/locales/*.ts (30 files): add English fallback translations
98 lines
2.5 KiB
TypeScript
98 lines
2.5 KiB
TypeScript
import { Translation } from "./definition"
|
|
|
|
export default {
|
|
propertyDefaults: {
|
|
title: "Tanpa Judul",
|
|
description: "Tidak ada deskripsi",
|
|
},
|
|
components: {
|
|
callout: {
|
|
note: "Catatan",
|
|
abstract: "Abstrak",
|
|
info: "Info",
|
|
todo: "Daftar Tugas",
|
|
tip: "Tips",
|
|
success: "Berhasil",
|
|
question: "Pertanyaan",
|
|
warning: "Peringatan",
|
|
failure: "Gagal",
|
|
danger: "Bahaya",
|
|
bug: "Bug",
|
|
example: "Contoh",
|
|
quote: "Kutipan",
|
|
},
|
|
backlinks: {
|
|
title: "Tautan Balik",
|
|
noBacklinksFound: "Tidak ada tautan balik ditemukan",
|
|
},
|
|
themeToggle: {
|
|
lightMode: "Mode Terang",
|
|
darkMode: "Mode Gelap",
|
|
},
|
|
readerMode: {
|
|
title: "Mode Pembaca",
|
|
},
|
|
explorer: {
|
|
title: "Penjelajah",
|
|
},
|
|
footer: {
|
|
createdWith: "Dibuat dengan",
|
|
},
|
|
graph: {
|
|
title: "Tampilan Grafik",
|
|
},
|
|
recentNotes: {
|
|
title: "Catatan Terbaru",
|
|
seeRemainingMore: ({ remaining }) => `Lihat ${remaining} lagi →`,
|
|
},
|
|
recentChanges: {
|
|
title: "Recent Changes",
|
|
filterAll: "All",
|
|
filterNew: "New",
|
|
filterUpdated: "Updated",
|
|
loadMoreTemplate: "Load {count} more · {remaining} remaining",
|
|
noChanges: "No recent changes found.",
|
|
badgeNew: "New",
|
|
badgeUpdated: "Edited",
|
|
},
|
|
transcludes: {
|
|
transcludeOf: ({ targetSlug }) => `Transklusi dari ${targetSlug}`,
|
|
linkToOriginal: "Tautan ke asli",
|
|
},
|
|
search: {
|
|
title: "Cari",
|
|
searchBarPlaceholder: "Cari sesuatu",
|
|
},
|
|
tableOfContents: {
|
|
title: "Daftar Isi",
|
|
},
|
|
contentMeta: {
|
|
readingTime: ({ minutes }) => `${minutes} menit baca`,
|
|
},
|
|
},
|
|
pages: {
|
|
rss: {
|
|
recentNotes: "Catatan terbaru",
|
|
lastFewNotes: ({ count }) => `${count} catatan terakhir`,
|
|
},
|
|
error: {
|
|
title: "Tidak Ditemukan",
|
|
notFound: "Halaman ini bersifat privat atau tidak ada.",
|
|
home: "Kembali ke Beranda",
|
|
},
|
|
folderContent: {
|
|
folder: "Folder",
|
|
itemsUnderFolder: ({ count }) =>
|
|
count === 1 ? "1 item di bawah folder ini." : `${count} item di bawah folder ini.`,
|
|
},
|
|
tagContent: {
|
|
tag: "Tag",
|
|
tagIndex: "Indeks Tag",
|
|
itemsUnderTag: ({ count }) =>
|
|
count === 1 ? "1 item dengan tag ini." : `${count} item dengan tag ini.`,
|
|
showingFirst: ({ count }) => `Menampilkan ${count} tag pertama.`,
|
|
totalTags: ({ count }) => `Ditemukan total ${count} tag.`,
|
|
},
|
|
},
|
|
} as const satisfies Translation
|