diff --git a/docs/glossary.md b/docs/glossary.md index 8f98927258..5710a2dad5 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)などを参照してください。 diff --git a/website/src/components/ui/common/TranslationStatusAlert.tsx b/website/src/components/ui/common/TranslationStatusAlert.tsx index d0552002b2..3cfca066ed 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 "community": + 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..4d6b92a2da 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/": "community", // 除外 + "/docs/original2/": "community", // 除外 + "/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/": "community", + "/docs/original2/": "community", + }; + + 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..f7ac4e567f 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" + | "community"; 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] !== "community", + ); - 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 e926a714c2..0eae7682d5 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/": "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 2bbdb95ee2..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"], + "enum": ["translated", "partially_translated", "untranslated", "community"], "description": "ページの翻訳状態" } }