Conversation
- internal/i18n パッケージを新設(無依存の最下層、循環 import 回避)
- Resolve(純粋関数)/ SetLang / T(書式引数対応)と en/ja カタログ
- 言語解決の優先順位: --lang フラグ > ENV_SYNC_LANG > config の language > デフォルト en
- AppConfig に language フィールド追加、ParseFlags に --lang/--language 追加
- init/setup サブコマンドおよび --help でも言語が確定するよう ParseFlags 前に解決
- 全ハードコード日本語メッセージ(約147箇所)をカタログ化し英訳を用意
- %w ラップは fmt.Errorf("%s: %w", i18n.T(key), err) 形式で保持
- README.md / README.ja.md に言語設定の説明を追記
- i18n 解決ロジックの単体テスト + 言語切替の実バイナリ統合テストを追加
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
タスク
CLI の出力・エラーメッセージ(fmt.Print*/Fprint*/Errorf/errors.New)が日本語でハードコードされていたものを国際化(i18n)し、デフォルト英語・config/環境変数/フラグで言語を切り替えられるようにする(Agent Loop タスク #35)。
実装内容
internal/i18nパッケージを新設(他の internal パッケージに依存しない最下層パッケージ。循環 import を回避)Resolve(flag, env, config)(純粋関数)/SetLang/T(書式引数%s/%d対応)catalog_en.go/catalog_ja.go(en/ja カタログ、計128キー)、keys.go(MsgKey 定数)--langフラグ >ENV_SYNC_LANG環境変数 > config のlanguage> デフォルトen。不正/未対応コードは(他に有効な指定がなければ)enにフォールバックAppConfigにトップレベルlanguageフィールドを追加、ParseFlagsに--lang/--languageを追加--helpのいずれでも、usage/エラー出力前に言語が確定するようParseFlagsの前で解決(PrescanLangでフラグ先読み)%wラップはfmt.Errorf("%s: %w", i18n.T(key), err)形式で保持(カタログに%wを入れない)README.md/README.ja.mdに言語設定の説明を追記完了条件
language: ja→ 日本語で表示go build ./.../go test ./...パス、i18n 解決ロジックの単体テスト追加動作確認
TestLanguageResolution_Integration/TestHelpLanguage_Integration)--help/ 存在しない env 指定で en/ja/優先順位/フォールバックを実バイナリで確認)品質チェック結果
t.Cleanupで復元)。%wラップ・en/ja カタログ parity(TestCatalogKeyParity)は検証済みパフォーマンス診断(静的解析)
LoadAppConfigが複数回実行され、global config のパーミッションが 0600 でない場合に警告が重複出力されうる(性能影響は無視可能、UX 上の留意点。本 PR のスコープ外)i18n.Tの毎回 map lookup — いずれも CLI 規模では無視可能。T/Resolve/SetLang/PrescanLangはすべて O(1)〜O(argv) で問題なし🤖 Generated with Claude Code