termux-dev 1.6.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +214 -166
- package/assets/banner.svg +23 -28
- package/assets/preview.png +0 -0
- package/assets/preview.svg +101 -10
- package/dist/cli/banner.js +3 -4
- package/dist/cli/clipboard-write.js +55 -0
- package/dist/cli/clipboard.js +182 -106
- package/dist/cli/colors.js +67 -0
- package/dist/cli/confirm.js +50 -0
- package/dist/cli/doctor.js +4 -4
- package/dist/cli/effort.js +80 -0
- package/dist/cli/export.js +3 -3
- package/dist/cli/files.js +19 -5
- package/dist/cli/finder.js +241 -0
- package/dist/cli/headless.js +23 -11
- package/dist/cli/index.js +1557 -744
- package/dist/cli/keys.js +69 -0
- package/dist/cli/liveblock.js +45 -0
- package/dist/cli/log.js +19 -0
- package/dist/cli/logo.js +30 -0
- package/dist/cli/markdown.js +174 -37
- package/dist/cli/mcp-panel.js +432 -0
- package/dist/cli/permission.js +84 -0
- package/dist/cli/picker.js +143 -0
- package/dist/cli/prompt.js +256 -56
- package/dist/cli/resume.js +15 -0
- package/dist/cli/rewind.js +51 -0
- package/dist/cli/runtime_errors.js +6 -0
- package/dist/cli/server.js +85 -24
- package/dist/cli/settings.js +307 -0
- package/dist/cli/statusline.js +1 -1
- package/dist/cli/theme.js +126 -108
- package/dist/cli/transcript.js +134 -0
- package/dist/cli/typeahead.js +371 -0
- package/dist/cli/ui.js +1022 -0
- package/dist/cli/updater.js +23 -21
- package/dist/cli/usage-panel.js +242 -0
- package/dist/cli/welcome.js +56 -0
- package/dist/cli/width.js +178 -0
- package/dist/core/capabilities.js +433 -0
- package/dist/core/catalog-util.js +27 -0
- package/dist/core/checkpoint.js +90 -0
- package/dist/core/context-stats.js +29 -0
- package/dist/core/cost.js +191 -0
- package/dist/core/formats.js +199 -0
- package/dist/core/history.js +51 -1
- package/dist/core/hooks.js +79 -0
- package/dist/core/i18n.js +42 -0
- package/dist/core/local-config.js +69 -0
- package/dist/core/locales/de.js +265 -0
- package/dist/core/locales/en.js +276 -0
- package/dist/core/locales/es.js +265 -0
- package/dist/core/locales/fr.js +265 -0
- package/dist/core/locales/ja.js +265 -0
- package/dist/core/locales/pt.js +265 -0
- package/dist/core/locales/ru.js +265 -0
- package/dist/core/locales/uk.js +265 -0
- package/dist/core/locales/zh.js +265 -0
- package/dist/core/loop.js +125 -49
- package/dist/core/memory.js +39 -12
- package/dist/core/models.js +33 -20
- package/dist/core/network.js +12 -11
- package/dist/core/notify.js +54 -0
- package/dist/core/planfile.js +43 -0
- package/dist/core/price-catalog.json +1 -0
- package/dist/core/prices.js +249 -0
- package/dist/core/reasoning-catalog.json +1 -0
- package/dist/core/reasoning.js +393 -0
- package/dist/core/redact.js +41 -0
- package/dist/core/secure-file.js +22 -0
- package/dist/core/session.js +16 -5
- package/dist/core/snapshot.js +14 -2
- package/dist/core/title.js +61 -0
- package/dist/core/types.js +1 -1
- package/dist/core/usage.js +43 -7
- package/dist/core/vision-catalog.json +1 -0
- package/dist/core/vision.js +123 -0
- package/dist/mcp/client.js +36 -5
- package/dist/mcp/http-client.js +174 -0
- package/dist/mcp/manager.js +330 -93
- package/dist/permissions/guard.js +385 -117
- package/dist/prompts/builder.js +46 -38
- package/dist/providers/anthropic.js +517 -0
- package/dist/providers/index.js +18 -1
- package/dist/providers/openai.js +138 -125
- package/dist/providers/shared.js +116 -0
- package/dist/providers/toolguard.js +101 -0
- package/dist/tools/bash.js +141 -51
- package/dist/tools/diagnostics.js +76 -48
- package/dist/tools/fs.js +77 -5
- package/dist/tools/index.js +2 -1
- package/dist/tools/mcp.js +72 -0
- package/dist/tools/packages.js +16 -1
- package/dist/tools/plan.js +8 -8
- package/dist/tools/questions.js +50 -54
- package/dist/tools/server.js +6 -0
- package/dist/tools/todo.js +20 -18
- package/dist/tools/web.js +143 -8
- package/package.json +1 -1
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
export const ja = {
|
|
2
|
+
'net.unknown': '不明なネットワークエラー',
|
|
3
|
+
'net.rateLimit': 'API のリクエスト上限を超えました (429)',
|
|
4
|
+
'net.badGateway': 'プロバイダーのゲートウェイが一時的に利用できません (502)',
|
|
5
|
+
'net.unavailable': 'プロバイダーのサーバーが過負荷です (503)',
|
|
6
|
+
'net.gatewayTimeout': 'プロバイダーのゲートウェイがタイムアウトしました (504)',
|
|
7
|
+
'net.offline': 'ネットワーク未接続、または DNS の障害(オフライン)',
|
|
8
|
+
'net.reset': 'サーバーとの接続がリセットされました',
|
|
9
|
+
'net.timeout': 'ネットワーク接続がタイムアウトしました',
|
|
10
|
+
'net.refused': 'サーバーが接続を拒否しました',
|
|
11
|
+
'net.fetchFailed': 'ネットワークリクエストに失敗しました(接続が切断)',
|
|
12
|
+
'net.generic': 'インターネット接続の障害',
|
|
13
|
+
'net.failedAfter': 'ネットワークエラー:{n} 回試しても接続を回復できませんでした({reason})。',
|
|
14
|
+
'conn.unstable': '接続が不安定です({reason})',
|
|
15
|
+
'conn.reconnecting': '再接続中 {attempt}/{max} · {delay} 秒後に再試行',
|
|
16
|
+
'conn.restored': '接続が回復しました',
|
|
17
|
+
'conn.classicUnstable': '接続が不安定です({reason})',
|
|
18
|
+
'conn.classicRetry': '再接続中 [{attempt}/{max}]({delay} 秒待機)...',
|
|
19
|
+
'conn.classicWaiting': 'ネットワークを待っています [{attempt}/{max}]...',
|
|
20
|
+
'conn.classicRestored': '✓ 接続が回復しました。生成を再開します...',
|
|
21
|
+
'stop.connection': '接続をキャンセルしました',
|
|
22
|
+
'stop.stopped': '停止しました',
|
|
23
|
+
'stop.interrupted': '中断しました。メッセージを送信します',
|
|
24
|
+
'stop.classicConnection': '接続をキャンセルしました (Ctrl+C)。',
|
|
25
|
+
'stop.classicStopped': '生成を停止しました (Ctrl+C)。',
|
|
26
|
+
'stop.classicInterrupted': '中断しました:メッセージを送信します。',
|
|
27
|
+
'status.waiting': 'モデルを待機中',
|
|
28
|
+
'status.thinking': '考え中',
|
|
29
|
+
'status.writing': '執筆中',
|
|
30
|
+
'status.running': '実行中',
|
|
31
|
+
'status.reconnecting': '再接続中',
|
|
32
|
+
'status.stop': 'ctrl+c で停止',
|
|
33
|
+
'status.thinkingLine': '思考',
|
|
34
|
+
'status.thoughtFor': '{sec} 秒考えました',
|
|
35
|
+
'composer.placeholder': 'タスクを説明するか質問してください…',
|
|
36
|
+
'composer.queued': 'キュー済み',
|
|
37
|
+
'composer.queuedMany': '{n} 件キュー済み',
|
|
38
|
+
'composer.queuedHint': 'ctrl+enter で今すぐ送信 · ↓ 編集',
|
|
39
|
+
'composer.hint1': 'enter でキュー · ctrl+c で停止',
|
|
40
|
+
'composer.hint2': 'enter でキュー',
|
|
41
|
+
'composer.hint3': 'enter でキュー · ctrl+c で停止',
|
|
42
|
+
'composer.hint4': 'enter でキュー',
|
|
43
|
+
'summary.toolOne': 'ツール {n} 件',
|
|
44
|
+
'summary.toolMany': 'ツール {n} 件',
|
|
45
|
+
'summary.in': '入力 {n}',
|
|
46
|
+
'summary.out': '出力 {n}',
|
|
47
|
+
'summary.stopped': '停止',
|
|
48
|
+
'settings.title': '設定',
|
|
49
|
+
'settings.section.appearance': '外観',
|
|
50
|
+
'settings.section.agent': 'エージェント',
|
|
51
|
+
'settings.section.general': '一般',
|
|
52
|
+
'settings.section.about': 'このアプリについて',
|
|
53
|
+
'settings.row.theme': 'テーマ',
|
|
54
|
+
'settings.row.layout': 'インターフェース',
|
|
55
|
+
'settings.row.pureBlack': '黒い背景',
|
|
56
|
+
'settings.row.autoApprove': '自動承認 (YOLO)',
|
|
57
|
+
'settings.row.maxIterations': '最大ステップ数',
|
|
58
|
+
'settings.row.memory': 'プロジェクトメモリ',
|
|
59
|
+
'settings.row.updates': '更新の確認',
|
|
60
|
+
'settings.row.language': '言語',
|
|
61
|
+
'settings.row.about': 'devx について',
|
|
62
|
+
'settings.short.theme': 'テーマ',
|
|
63
|
+
'settings.short.layout': 'UI',
|
|
64
|
+
'settings.short.pureBlack': '黒背景',
|
|
65
|
+
'settings.short.autoApprove': 'YOLO',
|
|
66
|
+
'settings.short.maxIterations': '手数',
|
|
67
|
+
'settings.short.memory': 'メモリ',
|
|
68
|
+
'settings.short.updates': '更新',
|
|
69
|
+
'settings.short.language': '言語',
|
|
70
|
+
'settings.short.about': '情報',
|
|
71
|
+
'settings.value.on': 'オン',
|
|
72
|
+
'settings.value.off': 'オフ',
|
|
73
|
+
'settings.value.clean': 'シンプル',
|
|
74
|
+
'settings.value.classic': 'クラシック',
|
|
75
|
+
'settings.value.unlimited': '無制限',
|
|
76
|
+
'settings.value.steps': '{n} ステップ',
|
|
77
|
+
'settings.hint.theme': 'インターフェース全体の配色です。左右キーでテーマを切り替えると、パネルがすぐに変わります。',
|
|
78
|
+
'settings.hint.layout': 'シンプル:枠付きの入力欄、カード、控えめなツール行。クラシック:従来の ASCII レイアウト。',
|
|
79
|
+
'settings.hint.pureBlack': 'ターミナルの背景を深い OLED ブラック (#0a0a0c) にします。オフなら元の背景のままです。',
|
|
80
|
+
'settings.hint.autoApprove': '通常の許可確認を省略します。危険なコマンドや認証情報ファイルは引き続き確認します。このセッションだけ有効で、次回 devx を起動するとオフに戻ります。',
|
|
81
|
+
'settings.hint.maxIterations': '1 回のリクエストでエージェントが実行できるツールのステップ数(編集、コマンド)です。',
|
|
82
|
+
'settings.hint.memory': '.devx/memory.md のルールを毎回のセッションに読み込みます。',
|
|
83
|
+
'settings.hint.updates': '起動時に GitHub で devx の新バージョンを確認します。/update はどちらでも使えます。',
|
|
84
|
+
'settings.hint.language': 'インターフェースの言語:メッセージ、設定、ヒント。コードとツール名は英語のままです。',
|
|
85
|
+
'settings.hint.about': 'ApvCode 製のターミナル向け AI コーディングエージェント。MIT ライセンス。github.com/apvcode/Termux-Dev',
|
|
86
|
+
'settings.warnYolo': 'オン:エージェントは確認なしにコマンドを実行しファイルを編集します。',
|
|
87
|
+
'settings.keys.move': '移動',
|
|
88
|
+
'settings.keys.change': '変更',
|
|
89
|
+
'settings.keys.toggle': '切替',
|
|
90
|
+
'settings.keys.close': '閉じる',
|
|
91
|
+
// ── /mcp panel
|
|
92
|
+
'mcp.title': 'MCP サーバー',
|
|
93
|
+
'mcp.count': 'サーバー: {n}',
|
|
94
|
+
'mcp.scope.user': 'ユーザーのサーバー',
|
|
95
|
+
'mcp.scope.project': 'プロジェクトのサーバー',
|
|
96
|
+
'mcp.toolsCount': 'ツール: {n}',
|
|
97
|
+
'mcp.status.connected': '接続済み',
|
|
98
|
+
'mcp.status.connecting': '接続中…',
|
|
99
|
+
'mcp.status.failed': '失敗',
|
|
100
|
+
'mcp.status.disabled': '無効',
|
|
101
|
+
'mcp.empty': 'MCP サーバーは設定されていません。',
|
|
102
|
+
'mcp.emptyHint': '/mcp import で Claude Code のサーバーを取り込むか、/mcp add <名前> <コマンド> [引数] で追加します。',
|
|
103
|
+
'mcp.detail.status': '状態',
|
|
104
|
+
'mcp.detail.command': 'コマンド',
|
|
105
|
+
'mcp.detail.config': '設定',
|
|
106
|
+
'mcp.detail.capabilities': '機能',
|
|
107
|
+
'mcp.detail.tools': 'ツール',
|
|
108
|
+
'mcp.detail.error': 'エラー',
|
|
109
|
+
'mcp.action.tools': 'ツールを表示',
|
|
110
|
+
'mcp.action.reconnect': '再接続',
|
|
111
|
+
'mcp.action.disable': '無効にする',
|
|
112
|
+
'mcp.action.enable': '有効にする',
|
|
113
|
+
'mcp.toolsTitle': '{name} のツール',
|
|
114
|
+
'mcp.noTools': 'このサーバーにはツールがありません。',
|
|
115
|
+
'mcp.tag.readOnly': '読み取り専用',
|
|
116
|
+
'mcp.tag.destructive': '破壊的',
|
|
117
|
+
'mcp.tag.openWorld': '外部世界',
|
|
118
|
+
'mcp.params': 'パラメーター',
|
|
119
|
+
'mcp.noParams': 'パラメーターなし。',
|
|
120
|
+
'mcp.required': '必須',
|
|
121
|
+
'mcp.more': 'ほか {n} 件',
|
|
122
|
+
'mcp.keys.open': '開く',
|
|
123
|
+
'mcp.keys.back': '戻る',
|
|
124
|
+
'mcp.keys.reload': 'すべて再読込',
|
|
125
|
+
'mcp.keys.close': '閉じる',
|
|
126
|
+
// ── questions from the agent
|
|
127
|
+
'questions.title': '質問',
|
|
128
|
+
'questions.custom': '自分で入力…',
|
|
129
|
+
'questions.skip': 'スキップ',
|
|
130
|
+
'questions.skipped': '(スキップ)',
|
|
131
|
+
'questions.yourAnswer': 'あなたの回答:',
|
|
132
|
+
'questions.empty': '回答は空にできません',
|
|
133
|
+
// ── confirmations
|
|
134
|
+
'confirm.yes': 'はい',
|
|
135
|
+
'confirm.no': 'いいえ',
|
|
136
|
+
'confirm.exitTitle': '終了',
|
|
137
|
+
'confirm.exit': 'devx を終了しますか?',
|
|
138
|
+
'confirm.goodbye': 'またね',
|
|
139
|
+
'confirm.deleteAll': '保存済みの {n} 件のセッションをすべて削除しますか?',
|
|
140
|
+
'confirm.update': '今すぐ devx を v{version} に更新しますか?',
|
|
141
|
+
'confirm.commit': 'このメッセージで変更をコミットしますか?',
|
|
142
|
+
'trust.title': 'ワークスペースの信頼',
|
|
143
|
+
'trust.question': 'このフォルダは初めてです。信頼して、エージェントに作業を許可しますか?',
|
|
144
|
+
'trust.yes': 'はい、このフォルダを信頼する',
|
|
145
|
+
'trust.no': 'いいえ、終了する',
|
|
146
|
+
'trust.wantsYolo': 'プロジェクト設定が自動承認 (YOLO) を求めています',
|
|
147
|
+
'trust.wantsAllowlist': 'プロジェクト設定は次のコマンドを許可しています: {list}',
|
|
148
|
+
'trust.exiting': 'フォルダは信頼されませんでした。devx を終了します',
|
|
149
|
+
'trust.mcpQuestion': 'このプロジェクトは MCP サーバー(ローカルプログラム、上記)を起動しようとしています。許可しますか?',
|
|
150
|
+
// ── view switches
|
|
151
|
+
'view.expandThought': 'ctrl+p で展開',
|
|
152
|
+
'view.expandOutput': 'ctrl+o で展開',
|
|
153
|
+
'view.moreLines': '… ほか {n} 行',
|
|
154
|
+
// ── plan approval
|
|
155
|
+
'plan.cardTitle': 'プラン',
|
|
156
|
+
'plan.files': 'ファイル',
|
|
157
|
+
'plan.ready': 'プランができました。作業を始めますか?',
|
|
158
|
+
'plan.go': 'Go: AGENT モードに切り替えて開始',
|
|
159
|
+
'plan.edit': 'プランを変更(PLAN モードのまま)',
|
|
160
|
+
'plan.editHint': '変更したい点を伝えてください。PLAN モードのままプランを作り直します。',
|
|
161
|
+
'plan.started': 'AGENT モード: 承認されたプランに沿って作業中',
|
|
162
|
+
// ── undo
|
|
163
|
+
'undo.question': '{n} 個のファイルを直前のターンの前の状態に戻しますか?',
|
|
164
|
+
'undo.note': 'シェルコマンドによる変更も含みます。git が無視するファイルには触れません。',
|
|
165
|
+
'undo.done': '{n} 個のファイルを復元しました',
|
|
166
|
+
// ── permissions
|
|
167
|
+
'permissions.title': '確認なしで許可',
|
|
168
|
+
'permissions.none': '確認なしで許可されているものはまだありません。承認カードで Session か Always を選ぶと追加されます。',
|
|
169
|
+
'permissions.hint': '/permissions clear ですべて削除します(セッション分も)。',
|
|
170
|
+
'permissions.cleared': '確認なしの許可をすべて削除しました',
|
|
171
|
+
// ── cost limit
|
|
172
|
+
'settings.row.costLimit': '費用の上限',
|
|
173
|
+
'settings.short.costLimit': '費用上限',
|
|
174
|
+
'settings.hint.costLimit': '1 セッションにかけてよい費用の上限です。80% で警告し、上限に達するとタスクを止め、続ける前に確認します。',
|
|
175
|
+
'cost.title': '費用の上限',
|
|
176
|
+
'cost.warn': '{spent} 使用:このセッションの上限 {limit} の 80%',
|
|
177
|
+
'cost.stopped': '費用の上限 {limit} に達しました。タスクを停止しました',
|
|
178
|
+
'cost.reached': 'このセッションは上限 {limit} のうち {spent} を使いました。続けますか?',
|
|
179
|
+
'cost.raise': '続けると、このセッションの上限が {limit} に引き上げられます。',
|
|
180
|
+
'cost.continue': 'はい、続ける',
|
|
181
|
+
'cost.cancel': 'いいえ、今はしない',
|
|
182
|
+
'cost.cancelled': '何も送信されていません。メッセージは入力欄に戻りました。',
|
|
183
|
+
// ── /copy and /rename
|
|
184
|
+
'copy.none': 'コピーできる回答はまだありません。',
|
|
185
|
+
'copy.done': '最後の回答をコピーしました({n} 文字)',
|
|
186
|
+
'copy.failed': 'クリップボードにアクセスできません(wl-copy、xclip、xsel がなく、回答が端末には長すぎます)。',
|
|
187
|
+
'rename.done': 'チャット名を変更しました: {name}',
|
|
188
|
+
'rename.usage': '使い方: /rename <名前>。名前なしの場合、最初の回答があれば AI が付け直します。',
|
|
189
|
+
'rename.failed': 'AI が名前を思いつきませんでした。もう一度試すか、/rename <名前> で指定してください。',
|
|
190
|
+
// ── memory
|
|
191
|
+
'memory.capped': 'メモリが長いため、古い {n} 件はモデルに送られません(新しいものだけ入ります)。.devx/memory.md から古いものを削除してください。',
|
|
192
|
+
'mcp.removeUsage': '使い方: /mcp remove <名前>',
|
|
193
|
+
'mcp.removeNotFound': '「{name}」は ~/.devx/mcp.json にありません。別のファイル(プロジェクト、~/.devxrc.json)のサーバーはそのファイルから手で削除してください。',
|
|
194
|
+
'mcp.removed': 'サーバー「{name}」を削除しました',
|
|
195
|
+
// ── /rewind
|
|
196
|
+
'rewind.title': '巻き戻し',
|
|
197
|
+
'rewind.count': '{n} 件のメッセージ',
|
|
198
|
+
'rewind.current': '(現在:ここに留まる)',
|
|
199
|
+
'rewind.none': '戻れるあなたのメッセージはまだありません。',
|
|
200
|
+
'rewind.later': '以降 {n} 件',
|
|
201
|
+
'rewind.ago.now': 'たった今',
|
|
202
|
+
'rewind.ago.min': '{n} 分前',
|
|
203
|
+
'rewind.ago.hour': '{n} 時間前',
|
|
204
|
+
'rewind.ago.day': '{n} 日前',
|
|
205
|
+
'rewind.filesQuestion': 'ファイル({n} 個)もその時の状態に戻しますか?',
|
|
206
|
+
'rewind.filesYes': 'はい、ファイルも',
|
|
207
|
+
'rewind.filesNo': 'いいえ、会話だけ',
|
|
208
|
+
'rewind.done': 'あなたのメッセージに戻りました。以降の内容はモデルからも消えています。メッセージを編集して送信してください。',
|
|
209
|
+
'rewind.doneImages': 'あなたのメッセージに戻りました(画像は保持されません。再度添付してください)。以降の内容はモデルからも消えています。',
|
|
210
|
+
// ── first run and the prompts around it
|
|
211
|
+
'welcome.tagline': 'ターミナルで使える AI コーディングエージェント',
|
|
212
|
+
'welcome.intro': '設定を済ませましょう。1 分ほどで終わります。',
|
|
213
|
+
'welcome.step.language': '言語',
|
|
214
|
+
'welcome.step.provider': 'プロバイダー',
|
|
215
|
+
'welcome.step.key': 'API キー',
|
|
216
|
+
'welcome.step.model': 'モデル',
|
|
217
|
+
'welcome.keyNote': 'キーはこのコンピューターの ~/.devxrc.json にだけ保存されます。',
|
|
218
|
+
'onboard.language.title': '言語',
|
|
219
|
+
'onboard.language.note': 'あとで /settings から変更できます。',
|
|
220
|
+
'onboard.provider.title': 'プロバイダー',
|
|
221
|
+
'onboard.provider.placeholder': '入力してプロバイダーを探す',
|
|
222
|
+
'onboard.provider.note': 'モデルを提供するサービスです。一覧にない場合は「独自のアドレス」を選んでください。',
|
|
223
|
+
'onboard.custom': '独自のアドレス',
|
|
224
|
+
'onboard.customDetail': 'OpenAI 互換の任意のアドレス',
|
|
225
|
+
'onboard.baseUrl.title': 'アドレス',
|
|
226
|
+
'onboard.baseUrl.label': 'API のベース URL',
|
|
227
|
+
'onboard.baseUrl.placeholder': 'https://api.example.com/v1',
|
|
228
|
+
'onboard.key.title': 'api キー',
|
|
229
|
+
'onboard.key.label': '{provider} の API キーを貼り付けてください',
|
|
230
|
+
'onboard.key.note': '入力内容は表示されません。Esc で戻ります。',
|
|
231
|
+
'onboard.key.useSaved': '保存済みのキーを使う',
|
|
232
|
+
'onboard.key.enterNew': '新しいキーを入力',
|
|
233
|
+
'onboard.key.savedTitle': '{provider} のキーは保存済みです',
|
|
234
|
+
'onboard.model.title': 'モデル',
|
|
235
|
+
'onboard.model.placeholder': '入力してモデルを探す',
|
|
236
|
+
'onboard.model.custom': 'モデル名を入力',
|
|
237
|
+
'onboard.model.customDetail': '任意のモデル ID',
|
|
238
|
+
'onboard.model.label': 'モデル名(例: gpt-4o)',
|
|
239
|
+
'onboard.model.fetching': 'モデル一覧を取得しています...',
|
|
240
|
+
'onboard.model.manual': 'モデル一覧を取得できませんでした。モデル名を入力してください。',
|
|
241
|
+
'onboard.model.context': '{n} コンテキスト',
|
|
242
|
+
'onboard.model.anthropic': 'Anthropic 形式',
|
|
243
|
+
'onboard.back': '戻る',
|
|
244
|
+
'onboard.back.detail': '現在の設定を維持',
|
|
245
|
+
'onboard.done': '完了です。選択内容は ~/.devxrc.json に保存されました。',
|
|
246
|
+
'finder.placeholder': '入力して絞り込み',
|
|
247
|
+
'finder.empty': '一致なし',
|
|
248
|
+
'finder.hint.filter': '絞り込み',
|
|
249
|
+
'picker.hint.move': '移動',
|
|
250
|
+
'picker.hint.select': '選択',
|
|
251
|
+
'picker.hint.cancel': 'キャンセル',
|
|
252
|
+
'picker.hint.confirm': '確認',
|
|
253
|
+
'welcome.step.theme': 'テーマ',
|
|
254
|
+
'onboard.theme.title': 'テーマ',
|
|
255
|
+
'onboard.theme.note': 'インターフェースの配色です。/theme でいつでも変更できます。',
|
|
256
|
+
'resume.title': '再開',
|
|
257
|
+
'resume.placeholder': '入力してセッションを絞り込み',
|
|
258
|
+
'resume.msgs': '{n} 件',
|
|
259
|
+
'sessions.deleteTitle': 'セッションの削除',
|
|
260
|
+
'sessions.deleteAll': '{n} 件すべてのセッションを削除',
|
|
261
|
+
'commands.title': 'コマンド',
|
|
262
|
+
'commands.placeholder': '入力してコマンドを探す',
|
|
263
|
+
'compact.done': 'コンテキスト圧縮済み、要約を保持',
|
|
264
|
+
'compact.summary': 'モデルが書いた内容',
|
|
265
|
+
};
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
export const pt = {
|
|
2
|
+
'net.unknown': 'Erro de rede desconhecido',
|
|
3
|
+
'net.rateLimit': 'Limite de requisições da API excedido (429)',
|
|
4
|
+
'net.badGateway': 'Gateway do provedor temporariamente indisponível (502)',
|
|
5
|
+
'net.unavailable': 'Servidor do provedor sobrecarregado (503)',
|
|
6
|
+
'net.gatewayTimeout': 'Tempo esgotado no gateway do provedor (504)',
|
|
7
|
+
'net.offline': 'Sem conexão de rede ou falha de DNS (offline)',
|
|
8
|
+
'net.reset': 'A conexão com o servidor foi redefinida',
|
|
9
|
+
'net.timeout': 'Tempo esgotado na conexão de rede',
|
|
10
|
+
'net.refused': 'O servidor recusou a conexão',
|
|
11
|
+
'net.fetchFailed': 'Falha na requisição de rede (conexão interrompida)',
|
|
12
|
+
'net.generic': 'Falha na conexão com a internet',
|
|
13
|
+
'net.failedAfter': 'Erro de rede: não foi possível restabelecer a conexão após {n} tentativas ({reason}).',
|
|
14
|
+
'conn.unstable': 'conexão instável ({reason})',
|
|
15
|
+
'conn.reconnecting': 'reconectando {attempt}/{max} · nova tentativa em {delay} s',
|
|
16
|
+
'conn.restored': 'conexão restabelecida',
|
|
17
|
+
'conn.classicUnstable': 'Conexão instável ({reason})',
|
|
18
|
+
'conn.classicRetry': 'Reconectando [{attempt}/{max}] (pausa {delay} s)...',
|
|
19
|
+
'conn.classicWaiting': 'Aguardando a rede [{attempt}/{max}]...',
|
|
20
|
+
'conn.classicRestored': '✓ Conexão restabelecida! Retomando a geração...',
|
|
21
|
+
'stop.connection': 'conexão cancelada',
|
|
22
|
+
'stop.stopped': 'interrompido',
|
|
23
|
+
'stop.interrupted': 'interrompido, enviando sua mensagem',
|
|
24
|
+
'stop.classicConnection': 'Conexão cancelada (Ctrl+C).',
|
|
25
|
+
'stop.classicStopped': 'Geração interrompida (Ctrl+C).',
|
|
26
|
+
'stop.classicInterrupted': 'Interrompido: enviando sua mensagem.',
|
|
27
|
+
'status.waiting': 'Aguardando o modelo',
|
|
28
|
+
'status.thinking': 'Pensando',
|
|
29
|
+
'status.writing': 'Escrevendo',
|
|
30
|
+
'status.running': 'Executando',
|
|
31
|
+
'status.reconnecting': 'Reconectando',
|
|
32
|
+
'status.stop': 'ctrl+c para parar',
|
|
33
|
+
'status.thinkingLine': 'pensando',
|
|
34
|
+
'status.thoughtFor': 'pensou {sec} s',
|
|
35
|
+
'composer.placeholder': 'Descreva uma tarefa ou faça uma pergunta…',
|
|
36
|
+
'composer.queued': 'na fila',
|
|
37
|
+
'composer.queuedMany': '{n} na fila',
|
|
38
|
+
'composer.queuedHint': 'ctrl+enter envia agora · ↓ editar',
|
|
39
|
+
'composer.hint1': 'enter enfileira · ctrl+c para',
|
|
40
|
+
'composer.hint2': 'enter enfileira',
|
|
41
|
+
'composer.hint3': 'enter enfileira · ctrl+c para',
|
|
42
|
+
'composer.hint4': 'enter enfileira',
|
|
43
|
+
'summary.toolOne': '{n} ferramenta',
|
|
44
|
+
'summary.toolMany': '{n} ferramentas',
|
|
45
|
+
'summary.in': '{n} entrada',
|
|
46
|
+
'summary.out': '{n} saída',
|
|
47
|
+
'summary.stopped': 'interrompido',
|
|
48
|
+
'settings.title': 'configurações',
|
|
49
|
+
'settings.section.appearance': 'Aparência',
|
|
50
|
+
'settings.section.agent': 'Agente',
|
|
51
|
+
'settings.section.general': 'Geral',
|
|
52
|
+
'settings.section.about': 'Sobre',
|
|
53
|
+
'settings.row.theme': 'Tema',
|
|
54
|
+
'settings.row.layout': 'Interface',
|
|
55
|
+
'settings.row.pureBlack': 'Fundo preto',
|
|
56
|
+
'settings.row.autoApprove': 'Autoaprovar (YOLO)',
|
|
57
|
+
'settings.row.maxIterations': 'Máx. de passos',
|
|
58
|
+
'settings.row.memory': 'Memória do projeto',
|
|
59
|
+
'settings.row.updates': 'Buscar atualizações',
|
|
60
|
+
'settings.row.language': 'Idioma',
|
|
61
|
+
'settings.row.about': 'Sobre o devx',
|
|
62
|
+
'settings.short.theme': 'Tema',
|
|
63
|
+
'settings.short.layout': 'Interface',
|
|
64
|
+
'settings.short.pureBlack': 'Fundo preto',
|
|
65
|
+
'settings.short.autoApprove': 'YOLO',
|
|
66
|
+
'settings.short.maxIterations': 'Passos',
|
|
67
|
+
'settings.short.memory': 'Memória',
|
|
68
|
+
'settings.short.updates': 'Atualiz.',
|
|
69
|
+
'settings.short.language': 'Idioma',
|
|
70
|
+
'settings.short.about': 'Sobre',
|
|
71
|
+
'settings.value.on': 'sim',
|
|
72
|
+
'settings.value.off': 'não',
|
|
73
|
+
'settings.value.clean': 'Limpa',
|
|
74
|
+
'settings.value.classic': 'Clássica',
|
|
75
|
+
'settings.value.unlimited': 'sem limite',
|
|
76
|
+
'settings.value.steps': '{n} passos',
|
|
77
|
+
'settings.hint.theme': 'Cores de toda a interface. Esquerda e direita percorrem os temas; o painel muda de cor na hora.',
|
|
78
|
+
'settings.hint.layout': 'Limpa: entrada com moldura, cartões e linhas de ferramentas discretas. Clássica: o layout ASCII original.',
|
|
79
|
+
'settings.hint.pureBlack': 'Deixa o fundo do terminal em preto OLED profundo (#0a0a0c). Desligado mantém o seu fundo.',
|
|
80
|
+
'settings.hint.autoApprove': 'Pula as permissões de rotina. Comandos perigosos e arquivos de credenciais continuam perguntando. Vale só para esta sessão: na próxima vez que o devx iniciar, volta a ficar desligado.',
|
|
81
|
+
'settings.hint.maxIterations': 'Quantos passos com ferramentas (edições, comandos) o agente pode dar por pedido.',
|
|
82
|
+
'settings.hint.memory': 'Carrega as regras de .devx/memory.md em cada sessão.',
|
|
83
|
+
'settings.hint.updates': 'Procura uma nova versão do devx no GitHub ao iniciar. O /update funciona de qualquer forma.',
|
|
84
|
+
'settings.hint.language': 'Idioma da interface: mensagens, configurações e dicas. Código e nomes de ferramentas continuam em inglês.',
|
|
85
|
+
'settings.hint.about': 'Agente de programação com IA para o terminal, da ApvCode. Licença MIT. github.com/apvcode/Termux-Dev',
|
|
86
|
+
'settings.warnYolo': 'Ligado: o agente executa comandos e edita arquivos sem perguntar.',
|
|
87
|
+
'settings.keys.move': 'mover',
|
|
88
|
+
'settings.keys.change': 'alterar',
|
|
89
|
+
'settings.keys.toggle': 'alternar',
|
|
90
|
+
'settings.keys.close': 'fechar',
|
|
91
|
+
// ── /mcp panel
|
|
92
|
+
'mcp.title': 'Servidores MCP',
|
|
93
|
+
'mcp.count': 'servidores: {n}',
|
|
94
|
+
'mcp.scope.user': 'Servidores do usuário',
|
|
95
|
+
'mcp.scope.project': 'Servidores do projeto',
|
|
96
|
+
'mcp.toolsCount': 'ferramentas: {n}',
|
|
97
|
+
'mcp.status.connected': 'conectado',
|
|
98
|
+
'mcp.status.connecting': 'conectando…',
|
|
99
|
+
'mcp.status.failed': 'falhou',
|
|
100
|
+
'mcp.status.disabled': 'desativado',
|
|
101
|
+
'mcp.empty': 'Nenhum servidor MCP configurado.',
|
|
102
|
+
'mcp.emptyHint': 'Use /mcp import para trazer os servidores do Claude Code, ou /mcp add <nome> <comando> [args].',
|
|
103
|
+
'mcp.detail.status': 'Status',
|
|
104
|
+
'mcp.detail.command': 'Comando',
|
|
105
|
+
'mcp.detail.config': 'Config',
|
|
106
|
+
'mcp.detail.capabilities': 'Recursos',
|
|
107
|
+
'mcp.detail.tools': 'Ferramentas',
|
|
108
|
+
'mcp.detail.error': 'Erro',
|
|
109
|
+
'mcp.action.tools': 'Ver ferramentas',
|
|
110
|
+
'mcp.action.reconnect': 'Reconectar',
|
|
111
|
+
'mcp.action.disable': 'Desativar',
|
|
112
|
+
'mcp.action.enable': 'Ativar',
|
|
113
|
+
'mcp.toolsTitle': 'Ferramentas de {name}',
|
|
114
|
+
'mcp.noTools': 'Este servidor não oferece ferramentas.',
|
|
115
|
+
'mcp.tag.readOnly': 'somente leitura',
|
|
116
|
+
'mcp.tag.destructive': 'destrutiva',
|
|
117
|
+
'mcp.tag.openWorld': 'mundo aberto',
|
|
118
|
+
'mcp.params': 'Parâmetros',
|
|
119
|
+
'mcp.noParams': 'Sem parâmetros.',
|
|
120
|
+
'mcp.required': 'obrigatório',
|
|
121
|
+
'mcp.more': 'mais {n}',
|
|
122
|
+
'mcp.keys.open': 'abrir',
|
|
123
|
+
'mcp.keys.back': 'voltar',
|
|
124
|
+
'mcp.keys.reload': 'recarregar tudo',
|
|
125
|
+
'mcp.keys.close': 'fechar',
|
|
126
|
+
// ── questions from the agent
|
|
127
|
+
'questions.title': 'Pergunta',
|
|
128
|
+
'questions.custom': 'Digitar minha resposta…',
|
|
129
|
+
'questions.skip': 'Pular',
|
|
130
|
+
'questions.skipped': '(pulada)',
|
|
131
|
+
'questions.yourAnswer': 'Sua resposta:',
|
|
132
|
+
'questions.empty': 'A resposta não pode estar vazia',
|
|
133
|
+
// ── confirmations
|
|
134
|
+
'confirm.yes': 'Sim',
|
|
135
|
+
'confirm.no': 'Não',
|
|
136
|
+
'confirm.exitTitle': 'sair',
|
|
137
|
+
'confirm.exit': 'Sair do devx?',
|
|
138
|
+
'confirm.goodbye': 'Até logo',
|
|
139
|
+
'confirm.deleteAll': 'Apagar TODAS as {n} sessões salvas?',
|
|
140
|
+
'confirm.update': 'Atualizar o devx para v{version} agora?',
|
|
141
|
+
'confirm.commit': 'Fazer commit das alterações com esta mensagem?',
|
|
142
|
+
'trust.title': 'confiança na pasta',
|
|
143
|
+
'trust.question': 'Primeira vez nesta pasta. Confiar nela e deixar o agente trabalhar aqui?',
|
|
144
|
+
'trust.yes': 'Sim, confiar nesta pasta',
|
|
145
|
+
'trust.no': 'Não, sair',
|
|
146
|
+
'trust.wantsYolo': 'A configuração do projeto pede autoaprovação (YOLO)',
|
|
147
|
+
'trust.wantsAllowlist': 'A configuração do projeto permite estes comandos: {list}',
|
|
148
|
+
'trust.exiting': 'Pasta não confiável, o devx será encerrado',
|
|
149
|
+
'trust.mcpQuestion': 'Este projeto quer iniciar servidores MCP (programas locais, listados acima). Permitir?',
|
|
150
|
+
// ── view switches
|
|
151
|
+
'view.expandThought': 'ctrl+p para expandir',
|
|
152
|
+
'view.expandOutput': 'ctrl+o para expandir',
|
|
153
|
+
'view.moreLines': '… +{n} linhas',
|
|
154
|
+
// ── plan approval
|
|
155
|
+
'plan.cardTitle': 'Plano',
|
|
156
|
+
'plan.files': 'Arquivos',
|
|
157
|
+
'plan.ready': 'O plano está pronto. Começar a trabalhar nele?',
|
|
158
|
+
'plan.go': 'Go: mudar para o modo AGENT e começar',
|
|
159
|
+
'plan.edit': 'Alterar o plano (ficar no modo PLAN)',
|
|
160
|
+
'plan.editHint': 'Diga o que mudar: o plano fica no modo PLAN e será refeito.',
|
|
161
|
+
'plan.started': 'Modo AGENT: trabalhando no plano aprovado',
|
|
162
|
+
// ── undo
|
|
163
|
+
'undo.question': 'Devolver {n} arquivo(s) ao estado de antes do último turno?',
|
|
164
|
+
'undo.note': 'Inclui o que os comandos de shell fizeram. Arquivos ignorados pelo git não são tocados.',
|
|
165
|
+
'undo.done': '{n} arquivo(s) restaurado(s)',
|
|
166
|
+
// ── permissions
|
|
167
|
+
'permissions.title': 'Permitido sem perguntar',
|
|
168
|
+
'permissions.none': 'Nada é permitido sem perguntar ainda: responda «Session» ou «Always» em um cartão de aprovação.',
|
|
169
|
+
'permissions.hint': '/permissions clear remove tudo (inclusive o da sessão).',
|
|
170
|
+
'permissions.cleared': 'Tudo o que era permitido sem perguntar foi removido',
|
|
171
|
+
// ── cost limit
|
|
172
|
+
'settings.row.costLimit': 'Limite de custo',
|
|
173
|
+
'settings.short.costLimit': 'Limite $',
|
|
174
|
+
'settings.hint.costLimit': 'O máximo que uma sessão pode custar. Aos 80 % o devx avisa; no limite ele para a tarefa e pergunta antes de gastar mais.',
|
|
175
|
+
'cost.title': 'limite de custo',
|
|
176
|
+
'cost.warn': '{spent} gastos: 80 % do limite de {limit} desta sessão',
|
|
177
|
+
'cost.stopped': 'Limite de custo de {limit} atingido: a tarefa foi interrompida',
|
|
178
|
+
'cost.reached': 'Esta sessão gastou {spent} do limite de {limit}. Gastar mais?',
|
|
179
|
+
'cost.raise': 'Continuar eleva o limite desta sessão para {limit}.',
|
|
180
|
+
'cost.continue': 'Sim, continuar',
|
|
181
|
+
'cost.cancel': 'Não, agora não',
|
|
182
|
+
'cost.cancelled': 'Nada foi enviado. Sua mensagem voltou para a linha de entrada.',
|
|
183
|
+
// ── /copy and /rename
|
|
184
|
+
'copy.none': 'Ainda não há resposta para copiar.',
|
|
185
|
+
'copy.done': 'Última resposta copiada ({n} caracteres)',
|
|
186
|
+
'copy.failed': 'Não foi possível acessar a área de transferência (sem wl-copy, xclip, xsel, e a resposta é longa demais para o terminal).',
|
|
187
|
+
'rename.done': 'Chat renomeado: {name}',
|
|
188
|
+
'rename.usage': 'Uso: /rename <nome>. Sem nome, a IA nomeia o chat de novo quando houver uma primeira resposta.',
|
|
189
|
+
'rename.failed': 'A IA não achou um nome. Tente de novo ou dê um: /rename <nome>.',
|
|
190
|
+
// ── memory
|
|
191
|
+
'memory.capped': 'A memória é longa: {n} dos fatos mais antigos não vão ao modelo (só os novos cabem). Remova os antigos de .devx/memory.md.',
|
|
192
|
+
'mcp.removeUsage': 'Uso: /mcp remove <nome>',
|
|
193
|
+
'mcp.removeNotFound': '«{name}» não está em ~/.devx/mcp.json. Um servidor de outro arquivo (o projeto, ~/.devxrc.json) precisa ser removido à mão desse arquivo.',
|
|
194
|
+
'mcp.removed': 'Servidor «{name}» removido',
|
|
195
|
+
// ── /rewind
|
|
196
|
+
'rewind.title': 'voltar atrás',
|
|
197
|
+
'rewind.count': '{n} mensagens',
|
|
198
|
+
'rewind.current': '(atual: ficar aqui)',
|
|
199
|
+
'rewind.none': 'Ainda não há mensagem sua para a qual voltar.',
|
|
200
|
+
'rewind.later': '{n} depois',
|
|
201
|
+
'rewind.ago.now': 'agora mesmo',
|
|
202
|
+
'rewind.ago.min': 'há {n} min',
|
|
203
|
+
'rewind.ago.hour': 'há {n} h',
|
|
204
|
+
'rewind.ago.day': 'há {n} d',
|
|
205
|
+
'rewind.filesQuestion': 'Devolver também os arquivos ({n}) ao estado de então?',
|
|
206
|
+
'rewind.filesYes': 'Sim, os arquivos também',
|
|
207
|
+
'rewind.filesNo': 'Não, só a conversa',
|
|
208
|
+
'rewind.done': 'De volta à sua mensagem. O que veio depois sumiu, para o modelo também. Edite a mensagem e envie.',
|
|
209
|
+
'rewind.doneImages': 'De volta à sua mensagem (as imagens dela não foram mantidas, anexe de novo). O que veio depois sumiu, para o modelo também.',
|
|
210
|
+
// ── first run and the prompts around it
|
|
211
|
+
'welcome.tagline': 'Um agente de programação com IA para o terminal',
|
|
212
|
+
'welcome.intro': 'Vamos configurar tudo. Leva cerca de um minuto.',
|
|
213
|
+
'welcome.step.language': 'Idioma',
|
|
214
|
+
'welcome.step.provider': 'Provedor',
|
|
215
|
+
'welcome.step.key': 'Chave de API',
|
|
216
|
+
'welcome.step.model': 'Modelo',
|
|
217
|
+
'welcome.keyNote': 'Sua chave fica neste computador, em ~/.devxrc.json.',
|
|
218
|
+
'onboard.language.title': 'idioma',
|
|
219
|
+
'onboard.language.note': 'Você pode mudar depois em /settings.',
|
|
220
|
+
'onboard.provider.title': 'provedor',
|
|
221
|
+
'onboard.provider.placeholder': 'digite para encontrar um provedor',
|
|
222
|
+
'onboard.provider.note': 'O serviço que fornece os modelos. Não está na lista? Escolha Endereço próprio.',
|
|
223
|
+
'onboard.custom': 'Endereço próprio',
|
|
224
|
+
'onboard.customDetail': 'Qualquer endereço compatível com OpenAI',
|
|
225
|
+
'onboard.baseUrl.title': 'endereço',
|
|
226
|
+
'onboard.baseUrl.label': 'URL base da API',
|
|
227
|
+
'onboard.baseUrl.placeholder': 'https://api.example.com/v1',
|
|
228
|
+
'onboard.key.title': 'chave de api',
|
|
229
|
+
'onboard.key.label': 'Cole sua chave de API para {provider}',
|
|
230
|
+
'onboard.key.note': 'O que você digita fica oculto. Esc volta.',
|
|
231
|
+
'onboard.key.useSaved': 'Usar a chave salva',
|
|
232
|
+
'onboard.key.enterNew': 'Inserir uma nova chave',
|
|
233
|
+
'onboard.key.savedTitle': 'há uma chave salva para {provider}',
|
|
234
|
+
'onboard.model.title': 'modelo',
|
|
235
|
+
'onboard.model.placeholder': 'digite para encontrar um modelo',
|
|
236
|
+
'onboard.model.custom': 'Digitar o nome de um modelo',
|
|
237
|
+
'onboard.model.customDetail': 'Qualquer id de modelo',
|
|
238
|
+
'onboard.model.label': 'Nome do modelo (por exemplo gpt-4o)',
|
|
239
|
+
'onboard.model.fetching': 'Buscando a lista de modelos...',
|
|
240
|
+
'onboard.model.manual': 'Não foi possível obter a lista de modelos, digite o nome do modelo.',
|
|
241
|
+
'onboard.model.context': 'contexto de {n}',
|
|
242
|
+
'onboard.model.anthropic': 'formato Anthropic',
|
|
243
|
+
'onboard.back': 'Voltar',
|
|
244
|
+
'onboard.back.detail': 'Manter o que está definido',
|
|
245
|
+
'onboard.done': 'Pronto. Suas escolhas estão salvas em ~/.devxrc.json.',
|
|
246
|
+
'finder.placeholder': 'digite para filtrar',
|
|
247
|
+
'finder.empty': 'Nada encontrado',
|
|
248
|
+
'finder.hint.filter': 'filtrar',
|
|
249
|
+
'picker.hint.move': 'mover',
|
|
250
|
+
'picker.hint.select': 'escolher',
|
|
251
|
+
'picker.hint.cancel': 'cancelar',
|
|
252
|
+
'picker.hint.confirm': 'confirmar',
|
|
253
|
+
'welcome.step.theme': 'Tema',
|
|
254
|
+
'onboard.theme.title': 'tema',
|
|
255
|
+
'onboard.theme.note': 'As cores da interface. Você pode mudá-las a qualquer momento com /theme.',
|
|
256
|
+
'resume.title': 'retomar',
|
|
257
|
+
'resume.placeholder': 'digite para filtrar sessões',
|
|
258
|
+
'resume.msgs': '{n} msgs',
|
|
259
|
+
'sessions.deleteTitle': 'excluir sessões',
|
|
260
|
+
'sessions.deleteAll': 'Excluir todas as {n} sessões',
|
|
261
|
+
'commands.title': 'comandos',
|
|
262
|
+
'commands.placeholder': 'digite para encontrar um comando',
|
|
263
|
+
'compact.done': 'Contexto compactado, resumo mantido',
|
|
264
|
+
'compact.summary': 'o que o modelo escreveu',
|
|
265
|
+
};
|