From d1aae46e875133d3a6c2c092ef46e1bf14483c84 Mon Sep 17 00:00:00 2001 From: Keisuke ANDO Date: Fri, 30 May 2025 08:37:25 +0900 Subject: [PATCH] feat: add page count component MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新しいPageCountコンポーネントを追加し、各言語のローカライズファイルにページ数の翻訳を追加しました。 --- quartz/components/PageCount.tsx | 26 ++++++++++++++++++++++++++ quartz/components/index.ts | 2 ++ quartz/i18n/locales/ar-SA.ts | 3 +++ quartz/i18n/locales/ca-ES.ts | 3 +++ quartz/i18n/locales/cs-CZ.ts | 3 +++ quartz/i18n/locales/de-DE.ts | 3 +++ quartz/i18n/locales/definition.ts | 3 +++ quartz/i18n/locales/en-GB.ts | 3 +++ quartz/i18n/locales/en-US.ts | 3 +++ quartz/i18n/locales/es-ES.ts | 3 +++ quartz/i18n/locales/fa-IR.ts | 3 +++ quartz/i18n/locales/fi-FI.ts | 3 +++ quartz/i18n/locales/fr-FR.ts | 3 +++ quartz/i18n/locales/hu-HU.ts | 5 ++++- quartz/i18n/locales/id-ID.ts | 5 ++++- quartz/i18n/locales/it-IT.ts | 5 ++++- quartz/i18n/locales/ja-JP.ts | 3 +++ quartz/i18n/locales/ko-KR.ts | 5 ++++- quartz/i18n/locales/lt-LT.ts | 5 ++++- quartz/i18n/locales/nb-NO.ts | 5 ++++- quartz/i18n/locales/nl-NL.ts | 6 ++++-- quartz/i18n/locales/pl-PL.ts | 5 ++++- quartz/i18n/locales/pt-BR.ts | 5 ++++- quartz/i18n/locales/ro-RO.ts | 3 +++ quartz/i18n/locales/ru-RU.ts | 3 +++ quartz/i18n/locales/th-TH.ts | 3 +++ quartz/i18n/locales/tr-TR.ts | 3 +++ quartz/i18n/locales/uk-UA.ts | 3 +++ quartz/i18n/locales/vi-VN.ts | 3 +++ quartz/i18n/locales/zh-CN.ts | 3 +++ quartz/i18n/locales/zh-TW.ts | 3 +++ 31 files changed, 124 insertions(+), 10 deletions(-) create mode 100644 quartz/components/PageCount.tsx diff --git a/quartz/components/PageCount.tsx b/quartz/components/PageCount.tsx new file mode 100644 index 000000000..99cb930ae --- /dev/null +++ b/quartz/components/PageCount.tsx @@ -0,0 +1,26 @@ +import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" +import { classNames } from "../util/lang" +import { i18n } from "../i18n" + +const PageCount: QuartzComponent = ({ + allFiles, + displayClass, + cfg, +}: QuartzComponentProps) => { + const count = allFiles.length + return ( +
+

{i18n(cfg.locale).components.pageCount.totalItems({ count })}

+
+ ) +} + +PageCount.css = ` +.page-count { + padding: 0.5rem; + font-size: 0.9rem; + color: var(--secondary); +} +` + +export default (() => PageCount) satisfies QuartzComponentConstructor diff --git a/quartz/components/index.ts b/quartz/components/index.ts index cece8e614..2e29a7a99 100644 --- a/quartz/components/index.ts +++ b/quartz/components/index.ts @@ -23,6 +23,7 @@ import Breadcrumbs from "./Breadcrumbs" import Comments from "./Comments" import Flex from "./Flex" import ConditionalRender from "./ConditionalRender" +import PageCount from "./PageCount" export { ArticleTitle, @@ -50,4 +51,5 @@ export { Comments, Flex, ConditionalRender, + PageCount, } diff --git a/quartz/i18n/locales/ar-SA.ts b/quartz/i18n/locales/ar-SA.ts index a1979def9..2e9718af7 100644 --- a/quartz/i18n/locales/ar-SA.ts +++ b/quartz/i18n/locales/ar-SA.ts @@ -64,6 +64,9 @@ export default { ? `دقيقتان للقراءة` : `${minutes} دقائق للقراءة`, }, + pageCount: { + totalItems: ({ count }) => `${count} ملاحظات`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/ca-ES.ts b/quartz/i18n/locales/ca-ES.ts index 1483d9c57..6de105ead 100644 --- a/quartz/i18n/locales/ca-ES.ts +++ b/quartz/i18n/locales/ca-ES.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `Es llegeix en ${minutes} min`, }, + pageCount: { + totalItems: ({ count }) => `${count} notes`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/cs-CZ.ts b/quartz/i18n/locales/cs-CZ.ts index 87f19964f..d95e9f239 100644 --- a/quartz/i18n/locales/cs-CZ.ts +++ b/quartz/i18n/locales/cs-CZ.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `${minutes} min čtení`, }, + pageCount: { + totalItems: ({ count }) => `${count} poznámek`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/de-DE.ts b/quartz/i18n/locales/de-DE.ts index 85a7353a8..9da0884b9 100644 --- a/quartz/i18n/locales/de-DE.ts +++ b/quartz/i18n/locales/de-DE.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `${minutes} min read`, }, + pageCount: { + totalItems: ({ count }) => `${count} Seiten`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/definition.ts b/quartz/i18n/locales/definition.ts index ee1649abc..8b8061f74 100644 --- a/quartz/i18n/locales/definition.ts +++ b/quartz/i18n/locales/definition.ts @@ -61,6 +61,9 @@ export interface Translation { contentMeta: { readingTime: (variables: { minutes: number }) => string } + pageCount: { + totalItems: (variables: { count: number }) => string + } } pages: { rss: { diff --git a/quartz/i18n/locales/en-GB.ts b/quartz/i18n/locales/en-GB.ts index 80e52bf3c..253a5bc9d 100644 --- a/quartz/i18n/locales/en-GB.ts +++ b/quartz/i18n/locales/en-GB.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `${minutes} min read`, }, + pageCount: { + totalItems: ({ count }) => `${count} notes`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/en-US.ts b/quartz/i18n/locales/en-US.ts index e1111e9ab..d33cda508 100644 --- a/quartz/i18n/locales/en-US.ts +++ b/quartz/i18n/locales/en-US.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `${minutes} min read`, }, + pageCount: { + totalItems: ({ count }) => `${count} notes`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/es-ES.ts b/quartz/i18n/locales/es-ES.ts index b7e425e81..ee4724248 100644 --- a/quartz/i18n/locales/es-ES.ts +++ b/quartz/i18n/locales/es-ES.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `Se lee en ${minutes} min`, }, + pageCount: { + totalItems: ({ count }) => `${count} notas`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/fa-IR.ts b/quartz/i18n/locales/fa-IR.ts index 0300174f3..9c91a1ec1 100644 --- a/quartz/i18n/locales/fa-IR.ts +++ b/quartz/i18n/locales/fa-IR.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `زمان تقریبی مطالعه: ${minutes} دقیقه`, }, + pageCount: { + totalItems: ({ count }) => `${count} یادداشت`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/fi-FI.ts b/quartz/i18n/locales/fi-FI.ts index 19e102a31..373b5bacb 100644 --- a/quartz/i18n/locales/fi-FI.ts +++ b/quartz/i18n/locales/fi-FI.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `${minutes} min lukuaika`, }, + pageCount: { + totalItems: ({ count }) => `${count} muistiinpanoa`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/fr-FR.ts b/quartz/i18n/locales/fr-FR.ts index f6df309a6..06bcaec5b 100644 --- a/quartz/i18n/locales/fr-FR.ts +++ b/quartz/i18n/locales/fr-FR.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `${minutes} min de lecture`, }, + pageCount: { + totalItems: ({ count }) => `${count} notes`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/hu-HU.ts b/quartz/i18n/locales/hu-HU.ts index 2a4f07727..8ec5fba9e 100644 --- a/quartz/i18n/locales/hu-HU.ts +++ b/quartz/i18n/locales/hu-HU.ts @@ -57,7 +57,10 @@ export default { title: "Tartalomjegyzék", }, contentMeta: { - readingTime: ({ minutes }) => `${minutes} perces olvasás`, + readingTime: ({ minutes }) => `${minutes} perc olvasás`, + }, + pageCount: { + totalItems: ({ count }) => `${count} jegyzet`, }, }, pages: { diff --git a/quartz/i18n/locales/id-ID.ts b/quartz/i18n/locales/id-ID.ts index 813e2bb57..43d62cc5d 100644 --- a/quartz/i18n/locales/id-ID.ts +++ b/quartz/i18n/locales/id-ID.ts @@ -57,7 +57,10 @@ export default { title: "Daftar Isi", }, contentMeta: { - readingTime: ({ minutes }) => `${minutes} menit baca`, + readingTime: ({ minutes }) => `${minutes} mnt baca`, + }, + pageCount: { + totalItems: ({ count }) => `${count} catatan`, }, }, pages: { diff --git a/quartz/i18n/locales/it-IT.ts b/quartz/i18n/locales/it-IT.ts index be25bb640..0b6552da8 100644 --- a/quartz/i18n/locales/it-IT.ts +++ b/quartz/i18n/locales/it-IT.ts @@ -57,7 +57,10 @@ export default { title: "Tabella dei contenuti", }, contentMeta: { - readingTime: ({ minutes }) => `${minutes} minuti`, + readingTime: ({ minutes }) => `${minutes} min di lettura`, + }, + pageCount: { + totalItems: ({ count }) => `${count} note`, }, }, pages: { diff --git a/quartz/i18n/locales/ja-JP.ts b/quartz/i18n/locales/ja-JP.ts index 3c30124d7..047641302 100644 --- a/quartz/i18n/locales/ja-JP.ts +++ b/quartz/i18n/locales/ja-JP.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `${minutes} min read`, }, + pageCount: { + totalItems: ({ count }) => `${count}件のページ`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/ko-KR.ts b/quartz/i18n/locales/ko-KR.ts index 1bca096b2..382742d25 100644 --- a/quartz/i18n/locales/ko-KR.ts +++ b/quartz/i18n/locales/ko-KR.ts @@ -57,7 +57,10 @@ export default { title: "목차", }, contentMeta: { - readingTime: ({ minutes }) => `${minutes} min read`, + readingTime: ({ minutes }) => `${minutes}분 분량`, + }, + pageCount: { + totalItems: ({ count }) => `${count}건의 페이지`, }, }, pages: { diff --git a/quartz/i18n/locales/lt-LT.ts b/quartz/i18n/locales/lt-LT.ts index 690960c35..e1853c6d1 100644 --- a/quartz/i18n/locales/lt-LT.ts +++ b/quartz/i18n/locales/lt-LT.ts @@ -57,7 +57,10 @@ export default { title: "Turinys", }, contentMeta: { - readingTime: ({ minutes }) => `${minutes} min skaitymo`, + readingTime: ({ minutes }) => `${minutes} min. skaitymo`, + }, + pageCount: { + totalItems: ({ count }) => `${count} užrašai`, }, }, pages: { diff --git a/quartz/i18n/locales/nb-NO.ts b/quartz/i18n/locales/nb-NO.ts index 0e415221e..a1668f9ff 100644 --- a/quartz/i18n/locales/nb-NO.ts +++ b/quartz/i18n/locales/nb-NO.ts @@ -57,7 +57,10 @@ export default { title: "Oversikt", }, contentMeta: { - readingTime: ({ minutes }) => `${minutes} min lesning`, + readingTime: ({ minutes }) => `${minutes} min lesetid`, + }, + pageCount: { + totalItems: ({ count }) => `${count} notater`, }, }, pages: { diff --git a/quartz/i18n/locales/nl-NL.ts b/quartz/i18n/locales/nl-NL.ts index 8ab3b0722..5da8267f9 100644 --- a/quartz/i18n/locales/nl-NL.ts +++ b/quartz/i18n/locales/nl-NL.ts @@ -57,8 +57,10 @@ export default { title: "Inhoudsopgave", }, contentMeta: { - readingTime: ({ minutes }) => - minutes === 1 ? "1 minuut leestijd" : `${minutes} minuten leestijd`, + readingTime: ({ minutes }) => `${minutes} min lezen`, + }, + pageCount: { + totalItems: ({ count }) => `${count} notities`, }, }, pages: { diff --git a/quartz/i18n/locales/pl-PL.ts b/quartz/i18n/locales/pl-PL.ts index 11033e30f..d0e8d797c 100644 --- a/quartz/i18n/locales/pl-PL.ts +++ b/quartz/i18n/locales/pl-PL.ts @@ -57,7 +57,10 @@ export default { title: "Spis treści", }, contentMeta: { - readingTime: ({ minutes }) => `${minutes} min. czytania `, + readingTime: ({ minutes }) => `${minutes} min czytania`, + }, + pageCount: { + totalItems: ({ count }) => `${count} notatki`, }, }, pages: { diff --git a/quartz/i18n/locales/pt-BR.ts b/quartz/i18n/locales/pt-BR.ts index e431d8ed5..3c65e3b8a 100644 --- a/quartz/i18n/locales/pt-BR.ts +++ b/quartz/i18n/locales/pt-BR.ts @@ -57,7 +57,10 @@ export default { title: "Sumário", }, contentMeta: { - readingTime: ({ minutes }) => `Leitura de ${minutes} min`, + readingTime: ({ minutes }) => `${minutes} min de leitura`, + }, + pageCount: { + totalItems: ({ count }) => `${count} notas`, }, }, pages: { diff --git a/quartz/i18n/locales/ro-RO.ts b/quartz/i18n/locales/ro-RO.ts index 007d90169..55face999 100644 --- a/quartz/i18n/locales/ro-RO.ts +++ b/quartz/i18n/locales/ro-RO.ts @@ -60,6 +60,9 @@ export default { readingTime: ({ minutes }) => minutes == 1 ? `lectură de 1 minut` : `lectură de ${minutes} minute`, }, + pageCount: { + totalItems: ({ count }) => `${count} notițe`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/ru-RU.ts b/quartz/i18n/locales/ru-RU.ts index 5534d140c..7e106a71f 100644 --- a/quartz/i18n/locales/ru-RU.ts +++ b/quartz/i18n/locales/ru-RU.ts @@ -60,6 +60,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `время чтения ~${minutes} мин.`, }, + pageCount: { + totalItems: ({ count }) => `${count} замет${getForm(count, "ка", "ки", "ок")}`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/th-TH.ts b/quartz/i18n/locales/th-TH.ts index 073013196..df3b4d765 100644 --- a/quartz/i18n/locales/th-TH.ts +++ b/quartz/i18n/locales/th-TH.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `อ่านราว ${minutes} นาที`, }, + pageCount: { + totalItems: ({ count }) => `${count} บันทึก`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/tr-TR.ts b/quartz/i18n/locales/tr-TR.ts index 9c2d6d4ad..da69aecc6 100644 --- a/quartz/i18n/locales/tr-TR.ts +++ b/quartz/i18n/locales/tr-TR.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `${minutes} dakika okuma süresi`, }, + pageCount: { + totalItems: ({ count }) => `${count} notlar`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/uk-UA.ts b/quartz/i18n/locales/uk-UA.ts index ac2a24850..222391660 100644 --- a/quartz/i18n/locales/uk-UA.ts +++ b/quartz/i18n/locales/uk-UA.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `${minutes} хв читання`, }, + pageCount: { + totalItems: ({ count }) => `${count} нотатки`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/vi-VN.ts b/quartz/i18n/locales/vi-VN.ts index 26a58a50e..685530235 100644 --- a/quartz/i18n/locales/vi-VN.ts +++ b/quartz/i18n/locales/vi-VN.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `đọc ${minutes} phút`, }, + pageCount: { + totalItems: ({ count }) => `${count} bài viết`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/zh-CN.ts b/quartz/i18n/locales/zh-CN.ts index 09951bbb3..0ed81cbc0 100644 --- a/quartz/i18n/locales/zh-CN.ts +++ b/quartz/i18n/locales/zh-CN.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `${minutes}分钟阅读`, }, + pageCount: { + totalItems: ({ count }) => `${count}条笔记`, + }, }, pages: { rss: { diff --git a/quartz/i18n/locales/zh-TW.ts b/quartz/i18n/locales/zh-TW.ts index 4e784c06d..3110f50b7 100644 --- a/quartz/i18n/locales/zh-TW.ts +++ b/quartz/i18n/locales/zh-TW.ts @@ -59,6 +59,9 @@ export default { contentMeta: { readingTime: ({ minutes }) => `閱讀時間約 ${minutes} 分鐘`, }, + pageCount: { + totalItems: ({ count }) => `${count} 條筆記`, + }, }, pages: { rss: {