# 日本語化パイプライン — 再実行の手順

## 前提

このフォルダのスクリプトは、展開済みのゲーム本体を `./app/game/index.html` に置いてある前提で動きます。
まず asar を展開してください（Node.js 18+ が必要）:

```sh
npx @electron/asar extract \
  "E:/SteamLibrary/steamapps/common/Lowmoor Idle RPG An Adventurer's Chronicle/resources/app.asar" \
  ./app
```

Steam の更新でゲームが新しくなったときも、この手順からやり直せば
`tm.json`（既訳）がそのまま効くので、**増えた分だけ**を翻訳すれば済みます。

## 再ビルドだけしたいとき

```sh
node patch.mjs          # tm.json + overrides.json を index.html に適用 -> build/index.html
```

DeepL のクォータは消費しません。`tm.json` や `overrides.json` を手で直して
訳文を良くしたら、これを実行するだけで反映されます。

## 差分だけ翻訳したいとき

```sh
echo -n "<DeepL APIキー>" > .deepl-key     # または環境変数 DEEPL_KEY
node extract.mjs                            # 分類しなおし
node extract-html.mjs
node translate.mjs glossary                 # 用語集を登録（glossary.tsv を編集したとき）
node translate.mjs usage                    # 残り文字数の確認
node translate.mjs run out-sentence.json    # 未訳分だけ翻訳して tm.json に追記
node patch.mjs
```

`translate.mjs run` は実行前に残クォータを確認し、足りなければ**払わずに中断**します。
バッチごとに `tm.json` を保存するので、途中で落ちても払った分は失われません。

## asar に詰め直す

```sh
mkdir -p pack && cp -r app pack/app && cp build/index.html pack/app/game/index.html
npx @electron/asar pack pack/app app.asar --unpack-dir "node_modules/steamworks.js/**"
```

（`pack/app/steam/builder` と `pack/app/steam/output` は開発者のビルドツール 150MB なので、
詰める前に削除してよい。ゲームコードからは参照されていない。）

## ファイル

| ファイル | 中身 |
|---|---|
| `tm.json` | 翻訳メモリ。原文をキーにしたただのJSON。**ここを直接編集して訳文を良くできる** |
| `overrides.json` | 手訳の上書き層。tm.json より優先される。UI語・固有名詞はここに置く |
| `glossary.tsv` | DeepL に渡す用語集 |
| `out-fragment-unsafe.json` | 未訳のまま残した 980 件。`${...}` を含むテンプレート文字列 |
| `out-label-skip.json` | 分類上スキップした 983 件（単語1つの固有名詞・マークアップ片） |
| `built-index.html` | 現時点のビルド成果物（`release/lowmoor-ja.html` と同じ） |
