From 1ff6d61f420933afaf1f0f90a13646f1dedd4c79 Mon Sep 17 00:00:00 2001 From: 3w36zj6 <52315048+3w36zj6@users.noreply.github.com> Date: Tue, 10 Jun 2025 19:04:32 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E7=BF=BB=E8=A8=B3=E7=8A=B6?= =?UTF-8?q?=E6=85=8B=E3=81=AB=E3=82=AA=E3=83=AA=E3=82=B8=E3=83=8A=E3=83=AB?= =?UTF-8?q?=E3=82=B3=E3=83=B3=E3=83=86=E3=83=B3=E3=83=84=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/common/TranslationStatusAlert.tsx | 10 +++++ website/src/utils/translationStatus.test.ts | 40 +++++++++++++++++++ website/src/utils/translationStatus.ts | 13 ++++-- website/translation-status.json | 10 ++--- website/translation-status.schema.json | 2 +- 5 files changed, 65 insertions(+), 10 deletions(-) diff --git a/website/src/components/ui/common/TranslationStatusAlert.tsx b/website/src/components/ui/common/TranslationStatusAlert.tsx index d0552002b2..357b81127c 100644 --- a/website/src/components/ui/common/TranslationStatusAlert.tsx +++ b/website/src/components/ui/common/TranslationStatusAlert.tsx @@ -43,6 +43,16 @@ const getStatusConfig = (status: TranslationStatus): StatusConfig => { message: "このページはまだ翻訳されていません。原文の内容が表示されています。", }; + case "original": + return { + bgColor: "bg-cyan-50", + borderColor: "border-cyan-200", + textColor: "text-cyan-800", + iconColor: "text-cyan-600", + label: "日本語版オリジナル", + message: + "このページの内容は公式ドキュメントには含まれておらず、日本語コミュニティが独自に追加したものです。", + }; } }; diff --git a/website/src/utils/translationStatus.test.ts b/website/src/utils/translationStatus.test.ts index f1a2207d77..f8fc9fefe4 100644 --- a/website/src/utils/translationStatus.test.ts +++ b/website/src/utils/translationStatus.test.ts @@ -151,6 +151,46 @@ describe("translationStatus", () => { expect(result).toBe(0.625); }); + it("originalページは計算から除外される", async () => { + const { calculateTranslationProgressRate } = await import( + "./translationStatus" + ); + + const status = { + $schema: "./translation-status.schema.json", + "/docs/page1/": "translated", // 1.0 + "/docs/page2/": "partially_translated", // 0.5 + "/docs/original1/": "original", // 除外 + "/docs/original2/": "original", // 除外 + "/docs/page3/": "untranslated", // 0.0 + }; + + mockFs.readFileSync.mockReturnValue(JSON.stringify(status)); + + const result = calculateTranslationProgressRate(); + + // (1.0 + 0.5 + 0.0) / 3 = 0.5 + expect(result).toBe(0.5); + }); + + it("全てoriginalページの場合は0を返す", async () => { + const { calculateTranslationProgressRate } = await import( + "./translationStatus" + ); + + const status = { + $schema: "./translation-status.schema.json", + "/docs/original1/": "original", + "/docs/original2/": "original", + }; + + mockFs.readFileSync.mockReturnValue(JSON.stringify(status)); + + const result = calculateTranslationProgressRate(); + + expect(result).toBe(0); + }); + it("ページが存在しない場合は0を返す", async () => { const { calculateTranslationProgressRate } = await import( "./translationStatus" diff --git a/website/src/utils/translationStatus.ts b/website/src/utils/translationStatus.ts index 4671f394c1..b83f298f23 100644 --- a/website/src/utils/translationStatus.ts +++ b/website/src/utils/translationStatus.ts @@ -4,7 +4,8 @@ import path from "node:path"; export type TranslationStatus = | "translated" | "partially_translated" - | "untranslated"; + | "untranslated" + | "original"; export type TranslationStatusMap = { [route: string]: TranslationStatus; @@ -67,19 +68,23 @@ export const registerRoutes = (routes: string[]): void => { /** * 翻訳の進捗率を計算する。 * `translated`は1.0、`partially_translated`は0.5の重みを持つ。 + * `original`は翻訳対象外のため計算から除外される。 * @returns [0.0, 1.0]の範囲で表される翻訳率 */ export const calculateTranslationProgressRate = (): number => { const status = loadTranslationStatus(); const routes = Object.keys(status).filter((key) => key !== "$schema"); + const translationTargetRoutes = routes.filter( + (route) => status[route] !== "original", + ); - if (routes.length === 0) { + if (translationTargetRoutes.length === 0) { return 0; } let translationScore = 0; - for (const route of routes) { + for (const route of translationTargetRoutes) { const currentStatus = status[route]; if (currentStatus === "translated") { translationScore += 1; @@ -88,7 +93,7 @@ export const calculateTranslationProgressRate = (): number => { } } - return translationScore / routes.length; + return translationScore / translationTargetRoutes.length; }; let translationStatusCache: TranslationStatusMap | null = null; diff --git a/website/translation-status.json b/website/translation-status.json index b7e727bc61..e8319b4504 100644 --- a/website/translation-status.json +++ b/website/translation-status.json @@ -187,9 +187,9 @@ "/docs/changelog/0.2.0/": "untranslated", "/docs/changelog/0.1.0/": "untranslated", "/docs/changelog/earlier/": "untranslated", - "/docs/japanese/": "translated", - "/docs/japanese/templates/": "translated", - "/docs/japanese/packages/": "translated", - "/docs/japanese/articles/": "translated", - "/docs/glossary/": "translated" + "/docs/japanese/": "original", + "/docs/japanese/templates/": "original", + "/docs/japanese/packages/": "original", + "/docs/japanese/articles/": "original", + "/docs/glossary/": "original" } diff --git a/website/translation-status.schema.json b/website/translation-status.schema.json index 2bbdb95ee2..ed6e066b75 100644 --- a/website/translation-status.schema.json +++ b/website/translation-status.schema.json @@ -11,7 +11,7 @@ }, "additionalProperties": { "type": "string", - "enum": ["translated", "partially_translated", "untranslated"], + "enum": ["translated", "partially_translated", "untranslated", "original"], "description": "ページの翻訳状態" } } From d8ceb5315025cd1763cd97ec7017f435a021efc3 Mon Sep 17 00:00:00 2001 From: 3w36zj6 <52315048+3w36zj6@users.noreply.github.com> Date: Tue, 10 Jun 2025 19:11:28 +0900 Subject: [PATCH 2/3] =?UTF-8?q?docs:=20=E4=B8=8D=E8=A6=81=E3=81=AB?= =?UTF-8?q?=E3=81=AA=E3=81=A3=E3=81=9F=E6=B3=A8=E6=84=8F=E6=9B=B8=E3=81=8D?= =?UTF-8?q?=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/glossary.md | 4 ---- docs/japanese/articles.md | 4 ---- docs/japanese/packages.md | 4 ---- docs/japanese/templates.md | 4 ---- docs/japanese/welcome.md | 4 ---- 5 files changed, 20 deletions(-) diff --git a/docs/glossary.md b/docs/glossary.md index a4a48f8ed7..b82212e5d5 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -5,10 +5,6 @@ description: | # 用語集 -
-

このページの内容は公式ドキュメントには含まれておらず、日本語コミュニティによって独自に追加されたものです。

-
- 以下は翻訳時に使用される英日中対照の用語集です。 | 英語 | 日本語 | 備考 | diff --git a/docs/japanese/articles.md b/docs/japanese/articles.md index c33431232d..c776b933ce 100644 --- a/docs/japanese/articles.md +++ b/docs/japanese/articles.md @@ -5,10 +5,6 @@ description: | # 日本語記事 -
-

このページの内容は公式ドキュメントには含まれておらず、日本語コミュニティによって独自に追加されたものです。

-
- Typstに関する日本語の記事は[Zenn](https://zenn.dev/)や[Qiita](https://qiita.com/)に沢山掲載されています。以下のリンクからその一覧が見られます。 - [Typstの記事一覧 | Zenn](https://zenn.dev/topics/typst) - ZennのTypstトピック diff --git a/docs/japanese/packages.md b/docs/japanese/packages.md index d888f9ee82..796f6d9f78 100644 --- a/docs/japanese/packages.md +++ b/docs/japanese/packages.md @@ -5,9 +5,5 @@ description: | # 日本語向けパッケージ -
-

このページの内容は公式ドキュメントには含まれておらず、日本語コミュニティによって独自に追加されたものです。

-
- - [rubby](https://typst.app/universe/package/rubby) - ふりがなを振る - [roremu](https://typst.app/universe/package/roremu) - 日本語のダミーテキストを生成する diff --git a/docs/japanese/templates.md b/docs/japanese/templates.md index 48931c4ae7..9623cb7d75 100644 --- a/docs/japanese/templates.md +++ b/docs/japanese/templates.md @@ -5,10 +5,6 @@ description: | # 日本語テンプレート -
-

このページの内容は公式ドキュメントには含まれておらず、日本語コミュニティによって独自に追加されたものです。

-
- ## 一般 - [typst-jp-template](https://github.com/satshi/typst-jp-template) - pLaTeXでのjarticle風のとりあえず日本語で書き始めるためのテンプレート diff --git a/docs/japanese/welcome.md b/docs/japanese/welcome.md index c7c5cb869c..2915236151 100644 --- a/docs/japanese/welcome.md +++ b/docs/japanese/welcome.md @@ -4,10 +4,6 @@ description: Typstの日本語組版のための情報を提供します。 # 日本語組版情報 -
-

このページの内容は公式ドキュメントには含まれておらず、日本語コミュニティによって独自に追加されたものです。

-
- このページでは、Typstで日本語組版を行うユーザー向けの情報を提供します。有益な情報をお持ちの方は、ぜひIssueやPull Requestを通じて貢献してください。 ここでは日本語に特化した情報を提供します。日本語だけに限らず、多言語を対象とする情報については、[Awesome Typst](https://github.com/qjcg/awesome-typst)などを参照してください。 From 061e4e029fce995fbe764ed185bf8117270bce63 Mon Sep 17 00:00:00 2001 From: 3w36zj6 <52315048+3w36zj6@users.noreply.github.com> Date: Wed, 11 Jun 2025 09:11:33 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20`original`=E3=82=B9=E3=83=86?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E3=82=B9=E3=82=92`community`=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/ui/common/TranslationStatusAlert.tsx | 2 +- website/src/utils/translationStatus.test.ts | 8 ++++---- website/src/utils/translationStatus.ts | 4 ++-- website/translation-status.json | 10 +++++----- website/translation-status.schema.json | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/website/src/components/ui/common/TranslationStatusAlert.tsx b/website/src/components/ui/common/TranslationStatusAlert.tsx index 357b81127c..3cfca066ed 100644 --- a/website/src/components/ui/common/TranslationStatusAlert.tsx +++ b/website/src/components/ui/common/TranslationStatusAlert.tsx @@ -43,7 +43,7 @@ const getStatusConfig = (status: TranslationStatus): StatusConfig => { message: "このページはまだ翻訳されていません。原文の内容が表示されています。", }; - case "original": + case "community": return { bgColor: "bg-cyan-50", borderColor: "border-cyan-200", diff --git a/website/src/utils/translationStatus.test.ts b/website/src/utils/translationStatus.test.ts index f8fc9fefe4..4d6b92a2da 100644 --- a/website/src/utils/translationStatus.test.ts +++ b/website/src/utils/translationStatus.test.ts @@ -160,8 +160,8 @@ describe("translationStatus", () => { $schema: "./translation-status.schema.json", "/docs/page1/": "translated", // 1.0 "/docs/page2/": "partially_translated", // 0.5 - "/docs/original1/": "original", // 除外 - "/docs/original2/": "original", // 除外 + "/docs/original1/": "community", // 除外 + "/docs/original2/": "community", // 除外 "/docs/page3/": "untranslated", // 0.0 }; @@ -180,8 +180,8 @@ describe("translationStatus", () => { const status = { $schema: "./translation-status.schema.json", - "/docs/original1/": "original", - "/docs/original2/": "original", + "/docs/original1/": "community", + "/docs/original2/": "community", }; mockFs.readFileSync.mockReturnValue(JSON.stringify(status)); diff --git a/website/src/utils/translationStatus.ts b/website/src/utils/translationStatus.ts index b83f298f23..f7ac4e567f 100644 --- a/website/src/utils/translationStatus.ts +++ b/website/src/utils/translationStatus.ts @@ -5,7 +5,7 @@ export type TranslationStatus = | "translated" | "partially_translated" | "untranslated" - | "original"; + | "community"; export type TranslationStatusMap = { [route: string]: TranslationStatus; @@ -75,7 +75,7 @@ export const calculateTranslationProgressRate = (): number => { const status = loadTranslationStatus(); const routes = Object.keys(status).filter((key) => key !== "$schema"); const translationTargetRoutes = routes.filter( - (route) => status[route] !== "original", + (route) => status[route] !== "community", ); if (translationTargetRoutes.length === 0) { diff --git a/website/translation-status.json b/website/translation-status.json index e8319b4504..b194dcd3ab 100644 --- a/website/translation-status.json +++ b/website/translation-status.json @@ -187,9 +187,9 @@ "/docs/changelog/0.2.0/": "untranslated", "/docs/changelog/0.1.0/": "untranslated", "/docs/changelog/earlier/": "untranslated", - "/docs/japanese/": "original", - "/docs/japanese/templates/": "original", - "/docs/japanese/packages/": "original", - "/docs/japanese/articles/": "original", - "/docs/glossary/": "original" + "/docs/japanese/": "community", + "/docs/japanese/templates/": "community", + "/docs/japanese/packages/": "community", + "/docs/japanese/articles/": "community", + "/docs/glossary/": "community" } diff --git a/website/translation-status.schema.json b/website/translation-status.schema.json index ed6e066b75..d97147349a 100644 --- a/website/translation-status.schema.json +++ b/website/translation-status.schema.json @@ -11,7 +11,7 @@ }, "additionalProperties": { "type": "string", - "enum": ["translated", "partially_translated", "untranslated", "original"], + "enum": ["translated", "partially_translated", "untranslated", "community"], "description": "ページの翻訳状態" } }