From 72606c46d77f7577cf8947a19f64e410a1d8409d Mon Sep 17 00:00:00 2001 From: yuu1111 Date: Fri, 21 Aug 2026 02:19:04 +0900 Subject: [PATCH 1/5] feat(i18n): add Japanese localization --- src/components/settings-page.tsx | 1 + src/i18n.ts | 7 +- src/locales/en.json | 1 + src/locales/ja.json | 667 +++++++++++++++++++++++++++++++ src/locales/zh.json | 1 + 5 files changed, 676 insertions(+), 1 deletion(-) create mode 100644 src/locales/ja.json diff --git a/src/components/settings-page.tsx b/src/components/settings-page.tsx index 92b66ed..dbfc568 100644 --- a/src/components/settings-page.tsx +++ b/src/components/settings-page.tsx @@ -174,6 +174,7 @@ export function SettingsPage({ {t("settings.lang_en")} {t("settings.lang_zh")} + {t("settings.lang_ja")} diff --git a/src/i18n.ts b/src/i18n.ts index b33e381..684c40a 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -2,12 +2,13 @@ import i18n from "i18next"; import { initReactI18next } from "react-i18next"; import en from "./locales/en.json"; import zh from "./locales/zh.json"; +import ja from "./locales/ja.json"; // Initialize language from localStorage or navigator language const getInitialLanguage = (): string => { try { const saved = localStorage.getItem("language"); - if (saved === "zh" || saved === "en") { + if (saved === "zh" || saved === "ja" || saved === "en") { return saved; } } catch (e) { @@ -19,6 +20,9 @@ const getInitialLanguage = (): string => { if (browserLang.toLowerCase().includes("zh")) { return "zh"; } + if (browserLang.toLowerCase().startsWith("ja")) { + return "ja"; + } return "en"; }; @@ -28,6 +32,7 @@ void i18n resources: { en: { translation: en }, zh: { translation: zh }, + ja: { translation: ja }, }, lng: getInitialLanguage(), fallbackLng: "en", diff --git a/src/locales/en.json b/src/locales/en.json index 0615eab..03c7710 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -583,6 +583,7 @@ "language_label": "App Language", "lang_en": "English", "lang_zh": "简体中文", + "lang_ja": "日本語", "menu_bar_title": "Menu Bar / System Tray Settings", "menu_bar_desc": "Configure metrics for the macOS menu bar title, Windows tray tooltip, and tray menu.", "menu_bar_show_title": "Show in Menu Bar / Tray Tooltip", diff --git a/src/locales/ja.json b/src/locales/ja.json new file mode 100644 index 0000000..8754d5c --- /dev/null +++ b/src/locales/ja.json @@ -0,0 +1,667 @@ +{ + "common": { + "dashboard": "ダッシュボード", + "model": "モデル", + "daily": "毎日", + "project": "プロジェクト", + "monthly": "毎月", + "sessions": "セッション", + "settings": "設定", + "logs": "ログ", + "loading": "読み込み中", + "error": "エラー", + "close": "近い", + "search": "検索", + "clear": "クリア", + "actions": "アクション", + "date": "日付", + "tokens": "トークン", + "cost": "料金", + "cache": "キャッシュ", + "path": "パス", + "mode": "モード", + "type": "タイプ", + "session": "セッション", + "time": "時間", + "command": "指示", + "percent": "パーセント" + }, + "header": { + "app_title": "コーデックス使用デスクトップ", + "upgrade": "v{{version}} をアップグレードします", + "downloading_update": "ダウンロード中...", + "downloading_update_progress": "{{percent}}% をダウンロード中", + "restart_update": "更新するには再起動してください", + "upgrade_title": "クリックしてアプリケーションをアップグレードします" + }, + "update": { + "new_version": "新しいアップデートが利用可能: v{{version}}", + "latest_badge": "最新", + "banner_text": "CodexUsageDesktop の新しいバージョンが準備できました。現在、v{{currentVersion}} を使用しています。", + "hide_release_notes": "リリースノートを非表示にする", + "view_release_notes": "リリースノートを見る", + "upgrade_now": "今すぐアップグレード", + "downloading": "ダウンロード中...", + "downloading_progress": "{{percent}}% をダウンロード中", + "restart_now": "再起動してアップデートする", + "view_release": "リリースを見る", + "dismiss_aria": "更新通知を閉じる", + "rate_limit_error": "GitHub API レート制限を超過したか、ネットワーク タイムアウトになりました。リリース ページで更新ログを確認し、最新バージョンをダウンロードしてください。" + }, + "error": { + "sync_failed": "データ同期に失敗しました" + }, + "loading": { + "preparing_cache": "ローカルキャッシュの準備", + "loading_range": "{{range}} をロード中", + "loading_monthly": "毎月の使用量を読み込む", + "loading_sessions": "セッションの詳細をロードしています", + "cached_snapshot_desc": "キャッシュされたダッシュボードのスナップショットをロードしています。", + "selected_window_desc": "選択したウィンドウの使用状況とコストのデータをロードしています。", + "natural_month_desc": "自然月の合計を集計します。", + "session_logs_desc": "個々のセッション ログを解析します。", + "reading_sessions": "読書会", + "aggregating_tokens": "トークンの集約", + "estimating_cost": "コストの見積り" + }, + "hero": { + "title": "コーデックストークンの使用法", + "subtitle": "ローカル開発者トークンの追跡とコスト見積もり。", + "last_updated": "最終更新日 {{time}}", + "last_updated_never": "決して更新されない", + "rescan_duration": "再スキャンは {{duration}} に完了しました", + "refresh": "リフレッシュ", + "refreshing": "爽やかな...", + "export": "輸出", + "exporting": "エクスポート中...", + "export_excel": "エクセル(.xlsx)", + "export_markdown": "マークダウン (.md)", + "overview_label": "概要", + "rescan": "ローカルログを再スキャンする", + "cache_synced": "キャッシュが同期されました", + "out_of_sync": "同期が取れていない", + "total_cost_label": "総コスト", + "cost_drivers": "コスト要因", + "sync_logs_to_cache_desc": "ローカルログをキャッシュに同期する", + "synced_message": "{{days}} 日の同期 ({{reused}} キャッシュ、{{parsed}} 解析)", + "resetting_message": "ローカル キャッシュをリセットし、使用状況データを再構築します。", + "reset_rebuilt_message": "ローカル キャッシュをリセットし、ローカル Codex ログから使用状況データを再構築します。", + "exported_message": "{{range}} を {{path}} にエクスポートしました。" + }, + "metrics": { + "tokens": { + "label": "トークンの内訳", + "detail": "{{days}} 日合計" + }, + "average": { + "label": "平均/日", + "detail": "1日あたりのトークンとコスト" + }, + "cache": { + "label": "キャッシュヒット", + "detail": "{{tokens}} キャッシュされたトークン" + }, + "costPerMillion": { + "label": "コスト/100万", + "detail": "100 万あたりの混合コスト" + } + }, + "limits": { + "title": "コーデックスの制限", + "description": "ローカル Codex CLI からのライブ アカウント制限。", + "updated": "{{time}} を更新しました", + "not_fetched": "まだ取得されていません", + "not_logged_in": "ログインしていません", + "login_instruction": "ライブレート制限を表示するには、ターミナルでログインコマンドを実行するか、ブラウザ/IDE 拡張機能を介して Codex を認証してください。", + "click_to_select": "クリックして選択してください", + "login_hint": "ヒント: ターミナルで上記のコマンドを実行するか、ブラウザ/IDE 拡張機能を介して Codex アカウントにログインしてください。", + "unavailable_reason": "現在、コーデックスの制限を取得できません。ネットワークと Codex のログイン状態を確認して、再試行してください。", + "window_5hour": "5時間制限", + "window_weekly": "週間制限", + "window_monthly": "月間利用制限", + "unavailable": "利用不可", + "no_window_returned": "Codex から返されるレート制限ウィンドウはありません。", + "remaining": "残り", + "consumed": "消費された", + "window": "ウィンドウ", + "reset_credits": "クレジットをリセットする", + "reset_credits_open": "ChatGPT でリセット クレジットを開く", + "reset_credits_toggle": "リセットされたクレジット有効期限の詳細を表示または非表示にする", + "reset_credits_available": "{{count}} が利用可能です", + "reset_credit_number": "クレジット {{index}}", + "reset_credit_expires_at": "有効期限が切れます {{date}}", + "reset_credit_time_left": "{{timeLeft}}", + "reset_credit_no_expiry": "有効期限はありません", + "reset_credits_details_partial": "{{count}} 個以上のクレジットについて有効期限の詳細が返されませんでした", + "reset_credits_details_unavailable": "有効期限の詳細は一時的に利用できません", + "reset_credits_none": "利用可能なリセット クレジットはありません", + "left": "左", + "status_near_limit": "限界に近い", + "status_moderate": "適度", + "status_healthy": "健康", + "reset_unavailable": "リセット不可", + "resetting_soon": "すぐにリセットします", + "reset_at": "{{time}} ({{timeLeft}}) でリセット", + "resets_at": "{{time}} ({{timeLeft}}) をリセットします", + "mins_left_one": "残り 1 分", + "mins_left_other": "残り {{count}} 分", + "hours_left_one": "残り1時間", + "hours_left_other": "残り {{count}} 時間", + "days_left_one": "残り1日", + "days_left_other": "残り {{count}} 日", + "window_min": "{{count}} 分", + "window_hours": "{{count}} 時間", + "window_days": "{{count}} 日", + "window_unknown": "未知", + "subscription_expires": "有効期限が切れます {{date}} ({{timeLeft}})", + "auto_renew_off": "自動更新オフ", + "quota_forecast_likely": "{{score}}% · 48 時間以内にリセットされる可能性があります", + "quota_forecast_possible": "{{score}}% · 48 時間以内にリセット可能", + "quota_forecast_low": "{{score}}% · 48 時間以内に低確率", + "quota_forecast_likely_label": "48 時間以内にリセットされる可能性があります", + "quota_forecast_possible_label": "48時間以内にリセット可能", + "quota_forecast_low_label": "48時間以内に低確率", + "quota_forecast_open": "オープン Codex クォータのリセット予測" + }, + "daily": { + "title": "毎日の使用量", + "subtitle": "フィールドごとに並べ替えて、毎日のトークンの構成、規模、コストを比較します。", + "cols": { + "date": "日付", + "tokens": "総トークン数", + "cost": "料金", + "cache": "キャッシュヒット", + "actions": "アクション" + }, + "action_view_sessions": "セッションを見る", + "no_data": "選択した範囲の使用状況データが見つかりませんでした。", + "pagination_prev": "前の", + "pagination_next": "次", + "pagination_info": "{{total}} 日間の {{start}} から {{end}} を表示しています", + "date_range": "{{start}} から {{end}}", + "no_activity": "活動なし", + "no_activity_days": "アクティビティはありません ({{count}} 日)", + "comparison_range": "{{range}} を比較しています", + "token_legend_label": "トークンの色の凡例", + "cost_legend_label": "コストスケール: 範囲ピークの 3 分の 1 までは緑、3 分の 2 まではオレンジ、3 分の 2 を超えると赤", + "cost_scale": "コストとピークの比較", + "uncached_input": "キャッシュされていない入力", + "cached_input": "キャッシュされた入力", + "input_including_cache": "入力 (キャッシュを含む)", + "cached_with_rate": "キャッシュ済み ({{rate}})", + "output": "出力", + "peak": "最高", + "open_sessions": "{{date}} のセッションを表示", + "token_bar_label": "トークン構成: {{input}} 非キャッシュ入力、{{cached}} キャッシュ入力、{{output}} 出力、{{total}} 合計", + "total_bar_label": "{{total}} 合計トークン数。範囲ピークの {{percent}}", + "cost_bar_label": "コスト {{cost}};範囲ピークの {{percent}}", + "sort": { + "label": "並べ替え", + "date": "日付", + "totalTokens": "総トークン数", + "inputTokens": "入力", + "cachedInputTokens": "キャッシュされたトークン", + "outputTokens": "出力", + "costUSD": "料金", + "asc": "上昇", + "desc": "降順" + } + }, + "monthly": { + "title": "毎月の使用量の詳細", + "subtitle": "{{tz}} タイムゾーンを使用した、{{start}} から {{end}} までの自然月の合計。", + "cols": { + "month": "月", + "tokens": "トークン構成", + "cost": "料金", + "cache": "キャッシュヒット率" + }, + "no_data": "毎月のデータはまだ蓄積されていません。", + "month_range": "{{start}} から {{end}}", + "no_usage": "使用禁止", + "no_usage_months": "使用なし ({{count}} か月)", + "comparison_range": "{{start}} と {{end}} の比較", + "token_legend_label": "トークンの色の凡例", + "cost_legend_label": "コストスケール: 範囲ピークの 3 分の 1 までは緑、3 分の 2 まではオレンジ、3 分の 2 を超えると赤", + "cost_scale": "コストとピークの比較", + "uncached_input": "キャッシュされていない入力", + "cached_input": "キャッシュされた入力", + "input_including_cache": "入力 (キャッシュを含む)", + "cached_with_rate": "キャッシュ済み ({{rate}})", + "output": "出力", + "peak": "最高", + "token_bar_label": "トークン構成: {{input}} 非キャッシュ入力、{{cached}} キャッシュ入力、{{output}} 出力、{{total}} 合計", + "total_bar_label": "{{total}} 合計トークン数。範囲ピークの {{percent}}", + "cost_bar_label": "コスト {{cost}};範囲ピークの {{percent}}", + "delta": { + "comparison": "月々", + "new": "新しい", + "unavailable": "前月比の比較はできません" + }, + "sort": { + "label": "並べ替え", + "month": "月", + "totalTokens": "総トークン数", + "inputTokens": "入力", + "cachedInputTokens": "キャッシュされたトークン", + "outputTokens": "出力", + "costUSD": "料金", + "asc": "上昇", + "desc": "降順" + } + }, + "models": { + "title": "モデルの使用法の詳細", + "subtitle": "モデルごとにトークンとコストの分布を分析します。", + "views": { + "label": "モデルページビュー", + "usage": "使用状況分析", + "catalog": "価格カタログ" + }, + "catalog": { + "subtitle": "LiteLLM 価格カタログからチャット モデル トークンの価格を比較します。", + "search": "モデルまたはプロバイダーを検索...", + "provider": "プロバイダー", + "all_providers": "すべてのプロバイダー", + "model": "モデル", + "unit": "USD / 100万トークン", + "loading": "価格カタログを読み込んでいます...", + "error": "価格カタログのロードに失敗しました。", + "no_results": "フィルターに一致する価格エントリはありません。", + "limited": "オフライン: 限定された組み込みの価格カタログを表示します。", + "free": "無料", + "count": "{{count}} モデル", + "page": "ページ {{page}} / {{pages}}", + "previous": "前のページへ", + "next": "次のページ" + }, + "no_data": "このウィンドウにはモデル アクティビティがありません。", + "other": "他の", + "pricing_unavailable": "価格設定がありません", + "of_usage": "使用量の", + "of_cost": "コストの", + "summary": { + "active_models": "アクティブモデル", + "total_tokens": "総トークン数", + "estimated_cost": "推定コスト", + "cache_hit": "キャッシュヒット率", + "effective_price": "全体の実効価格 / 100 万" + }, + "composition": { + "title": "トークン構成", + "subtitle": "入力にはキャッシュされた入力が含まれます。バーは非キャッシュ入力 + キャッシュ入力 + 出力を使用します。", + "total": "総トークン数", + "input_total": "入力 (キャッシュを含む)", + "uncached": "キャッシュされていない入力", + "cached": "キャッシュされた入力", + "output": "出力", + "bar_label": "トークン構成: {{input}} 非キャッシュ入力、{{cached}} キャッシュ入力、{{output}} 出力、{{total}} 合計" + }, + "distribution": { + "title": "モデル別のトークンシェア", + "subtitle": "トークン総数の上位 6 モデル。残りのモデルは「その他」としてグループ化されます。" + }, + "comparison": { + "title": "機種比較", + "subtitle": "使用構成、標準価格、実効価格、コストへの影響を比較します。すべての価格は 100 万トークンあたりの価格です。" + }, + "sort": { + "label": "降順で並べ替え", + "tokens": "総トークン数", + "cost": "推定コスト", + "effective": "実効価格" + }, + "groups": { + "model": "モデルと使用量のシェア", + "tokens": "トークンミックス", + "prices": "価格/100万トークン", + "cost": "コストへの影響" + }, + "prices": { + "input": "入力", + "cached": "キャッシュされた", + "output": "出力", + "effective": "効果的", + "input_tooltip": "100 万個の非キャッシュ入力トークンの標準価格", + "cached_tooltip": "100 万個のキャッシュされた入力トークンの標準価格", + "output_tooltip": "100万出力トークンの標準価格", + "effective_tooltip": "この使用量構成の推定コストをトークン合計で割った値" + }, + "price_legend": { + "label": "相対価格熱の伝説", + "low": "低価格", + "medium": "中価格帯", + "high": "高価格", + "equal": "同価格" + } + }, + "projects": { + "title": "プロジェクトの使用状況の詳細", + "subtitle": "プロジェクト ディレクトリごとにトークンとコストの合計を分析します。", + "card_title": "プロジェクトの使用法", + "card_subtitle": "選択したウィンドウのプロジェクト ディレクトリごとにグループ化されたトークンとコストの合計。", + "cols": { + "project": "プロジェクトディレクトリ", + "tokens": "総トークン数", + "cost": "料金", + "composition": "トークン構成", + "percent": "全体の %", + "actions": "アクション" + }, + "token_legend": "トークンとコストの凡例", + "legend": { + "uncached": "キャッシュされていない入力", + "cached": "キャッシュされた入力", + "output": "出力", + "low_cost": "低コスト", + "medium_cost": "中コスト", + "high_cost": "高コスト" + }, + "sort": { + "label": "並べ替え", + "name": "プロジェクト名", + "total": "総トークン数", + "input": "入力(キャッシュあり)", + "cached": "キャッシュされた入力", + "output": "出力", + "cost": "料金", + "ascending": "昇順", + "descending": "降順" + }, + "values": { + "input": "入力", + "cached": "キャッシュされた", + "output": "出力" + }, + "highest": "最高", + "relative_peak": "ピークの {{percent}}%", + "open_details": "{{project}} のオープンアナリティクス", + "bar_label": "{{total}} 合計トークン: {{cached}} キャッシュを含む {{input}} 入力、および {{output}} 出力", + "action_view_sessions": "セッションを見る", + "no_projects": "プロジェクト ディレクトリはまだログで追跡されていません。" + }, + "project_modal": { + "title": "{{projectName}} のセッション", + "all_projects": "すべてのプロジェクト", + "tokens_breakdown": "トークンの内訳", + "input": "入力", + "output": "出力", + "cached": "キャッシュされた", + "estimated_cost": "推定コスト", + "sessions_list": "セッションリスト", + "no_sessions": "このプロジェクトのセッションが見つかりませんでした。", + "project_details": "プロジェクトの詳細", + "active_files": "アクティブなファイル", + "showing_filtered": "{{filtered}} 一致するセッションを表示しています", + "subtitle_desc": "このディレクトリに書き込む個々のセッション", + "search_placeholder": "タイトル、セッション ID、またはモデルを検索します...", + "no_matching_sessions": "検索クエリに一致するセッションはありません", + "clear_search_hint": "検索クエリをクリアするか、別の用語を検索してみてください。", + "session_id_file": "セッションタイトル/ID", + "no_models": "モデルがありません", + "view_in_sessions_tab": "「セッション」タブで表示", + "analytics_title": "使用状況分析", + "analytics_loading": "プロジェクト分析を読み込み中...", + "analytics_error": "プロジェクト分析をロードできませんでした", + "no_analytics": "この範囲では使用できるプロジェクト分析はありません。", + "total_tokens": "総トークン数", + "input_total": "入力(キャッシュを含む)", + "cache_hit": "キャッシュヒット率", + "model_share": "モデルトークンシェア", + "model_share_desc": "モデルごとの総トークンのシェア。最初の 6 つ以降のモデルは「その他」としてグループ化されます。", + "no_model_data": "このプロジェクトにはモデル トークン データがありません。", + "daily_trend": "毎日のトークンとコストの傾向", + "daily_trend_desc": "独立した右軸にコストを伴うスタックされたトークン構成。", + "no_trend_data": "この範囲内での毎日の活動はありません。", + "search_aria": "プロジェクト セッションを検索する" + }, + "ranges": { + "1d": "過去 1 日", + "2d": "過去 2 日間", + "7d": "過去 7 日間", + "14d": "過去 14 日間", + "30d": "過去 30 日間", + "60d": "過去60日間", + "90d": "過去90日間", + "180d": "過去 180 日間", + "365d": "過去 365 日" + }, + "range_switcher": { + "aria_select_range": "時間範囲を選択してください", + "custom_range": "カスタム範囲を選択...", + "modal_title": "カスタム範囲の選択", + "modal_close_aria": "カスタム範囲モーダルを閉じる", + "selected_range": "選択済み: {{start}} ~ {{end}}", + "selected_start_only": "選択済み: {{start}} (終了日を選択してください...)", + "choose_start": "開始日を選択してください...", + "err_select_both": "開始日と終了日の両方を選択してください。", + "err_end_before_start": "終了日を開始日より前にすることはできません。", + "btn_clear": "クリア", + "btn_cancel": "キャンセル", + "btn_apply": "適用範囲" + }, + "sessions": { + "title": "セッションの詳細", + "subtitle": "コマンドごとの詳細な履歴、またはファイル編集履歴。", + "search_placeholder": "パスまたはコマンドを検索...", + "filter_all_modes": "すべてのモード", + "filter_all_types": "全種類", + "btn_clear_filters": "フィルターをクリアする", + "cols": { + "time": "時間", + "project": "プロジェクト/ファイル", + "type": "タイプ", + "cache": "キャッシュ", + "mode": "モード", + "tokens": "トークン", + "cost": "料金" + }, + "no_data": "現在の検索フィルターに一致するセッション ログはありません。", + "showing_info": "{{count}} セッションを表示しています", + "showing_info_filtered": "{{total}} セッション中 {{filtered}} を表示しています", + "no_sessions_desc": "Codex CLI セッション ログが見つからないか、使用状況イベントが含まれていません。 「ローカルログを再スキャン」をクリックして再度確認します。", + "filtering_by_project": "プロジェクトによるフィルタリング", + "count_sessions_one": "1セッション", + "count_sessions_other": "{{count}} セッション", + "day_total_tokens": "1日の合計トークン数", + "day_cost": "1日あたりの費用", + "projects_models": "プロジェクトとモデル", + "time_label": "時間: {{time}}", + "size_label": "サイズ: {{size}}", + "no_workspace": "ワークスペースなし", + "recorded_time": "録音済み", + "total_tokens": "総トークン数", + "input_including_cache": "入力 (キャッシュを含む)", + "cached": "キャッシュされた", + "output": "出力", + "token_bar_label": "トークンの内訳: {{input}} 非キャッシュ入力、{{cached}} キャッシュ入力、{{output}} 出力、{{total}} 合計", + "token_bar_empty": "トークンアクティビティはありません", + "token_total_label": "合計トークン数 {{total}};最も高い可視セッションの {{percent}}", + "cost_pill_label": "コスト {{cost}};最も高い可視セッションの {{percent}}", + "open_session": "セッションを開く {{title}}", + "quota": { + "title": "観察されたクォータ使用量", + "estimated": "推定", + "five_hour": "5時間", + "weekly": "毎週", + "approx": "約", + "aria_label": "推定 5 時間および週ごとの割り当て使用量", + "resets": "リセット: {{value}}", + "caveat": "整数ログのスナップショットから推定されます。丸めやその他の同時 Codex セッションは、帰属に影響を与える可能性があります。各リセット ウィンドウは個別に表示されます。" + }, + "detail": { + "modal_title": "セッションの詳細", + "close_aria": "セッションの詳細を閉じる", + "timestamp": "タイムスタンプ", + "project_path": "プロジェクトパス", + "trigger": "トリガー/コマンド", + "file_path": "ファイルパス", + "mode": "呼び出しモード", + "type": "リクエストタイプ", + "tokens": "トークン", + "tokens_breakdown": "内訳 (入力 / 出力 / キャッシュ)", + "estimated_cost": "推定コスト", + "model": "モデル名", + "duration": "間隔", + "total_tokens": "総トークン数", + "cost": "料金", + "cache": "キャッシュ", + "tool_calls": "ツール呼び出し", + "patches": "パッチ", + "errors": "エラー", + "details": "詳細", + "timeline": "タイムライン", + "raw_jsonl": "生のJSONL", + "loading_replay": "セッションリプレイの読み込み中", + "session_summary": "セッションの概要", + "started": "開始: {{value}}", + "ended": "終了: {{value}}", + "first_token": "最初のトークン: {{value}}", + "cli": "CLI: {{value}}", + "turn": "{{id}} を回します", + "message_count_one": "{{count}} メッセージ", + "message_count_other": "{{count}} メッセージ", + "tool_count_one": "{{count}} ツール", + "tool_count_other": "{{count}} ツール", + "patch_count_one": "{{count}} パッチ", + "patch_count_other": "{{count}} パッチ", + "error_count_one": "{{count}} エラー", + "error_count_other": "{{count}} エラー", + "token_event_count_one": "{{count}} トークン イベント", + "token_event_count_other": "{{count}} トークン イベント", + "system": "システムプロンプト", + "developer": "開発者", + "user": "ユーザー", + "assistant": "アシスタント", + "expand": "拡大する", + "collapse": "崩壊", + "reasoning_summary": "推論の要約", + "arguments": "引数", + "command": "指示", + "patch_input": "パッチ", + "edited_files_one": "{{count}} ファイルを編集しました", + "edited_files_other": "{{count}} ファイルを編集しました", + "working_directory": "作業ディレクトリ", + "exit_code": "終了コード", + "wall_time": "ウォールタイム", + "process_session": "プロセスセッション", + "tool_argument_labels": { + "cell_id": "プロセスセッション", + "session_id": "プロセスセッション", + "chars": "入力", + "yield_time_ms": "待機間隔 (ミリ秒)", + "max_tokens": "出力トークン制限", + "max_output_tokens": "出力トークン制限" + }, + "output": "出力", + "activity_running": "ランニング", + "activity_ran": "ラン", + "activity_stopped": "停止しました", + "exit_success_tooltip": "プロセスが正常に終了しました", + "exit_failure_tooltip": "プロセスがエラーで終了しました", + "web_search": "ウェブ検索", + "search_queries": "検索クエリ", + "search_result": "検索結果 {{index}}", + "image_count_one": "{{count}} 出力イメージ", + "image_count_other": "{{count}} 出力イメージ", + "output_image": "出力画像 {{index}}", + "stderr": "標準エラー", + "user_input_request": "ユーザー入力リクエスト", + "custom_answer": "カスタム回答", + "patch_failed": "パッチが失敗しました", + "patch_result": "パッチ結果", + "patch_output": "パッチ出力", + "token_events": "トークンイベント", + "tokens_count": "{{value}} トークン", + "error": "エラー", + "show_full_text": "全文を表示", + "hide_full_text": "全文を隠す", + "raw_preview": "生の JSONL プレビュー", + "raw_metadata": "{{size}} · {{lines}} 行", + "show_full_raw": "JSONL を完全に表示", + "copy": "コピー", + "copied": "コピーされました" + } + }, + "settings": { + "title": "設定", + "subtitle": "ローカルアプリの状態と回復アクションを管理します。", + "nav_aria": "設定セクション", + "nav_general": "一般的な", + "nav_menu_bar": "メニューバー/システムトレイ", + "nav_maintenance": "メンテナンス", + "cache_title": "ローカルキャッシュ", + "cache_desc": "キャッシュされた使用状況、増分スキャン データ、価格データをクリアし、ローカル Codex ログから再構築します。", + "btn_resetting": "リセットする", + "btn_reset": "キャッシュをリセットする", + "display_title": "表示設定", + "display_desc": "ダッシュボードのユーザー インターフェイスをカスタマイズします。", + "show_logs_title": "「ログ」タブを表示", + "show_logs_desc": "リアルタイムのログ出力を表示するには、ナビゲーション ヘッダーの [ログ] タブを表示します。", + "toggle_logs_aria": "「ログ」タブの切り替え", + "system_title": "システム設定", + "system_desc": "CodexUsageDesktop がシステムとどのように統合されるかを管理します。", + "launch_at_login_title": "ログイン時に起動", + "launch_at_login_desc": "ログイン時にバックグラウンドで起動し、メニュー バーまたはシステム トレイからアプリを利用できるようにします。", + "toggle_launch_at_login_aria": "ログイン時の起動の切り替え", + "updates_title": "アプリのアップデート", + "updates_desc": "アップデートを確認し、デスクトップ アプリケーションのバージョンを管理します。", + "current_version": "現在のバージョン", + "btn_checking": "チェック中...", + "btn_check_updates": "アップデートをチェックする", + "update_available": "バージョン v{{version}} が利用可能です。", + "update_available_desc": "新しいリリースが GitHub で見つかりました。", + "btn_upgrade": "アップグレード", + "btn_download_update": "ダウンロードしてインストールする", + "btn_downloading_update": "ダウンロード中...", + "btn_downloading_update_progress": "{{percent}}% をダウンロード中", + "btn_restart_update": "更新するには再起動してください", + "btn_view_release": "リリースページを見る", + "up_to_date": "最新情報を入手してください!", + "up_to_date_desc": "v{{version}} は利用可能な最新バージョンです。", + "language_title": "言語設定", + "language_desc": "アプリケーションの表示言語を変更します。", + "language_label": "アプリの言語", + "lang_en": "英語", + "lang_zh": "简体中文", + "menu_bar_title": "メニューバー/システムトレイ設定", + "menu_bar_desc": "macOS メニュー バー タイトル、Windows トレイ ツールチップ、およびトレイ メニューのメトリクスを構成します。", + "menu_bar_show_title": "メニューバー/トレイツールチップに表示", + "menu_bar_show_menu": "ドロップダウンメニューに表示", + "menu_bar_opt_5h": "5時間制限", + "menu_bar_opt_weekly": "週間制限", + "menu_bar_opt_monthly": "月間利用制限", + "menu_bar_opt_tokens": "今日の合計トークン", + "menu_bar_opt_cost": "今日の費用", + "menu_bar_show_main": "メインウィンドウを表示", + "menu_bar_quit": "やめる", + "reset_confirm": "キャッシュされた使用状況と価格データをリセットして、ローカルの Codex ログから再構築しますか?ソースログは削除されません。", + "lang_ja": "日本語" + }, + "logs": { + "title": "リアルタイムシステムログ", + "subtitle": "バックグラウンド インデクサーとネイティブ スキャナーからの診断ログ フィード。", + "search_placeholder": "ログをフィルタリング...", + "btn_pause": "一時停止", + "btn_resume": "再開する", + "btn_clear": "クリア", + "waiting": "ログを待っています..." + }, + "trends": { + "title_tokens": "トークンの使用傾向", + "title_cost": "推定コストの傾向", + "tab_tokens": "トークン", + "tab_cost": "料金", + "title": "使用傾向", + "description": "選択した自然日ウィンドウ全体のトークンとコストの合計移動。", + "total_tokens": "総トークン数", + "total_token_trend": "総トークンの傾向", + "cost_trend": "コストの傾向" + }, + "export": { + "dialog_title_excel": "Codex の使用状況を Excel にエクスポート", + "dialog_title_markdown": "Codex の使用法を Markdown にエクスポートする", + "excel_filter_name": "Excelワークブック", + "markdown_filter_name": "マークダウン" + } +} diff --git a/src/locales/zh.json b/src/locales/zh.json index 71467bd..c68c772 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -588,6 +588,7 @@ "language_label": "应用语言", "lang_en": "English", "lang_zh": "简体中文", + "lang_ja": "日本語", "menu_bar_title": "菜单栏 / 系统托盘设置", "menu_bar_desc": "配置 macOS 菜单栏标题、Windows 托盘悬停提示和托盘菜单中显示的数据项。", "menu_bar_show_title": "显示在菜单栏 / 托盘悬停提示", From 280f3823b0f25e997a5fae5de9583780f0a53d6e Mon Sep 17 00:00:00 2001 From: yuu1111 Date: Fri, 21 Aug 2026 02:26:20 +0900 Subject: [PATCH 2/5] fix(i18n): refine Japanese translations and tab wrapping --- src/components/settings-page.tsx | 2 +- src/locales/ja.json | 160 +++++++++++++++---------------- 2 files changed, 81 insertions(+), 81 deletions(-) diff --git a/src/components/settings-page.tsx b/src/components/settings-page.tsx index dbfc568..c50beca 100644 --- a/src/components/settings-page.tsx +++ b/src/components/settings-page.tsx @@ -139,7 +139,7 @@ export function SettingsPage({ setActiveSection(section); document.getElementById(sectionId)?.scrollIntoView?.({ block: "start", behavior: "smooth" }); }} - className={`whitespace-nowrap rounded-md px-3 py-2 text-left text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 focus:ring-offset-background ${ + className={`min-w-0 whitespace-normal break-words rounded-md px-3 py-2 text-left text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 focus:ring-offset-background ${ selected ? "bg-indigo-600 text-white shadow-sm" : "text-muted-foreground hover:bg-muted hover:text-foreground" diff --git a/src/locales/ja.json b/src/locales/ja.json index 8754d5c..4ed48d6 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -2,32 +2,32 @@ "common": { "dashboard": "ダッシュボード", "model": "モデル", - "daily": "毎日", + "daily": "日別", "project": "プロジェクト", - "monthly": "毎月", + "monthly": "月別", "sessions": "セッション", "settings": "設定", "logs": "ログ", "loading": "読み込み中", "error": "エラー", - "close": "近い", + "close": "閉じる", "search": "検索", "clear": "クリア", - "actions": "アクション", + "actions": "操作", "date": "日付", "tokens": "トークン", "cost": "料金", "cache": "キャッシュ", "path": "パス", "mode": "モード", - "type": "タイプ", + "type": "種類", "session": "セッション", - "time": "時間", - "command": "指示", - "percent": "パーセント" + "time": "時刻", + "command": "コマンド", + "percent": "割合" }, "header": { - "app_title": "コーデックス使用デスクトップ", + "app_title": "Codex Usage Desktop", "upgrade": "v{{version}} をアップグレードします", "downloading_update": "ダウンロード中...", "downloading_update_progress": "{{percent}}% をダウンロード中", @@ -37,7 +37,7 @@ "update": { "new_version": "新しいアップデートが利用可能: v{{version}}", "latest_badge": "最新", - "banner_text": "CodexUsageDesktop の新しいバージョンが準備できました。現在、v{{currentVersion}} を使用しています。", + "banner_text": "Codex Usage Desktop の新しいバージョンが準備できました。現在 v{{currentVersion}} を使用しています。", "hide_release_notes": "リリースノートを非表示にする", "view_release_notes": "リリースノートを見る", "upgrade_now": "今すぐアップグレード", @@ -53,11 +53,11 @@ }, "loading": { "preparing_cache": "ローカルキャッシュの準備", - "loading_range": "{{range}} をロード中", - "loading_monthly": "毎月の使用量を読み込む", - "loading_sessions": "セッションの詳細をロードしています", - "cached_snapshot_desc": "キャッシュされたダッシュボードのスナップショットをロードしています。", - "selected_window_desc": "選択したウィンドウの使用状況とコストのデータをロードしています。", + "loading_range": "{{range}} を読み込み中", + "loading_monthly": "月別使用量を読み込み中", + "loading_sessions": "セッションの詳細を読み込み中", + "cached_snapshot_desc": "キャッシュ済みのダッシュボードスナップショットを読み込み中です。", + "selected_window_desc": "選択した期間の使用量とコストを読み込み中です。", "natural_month_desc": "自然月の合計を集計します。", "session_logs_desc": "個々のセッション ログを解析します。", "reading_sessions": "読書会", @@ -65,7 +65,7 @@ "estimating_cost": "コストの見積り" }, "hero": { - "title": "コーデックストークンの使用法", + "title": "Codex トークン使用量", "subtitle": "ローカル開発者トークンの追跡とコスト見積もり。", "last_updated": "最終更新日 {{time}}", "last_updated_never": "決して更新されない", @@ -129,20 +129,20 @@ "reset_credits_toggle": "リセットされたクレジット有効期限の詳細を表示または非表示にする", "reset_credits_available": "{{count}} が利用可能です", "reset_credit_number": "クレジット {{index}}", - "reset_credit_expires_at": "有効期限が切れます {{date}}", + "reset_credit_expires_at": "有効期限 {{date}}", "reset_credit_time_left": "{{timeLeft}}", "reset_credit_no_expiry": "有効期限はありません", "reset_credits_details_partial": "{{count}} 個以上のクレジットについて有効期限の詳細が返されませんでした", "reset_credits_details_unavailable": "有効期限の詳細は一時的に利用できません", "reset_credits_none": "利用可能なリセット クレジットはありません", - "left": "左", - "status_near_limit": "限界に近い", + "left": "残り", + "status_near_limit": "上限間近", "status_moderate": "適度", "status_healthy": "健康", "reset_unavailable": "リセット不可", - "resetting_soon": "すぐにリセットします", + "resetting_soon": "まもなくリセット", "reset_at": "{{time}} ({{timeLeft}}) でリセット", - "resets_at": "{{time}} ({{timeLeft}}) をリセットします", + "resets_at": "{{time}} にリセット ({{timeLeft}})", "mins_left_one": "残り 1 分", "mins_left_other": "残り {{count}} 分", "hours_left_one": "残り1時間", @@ -152,31 +152,31 @@ "window_min": "{{count}} 分", "window_hours": "{{count}} 時間", "window_days": "{{count}} 日", - "window_unknown": "未知", - "subscription_expires": "有効期限が切れます {{date}} ({{timeLeft}})", + "window_unknown": "不明", + "subscription_expires": "有効期限 {{date}} ({{timeLeft}})", "auto_renew_off": "自動更新オフ", "quota_forecast_likely": "{{score}}% · 48 時間以内にリセットされる可能性があります", - "quota_forecast_possible": "{{score}}% · 48 時間以内にリセット可能", - "quota_forecast_low": "{{score}}% · 48 時間以内に低確率", + "quota_forecast_possible": "{{score}}% · 48時間以内にリセットの可能性あり", + "quota_forecast_low": "{{score}}% · 48時間以内のリセット可能性は低い", "quota_forecast_likely_label": "48 時間以内にリセットされる可能性があります", - "quota_forecast_possible_label": "48時間以内にリセット可能", - "quota_forecast_low_label": "48時間以内に低確率", - "quota_forecast_open": "オープン Codex クォータのリセット予測" + "quota_forecast_possible_label": "48時間以内にリセットの可能性あり", + "quota_forecast_low_label": "48時間以内のリセット可能性は低い", + "quota_forecast_open": "Codex クォータのリセット予測を開く" }, "daily": { - "title": "毎日の使用量", - "subtitle": "フィールドごとに並べ替えて、毎日のトークンの構成、規模、コストを比較します。", + "title": "日別使用量", + "subtitle": "項目で並べ替えながら、日ごとのトークン構成、規模、コストを比較します。", "cols": { "date": "日付", "tokens": "総トークン数", "cost": "料金", "cache": "キャッシュヒット", - "actions": "アクション" + "actions": "操作" }, "action_view_sessions": "セッションを見る", "no_data": "選択した範囲の使用状況データが見つかりませんでした。", - "pagination_prev": "前の", - "pagination_next": "次", + "pagination_prev": "前へ", + "pagination_next": "次へ", "pagination_info": "{{total}} 日間の {{start}} から {{end}} を表示しています", "date_range": "{{start}} から {{end}}", "no_activity": "活動なし", @@ -190,7 +190,7 @@ "input_including_cache": "入力 (キャッシュを含む)", "cached_with_rate": "キャッシュ済み ({{rate}})", "output": "出力", - "peak": "最高", + "peak": "最大", "open_sessions": "{{date}} のセッションを表示", "token_bar_label": "トークン構成: {{input}} 非キャッシュ入力、{{cached}} キャッシュ入力、{{output}} 出力、{{total}} 合計", "total_bar_label": "{{total}} 合計トークン数。範囲ピークの {{percent}}", @@ -203,12 +203,12 @@ "cachedInputTokens": "キャッシュされたトークン", "outputTokens": "出力", "costUSD": "料金", - "asc": "上昇", + "asc": "昇順", "desc": "降順" } }, "monthly": { - "title": "毎月の使用量の詳細", + "title": "月別使用量の詳細", "subtitle": "{{tz}} タイムゾーンを使用した、{{start}} から {{end}} までの自然月の合計。", "cols": { "month": "月", @@ -216,9 +216,9 @@ "cost": "料金", "cache": "キャッシュヒット率" }, - "no_data": "毎月のデータはまだ蓄積されていません。", + "no_data": "月別データはまだありません。", "month_range": "{{start}} から {{end}}", - "no_usage": "使用禁止", + "no_usage": "使用なし", "no_usage_months": "使用なし ({{count}} か月)", "comparison_range": "{{start}} と {{end}} の比較", "token_legend_label": "トークンの色の凡例", @@ -229,13 +229,13 @@ "input_including_cache": "入力 (キャッシュを含む)", "cached_with_rate": "キャッシュ済み ({{rate}})", "output": "出力", - "peak": "最高", + "peak": "最大", "token_bar_label": "トークン構成: {{input}} 非キャッシュ入力、{{cached}} キャッシュ入力、{{output}} 出力、{{total}} 合計", "total_bar_label": "{{total}} 合計トークン数。範囲ピークの {{percent}}", "cost_bar_label": "コスト {{cost}};範囲ピークの {{percent}}", "delta": { - "comparison": "月々", - "new": "新しい", + "comparison": "前月比", + "new": "新規", "unavailable": "前月比の比較はできません" }, "sort": { @@ -246,12 +246,12 @@ "cachedInputTokens": "キャッシュされたトークン", "outputTokens": "出力", "costUSD": "料金", - "asc": "上昇", + "asc": "昇順", "desc": "降順" } }, "models": { - "title": "モデルの使用法の詳細", + "title": "モデル使用量の詳細", "subtitle": "モデルごとにトークンとコストの分布を分析します。", "views": { "label": "モデルページビュー", @@ -266,7 +266,7 @@ "model": "モデル", "unit": "USD / 100万トークン", "loading": "価格カタログを読み込んでいます...", - "error": "価格カタログのロードに失敗しました。", + "error": "価格カタログの読み込みに失敗しました。", "no_results": "フィルターに一致する価格エントリはありません。", "limited": "オフライン: 限定された組み込みの価格カタログを表示します。", "free": "無料", @@ -302,7 +302,7 @@ "subtitle": "トークン総数の上位 6 モデル。残りのモデルは「その他」としてグループ化されます。" }, "comparison": { - "title": "機種比較", + "title": "モデル比較", "subtitle": "使用構成、標準価格、実効価格、コストへの影響を比較します。すべての価格は 100 万トークンあたりの価格です。" }, "sort": { @@ -338,7 +338,7 @@ "projects": { "title": "プロジェクトの使用状況の詳細", "subtitle": "プロジェクト ディレクトリごとにトークンとコストの合計を分析します。", - "card_title": "プロジェクトの使用法", + "card_title": "プロジェクト使用量", "card_subtitle": "選択したウィンドウのプロジェクト ディレクトリごとにグループ化されたトークンとコストの合計。", "cols": { "project": "プロジェクトディレクトリ", @@ -346,7 +346,7 @@ "cost": "料金", "composition": "トークン構成", "percent": "全体の %", - "actions": "アクション" + "actions": "操作" }, "token_legend": "トークンとコストの凡例", "legend": { @@ -373,9 +373,9 @@ "cached": "キャッシュされた", "output": "出力" }, - "highest": "最高", + "highest": "最大", "relative_peak": "ピークの {{percent}}%", - "open_details": "{{project}} のオープンアナリティクス", + "open_details": "{{project}} の分析を開く", "bar_label": "{{total}} 合計トークン: {{cached}} キャッシュを含む {{input}} 入力、および {{output}} 出力", "action_view_sessions": "セッションを見る", "no_projects": "プロジェクト ディレクトリはまだログで追跡されていません。" @@ -402,7 +402,7 @@ "view_in_sessions_tab": "「セッション」タブで表示", "analytics_title": "使用状況分析", "analytics_loading": "プロジェクト分析を読み込み中...", - "analytics_error": "プロジェクト分析をロードできませんでした", + "analytics_error": "プロジェクト分析を読み込めませんでした", "no_analytics": "この範囲では使用できるプロジェクト分析はありません。", "total_tokens": "総トークン数", "input_total": "入力(キャッシュを含む)", @@ -410,9 +410,9 @@ "model_share": "モデルトークンシェア", "model_share_desc": "モデルごとの総トークンのシェア。最初の 6 つ以降のモデルは「その他」としてグループ化されます。", "no_model_data": "このプロジェクトにはモデル トークン データがありません。", - "daily_trend": "毎日のトークンとコストの傾向", + "daily_trend": "日別トークンとコストの推移", "daily_trend_desc": "独立した右軸にコストを伴うスタックされたトークン構成。", - "no_trend_data": "この範囲内での毎日の活動はありません。", + "no_trend_data": "この範囲に日別のアクティビティはありません。", "search_aria": "プロジェクト セッションを検索する" }, "ranges": { @@ -448,9 +448,9 @@ "filter_all_types": "全種類", "btn_clear_filters": "フィルターをクリアする", "cols": { - "time": "時間", + "time": "時刻", "project": "プロジェクト/ファイル", - "type": "タイプ", + "type": "種類", "cache": "キャッシュ", "mode": "モード", "tokens": "トークン", @@ -466,10 +466,10 @@ "day_total_tokens": "1日の合計トークン数", "day_cost": "1日あたりの費用", "projects_models": "プロジェクトとモデル", - "time_label": "時間: {{time}}", + "time_label": "時刻: {{time}}", "size_label": "サイズ: {{size}}", "no_workspace": "ワークスペースなし", - "recorded_time": "録音済み", + "recorded_time": "記録日時", "total_tokens": "総トークン数", "input_including_cache": "入力 (キャッシュを含む)", "cached": "キャッシュされた", @@ -483,8 +483,8 @@ "title": "観察されたクォータ使用量", "estimated": "推定", "five_hour": "5時間", - "weekly": "毎週", - "approx": "約", + "weekly": "週間", + "approx": "概算", "aria_label": "推定 5 時間および週ごとの割り当て使用量", "resets": "リセット: {{value}}", "caveat": "整数ログのスナップショットから推定されます。丸めやその他の同時 Codex セッションは、帰属に影響を与える可能性があります。各リセット ウィンドウは個別に表示されます。" @@ -502,7 +502,7 @@ "tokens_breakdown": "内訳 (入力 / 出力 / キャッシュ)", "estimated_cost": "推定コスト", "model": "モデル名", - "duration": "間隔", + "duration": "所要時間", "total_tokens": "総トークン数", "cost": "料金", "cache": "キャッシュ", @@ -518,7 +518,7 @@ "ended": "終了: {{value}}", "first_token": "最初のトークン: {{value}}", "cli": "CLI: {{value}}", - "turn": "{{id}} を回します", + "turn": "ターン {{id}}", "message_count_one": "{{count}} メッセージ", "message_count_other": "{{count}} メッセージ", "tool_count_one": "{{count}} ツール", @@ -534,16 +534,16 @@ "user": "ユーザー", "assistant": "アシスタント", "expand": "拡大する", - "collapse": "崩壊", + "collapse": "折りたたむ", "reasoning_summary": "推論の要約", "arguments": "引数", - "command": "指示", + "command": "コマンド", "patch_input": "パッチ", "edited_files_one": "{{count}} ファイルを編集しました", "edited_files_other": "{{count}} ファイルを編集しました", "working_directory": "作業ディレクトリ", "exit_code": "終了コード", - "wall_time": "ウォールタイム", + "wall_time": "経過時間", "process_session": "プロセスセッション", "tool_argument_labels": { "cell_id": "プロセスセッション", @@ -554,16 +554,16 @@ "max_output_tokens": "出力トークン制限" }, "output": "出力", - "activity_running": "ランニング", - "activity_ran": "ラン", + "activity_running": "実行中", + "activity_ran": "実行済み", "activity_stopped": "停止しました", "exit_success_tooltip": "プロセスが正常に終了しました", "exit_failure_tooltip": "プロセスがエラーで終了しました", "web_search": "ウェブ検索", "search_queries": "検索クエリ", "search_result": "検索結果 {{index}}", - "image_count_one": "{{count}} 出力イメージ", - "image_count_other": "{{count}} 出力イメージ", + "image_count_one": "出力画像 {{count}}枚", + "image_count_other": "出力画像 {{count}}枚", "output_image": "出力画像 {{index}}", "stderr": "標準エラー", "user_input_request": "ユーザー入力リクエスト", @@ -585,22 +585,22 @@ }, "settings": { "title": "設定", - "subtitle": "ローカルアプリの状態と回復アクションを管理します。", + "subtitle": "ローカルアプリの状態と復旧操作を管理します。", "nav_aria": "設定セクション", - "nav_general": "一般的な", + "nav_general": "一般", "nav_menu_bar": "メニューバー/システムトレイ", "nav_maintenance": "メンテナンス", "cache_title": "ローカルキャッシュ", "cache_desc": "キャッシュされた使用状況、増分スキャン データ、価格データをクリアし、ローカル Codex ログから再構築します。", - "btn_resetting": "リセットする", - "btn_reset": "キャッシュをリセットする", + "btn_resetting": "リセット中", + "btn_reset": "キャッシュをリセット", "display_title": "表示設定", "display_desc": "ダッシュボードのユーザー インターフェイスをカスタマイズします。", "show_logs_title": "「ログ」タブを表示", "show_logs_desc": "リアルタイムのログ出力を表示するには、ナビゲーション ヘッダーの [ログ] タブを表示します。", "toggle_logs_aria": "「ログ」タブの切り替え", "system_title": "システム設定", - "system_desc": "CodexUsageDesktop がシステムとどのように統合されるかを管理します。", + "system_desc": "Codex Usage Desktop とシステムの連携方法を管理します。", "launch_at_login_title": "ログイン時に起動", "launch_at_login_desc": "ログイン時にバックグラウンドで起動し、メニュー バーまたはシステム トレイからアプリを利用できるようにします。", "toggle_launch_at_login_aria": "ログイン時の起動の切り替え", @@ -608,7 +608,7 @@ "updates_desc": "アップデートを確認し、デスクトップ アプリケーションのバージョンを管理します。", "current_version": "現在のバージョン", "btn_checking": "チェック中...", - "btn_check_updates": "アップデートをチェックする", + "btn_check_updates": "アップデートを確認", "update_available": "バージョン v{{version}} が利用可能です。", "update_available_desc": "新しいリリースが GitHub で見つかりました。", "btn_upgrade": "アップグレード", @@ -617,7 +617,7 @@ "btn_downloading_update_progress": "{{percent}}% をダウンロード中", "btn_restart_update": "更新するには再起動してください", "btn_view_release": "リリースページを見る", - "up_to_date": "最新情報を入手してください!", + "up_to_date": "最新の状態です", "up_to_date_desc": "v{{version}} は利用可能な最新バージョンです。", "language_title": "言語設定", "language_desc": "アプリケーションの表示言語を変更します。", @@ -625,7 +625,7 @@ "lang_en": "英語", "lang_zh": "简体中文", "menu_bar_title": "メニューバー/システムトレイ設定", - "menu_bar_desc": "macOS メニュー バー タイトル、Windows トレイ ツールチップ、およびトレイ メニューのメトリクスを構成します。", + "menu_bar_desc": "macOSのメニューバー、Windowsのトレイツールチップ、トレイメニューに表示する項目を設定します。", "menu_bar_show_title": "メニューバー/トレイツールチップに表示", "menu_bar_show_menu": "ドロップダウンメニューに表示", "menu_bar_opt_5h": "5時間制限", @@ -634,14 +634,14 @@ "menu_bar_opt_tokens": "今日の合計トークン", "menu_bar_opt_cost": "今日の費用", "menu_bar_show_main": "メインウィンドウを表示", - "menu_bar_quit": "やめる", + "menu_bar_quit": "終了", "reset_confirm": "キャッシュされた使用状況と価格データをリセットして、ローカルの Codex ログから再構築しますか?ソースログは削除されません。", "lang_ja": "日本語" }, "logs": { "title": "リアルタイムシステムログ", "subtitle": "バックグラウンド インデクサーとネイティブ スキャナーからの診断ログ フィード。", - "search_placeholder": "ログをフィルタリング...", + "search_placeholder": "ログを絞り込み...", "btn_pause": "一時停止", "btn_resume": "再開する", "btn_clear": "クリア", @@ -653,15 +653,15 @@ "tab_tokens": "トークン", "tab_cost": "料金", "title": "使用傾向", - "description": "選択した自然日ウィンドウ全体のトークンとコストの合計移動。", + "description": "選択した日付範囲におけるトークン数とコストの推移。", "total_tokens": "総トークン数", "total_token_trend": "総トークンの傾向", "cost_trend": "コストの傾向" }, "export": { "dialog_title_excel": "Codex の使用状況を Excel にエクスポート", - "dialog_title_markdown": "Codex の使用法を Markdown にエクスポートする", - "excel_filter_name": "Excelワークブック", + "dialog_title_markdown": "Codex の使用量を Markdown にエクスポート", + "excel_filter_name": "Excel ブック", "markdown_filter_name": "マークダウン" } } From 09b2a368712be53606fe918149c385fb1d403844 Mon Sep 17 00:00:00 2001 From: yuu1111 Date: Fri, 21 Aug 2026 02:41:57 +0900 Subject: [PATCH 3/5] fix(i18n): polish Japanese UI translations --- src/locales/ja.json | 80 ++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/src/locales/ja.json b/src/locales/ja.json index 4ed48d6..c05d3a9 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -28,14 +28,14 @@ }, "header": { "app_title": "Codex Usage Desktop", - "upgrade": "v{{version}} をアップグレードします", + "upgrade": "v{{version}} に更新", "downloading_update": "ダウンロード中...", "downloading_update_progress": "{{percent}}% をダウンロード中", "restart_update": "更新するには再起動してください", "upgrade_title": "クリックしてアプリケーションをアップグレードします" }, "update": { - "new_version": "新しいアップデートが利用可能: v{{version}}", + "new_version": "新しいバージョンが利用可能: v{{version}}", "latest_badge": "最新", "banner_text": "Codex Usage Desktop の新しいバージョンが準備できました。現在 v{{currentVersion}} を使用しています。", "hide_release_notes": "リリースノートを非表示にする", @@ -43,7 +43,7 @@ "upgrade_now": "今すぐアップグレード", "downloading": "ダウンロード中...", "downloading_progress": "{{percent}}% をダウンロード中", - "restart_now": "再起動してアップデートする", + "restart_now": "再起動して更新", "view_release": "リリースを見る", "dismiss_aria": "更新通知を閉じる", "rate_limit_error": "GitHub API レート制限を超過したか、ネットワーク タイムアウトになりました。リリース ページで更新ログを確認し、最新バージョンをダウンロードしてください。" @@ -60,19 +60,19 @@ "selected_window_desc": "選択した期間の使用量とコストを読み込み中です。", "natural_month_desc": "自然月の合計を集計します。", "session_logs_desc": "個々のセッション ログを解析します。", - "reading_sessions": "読書会", + "reading_sessions": "セッションを読み込み中", "aggregating_tokens": "トークンの集約", - "estimating_cost": "コストの見積り" + "estimating_cost": "コストを推定中" }, "hero": { "title": "Codex トークン使用量", "subtitle": "ローカル開発者トークンの追跡とコスト見積もり。", "last_updated": "最終更新日 {{time}}", - "last_updated_never": "決して更新されない", + "last_updated_never": "未更新", "rescan_duration": "再スキャンは {{duration}} に完了しました", "refresh": "リフレッシュ", - "refreshing": "爽やかな...", - "export": "輸出", + "refreshing": "更新中...", + "export": "エクスポート", "exporting": "エクスポート中...", "export_excel": "エクセル(.xlsx)", "export_markdown": "マークダウン (.md)", @@ -103,11 +103,11 @@ }, "costPerMillion": { "label": "コスト/100万", - "detail": "100 万あたりの混合コスト" + "detail": "100万トークンあたりの加重平均コスト" } }, "limits": { - "title": "コーデックスの制限", + "title": "Codexの利用上限", "description": "ローカル Codex CLI からのライブ アカウント制限。", "updated": "{{time}} を更新しました", "not_fetched": "まだ取得されていません", @@ -115,18 +115,18 @@ "login_instruction": "ライブレート制限を表示するには、ターミナルでログインコマンドを実行するか、ブラウザ/IDE 拡張機能を介して Codex を認証してください。", "click_to_select": "クリックして選択してください", "login_hint": "ヒント: ターミナルで上記のコマンドを実行するか、ブラウザ/IDE 拡張機能を介して Codex アカウントにログインしてください。", - "unavailable_reason": "現在、コーデックスの制限を取得できません。ネットワークと Codex のログイン状態を確認して、再試行してください。", + "unavailable_reason": "現在Codexの利用上限を取得できません。ネットワークとCodexへのログイン状態を確認して、もう一度お試しください。", "window_5hour": "5時間制限", "window_weekly": "週間制限", "window_monthly": "月間利用制限", "unavailable": "利用不可", - "no_window_returned": "Codex から返されるレート制限ウィンドウはありません。", + "no_window_returned": "Codexからレート制限ウィンドウが返されませんでした。", "remaining": "残り", "consumed": "消費された", - "window": "ウィンドウ", - "reset_credits": "クレジットをリセットする", + "window": "期間", + "reset_credits": "リセットクレジット", "reset_credits_open": "ChatGPT でリセット クレジットを開く", - "reset_credits_toggle": "リセットされたクレジット有効期限の詳細を表示または非表示にする", + "reset_credits_toggle": "リセットクレジットの有効期限詳細を表示/非表示", "reset_credits_available": "{{count}} が利用可能です", "reset_credit_number": "クレジット {{index}}", "reset_credit_expires_at": "有効期限 {{date}}", @@ -137,8 +137,8 @@ "reset_credits_none": "利用可能なリセット クレジットはありません", "left": "残り", "status_near_limit": "上限間近", - "status_moderate": "適度", - "status_healthy": "健康", + "status_moderate": "中程度", + "status_healthy": "余裕あり", "reset_unavailable": "リセット不可", "resetting_soon": "まもなくリセット", "reset_at": "{{time}} ({{timeLeft}}) でリセット", @@ -179,7 +179,7 @@ "pagination_next": "次へ", "pagination_info": "{{total}} 日間の {{start}} から {{end}} を表示しています", "date_range": "{{start}} から {{end}}", - "no_activity": "活動なし", + "no_activity": "アクティビティなし", "no_activity_days": "アクティビティはありません ({{count}} 日)", "comparison_range": "{{range}} を比較しています", "token_legend_label": "トークンの色の凡例", @@ -276,8 +276,8 @@ "next": "次のページ" }, "no_data": "このウィンドウにはモデル アクティビティがありません。", - "other": "他の", - "pricing_unavailable": "価格設定がありません", + "other": "その他", + "pricing_unavailable": "価格情報なし", "of_usage": "使用量の", "of_cost": "コストの", "summary": { @@ -285,7 +285,7 @@ "total_tokens": "総トークン数", "estimated_cost": "推定コスト", "cache_hit": "キャッシュヒット率", - "effective_price": "全体の実効価格 / 100 万" + "effective_price": "全体の実効価格 / 100万トークン" }, "composition": { "title": "トークン構成", @@ -321,14 +321,14 @@ "input": "入力", "cached": "キャッシュされた", "output": "出力", - "effective": "効果的", - "input_tooltip": "100 万個の非キャッシュ入力トークンの標準価格", - "cached_tooltip": "100 万個のキャッシュされた入力トークンの標準価格", + "effective": "実効", + "input_tooltip": "100万非キャッシュ入力トークンあたりの標準価格", + "cached_tooltip": "100万キャッシュ入力トークンあたりの標準価格", "output_tooltip": "100万出力トークンの標準価格", "effective_tooltip": "この使用量構成の推定コストをトークン合計で割った値" }, "price_legend": { - "label": "相対価格熱の伝説", + "label": "相対価格の凡例", "low": "低価格", "medium": "中価格帯", "high": "高価格", @@ -337,9 +337,9 @@ }, "projects": { "title": "プロジェクトの使用状況の詳細", - "subtitle": "プロジェクト ディレクトリごとにトークンとコストの合計を分析します。", + "subtitle": "プロジェクトディレクトリ別にトークンとコストの合計を分析します。", "card_title": "プロジェクト使用量", - "card_subtitle": "選択したウィンドウのプロジェクト ディレクトリごとにグループ化されたトークンとコストの合計。", + "card_subtitle": "選択した期間のプロジェクトディレクトリ別のトークン数とコストの合計。", "cols": { "project": "プロジェクトディレクトリ", "tokens": "総トークン数", @@ -378,7 +378,7 @@ "open_details": "{{project}} の分析を開く", "bar_label": "{{total}} 合計トークン: {{cached}} キャッシュを含む {{input}} 入力、および {{output}} 出力", "action_view_sessions": "セッションを見る", - "no_projects": "プロジェクト ディレクトリはまだログで追跡されていません。" + "no_projects": "ログに記録されたプロジェクトディレクトリはまだありません。" }, "project_modal": { "title": "{{projectName}} のセッション", @@ -392,8 +392,8 @@ "no_sessions": "このプロジェクトのセッションが見つかりませんでした。", "project_details": "プロジェクトの詳細", "active_files": "アクティブなファイル", - "showing_filtered": "{{filtered}} 一致するセッションを表示しています", - "subtitle_desc": "このディレクトリに書き込む個々のセッション", + "showing_filtered": "一致する{{filtered}}件のセッションを表示中", + "subtitle_desc": "このディレクトリに記録された個々のセッション", "search_placeholder": "タイトル、セッション ID、またはモデルを検索します...", "no_matching_sessions": "検索クエリに一致するセッションはありません", "clear_search_hint": "検索クエリをクリアするか、別の用語を検索してみてください。", @@ -438,7 +438,7 @@ "err_end_before_start": "終了日を開始日より前にすることはできません。", "btn_clear": "クリア", "btn_cancel": "キャンセル", - "btn_apply": "適用範囲" + "btn_apply": "期間を適用" }, "sessions": { "title": "セッションの詳細", @@ -459,7 +459,7 @@ "no_data": "現在の検索フィルターに一致するセッション ログはありません。", "showing_info": "{{count}} セッションを表示しています", "showing_info_filtered": "{{total}} セッション中 {{filtered}} を表示しています", - "no_sessions_desc": "Codex CLI セッション ログが見つからないか、使用状況イベントが含まれていません。 「ローカルログを再スキャン」をクリックして再度確認します。", + "no_sessions_desc": "Codex CLIのセッションログが見つからないか、使用イベントが含まれていません。「ローカルログを再スキャン」をクリックして再確認してください。", "filtering_by_project": "プロジェクトによるフィルタリング", "count_sessions_one": "1セッション", "count_sessions_other": "{{count}} セッション", @@ -476,8 +476,8 @@ "output": "出力", "token_bar_label": "トークンの内訳: {{input}} 非キャッシュ入力、{{cached}} キャッシュ入力、{{output}} 出力、{{total}} 合計", "token_bar_empty": "トークンアクティビティはありません", - "token_total_label": "合計トークン数 {{total}};最も高い可視セッションの {{percent}}", - "cost_pill_label": "コスト {{cost}};最も高い可視セッションの {{percent}}", + "token_total_label": "合計トークン数 {{total}}。表示中セッションの最大値に対して{{percent}}", + "cost_pill_label": "コスト {{cost}}。表示中セッションの最大値に対して{{percent}}", "open_session": "セッションを開く {{title}}", "quota": { "title": "観察されたクォータ使用量", @@ -487,7 +487,7 @@ "approx": "概算", "aria_label": "推定 5 時間および週ごとの割り当て使用量", "resets": "リセット: {{value}}", - "caveat": "整数ログのスナップショットから推定されます。丸めやその他の同時 Codex セッションは、帰属に影響を与える可能性があります。各リセット ウィンドウは個別に表示されます。" + "caveat": "整数ログのスナップショットから推定しています。丸めや同時実行中の他のCodexセッションにより、計上結果が変わる場合があります。リセット期間ごとに個別表示します。" }, "detail": { "modal_title": "セッションの詳細", @@ -497,7 +497,7 @@ "trigger": "トリガー/コマンド", "file_path": "ファイルパス", "mode": "呼び出しモード", - "type": "リクエストタイプ", + "type": "リクエスト種別", "tokens": "トークン", "tokens_breakdown": "内訳 (入力 / 出力 / キャッシュ)", "estimated_cost": "推定コスト", @@ -533,7 +533,7 @@ "developer": "開発者", "user": "ユーザー", "assistant": "アシスタント", - "expand": "拡大する", + "expand": "展開", "collapse": "折りたたむ", "reasoning_summary": "推論の要約", "arguments": "引数", @@ -565,10 +565,10 @@ "image_count_one": "出力画像 {{count}}枚", "image_count_other": "出力画像 {{count}}枚", "output_image": "出力画像 {{index}}", - "stderr": "標準エラー", + "stderr": "標準エラー出力", "user_input_request": "ユーザー入力リクエスト", "custom_answer": "カスタム回答", - "patch_failed": "パッチが失敗しました", + "patch_failed": "パッチの適用に失敗しました", "patch_result": "パッチ結果", "patch_output": "パッチ出力", "token_events": "トークンイベント", @@ -588,7 +588,7 @@ "subtitle": "ローカルアプリの状態と復旧操作を管理します。", "nav_aria": "設定セクション", "nav_general": "一般", - "nav_menu_bar": "メニューバー/システムトレイ", + "nav_menu_bar": "メニューバー / トレイ", "nav_maintenance": "メンテナンス", "cache_title": "ローカルキャッシュ", "cache_desc": "キャッシュされた使用状況、増分スキャン データ、価格データをクリアし、ローカル Codex ログから再構築します。", From 48f91fd0811813f56e3839095d54f4742a57b9eb Mon Sep 17 00:00:00 2001 From: yuu1111 Date: Fri, 21 Aug 2026 02:50:29 +0900 Subject: [PATCH 4/5] fix(i18n): refine localization copy and usage labels --- src/locales/en.json | 1 + src/locales/ja.json | 37 +++++++++++++++++++------------------ src/locales/zh.json | 4 +++- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/locales/en.json b/src/locales/en.json index 03c7710..bcd86dd 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -68,6 +68,7 @@ "title": "Codex Token Usage", "subtitle": "Local developer token tracking and cost estimator.", "last_updated": "Last updated {{time}}", + "updated_today": "Today at {{time}}", "last_updated_never": "Never updated", "rescan_duration": "Rescan completed in {{duration}}", "refresh": "Refresh", diff --git a/src/locales/ja.json b/src/locales/ja.json index c05d3a9..b9ebb5e 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -68,8 +68,9 @@ "title": "Codex トークン使用量", "subtitle": "ローカル開発者トークンの追跡とコスト見積もり。", "last_updated": "最終更新日 {{time}}", + "updated_today": "本日 {{time}}", "last_updated_never": "未更新", - "rescan_duration": "再スキャンは {{duration}} に完了しました", + "rescan_duration": "再スキャン所要時間: {{duration}}", "refresh": "リフレッシュ", "refreshing": "更新中...", "export": "エクスポート", @@ -83,7 +84,7 @@ "total_cost_label": "総コスト", "cost_drivers": "コスト要因", "sync_logs_to_cache_desc": "ローカルログをキャッシュに同期する", - "synced_message": "{{days}} 日の同期 ({{reused}} キャッシュ、{{parsed}} 解析)", + "synced_message": "{{days}}日分を同期(キャッシュ再利用{{reused}}件、解析{{parsed}}件)", "resetting_message": "ローカル キャッシュをリセットし、使用状況データを再構築します。", "reset_rebuilt_message": "ローカル キャッシュをリセットし、ローカル Codex ログから使用状況データを再構築します。", "exported_message": "{{range}} を {{path}} にエクスポートしました。" @@ -108,8 +109,8 @@ }, "limits": { "title": "Codexの利用上限", - "description": "ローカル Codex CLI からのライブ アカウント制限。", - "updated": "{{time}} を更新しました", + "description": "ローカルCodex CLIから取得したアカウントのリアルタイム利用上限。", + "updated": "最終更新: {{time}}", "not_fetched": "まだ取得されていません", "not_logged_in": "ログインしていません", "login_instruction": "ライブレート制限を表示するには、ターミナルでログインコマンドを実行するか、ブラウザ/IDE 拡張機能を介して Codex を認証してください。", @@ -122,12 +123,12 @@ "unavailable": "利用不可", "no_window_returned": "Codexからレート制限ウィンドウが返されませんでした。", "remaining": "残り", - "consumed": "消費された", + "consumed": "使用済み", "window": "期間", "reset_credits": "リセットクレジット", "reset_credits_open": "ChatGPT でリセット クレジットを開く", "reset_credits_toggle": "リセットクレジットの有効期限詳細を表示/非表示", - "reset_credits_available": "{{count}} が利用可能です", + "reset_credits_available": "{{count}}件利用可能", "reset_credit_number": "クレジット {{index}}", "reset_credit_expires_at": "有効期限 {{date}}", "reset_credit_time_left": "{{timeLeft}}", @@ -193,8 +194,8 @@ "peak": "最大", "open_sessions": "{{date}} のセッションを表示", "token_bar_label": "トークン構成: {{input}} 非キャッシュ入力、{{cached}} キャッシュ入力、{{output}} 出力、{{total}} 合計", - "total_bar_label": "{{total}} 合計トークン数。範囲ピークの {{percent}}", - "cost_bar_label": "コスト {{cost}};範囲ピークの {{percent}}", + "total_bar_label": "合計{{total}}トークン。範囲の最大値に対して{{percent}}。", + "cost_bar_label": "コスト{{cost}}。範囲の最大値に対して{{percent}}。", "sort": { "label": "並べ替え", "date": "日付", @@ -209,7 +210,7 @@ }, "monthly": { "title": "月別使用量の詳細", - "subtitle": "{{tz}} タイムゾーンを使用した、{{start}} から {{end}} までの自然月の合計。", + "subtitle": "タイムゾーン{{tz}}での自然月の合計({{start}}〜{{end}})。", "cols": { "month": "月", "tokens": "トークン構成", @@ -259,7 +260,7 @@ "catalog": "価格カタログ" }, "catalog": { - "subtitle": "LiteLLM 価格カタログからチャット モデル トークンの価格を比較します。", + "subtitle": "LiteLLMの価格カタログから、チャットモデルのトークン単価を比較します。", "search": "モデルまたはプロバイダーを検索...", "provider": "プロバイダー", "all_providers": "すべてのプロバイダー", @@ -275,11 +276,11 @@ "previous": "前のページへ", "next": "次のページ" }, - "no_data": "このウィンドウにはモデル アクティビティがありません。", + "no_data": "この期間にモデルの利用はありません。", "other": "その他", "pricing_unavailable": "価格情報なし", - "of_usage": "使用量の", - "of_cost": "コストの", + "of_usage": "(使用量に占める割合)", + "of_cost": "(コストに占める割合)", "summary": { "active_models": "アクティブモデル", "total_tokens": "総トークン数", @@ -319,7 +320,7 @@ }, "prices": { "input": "入力", - "cached": "キャッシュされた", + "cached": "キャッシュ入力", "output": "出力", "effective": "実効", "input_tooltip": "100万非キャッシュ入力トークンあたりの標準価格", @@ -345,7 +346,7 @@ "tokens": "総トークン数", "cost": "料金", "composition": "トークン構成", - "percent": "全体の %", + "percent": "全体に占める割合", "actions": "操作" }, "token_legend": "トークンとコストの凡例", @@ -376,7 +377,7 @@ "highest": "最大", "relative_peak": "ピークの {{percent}}%", "open_details": "{{project}} の分析を開く", - "bar_label": "{{total}} 合計トークン: {{cached}} キャッシュを含む {{input}} 入力、および {{output}} 出力", + "bar_label": "合計{{total}}トークン: 入力{{input}}(うちキャッシュ{{cached}})、出力{{output}}", "action_view_sessions": "セッションを見る", "no_projects": "ログに記録されたプロジェクトディレクトリはまだありません。" }, @@ -458,7 +459,7 @@ }, "no_data": "現在の検索フィルターに一致するセッション ログはありません。", "showing_info": "{{count}} セッションを表示しています", - "showing_info_filtered": "{{total}} セッション中 {{filtered}} を表示しています", + "showing_info_filtered": "{{total}}件中{{filtered}}件のセッションを表示中", "no_sessions_desc": "Codex CLIのセッションログが見つからないか、使用イベントが含まれていません。「ローカルログを再スキャン」をクリックして再確認してください。", "filtering_by_project": "プロジェクトによるフィルタリング", "count_sessions_one": "1セッション", @@ -615,7 +616,7 @@ "btn_download_update": "ダウンロードしてインストールする", "btn_downloading_update": "ダウンロード中...", "btn_downloading_update_progress": "{{percent}}% をダウンロード中", - "btn_restart_update": "更新するには再起動してください", + "btn_restart_update": "再起動して更新", "btn_view_release": "リリースページを見る", "up_to_date": "最新の状態です", "up_to_date_desc": "v{{version}} は利用可能な最新バージョンです。", diff --git a/src/locales/zh.json b/src/locales/zh.json index c68c772..99f5d57 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -68,6 +68,7 @@ "title": "Codex Token 使用概览", "subtitle": "本地开发 Token 追踪与花费估算工具。", "last_updated": "最后更新于 {{time}}", + "updated_today": "今天 {{time}}", "last_updated_never": "未曾更新", "rescan_duration": "重扫耗时 {{duration}}", "refresh": "刷新数据", @@ -503,7 +504,8 @@ "arguments": "参数", "command": "命令", "patch_input": "补丁", - "edited_files": "编辑了 {{count}} 个文件", + "edited_files_one": "编辑了 {{count}} 个文件", + "edited_files_other": "编辑了 {{count}} 个文件", "working_directory": "工作目录", "exit_code": "退出码", "wall_time": "执行耗时", From e9899f3915fe7491771d5fdf665dce3b599071ec Mon Sep 17 00:00:00 2001 From: yuu1111 Date: Sat, 22 Aug 2026 17:17:04 +0900 Subject: [PATCH 5/5] fix(i18n): add missing Japanese quota labels --- src/locales/ja.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/locales/ja.json b/src/locales/ja.json index b9ebb5e..fed6885 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -486,7 +486,10 @@ "five_hour": "5時間", "weekly": "週間", "approx": "概算", + "usage_and_remaining": "{{usage}} · 残り {{remaining}}", + "used_and_remaining_change": "使用 {{usage}} • 残り {{remaining}}", "aria_label": "推定 5 時間および週ごとの割り当て使用量", + "usage_label": "{{window}}の使用量 {{usage}}、残り {{remaining}}", "resets": "リセット: {{value}}", "caveat": "整数ログのスナップショットから推定しています。丸めや同時実行中の他のCodexセッションにより、計上結果が変わる場合があります。リセット期間ごとに個別表示します。" },