Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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": "ページの翻訳状態"
}
}