Skip to content
12 changes: 12 additions & 0 deletions app/renderer/i18n/catalogs/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ export const common: SectionCatalog = {
'common.subject.optimize': 'optimize findings',
'common.asOf': 'as of {time}',
'common.asOfDate': 'as of {date}, {time}',
'common.count.run.one': '{count} run',
'common.count.run.other': '{count} runs',
},
fr: {
'common.period.today': "Aujourd'hui",
Expand Down Expand Up @@ -99,6 +101,8 @@ export const common: SectionCatalog = {
'common.subject.optimize': 'les résultats d\'optimisation',
'common.asOf': 'relevé à {time}',
'common.asOfDate': 'relevé le {date} à {time}',
'common.count.run.one': '{count} exécution',
'common.count.run.other': '{count} exécutions',
},
ja: {
'common.period.today': '今日',
Expand Down Expand Up @@ -147,6 +151,8 @@ export const common: SectionCatalog = {
'common.subject.optimize': '最適化の分析結果',
'common.asOf': '{time} 時点',
'common.asOfDate': '{date} {time} 時点',
'common.count.run.one': '{count} 件の実行',
'common.count.run.other': '{count} 件の実行',
},
ko: {
'common.period.today': '오늘',
Expand Down Expand Up @@ -195,6 +201,8 @@ export const common: SectionCatalog = {
'common.subject.optimize': '최적화 결과',
'common.asOf': '{time} 기준',
'common.asOfDate': '{date} {time} 기준',
'common.count.run.one': '실행 {count}건',
'common.count.run.other': '실행 {count}건',
},
zhCN: {
'common.period.today': '今天',
Expand Down Expand Up @@ -243,6 +251,8 @@ export const common: SectionCatalog = {
'common.subject.optimize': '优化发现',
'common.asOf': '截至 {time}',
'common.asOfDate': '截至 {date} {time}',
'common.count.run.one': '{count} 次运行',
'common.count.run.other': '{count} 次运行',
},
zhTW: {
'common.period.today': '今天',
Expand Down Expand Up @@ -291,5 +301,7 @@ export const common: SectionCatalog = {
'common.subject.optimize': '最佳化發現',
'common.asOf': '截至 {time}',
'common.asOfDate': '截至 {date} {time}',
'common.count.run.one': '{count} 次執行',
'common.count.run.other': '{count} 次執行',
},
}
102 changes: 102 additions & 0 deletions app/renderer/i18n/catalogs/pullRequests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,23 @@ export const pullRequests: SectionCatalog = {
'pullRequests.card.noPerTurnDetail': 'No per-turn detail (estimated from a whole-session split).',
'pullRequests.empty.body': 'No sessions in {period} mentioned a pull request URL. Spend is attributed only when a transcript contains a github.com/…/pull/N link.',
'pullRequests.empty.widerHint': ' Lifetime has {count} pull requests. Switch the period control to Life.',
'pullRequests.facts.reviewedBy': 'Reviewed by {model} run ({amount})',
'pullRequests.facts.reviewedByYou': 'Reviewed by you ({amount})',
'pullRequests.facts.reviewRuns.one': '{count} review run ({amount})',
'pullRequests.facts.reviewRuns.other': '{count} review runs ({amount})',
'pullRequests.facts.oneShot': 'One shot',
'pullRequests.facts.rounds.one': '{count} follow-up round',
'pullRequests.facts.rounds.other': '{count} follow-up rounds',
'pullRequests.facts.yourFollowUps': 'Your follow-ups: {count}',
'pullRequests.facts.merged': 'Merged {duration} after open',
'pullRequests.facts.prLinkOnly': 'Linked by pr-link only',
'pullRequests.facts.prLinkOnlyTitle': 'Only Claude Code pr-link entries tie this spend to the PR. No command or prompt named it.',
'pullRequests.split.title': 'By phase',
'pullRequests.split.aria': '{label} spend by phase',
'pullRequests.split.build': 'Building',
'pullRequests.split.review': 'Review runs',
'pullRequests.split.after': 'After first review',
'pullRequests.reviews.you': 'Your review ({verdict})',
},
fr: {
'pullRequests.loading': 'Analyse des pull requests…',
Expand Down Expand Up @@ -66,6 +83,23 @@ export const pullRequests: SectionCatalog = {
'pullRequests.card.noPerTurnDetail': "Aucun détail par tour (estimé à partir d'une répartition de session entière).",
'pullRequests.empty.body': "Aucune session dans {period} ne mentionne d'URL de pull request. Les dépenses ne sont attribuées que si une transcription contient un lien github.com/…/pull/N.",
'pullRequests.empty.widerHint': ' Depuis le début compte {count} pull requests. Basculez le sélecteur de période sur Depuis le début.',
'pullRequests.facts.reviewedBy': 'Revue par une exécution {model} ({amount})',
'pullRequests.facts.reviewedByYou': 'Revue par vous ({amount})',
'pullRequests.facts.reviewRuns.one': '{count} exécution de revue ({amount})',
'pullRequests.facts.reviewRuns.other': '{count} exécutions de revue ({amount})',
'pullRequests.facts.oneShot': 'Du premier coup',
'pullRequests.facts.rounds.one': '{count} tour de suivi',
'pullRequests.facts.rounds.other': '{count} tours de suivi',
'pullRequests.facts.yourFollowUps': 'Vos suivis : {count}',
'pullRequests.facts.merged': 'Fusionnée {duration} après ouverture',
'pullRequests.facts.prLinkOnly': 'Liée uniquement par pr-link',
'pullRequests.facts.prLinkOnlyTitle': 'Seules les entrées pr-link de Claude Code rattachent cette dépense à la PR. Aucune commande ni aucun prompt ne la nomme.',
'pullRequests.split.title': 'Par phase',
'pullRequests.split.aria': 'Dépense de {label} par phase',
'pullRequests.split.build': 'Construction',
'pullRequests.split.review': 'Exécutions de revue',
'pullRequests.split.after': 'Après la première revue',
'pullRequests.reviews.you': 'Votre revue ({verdict})',
},
ja: {
'pullRequests.loading': 'プルリクエストを確認中…',
Expand Down Expand Up @@ -99,6 +133,23 @@ export const pullRequests: SectionCatalog = {
'pullRequests.card.noPerTurnDetail': 'ターンごとの詳細なし(セッション全体からの均等割り推定)。',
'pullRequests.empty.body': '{period}のセッションでプルリクエストのURLが言及されていません。支出は、トランスクリプトにgithub.com/…/pull/N形式のリンクが含まれる場合のみ割り当てられます。',
'pullRequests.empty.widerHint': ' 全期間には{count}件のプルリクエストがあります。期間コントロールを「全期間」に切り替えてください。',
'pullRequests.facts.reviewedBy': '{model} の実行がレビュー({amount})',
'pullRequests.facts.reviewedByYou': 'あなたがレビュー({amount})',
'pullRequests.facts.reviewRuns.one': 'レビュー実行 {count} 件({amount})',
'pullRequests.facts.reviewRuns.other': 'レビュー実行 {count} 件({amount})',
'pullRequests.facts.oneShot': '一発で完了',
'pullRequests.facts.rounds.one': 'フォローアップ {count} 回',
'pullRequests.facts.rounds.other': 'フォローアップ {count} 回',
'pullRequests.facts.yourFollowUps': 'あなたのフォローアップ: {count}',
'pullRequests.facts.merged': 'オープンから {duration} 後にマージ',
'pullRequests.facts.prLinkOnly': 'pr-link のみで関連付け',
'pullRequests.facts.prLinkOnlyTitle': 'この支出を PR に結び付けているのは Claude Code の pr-link エントリだけです。PR を指したコマンドやプロンプトはありません。',
'pullRequests.split.title': 'フェーズ別',
'pullRequests.split.aria': '{label} のフェーズ別支出',
'pullRequests.split.build': '作成',
'pullRequests.split.review': 'レビュー実行',
'pullRequests.split.after': '最初のレビュー以降',
'pullRequests.reviews.you': 'あなたのレビュー({verdict})',
},
ko: {
'pullRequests.loading': '풀 리퀘스트 확인 중…',
Expand Down Expand Up @@ -132,6 +183,23 @@ export const pullRequests: SectionCatalog = {
'pullRequests.card.noPerTurnDetail': '턴 단위 세부 정보 없음(전체 세션 균등 분할로 추정).',
'pullRequests.empty.body': '{period}의 세션 중 풀 리퀘스트 URL을 언급한 세션이 없습니다. 지출은 트랜스크립트에 github.com/…/pull/N 형식의 링크가 있을 때만 귀속됩니다.',
'pullRequests.empty.widerHint': ' 전체 기간에는 풀 리퀘스트 {count}건이 있습니다. 기간 컨트롤을 전체 기간으로 전환하세요.',
'pullRequests.facts.reviewedBy': '{model} 실행이 리뷰함 ({amount})',
'pullRequests.facts.reviewedByYou': '직접 리뷰함 ({amount})',
'pullRequests.facts.reviewRuns.one': '리뷰 실행 {count}건 ({amount})',
'pullRequests.facts.reviewRuns.other': '리뷰 실행 {count}건 ({amount})',
'pullRequests.facts.oneShot': '한 번에 완료',
'pullRequests.facts.rounds.one': '후속 라운드 {count}회',
'pullRequests.facts.rounds.other': '후속 라운드 {count}회',
'pullRequests.facts.yourFollowUps': '내 후속 작업: {count}',
'pullRequests.facts.merged': '연 지 {duration} 후 병합',
'pullRequests.facts.prLinkOnly': 'pr-link로만 연결됨',
'pullRequests.facts.prLinkOnlyTitle': '이 지출을 PR에 연결하는 것은 Claude Code의 pr-link 항목뿐입니다. PR을 지정한 명령이나 프롬프트는 없습니다.',
'pullRequests.split.title': '단계별',
'pullRequests.split.aria': '{label} 단계별 지출',
'pullRequests.split.build': '구현',
'pullRequests.split.review': '리뷰 실행',
'pullRequests.split.after': '첫 리뷰 이후',
'pullRequests.reviews.you': '내 리뷰 ({verdict})',
},
zhCN: {
'pullRequests.loading': '正在扫描拉取请求…',
Expand Down Expand Up @@ -165,6 +233,23 @@ export const pullRequests: SectionCatalog = {
'pullRequests.card.noPerTurnDetail': '无逐回合明细(按整个会话平均分摊估算)。',
'pullRequests.empty.body': '{period}内没有会话提及拉取请求 URL。仅当转录记录中包含 github.com/…/pull/N 格式的链接时,支出才会被归属。',
'pullRequests.empty.widerHint': ' 全部时间共有 {count} 个拉取请求。请将期间控件切换到全部时间。',
'pullRequests.facts.reviewedBy': '由 {model} 运行审查({amount})',
'pullRequests.facts.reviewedByYou': '由你审查({amount})',
'pullRequests.facts.reviewRuns.one': '{count} 次审查运行({amount})',
'pullRequests.facts.reviewRuns.other': '{count} 次审查运行({amount})',
'pullRequests.facts.oneShot': '一次完成',
'pullRequests.facts.rounds.one': '{count} 轮后续修改',
'pullRequests.facts.rounds.other': '{count} 轮后续修改',
'pullRequests.facts.yourFollowUps': '你的后续修改:{count}',
'pullRequests.facts.merged': '创建后 {duration} 合并',
'pullRequests.facts.prLinkOnly': '仅由 pr-link 关联',
'pullRequests.facts.prLinkOnlyTitle': '只有 Claude Code 的 pr-link 记录把这笔支出关联到该 PR,没有命令或提示提到它。',
'pullRequests.split.title': '按阶段',
'pullRequests.split.aria': '{label} 按阶段的支出',
'pullRequests.split.build': '开发',
'pullRequests.split.review': '审查运行',
'pullRequests.split.after': '首次审查之后',
'pullRequests.reviews.you': '你的审查({verdict})',
},
zhTW: {
'pullRequests.loading': '正在掃描拉取請求…',
Expand Down Expand Up @@ -198,5 +283,22 @@ export const pullRequests: SectionCatalog = {
'pullRequests.card.noPerTurnDetail': '無逐回合明細(以整個工作階段平均分攤估算)。',
'pullRequests.empty.body': '{period}內沒有工作階段提及拉取請求 URL。僅當轉錄記錄中包含 github.com/…/pull/N 格式的連結時,支出才會被歸屬。',
'pullRequests.empty.widerHint': ' 全部時間共有 {count} 個拉取請求。請將期間控制項切換到全部時間。',
'pullRequests.facts.reviewedBy': '由 {model} 執行審查({amount})',
'pullRequests.facts.reviewedByYou': '由你審查({amount})',
'pullRequests.facts.reviewRuns.one': '{count} 次審查執行({amount})',
'pullRequests.facts.reviewRuns.other': '{count} 次審查執行({amount})',
'pullRequests.facts.oneShot': '一次完成',
'pullRequests.facts.rounds.one': '{count} 輪後續修改',
'pullRequests.facts.rounds.other': '{count} 輪後續修改',
'pullRequests.facts.yourFollowUps': '你的後續修改:{count}',
'pullRequests.facts.merged': '建立後 {duration} 合併',
'pullRequests.facts.prLinkOnly': '僅由 pr-link 關聯',
'pullRequests.facts.prLinkOnlyTitle': '只有 Claude Code 的 pr-link 紀錄將這筆支出關聯到此 PR,沒有指令或提示提到它。',
'pullRequests.split.title': '依階段',
'pullRequests.split.aria': '{label} 依階段的支出',
'pullRequests.split.build': '開發',
'pullRequests.split.review': '審查執行',
'pullRequests.split.after': '首次審查之後',
'pullRequests.reviews.you': '你的審查({verdict})',
},
}
36 changes: 36 additions & 0 deletions app/renderer/i18n/catalogs/sessionView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,12 @@ export const sessionView: SectionCatalog = {
'sessions.why.step.helperFacts.other': '{type} · {models} · {calls} calls · {amount}',
'sessions.why.f.prefix.line.one': 'Writing the {uncached} uncached part to the cache cost {write} (measured). {readCalls} of the {laterCalls} later call read at least {tokens} cached tokens; re-reading that much on it is about {read}.',
'sessions.why.f.prefix.line.other': 'Writing the {uncached} uncached part to the cache cost {write} (measured). {readCalls} of the {laterCalls} later calls read at least {tokens} cached tokens; re-reading that much on each of them is about {read}.',
'sessions.why.pr.title': 'PR work',
'sessions.why.pr.reviewTotal': 'review runs {amount}',
'sessions.why.pr.opened': 'Opened {pr}',
'sessions.why.pr.noFollowUps': 'No pushes after it was opened',
'sessions.why.pr.followUps': 'Follow-up rounds: {rounds}, pushes: {pushes}',
'sessions.why.pr.reviewRun': 'Review run',
},
fr: {
'sessions.why.back': 'Sessions',
Expand Down Expand Up @@ -313,6 +319,12 @@ export const sessionView: SectionCatalog = {
'sessions.why.step.helperFacts.other': '{type} · {models} · {calls} appels · {amount}',
'sessions.why.f.prefix.line.one': 'Écrire la partie hors cache de {uncached} a coûté {write} (mesuré). {readCalls} sur {laterCalls} appel suivant a lu au moins {tokens} jetons en cache ; relire cette quantité coûte environ {read}.',
'sessions.why.f.prefix.line.other': 'Écrire la partie hors cache de {uncached} a coûté {write} (mesuré). {readCalls} des {laterCalls} appels suivants ont lu au moins {tokens} jetons en cache ; relire cette quantité à chacun coûte environ {read}.',
'sessions.why.pr.title': 'Travail sur les PR',
'sessions.why.pr.reviewTotal': 'exécutions de revue {amount}',
'sessions.why.pr.opened': 'Ouverture de {pr}',
'sessions.why.pr.noFollowUps': 'Aucun push après son ouverture',
'sessions.why.pr.followUps': 'Tours de suivi : {rounds}, pushes : {pushes}',
'sessions.why.pr.reviewRun': 'Exécution de revue',
},
ja: {
'sessions.why.back': 'セッション',
Expand Down Expand Up @@ -469,6 +481,12 @@ export const sessionView: SectionCatalog = {
'sessions.why.step.helperFacts.other': '{type} · {models} · {calls} 回の呼び出し · {amount}',
'sessions.why.f.prefix.line.one': '非キャッシュ部分 {uncached} の書き込みに {write}(実測)。以降の {laterCalls} 回中 {readCalls} 回が {tokens} 以上のキャッシュ済みトークンを読み込み、その量を毎回再読み込みすると約 {read} です。',
'sessions.why.f.prefix.line.other': '非キャッシュ部分 {uncached} の書き込みに {write}(実測)。以降の {laterCalls} 回中 {readCalls} 回が {tokens} 以上のキャッシュ済みトークンを読み込み、その量を毎回再読み込みすると約 {read} です。',
'sessions.why.pr.title': 'PR の作業',
'sessions.why.pr.reviewTotal': 'レビュー実行 {amount}',
'sessions.why.pr.opened': '{pr} をオープン',
'sessions.why.pr.noFollowUps': 'オープン後のプッシュなし',
'sessions.why.pr.followUps': 'フォローアップ: {rounds} 回、プッシュ: {pushes} 回',
'sessions.why.pr.reviewRun': 'レビュー実行',
},
ko: {
'sessions.why.back': '세션',
Expand Down Expand Up @@ -625,6 +643,12 @@ export const sessionView: SectionCatalog = {
'sessions.why.step.helperFacts.other': '{type} · {models} · {calls}회 호출 · {amount}',
'sessions.why.f.prefix.line.one': '캐시되지 않은 {uncached} 부분을 캐시에 쓰는 데 {write} (실측). 이후 호출 {laterCalls}회 중 {readCalls}회가 캐시된 토큰을 {tokens} 이상 읽었고, 매번 그만큼 다시 읽는 비용은 약 {read}입니다.',
'sessions.why.f.prefix.line.other': '캐시되지 않은 {uncached} 부분을 캐시에 쓰는 데 {write} (실측). 이후 호출 {laterCalls}회 중 {readCalls}회가 캐시된 토큰을 {tokens} 이상 읽었고, 매번 그만큼 다시 읽는 비용은 약 {read}입니다.',
'sessions.why.pr.title': 'PR 작업',
'sessions.why.pr.reviewTotal': '리뷰 실행 {amount}',
'sessions.why.pr.opened': '{pr} 생성',
'sessions.why.pr.noFollowUps': '생성 후 푸시 없음',
'sessions.why.pr.followUps': '후속 라운드: {rounds}회, 푸시: {pushes}회',
'sessions.why.pr.reviewRun': '리뷰 실행',
},
zhCN: {
'sessions.why.back': '会话',
Expand Down Expand Up @@ -781,6 +805,12 @@ export const sessionView: SectionCatalog = {
'sessions.why.step.helperFacts.other': '{type} · {models} · {calls} 次调用 · {amount}',
'sessions.why.f.prefix.line.one': '将未缓存的 {uncached} 部分写入缓存花费 {write}(实测)。之后 {laterCalls} 次调用中有 {readCalls} 次读取了至少 {tokens} 个缓存 token;每次重读这么多约 {read}。',
'sessions.why.f.prefix.line.other': '将未缓存的 {uncached} 部分写入缓存花费 {write}(实测)。之后 {laterCalls} 次调用中有 {readCalls} 次读取了至少 {tokens} 个缓存 token;每次重读这么多约 {read}。',
'sessions.why.pr.title': 'PR 工作',
'sessions.why.pr.reviewTotal': '审查运行 {amount}',
'sessions.why.pr.opened': '创建了 {pr}',
'sessions.why.pr.noFollowUps': '创建后没有推送',
'sessions.why.pr.followUps': '后续轮次:{rounds},推送:{pushes}',
'sessions.why.pr.reviewRun': '审查运行',
},
zhTW: {
'sessions.why.back': '工作階段',
Expand Down Expand Up @@ -937,5 +967,11 @@ export const sessionView: SectionCatalog = {
'sessions.why.step.helperFacts.other': '{type} · {models} · {calls} 次呼叫 · {amount}',
'sessions.why.f.prefix.line.one': '將未快取的 {uncached} 部分寫入快取花費 {write}(實測)。之後 {laterCalls} 次呼叫中有 {readCalls} 次讀取了至少 {tokens} 個快取 token;每次重讀這麼多約 {read}。',
'sessions.why.f.prefix.line.other': '將未快取的 {uncached} 部分寫入快取花費 {write}(實測)。之後 {laterCalls} 次呼叫中有 {readCalls} 次讀取了至少 {tokens} 個快取 token;每次重讀這麼多約 {read}。',
'sessions.why.pr.title': 'PR 工作',
'sessions.why.pr.reviewTotal': '審查執行 {amount}',
'sessions.why.pr.opened': '建立了 {pr}',
'sessions.why.pr.noFollowUps': '建立後沒有推送',
'sessions.why.pr.followUps': '後續輪次:{rounds},推送:{pushes}',
'sessions.why.pr.reviewRun': '審查執行',
},
}
Loading
Loading