Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions docs/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ description: |

# 用語集

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

以下は翻訳時に使用される英日中対照の用語集です。

| 英語 | 日本語 | 備考 |
Expand Down
4 changes: 0 additions & 4 deletions docs/japanese/articles.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ description: |

# 日本語記事

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

Typstに関する日本語の記事は[Zenn](https://zenn.dev/)や[Qiita](https://qiita.com/)に沢山掲載されています。以下のリンクからその一覧が見られます。

- [Typstの記事一覧 | Zenn](https://zenn.dev/topics/typst) - ZennのTypstトピック
Expand Down
4 changes: 0 additions & 4 deletions docs/japanese/packages.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,5 @@ description: |

# 日本語向けパッケージ

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

- [rubby](https://typst.app/universe/package/rubby) - ふりがなを振る
- [roremu](https://typst.app/universe/package/roremu) - 日本語のダミーテキストを生成する
4 changes: 0 additions & 4 deletions docs/japanese/templates.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ description: |

# 日本語テンプレート

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

## 一般

- [typst-jp-template](https://github.com/satshi/typst-jp-template) - pLaTeXでのjarticle風のとりあえず日本語で書き始めるためのテンプレート
Expand Down
4 changes: 0 additions & 4 deletions docs/japanese/welcome.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@ description: Typstの日本語組版のための情報を提供します。

# 日本語組版情報

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

このページでは、Typstで日本語組版を行うユーザー向けの情報を提供します。有益な情報をお持ちの方は、ぜひIssueやPull Requestを通じて貢献してください。

ここでは日本語に特化した情報を提供します。日本語だけに限らず、多言語を対象とする情報については、[Awesome Typst](https://github.com/qjcg/awesome-typst)などを参照してください。
Expand Down
10 changes: 10 additions & 0 deletions website/src/components/ui/common/TranslationStatusAlert.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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:
"このページの内容は公式ドキュメントには含まれておらず、日本語コミュニティが独自に追加したものです。",
};
}
};

Expand Down
40 changes: 40 additions & 0 deletions website/src/utils/translationStatus.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
13 changes: 9 additions & 4 deletions website/src/utils/translationStatus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import path from "node:path";
export type TranslationStatus =
| "translated"
| "partially_translated"
| "untranslated";
| "untranslated"
| "community";

export type TranslationStatusMap = {
[route: string]: TranslationStatus;
Expand Down Expand Up @@ -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;
Expand All @@ -88,7 +93,7 @@ export const calculateTranslationProgressRate = (): number => {
}
}

return translationScore / routes.length;
return translationScore / translationTargetRoutes.length;
};

let translationStatusCache: TranslationStatusMap | null = null;
Expand Down
10 changes: 5 additions & 5 deletions website/translation-status.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
2 changes: 1 addition & 1 deletion website/translation-status.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
},
"additionalProperties": {
"type": "string",
"enum": ["translated", "partially_translated", "untranslated"],
"enum": ["translated", "partially_translated", "untranslated", "community"],
"description": "ページの翻訳状態"
}
}