autohand-cli 0.7.9 → 0.7.10
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 +19 -0
- package/dist/{AutomodeManager-YVCJXOMQ.js → AutomodeManager-NGRAO2MH.js} +35 -8
- package/dist/{AutomodeManager-HV6M7EAX.cjs → AutomodeManager-ZKQMBM4T.cjs} +35 -8
- package/dist/{CommunitySkillsCache-YWDFZBKP.js → CommunitySkillsCache-ILWHWE5P.js} +2 -2
- package/dist/CommunitySkillsCache-KHC6RUJW.cjs +7 -0
- package/dist/MemoryManager-6ZT7IDO5.cjs +7 -0
- package/dist/MemoryManager-AJGS5AKB.js +7 -0
- package/dist/PermissionManager-HG6W2DGU.cjs +10 -0
- package/dist/{PermissionManager-WYP5JPCQ.js → PermissionManager-U5OMGR3L.js} +3 -3
- package/dist/SessionManager-BJ2G6VV4.cjs +9 -0
- package/dist/{SessionManager-SFBDIBGA.js → SessionManager-ENPGYK5J.js} +2 -2
- package/dist/SkillsRegistry-6ZFOCT25.cjs +8 -0
- package/dist/{SkillsRegistry-E437FFJV.js → SkillsRegistry-C2SHOZ5D.js} +2 -2
- package/dist/about-RGUM5QQ4.cjs +11 -0
- package/dist/about-VDR3SIHS.js +11 -0
- package/dist/add-dir-3BMVJ5H3.cjs +9 -0
- package/dist/{add-dir-PNU7AGKO.js → add-dir-RP2BL3JW.js} +2 -1
- package/dist/agents-JQ2PHCQB.js +10 -0
- package/dist/agents-RGSZ2BM3.cjs +10 -0
- package/dist/agents-new-LSJN2L2T.cjs +13 -0
- package/dist/agents-new-MZUEVKSK.js +13 -0
- package/dist/automode-DP3BMYJB.cjs +9 -0
- package/dist/{automode-QCRJSBRT.js → automode-XOF3U3OB.js} +2 -1
- package/dist/{chunk-A5KU3JZW.cjs → chunk-34OGUMRO.cjs} +9 -5
- package/dist/{chunk-NTFNUTY2.js → chunk-3652ROFD.js} +2 -2
- package/dist/{chunk-KNLBEUAV.cjs → chunk-3DQSBW4B.cjs} +10 -6
- package/dist/{chunk-32R47CAQ.cjs → chunk-3S4DEIJP.cjs} +2 -2
- package/dist/{chunk-DRXFJR7F.cjs → chunk-3UNX56GC.cjs} +17 -16
- package/dist/chunk-46WX5IO2.cjs +499 -0
- package/dist/{chunk-IYZBLUEJ.js → chunk-4ULBAYME.js} +8 -6
- package/dist/{chunk-JRV4SOJU.cjs → chunk-5BQ57AZC.cjs} +9 -9
- package/dist/{chunk-7WKEDH3E.cjs → chunk-5FZM7KLB.cjs} +13 -10
- package/dist/{chunk-FN5S5OE7.cjs → chunk-5NZA4UB4.cjs} +3 -3
- package/dist/{chunk-PFS5ZOCO.js → chunk-5Q3W4DEU.js} +18 -10
- package/dist/{chunk-VMMGT42E.cjs → chunk-65GTO4QM.cjs} +7 -3
- package/dist/{chunk-CXZEPTRI.js → chunk-6P3K4YUW.js} +6 -2
- package/dist/chunk-73XIKTZL.js +124 -0
- package/dist/{chunk-P6EGMTK4.js → chunk-7QNW24ZT.js} +8 -4
- package/dist/{chunk-XT4OSHSB.cjs → chunk-AEYOIPHD.cjs} +6 -2
- package/dist/{chunk-KXNAGJE6.cjs → chunk-ANUQFV43.cjs} +6 -6
- package/dist/chunk-ATR3RORT.js +499 -0
- package/dist/{chunk-XOSFZHSS.js → chunk-B72CC4O6.js} +2 -2
- package/dist/{chunk-TAZJSKFD.js → chunk-BBIKQW66.js} +9 -5
- package/dist/{chunk-FFA4LDAO.cjs → chunk-BDIZGBDA.cjs} +8 -3
- package/dist/{chunk-YDJA5ETO.js → chunk-BG4OQUKP.js} +1 -1
- package/dist/{chunk-3DVEGFBZ.js → chunk-BODVOW7B.js} +64 -13
- package/dist/{chunk-HUA44A35.cjs → chunk-BZ73ZQTE.cjs} +17 -11
- package/dist/{chunk-6DSJ7XST.cjs → chunk-C22G4UE4.cjs} +13 -10
- package/dist/{chunk-T7HQBZZB.cjs → chunk-C2E3GJEE.cjs} +12 -9
- package/dist/{chunk-UP6YRP44.js → chunk-C5SVIQG3.js} +10 -5
- package/dist/{chunk-7GJR65DQ.js → chunk-CUBYCLNL.js} +2 -1
- package/dist/{chunk-4YQ2OJAL.js → chunk-D2XFTCRP.js} +1 -1
- package/dist/{chunk-R5PZPF55.js → chunk-DEAEO7RI.js} +1 -1
- package/dist/chunk-DMPVI3YK.cjs +400 -0
- package/dist/{chunk-C26EN22G.cjs → chunk-DUDDZRCS.cjs} +9 -5
- package/dist/{chunk-WT367RVU.js → chunk-E7YL3AHT.js} +15 -9
- package/dist/{chunk-5UC3VAJ2.cjs → chunk-EAOEAQGF.cjs} +2 -1
- package/dist/{chunk-CHVXUA3O.cjs → chunk-EV53SLSB.cjs} +4 -4
- package/dist/{chunk-PVSYZXS7.js → chunk-F3EIOVSQ.js} +11 -10
- package/dist/{chunk-VQDWNDP5.js → chunk-GD4AFYJ3.js} +1 -1
- package/dist/{chunk-AQNY2M6Q.cjs → chunk-GIZL57FE.cjs} +3 -1
- package/dist/{chunk-I4HVBWYF.js → chunk-GLAE5K5W.js} +7 -2
- package/dist/{chunk-4AMTDSQ3.cjs → chunk-HDSEJMWI.cjs} +6 -3
- package/dist/chunk-HLFZPN65.js +94 -0
- package/dist/{chunk-ZWS3KSMK.js → chunk-HQQ4NKER.js} +5 -2
- package/dist/{chunk-WBDPILKI.cjs → chunk-HVOBMOZ2.cjs} +6 -2
- package/dist/{chunk-RDGYHJ52.js → chunk-IPI3JXKP.js} +9 -6
- package/dist/{chunk-OO7EKEJH.cjs → chunk-IXFOH4OC.cjs} +17 -14
- package/dist/chunk-JS7IPR7P.js +249 -0
- package/dist/{chunk-CPO5KEQS.cjs → chunk-KC5FPUOF.cjs} +2 -2
- package/dist/{chunk-TUO5SZRD.cjs → chunk-L42HTMMR.cjs} +2 -2
- package/dist/chunk-LGGZQTLM.cjs +209 -0
- package/dist/chunk-LOXOD4IS.cjs +8630 -0
- package/dist/{chunk-LJCSSR5V.cjs → chunk-MNCWB5F7.cjs} +5 -5
- package/dist/{chunk-BTVNRLSE.js → chunk-MYNHJHDZ.js} +1 -1
- package/dist/{chunk-O3EX3SAD.cjs → chunk-N4ZSG6JJ.cjs} +2 -2
- package/dist/chunk-NF7RIHJK.js +45 -0
- package/dist/{chunk-KJAZ4YAR.cjs → chunk-NGBN2NGH.cjs} +76 -25
- package/dist/{chunk-MRDZHNCF.cjs → chunk-NRORJRD4.cjs} +4 -4
- package/dist/{chunk-OTS4YFSZ.cjs → chunk-OKABWSWA.cjs} +7 -3
- package/dist/{chunk-4BZ65NIH.js → chunk-OLG7LZBD.js} +1 -1
- package/dist/{chunk-KZ7VMQTC.js → chunk-OMEH2EVE.js} +5 -1
- package/dist/{chunk-LCBOOA7S.js → chunk-P5VDZ6PV.js} +1 -1
- package/dist/{chunk-V5MTBGM4.cjs → chunk-PA2H2263.cjs} +6 -2
- package/dist/chunk-PGRH5Q77.cjs +249 -0
- package/dist/{chunk-CMNQAF6C.js → chunk-PM62ZYXA.js} +12 -9
- package/dist/chunk-PNSRJT46.js +380 -0
- package/dist/{chunk-UL5T2XIY.cjs → chunk-PSED4Z4X.cjs} +13 -11
- package/dist/{chunk-PGH3MHPP.js → chunk-PWLLLJHU.js} +3 -1
- package/dist/{chunk-DOTAX65F.js → chunk-PYLR4J2D.js} +8 -4
- package/dist/{chunk-3SDEZTZD.js → chunk-QC6IUDDJ.js} +1 -1
- package/dist/{chunk-WJICM4SK.cjs → chunk-QM7HZCQW.cjs} +11 -6
- package/dist/chunk-QRQ5EX7I.cjs +380 -0
- package/dist/{chunk-RX4KPL6H.js → chunk-QU64XI5X.js} +9 -6
- package/dist/{chunk-FSTLJIR5.cjs → chunk-R7SDL3DJ.cjs} +16 -13
- package/dist/{chunk-LY5VN3B3.cjs → chunk-RJP3SZ7Q.cjs} +41 -253
- package/dist/{chunk-KS45GREN.js → chunk-RJXNNIFW.js} +7 -4
- package/dist/{chunk-LYMZDJX5.cjs → chunk-S5G7OEN2.cjs} +26 -18
- package/dist/{chunk-3DGR4GNN.cjs → chunk-SA4JOV4F.cjs} +10 -8
- package/dist/chunk-SAG6IY5Z.cjs +94 -0
- package/dist/{chunk-WCN5WDOI.cjs → chunk-TSY7JHIV.cjs} +2 -2
- package/dist/chunk-U23U52ZN.cjs +124 -0
- package/dist/chunk-UET7BDX2.js +8630 -0
- package/dist/{chunk-J7VV7JAB.js → chunk-UM4QEO36.js} +6 -4
- package/dist/{chunk-NCLCL7JK.js → chunk-WD5ZF6HE.js} +1 -1
- package/dist/{chunk-HF65HHDU.cjs → chunk-WH5RW7DV.cjs} +24 -22
- package/dist/{chunk-GSOEIEOU.js → chunk-WJ276BIP.js} +5 -1
- package/dist/{chunk-OXJCLU3X.js → chunk-WLTVF77A.js} +1 -1
- package/dist/{chunk-WGO4ACS7.cjs → chunk-WOGJXDBU.cjs} +3 -3
- package/dist/{chunk-QJ53OSGF.js → chunk-WRJLBHWB.js} +6 -2
- package/dist/{chunk-LKIKNRUP.js → chunk-WYLFLZ42.js} +8 -5
- package/dist/{chunk-HWDP4HQO.cjs → chunk-XL77XYI2.cjs} +4 -4
- package/dist/{chunk-QAJM6VG5.js → chunk-XLI7SHCH.js} +2 -2
- package/dist/chunk-Y27LG4BQ.cjs +45 -0
- package/dist/chunk-Y6OWFIUF.js +209 -0
- package/dist/chunk-YKSSNFDZ.js +400 -0
- package/dist/{chunk-VRI7EXV6.js → chunk-YMDLUTF2.js} +5 -1
- package/dist/{chunk-J2RUI7GJ.js → chunk-YVY27BJT.js} +5 -3
- package/dist/{chunk-K6CZ2AGI.js → chunk-ZBIBLOZL.js} +35 -247
- package/dist/completion-HVSWU5GR.cjs +13 -0
- package/dist/completion-WJ2MVNDH.js +13 -0
- package/dist/constants-RBQTR32A.cjs +20 -0
- package/dist/{constants-OFIAR4E5.js → constants-V6J54N3X.js} +1 -1
- package/dist/export-NN7F5ANA.js +11 -0
- package/dist/export-UPS3AK2P.cjs +11 -0
- package/dist/feedback-ARI7CLVQ.js +14 -0
- package/dist/feedback-OZTPYHKJ.cjs +14 -0
- package/dist/help-4674IV4D.cjs +58 -0
- package/dist/help-ENG5KV2M.js +58 -0
- package/dist/history-2KUM6GN4.cjs +13 -0
- package/dist/history-RZFT34Q7.js +13 -0
- package/dist/hooks-7QSUBHBM.cjs +12 -0
- package/dist/hooks-S4MD4QSR.js +12 -0
- package/dist/i18n-6NKENUIV.js +32 -0
- package/dist/i18n-MXQXQOVE.cjs +32 -0
- package/dist/ide-5STDV43A.cjs +11 -0
- package/dist/ide-W2NYXOWQ.js +11 -0
- package/dist/index.cjs +15320 -12906
- package/dist/index.js +15465 -13051
- package/dist/init-FG5KEJCZ.cjs +9 -0
- package/dist/init-TV4MJDYK.js +9 -0
- package/dist/language-52Q7CSAY.cjs +16 -0
- package/dist/language-FXFDGOBF.js +16 -0
- package/dist/localProjectPermissions-2EATUDZM.cjs +17 -0
- package/dist/{localProjectPermissions-FD5AK5FB.js → localProjectPermissions-WQYMGI42.js} +2 -2
- package/dist/login-AN42IOBK.js +18 -0
- package/dist/login-I65V4TGU.cjs +18 -0
- package/dist/logout-KK5UWGNG.js +16 -0
- package/dist/logout-VYYNWBHZ.cjs +16 -0
- package/dist/mcp-4SKTDECJ.js +15 -0
- package/dist/mcp-AGWPTMAX.cjs +15 -0
- package/dist/mcp-install-3NN2HAYR.cjs +473 -0
- package/dist/mcp-install-KTV52DQK.js +473 -0
- package/dist/memory-LG4K6XV6.cjs +9 -0
- package/dist/{memory-4GSP7NKV.js → memory-LRDK2SYC.js} +2 -1
- package/dist/model-P5D7ATE7.cjs +9 -0
- package/dist/{model-HKEFSH5E.js → model-WBFJIGUN.js} +2 -1
- package/dist/{new-EEZC4XXV.js → new-5A7RQEKI.js} +2 -1
- package/dist/new-EAATWI2G.cjs +9 -0
- package/dist/permissions-5URK6C44.js +12 -0
- package/dist/permissions-CJUDVG63.cjs +12 -0
- package/dist/quit-A33JHDG7.cjs +9 -0
- package/dist/quit-IYBLN3DB.js +9 -0
- package/dist/resume-OPSJTCH7.cjs +12 -0
- package/dist/resume-TOWEEN5D.js +12 -0
- package/dist/search-GOLIE5BA.js +14 -0
- package/dist/search-H42HGUK5.cjs +14 -0
- package/dist/{sessions-4KXIT76T.js → sessions-B5NENDKY.js} +2 -1
- package/dist/sessions-YHAVEMWY.cjs +9 -0
- package/dist/share-2JD2AKKX.cjs +13 -0
- package/dist/share-MYGDOTQE.js +13 -0
- package/dist/{skills-PB4HXV4R.js → skills-ICEQ2TNC.js} +2 -1
- package/dist/skills-LFVNZOMF.cjs +13 -0
- package/dist/{skills-install-UBBNXWD5.js → skills-install-6RN7FVCP.js} +9 -8
- package/dist/{skills-install-7SFS24HY.cjs → skills-install-LU6GA2WF.cjs} +14 -13
- package/dist/skills-new-5BM5PDFX.cjs +14 -0
- package/dist/skills-new-KWBWOX74.js +14 -0
- package/dist/status-M3XHJELG.cjs +10 -0
- package/dist/status-ZQDUYMKQ.js +10 -0
- package/dist/sync-6M3WRKMH.cjs +39 -0
- package/dist/sync-73D2MP65.cjs +16 -0
- package/dist/{sync-LYKDHRFM.js → sync-EXYX7HXW.js} +2 -2
- package/dist/sync-LL6M67CN.js +16 -0
- package/dist/theme-IFEI2IBJ.cjs +16 -0
- package/dist/theme-U3SKEULY.js +16 -0
- package/dist/ui/questionModal.cjs +28 -0
- package/dist/ui/questionModal.d.cts +11 -0
- package/dist/ui/questionModal.d.ts +11 -0
- package/dist/ui/questionModal.js +28 -0
- package/dist/undo-4DS67OAW.cjs +9 -0
- package/dist/undo-YMALVAPN.js +9 -0
- package/package.json +2 -1
- package/dist/CommunitySkillsCache-N2RWBCY2.cjs +0 -7
- package/dist/MemoryManager-J7APSLZ7.js +0 -7
- package/dist/MemoryManager-RLLYVIDY.cjs +0 -7
- package/dist/PermissionManager-ISI5OAJK.cjs +0 -10
- package/dist/SessionManager-7MF76Q3Q.cjs +0 -9
- package/dist/SkillsRegistry-UTK2YT4M.cjs +0 -8
- package/dist/add-dir-OMK3Y4DM.cjs +0 -8
- package/dist/agents-N2ZB4O2A.cjs +0 -9
- package/dist/agents-ZMT7HBRT.js +0 -9
- package/dist/agents-new-3EWS2NR3.cjs +0 -11
- package/dist/agents-new-TCGUYK5I.js +0 -11
- package/dist/automode-BRHUHGXU.cjs +0 -8
- package/dist/chunk-6SM6N7DJ.js +0 -2828
- package/dist/chunk-BEIG7V7Q.cjs +0 -51
- package/dist/chunk-L5QWMGLV.cjs +0 -2828
- package/dist/chunk-Z3Q2AFDS.js +0 -51
- package/dist/completion-NCSTSKTL.cjs +0 -11
- package/dist/completion-NTZERPAZ.js +0 -11
- package/dist/constants-B2X7KDIH.cjs +0 -20
- package/dist/export-5AJNVX4O.cjs +0 -9
- package/dist/export-ZQHTLV4W.js +0 -9
- package/dist/feedback-F7BMGSV6.cjs +0 -12
- package/dist/feedback-NL7CWTRY.js +0 -12
- package/dist/help-PKC6QCNG.js +0 -10
- package/dist/help-UEELQRHP.cjs +0 -10
- package/dist/hooks-AX5VPCZ3.cjs +0 -10
- package/dist/hooks-V22HVLQT.js +0 -10
- package/dist/init-DML7AOII.js +0 -8
- package/dist/init-SLLSDDJN.cjs +0 -8
- package/dist/language-IEKARNQH.js +0 -13
- package/dist/language-ULQCKXAD.cjs +0 -13
- package/dist/localProjectPermissions-7FI3XF4K.cjs +0 -17
- package/dist/login-PD3DFJLM.js +0 -15
- package/dist/login-VHGT4YKT.cjs +0 -15
- package/dist/logout-2QXNFGDT.js +0 -13
- package/dist/logout-A4SMKEFO.cjs +0 -13
- package/dist/memory-CFNC7RJH.cjs +0 -8
- package/dist/model-TKVEJ5BC.cjs +0 -8
- package/dist/new-EB2MBQXA.cjs +0 -8
- package/dist/permissions-S7433NQJ.js +0 -10
- package/dist/permissions-YZ6WCDBL.cjs +0 -10
- package/dist/quit-2RYFGIJP.cjs +0 -8
- package/dist/quit-RSYIERO5.js +0 -8
- package/dist/resume-54ERVSFM.cjs +0 -10
- package/dist/resume-YJ5CVKAP.js +0 -10
- package/dist/search-4TEQMUPU.js +0 -11
- package/dist/search-QGLS4SV7.cjs +0 -11
- package/dist/sessions-7RTCPVNE.cjs +0 -8
- package/dist/share-2B2T3AUU.cjs +0 -11
- package/dist/share-SZMXZIA3.js +0 -11
- package/dist/skills-HVQNCTGK.cjs +0 -12
- package/dist/skills-new-5FSDAJWE.js +0 -12
- package/dist/skills-new-IOTZYE6F.cjs +0 -12
- package/dist/status-AGPSKXSW.js +0 -9
- package/dist/status-WOINF556.cjs +0 -9
- package/dist/sync-64MZDWGG.js +0 -14
- package/dist/sync-F5ECJW25.cjs +0 -39
- package/dist/sync-W5UR7BEP.cjs +0 -14
- package/dist/theme-CWG3ZLHB.cjs +0 -13
- package/dist/theme-HQKV7YAP.js +0 -13
- package/dist/undo-2WR2ZIEC.cjs +0 -8
- package/dist/undo-7QJBXARS.js +0 -8
package/dist/chunk-L5QWMGLV.cjs
DELETED
|
@@ -1,2828 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/i18n/localeDetector.ts
|
|
2
|
-
var _child_process = require('child_process');
|
|
3
|
-
var SUPPORTED_LOCALES = [
|
|
4
|
-
"en",
|
|
5
|
-
"zh-cn",
|
|
6
|
-
"zh-tw",
|
|
7
|
-
"fr",
|
|
8
|
-
"de",
|
|
9
|
-
"it",
|
|
10
|
-
"es",
|
|
11
|
-
"ja",
|
|
12
|
-
"ko",
|
|
13
|
-
"ru",
|
|
14
|
-
"pt-br",
|
|
15
|
-
"tr",
|
|
16
|
-
"pl",
|
|
17
|
-
"cs",
|
|
18
|
-
"hu",
|
|
19
|
-
"hi"
|
|
20
|
-
];
|
|
21
|
-
var LANGUAGE_DISPLAY_NAMES = {
|
|
22
|
-
en: "English",
|
|
23
|
-
"zh-cn": "\u7B80\u4F53\u4E2D\u6587 (Simplified Chinese)",
|
|
24
|
-
"zh-tw": "\u7E41\u9AD4\u4E2D\u6587 (Traditional Chinese)",
|
|
25
|
-
fr: "Fran\xE7ais (French)",
|
|
26
|
-
de: "Deutsch (German)",
|
|
27
|
-
it: "Italiano (Italian)",
|
|
28
|
-
es: "Espa\xF1ol (Spanish)",
|
|
29
|
-
ja: "\u65E5\u672C\u8A9E (Japanese)",
|
|
30
|
-
ko: "\uD55C\uAD6D\uC5B4 (Korean)",
|
|
31
|
-
ru: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439 (Russian)",
|
|
32
|
-
"pt-br": "Portugu\xEAs (Brazilian Portuguese)",
|
|
33
|
-
tr: "T\xFCrk\xE7e (Turkish)",
|
|
34
|
-
pl: "Polski (Polish)",
|
|
35
|
-
cs: "\u010Ce\u0161tina (Czech)",
|
|
36
|
-
hu: "Magyar (Hungarian)",
|
|
37
|
-
hi: "\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)"
|
|
38
|
-
};
|
|
39
|
-
function detectOSLocale() {
|
|
40
|
-
const platform = process.platform;
|
|
41
|
-
const envLocale = process.env.LC_ALL || process.env.LC_MESSAGES || process.env.LANG || process.env.LANGUAGE;
|
|
42
|
-
if (envLocale) {
|
|
43
|
-
return envLocale;
|
|
44
|
-
}
|
|
45
|
-
try {
|
|
46
|
-
if (platform === "darwin") {
|
|
47
|
-
const result = _child_process.execSync.call(void 0, "defaults read -g AppleLocale", {
|
|
48
|
-
encoding: "utf8",
|
|
49
|
-
stdio: ["pipe", "pipe", "ignore"]
|
|
50
|
-
}).trim();
|
|
51
|
-
return result;
|
|
52
|
-
}
|
|
53
|
-
if (platform === "win32") {
|
|
54
|
-
const result = _child_process.execSync.call(void 0, 'powershell -NoProfile -Command "(Get-Culture).Name"', {
|
|
55
|
-
encoding: "utf8",
|
|
56
|
-
stdio: ["pipe", "pipe", "ignore"]
|
|
57
|
-
}).trim();
|
|
58
|
-
return result;
|
|
59
|
-
}
|
|
60
|
-
if (platform === "linux") {
|
|
61
|
-
try {
|
|
62
|
-
const result = _child_process.execSync.call(void 0, "localectl status", {
|
|
63
|
-
encoding: "utf8",
|
|
64
|
-
stdio: ["pipe", "pipe", "ignore"]
|
|
65
|
-
});
|
|
66
|
-
const match = result.match(/LANG=([^\n]+)/);
|
|
67
|
-
if (match) return match[1];
|
|
68
|
-
} catch (e) {
|
|
69
|
-
try {
|
|
70
|
-
const result = _child_process.execSync.call(void 0, "locale", {
|
|
71
|
-
encoding: "utf8",
|
|
72
|
-
stdio: ["pipe", "pipe", "ignore"]
|
|
73
|
-
});
|
|
74
|
-
const match = result.match(/LANG="?([^"\n]+)"?/);
|
|
75
|
-
if (match) return match[1];
|
|
76
|
-
} catch (e2) {
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
} catch (e3) {
|
|
81
|
-
}
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
function normalizeLocale(rawLocale) {
|
|
85
|
-
let locale = rawLocale.split(".")[0].toLowerCase();
|
|
86
|
-
locale = locale.replace("_", "-");
|
|
87
|
-
const mappings = {
|
|
88
|
-
"zh-hans": "zh-cn",
|
|
89
|
-
"zh-hant": "zh-tw",
|
|
90
|
-
zh: "zh-cn",
|
|
91
|
-
pt: "pt-br",
|
|
92
|
-
nb: "en",
|
|
93
|
-
// Norwegian Bokmal -> fallback
|
|
94
|
-
nn: "en"
|
|
95
|
-
// Norwegian Nynorsk -> fallback
|
|
96
|
-
};
|
|
97
|
-
if (SUPPORTED_LOCALES.includes(locale)) {
|
|
98
|
-
return locale;
|
|
99
|
-
}
|
|
100
|
-
if (mappings[locale]) {
|
|
101
|
-
return mappings[locale];
|
|
102
|
-
}
|
|
103
|
-
const baseLang = locale.split("-")[0];
|
|
104
|
-
if (SUPPORTED_LOCALES.includes(baseLang)) {
|
|
105
|
-
return baseLang;
|
|
106
|
-
}
|
|
107
|
-
if (baseLang === "zh") {
|
|
108
|
-
return "zh-cn";
|
|
109
|
-
}
|
|
110
|
-
return "en";
|
|
111
|
-
}
|
|
112
|
-
function detectLocale(options) {
|
|
113
|
-
if (_optionalChain([options, 'optionalAccess', _ => _.cliOverride])) {
|
|
114
|
-
const normalized = normalizeLocale(options.cliOverride);
|
|
115
|
-
return { locale: normalized, source: "cli", rawLocale: options.cliOverride };
|
|
116
|
-
}
|
|
117
|
-
if (_optionalChain([options, 'optionalAccess', _2 => _2.configLocale])) {
|
|
118
|
-
const normalized = normalizeLocale(options.configLocale);
|
|
119
|
-
return { locale: normalized, source: "config", rawLocale: options.configLocale };
|
|
120
|
-
}
|
|
121
|
-
const envLocale = process.env.AUTOHAND_LOCALE || process.env.LC_ALL || process.env.LC_MESSAGES || process.env.LANG;
|
|
122
|
-
if (envLocale) {
|
|
123
|
-
const normalized = normalizeLocale(envLocale);
|
|
124
|
-
return { locale: normalized, source: "env", rawLocale: envLocale };
|
|
125
|
-
}
|
|
126
|
-
const osLocale = detectOSLocale();
|
|
127
|
-
if (osLocale) {
|
|
128
|
-
const normalized = normalizeLocale(osLocale);
|
|
129
|
-
return { locale: normalized, source: "os", rawLocale: osLocale };
|
|
130
|
-
}
|
|
131
|
-
return { locale: "en", source: "fallback" };
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// src/i18n/index.ts
|
|
135
|
-
var _i18next = require('i18next'); var _i18next2 = _interopRequireDefault(_i18next);
|
|
136
|
-
|
|
137
|
-
// src/i18n/locales/en.json
|
|
138
|
-
var en_default = {
|
|
139
|
-
common: {
|
|
140
|
-
error: "Error",
|
|
141
|
-
warning: "Warning",
|
|
142
|
-
success: "Success",
|
|
143
|
-
failed: "Failed",
|
|
144
|
-
cancelled: "Cancelled",
|
|
145
|
-
continue: "Continue",
|
|
146
|
-
yes: "Yes",
|
|
147
|
-
no: "No",
|
|
148
|
-
done: "Done",
|
|
149
|
-
loading: "Loading...",
|
|
150
|
-
pressEnter: "Press Enter to continue...",
|
|
151
|
-
pressEscToCancel: "Press Esc to cancel",
|
|
152
|
-
or: "or",
|
|
153
|
-
and: "and",
|
|
154
|
-
unknown: "Unknown",
|
|
155
|
-
none: "None",
|
|
156
|
-
default: "Default",
|
|
157
|
-
current: "current",
|
|
158
|
-
required: "required",
|
|
159
|
-
optional: "optional",
|
|
160
|
-
enabled: "Enabled",
|
|
161
|
-
disabled: "Disabled",
|
|
162
|
-
on: "On",
|
|
163
|
-
off: "Off"
|
|
164
|
-
},
|
|
165
|
-
cli: {
|
|
166
|
-
description: "Autonomous LLM-powered coding agent CLI",
|
|
167
|
-
options: {
|
|
168
|
-
prompt: "Run a single instruction in command mode",
|
|
169
|
-
path: "Workspace path to operate in",
|
|
170
|
-
yes: "Auto-confirm risky actions",
|
|
171
|
-
dryRun: "Preview actions without applying mutations",
|
|
172
|
-
debug: "Enable debug output (verbose logging)",
|
|
173
|
-
model: "Override the configured LLM model",
|
|
174
|
-
config: "Path to config file (default ~/.autohand/config.json)",
|
|
175
|
-
temperature: "Sampling temperature",
|
|
176
|
-
displayLanguage: "Set display language (e.g., en, zh-cn, fr, de)",
|
|
177
|
-
autoCommit: "Auto-commit with LLM-generated message",
|
|
178
|
-
unrestricted: "Run without any approval prompts",
|
|
179
|
-
restricted: "Deny all dangerous operations automatically",
|
|
180
|
-
autoSkill: "Auto-generate skills based on project analysis",
|
|
181
|
-
skillInstall: "Install a community skill",
|
|
182
|
-
project: "Install skill to project level",
|
|
183
|
-
permissions: "Display current permission settings and exit",
|
|
184
|
-
login: "Sign in to your Autohand account",
|
|
185
|
-
logout: "Sign out of your Autohand account",
|
|
186
|
-
syncSettings: "Enable/disable settings sync",
|
|
187
|
-
patch: "Generate git patch without applying changes",
|
|
188
|
-
output: "Output file for patch (default: stdout)",
|
|
189
|
-
autoMode: "Start autonomous development loop",
|
|
190
|
-
maxIterations: "Max auto-mode iterations (default: 50)",
|
|
191
|
-
completionPromise: "Completion marker text (default: DONE)",
|
|
192
|
-
noWorktree: "Disable git worktree isolation in auto-mode",
|
|
193
|
-
checkpointInterval: "Git commit every N iterations (default: 5)",
|
|
194
|
-
maxRuntime: "Max runtime in minutes (default: 120)",
|
|
195
|
-
maxCost: "Max API cost in dollars (default: 10)",
|
|
196
|
-
setup: "Run the setup wizard",
|
|
197
|
-
addDir: "Add additional directories to workspace scope"
|
|
198
|
-
}
|
|
199
|
-
},
|
|
200
|
-
welcome: {
|
|
201
|
-
banner: "Welcome to Autohand!",
|
|
202
|
-
subtitle: "Your super fast AI coding agent",
|
|
203
|
-
version: "v{{version}}",
|
|
204
|
-
updateAvailable: "Update available: {{current}} -> {{latest}}. Run 'npm i -g autohand' to update.",
|
|
205
|
-
loggedInAs: "Logged in as {{email}}",
|
|
206
|
-
notLoggedIn: "Not logged in",
|
|
207
|
-
modelLine: "model: {{model}}",
|
|
208
|
-
directoryLine: "directory: {{directory}}",
|
|
209
|
-
tips: {
|
|
210
|
-
title: "To get started, describe a task or try one of these commands:",
|
|
211
|
-
init: "/init - create an AGENTS.md file with instructions for Autohand",
|
|
212
|
-
help: "/help - show all available commands",
|
|
213
|
-
model: "/model - change the AI model",
|
|
214
|
-
language: "/language - change display language"
|
|
215
|
-
},
|
|
216
|
-
shortcuts: {
|
|
217
|
-
title: "Keyboard shortcuts:",
|
|
218
|
-
mention: "@ - mention files for context",
|
|
219
|
-
arrows: "Arrow keys - navigate suggestions",
|
|
220
|
-
tab: "Tab - autocomplete",
|
|
221
|
-
escape: "Esc - cancel current operation",
|
|
222
|
-
ctrlC: "Ctrl+C - exit"
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
commands: {
|
|
226
|
-
help: {
|
|
227
|
-
title: "Available Commands:",
|
|
228
|
-
command: "Command",
|
|
229
|
-
description: "Description",
|
|
230
|
-
tips: {
|
|
231
|
-
title: "Tips:",
|
|
232
|
-
mention: "Type @ to mention files for the AI",
|
|
233
|
-
arrows: "Use arrow keys to navigate file suggestions",
|
|
234
|
-
tab: "Press Tab to autocomplete file paths",
|
|
235
|
-
escape: "Press Esc to cancel current operation"
|
|
236
|
-
},
|
|
237
|
-
docsLink: "For more information, visit {{link}}"
|
|
238
|
-
},
|
|
239
|
-
model: {
|
|
240
|
-
description: "choose what model and reasoning effort to use",
|
|
241
|
-
title: "Model Selection",
|
|
242
|
-
currentModel: "Current model: {{model}}",
|
|
243
|
-
selectPrompt: "Select a model:",
|
|
244
|
-
changed: "Model changed to {{model}}",
|
|
245
|
-
noChange: "No change made."
|
|
246
|
-
},
|
|
247
|
-
theme: {
|
|
248
|
-
description: "change terminal color theme",
|
|
249
|
-
title: "Theme Selection",
|
|
250
|
-
currentTheme: "Current theme: {{theme}}",
|
|
251
|
-
selectPrompt: "Select a theme:",
|
|
252
|
-
changed: "Theme changed to '{{theme}}'",
|
|
253
|
-
noChange: "No change made."
|
|
254
|
-
},
|
|
255
|
-
language: {
|
|
256
|
-
description: "change display language",
|
|
257
|
-
title: "Language Selection",
|
|
258
|
-
currentLanguage: "Current language: {{language}}",
|
|
259
|
-
selectPrompt: "Select a language:",
|
|
260
|
-
changed: "Language changed to {{language}}",
|
|
261
|
-
noChange: "No change made.",
|
|
262
|
-
restartHint: "Some changes may require restarting the CLI to take full effect."
|
|
263
|
-
},
|
|
264
|
-
quit: {
|
|
265
|
-
description: "exit Autohand",
|
|
266
|
-
goodbye: "Goodbye!"
|
|
267
|
-
},
|
|
268
|
-
init: {
|
|
269
|
-
description: "create AGENTS.md file",
|
|
270
|
-
created: "Created AGENTS.md in {{path}}",
|
|
271
|
-
alreadyExists: "AGENTS.md already exists in {{path}}",
|
|
272
|
-
overwritePrompt: "Overwrite existing AGENTS.md?"
|
|
273
|
-
},
|
|
274
|
-
undo: {
|
|
275
|
-
description: "revert the last file mutation",
|
|
276
|
-
success: "Reverted changes to {{file}}",
|
|
277
|
-
noChanges: "No changes to undo.",
|
|
278
|
-
failed: "Failed to undo: {{error}}"
|
|
279
|
-
},
|
|
280
|
-
new: {
|
|
281
|
-
description: "start a new conversation",
|
|
282
|
-
cleared: "Conversation cleared. Starting fresh."
|
|
283
|
-
},
|
|
284
|
-
status: {
|
|
285
|
-
description: "show current status",
|
|
286
|
-
title: "Autohand Status",
|
|
287
|
-
version: "Version",
|
|
288
|
-
sessionId: "Session ID",
|
|
289
|
-
cwd: "Current directory",
|
|
290
|
-
provider: "Provider",
|
|
291
|
-
model: "Model",
|
|
292
|
-
locale: "Language",
|
|
293
|
-
apiStatus: "API Status",
|
|
294
|
-
connected: "Connected",
|
|
295
|
-
disconnected: "Disconnected",
|
|
296
|
-
sessions: "Sessions",
|
|
297
|
-
total: "{{count}} total"
|
|
298
|
-
},
|
|
299
|
-
sessions: {
|
|
300
|
-
description: "list saved sessions",
|
|
301
|
-
title: "Saved Sessions",
|
|
302
|
-
noSessions: "No saved sessions found.",
|
|
303
|
-
selectPrompt: "Select a session to resume:",
|
|
304
|
-
sessionInfo: "{{name}} - {{date}}"
|
|
305
|
-
},
|
|
306
|
-
resume: {
|
|
307
|
-
description: "resume a previous session",
|
|
308
|
-
resuming: "Resuming session {{id}}...",
|
|
309
|
-
notFound: "Session not found: {{id}}",
|
|
310
|
-
failed: "Failed to resume session: {{error}}"
|
|
311
|
-
},
|
|
312
|
-
memory: {
|
|
313
|
-
description: "manage project and user memory",
|
|
314
|
-
title: "Memory Management",
|
|
315
|
-
projectMemory: "Project Memory",
|
|
316
|
-
userMemory: "User Memory",
|
|
317
|
-
noMemory: "No memories stored.",
|
|
318
|
-
addPrompt: "Add a new memory:",
|
|
319
|
-
added: "Memory added.",
|
|
320
|
-
cleared: "Memory cleared."
|
|
321
|
-
},
|
|
322
|
-
permissions: {
|
|
323
|
-
description: "display current permission settings",
|
|
324
|
-
title: "Permission Settings",
|
|
325
|
-
mode: "Mode: {{mode}}",
|
|
326
|
-
allowed: "Allowed actions:",
|
|
327
|
-
denied: "Denied actions:",
|
|
328
|
-
pending: "Pending approval:"
|
|
329
|
-
},
|
|
330
|
-
login: {
|
|
331
|
-
description: "sign in to your Autohand account",
|
|
332
|
-
prompt: "Enter your login code:",
|
|
333
|
-
success: "Successfully logged in as {{email}}",
|
|
334
|
-
failed: "Login failed: {{error}}",
|
|
335
|
-
cancelled: "Login cancelled."
|
|
336
|
-
},
|
|
337
|
-
logout: {
|
|
338
|
-
description: "sign out of your Autohand account",
|
|
339
|
-
confirm: "Log out from {{email}}?",
|
|
340
|
-
success: "Successfully logged out.",
|
|
341
|
-
cancelled: "Logout cancelled."
|
|
342
|
-
},
|
|
343
|
-
sync: {
|
|
344
|
-
description: "manage settings sync",
|
|
345
|
-
enabled: "Settings sync enabled.",
|
|
346
|
-
disabled: "Settings sync disabled.",
|
|
347
|
-
status: "Sync status: {{status}}",
|
|
348
|
-
lastSync: "Last synced: {{date}}"
|
|
349
|
-
},
|
|
350
|
-
feedback: {
|
|
351
|
-
description: "submit feedback about the CLI",
|
|
352
|
-
prompt: "Enter your feedback:",
|
|
353
|
-
success: "Thank you for your feedback!",
|
|
354
|
-
failed: "Failed to submit feedback: {{error}}"
|
|
355
|
-
},
|
|
356
|
-
hooks: {
|
|
357
|
-
description: "manage git hooks",
|
|
358
|
-
title: "Git Hooks",
|
|
359
|
-
installed: "Installed hooks:",
|
|
360
|
-
available: "Available hooks:",
|
|
361
|
-
noHooks: "No hooks configured."
|
|
362
|
-
},
|
|
363
|
-
skills: {
|
|
364
|
-
description: "list and manage skills",
|
|
365
|
-
title: "Skills",
|
|
366
|
-
installed: "Installed skills:",
|
|
367
|
-
available: "Available skills:",
|
|
368
|
-
noSkills: "No skills installed."
|
|
369
|
-
},
|
|
370
|
-
export: {
|
|
371
|
-
description: "export session data",
|
|
372
|
-
success: "Exported to {{path}}",
|
|
373
|
-
failed: "Export failed: {{error}}"
|
|
374
|
-
},
|
|
375
|
-
agents: {
|
|
376
|
-
description: "manage sub-agents",
|
|
377
|
-
title: "Sub-Agents",
|
|
378
|
-
noAgents: "No sub-agents configured."
|
|
379
|
-
},
|
|
380
|
-
automode: {
|
|
381
|
-
description: "manage autonomous mode",
|
|
382
|
-
starting: "Starting auto-mode...",
|
|
383
|
-
stopping: "Stopping auto-mode...",
|
|
384
|
-
iteration: "Iteration {{current}} of {{max}}",
|
|
385
|
-
completed: "Auto-mode completed.",
|
|
386
|
-
aborted: "Auto-mode aborted."
|
|
387
|
-
},
|
|
388
|
-
share: {
|
|
389
|
-
description: "share session",
|
|
390
|
-
generating: "Generating share link...",
|
|
391
|
-
success: "Share link: {{url}}",
|
|
392
|
-
failed: "Failed to generate share link: {{error}}"
|
|
393
|
-
},
|
|
394
|
-
addDir: {
|
|
395
|
-
description: "add directories to workspace scope",
|
|
396
|
-
added: "Added directory: {{path}}",
|
|
397
|
-
alreadyAdded: "Directory already added: {{path}}",
|
|
398
|
-
notFound: "Directory not found: {{path}}"
|
|
399
|
-
}
|
|
400
|
-
},
|
|
401
|
-
setup: {
|
|
402
|
-
welcome: "Welcome to Autohand!",
|
|
403
|
-
subtitle: "Your super fast AI coding agent",
|
|
404
|
-
letsStart: "Let's get you set up in just a few steps.",
|
|
405
|
-
providerSelect: "Which LLM provider would you like to use?",
|
|
406
|
-
apiKeyPrompt: "Enter your {{provider}} API key:",
|
|
407
|
-
apiKeyHelp: "Get your API key at: {{url}}",
|
|
408
|
-
apiKeyHint: "Your API key will be stored locally in ~/.autohand/config.json",
|
|
409
|
-
modelPrompt: "Enter model ID (or press Enter for default):",
|
|
410
|
-
modelDefault: "Default: {{model}}",
|
|
411
|
-
testingConnection: "Testing connection...",
|
|
412
|
-
connectionSuccess: "Connection successful!",
|
|
413
|
-
connectionFailed: "Connection failed: {{error}}",
|
|
414
|
-
telemetry: {
|
|
415
|
-
title: "Help us improve Autohand",
|
|
416
|
-
description: "We collect anonymous usage data to understand how Autohand is used.",
|
|
417
|
-
whatWeCollect: "What we collect:",
|
|
418
|
-
collectItem1: "Command usage (which features are popular)",
|
|
419
|
-
collectItem2: "Error rates (to fix bugs faster)",
|
|
420
|
-
collectItem3: "Performance metrics (to speed things up)",
|
|
421
|
-
whatWeNeverCollect: "What we never collect:",
|
|
422
|
-
neverItem1: "Your code or file contents",
|
|
423
|
-
neverItem2: "API keys or credentials",
|
|
424
|
-
neverItem3: "Personal information",
|
|
425
|
-
prompt: "Share anonymous usage data to help improve Autohand?",
|
|
426
|
-
thanks: "Thanks for helping us improve Autohand!",
|
|
427
|
-
declined: "No problem! You can change this anytime in config."
|
|
428
|
-
},
|
|
429
|
-
complete: "Setup complete!",
|
|
430
|
-
created: "What was created:",
|
|
431
|
-
configFile: "~/.autohand/config.json (your settings)",
|
|
432
|
-
agentsFile: "AGENTS.md (project instructions for Autohand)",
|
|
433
|
-
nextSteps: "Next steps:",
|
|
434
|
-
tryCommand: "Try: autohand"
|
|
435
|
-
},
|
|
436
|
-
errors: {
|
|
437
|
-
generic: "An error occurred: {{message}}",
|
|
438
|
-
invalidLocale: "Invalid locale: {{locale}}. Supported: {{supported}}",
|
|
439
|
-
configParseFailed: "Failed to parse config at {{path}}: {{error}}",
|
|
440
|
-
configSaveFailed: "Failed to save config: {{error}}",
|
|
441
|
-
apiKeyRequired: "API key is required",
|
|
442
|
-
apiKeyTooShort: "API key seems too short",
|
|
443
|
-
apiKeyInvalid: "Invalid API key format",
|
|
444
|
-
directoryNotExist: "Directory does not exist: {{path}}",
|
|
445
|
-
unsafeDirectory: "Unsafe directory: {{path}}. Cannot operate in system directories.",
|
|
446
|
-
fileNotFound: "File not found: {{path}}",
|
|
447
|
-
permissionDenied: "Permission denied: {{path}}",
|
|
448
|
-
patchRequiresPrompt: "--patch requires --prompt to specify the instruction",
|
|
449
|
-
autoModeRequiresPrompt: "--auto-mode requires a task prompt",
|
|
450
|
-
noProviderConfigured: "No provider is configured yet. Run setup with: autohand --setup",
|
|
451
|
-
modelNotFound: "Model not found: {{model}}",
|
|
452
|
-
rateLimited: "Rate limited. Please wait a moment and try again.",
|
|
453
|
-
networkError: "Network error: {{message}}",
|
|
454
|
-
timeout: "Request timed out. Please try again.",
|
|
455
|
-
contextTooLong: "Context too long. Try /new to start fresh or /undo to remove recent turns.",
|
|
456
|
-
authFailed: "Authentication failed. Check your API key.",
|
|
457
|
-
paymentRequired: "Payment required. Check your account balance.",
|
|
458
|
-
serverError: "Server error. Please try again later.",
|
|
459
|
-
cancelled: "Operation cancelled by user."
|
|
460
|
-
},
|
|
461
|
-
agent: {
|
|
462
|
-
thinking: "Thinking...",
|
|
463
|
-
executing: "Executing {{tool}}...",
|
|
464
|
-
reading: "Reading {{file}}...",
|
|
465
|
-
writing: "Writing {{file}}...",
|
|
466
|
-
searching: "Searching...",
|
|
467
|
-
toolSuccess: "{{tool}} completed successfully",
|
|
468
|
-
toolFailed: "{{tool}} failed: {{error}}",
|
|
469
|
-
taskComplete: "Task complete",
|
|
470
|
-
noChanges: "No changes were made.",
|
|
471
|
-
changesApplied: "Changes applied successfully.",
|
|
472
|
-
awaitingApproval: "Awaiting approval...",
|
|
473
|
-
approved: "Approved",
|
|
474
|
-
denied: "Denied",
|
|
475
|
-
skipped: "Skipped",
|
|
476
|
-
exploring: "Exploring...",
|
|
477
|
-
exploredFiles: "Explored {{count}} files"
|
|
478
|
-
},
|
|
479
|
-
providers: {
|
|
480
|
-
openrouter: "OpenRouter",
|
|
481
|
-
openai: "OpenAI",
|
|
482
|
-
ollama: "Ollama",
|
|
483
|
-
llamacpp: "llama.cpp",
|
|
484
|
-
mlx: "MLX (Apple Silicon)",
|
|
485
|
-
hints: {
|
|
486
|
-
openrouter: "Cloud - Access to 100+ models (Claude, GPT-4, etc.)",
|
|
487
|
-
openai: "Cloud - Official OpenAI models (GPT-4o, o1, etc.)",
|
|
488
|
-
ollama: "Local - Run models on your machine (free)",
|
|
489
|
-
llamacpp: "Local - Fast inference with GGUF models",
|
|
490
|
-
mlx: "Local - Optimized for Apple Silicon Macs"
|
|
491
|
-
}
|
|
492
|
-
},
|
|
493
|
-
startup: {
|
|
494
|
-
checkingTools: "Checking required tools...",
|
|
495
|
-
toolFound: "{{tool}} found",
|
|
496
|
-
toolMissing: "{{tool}} not found",
|
|
497
|
-
installHint: "Install with: {{command}}",
|
|
498
|
-
allToolsReady: "All tools ready!",
|
|
499
|
-
someToolsMissing: "Some tools are missing. Some features may not work."
|
|
500
|
-
},
|
|
501
|
-
confirmation: {
|
|
502
|
-
proceed: "Proceed?",
|
|
503
|
-
areYouSure: "Are you sure?",
|
|
504
|
-
thisWillDelete: "This will delete {{item}}. This action cannot be undone.",
|
|
505
|
-
confirm: "Confirm",
|
|
506
|
-
cancel: "Cancel",
|
|
507
|
-
yesDelete: "Yes, delete",
|
|
508
|
-
noDontDelete: "No, keep it"
|
|
509
|
-
},
|
|
510
|
-
diff: {
|
|
511
|
-
title: "Changes to {{file}}",
|
|
512
|
-
additions: "{{count}} additions",
|
|
513
|
-
deletions: "{{count}} deletions",
|
|
514
|
-
noChanges: "No changes",
|
|
515
|
-
apply: "Apply changes?",
|
|
516
|
-
applied: "Changes applied.",
|
|
517
|
-
discarded: "Changes discarded."
|
|
518
|
-
},
|
|
519
|
-
ui: {
|
|
520
|
-
escToCancel: "esc to cancel",
|
|
521
|
-
commandHint: "/ for commands \xB7 @ to mention files",
|
|
522
|
-
ctrlCToExit: "Press Ctrl+C again to exit",
|
|
523
|
-
noMatchingCommands: "No matching commands.",
|
|
524
|
-
selectFile: "Select a file",
|
|
525
|
-
noMatchingFiles: "No matching files. Keep typing\u2026",
|
|
526
|
-
thinking: "Thinking",
|
|
527
|
-
planModeActive: "Plan mode active - tools are read-only",
|
|
528
|
-
planModeExecuting: "Executing plan",
|
|
529
|
-
typeToFilter: "Filter",
|
|
530
|
-
navigateHint: "Type to filter \xB7 \u2191/\u2193 navigate \xB7 Enter to run \xB7 Esc cancel",
|
|
531
|
-
fileNavigateHint: "Type to filter \xB7 \u2191/\u2193 navigate \xB7 Enter choose \xB7 Esc cancel",
|
|
532
|
-
questionPrompt: "\u2753",
|
|
533
|
-
questionOther: "Other (type your own answer)",
|
|
534
|
-
questionYourAnswer: "\u25B8 Your answer",
|
|
535
|
-
questionCustomHint: "\u21B5 Submit \xB7 ESC Back",
|
|
536
|
-
questionSelectHint: "\u2191\u2193 Navigate \xB7 \u21B5 Select \xB7 1-9 Shortcut \xB7 ESC Cancel",
|
|
537
|
-
noOptionsAvailable: "No options available",
|
|
538
|
-
planRevise: "No, revise the plan",
|
|
539
|
-
planEditHint: "ctrl-g to edit in VS Code",
|
|
540
|
-
confirmYes: "Yes",
|
|
541
|
-
confirmNo: "No",
|
|
542
|
-
inputHint: "Enter to submit, ESC to cancel",
|
|
543
|
-
inputPlaceholder: "Type your answer...",
|
|
544
|
-
passwordPlaceholder: "Enter password...",
|
|
545
|
-
validationError: "Invalid input"
|
|
546
|
-
},
|
|
547
|
-
languages: {
|
|
548
|
-
en: "English",
|
|
549
|
-
"zh-cn": "\u7B80\u4F53\u4E2D\u6587 (Simplified Chinese)",
|
|
550
|
-
"zh-tw": "\u7E41\u9AD4\u4E2D\u6587 (Traditional Chinese)",
|
|
551
|
-
fr: "Fran\xE7ais (French)",
|
|
552
|
-
de: "Deutsch (German)",
|
|
553
|
-
it: "Italiano (Italian)",
|
|
554
|
-
es: "Espa\xF1ol (Spanish)",
|
|
555
|
-
ja: "\u65E5\u672C\u8A9E (Japanese)",
|
|
556
|
-
ko: "\uD55C\uAD6D\uC5B4 (Korean)",
|
|
557
|
-
ru: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439 (Russian)",
|
|
558
|
-
"pt-br": "Portugu\xEAs (Brazilian Portuguese)",
|
|
559
|
-
tr: "T\xFCrk\xE7e (Turkish)",
|
|
560
|
-
pl: "Polski (Polish)",
|
|
561
|
-
cs: "\u010Ce\u0161tina (Czech)",
|
|
562
|
-
hu: "Magyar (Hungarian)",
|
|
563
|
-
hi: "\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)"
|
|
564
|
-
}
|
|
565
|
-
};
|
|
566
|
-
|
|
567
|
-
// src/i18n/locales/es.json
|
|
568
|
-
var es_default = {
|
|
569
|
-
common: {
|
|
570
|
-
error: "Error",
|
|
571
|
-
warning: "Advertencia",
|
|
572
|
-
success: "\xC9xito",
|
|
573
|
-
failed: "Fallido",
|
|
574
|
-
cancelled: "Cancelado",
|
|
575
|
-
continue: "Continuar",
|
|
576
|
-
yes: "S\xED",
|
|
577
|
-
no: "No",
|
|
578
|
-
done: "Hecho",
|
|
579
|
-
loading: "Cargando...",
|
|
580
|
-
pressEnter: "Presiona Enter para continuar...",
|
|
581
|
-
pressEscToCancel: "Presiona Esc para cancelar",
|
|
582
|
-
or: "o",
|
|
583
|
-
and: "y",
|
|
584
|
-
unknown: "Desconocido",
|
|
585
|
-
none: "Ninguno",
|
|
586
|
-
default: "Predeterminado",
|
|
587
|
-
current: "actual",
|
|
588
|
-
required: "requerido",
|
|
589
|
-
optional: "opcional",
|
|
590
|
-
enabled: "Habilitado",
|
|
591
|
-
disabled: "Deshabilitado",
|
|
592
|
-
on: "Activado",
|
|
593
|
-
off: "Desactivado"
|
|
594
|
-
},
|
|
595
|
-
cli: {
|
|
596
|
-
description: "CLI de agente de codificaci\xF3n aut\xF3nomo impulsado por LLM",
|
|
597
|
-
options: {
|
|
598
|
-
prompt: "Ejecutar una instrucci\xF3n \xFAnica en modo comando",
|
|
599
|
-
path: "Ruta del espacio de trabajo",
|
|
600
|
-
yes: "Auto-confirmar acciones riesgosas",
|
|
601
|
-
dryRun: "Vista previa de acciones sin aplicar mutaciones",
|
|
602
|
-
debug: "Habilitar salida de depuraci\xF3n (registro detallado)",
|
|
603
|
-
model: "Anular el modelo LLM configurado",
|
|
604
|
-
config: "Ruta al archivo de configuraci\xF3n (por defecto ~/.autohand/config.json)",
|
|
605
|
-
temperature: "Temperatura de muestreo",
|
|
606
|
-
displayLanguage: "Establecer idioma de visualizaci\xF3n (ej., en, zh-cn, fr, de)",
|
|
607
|
-
autoCommit: "Auto-commit con mensaje generado por LLM",
|
|
608
|
-
unrestricted: "Ejecutar sin solicitudes de aprobaci\xF3n",
|
|
609
|
-
restricted: "Denegar operaciones peligrosas autom\xE1ticamente",
|
|
610
|
-
autoSkill: "Auto-generar habilidades basadas en an\xE1lisis del proyecto",
|
|
611
|
-
skillInstall: "Instalar una habilidad de la comunidad",
|
|
612
|
-
project: "Instalar habilidad a nivel de proyecto",
|
|
613
|
-
permissions: "Mostrar configuraci\xF3n de permisos actual y salir",
|
|
614
|
-
login: "Iniciar sesi\xF3n en tu cuenta Autohand",
|
|
615
|
-
logout: "Cerrar sesi\xF3n de tu cuenta Autohand",
|
|
616
|
-
syncSettings: "Habilitar/deshabilitar sincronizaci\xF3n de configuraci\xF3n",
|
|
617
|
-
patch: "Generar parche git sin aplicar cambios",
|
|
618
|
-
output: "Archivo de salida para parche (por defecto: stdout)",
|
|
619
|
-
autoMode: "Iniciar bucle de desarrollo aut\xF3nomo",
|
|
620
|
-
maxIterations: "M\xE1x. iteraciones en auto-mode (por defecto: 50)",
|
|
621
|
-
completionPromise: "Texto marcador de completado (por defecto: DONE)",
|
|
622
|
-
noWorktree: "Deshabilitar aislamiento git worktree en auto-mode",
|
|
623
|
-
checkpointInterval: "Commit git cada N iteraciones (por defecto: 5)",
|
|
624
|
-
maxRuntime: "Tiempo m\xE1ximo de ejecuci\xF3n en minutos (por defecto: 120)",
|
|
625
|
-
maxCost: "Costo m\xE1ximo de API en d\xF3lares (por defecto: 10)",
|
|
626
|
-
setup: "Ejecutar el asistente de configuraci\xF3n",
|
|
627
|
-
addDir: "Agregar directorios adicionales al \xE1mbito del espacio de trabajo"
|
|
628
|
-
}
|
|
629
|
-
},
|
|
630
|
-
welcome: {
|
|
631
|
-
banner: "\xA1Bienvenido a Autohand!",
|
|
632
|
-
subtitle: "Tu agente de codificaci\xF3n IA s\xFAper r\xE1pido",
|
|
633
|
-
version: "v{{version}}",
|
|
634
|
-
updateAvailable: "Actualizaci\xF3n disponible: {{current}} -> {{latest}}. Ejecuta 'npm i -g autohand' para actualizar.",
|
|
635
|
-
loggedInAs: "Conectado como {{email}}",
|
|
636
|
-
notLoggedIn: "No conectado",
|
|
637
|
-
modelLine: "modelo: {{model}}",
|
|
638
|
-
directoryLine: "directorio: {{directory}}",
|
|
639
|
-
tips: {
|
|
640
|
-
title: "Para comenzar, describe una tarea o prueba uno de estos comandos:",
|
|
641
|
-
init: "/init - crear un archivo AGENTS.md con instrucciones para Autohand",
|
|
642
|
-
help: "/help - mostrar todos los comandos disponibles",
|
|
643
|
-
model: "/model - cambiar el modelo de IA",
|
|
644
|
-
language: "/language - cambiar idioma de visualizaci\xF3n"
|
|
645
|
-
},
|
|
646
|
-
shortcuts: {
|
|
647
|
-
title: "Atajos de teclado:",
|
|
648
|
-
mention: "@ - mencionar archivos para contexto",
|
|
649
|
-
arrows: "Teclas de flecha - navegar sugerencias",
|
|
650
|
-
tab: "Tab - autocompletar",
|
|
651
|
-
escape: "Esc - cancelar operaci\xF3n actual",
|
|
652
|
-
ctrlC: "Ctrl+C - salir"
|
|
653
|
-
}
|
|
654
|
-
},
|
|
655
|
-
commands: {
|
|
656
|
-
help: {
|
|
657
|
-
title: "Comandos Disponibles:",
|
|
658
|
-
command: "Comando",
|
|
659
|
-
description: "Descripci\xF3n",
|
|
660
|
-
tips: {
|
|
661
|
-
title: "Consejos:",
|
|
662
|
-
mention: "Escribe @ para mencionar archivos para la IA",
|
|
663
|
-
arrows: "Usa las teclas de flecha para navegar sugerencias de archivos",
|
|
664
|
-
tab: "Presiona Tab para autocompletar rutas de archivos",
|
|
665
|
-
escape: "Presiona Esc para cancelar la operaci\xF3n actual"
|
|
666
|
-
},
|
|
667
|
-
docsLink: "Para m\xE1s informaci\xF3n, visita {{link}}"
|
|
668
|
-
},
|
|
669
|
-
model: {
|
|
670
|
-
description: "elegir qu\xE9 modelo y esfuerzo de razonamiento usar",
|
|
671
|
-
title: "Selecci\xF3n de Modelo",
|
|
672
|
-
currentModel: "Modelo actual: {{model}}",
|
|
673
|
-
selectPrompt: "Selecciona un modelo:",
|
|
674
|
-
changed: "Modelo cambiado a {{model}}",
|
|
675
|
-
noChange: "Sin cambios."
|
|
676
|
-
},
|
|
677
|
-
theme: {
|
|
678
|
-
description: "cambiar tema de colores del terminal",
|
|
679
|
-
title: "Selecci\xF3n de Tema",
|
|
680
|
-
currentTheme: "Tema actual: {{theme}}",
|
|
681
|
-
selectPrompt: "Selecciona un tema:",
|
|
682
|
-
changed: "Tema cambiado a '{{theme}}'",
|
|
683
|
-
noChange: "Sin cambios."
|
|
684
|
-
},
|
|
685
|
-
language: {
|
|
686
|
-
description: "cambiar idioma de visualizaci\xF3n",
|
|
687
|
-
title: "Selecci\xF3n de Idioma",
|
|
688
|
-
currentLanguage: "Idioma actual: {{language}}",
|
|
689
|
-
selectPrompt: "Selecciona un idioma:",
|
|
690
|
-
changed: "Idioma cambiado a {{language}}",
|
|
691
|
-
noChange: "Sin cambios.",
|
|
692
|
-
restartHint: "Algunos cambios pueden requerir reiniciar la CLI para tener efecto completo."
|
|
693
|
-
},
|
|
694
|
-
quit: {
|
|
695
|
-
description: "salir de Autohand",
|
|
696
|
-
goodbye: "\xA1Adi\xF3s!"
|
|
697
|
-
},
|
|
698
|
-
init: {
|
|
699
|
-
description: "crear archivo AGENTS.md",
|
|
700
|
-
created: "AGENTS.md creado en {{path}}",
|
|
701
|
-
alreadyExists: "AGENTS.md ya existe en {{path}}",
|
|
702
|
-
overwritePrompt: "\xBFSobrescribir AGENTS.md existente?"
|
|
703
|
-
},
|
|
704
|
-
undo: {
|
|
705
|
-
description: "revertir la \xFAltima mutaci\xF3n de archivo",
|
|
706
|
-
success: "Cambios revertidos en {{file}}",
|
|
707
|
-
noChanges: "No hay cambios para deshacer.",
|
|
708
|
-
failed: "Error al deshacer: {{error}}"
|
|
709
|
-
},
|
|
710
|
-
new: {
|
|
711
|
-
description: "iniciar una nueva conversaci\xF3n",
|
|
712
|
-
cleared: "Conversaci\xF3n borrada. Comenzando de nuevo."
|
|
713
|
-
},
|
|
714
|
-
status: {
|
|
715
|
-
description: "mostrar estado actual",
|
|
716
|
-
title: "Estado de Autohand",
|
|
717
|
-
version: "Versi\xF3n",
|
|
718
|
-
sessionId: "ID de Sesi\xF3n",
|
|
719
|
-
cwd: "Directorio actual",
|
|
720
|
-
provider: "Proveedor",
|
|
721
|
-
model: "Modelo",
|
|
722
|
-
locale: "Idioma",
|
|
723
|
-
apiStatus: "Estado de API",
|
|
724
|
-
connected: "Conectado",
|
|
725
|
-
disconnected: "Desconectado",
|
|
726
|
-
sessions: "Sesiones",
|
|
727
|
-
total: "{{count}} total"
|
|
728
|
-
},
|
|
729
|
-
sessions: {
|
|
730
|
-
description: "listar sesiones guardadas",
|
|
731
|
-
title: "Sesiones Guardadas",
|
|
732
|
-
noSessions: "No se encontraron sesiones guardadas.",
|
|
733
|
-
selectPrompt: "Selecciona una sesi\xF3n para reanudar:",
|
|
734
|
-
sessionInfo: "{{name}} - {{date}}"
|
|
735
|
-
},
|
|
736
|
-
resume: {
|
|
737
|
-
description: "reanudar una sesi\xF3n anterior",
|
|
738
|
-
resuming: "Reanudando sesi\xF3n {{id}}...",
|
|
739
|
-
notFound: "Sesi\xF3n no encontrada: {{id}}",
|
|
740
|
-
failed: "Error al reanudar sesi\xF3n: {{error}}"
|
|
741
|
-
},
|
|
742
|
-
memory: {
|
|
743
|
-
description: "administrar memoria del proyecto y usuario",
|
|
744
|
-
title: "Administraci\xF3n de Memoria",
|
|
745
|
-
projectMemory: "Memoria del Proyecto",
|
|
746
|
-
userMemory: "Memoria del Usuario",
|
|
747
|
-
noMemory: "No hay memorias almacenadas.",
|
|
748
|
-
addPrompt: "Agregar una nueva memoria:",
|
|
749
|
-
added: "Memoria agregada.",
|
|
750
|
-
cleared: "Memoria borrada."
|
|
751
|
-
},
|
|
752
|
-
permissions: {
|
|
753
|
-
description: "mostrar configuraci\xF3n de permisos actual",
|
|
754
|
-
title: "Configuraci\xF3n de Permisos",
|
|
755
|
-
mode: "Modo: {{mode}}",
|
|
756
|
-
allowed: "Acciones permitidas:",
|
|
757
|
-
denied: "Acciones denegadas:",
|
|
758
|
-
pending: "Pendiente de aprobaci\xF3n:"
|
|
759
|
-
},
|
|
760
|
-
login: {
|
|
761
|
-
description: "iniciar sesi\xF3n en tu cuenta Autohand",
|
|
762
|
-
prompt: "Ingresa tu c\xF3digo de inicio de sesi\xF3n:",
|
|
763
|
-
success: "Sesi\xF3n iniciada exitosamente como {{email}}",
|
|
764
|
-
failed: "Error de inicio de sesi\xF3n: {{error}}",
|
|
765
|
-
cancelled: "Inicio de sesi\xF3n cancelado."
|
|
766
|
-
},
|
|
767
|
-
logout: {
|
|
768
|
-
description: "cerrar sesi\xF3n de tu cuenta Autohand",
|
|
769
|
-
confirm: "\xBFCerrar sesi\xF3n de {{email}}?",
|
|
770
|
-
success: "Sesi\xF3n cerrada exitosamente.",
|
|
771
|
-
cancelled: "Cierre de sesi\xF3n cancelado."
|
|
772
|
-
},
|
|
773
|
-
sync: {
|
|
774
|
-
description: "administrar sincronizaci\xF3n de configuraci\xF3n",
|
|
775
|
-
enabled: "Sincronizaci\xF3n de configuraci\xF3n habilitada.",
|
|
776
|
-
disabled: "Sincronizaci\xF3n de configuraci\xF3n deshabilitada.",
|
|
777
|
-
status: "Estado de sincronizaci\xF3n: {{status}}",
|
|
778
|
-
lastSync: "\xDAltima sincronizaci\xF3n: {{date}}"
|
|
779
|
-
},
|
|
780
|
-
feedback: {
|
|
781
|
-
description: "enviar comentarios sobre el CLI",
|
|
782
|
-
prompt: "Ingresa tus comentarios:",
|
|
783
|
-
success: "\xA1Gracias por tus comentarios!",
|
|
784
|
-
failed: "Error al enviar comentarios: {{error}}"
|
|
785
|
-
},
|
|
786
|
-
hooks: {
|
|
787
|
-
description: "administrar git hooks",
|
|
788
|
-
title: "Git Hooks",
|
|
789
|
-
installed: "Hooks instalados:",
|
|
790
|
-
available: "Hooks disponibles:",
|
|
791
|
-
noHooks: "No hay hooks configurados."
|
|
792
|
-
},
|
|
793
|
-
skills: {
|
|
794
|
-
description: "listar y administrar habilidades",
|
|
795
|
-
title: "Habilidades",
|
|
796
|
-
installed: "Habilidades instaladas:",
|
|
797
|
-
available: "Habilidades disponibles:",
|
|
798
|
-
noSkills: "No hay habilidades instaladas."
|
|
799
|
-
},
|
|
800
|
-
export: {
|
|
801
|
-
description: "exportar datos de sesi\xF3n",
|
|
802
|
-
success: "Exportado a {{path}}",
|
|
803
|
-
failed: "Error de exportaci\xF3n: {{error}}"
|
|
804
|
-
},
|
|
805
|
-
agents: {
|
|
806
|
-
description: "administrar sub-agentes",
|
|
807
|
-
title: "Sub-Agentes",
|
|
808
|
-
noAgents: "No hay sub-agentes configurados."
|
|
809
|
-
},
|
|
810
|
-
automode: {
|
|
811
|
-
description: "administrar modo aut\xF3nomo",
|
|
812
|
-
starting: "Iniciando auto-mode...",
|
|
813
|
-
stopping: "Deteniendo auto-mode...",
|
|
814
|
-
iteration: "Iteraci\xF3n {{current}} de {{max}}",
|
|
815
|
-
completed: "Auto-mode completado.",
|
|
816
|
-
aborted: "Auto-mode abortado."
|
|
817
|
-
},
|
|
818
|
-
share: {
|
|
819
|
-
description: "compartir sesi\xF3n",
|
|
820
|
-
generating: "Generando enlace para compartir...",
|
|
821
|
-
success: "Enlace para compartir: {{url}}",
|
|
822
|
-
failed: "Error al generar enlace para compartir: {{error}}"
|
|
823
|
-
},
|
|
824
|
-
addDir: {
|
|
825
|
-
description: "agregar directorios al \xE1mbito del espacio de trabajo",
|
|
826
|
-
added: "Directorio agregado: {{path}}",
|
|
827
|
-
alreadyAdded: "Directorio ya agregado: {{path}}",
|
|
828
|
-
notFound: "Directorio no encontrado: {{path}}"
|
|
829
|
-
}
|
|
830
|
-
},
|
|
831
|
-
setup: {
|
|
832
|
-
welcome: "\xA1Bienvenido a Autohand!",
|
|
833
|
-
subtitle: "Tu agente de codificaci\xF3n IA s\xFAper r\xE1pido",
|
|
834
|
-
letsStart: "Vamos a configurarte en solo unos pasos.",
|
|
835
|
-
providerSelect: "\xBFQu\xE9 proveedor de LLM te gustar\xEDa usar?",
|
|
836
|
-
apiKeyPrompt: "Ingresa tu clave API de {{provider}}:",
|
|
837
|
-
apiKeyHelp: "Obt\xE9n tu clave API en: {{url}}",
|
|
838
|
-
apiKeyHint: "Tu clave API se almacenar\xE1 localmente en ~/.autohand/config.json",
|
|
839
|
-
modelPrompt: "Ingresa el ID del modelo (o presiona Enter para el predeterminado):",
|
|
840
|
-
modelDefault: "Predeterminado: {{model}}",
|
|
841
|
-
testingConnection: "Probando conexi\xF3n...",
|
|
842
|
-
connectionSuccess: "\xA1Conexi\xF3n exitosa!",
|
|
843
|
-
connectionFailed: "Error de conexi\xF3n: {{error}}",
|
|
844
|
-
telemetry: {
|
|
845
|
-
title: "Ay\xFAdanos a mejorar Autohand",
|
|
846
|
-
description: "Recopilamos datos de uso an\xF3nimos para entender c\xF3mo se usa Autohand.",
|
|
847
|
-
whatWeCollect: "Lo que recopilamos:",
|
|
848
|
-
collectItem1: "Uso de comandos (qu\xE9 funciones son populares)",
|
|
849
|
-
collectItem2: "Tasas de error (para corregir errores m\xE1s r\xE1pido)",
|
|
850
|
-
collectItem3: "M\xE9tricas de rendimiento (para acelerar las cosas)",
|
|
851
|
-
whatWeNeverCollect: "Lo que nunca recopilamos:",
|
|
852
|
-
neverItem1: "Tu c\xF3digo o contenido de archivos",
|
|
853
|
-
neverItem2: "Claves API o credenciales",
|
|
854
|
-
neverItem3: "Informaci\xF3n personal",
|
|
855
|
-
prompt: "\xBFCompartir datos de uso an\xF3nimos para ayudar a mejorar Autohand?",
|
|
856
|
-
thanks: "\xA1Gracias por ayudarnos a mejorar Autohand!",
|
|
857
|
-
declined: "\xA1No hay problema! Puedes cambiar esto en cualquier momento en la configuraci\xF3n."
|
|
858
|
-
},
|
|
859
|
-
complete: "\xA1Configuraci\xF3n completa!",
|
|
860
|
-
created: "Lo que se cre\xF3:",
|
|
861
|
-
configFile: "~/.autohand/config.json (tu configuraci\xF3n)",
|
|
862
|
-
agentsFile: "AGENTS.md (instrucciones del proyecto para Autohand)",
|
|
863
|
-
nextSteps: "Pr\xF3ximos pasos:",
|
|
864
|
-
tryCommand: "Prueba: autohand"
|
|
865
|
-
},
|
|
866
|
-
errors: {
|
|
867
|
-
generic: "Ocurri\xF3 un error: {{message}}",
|
|
868
|
-
invalidLocale: "Locale inv\xE1lido: {{locale}}. Soportados: {{supported}}",
|
|
869
|
-
configParseFailed: "Error al analizar configuraci\xF3n en {{path}}: {{error}}",
|
|
870
|
-
configSaveFailed: "Error al guardar configuraci\xF3n: {{error}}",
|
|
871
|
-
apiKeyRequired: "Se requiere clave API",
|
|
872
|
-
apiKeyTooShort: "La clave API parece muy corta",
|
|
873
|
-
apiKeyInvalid: "Formato de clave API inv\xE1lido",
|
|
874
|
-
directoryNotExist: "El directorio no existe: {{path}}",
|
|
875
|
-
unsafeDirectory: "Directorio inseguro: {{path}}. No se puede operar en directorios del sistema.",
|
|
876
|
-
fileNotFound: "Archivo no encontrado: {{path}}",
|
|
877
|
-
permissionDenied: "Permiso denegado: {{path}}",
|
|
878
|
-
patchRequiresPrompt: "--patch requiere --prompt para especificar la instrucci\xF3n",
|
|
879
|
-
autoModeRequiresPrompt: "--auto-mode requiere un prompt de tarea",
|
|
880
|
-
noProviderConfigured: "A\xFAn no hay proveedor configurado. Ejecuta la configuraci\xF3n con: autohand --setup",
|
|
881
|
-
modelNotFound: "Modelo no encontrado: {{model}}",
|
|
882
|
-
rateLimited: "L\xEDmite de velocidad alcanzado. Por favor espera un momento e intenta de nuevo.",
|
|
883
|
-
networkError: "Error de red: {{message}}",
|
|
884
|
-
timeout: "La solicitud expir\xF3. Por favor intenta de nuevo.",
|
|
885
|
-
contextTooLong: "Contexto demasiado largo. Prueba /new para empezar de nuevo o /undo para eliminar turnos recientes.",
|
|
886
|
-
authFailed: "Error de autenticaci\xF3n. Verifica tu clave API.",
|
|
887
|
-
paymentRequired: "Pago requerido. Verifica el saldo de tu cuenta.",
|
|
888
|
-
serverError: "Error del servidor. Por favor intenta m\xE1s tarde.",
|
|
889
|
-
cancelled: "Operaci\xF3n cancelada por el usuario."
|
|
890
|
-
},
|
|
891
|
-
agent: {
|
|
892
|
-
thinking: "Pensando...",
|
|
893
|
-
executing: "Ejecutando {{tool}}...",
|
|
894
|
-
reading: "Leyendo {{file}}...",
|
|
895
|
-
writing: "Escribiendo {{file}}...",
|
|
896
|
-
searching: "Buscando...",
|
|
897
|
-
toolSuccess: "{{tool}} completado exitosamente",
|
|
898
|
-
toolFailed: "{{tool}} fall\xF3: {{error}}",
|
|
899
|
-
taskComplete: "Tarea completada",
|
|
900
|
-
noChanges: "No se realizaron cambios.",
|
|
901
|
-
changesApplied: "Cambios aplicados exitosamente.",
|
|
902
|
-
awaitingApproval: "Esperando aprobaci\xF3n...",
|
|
903
|
-
approved: "Aprobado",
|
|
904
|
-
denied: "Denegado",
|
|
905
|
-
skipped: "Omitido",
|
|
906
|
-
exploring: "Explorando...",
|
|
907
|
-
exploredFiles: "{{count}} archivos explorados"
|
|
908
|
-
},
|
|
909
|
-
providers: {
|
|
910
|
-
openrouter: "OpenRouter",
|
|
911
|
-
openai: "OpenAI",
|
|
912
|
-
ollama: "Ollama",
|
|
913
|
-
llamacpp: "llama.cpp",
|
|
914
|
-
mlx: "MLX (Apple Silicon)",
|
|
915
|
-
hints: {
|
|
916
|
-
openrouter: "Nube - Acceso a m\xE1s de 100 modelos (Claude, GPT-4, etc.)",
|
|
917
|
-
openai: "Nube - Modelos oficiales de OpenAI (GPT-4o, o1, etc.)",
|
|
918
|
-
ollama: "Local - Ejecuta modelos en tu m\xE1quina (gratis)",
|
|
919
|
-
llamacpp: "Local - Inferencia r\xE1pida con modelos GGUF",
|
|
920
|
-
mlx: "Local - Optimizado para Apple Silicon Macs"
|
|
921
|
-
}
|
|
922
|
-
},
|
|
923
|
-
startup: {
|
|
924
|
-
checkingTools: "Verificando herramientas requeridas...",
|
|
925
|
-
toolFound: "{{tool}} encontrado",
|
|
926
|
-
toolMissing: "{{tool}} no encontrado",
|
|
927
|
-
installHint: "Instalar con: {{command}}",
|
|
928
|
-
allToolsReady: "\xA1Todas las herramientas listas!",
|
|
929
|
-
someToolsMissing: "Algunas herramientas faltan. Algunas funciones pueden no funcionar."
|
|
930
|
-
},
|
|
931
|
-
confirmation: {
|
|
932
|
-
proceed: "\xBFContinuar?",
|
|
933
|
-
areYouSure: "\xBFEst\xE1s seguro?",
|
|
934
|
-
thisWillDelete: "Esto eliminar\xE1 {{item}}. Esta acci\xF3n no se puede deshacer.",
|
|
935
|
-
confirm: "Confirmar",
|
|
936
|
-
cancel: "Cancelar",
|
|
937
|
-
yesDelete: "S\xED, eliminar",
|
|
938
|
-
noDontDelete: "No, mantenerlo"
|
|
939
|
-
},
|
|
940
|
-
diff: {
|
|
941
|
-
title: "Cambios en {{file}}",
|
|
942
|
-
additions: "{{count}} adiciones",
|
|
943
|
-
deletions: "{{count}} eliminaciones",
|
|
944
|
-
noChanges: "Sin cambios",
|
|
945
|
-
apply: "\xBFAplicar cambios?",
|
|
946
|
-
applied: "Cambios aplicados.",
|
|
947
|
-
discarded: "Cambios descartados."
|
|
948
|
-
},
|
|
949
|
-
ui: {
|
|
950
|
-
escToCancel: "esc para cancelar",
|
|
951
|
-
commandHint: "/ para comandos \xB7 @ para mencionar archivos",
|
|
952
|
-
ctrlCToExit: "Presione Ctrl+C de nuevo para salir",
|
|
953
|
-
noMatchingCommands: "No hay comandos coincidentes.",
|
|
954
|
-
selectFile: "Seleccione un archivo",
|
|
955
|
-
noMatchingFiles: "No hay archivos coincidentes. Siga escribiendo...",
|
|
956
|
-
thinking: "Pensando",
|
|
957
|
-
planModeActive: "Modo plan activo - herramientas solo lectura",
|
|
958
|
-
planModeExecuting: "Ejecutando plan",
|
|
959
|
-
typeToFilter: "Filtrar",
|
|
960
|
-
navigateHint: "Escriba para filtrar \xB7 \u2191/\u2193 navegar \xB7 Enter ejecutar \xB7 Esc cancelar",
|
|
961
|
-
fileNavigateHint: "Escriba para filtrar \xB7 \u2191/\u2193 navegar \xB7 Enter elegir \xB7 Esc cancelar",
|
|
962
|
-
questionPrompt: "\u2753",
|
|
963
|
-
questionOther: "Otro (escriba su propia respuesta)",
|
|
964
|
-
questionYourAnswer: "\u25B8 Tu respuesta",
|
|
965
|
-
questionCustomHint: "\u21B5 Enviar \xB7 ESC Volver",
|
|
966
|
-
questionSelectHint: "\u2191\u2193 Navegar \xB7 \u21B5 Seleccionar \xB7 1-9 Atajo \xB7 ESC Cancelar",
|
|
967
|
-
noOptionsAvailable: "No hay opciones disponibles",
|
|
968
|
-
planRevise: "No, revisar el plan",
|
|
969
|
-
planEditHint: "ctrl-g para editar en VS Code",
|
|
970
|
-
confirmYes: "S\xED",
|
|
971
|
-
confirmNo: "No",
|
|
972
|
-
inputHint: "Enter para enviar, ESC para cancelar",
|
|
973
|
-
inputPlaceholder: "Escriba su respuesta...",
|
|
974
|
-
passwordPlaceholder: "Ingrese contrase\xF1a...",
|
|
975
|
-
validationError: "Entrada inv\xE1lida"
|
|
976
|
-
},
|
|
977
|
-
languages: {
|
|
978
|
-
en: "English",
|
|
979
|
-
"zh-cn": "\u7B80\u4F53\u4E2D\u6587 (Chino Simplificado)",
|
|
980
|
-
"zh-tw": "\u7E41\u9AD4\u4E2D\u6587 (Chino Tradicional)",
|
|
981
|
-
fr: "Fran\xE7ais (Franc\xE9s)",
|
|
982
|
-
de: "Deutsch (Alem\xE1n)",
|
|
983
|
-
it: "Italiano (Italiano)",
|
|
984
|
-
es: "Espa\xF1ol (Espa\xF1ol)",
|
|
985
|
-
ja: "\u65E5\u672C\u8A9E (Japon\xE9s)",
|
|
986
|
-
ko: "\uD55C\uAD6D\uC5B4 (Coreano)",
|
|
987
|
-
ru: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439 (Ruso)",
|
|
988
|
-
"pt-br": "Portugu\xEAs (Portugu\xE9s Brasile\xF1o)",
|
|
989
|
-
tr: "T\xFCrk\xE7e (Turco)",
|
|
990
|
-
pl: "Polski (Polaco)",
|
|
991
|
-
cs: "\u010Ce\u0161tina (Checo)",
|
|
992
|
-
hu: "Magyar (H\xFAngaro)",
|
|
993
|
-
hi: "\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)"
|
|
994
|
-
}
|
|
995
|
-
};
|
|
996
|
-
|
|
997
|
-
// src/i18n/locales/fr.json
|
|
998
|
-
var fr_default = {
|
|
999
|
-
common: {
|
|
1000
|
-
error: "Erreur",
|
|
1001
|
-
warning: "Avertissement",
|
|
1002
|
-
success: "Succ\xE8s",
|
|
1003
|
-
failed: "\xC9chou\xE9",
|
|
1004
|
-
cancelled: "Annul\xE9",
|
|
1005
|
-
continue: "Continuer",
|
|
1006
|
-
yes: "Oui",
|
|
1007
|
-
no: "Non",
|
|
1008
|
-
done: "Termin\xE9",
|
|
1009
|
-
loading: "Chargement...",
|
|
1010
|
-
pressEnter: "Appuyez sur Entr\xE9e pour continuer...",
|
|
1011
|
-
pressEscToCancel: "Appuyez sur \xC9chap pour annuler",
|
|
1012
|
-
or: "ou",
|
|
1013
|
-
and: "et",
|
|
1014
|
-
unknown: "Inconnu",
|
|
1015
|
-
none: "Aucun",
|
|
1016
|
-
default: "Par d\xE9faut",
|
|
1017
|
-
current: "actuel",
|
|
1018
|
-
required: "requis",
|
|
1019
|
-
optional: "optionnel",
|
|
1020
|
-
enabled: "Activ\xE9",
|
|
1021
|
-
disabled: "D\xE9sactiv\xE9",
|
|
1022
|
-
on: "Activ\xE9",
|
|
1023
|
-
off: "D\xE9sactiv\xE9"
|
|
1024
|
-
},
|
|
1025
|
-
cli: {
|
|
1026
|
-
description: "CLI d'agent de codage autonome aliment\xE9 par LLM",
|
|
1027
|
-
options: {
|
|
1028
|
-
prompt: "Ex\xE9cuter une instruction unique en mode commande",
|
|
1029
|
-
path: "Chemin du workspace",
|
|
1030
|
-
yes: "Auto-confirmer les actions risqu\xE9es",
|
|
1031
|
-
dryRun: "Pr\xE9visualiser les actions sans appliquer les mutations",
|
|
1032
|
-
debug: "Activer la sortie de d\xE9bogage (journalisation d\xE9taill\xE9e)",
|
|
1033
|
-
model: "Remplacer le mod\xE8le LLM configur\xE9",
|
|
1034
|
-
config: "Chemin du fichier de configuration (par d\xE9faut ~/.autohand/config.json)",
|
|
1035
|
-
temperature: "Temp\xE9rature d'\xE9chantillonnage",
|
|
1036
|
-
displayLanguage: "D\xE9finir la langue d'affichage (ex., en, zh-cn, fr, de)",
|
|
1037
|
-
autoCommit: "Auto-commit avec message g\xE9n\xE9r\xE9 par LLM",
|
|
1038
|
-
unrestricted: "Ex\xE9cuter sans invites d'approbation",
|
|
1039
|
-
restricted: "Refuser automatiquement les op\xE9rations dangereuses",
|
|
1040
|
-
autoSkill: "Auto-g\xE9n\xE9rer des comp\xE9tences bas\xE9es sur l'analyse du projet",
|
|
1041
|
-
skillInstall: "Installer une comp\xE9tence communautaire",
|
|
1042
|
-
project: "Installer la comp\xE9tence au niveau du projet",
|
|
1043
|
-
permissions: "Afficher les param\xE8tres de permission actuels et quitter",
|
|
1044
|
-
login: "Se connecter \xE0 votre compte Autohand",
|
|
1045
|
-
logout: "Se d\xE9connecter de votre compte Autohand",
|
|
1046
|
-
syncSettings: "Activer/d\xE9sactiver la synchronisation des param\xE8tres",
|
|
1047
|
-
patch: "G\xE9n\xE9rer un patch git sans appliquer les modifications",
|
|
1048
|
-
output: "Fichier de sortie pour le patch (par d\xE9faut: stdout)",
|
|
1049
|
-
autoMode: "D\xE9marrer la boucle de d\xE9veloppement autonome",
|
|
1050
|
-
maxIterations: "Max. it\xE9rations en auto-mode (par d\xE9faut: 50)",
|
|
1051
|
-
completionPromise: "Texte marqueur de compl\xE9tion (par d\xE9faut: DONE)",
|
|
1052
|
-
noWorktree: "D\xE9sactiver l'isolation git worktree en auto-mode",
|
|
1053
|
-
checkpointInterval: "Commit git toutes les N it\xE9rations (par d\xE9faut: 5)",
|
|
1054
|
-
maxRuntime: "Dur\xE9e maximale d'ex\xE9cution en minutes (par d\xE9faut: 120)",
|
|
1055
|
-
maxCost: "Co\xFBt API maximum en dollars (par d\xE9faut: 10)",
|
|
1056
|
-
setup: "Ex\xE9cuter l'assistant de configuration",
|
|
1057
|
-
addDir: "Ajouter des r\xE9pertoires suppl\xE9mentaires \xE0 la port\xE9e du workspace"
|
|
1058
|
-
}
|
|
1059
|
-
},
|
|
1060
|
-
welcome: {
|
|
1061
|
-
banner: "Bienvenue sur Autohand !",
|
|
1062
|
-
subtitle: "Votre agent de codage IA ultra-rapide",
|
|
1063
|
-
version: "v{{version}}",
|
|
1064
|
-
updateAvailable: "Mise \xE0 jour disponible : {{current}} -> {{latest}}. Ex\xE9cutez 'npm i -g autohand' pour mettre \xE0 jour.",
|
|
1065
|
-
loggedInAs: "Connect\xE9 en tant que {{email}}",
|
|
1066
|
-
notLoggedIn: "Non connect\xE9",
|
|
1067
|
-
modelLine: "mod\xE8le : {{model}}",
|
|
1068
|
-
directoryLine: "r\xE9pertoire : {{directory}}",
|
|
1069
|
-
tips: {
|
|
1070
|
-
title: "Pour commencer, d\xE9crivez une t\xE2che ou essayez une de ces commandes :",
|
|
1071
|
-
init: "/init - cr\xE9er un fichier AGENTS.md avec des instructions pour Autohand",
|
|
1072
|
-
help: "/help - afficher toutes les commandes disponibles",
|
|
1073
|
-
model: "/model - changer le mod\xE8le d'IA",
|
|
1074
|
-
language: "/language - changer la langue d'affichage"
|
|
1075
|
-
},
|
|
1076
|
-
shortcuts: {
|
|
1077
|
-
title: "Raccourcis clavier :",
|
|
1078
|
-
mention: "@ - mentionner des fichiers pour le contexte",
|
|
1079
|
-
arrows: "Touches fl\xE9ch\xE9es - naviguer dans les suggestions",
|
|
1080
|
-
tab: "Tab - autocompl\xE9tion",
|
|
1081
|
-
escape: "\xC9chap - annuler l'op\xE9ration en cours",
|
|
1082
|
-
ctrlC: "Ctrl+C - quitter"
|
|
1083
|
-
}
|
|
1084
|
-
},
|
|
1085
|
-
commands: {
|
|
1086
|
-
help: {
|
|
1087
|
-
title: "Commandes Disponibles :",
|
|
1088
|
-
command: "Commande",
|
|
1089
|
-
description: "Description",
|
|
1090
|
-
tips: {
|
|
1091
|
-
title: "Conseils :",
|
|
1092
|
-
mention: "Tapez @ pour mentionner des fichiers pour l'IA",
|
|
1093
|
-
arrows: "Utilisez les touches fl\xE9ch\xE9es pour naviguer dans les suggestions de fichiers",
|
|
1094
|
-
tab: "Appuyez sur Tab pour autocompl\xE9ter les chemins de fichiers",
|
|
1095
|
-
escape: "Appuyez sur \xC9chap pour annuler l'op\xE9ration en cours"
|
|
1096
|
-
},
|
|
1097
|
-
docsLink: "Pour plus d'informations, visitez {{link}}"
|
|
1098
|
-
},
|
|
1099
|
-
model: {
|
|
1100
|
-
description: "choisir quel mod\xE8le et effort de raisonnement utiliser",
|
|
1101
|
-
title: "S\xE9lection du Mod\xE8le",
|
|
1102
|
-
currentModel: "Mod\xE8le actuel : {{model}}",
|
|
1103
|
-
selectPrompt: "S\xE9lectionnez un mod\xE8le :",
|
|
1104
|
-
changed: "Mod\xE8le chang\xE9 pour {{model}}",
|
|
1105
|
-
noChange: "Aucun changement effectu\xE9."
|
|
1106
|
-
},
|
|
1107
|
-
theme: {
|
|
1108
|
-
description: "changer le th\xE8me de couleurs du terminal",
|
|
1109
|
-
title: "S\xE9lection du Th\xE8me",
|
|
1110
|
-
currentTheme: "Th\xE8me actuel : {{theme}}",
|
|
1111
|
-
selectPrompt: "S\xE9lectionnez un th\xE8me :",
|
|
1112
|
-
changed: "Th\xE8me chang\xE9 pour '{{theme}}'",
|
|
1113
|
-
noChange: "Aucun changement effectu\xE9."
|
|
1114
|
-
},
|
|
1115
|
-
language: {
|
|
1116
|
-
description: "changer la langue d'affichage",
|
|
1117
|
-
title: "S\xE9lection de la Langue",
|
|
1118
|
-
currentLanguage: "Langue actuelle : {{language}}",
|
|
1119
|
-
selectPrompt: "S\xE9lectionnez une langue :",
|
|
1120
|
-
changed: "Langue chang\xE9e pour {{language}}",
|
|
1121
|
-
noChange: "Aucun changement effectu\xE9.",
|
|
1122
|
-
restartHint: "Certains changements peuvent n\xE9cessiter un red\xE9marrage de la CLI pour prendre effet."
|
|
1123
|
-
},
|
|
1124
|
-
quit: {
|
|
1125
|
-
description: "quitter Autohand",
|
|
1126
|
-
goodbye: "Au revoir !"
|
|
1127
|
-
},
|
|
1128
|
-
init: {
|
|
1129
|
-
description: "cr\xE9er un fichier AGENTS.md",
|
|
1130
|
-
created: "AGENTS.md cr\xE9\xE9 dans {{path}}",
|
|
1131
|
-
alreadyExists: "AGENTS.md existe d\xE9j\xE0 dans {{path}}",
|
|
1132
|
-
overwritePrompt: "\xC9craser le AGENTS.md existant ?"
|
|
1133
|
-
},
|
|
1134
|
-
undo: {
|
|
1135
|
-
description: "annuler la derni\xE8re mutation de fichier",
|
|
1136
|
-
success: "Modifications annul\xE9es dans {{file}}",
|
|
1137
|
-
noChanges: "Aucune modification \xE0 annuler.",
|
|
1138
|
-
failed: "\xC9chec de l'annulation : {{error}}"
|
|
1139
|
-
},
|
|
1140
|
-
new: {
|
|
1141
|
-
description: "d\xE9marrer une nouvelle conversation",
|
|
1142
|
-
cleared: "Conversation effac\xE9e. Nouveau d\xE9part."
|
|
1143
|
-
},
|
|
1144
|
-
status: {
|
|
1145
|
-
description: "afficher le statut actuel",
|
|
1146
|
-
title: "Statut Autohand",
|
|
1147
|
-
version: "Version",
|
|
1148
|
-
sessionId: "ID de Session",
|
|
1149
|
-
cwd: "R\xE9pertoire actuel",
|
|
1150
|
-
provider: "Fournisseur",
|
|
1151
|
-
model: "Mod\xE8le",
|
|
1152
|
-
locale: "Langue",
|
|
1153
|
-
apiStatus: "Statut API",
|
|
1154
|
-
connected: "Connect\xE9",
|
|
1155
|
-
disconnected: "D\xE9connect\xE9",
|
|
1156
|
-
sessions: "Sessions",
|
|
1157
|
-
total: "{{count}} total"
|
|
1158
|
-
},
|
|
1159
|
-
sessions: {
|
|
1160
|
-
description: "lister les sessions sauvegard\xE9es",
|
|
1161
|
-
title: "Sessions Sauvegard\xE9es",
|
|
1162
|
-
noSessions: "Aucune session sauvegard\xE9e trouv\xE9e.",
|
|
1163
|
-
selectPrompt: "S\xE9lectionnez une session \xE0 reprendre :",
|
|
1164
|
-
sessionInfo: "{{name}} - {{date}}"
|
|
1165
|
-
},
|
|
1166
|
-
resume: {
|
|
1167
|
-
description: "reprendre une session pr\xE9c\xE9dente",
|
|
1168
|
-
resuming: "Reprise de la session {{id}}...",
|
|
1169
|
-
notFound: "Session non trouv\xE9e : {{id}}",
|
|
1170
|
-
failed: "\xC9chec de la reprise de session : {{error}}"
|
|
1171
|
-
},
|
|
1172
|
-
memory: {
|
|
1173
|
-
description: "g\xE9rer la m\xE9moire du projet et de l'utilisateur",
|
|
1174
|
-
title: "Gestion de la M\xE9moire",
|
|
1175
|
-
projectMemory: "M\xE9moire du Projet",
|
|
1176
|
-
userMemory: "M\xE9moire Utilisateur",
|
|
1177
|
-
noMemory: "Aucune m\xE9moire stock\xE9e.",
|
|
1178
|
-
addPrompt: "Ajouter une nouvelle m\xE9moire :",
|
|
1179
|
-
added: "M\xE9moire ajout\xE9e.",
|
|
1180
|
-
cleared: "M\xE9moire effac\xE9e."
|
|
1181
|
-
},
|
|
1182
|
-
permissions: {
|
|
1183
|
-
description: "afficher les param\xE8tres de permission actuels",
|
|
1184
|
-
title: "Param\xE8tres de Permission",
|
|
1185
|
-
mode: "Mode : {{mode}}",
|
|
1186
|
-
allowed: "Actions autoris\xE9es :",
|
|
1187
|
-
denied: "Actions refus\xE9es :",
|
|
1188
|
-
pending: "En attente d'approbation :"
|
|
1189
|
-
},
|
|
1190
|
-
login: {
|
|
1191
|
-
description: "se connecter \xE0 votre compte Autohand",
|
|
1192
|
-
prompt: "Entrez votre code de connexion :",
|
|
1193
|
-
success: "Connexion r\xE9ussie en tant que {{email}}",
|
|
1194
|
-
failed: "\xC9chec de la connexion : {{error}}",
|
|
1195
|
-
cancelled: "Connexion annul\xE9e."
|
|
1196
|
-
},
|
|
1197
|
-
logout: {
|
|
1198
|
-
description: "se d\xE9connecter de votre compte Autohand",
|
|
1199
|
-
confirm: "Se d\xE9connecter de {{email}} ?",
|
|
1200
|
-
success: "D\xE9connexion r\xE9ussie.",
|
|
1201
|
-
cancelled: "D\xE9connexion annul\xE9e."
|
|
1202
|
-
},
|
|
1203
|
-
sync: {
|
|
1204
|
-
description: "g\xE9rer la synchronisation des param\xE8tres",
|
|
1205
|
-
enabled: "Synchronisation des param\xE8tres activ\xE9e.",
|
|
1206
|
-
disabled: "Synchronisation des param\xE8tres d\xE9sactiv\xE9e.",
|
|
1207
|
-
status: "Statut de synchronisation : {{status}}",
|
|
1208
|
-
lastSync: "Derni\xE8re synchronisation : {{date}}"
|
|
1209
|
-
},
|
|
1210
|
-
feedback: {
|
|
1211
|
-
description: "envoyer des commentaires sur le CLI",
|
|
1212
|
-
prompt: "Entrez vos commentaires :",
|
|
1213
|
-
success: "Merci pour vos commentaires !",
|
|
1214
|
-
failed: "\xC9chec de l'envoi des commentaires : {{error}}"
|
|
1215
|
-
},
|
|
1216
|
-
hooks: {
|
|
1217
|
-
description: "g\xE9rer les git hooks",
|
|
1218
|
-
title: "Git Hooks",
|
|
1219
|
-
installed: "Hooks install\xE9s :",
|
|
1220
|
-
available: "Hooks disponibles :",
|
|
1221
|
-
noHooks: "Aucun hook configur\xE9."
|
|
1222
|
-
},
|
|
1223
|
-
skills: {
|
|
1224
|
-
description: "lister et g\xE9rer les comp\xE9tences",
|
|
1225
|
-
title: "Comp\xE9tences",
|
|
1226
|
-
installed: "Comp\xE9tences install\xE9es :",
|
|
1227
|
-
available: "Comp\xE9tences disponibles :",
|
|
1228
|
-
noSkills: "Aucune comp\xE9tence install\xE9e."
|
|
1229
|
-
},
|
|
1230
|
-
export: {
|
|
1231
|
-
description: "exporter les donn\xE9es de session",
|
|
1232
|
-
success: "Export\xE9 vers {{path}}",
|
|
1233
|
-
failed: "\xC9chec de l'exportation : {{error}}"
|
|
1234
|
-
},
|
|
1235
|
-
agents: {
|
|
1236
|
-
description: "g\xE9rer les sous-agents",
|
|
1237
|
-
title: "Sous-Agents",
|
|
1238
|
-
noAgents: "Aucun sous-agent configur\xE9."
|
|
1239
|
-
},
|
|
1240
|
-
automode: {
|
|
1241
|
-
description: "g\xE9rer le mode autonome",
|
|
1242
|
-
starting: "D\xE9marrage du mode auto...",
|
|
1243
|
-
stopping: "Arr\xEAt du mode auto...",
|
|
1244
|
-
iteration: "It\xE9ration {{current}} sur {{max}}",
|
|
1245
|
-
completed: "Mode auto termin\xE9.",
|
|
1246
|
-
aborted: "Mode auto abandonn\xE9."
|
|
1247
|
-
},
|
|
1248
|
-
share: {
|
|
1249
|
-
description: "partager la session",
|
|
1250
|
-
generating: "G\xE9n\xE9ration du lien de partage...",
|
|
1251
|
-
success: "Lien de partage : {{url}}",
|
|
1252
|
-
failed: "\xC9chec de la g\xE9n\xE9ration du lien de partage : {{error}}"
|
|
1253
|
-
},
|
|
1254
|
-
addDir: {
|
|
1255
|
-
description: "ajouter des r\xE9pertoires \xE0 la port\xE9e du workspace",
|
|
1256
|
-
added: "R\xE9pertoire ajout\xE9 : {{path}}",
|
|
1257
|
-
alreadyAdded: "R\xE9pertoire d\xE9j\xE0 ajout\xE9 : {{path}}",
|
|
1258
|
-
notFound: "R\xE9pertoire non trouv\xE9 : {{path}}"
|
|
1259
|
-
}
|
|
1260
|
-
},
|
|
1261
|
-
setup: {
|
|
1262
|
-
welcome: "Bienvenue sur Autohand !",
|
|
1263
|
-
subtitle: "Votre agent de codage IA ultra-rapide",
|
|
1264
|
-
letsStart: "Configurons-vous en quelques \xE9tapes.",
|
|
1265
|
-
providerSelect: "Quel fournisseur LLM souhaitez-vous utiliser ?",
|
|
1266
|
-
apiKeyPrompt: "Entrez votre cl\xE9 API {{provider}} :",
|
|
1267
|
-
apiKeyHelp: "Obtenez votre cl\xE9 API sur : {{url}}",
|
|
1268
|
-
apiKeyHint: "Votre cl\xE9 API sera stock\xE9e localement dans ~/.autohand/config.json",
|
|
1269
|
-
modelPrompt: "Entrez l'ID du mod\xE8le (ou appuyez sur Entr\xE9e pour le d\xE9faut) :",
|
|
1270
|
-
modelDefault: "Par d\xE9faut : {{model}}",
|
|
1271
|
-
testingConnection: "Test de la connexion...",
|
|
1272
|
-
connectionSuccess: "Connexion r\xE9ussie !",
|
|
1273
|
-
connectionFailed: "\xC9chec de la connexion : {{error}}",
|
|
1274
|
-
telemetry: {
|
|
1275
|
-
title: "Aidez-nous \xE0 am\xE9liorer Autohand",
|
|
1276
|
-
description: "Nous collectons des donn\xE9es d'utilisation anonymes pour comprendre comment Autohand est utilis\xE9.",
|
|
1277
|
-
whatWeCollect: "Ce que nous collectons :",
|
|
1278
|
-
collectItem1: "Utilisation des commandes (quelles fonctionnalit\xE9s sont populaires)",
|
|
1279
|
-
collectItem2: "Taux d'erreurs (pour corriger les bugs plus rapidement)",
|
|
1280
|
-
collectItem3: "M\xE9triques de performance (pour acc\xE9l\xE9rer les choses)",
|
|
1281
|
-
whatWeNeverCollect: "Ce que nous ne collectons jamais :",
|
|
1282
|
-
neverItem1: "Votre code ou le contenu des fichiers",
|
|
1283
|
-
neverItem2: "Cl\xE9s API ou identifiants",
|
|
1284
|
-
neverItem3: "Informations personnelles",
|
|
1285
|
-
prompt: "Partager des donn\xE9es d'utilisation anonymes pour aider \xE0 am\xE9liorer Autohand ?",
|
|
1286
|
-
thanks: "Merci de nous aider \xE0 am\xE9liorer Autohand !",
|
|
1287
|
-
declined: "Pas de probl\xE8me ! Vous pouvez changer cela \xE0 tout moment dans la configuration."
|
|
1288
|
-
},
|
|
1289
|
-
complete: "Configuration termin\xE9e !",
|
|
1290
|
-
created: "Ce qui a \xE9t\xE9 cr\xE9\xE9 :",
|
|
1291
|
-
configFile: "~/.autohand/config.json (vos param\xE8tres)",
|
|
1292
|
-
agentsFile: "AGENTS.md (instructions du projet pour Autohand)",
|
|
1293
|
-
nextSteps: "Prochaines \xE9tapes :",
|
|
1294
|
-
tryCommand: "Essayez : autohand"
|
|
1295
|
-
},
|
|
1296
|
-
errors: {
|
|
1297
|
-
generic: "Une erreur s'est produite : {{message}}",
|
|
1298
|
-
invalidLocale: "Locale invalide : {{locale}}. Support\xE9es : {{supported}}",
|
|
1299
|
-
configParseFailed: "\xC9chec de l'analyse de la configuration dans {{path}} : {{error}}",
|
|
1300
|
-
configSaveFailed: "\xC9chec de la sauvegarde de la configuration : {{error}}",
|
|
1301
|
-
apiKeyRequired: "Cl\xE9 API requise",
|
|
1302
|
-
apiKeyTooShort: "La cl\xE9 API semble trop courte",
|
|
1303
|
-
apiKeyInvalid: "Format de cl\xE9 API invalide",
|
|
1304
|
-
directoryNotExist: "Le r\xE9pertoire n'existe pas : {{path}}",
|
|
1305
|
-
unsafeDirectory: "R\xE9pertoire non s\xE9curis\xE9 : {{path}}. Impossible d'op\xE9rer dans les r\xE9pertoires syst\xE8me.",
|
|
1306
|
-
fileNotFound: "Fichier non trouv\xE9 : {{path}}",
|
|
1307
|
-
permissionDenied: "Permission refus\xE9e : {{path}}",
|
|
1308
|
-
patchRequiresPrompt: "--patch n\xE9cessite --prompt pour sp\xE9cifier l'instruction",
|
|
1309
|
-
autoModeRequiresPrompt: "--auto-mode n\xE9cessite un prompt de t\xE2che",
|
|
1310
|
-
noProviderConfigured: "Aucun fournisseur configur\xE9. Ex\xE9cutez la configuration avec : autohand --setup",
|
|
1311
|
-
modelNotFound: "Mod\xE8le non trouv\xE9 : {{model}}",
|
|
1312
|
-
rateLimited: "Limite de d\xE9bit atteinte. Veuillez patienter et r\xE9essayer.",
|
|
1313
|
-
networkError: "Erreur r\xE9seau : {{message}}",
|
|
1314
|
-
timeout: "La requ\xEAte a expir\xE9. Veuillez r\xE9essayer.",
|
|
1315
|
-
contextTooLong: "Contexte trop long. Essayez /new pour repartir \xE0 z\xE9ro ou /undo pour supprimer les tours r\xE9cents.",
|
|
1316
|
-
authFailed: "\xC9chec de l'authentification. V\xE9rifiez votre cl\xE9 API.",
|
|
1317
|
-
paymentRequired: "Paiement requis. V\xE9rifiez le solde de votre compte.",
|
|
1318
|
-
serverError: "Erreur serveur. Veuillez r\xE9essayer plus tard.",
|
|
1319
|
-
cancelled: "Op\xE9ration annul\xE9e par l'utilisateur."
|
|
1320
|
-
},
|
|
1321
|
-
agent: {
|
|
1322
|
-
thinking: "R\xE9flexion...",
|
|
1323
|
-
executing: "Ex\xE9cution de {{tool}}...",
|
|
1324
|
-
reading: "Lecture de {{file}}...",
|
|
1325
|
-
writing: "\xC9criture de {{file}}...",
|
|
1326
|
-
searching: "Recherche...",
|
|
1327
|
-
toolSuccess: "{{tool}} termin\xE9 avec succ\xE8s",
|
|
1328
|
-
toolFailed: "{{tool}} a \xE9chou\xE9 : {{error}}",
|
|
1329
|
-
taskComplete: "T\xE2che termin\xE9e",
|
|
1330
|
-
noChanges: "Aucune modification effectu\xE9e.",
|
|
1331
|
-
changesApplied: "Modifications appliqu\xE9es avec succ\xE8s.",
|
|
1332
|
-
awaitingApproval: "En attente d'approbation...",
|
|
1333
|
-
approved: "Approuv\xE9",
|
|
1334
|
-
denied: "Refus\xE9",
|
|
1335
|
-
skipped: "Ignor\xE9",
|
|
1336
|
-
exploring: "Exploration...",
|
|
1337
|
-
exploredFiles: "{{count}} fichiers explor\xE9s"
|
|
1338
|
-
},
|
|
1339
|
-
providers: {
|
|
1340
|
-
openrouter: "OpenRouter",
|
|
1341
|
-
openai: "OpenAI",
|
|
1342
|
-
ollama: "Ollama",
|
|
1343
|
-
llamacpp: "llama.cpp",
|
|
1344
|
-
mlx: "MLX (Apple Silicon)",
|
|
1345
|
-
hints: {
|
|
1346
|
-
openrouter: "Cloud - Acc\xE8s \xE0 plus de 100 mod\xE8les (Claude, GPT-4, etc.)",
|
|
1347
|
-
openai: "Cloud - Mod\xE8les officiels OpenAI (GPT-4o, o1, etc.)",
|
|
1348
|
-
ollama: "Local - Ex\xE9cutez des mod\xE8les sur votre machine (gratuit)",
|
|
1349
|
-
llamacpp: "Local - Inf\xE9rence rapide avec des mod\xE8les GGUF",
|
|
1350
|
-
mlx: "Local - Optimis\xE9 pour Apple Silicon Macs"
|
|
1351
|
-
}
|
|
1352
|
-
},
|
|
1353
|
-
startup: {
|
|
1354
|
-
checkingTools: "V\xE9rification des outils requis...",
|
|
1355
|
-
toolFound: "{{tool}} trouv\xE9",
|
|
1356
|
-
toolMissing: "{{tool}} non trouv\xE9",
|
|
1357
|
-
installHint: "Installer avec : {{command}}",
|
|
1358
|
-
allToolsReady: "Tous les outils sont pr\xEAts !",
|
|
1359
|
-
someToolsMissing: "Certains outils manquent. Certaines fonctionnalit\xE9s peuvent ne pas fonctionner."
|
|
1360
|
-
},
|
|
1361
|
-
confirmation: {
|
|
1362
|
-
proceed: "Continuer ?",
|
|
1363
|
-
areYouSure: "\xCAtes-vous s\xFBr ?",
|
|
1364
|
-
thisWillDelete: "Cela supprimera {{item}}. Cette action ne peut pas \xEAtre annul\xE9e.",
|
|
1365
|
-
confirm: "Confirmer",
|
|
1366
|
-
cancel: "Annuler",
|
|
1367
|
-
yesDelete: "Oui, supprimer",
|
|
1368
|
-
noDontDelete: "Non, garder"
|
|
1369
|
-
},
|
|
1370
|
-
diff: {
|
|
1371
|
-
title: "Modifications dans {{file}}",
|
|
1372
|
-
additions: "{{count}} ajouts",
|
|
1373
|
-
deletions: "{{count}} suppressions",
|
|
1374
|
-
noChanges: "Aucune modification",
|
|
1375
|
-
apply: "Appliquer les modifications ?",
|
|
1376
|
-
applied: "Modifications appliqu\xE9es.",
|
|
1377
|
-
discarded: "Modifications annul\xE9es."
|
|
1378
|
-
},
|
|
1379
|
-
ui: {
|
|
1380
|
-
escToCancel: "esc pour annuler",
|
|
1381
|
-
commandHint: "/ pour les commandes \xB7 @ pour mentionner des fichiers",
|
|
1382
|
-
ctrlCToExit: "Appuyez \xE0 nouveau sur Ctrl+C pour quitter",
|
|
1383
|
-
noMatchingCommands: "Aucune commande correspondante.",
|
|
1384
|
-
selectFile: "S\xE9lectionnez un fichier",
|
|
1385
|
-
noMatchingFiles: "Aucun fichier correspondant. Continuez \xE0 taper...",
|
|
1386
|
-
thinking: "R\xE9flexion",
|
|
1387
|
-
planModeActive: "Mode plan actif - outils en lecture seule",
|
|
1388
|
-
planModeExecuting: "Ex\xE9cution du plan",
|
|
1389
|
-
typeToFilter: "Filtrer",
|
|
1390
|
-
navigateHint: "Tapez pour filtrer \xB7 \u2191/\u2193 naviguer \xB7 Entr\xE9e ex\xE9cuter \xB7 Esc annuler",
|
|
1391
|
-
fileNavigateHint: "Tapez pour filtrer \xB7 \u2191/\u2193 naviguer \xB7 Entr\xE9e choisir \xB7 Esc annuler",
|
|
1392
|
-
questionPrompt: "\u2753",
|
|
1393
|
-
questionOther: "Autre (tapez votre propre r\xE9ponse)",
|
|
1394
|
-
questionYourAnswer: "\u25B8 Votre r\xE9ponse",
|
|
1395
|
-
questionCustomHint: "\u21B5 Soumettre \xB7 ESC Retour",
|
|
1396
|
-
questionSelectHint: "\u2191\u2193 Naviguer \xB7 \u21B5 S\xE9lectionner \xB7 1-9 Raccourci \xB7 ESC Annuler",
|
|
1397
|
-
noOptionsAvailable: "Aucune option disponible",
|
|
1398
|
-
planRevise: "Non, r\xE9viser le plan",
|
|
1399
|
-
planEditHint: "ctrl-g pour \xE9diter dans VS Code",
|
|
1400
|
-
confirmYes: "Oui",
|
|
1401
|
-
confirmNo: "Non",
|
|
1402
|
-
inputHint: "Entr\xE9e pour soumettre, ESC pour annuler",
|
|
1403
|
-
inputPlaceholder: "Tapez votre r\xE9ponse...",
|
|
1404
|
-
passwordPlaceholder: "Entrez le mot de passe...",
|
|
1405
|
-
validationError: "Entr\xE9e invalide"
|
|
1406
|
-
},
|
|
1407
|
-
languages: {
|
|
1408
|
-
en: "English",
|
|
1409
|
-
"zh-cn": "\u7B80\u4F53\u4E2D\u6587 (Chinois Simplifi\xE9)",
|
|
1410
|
-
"zh-tw": "\u7E41\u9AD4\u4E2D\u6587 (Chinois Traditionnel)",
|
|
1411
|
-
fr: "Fran\xE7ais (Fran\xE7ais)",
|
|
1412
|
-
de: "Deutsch (Allemand)",
|
|
1413
|
-
it: "Italiano (Italien)",
|
|
1414
|
-
es: "Espa\xF1ol (Espagnol)",
|
|
1415
|
-
ja: "\u65E5\u672C\u8A9E (Japonais)",
|
|
1416
|
-
ko: "\uD55C\uAD6D\uC5B4 (Cor\xE9en)",
|
|
1417
|
-
ru: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439 (Russe)",
|
|
1418
|
-
"pt-br": "Portugu\xEAs (Portugais Br\xE9silien)",
|
|
1419
|
-
tr: "T\xFCrk\xE7e (Turc)",
|
|
1420
|
-
pl: "Polski (Polonais)",
|
|
1421
|
-
cs: "\u010Ce\u0161tina (Tch\xE8que)",
|
|
1422
|
-
hu: "Magyar (Hongrois)",
|
|
1423
|
-
hi: "\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)"
|
|
1424
|
-
}
|
|
1425
|
-
};
|
|
1426
|
-
|
|
1427
|
-
// src/i18n/locales/pt-br.json
|
|
1428
|
-
var pt_br_default = {
|
|
1429
|
-
common: {
|
|
1430
|
-
error: "Erro",
|
|
1431
|
-
warning: "Aviso",
|
|
1432
|
-
success: "Sucesso",
|
|
1433
|
-
failed: "Falhou",
|
|
1434
|
-
cancelled: "Cancelado",
|
|
1435
|
-
continue: "Continuar",
|
|
1436
|
-
yes: "Sim",
|
|
1437
|
-
no: "N\xE3o",
|
|
1438
|
-
done: "Conclu\xEDdo",
|
|
1439
|
-
loading: "Carregando...",
|
|
1440
|
-
pressEnter: "Pressione Enter para continuar...",
|
|
1441
|
-
pressEscToCancel: "Pressione Esc para cancelar",
|
|
1442
|
-
or: "ou",
|
|
1443
|
-
and: "e",
|
|
1444
|
-
unknown: "Desconhecido",
|
|
1445
|
-
none: "Nenhum",
|
|
1446
|
-
default: "Padr\xE3o",
|
|
1447
|
-
current: "atual",
|
|
1448
|
-
required: "obrigat\xF3rio",
|
|
1449
|
-
optional: "opcional",
|
|
1450
|
-
enabled: "Habilitado",
|
|
1451
|
-
disabled: "Desabilitado",
|
|
1452
|
-
on: "Ligado",
|
|
1453
|
-
off: "Desligado"
|
|
1454
|
-
},
|
|
1455
|
-
cli: {
|
|
1456
|
-
description: "Agente de codifica\xE7\xE3o aut\xF4nomo com LLM via CLI",
|
|
1457
|
-
options: {
|
|
1458
|
-
prompt: "Executar uma \xFAnica instru\xE7\xE3o em modo comando",
|
|
1459
|
-
path: "Caminho do workspace para operar",
|
|
1460
|
-
yes: "Auto-confirmar a\xE7\xF5es arriscadas",
|
|
1461
|
-
dryRun: "Visualizar a\xE7\xF5es sem aplicar mudan\xE7as",
|
|
1462
|
-
debug: "Habilitar sa\xEDda de debug (log detalhado)",
|
|
1463
|
-
model: "Sobrescrever o modelo LLM configurado",
|
|
1464
|
-
config: "Caminho para arquivo de config (padr\xE3o ~/.autohand/config.json)",
|
|
1465
|
-
temperature: "Temperatura de amostragem",
|
|
1466
|
-
displayLanguage: "Definir idioma de exibi\xE7\xE3o (ex: en, zh-cn, fr, de)",
|
|
1467
|
-
autoCommit: "Auto-commit com mensagem gerada por LLM",
|
|
1468
|
-
unrestricted: "Executar sem prompts de aprova\xE7\xE3o",
|
|
1469
|
-
restricted: "Negar opera\xE7\xF5es perigosas automaticamente",
|
|
1470
|
-
autoSkill: "Auto-gerar skills baseado em an\xE1lise do projeto",
|
|
1471
|
-
skillInstall: "Instalar uma skill da comunidade",
|
|
1472
|
-
project: "Instalar skill no n\xEDvel do projeto",
|
|
1473
|
-
permissions: "Exibir configura\xE7\xF5es de permiss\xE3o atuais e sair",
|
|
1474
|
-
login: "Entrar na sua conta Autohand",
|
|
1475
|
-
logout: "Sair da sua conta Autohand",
|
|
1476
|
-
syncSettings: "Habilitar/desabilitar sincroniza\xE7\xE3o de configura\xE7\xF5es",
|
|
1477
|
-
patch: "Gerar patch git sem aplicar mudan\xE7as",
|
|
1478
|
-
output: "Arquivo de sa\xEDda para patch (padr\xE3o: stdout)",
|
|
1479
|
-
autoMode: "Iniciar loop de desenvolvimento aut\xF4nomo",
|
|
1480
|
-
maxIterations: "M\xE1ximo de itera\xE7\xF5es em auto-mode (padr\xE3o: 50)",
|
|
1481
|
-
completionPromise: "Texto marcador de conclus\xE3o (padr\xE3o: DONE)",
|
|
1482
|
-
noWorktree: "Desabilitar isolamento de git worktree em auto-mode",
|
|
1483
|
-
checkpointInterval: "Git commit a cada N itera\xE7\xF5es (padr\xE3o: 5)",
|
|
1484
|
-
maxRuntime: "Tempo m\xE1ximo de execu\xE7\xE3o em minutos (padr\xE3o: 120)",
|
|
1485
|
-
maxCost: "Custo m\xE1ximo de API em d\xF3lares (padr\xE3o: 10)",
|
|
1486
|
-
setup: "Executar o assistente de configura\xE7\xE3o",
|
|
1487
|
-
addDir: "Adicionar diret\xF3rios adicionais ao escopo do workspace"
|
|
1488
|
-
}
|
|
1489
|
-
},
|
|
1490
|
-
welcome: {
|
|
1491
|
-
banner: "Bem-vindo ao Autohand!",
|
|
1492
|
-
subtitle: "Seu agente de codifica\xE7\xE3o com IA super r\xE1pido",
|
|
1493
|
-
version: "v{{version}}",
|
|
1494
|
-
updateAvailable: "Atualiza\xE7\xE3o dispon\xEDvel: {{current}} -> {{latest}}. Execute 'npm i -g autohand' para atualizar.",
|
|
1495
|
-
loggedInAs: "Logado como {{email}}",
|
|
1496
|
-
notLoggedIn: "N\xE3o logado",
|
|
1497
|
-
modelLine: "modelo: {{model}}",
|
|
1498
|
-
directoryLine: "diret\xF3rio: {{directory}}",
|
|
1499
|
-
tips: {
|
|
1500
|
-
title: "Para come\xE7ar, descreva uma tarefa ou tente um destes comandos:",
|
|
1501
|
-
init: "/init - criar um arquivo AGENTS.md com instru\xE7\xF5es para o Autohand",
|
|
1502
|
-
help: "/help - mostrar todos os comandos dispon\xEDveis",
|
|
1503
|
-
model: "/model - mudar o modelo de IA",
|
|
1504
|
-
language: "/language - mudar o idioma de exibi\xE7\xE3o"
|
|
1505
|
-
},
|
|
1506
|
-
shortcuts: {
|
|
1507
|
-
title: "Atalhos de teclado:",
|
|
1508
|
-
mention: "@ - mencionar arquivos para contexto",
|
|
1509
|
-
arrows: "Setas - navegar sugest\xF5es",
|
|
1510
|
-
tab: "Tab - autocompletar",
|
|
1511
|
-
escape: "Esc - cancelar opera\xE7\xE3o atual",
|
|
1512
|
-
ctrlC: "Ctrl+C - sair"
|
|
1513
|
-
}
|
|
1514
|
-
},
|
|
1515
|
-
commands: {
|
|
1516
|
-
help: {
|
|
1517
|
-
title: "Comandos Dispon\xEDveis:",
|
|
1518
|
-
command: "Comando",
|
|
1519
|
-
description: "Descri\xE7\xE3o",
|
|
1520
|
-
tips: {
|
|
1521
|
-
title: "Dicas:",
|
|
1522
|
-
mention: "Digite @ para mencionar arquivos para a IA",
|
|
1523
|
-
arrows: "Use as setas para navegar nas sugest\xF5es de arquivos",
|
|
1524
|
-
tab: "Pressione Tab para autocompletar caminhos de arquivos",
|
|
1525
|
-
escape: "Pressione Esc para cancelar a opera\xE7\xE3o atual"
|
|
1526
|
-
},
|
|
1527
|
-
docsLink: "Para mais informa\xE7\xF5es, visite {{link}}"
|
|
1528
|
-
},
|
|
1529
|
-
model: {
|
|
1530
|
-
description: "escolher qual modelo e esfor\xE7o de racioc\xEDnio usar",
|
|
1531
|
-
title: "Sele\xE7\xE3o de Modelo",
|
|
1532
|
-
currentModel: "Modelo atual: {{model}}",
|
|
1533
|
-
selectPrompt: "Selecione um modelo:",
|
|
1534
|
-
changed: "Modelo alterado para {{model}}",
|
|
1535
|
-
noChange: "Nenhuma altera\xE7\xE3o feita."
|
|
1536
|
-
},
|
|
1537
|
-
theme: {
|
|
1538
|
-
description: "mudar tema de cores do terminal",
|
|
1539
|
-
title: "Sele\xE7\xE3o de Tema",
|
|
1540
|
-
currentTheme: "Tema atual: {{theme}}",
|
|
1541
|
-
selectPrompt: "Selecione um tema:",
|
|
1542
|
-
changed: "Tema alterado para '{{theme}}'",
|
|
1543
|
-
noChange: "Nenhuma altera\xE7\xE3o feita."
|
|
1544
|
-
},
|
|
1545
|
-
language: {
|
|
1546
|
-
description: "mudar idioma de exibi\xE7\xE3o",
|
|
1547
|
-
title: "Sele\xE7\xE3o de Idioma",
|
|
1548
|
-
currentLanguage: "Idioma atual: {{language}}",
|
|
1549
|
-
selectPrompt: "Selecione um idioma:",
|
|
1550
|
-
changed: "Idioma alterado para {{language}}",
|
|
1551
|
-
noChange: "Nenhuma altera\xE7\xE3o feita.",
|
|
1552
|
-
restartHint: "Algumas mudan\xE7as podem exigir reiniciar a CLI para ter efeito completo."
|
|
1553
|
-
},
|
|
1554
|
-
quit: {
|
|
1555
|
-
description: "sair do Autohand",
|
|
1556
|
-
goodbye: "At\xE9 logo!"
|
|
1557
|
-
},
|
|
1558
|
-
init: {
|
|
1559
|
-
description: "criar arquivo AGENTS.md",
|
|
1560
|
-
created: "AGENTS.md criado em {{path}}",
|
|
1561
|
-
alreadyExists: "AGENTS.md j\xE1 existe em {{path}}",
|
|
1562
|
-
overwritePrompt: "Sobrescrever AGENTS.md existente?"
|
|
1563
|
-
},
|
|
1564
|
-
undo: {
|
|
1565
|
-
description: "reverter a \xFAltima muta\xE7\xE3o de arquivo",
|
|
1566
|
-
success: "Mudan\xE7as revertidas em {{file}}",
|
|
1567
|
-
noChanges: "Nenhuma mudan\xE7a para desfazer.",
|
|
1568
|
-
failed: "Falha ao desfazer: {{error}}"
|
|
1569
|
-
},
|
|
1570
|
-
new: {
|
|
1571
|
-
description: "iniciar uma nova conversa",
|
|
1572
|
-
cleared: "Conversa limpa. Come\xE7ando do zero."
|
|
1573
|
-
},
|
|
1574
|
-
status: {
|
|
1575
|
-
description: "mostrar status atual",
|
|
1576
|
-
title: "Status do Autohand",
|
|
1577
|
-
version: "Vers\xE3o",
|
|
1578
|
-
sessionId: "ID da Sess\xE3o",
|
|
1579
|
-
cwd: "Diret\xF3rio atual",
|
|
1580
|
-
provider: "Provedor",
|
|
1581
|
-
model: "Modelo",
|
|
1582
|
-
locale: "Idioma",
|
|
1583
|
-
apiStatus: "Status da API",
|
|
1584
|
-
connected: "Conectado",
|
|
1585
|
-
disconnected: "Desconectado",
|
|
1586
|
-
sessions: "Sess\xF5es",
|
|
1587
|
-
total: "{{count}} total"
|
|
1588
|
-
},
|
|
1589
|
-
sessions: {
|
|
1590
|
-
description: "listar sess\xF5es salvas",
|
|
1591
|
-
title: "Sess\xF5es Salvas",
|
|
1592
|
-
noSessions: "Nenhuma sess\xE3o salva encontrada.",
|
|
1593
|
-
selectPrompt: "Selecione uma sess\xE3o para retomar:",
|
|
1594
|
-
sessionInfo: "{{name}} - {{date}}"
|
|
1595
|
-
},
|
|
1596
|
-
resume: {
|
|
1597
|
-
description: "retomar uma sess\xE3o anterior",
|
|
1598
|
-
resuming: "Retomando sess\xE3o {{id}}...",
|
|
1599
|
-
notFound: "Sess\xE3o n\xE3o encontrada: {{id}}",
|
|
1600
|
-
failed: "Falha ao retomar sess\xE3o: {{error}}"
|
|
1601
|
-
},
|
|
1602
|
-
memory: {
|
|
1603
|
-
description: "gerenciar mem\xF3ria do projeto e usu\xE1rio",
|
|
1604
|
-
title: "Gerenciamento de Mem\xF3ria",
|
|
1605
|
-
projectMemory: "Mem\xF3ria do Projeto",
|
|
1606
|
-
userMemory: "Mem\xF3ria do Usu\xE1rio",
|
|
1607
|
-
noMemory: "Nenhuma mem\xF3ria armazenada.",
|
|
1608
|
-
addPrompt: "Adicionar nova mem\xF3ria:",
|
|
1609
|
-
added: "Mem\xF3ria adicionada.",
|
|
1610
|
-
cleared: "Mem\xF3ria limpa."
|
|
1611
|
-
},
|
|
1612
|
-
permissions: {
|
|
1613
|
-
description: "exibir configura\xE7\xF5es de permiss\xE3o atuais",
|
|
1614
|
-
title: "Configura\xE7\xF5es de Permiss\xE3o",
|
|
1615
|
-
mode: "Modo: {{mode}}",
|
|
1616
|
-
allowed: "A\xE7\xF5es permitidas:",
|
|
1617
|
-
denied: "A\xE7\xF5es negadas:",
|
|
1618
|
-
pending: "Aguardando aprova\xE7\xE3o:"
|
|
1619
|
-
},
|
|
1620
|
-
login: {
|
|
1621
|
-
description: "entrar na sua conta Autohand",
|
|
1622
|
-
prompt: "Digite seu c\xF3digo de login:",
|
|
1623
|
-
success: "Login realizado com sucesso como {{email}}",
|
|
1624
|
-
failed: "Falha no login: {{error}}",
|
|
1625
|
-
cancelled: "Login cancelado."
|
|
1626
|
-
},
|
|
1627
|
-
logout: {
|
|
1628
|
-
description: "sair da sua conta Autohand",
|
|
1629
|
-
confirm: "Sair de {{email}}?",
|
|
1630
|
-
success: "Logout realizado com sucesso.",
|
|
1631
|
-
cancelled: "Logout cancelado."
|
|
1632
|
-
},
|
|
1633
|
-
sync: {
|
|
1634
|
-
description: "gerenciar sincroniza\xE7\xE3o de configura\xE7\xF5es",
|
|
1635
|
-
enabled: "Sincroniza\xE7\xE3o de configura\xE7\xF5es habilitada.",
|
|
1636
|
-
disabled: "Sincroniza\xE7\xE3o de configura\xE7\xF5es desabilitada.",
|
|
1637
|
-
status: "Status de sincroniza\xE7\xE3o: {{status}}",
|
|
1638
|
-
lastSync: "\xDAltima sincroniza\xE7\xE3o: {{date}}"
|
|
1639
|
-
},
|
|
1640
|
-
feedback: {
|
|
1641
|
-
description: "enviar feedback sobre a CLI",
|
|
1642
|
-
prompt: "Digite seu feedback:",
|
|
1643
|
-
success: "Obrigado pelo seu feedback!",
|
|
1644
|
-
failed: "Falha ao enviar feedback: {{error}}"
|
|
1645
|
-
},
|
|
1646
|
-
hooks: {
|
|
1647
|
-
description: "gerenciar git hooks",
|
|
1648
|
-
title: "Git Hooks",
|
|
1649
|
-
installed: "Hooks instalados:",
|
|
1650
|
-
available: "Hooks dispon\xEDveis:",
|
|
1651
|
-
noHooks: "Nenhum hook configurado."
|
|
1652
|
-
},
|
|
1653
|
-
skills: {
|
|
1654
|
-
description: "listar e gerenciar skills",
|
|
1655
|
-
title: "Skills",
|
|
1656
|
-
installed: "Skills instaladas:",
|
|
1657
|
-
available: "Skills dispon\xEDveis:",
|
|
1658
|
-
noSkills: "Nenhuma skill instalada."
|
|
1659
|
-
},
|
|
1660
|
-
export: {
|
|
1661
|
-
description: "exportar dados da sess\xE3o",
|
|
1662
|
-
success: "Exportado para {{path}}",
|
|
1663
|
-
failed: "Falha na exporta\xE7\xE3o: {{error}}"
|
|
1664
|
-
},
|
|
1665
|
-
agents: {
|
|
1666
|
-
description: "gerenciar sub-agentes",
|
|
1667
|
-
title: "Sub-Agentes",
|
|
1668
|
-
noAgents: "Nenhum sub-agente configurado."
|
|
1669
|
-
},
|
|
1670
|
-
automode: {
|
|
1671
|
-
description: "gerenciar modo aut\xF4nomo",
|
|
1672
|
-
starting: "Iniciando auto-mode...",
|
|
1673
|
-
stopping: "Parando auto-mode...",
|
|
1674
|
-
iteration: "Itera\xE7\xE3o {{current}} de {{max}}",
|
|
1675
|
-
completed: "Auto-mode conclu\xEDdo.",
|
|
1676
|
-
aborted: "Auto-mode abortado."
|
|
1677
|
-
},
|
|
1678
|
-
share: {
|
|
1679
|
-
description: "compartilhar sess\xE3o",
|
|
1680
|
-
generating: "Gerando link de compartilhamento...",
|
|
1681
|
-
success: "Link de compartilhamento: {{url}}",
|
|
1682
|
-
failed: "Falha ao gerar link de compartilhamento: {{error}}"
|
|
1683
|
-
},
|
|
1684
|
-
addDir: {
|
|
1685
|
-
description: "adicionar diret\xF3rios ao escopo do workspace",
|
|
1686
|
-
added: "Diret\xF3rio adicionado: {{path}}",
|
|
1687
|
-
alreadyAdded: "Diret\xF3rio j\xE1 adicionado: {{path}}",
|
|
1688
|
-
notFound: "Diret\xF3rio n\xE3o encontrado: {{path}}"
|
|
1689
|
-
}
|
|
1690
|
-
},
|
|
1691
|
-
setup: {
|
|
1692
|
-
welcome: "Bem-vindo ao Autohand!",
|
|
1693
|
-
subtitle: "Seu agente de codifica\xE7\xE3o com IA super r\xE1pido",
|
|
1694
|
-
letsStart: "Vamos configurar em apenas alguns passos.",
|
|
1695
|
-
providerSelect: "Qual provedor de LLM voc\xEA gostaria de usar?",
|
|
1696
|
-
apiKeyPrompt: "Digite sua chave de API do {{provider}}:",
|
|
1697
|
-
apiKeyHelp: "Obtenha sua chave de API em: {{url}}",
|
|
1698
|
-
apiKeyHint: "Sua chave de API ser\xE1 armazenada localmente em ~/.autohand/config.json",
|
|
1699
|
-
modelPrompt: "Digite o ID do modelo (ou pressione Enter para o padr\xE3o):",
|
|
1700
|
-
modelDefault: "Padr\xE3o: {{model}}",
|
|
1701
|
-
testingConnection: "Testando conex\xE3o...",
|
|
1702
|
-
connectionSuccess: "Conex\xE3o bem-sucedida!",
|
|
1703
|
-
connectionFailed: "Falha na conex\xE3o: {{error}}",
|
|
1704
|
-
telemetry: {
|
|
1705
|
-
title: "Ajude-nos a melhorar o Autohand",
|
|
1706
|
-
description: "Coletamos dados de uso an\xF4nimos para entender como o Autohand \xE9 usado.",
|
|
1707
|
-
whatWeCollect: "O que coletamos:",
|
|
1708
|
-
collectItem1: "Uso de comandos (quais recursos s\xE3o populares)",
|
|
1709
|
-
collectItem2: "Taxas de erro (para corrigir bugs mais r\xE1pido)",
|
|
1710
|
-
collectItem3: "M\xE9tricas de performance (para acelerar as coisas)",
|
|
1711
|
-
whatWeNeverCollect: "O que nunca coletamos:",
|
|
1712
|
-
neverItem1: "Seu c\xF3digo ou conte\xFAdo de arquivos",
|
|
1713
|
-
neverItem2: "Chaves de API ou credenciais",
|
|
1714
|
-
neverItem3: "Informa\xE7\xF5es pessoais",
|
|
1715
|
-
prompt: "Compartilhar dados de uso an\xF4nimos para ajudar a melhorar o Autohand?",
|
|
1716
|
-
thanks: "Obrigado por ajudar a melhorar o Autohand!",
|
|
1717
|
-
declined: "Sem problemas! Voc\xEA pode mudar isso a qualquer momento nas configura\xE7\xF5es."
|
|
1718
|
-
},
|
|
1719
|
-
complete: "Configura\xE7\xE3o conclu\xEDda!",
|
|
1720
|
-
created: "O que foi criado:",
|
|
1721
|
-
configFile: "~/.autohand/config.json (suas configura\xE7\xF5es)",
|
|
1722
|
-
agentsFile: "AGENTS.md (instru\xE7\xF5es do projeto para o Autohand)",
|
|
1723
|
-
nextSteps: "Pr\xF3ximos passos:",
|
|
1724
|
-
tryCommand: "Tente: autohand"
|
|
1725
|
-
},
|
|
1726
|
-
errors: {
|
|
1727
|
-
generic: "Ocorreu um erro: {{message}}",
|
|
1728
|
-
invalidLocale: "Idioma inv\xE1lido: {{locale}}. Suportados: {{supported}}",
|
|
1729
|
-
configParseFailed: "Falha ao analisar config em {{path}}: {{error}}",
|
|
1730
|
-
configSaveFailed: "Falha ao salvar config: {{error}}",
|
|
1731
|
-
apiKeyRequired: "Chave de API \xE9 obrigat\xF3ria",
|
|
1732
|
-
apiKeyTooShort: "Chave de API parece muito curta",
|
|
1733
|
-
apiKeyInvalid: "Formato de chave de API inv\xE1lido",
|
|
1734
|
-
directoryNotExist: "Diret\xF3rio n\xE3o existe: {{path}}",
|
|
1735
|
-
unsafeDirectory: "Diret\xF3rio inseguro: {{path}}. N\xE3o \xE9 poss\xEDvel operar em diret\xF3rios do sistema.",
|
|
1736
|
-
fileNotFound: "Arquivo n\xE3o encontrado: {{path}}",
|
|
1737
|
-
permissionDenied: "Permiss\xE3o negada: {{path}}",
|
|
1738
|
-
patchRequiresPrompt: "--patch requer --prompt para especificar a instru\xE7\xE3o",
|
|
1739
|
-
autoModeRequiresPrompt: "--auto-mode requer um prompt de tarefa",
|
|
1740
|
-
noProviderConfigured: "Nenhum provedor configurado ainda. Execute a configura\xE7\xE3o com: autohand --setup",
|
|
1741
|
-
modelNotFound: "Modelo n\xE3o encontrado: {{model}}",
|
|
1742
|
-
rateLimited: "Limite de taxa atingido. Por favor, aguarde um momento e tente novamente.",
|
|
1743
|
-
networkError: "Erro de rede: {{message}}",
|
|
1744
|
-
timeout: "Tempo limite da requisi\xE7\xE3o esgotado. Por favor, tente novamente.",
|
|
1745
|
-
contextTooLong: "Contexto muito longo. Tente /new para come\xE7ar do zero ou /undo para remover turnos recentes.",
|
|
1746
|
-
authFailed: "Falha na autentica\xE7\xE3o. Verifique sua chave de API.",
|
|
1747
|
-
paymentRequired: "Pagamento necess\xE1rio. Verifique o saldo da sua conta.",
|
|
1748
|
-
serverError: "Erro do servidor. Por favor, tente novamente mais tarde.",
|
|
1749
|
-
cancelled: "Opera\xE7\xE3o cancelada pelo usu\xE1rio."
|
|
1750
|
-
},
|
|
1751
|
-
agent: {
|
|
1752
|
-
thinking: "Pensando...",
|
|
1753
|
-
executing: "Executando {{tool}}...",
|
|
1754
|
-
reading: "Lendo {{file}}...",
|
|
1755
|
-
writing: "Escrevendo {{file}}...",
|
|
1756
|
-
searching: "Pesquisando...",
|
|
1757
|
-
toolSuccess: "{{tool}} conclu\xEDdo com sucesso",
|
|
1758
|
-
toolFailed: "{{tool}} falhou: {{error}}",
|
|
1759
|
-
taskComplete: "Tarefa conclu\xEDda",
|
|
1760
|
-
noChanges: "Nenhuma mudan\xE7a foi feita.",
|
|
1761
|
-
changesApplied: "Mudan\xE7as aplicadas com sucesso.",
|
|
1762
|
-
awaitingApproval: "Aguardando aprova\xE7\xE3o...",
|
|
1763
|
-
approved: "Aprovado",
|
|
1764
|
-
denied: "Negado",
|
|
1765
|
-
skipped: "Ignorado",
|
|
1766
|
-
exploring: "Explorando...",
|
|
1767
|
-
exploredFiles: "{{count}} arquivos explorados"
|
|
1768
|
-
},
|
|
1769
|
-
providers: {
|
|
1770
|
-
openrouter: "OpenRouter",
|
|
1771
|
-
openai: "OpenAI",
|
|
1772
|
-
ollama: "Ollama",
|
|
1773
|
-
llamacpp: "llama.cpp",
|
|
1774
|
-
mlx: "MLX (Apple Silicon)",
|
|
1775
|
-
hints: {
|
|
1776
|
-
openrouter: "Nuvem - Acesso a 100+ modelos (Claude, GPT-4, etc.)",
|
|
1777
|
-
openai: "Nuvem - Modelos oficiais da OpenAI (GPT-4o, o1, etc.)",
|
|
1778
|
-
ollama: "Local - Execute modelos na sua m\xE1quina (gr\xE1tis)",
|
|
1779
|
-
llamacpp: "Local - Infer\xEAncia r\xE1pida com modelos GGUF",
|
|
1780
|
-
mlx: "Local - Otimizado para Macs com Apple Silicon"
|
|
1781
|
-
}
|
|
1782
|
-
},
|
|
1783
|
-
startup: {
|
|
1784
|
-
checkingTools: "Verificando ferramentas necess\xE1rias...",
|
|
1785
|
-
toolFound: "{{tool}} encontrado",
|
|
1786
|
-
toolMissing: "{{tool}} n\xE3o encontrado",
|
|
1787
|
-
installHint: "Instale com: {{command}}",
|
|
1788
|
-
allToolsReady: "Todas as ferramentas prontas!",
|
|
1789
|
-
someToolsMissing: "Algumas ferramentas est\xE3o faltando. Algumas funcionalidades podem n\xE3o funcionar."
|
|
1790
|
-
},
|
|
1791
|
-
confirmation: {
|
|
1792
|
-
proceed: "Prosseguir?",
|
|
1793
|
-
areYouSure: "Tem certeza?",
|
|
1794
|
-
thisWillDelete: "Isso ir\xE1 excluir {{item}}. Esta a\xE7\xE3o n\xE3o pode ser desfeita.",
|
|
1795
|
-
confirm: "Confirmar",
|
|
1796
|
-
cancel: "Cancelar",
|
|
1797
|
-
yesDelete: "Sim, excluir",
|
|
1798
|
-
noDontDelete: "N\xE3o, manter"
|
|
1799
|
-
},
|
|
1800
|
-
diff: {
|
|
1801
|
-
title: "Mudan\xE7as em {{file}}",
|
|
1802
|
-
additions: "{{count}} adi\xE7\xF5es",
|
|
1803
|
-
deletions: "{{count}} exclus\xF5es",
|
|
1804
|
-
noChanges: "Sem mudan\xE7as",
|
|
1805
|
-
apply: "Aplicar mudan\xE7as?",
|
|
1806
|
-
applied: "Mudan\xE7as aplicadas.",
|
|
1807
|
-
discarded: "Mudan\xE7as descartadas."
|
|
1808
|
-
},
|
|
1809
|
-
ui: {
|
|
1810
|
-
escToCancel: "esc para cancelar",
|
|
1811
|
-
commandHint: "/ para comandos \xB7 @ para mencionar arquivos",
|
|
1812
|
-
ctrlCToExit: "Pressione Ctrl+C novamente para sair",
|
|
1813
|
-
noMatchingCommands: "Nenhum comando encontrado.",
|
|
1814
|
-
selectFile: "Selecione um arquivo",
|
|
1815
|
-
noMatchingFiles: "Nenhum arquivo encontrado. Continue digitando...",
|
|
1816
|
-
thinking: "Pensando",
|
|
1817
|
-
planModeActive: "Modo planejamento ativo - ferramentas somente leitura",
|
|
1818
|
-
planModeExecuting: "Executando plano",
|
|
1819
|
-
typeToFilter: "Filtrar",
|
|
1820
|
-
navigateHint: "Digite para filtrar \xB7 \u2191/\u2193 navegar \xB7 Enter executar \xB7 Esc cancelar",
|
|
1821
|
-
fileNavigateHint: "Digite para filtrar \xB7 \u2191/\u2193 navegar \xB7 Enter escolher \xB7 Esc cancelar",
|
|
1822
|
-
questionPrompt: "\u2753",
|
|
1823
|
-
questionOther: "Outro (digite sua pr\xF3pria resposta)",
|
|
1824
|
-
questionYourAnswer: "\u25B8 Sua resposta",
|
|
1825
|
-
questionCustomHint: "\u21B5 Enviar \xB7 ESC Voltar",
|
|
1826
|
-
questionSelectHint: "\u2191\u2193 Navegar \xB7 \u21B5 Selecionar \xB7 1-9 Atalho \xB7 ESC Cancelar",
|
|
1827
|
-
noOptionsAvailable: "Nenhuma op\xE7\xE3o dispon\xEDvel",
|
|
1828
|
-
planRevise: "N\xE3o, revisar o plano",
|
|
1829
|
-
planEditHint: "ctrl-g para editar no VS Code",
|
|
1830
|
-
confirmYes: "Sim",
|
|
1831
|
-
confirmNo: "N\xE3o",
|
|
1832
|
-
inputHint: "Enter para enviar, ESC para cancelar",
|
|
1833
|
-
inputPlaceholder: "Digite sua resposta...",
|
|
1834
|
-
passwordPlaceholder: "Digite a senha...",
|
|
1835
|
-
validationError: "Entrada inv\xE1lida"
|
|
1836
|
-
},
|
|
1837
|
-
languages: {
|
|
1838
|
-
en: "English",
|
|
1839
|
-
"zh-cn": "\u7B80\u4F53\u4E2D\u6587 (Chin\xEAs Simplificado)",
|
|
1840
|
-
"zh-tw": "\u7E41\u9AD4\u4E2D\u6587 (Chin\xEAs Tradicional)",
|
|
1841
|
-
fr: "Fran\xE7ais (Franc\xEAs)",
|
|
1842
|
-
de: "Deutsch (Alem\xE3o)",
|
|
1843
|
-
it: "Italiano (Italiano)",
|
|
1844
|
-
es: "Espa\xF1ol (Espanhol)",
|
|
1845
|
-
ja: "\u65E5\u672C\u8A9E (Japon\xEAs)",
|
|
1846
|
-
ko: "\uD55C\uAD6D\uC5B4 (Coreano)",
|
|
1847
|
-
ru: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439 (Russo)",
|
|
1848
|
-
"pt-br": "Portugu\xEAs (Portugu\xEAs Brasileiro)",
|
|
1849
|
-
tr: "T\xFCrk\xE7e (Turco)",
|
|
1850
|
-
pl: "Polski (Polon\xEAs)",
|
|
1851
|
-
cs: "\u010Ce\u0161tina (Tcheco)",
|
|
1852
|
-
hu: "Magyar (H\xFAngaro)",
|
|
1853
|
-
hi: "\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)"
|
|
1854
|
-
}
|
|
1855
|
-
};
|
|
1856
|
-
|
|
1857
|
-
// src/i18n/locales/zh-cn.json
|
|
1858
|
-
var zh_cn_default = {
|
|
1859
|
-
common: {
|
|
1860
|
-
error: "\u9519\u8BEF",
|
|
1861
|
-
warning: "\u8B66\u544A",
|
|
1862
|
-
success: "\u6210\u529F",
|
|
1863
|
-
failed: "\u5931\u8D25",
|
|
1864
|
-
cancelled: "\u5DF2\u53D6\u6D88",
|
|
1865
|
-
continue: "\u7EE7\u7EED",
|
|
1866
|
-
yes: "\u662F",
|
|
1867
|
-
no: "\u5426",
|
|
1868
|
-
done: "\u5B8C\u6210",
|
|
1869
|
-
loading: "\u52A0\u8F7D\u4E2D...",
|
|
1870
|
-
pressEnter: "\u6309\u56DE\u8F66\u952E\u7EE7\u7EED...",
|
|
1871
|
-
pressEscToCancel: "\u6309 Esc \u952E\u53D6\u6D88",
|
|
1872
|
-
or: "\u6216",
|
|
1873
|
-
and: "\u548C",
|
|
1874
|
-
unknown: "\u672A\u77E5",
|
|
1875
|
-
none: "\u65E0",
|
|
1876
|
-
default: "\u9ED8\u8BA4",
|
|
1877
|
-
current: "\u5F53\u524D",
|
|
1878
|
-
required: "\u5FC5\u9700",
|
|
1879
|
-
optional: "\u53EF\u9009",
|
|
1880
|
-
enabled: "\u5DF2\u542F\u7528",
|
|
1881
|
-
disabled: "\u5DF2\u7981\u7528",
|
|
1882
|
-
on: "\u5F00",
|
|
1883
|
-
off: "\u5173"
|
|
1884
|
-
},
|
|
1885
|
-
cli: {
|
|
1886
|
-
description: "\u7531 LLM \u9A71\u52A8\u7684\u81EA\u4E3B\u7F16\u7801\u4EE3\u7406 CLI",
|
|
1887
|
-
options: {
|
|
1888
|
-
prompt: "\u5728\u547D\u4EE4\u6A21\u5F0F\u4E0B\u8FD0\u884C\u5355\u4E2A\u6307\u4EE4",
|
|
1889
|
-
path: "\u5DE5\u4F5C\u533A\u8DEF\u5F84",
|
|
1890
|
-
yes: "\u81EA\u52A8\u786E\u8BA4\u98CE\u9669\u64CD\u4F5C",
|
|
1891
|
-
dryRun: "\u9884\u89C8\u64CD\u4F5C\u800C\u4E0D\u5E94\u7528\u66F4\u6539",
|
|
1892
|
-
debug: "\u542F\u7528\u8C03\u8BD5\u8F93\u51FA\uFF08\u8BE6\u7EC6\u65E5\u5FD7\uFF09",
|
|
1893
|
-
model: "\u8986\u76D6\u914D\u7F6E\u7684 LLM \u6A21\u578B",
|
|
1894
|
-
config: "\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84\uFF08\u9ED8\u8BA4 ~/.autohand/config.json\uFF09",
|
|
1895
|
-
temperature: "\u91C7\u6837\u6E29\u5EA6",
|
|
1896
|
-
displayLanguage: "\u8BBE\u7F6E\u663E\u793A\u8BED\u8A00\uFF08\u4F8B\u5982 en\u3001zh-cn\u3001fr\u3001de\uFF09",
|
|
1897
|
-
autoCommit: "\u4F7F\u7528 LLM \u751F\u6210\u7684\u6D88\u606F\u81EA\u52A8\u63D0\u4EA4",
|
|
1898
|
-
unrestricted: "\u8FD0\u884C\u65F6\u65E0\u9700\u5BA1\u6279\u63D0\u793A",
|
|
1899
|
-
restricted: "\u81EA\u52A8\u62D2\u7EDD\u5371\u9669\u64CD\u4F5C",
|
|
1900
|
-
autoSkill: "\u57FA\u4E8E\u9879\u76EE\u5206\u6790\u81EA\u52A8\u751F\u6210\u6280\u80FD",
|
|
1901
|
-
skillInstall: "\u5B89\u88C5\u793E\u533A\u6280\u80FD",
|
|
1902
|
-
project: "\u5728\u9879\u76EE\u7EA7\u522B\u5B89\u88C5\u6280\u80FD",
|
|
1903
|
-
permissions: "\u663E\u793A\u5F53\u524D\u6743\u9650\u8BBE\u7F6E\u5E76\u9000\u51FA",
|
|
1904
|
-
login: "\u767B\u5F55\u60A8\u7684 Autohand \u8D26\u6237",
|
|
1905
|
-
logout: "\u9000\u51FA\u60A8\u7684 Autohand \u8D26\u6237",
|
|
1906
|
-
syncSettings: "\u542F\u7528/\u7981\u7528\u8BBE\u7F6E\u540C\u6B65",
|
|
1907
|
-
patch: "\u751F\u6210 git \u8865\u4E01\u800C\u4E0D\u5E94\u7528\u66F4\u6539",
|
|
1908
|
-
output: "\u8865\u4E01\u8F93\u51FA\u6587\u4EF6\uFF08\u9ED8\u8BA4\uFF1Astdout\uFF09",
|
|
1909
|
-
autoMode: "\u542F\u52A8\u81EA\u4E3B\u5F00\u53D1\u5FAA\u73AF",
|
|
1910
|
-
maxIterations: "\u81EA\u52A8\u6A21\u5F0F\u6700\u5927\u8FED\u4EE3\u6B21\u6570\uFF08\u9ED8\u8BA4\uFF1A50\uFF09",
|
|
1911
|
-
completionPromise: "\u5B8C\u6210\u6807\u8BB0\u6587\u672C\uFF08\u9ED8\u8BA4\uFF1ADONE\uFF09",
|
|
1912
|
-
noWorktree: "\u5728\u81EA\u52A8\u6A21\u5F0F\u4E0B\u7981\u7528 git worktree \u9694\u79BB",
|
|
1913
|
-
checkpointInterval: "\u6BCF N \u6B21\u8FED\u4EE3\u8FDB\u884C git \u63D0\u4EA4\uFF08\u9ED8\u8BA4\uFF1A5\uFF09",
|
|
1914
|
-
maxRuntime: "\u6700\u5927\u8FD0\u884C\u65F6\u95F4\uFF08\u5206\u949F\uFF09\uFF08\u9ED8\u8BA4\uFF1A120\uFF09",
|
|
1915
|
-
maxCost: "\u6700\u5927 API \u8D39\u7528\uFF08\u7F8E\u5143\uFF09\uFF08\u9ED8\u8BA4\uFF1A10\uFF09",
|
|
1916
|
-
setup: "\u8FD0\u884C\u8BBE\u7F6E\u5411\u5BFC",
|
|
1917
|
-
addDir: "\u5411\u5DE5\u4F5C\u533A\u8303\u56F4\u6DFB\u52A0\u989D\u5916\u76EE\u5F55"
|
|
1918
|
-
}
|
|
1919
|
-
},
|
|
1920
|
-
welcome: {
|
|
1921
|
-
banner: "\u6B22\u8FCE\u4F7F\u7528 Autohand\uFF01",
|
|
1922
|
-
subtitle: "\u60A8\u7684\u8D85\u5FEB AI \u7F16\u7801\u4EE3\u7406",
|
|
1923
|
-
version: "v{{version}}",
|
|
1924
|
-
updateAvailable: "\u6709\u53EF\u7528\u66F4\u65B0\uFF1A{{current}} -> {{latest}}\u3002\u8FD0\u884C 'npm i -g autohand' \u8FDB\u884C\u66F4\u65B0\u3002",
|
|
1925
|
-
loggedInAs: "\u5DF2\u767B\u5F55\u4E3A {{email}}",
|
|
1926
|
-
notLoggedIn: "\u672A\u767B\u5F55",
|
|
1927
|
-
modelLine: "\u6A21\u578B\uFF1A{{model}}",
|
|
1928
|
-
directoryLine: "\u76EE\u5F55\uFF1A{{directory}}",
|
|
1929
|
-
tips: {
|
|
1930
|
-
title: "\u5F00\u59CB\u4F7F\u7528\uFF0C\u63CF\u8FF0\u4E00\u4E2A\u4EFB\u52A1\u6216\u5C1D\u8BD5\u4EE5\u4E0B\u547D\u4EE4\uFF1A",
|
|
1931
|
-
init: "/init - \u521B\u5EFA\u5305\u542B Autohand \u6307\u4EE4\u7684 AGENTS.md \u6587\u4EF6",
|
|
1932
|
-
help: "/help - \u663E\u793A\u6240\u6709\u53EF\u7528\u547D\u4EE4",
|
|
1933
|
-
model: "/model - \u66F4\u6539 AI \u6A21\u578B",
|
|
1934
|
-
language: "/language - \u66F4\u6539\u663E\u793A\u8BED\u8A00"
|
|
1935
|
-
},
|
|
1936
|
-
shortcuts: {
|
|
1937
|
-
title: "\u952E\u76D8\u5FEB\u6377\u952E\uFF1A",
|
|
1938
|
-
mention: "@ - \u63D0\u53CA\u6587\u4EF6\u4EE5\u83B7\u53D6\u4E0A\u4E0B\u6587",
|
|
1939
|
-
arrows: "\u65B9\u5411\u952E - \u5BFC\u822A\u5EFA\u8BAE",
|
|
1940
|
-
tab: "Tab - \u81EA\u52A8\u8865\u5168",
|
|
1941
|
-
escape: "Esc - \u53D6\u6D88\u5F53\u524D\u64CD\u4F5C",
|
|
1942
|
-
ctrlC: "Ctrl+C - \u9000\u51FA"
|
|
1943
|
-
}
|
|
1944
|
-
},
|
|
1945
|
-
commands: {
|
|
1946
|
-
help: {
|
|
1947
|
-
title: "\u53EF\u7528\u547D\u4EE4\uFF1A",
|
|
1948
|
-
command: "\u547D\u4EE4",
|
|
1949
|
-
description: "\u63CF\u8FF0",
|
|
1950
|
-
tips: {
|
|
1951
|
-
title: "\u63D0\u793A\uFF1A",
|
|
1952
|
-
mention: "\u8F93\u5165 @ \u53EF\u63D0\u53CA\u6587\u4EF6\u4F9B AI \u4F7F\u7528",
|
|
1953
|
-
arrows: "\u4F7F\u7528\u65B9\u5411\u952E\u5BFC\u822A\u6587\u4EF6\u5EFA\u8BAE",
|
|
1954
|
-
tab: "\u6309 Tab \u81EA\u52A8\u8865\u5168\u6587\u4EF6\u8DEF\u5F84",
|
|
1955
|
-
escape: "\u6309 Esc \u53D6\u6D88\u5F53\u524D\u64CD\u4F5C"
|
|
1956
|
-
},
|
|
1957
|
-
docsLink: "\u66F4\u591A\u4FE1\u606F\uFF0C\u8BF7\u8BBF\u95EE {{link}}"
|
|
1958
|
-
},
|
|
1959
|
-
model: {
|
|
1960
|
-
description: "\u9009\u62E9\u4F7F\u7528\u7684\u6A21\u578B\u548C\u63A8\u7406\u5F3A\u5EA6",
|
|
1961
|
-
title: "\u6A21\u578B\u9009\u62E9",
|
|
1962
|
-
currentModel: "\u5F53\u524D\u6A21\u578B\uFF1A{{model}}",
|
|
1963
|
-
selectPrompt: "\u9009\u62E9\u4E00\u4E2A\u6A21\u578B\uFF1A",
|
|
1964
|
-
changed: "\u6A21\u578B\u5DF2\u66F4\u6539\u4E3A {{model}}",
|
|
1965
|
-
noChange: "\u672A\u505A\u66F4\u6539\u3002"
|
|
1966
|
-
},
|
|
1967
|
-
theme: {
|
|
1968
|
-
description: "\u66F4\u6539\u7EC8\u7AEF\u989C\u8272\u4E3B\u9898",
|
|
1969
|
-
title: "\u4E3B\u9898\u9009\u62E9",
|
|
1970
|
-
currentTheme: "\u5F53\u524D\u4E3B\u9898\uFF1A{{theme}}",
|
|
1971
|
-
selectPrompt: "\u9009\u62E9\u4E00\u4E2A\u4E3B\u9898\uFF1A",
|
|
1972
|
-
changed: "\u4E3B\u9898\u5DF2\u66F4\u6539\u4E3A '{{theme}}'",
|
|
1973
|
-
noChange: "\u672A\u505A\u66F4\u6539\u3002"
|
|
1974
|
-
},
|
|
1975
|
-
language: {
|
|
1976
|
-
description: "\u66F4\u6539\u663E\u793A\u8BED\u8A00",
|
|
1977
|
-
title: "\u8BED\u8A00\u9009\u62E9",
|
|
1978
|
-
currentLanguage: "\u5F53\u524D\u8BED\u8A00\uFF1A{{language}}",
|
|
1979
|
-
selectPrompt: "\u9009\u62E9\u4E00\u79CD\u8BED\u8A00\uFF1A",
|
|
1980
|
-
changed: "\u8BED\u8A00\u5DF2\u66F4\u6539\u4E3A {{language}}",
|
|
1981
|
-
noChange: "\u672A\u505A\u66F4\u6539\u3002",
|
|
1982
|
-
restartHint: "\u67D0\u4E9B\u66F4\u6539\u53EF\u80FD\u9700\u8981\u91CD\u542FCLI\u624D\u80FD\u5B8C\u5168\u751F\u6548\u3002"
|
|
1983
|
-
},
|
|
1984
|
-
quit: {
|
|
1985
|
-
description: "\u9000\u51FA Autohand",
|
|
1986
|
-
goodbye: "\u518D\u89C1\uFF01"
|
|
1987
|
-
},
|
|
1988
|
-
init: {
|
|
1989
|
-
description: "\u521B\u5EFA AGENTS.md \u6587\u4EF6",
|
|
1990
|
-
created: "\u5DF2\u5728 {{path}} \u521B\u5EFA AGENTS.md",
|
|
1991
|
-
alreadyExists: "AGENTS.md \u5DF2\u5B58\u5728\u4E8E {{path}}",
|
|
1992
|
-
overwritePrompt: "\u8986\u76D6\u73B0\u6709\u7684 AGENTS.md\uFF1F"
|
|
1993
|
-
},
|
|
1994
|
-
undo: {
|
|
1995
|
-
description: "\u64A4\u9500\u4E0A\u6B21\u6587\u4EF6\u66F4\u6539",
|
|
1996
|
-
success: "\u5DF2\u64A4\u9500 {{file}} \u7684\u66F4\u6539",
|
|
1997
|
-
noChanges: "\u6CA1\u6709\u53EF\u64A4\u9500\u7684\u66F4\u6539\u3002",
|
|
1998
|
-
failed: "\u64A4\u9500\u5931\u8D25\uFF1A{{error}}"
|
|
1999
|
-
},
|
|
2000
|
-
new: {
|
|
2001
|
-
description: "\u5F00\u59CB\u65B0\u5BF9\u8BDD",
|
|
2002
|
-
cleared: "\u5BF9\u8BDD\u5DF2\u6E05\u9664\u3002\u91CD\u65B0\u5F00\u59CB\u3002"
|
|
2003
|
-
},
|
|
2004
|
-
status: {
|
|
2005
|
-
description: "\u663E\u793A\u5F53\u524D\u72B6\u6001",
|
|
2006
|
-
title: "Autohand \u72B6\u6001",
|
|
2007
|
-
version: "\u7248\u672C",
|
|
2008
|
-
sessionId: "\u4F1A\u8BDD ID",
|
|
2009
|
-
cwd: "\u5F53\u524D\u76EE\u5F55",
|
|
2010
|
-
provider: "\u63D0\u4F9B\u5546",
|
|
2011
|
-
model: "\u6A21\u578B",
|
|
2012
|
-
locale: "\u8BED\u8A00",
|
|
2013
|
-
apiStatus: "API \u72B6\u6001",
|
|
2014
|
-
connected: "\u5DF2\u8FDE\u63A5",
|
|
2015
|
-
disconnected: "\u5DF2\u65AD\u5F00",
|
|
2016
|
-
sessions: "\u4F1A\u8BDD",
|
|
2017
|
-
total: "\u5171 {{count}} \u4E2A"
|
|
2018
|
-
},
|
|
2019
|
-
sessions: {
|
|
2020
|
-
description: "\u5217\u51FA\u5DF2\u4FDD\u5B58\u7684\u4F1A\u8BDD",
|
|
2021
|
-
title: "\u5DF2\u4FDD\u5B58\u7684\u4F1A\u8BDD",
|
|
2022
|
-
noSessions: "\u672A\u627E\u5230\u5DF2\u4FDD\u5B58\u7684\u4F1A\u8BDD\u3002",
|
|
2023
|
-
selectPrompt: "\u9009\u62E9\u8981\u6062\u590D\u7684\u4F1A\u8BDD\uFF1A",
|
|
2024
|
-
sessionInfo: "{{name}} - {{date}}"
|
|
2025
|
-
},
|
|
2026
|
-
resume: {
|
|
2027
|
-
description: "\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD",
|
|
2028
|
-
resuming: "\u6B63\u5728\u6062\u590D\u4F1A\u8BDD {{id}}...",
|
|
2029
|
-
notFound: "\u672A\u627E\u5230\u4F1A\u8BDD\uFF1A{{id}}",
|
|
2030
|
-
failed: "\u6062\u590D\u4F1A\u8BDD\u5931\u8D25\uFF1A{{error}}"
|
|
2031
|
-
},
|
|
2032
|
-
memory: {
|
|
2033
|
-
description: "\u7BA1\u7406\u9879\u76EE\u548C\u7528\u6237\u8BB0\u5FC6",
|
|
2034
|
-
title: "\u8BB0\u5FC6\u7BA1\u7406",
|
|
2035
|
-
projectMemory: "\u9879\u76EE\u8BB0\u5FC6",
|
|
2036
|
-
userMemory: "\u7528\u6237\u8BB0\u5FC6",
|
|
2037
|
-
noMemory: "\u6CA1\u6709\u5B58\u50A8\u7684\u8BB0\u5FC6\u3002",
|
|
2038
|
-
addPrompt: "\u6DFB\u52A0\u65B0\u8BB0\u5FC6\uFF1A",
|
|
2039
|
-
added: "\u8BB0\u5FC6\u5DF2\u6DFB\u52A0\u3002",
|
|
2040
|
-
cleared: "\u8BB0\u5FC6\u5DF2\u6E05\u9664\u3002"
|
|
2041
|
-
},
|
|
2042
|
-
permissions: {
|
|
2043
|
-
description: "\u663E\u793A\u5F53\u524D\u6743\u9650\u8BBE\u7F6E",
|
|
2044
|
-
title: "\u6743\u9650\u8BBE\u7F6E",
|
|
2045
|
-
mode: "\u6A21\u5F0F\uFF1A{{mode}}",
|
|
2046
|
-
allowed: "\u5141\u8BB8\u7684\u64CD\u4F5C\uFF1A",
|
|
2047
|
-
denied: "\u62D2\u7EDD\u7684\u64CD\u4F5C\uFF1A",
|
|
2048
|
-
pending: "\u5F85\u5BA1\u6279\uFF1A"
|
|
2049
|
-
},
|
|
2050
|
-
login: {
|
|
2051
|
-
description: "\u767B\u5F55\u60A8\u7684 Autohand \u8D26\u6237",
|
|
2052
|
-
prompt: "\u8F93\u5165\u60A8\u7684\u767B\u5F55\u4EE3\u7801\uFF1A",
|
|
2053
|
-
success: "\u6210\u529F\u767B\u5F55\u4E3A {{email}}",
|
|
2054
|
-
failed: "\u767B\u5F55\u5931\u8D25\uFF1A{{error}}",
|
|
2055
|
-
cancelled: "\u767B\u5F55\u5DF2\u53D6\u6D88\u3002"
|
|
2056
|
-
},
|
|
2057
|
-
logout: {
|
|
2058
|
-
description: "\u9000\u51FA\u60A8\u7684 Autohand \u8D26\u6237",
|
|
2059
|
-
confirm: "\u9000\u51FA {{email}}\uFF1F",
|
|
2060
|
-
success: "\u6210\u529F\u9000\u51FA\u3002",
|
|
2061
|
-
cancelled: "\u9000\u51FA\u5DF2\u53D6\u6D88\u3002"
|
|
2062
|
-
},
|
|
2063
|
-
sync: {
|
|
2064
|
-
description: "\u7BA1\u7406\u8BBE\u7F6E\u540C\u6B65",
|
|
2065
|
-
enabled: "\u8BBE\u7F6E\u540C\u6B65\u5DF2\u542F\u7528\u3002",
|
|
2066
|
-
disabled: "\u8BBE\u7F6E\u540C\u6B65\u5DF2\u7981\u7528\u3002",
|
|
2067
|
-
status: "\u540C\u6B65\u72B6\u6001\uFF1A{{status}}",
|
|
2068
|
-
lastSync: "\u4E0A\u6B21\u540C\u6B65\uFF1A{{date}}"
|
|
2069
|
-
},
|
|
2070
|
-
feedback: {
|
|
2071
|
-
description: "\u63D0\u4EA4 CLI \u53CD\u9988",
|
|
2072
|
-
prompt: "\u8F93\u5165\u60A8\u7684\u53CD\u9988\uFF1A",
|
|
2073
|
-
success: "\u611F\u8C22\u60A8\u7684\u53CD\u9988\uFF01",
|
|
2074
|
-
failed: "\u63D0\u4EA4\u53CD\u9988\u5931\u8D25\uFF1A{{error}}"
|
|
2075
|
-
},
|
|
2076
|
-
hooks: {
|
|
2077
|
-
description: "\u7BA1\u7406 git hooks",
|
|
2078
|
-
title: "Git Hooks",
|
|
2079
|
-
installed: "\u5DF2\u5B89\u88C5\u7684 hooks\uFF1A",
|
|
2080
|
-
available: "\u53EF\u7528\u7684 hooks\uFF1A",
|
|
2081
|
-
noHooks: "\u672A\u914D\u7F6E hooks\u3002"
|
|
2082
|
-
},
|
|
2083
|
-
skills: {
|
|
2084
|
-
description: "\u5217\u51FA\u548C\u7BA1\u7406\u6280\u80FD",
|
|
2085
|
-
title: "\u6280\u80FD",
|
|
2086
|
-
installed: "\u5DF2\u5B89\u88C5\u7684\u6280\u80FD\uFF1A",
|
|
2087
|
-
available: "\u53EF\u7528\u7684\u6280\u80FD\uFF1A",
|
|
2088
|
-
noSkills: "\u672A\u5B89\u88C5\u6280\u80FD\u3002"
|
|
2089
|
-
},
|
|
2090
|
-
export: {
|
|
2091
|
-
description: "\u5BFC\u51FA\u4F1A\u8BDD\u6570\u636E",
|
|
2092
|
-
success: "\u5DF2\u5BFC\u51FA\u5230 {{path}}",
|
|
2093
|
-
failed: "\u5BFC\u51FA\u5931\u8D25\uFF1A{{error}}"
|
|
2094
|
-
},
|
|
2095
|
-
agents: {
|
|
2096
|
-
description: "\u7BA1\u7406\u5B50\u4EE3\u7406",
|
|
2097
|
-
title: "\u5B50\u4EE3\u7406",
|
|
2098
|
-
noAgents: "\u672A\u914D\u7F6E\u5B50\u4EE3\u7406\u3002"
|
|
2099
|
-
},
|
|
2100
|
-
automode: {
|
|
2101
|
-
description: "\u7BA1\u7406\u81EA\u4E3B\u6A21\u5F0F",
|
|
2102
|
-
starting: "\u6B63\u5728\u542F\u52A8\u81EA\u52A8\u6A21\u5F0F...",
|
|
2103
|
-
stopping: "\u6B63\u5728\u505C\u6B62\u81EA\u52A8\u6A21\u5F0F...",
|
|
2104
|
-
iteration: "\u8FED\u4EE3 {{current}}/{{max}}",
|
|
2105
|
-
completed: "\u81EA\u52A8\u6A21\u5F0F\u5DF2\u5B8C\u6210\u3002",
|
|
2106
|
-
aborted: "\u81EA\u52A8\u6A21\u5F0F\u5DF2\u4E2D\u6B62\u3002"
|
|
2107
|
-
},
|
|
2108
|
-
share: {
|
|
2109
|
-
description: "\u5206\u4EAB\u4F1A\u8BDD",
|
|
2110
|
-
generating: "\u6B63\u5728\u751F\u6210\u5206\u4EAB\u94FE\u63A5...",
|
|
2111
|
-
success: "\u5206\u4EAB\u94FE\u63A5\uFF1A{{url}}",
|
|
2112
|
-
failed: "\u751F\u6210\u5206\u4EAB\u94FE\u63A5\u5931\u8D25\uFF1A{{error}}"
|
|
2113
|
-
},
|
|
2114
|
-
addDir: {
|
|
2115
|
-
description: "\u5411\u5DE5\u4F5C\u533A\u8303\u56F4\u6DFB\u52A0\u76EE\u5F55",
|
|
2116
|
-
added: "\u5DF2\u6DFB\u52A0\u76EE\u5F55\uFF1A{{path}}",
|
|
2117
|
-
alreadyAdded: "\u76EE\u5F55\u5DF2\u6DFB\u52A0\uFF1A{{path}}",
|
|
2118
|
-
notFound: "\u672A\u627E\u5230\u76EE\u5F55\uFF1A{{path}}"
|
|
2119
|
-
}
|
|
2120
|
-
},
|
|
2121
|
-
setup: {
|
|
2122
|
-
welcome: "\u6B22\u8FCE\u4F7F\u7528 Autohand\uFF01",
|
|
2123
|
-
subtitle: "\u60A8\u7684\u8D85\u5FEB AI \u7F16\u7801\u4EE3\u7406",
|
|
2124
|
-
letsStart: "\u8BA9\u6211\u4EEC\u901A\u8FC7\u51E0\u4E2A\u7B80\u5355\u6B65\u9AA4\u5B8C\u6210\u8BBE\u7F6E\u3002",
|
|
2125
|
-
providerSelect: "\u60A8\u60F3\u4F7F\u7528\u54EA\u4E2A LLM \u63D0\u4F9B\u5546\uFF1F",
|
|
2126
|
-
apiKeyPrompt: "\u8F93\u5165\u60A8\u7684 {{provider}} API \u5BC6\u94A5\uFF1A",
|
|
2127
|
-
apiKeyHelp: "\u5728\u6B64\u83B7\u53D6 API \u5BC6\u94A5\uFF1A{{url}}",
|
|
2128
|
-
apiKeyHint: "\u60A8\u7684 API \u5BC6\u94A5\u5C06\u672C\u5730\u5B58\u50A8\u5728 ~/.autohand/config.json",
|
|
2129
|
-
modelPrompt: "\u8F93\u5165\u6A21\u578B ID\uFF08\u6216\u6309\u56DE\u8F66\u4F7F\u7528\u9ED8\u8BA4\u503C\uFF09\uFF1A",
|
|
2130
|
-
modelDefault: "\u9ED8\u8BA4\uFF1A{{model}}",
|
|
2131
|
-
testingConnection: "\u6B63\u5728\u6D4B\u8BD5\u8FDE\u63A5...",
|
|
2132
|
-
connectionSuccess: "\u8FDE\u63A5\u6210\u529F\uFF01",
|
|
2133
|
-
connectionFailed: "\u8FDE\u63A5\u5931\u8D25\uFF1A{{error}}",
|
|
2134
|
-
telemetry: {
|
|
2135
|
-
title: "\u5E2E\u52A9\u6211\u4EEC\u6539\u8FDB Autohand",
|
|
2136
|
-
description: "\u6211\u4EEC\u6536\u96C6\u533F\u540D\u4F7F\u7528\u6570\u636E\u4EE5\u4E86\u89E3 Autohand \u7684\u4F7F\u7528\u60C5\u51B5\u3002",
|
|
2137
|
-
whatWeCollect: "\u6211\u4EEC\u6536\u96C6\u7684\u5185\u5BB9\uFF1A",
|
|
2138
|
-
collectItem1: "\u547D\u4EE4\u4F7F\u7528\u60C5\u51B5\uFF08\u54EA\u4E9B\u529F\u80FD\u53D7\u6B22\u8FCE\uFF09",
|
|
2139
|
-
collectItem2: "\u9519\u8BEF\u7387\uFF08\u4EE5\u66F4\u5FEB\u4FEE\u590D bug\uFF09",
|
|
2140
|
-
collectItem3: "\u6027\u80FD\u6307\u6807\uFF08\u4EE5\u52A0\u5FEB\u901F\u5EA6\uFF09",
|
|
2141
|
-
whatWeNeverCollect: "\u6211\u4EEC\u4ECE\u4E0D\u6536\u96C6\u7684\u5185\u5BB9\uFF1A",
|
|
2142
|
-
neverItem1: "\u60A8\u7684\u4EE3\u7801\u6216\u6587\u4EF6\u5185\u5BB9",
|
|
2143
|
-
neverItem2: "API \u5BC6\u94A5\u6216\u51ED\u636E",
|
|
2144
|
-
neverItem3: "\u4E2A\u4EBA\u4FE1\u606F",
|
|
2145
|
-
prompt: "\u5206\u4EAB\u533F\u540D\u4F7F\u7528\u6570\u636E\u4EE5\u5E2E\u52A9\u6539\u8FDB Autohand\uFF1F",
|
|
2146
|
-
thanks: "\u611F\u8C22\u60A8\u5E2E\u52A9\u6211\u4EEC\u6539\u8FDB Autohand\uFF01",
|
|
2147
|
-
declined: "\u6CA1\u95EE\u9898\uFF01\u60A8\u53EF\u4EE5\u968F\u65F6\u5728\u914D\u7F6E\u4E2D\u66F4\u6539\u6B64\u8BBE\u7F6E\u3002"
|
|
2148
|
-
},
|
|
2149
|
-
complete: "\u8BBE\u7F6E\u5B8C\u6210\uFF01",
|
|
2150
|
-
created: "\u5DF2\u521B\u5EFA\u7684\u5185\u5BB9\uFF1A",
|
|
2151
|
-
configFile: "~/.autohand/config.json\uFF08\u60A8\u7684\u8BBE\u7F6E\uFF09",
|
|
2152
|
-
agentsFile: "AGENTS.md\uFF08Autohand \u7684\u9879\u76EE\u6307\u4EE4\uFF09",
|
|
2153
|
-
nextSteps: "\u4E0B\u4E00\u6B65\uFF1A",
|
|
2154
|
-
tryCommand: "\u5C1D\u8BD5\uFF1Aautohand"
|
|
2155
|
-
},
|
|
2156
|
-
errors: {
|
|
2157
|
-
generic: "\u53D1\u751F\u9519\u8BEF\uFF1A{{message}}",
|
|
2158
|
-
invalidLocale: "\u65E0\u6548\u7684\u533A\u57DF\u8BBE\u7F6E\uFF1A{{locale}}\u3002\u652F\u6301\u7684\uFF1A{{supported}}",
|
|
2159
|
-
configParseFailed: "\u89E3\u6790 {{path}} \u914D\u7F6E\u5931\u8D25\uFF1A{{error}}",
|
|
2160
|
-
configSaveFailed: "\u4FDD\u5B58\u914D\u7F6E\u5931\u8D25\uFF1A{{error}}",
|
|
2161
|
-
apiKeyRequired: "\u9700\u8981 API \u5BC6\u94A5",
|
|
2162
|
-
apiKeyTooShort: "API \u5BC6\u94A5\u4F3C\u4E4E\u592A\u77ED",
|
|
2163
|
-
apiKeyInvalid: "API \u5BC6\u94A5\u683C\u5F0F\u65E0\u6548",
|
|
2164
|
-
directoryNotExist: "\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{{path}}",
|
|
2165
|
-
unsafeDirectory: "\u4E0D\u5B89\u5168\u7684\u76EE\u5F55\uFF1A{{path}}\u3002\u65E0\u6CD5\u5728\u7CFB\u7EDF\u76EE\u5F55\u4E2D\u64CD\u4F5C\u3002",
|
|
2166
|
-
fileNotFound: "\u672A\u627E\u5230\u6587\u4EF6\uFF1A{{path}}",
|
|
2167
|
-
permissionDenied: "\u6743\u9650\u88AB\u62D2\u7EDD\uFF1A{{path}}",
|
|
2168
|
-
patchRequiresPrompt: "--patch \u9700\u8981 --prompt \u6307\u5B9A\u6307\u4EE4",
|
|
2169
|
-
autoModeRequiresPrompt: "--auto-mode \u9700\u8981\u4EFB\u52A1\u63D0\u793A",
|
|
2170
|
-
noProviderConfigured: "\u5C1A\u672A\u914D\u7F6E\u63D0\u4F9B\u5546\u3002\u8FD0\u884C\u8BBE\u7F6E\uFF1Aautohand --setup",
|
|
2171
|
-
modelNotFound: "\u672A\u627E\u5230\u6A21\u578B\uFF1A{{model}}",
|
|
2172
|
-
rateLimited: "\u901F\u7387\u9650\u5236\u3002\u8BF7\u7A0D\u5019\u518D\u8BD5\u3002",
|
|
2173
|
-
networkError: "\u7F51\u7EDC\u9519\u8BEF\uFF1A{{message}}",
|
|
2174
|
-
timeout: "\u8BF7\u6C42\u8D85\u65F6\u3002\u8BF7\u91CD\u8BD5\u3002",
|
|
2175
|
-
contextTooLong: "\u4E0A\u4E0B\u6587\u592A\u957F\u3002\u5C1D\u8BD5 /new \u91CD\u65B0\u5F00\u59CB\u6216 /undo \u5220\u9664\u6700\u8FD1\u7684\u56DE\u5408\u3002",
|
|
2176
|
-
authFailed: "\u8BA4\u8BC1\u5931\u8D25\u3002\u8BF7\u68C0\u67E5\u60A8\u7684 API \u5BC6\u94A5\u3002",
|
|
2177
|
-
paymentRequired: "\u9700\u8981\u4ED8\u6B3E\u3002\u8BF7\u68C0\u67E5\u60A8\u7684\u8D26\u6237\u4F59\u989D\u3002",
|
|
2178
|
-
serverError: "\u670D\u52A1\u5668\u9519\u8BEF\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002",
|
|
2179
|
-
cancelled: "\u7528\u6237\u53D6\u6D88\u4E86\u64CD\u4F5C\u3002"
|
|
2180
|
-
},
|
|
2181
|
-
agent: {
|
|
2182
|
-
thinking: "\u601D\u8003\u4E2D...",
|
|
2183
|
-
executing: "\u6B63\u5728\u6267\u884C {{tool}}...",
|
|
2184
|
-
reading: "\u6B63\u5728\u8BFB\u53D6 {{file}}...",
|
|
2185
|
-
writing: "\u6B63\u5728\u5199\u5165 {{file}}...",
|
|
2186
|
-
searching: "\u641C\u7D22\u4E2D...",
|
|
2187
|
-
toolSuccess: "{{tool}} \u6210\u529F\u5B8C\u6210",
|
|
2188
|
-
toolFailed: "{{tool}} \u5931\u8D25\uFF1A{{error}}",
|
|
2189
|
-
taskComplete: "\u4EFB\u52A1\u5B8C\u6210",
|
|
2190
|
-
noChanges: "\u672A\u505A\u4EFB\u4F55\u66F4\u6539\u3002",
|
|
2191
|
-
changesApplied: "\u66F4\u6539\u5DF2\u6210\u529F\u5E94\u7528\u3002",
|
|
2192
|
-
awaitingApproval: "\u7B49\u5F85\u5BA1\u6279...",
|
|
2193
|
-
approved: "\u5DF2\u6279\u51C6",
|
|
2194
|
-
denied: "\u5DF2\u62D2\u7EDD",
|
|
2195
|
-
skipped: "\u5DF2\u8DF3\u8FC7",
|
|
2196
|
-
exploring: "\u63A2\u7D22\u4E2D...",
|
|
2197
|
-
exploredFiles: "\u5DF2\u63A2\u7D22 {{count}} \u4E2A\u6587\u4EF6"
|
|
2198
|
-
},
|
|
2199
|
-
providers: {
|
|
2200
|
-
openrouter: "OpenRouter",
|
|
2201
|
-
openai: "OpenAI",
|
|
2202
|
-
ollama: "Ollama",
|
|
2203
|
-
llamacpp: "llama.cpp",
|
|
2204
|
-
mlx: "MLX (Apple Silicon)",
|
|
2205
|
-
hints: {
|
|
2206
|
-
openrouter: "\u4E91\u7AEF - \u8BBF\u95EE 100+ \u6A21\u578B\uFF08Claude\u3001GPT-4 \u7B49\uFF09",
|
|
2207
|
-
openai: "\u4E91\u7AEF - OpenAI \u5B98\u65B9\u6A21\u578B\uFF08GPT-4o\u3001o1 \u7B49\uFF09",
|
|
2208
|
-
ollama: "\u672C\u5730 - \u5728\u60A8\u7684\u673A\u5668\u4E0A\u8FD0\u884C\u6A21\u578B\uFF08\u514D\u8D39\uFF09",
|
|
2209
|
-
llamacpp: "\u672C\u5730 - \u4F7F\u7528 GGUF \u6A21\u578B\u5FEB\u901F\u63A8\u7406",
|
|
2210
|
-
mlx: "\u672C\u5730 - \u4E3A Apple Silicon Mac \u4F18\u5316"
|
|
2211
|
-
}
|
|
2212
|
-
},
|
|
2213
|
-
startup: {
|
|
2214
|
-
checkingTools: "\u6B63\u5728\u68C0\u67E5\u6240\u9700\u5DE5\u5177...",
|
|
2215
|
-
toolFound: "\u5DF2\u627E\u5230 {{tool}}",
|
|
2216
|
-
toolMissing: "\u672A\u627E\u5230 {{tool}}",
|
|
2217
|
-
installHint: "\u5B89\u88C5\u547D\u4EE4\uFF1A{{command}}",
|
|
2218
|
-
allToolsReady: "\u6240\u6709\u5DE5\u5177\u5DF2\u5C31\u7EEA\uFF01",
|
|
2219
|
-
someToolsMissing: "\u67D0\u4E9B\u5DE5\u5177\u7F3A\u5931\u3002\u90E8\u5206\u529F\u80FD\u53EF\u80FD\u65E0\u6CD5\u4F7F\u7528\u3002"
|
|
2220
|
-
},
|
|
2221
|
-
confirmation: {
|
|
2222
|
-
proceed: "\u7EE7\u7EED\uFF1F",
|
|
2223
|
-
areYouSure: "\u60A8\u786E\u5B9A\u5417\uFF1F",
|
|
2224
|
-
thisWillDelete: "\u8FD9\u5C06\u5220\u9664 {{item}}\u3002\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",
|
|
2225
|
-
confirm: "\u786E\u8BA4",
|
|
2226
|
-
cancel: "\u53D6\u6D88",
|
|
2227
|
-
yesDelete: "\u662F\uFF0C\u5220\u9664",
|
|
2228
|
-
noDontDelete: "\u5426\uFF0C\u4FDD\u7559"
|
|
2229
|
-
},
|
|
2230
|
-
diff: {
|
|
2231
|
-
title: "{{file}} \u7684\u66F4\u6539",
|
|
2232
|
-
additions: "{{count}} \u5904\u6DFB\u52A0",
|
|
2233
|
-
deletions: "{{count}} \u5904\u5220\u9664",
|
|
2234
|
-
noChanges: "\u65E0\u66F4\u6539",
|
|
2235
|
-
apply: "\u5E94\u7528\u66F4\u6539\uFF1F",
|
|
2236
|
-
applied: "\u66F4\u6539\u5DF2\u5E94\u7528\u3002",
|
|
2237
|
-
discarded: "\u66F4\u6539\u5DF2\u4E22\u5F03\u3002"
|
|
2238
|
-
},
|
|
2239
|
-
ui: {
|
|
2240
|
-
escToCancel: "esc \u53D6\u6D88",
|
|
2241
|
-
commandHint: "/ \u547D\u4EE4 \xB7 @ \u63D0\u53CA\u6587\u4EF6",
|
|
2242
|
-
ctrlCToExit: "\u518D\u6B21\u6309 Ctrl+C \u9000\u51FA",
|
|
2243
|
-
noMatchingCommands: "\u6CA1\u6709\u5339\u914D\u7684\u547D\u4EE4\u3002",
|
|
2244
|
-
selectFile: "\u9009\u62E9\u6587\u4EF6",
|
|
2245
|
-
noMatchingFiles: "\u6CA1\u6709\u5339\u914D\u7684\u6587\u4EF6\u3002\u7EE7\u7EED\u8F93\u5165...",
|
|
2246
|
-
thinking: "\u601D\u8003\u4E2D",
|
|
2247
|
-
planModeActive: "\u8BA1\u5212\u6A21\u5F0F\u6FC0\u6D3B - \u5DE5\u5177\u53EA\u8BFB",
|
|
2248
|
-
planModeExecuting: "\u6267\u884C\u8BA1\u5212\u4E2D",
|
|
2249
|
-
typeToFilter: "\u7B5B\u9009",
|
|
2250
|
-
navigateHint: "\u8F93\u5165\u7B5B\u9009 \xB7 \u2191/\u2193 \u5BFC\u822A \xB7 Enter \u6267\u884C \xB7 Esc \u53D6\u6D88",
|
|
2251
|
-
fileNavigateHint: "\u8F93\u5165\u7B5B\u9009 \xB7 \u2191/\u2193 \u5BFC\u822A \xB7 Enter \u9009\u62E9 \xB7 Esc \u53D6\u6D88",
|
|
2252
|
-
questionPrompt: "\u2753",
|
|
2253
|
-
questionOther: "\u5176\u4ED6\uFF08\u8F93\u5165\u60A8\u7684\u7B54\u6848\uFF09",
|
|
2254
|
-
questionYourAnswer: "\u25B8 \u60A8\u7684\u7B54\u6848",
|
|
2255
|
-
questionCustomHint: "\u21B5 \u63D0\u4EA4 \xB7 ESC \u8FD4\u56DE",
|
|
2256
|
-
questionSelectHint: "\u2191\u2193 \u5BFC\u822A \xB7 \u21B5 \u9009\u62E9 \xB7 1-9 \u5FEB\u6377\u952E \xB7 ESC \u53D6\u6D88",
|
|
2257
|
-
noOptionsAvailable: "\u6CA1\u6709\u53EF\u7528\u9009\u9879",
|
|
2258
|
-
planRevise: "\u5426\uFF0C\u4FEE\u6539\u8BA1\u5212",
|
|
2259
|
-
planEditHint: "ctrl-g \u5728 VS Code \u4E2D\u7F16\u8F91",
|
|
2260
|
-
confirmYes: "\u662F",
|
|
2261
|
-
confirmNo: "\u5426",
|
|
2262
|
-
inputHint: "Enter \u63D0\u4EA4\uFF0CESC \u53D6\u6D88",
|
|
2263
|
-
inputPlaceholder: "\u8F93\u5165\u60A8\u7684\u7B54\u6848...",
|
|
2264
|
-
passwordPlaceholder: "\u8F93\u5165\u5BC6\u7801...",
|
|
2265
|
-
validationError: "\u8F93\u5165\u65E0\u6548"
|
|
2266
|
-
},
|
|
2267
|
-
languages: {
|
|
2268
|
-
en: "English",
|
|
2269
|
-
"zh-cn": "\u7B80\u4F53\u4E2D\u6587 (\u7B80\u4F53\u4E2D\u6587)",
|
|
2270
|
-
"zh-tw": "\u7E41\u9AD4\u4E2D\u6587 (\u7E41\u4F53\u4E2D\u6587)",
|
|
2271
|
-
fr: "Fran\xE7ais (\u6CD5\u8BED)",
|
|
2272
|
-
de: "Deutsch (\u5FB7\u8BED)",
|
|
2273
|
-
it: "Italiano (\u610F\u5927\u5229\u8BED)",
|
|
2274
|
-
es: "Espa\xF1ol (\u897F\u73ED\u7259\u8BED)",
|
|
2275
|
-
ja: "\u65E5\u672C\u8A9E (\u65E5\u8BED)",
|
|
2276
|
-
ko: "\uD55C\uAD6D\uC5B4 (\u97E9\u8BED)",
|
|
2277
|
-
ru: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439 (\u4FC4\u8BED)",
|
|
2278
|
-
"pt-br": "Portugu\xEAs (\u5DF4\u897F\u8461\u8404\u7259\u8BED)",
|
|
2279
|
-
tr: "T\xFCrk\xE7e (\u571F\u8033\u5176\u8BED)",
|
|
2280
|
-
pl: "Polski (\u6CE2\u5170\u8BED)",
|
|
2281
|
-
cs: "\u010Ce\u0161tina (\u6377\u514B\u8BED)",
|
|
2282
|
-
hu: "Magyar (\u5308\u7259\u5229\u8BED)",
|
|
2283
|
-
hi: "\u0939\u093F\u0928\u094D\u0926\u0940 (\u5370\u5730\u8BED)"
|
|
2284
|
-
}
|
|
2285
|
-
};
|
|
2286
|
-
|
|
2287
|
-
// src/i18n/llmLocale.ts
|
|
2288
|
-
var LANGUAGE_NAMES_FOR_LLM = {
|
|
2289
|
-
en: "English",
|
|
2290
|
-
"zh-cn": "Simplified Chinese (\u7B80\u4F53\u4E2D\u6587)",
|
|
2291
|
-
"zh-tw": "Traditional Chinese (\u7E41\u9AD4\u4E2D\u6587)",
|
|
2292
|
-
fr: "French (Fran\xE7ais)",
|
|
2293
|
-
de: "German (Deutsch)",
|
|
2294
|
-
it: "Italian (Italiano)",
|
|
2295
|
-
es: "Spanish (Espa\xF1ol)",
|
|
2296
|
-
ja: "Japanese (\u65E5\u672C\u8A9E)",
|
|
2297
|
-
ko: "Korean (\uD55C\uAD6D\uC5B4)",
|
|
2298
|
-
ru: "Russian (\u0420\u0443\u0441\u0441\u043A\u0438\u0439)",
|
|
2299
|
-
"pt-br": "Brazilian Portuguese (Portugu\xEAs)",
|
|
2300
|
-
tr: "Turkish (T\xFCrk\xE7e)",
|
|
2301
|
-
pl: "Polish (Polski)",
|
|
2302
|
-
cs: "Czech (\u010Ce\u0161tina)",
|
|
2303
|
-
hu: "Hungarian (Magyar)",
|
|
2304
|
-
hi: "Hindi (\u0939\u093F\u0928\u094D\u0926\u0940)"
|
|
2305
|
-
};
|
|
2306
|
-
function buildLocaleInstruction(locale) {
|
|
2307
|
-
if (locale === "en") {
|
|
2308
|
-
return "";
|
|
2309
|
-
}
|
|
2310
|
-
const languageName = LANGUAGE_NAMES_FOR_LLM[locale];
|
|
2311
|
-
return `
|
|
2312
|
-
## Response Language Preference
|
|
2313
|
-
|
|
2314
|
-
The user has configured their preferred language as **${languageName}**.
|
|
2315
|
-
|
|
2316
|
-
Please respond in ${languageName} when providing:
|
|
2317
|
-
- Explanations and descriptions
|
|
2318
|
-
- Summaries and overviews
|
|
2319
|
-
- Conversational responses
|
|
2320
|
-
- Error explanations
|
|
2321
|
-
- Suggestions and recommendations
|
|
2322
|
-
|
|
2323
|
-
**Keep the following in their original form (usually English):**
|
|
2324
|
-
- Code snippets and examples
|
|
2325
|
-
- File paths and directory names
|
|
2326
|
-
- Command names and CLI flags
|
|
2327
|
-
- Technical identifiers (function names, variables, etc.)
|
|
2328
|
-
- JSON output format and tool call parameters
|
|
2329
|
-
- Error messages from tools (but you may add translated explanations)
|
|
2330
|
-
|
|
2331
|
-
**Code comments:** If the project already uses ${languageName} comments, continue in ${languageName}. Otherwise, use English for consistency with the codebase.
|
|
2332
|
-
`;
|
|
2333
|
-
}
|
|
2334
|
-
function injectLocaleIntoPrompt(systemPrompt, locale) {
|
|
2335
|
-
const localeInstruction = buildLocaleInstruction(locale);
|
|
2336
|
-
if (!localeInstruction) {
|
|
2337
|
-
return systemPrompt;
|
|
2338
|
-
}
|
|
2339
|
-
return systemPrompt + "\n" + localeInstruction;
|
|
2340
|
-
}
|
|
2341
|
-
|
|
2342
|
-
// src/i18n/index.ts
|
|
2343
|
-
var resources = {
|
|
2344
|
-
en: { translation: en_default },
|
|
2345
|
-
es: { translation: es_default },
|
|
2346
|
-
fr: { translation: fr_default },
|
|
2347
|
-
"pt-br": { translation: pt_br_default },
|
|
2348
|
-
"zh-cn": { translation: zh_cn_default },
|
|
2349
|
-
// These still use English as fallback until translations are generated
|
|
2350
|
-
// Run `bun scripts/generate-translations.ts` with OPENROUTER_API_KEY to generate
|
|
2351
|
-
"zh-tw": { translation: en_default },
|
|
2352
|
-
de: { translation: en_default },
|
|
2353
|
-
it: { translation: en_default },
|
|
2354
|
-
ja: { translation: en_default },
|
|
2355
|
-
ko: { translation: en_default },
|
|
2356
|
-
ru: { translation: en_default },
|
|
2357
|
-
tr: { translation: en_default },
|
|
2358
|
-
pl: { translation: en_default },
|
|
2359
|
-
cs: { translation: en_default },
|
|
2360
|
-
hu: { translation: en_default },
|
|
2361
|
-
hi: { translation: en_default }
|
|
2362
|
-
};
|
|
2363
|
-
var currentLocale = "en";
|
|
2364
|
-
var initialized = false;
|
|
2365
|
-
var languageChangeListeners = /* @__PURE__ */ new Set();
|
|
2366
|
-
async function initI18n(locale) {
|
|
2367
|
-
currentLocale = locale;
|
|
2368
|
-
if (initialized) {
|
|
2369
|
-
await _i18next2.default.changeLanguage(locale);
|
|
2370
|
-
return;
|
|
2371
|
-
}
|
|
2372
|
-
await _i18next2.default.init({
|
|
2373
|
-
lng: locale,
|
|
2374
|
-
fallbackLng: "en",
|
|
2375
|
-
resources,
|
|
2376
|
-
interpolation: {
|
|
2377
|
-
escapeValue: false
|
|
2378
|
-
// Not needed for CLI (no XSS risk)
|
|
2379
|
-
},
|
|
2380
|
-
// Support nested keys like 'commands.help.title'
|
|
2381
|
-
keySeparator: ".",
|
|
2382
|
-
nsSeparator: ":",
|
|
2383
|
-
// Return key if translation missing (for debugging)
|
|
2384
|
-
returnNull: false,
|
|
2385
|
-
returnEmptyString: false,
|
|
2386
|
-
// Keep locale codes lowercase (e.g., 'pt-br' not 'pt-BR')
|
|
2387
|
-
// This ensures resource keys match what we define
|
|
2388
|
-
lowerCaseLng: true
|
|
2389
|
-
});
|
|
2390
|
-
initialized = true;
|
|
2391
|
-
}
|
|
2392
|
-
async function changeLanguage(locale) {
|
|
2393
|
-
currentLocale = locale;
|
|
2394
|
-
await _i18next2.default.changeLanguage(locale);
|
|
2395
|
-
languageChangeListeners.forEach((listener) => listener(locale));
|
|
2396
|
-
}
|
|
2397
|
-
function onLanguageChange(callback) {
|
|
2398
|
-
languageChangeListeners.add(callback);
|
|
2399
|
-
return () => {
|
|
2400
|
-
languageChangeListeners.delete(callback);
|
|
2401
|
-
};
|
|
2402
|
-
}
|
|
2403
|
-
function getCurrentLocale() {
|
|
2404
|
-
return currentLocale;
|
|
2405
|
-
}
|
|
2406
|
-
function t(key, options) {
|
|
2407
|
-
if (!initialized) {
|
|
2408
|
-
console.warn(`[i18n] Not initialized, returning key: ${key}`);
|
|
2409
|
-
return key;
|
|
2410
|
-
}
|
|
2411
|
-
return _i18next2.default.t(key, options);
|
|
2412
|
-
}
|
|
2413
|
-
|
|
2414
|
-
// src/ui/ink/components/Modal.tsx
|
|
2415
|
-
var _react = require('react');
|
|
2416
|
-
var _ink = require('ink');
|
|
2417
|
-
|
|
2418
|
-
// src/ui/i18n/I18nContext.tsx
|
|
2419
|
-
|
|
2420
|
-
var _jsxruntime = require('react/jsx-runtime');
|
|
2421
|
-
var defaultContextValue = {
|
|
2422
|
-
t,
|
|
2423
|
-
locale: "en"
|
|
2424
|
-
};
|
|
2425
|
-
var I18nContext = _react.createContext.call(void 0, defaultContextValue);
|
|
2426
|
-
var I18nProvider = ({ children }) => {
|
|
2427
|
-
const [locale, setLocale] = _react.useState.call(void 0, getCurrentLocale());
|
|
2428
|
-
_react.useEffect.call(void 0, () => {
|
|
2429
|
-
const unsubscribe = onLanguageChange((newLocale) => {
|
|
2430
|
-
setLocale(newLocale);
|
|
2431
|
-
});
|
|
2432
|
-
return unsubscribe;
|
|
2433
|
-
}, []);
|
|
2434
|
-
const value = _react.useMemo.call(void 0,
|
|
2435
|
-
() => ({
|
|
2436
|
-
t,
|
|
2437
|
-
locale
|
|
2438
|
-
}),
|
|
2439
|
-
[locale]
|
|
2440
|
-
);
|
|
2441
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, I18nContext.Provider, { value, children });
|
|
2442
|
-
};
|
|
2443
|
-
function useTranslation() {
|
|
2444
|
-
const context = _react.useContext.call(void 0, I18nContext);
|
|
2445
|
-
return context;
|
|
2446
|
-
}
|
|
2447
|
-
|
|
2448
|
-
// src/ui/ink/components/Modal.tsx
|
|
2449
|
-
|
|
2450
|
-
var OTHER_VALUE = "__other__";
|
|
2451
|
-
function Modal(props) {
|
|
2452
|
-
const { t: t2 } = useTranslation();
|
|
2453
|
-
const { title, onCancel } = props;
|
|
2454
|
-
const mode = "mode" in props ? props.mode : "select";
|
|
2455
|
-
const [cursor, setCursor] = _react.useState.call(void 0, 0);
|
|
2456
|
-
const [customInput, setCustomInput] = _react.useState.call(void 0, "");
|
|
2457
|
-
const [isCustomMode, setIsCustomMode] = _react.useState.call(void 0, false);
|
|
2458
|
-
const [inputValue, setInputValue] = _react.useState.call(void 0, () => {
|
|
2459
|
-
if (mode === "input" && "defaultValue" in props && typeof props.defaultValue === "string") {
|
|
2460
|
-
return props.defaultValue;
|
|
2461
|
-
}
|
|
2462
|
-
return "";
|
|
2463
|
-
});
|
|
2464
|
-
const [validationError, setValidationError] = _react.useState.call(void 0, null);
|
|
2465
|
-
const choices = _react.useMemo.call(void 0, () => {
|
|
2466
|
-
if (mode === "select" && "options" in props) {
|
|
2467
|
-
const items = [...props.options];
|
|
2468
|
-
if ("allowCustomInput" in props && props.allowCustomInput) {
|
|
2469
|
-
items.push({
|
|
2470
|
-
label: t2("ui.questionOther"),
|
|
2471
|
-
value: OTHER_VALUE,
|
|
2472
|
-
disabled: false
|
|
2473
|
-
});
|
|
2474
|
-
}
|
|
2475
|
-
return items;
|
|
2476
|
-
}
|
|
2477
|
-
if (mode === "confirm" && "confirmText" in props) {
|
|
2478
|
-
const confirmText = _nullishCoalesce(props.confirmText, () => ( t2("ui.confirmYes")));
|
|
2479
|
-
const cancelText = _nullishCoalesce(props.cancelText, () => ( t2("ui.confirmNo")));
|
|
2480
|
-
return [
|
|
2481
|
-
{ label: confirmText, value: "yes", disabled: false },
|
|
2482
|
-
{ label: cancelText, value: "no", disabled: false }
|
|
2483
|
-
];
|
|
2484
|
-
}
|
|
2485
|
-
return [];
|
|
2486
|
-
}, [mode, props, t2]);
|
|
2487
|
-
_react.useState.call(void 0, () => {
|
|
2488
|
-
if (mode === "confirm" && "defaultValue" in props) {
|
|
2489
|
-
const defaultIdx = props.defaultValue === false ? 1 : 0;
|
|
2490
|
-
setCursor(defaultIdx);
|
|
2491
|
-
}
|
|
2492
|
-
});
|
|
2493
|
-
const hasNoChoices = mode === "select" && choices.length === 0;
|
|
2494
|
-
const findNextEnabled = _react.useCallback.call(void 0,
|
|
2495
|
-
(from, direction) => {
|
|
2496
|
-
const len = choices.length;
|
|
2497
|
-
if (len === 0) return 0;
|
|
2498
|
-
let next = (from + direction + len) % len;
|
|
2499
|
-
let attempts = 0;
|
|
2500
|
-
while (_optionalChain([choices, 'access', _3 => _3[next], 'optionalAccess', _4 => _4.disabled]) && attempts < len) {
|
|
2501
|
-
next = (next + direction + len) % len;
|
|
2502
|
-
attempts++;
|
|
2503
|
-
}
|
|
2504
|
-
return next;
|
|
2505
|
-
},
|
|
2506
|
-
[choices]
|
|
2507
|
-
);
|
|
2508
|
-
_ink.useInput.call(void 0, (char, key) => {
|
|
2509
|
-
if (key.escape) {
|
|
2510
|
-
if (mode === "select" && isCustomMode) {
|
|
2511
|
-
setIsCustomMode(false);
|
|
2512
|
-
setCustomInput("");
|
|
2513
|
-
} else {
|
|
2514
|
-
_optionalChain([onCancel, 'optionalCall', _5 => _5()]);
|
|
2515
|
-
}
|
|
2516
|
-
return;
|
|
2517
|
-
}
|
|
2518
|
-
if (mode === "input" || mode === "password") {
|
|
2519
|
-
if (key.return && "onSubmit" in props) {
|
|
2520
|
-
if ("validate" in props && props.validate) {
|
|
2521
|
-
const result = props.validate(inputValue);
|
|
2522
|
-
if (result === true) {
|
|
2523
|
-
props.onSubmit(inputValue);
|
|
2524
|
-
} else if (typeof result === "string") {
|
|
2525
|
-
setValidationError(result);
|
|
2526
|
-
} else {
|
|
2527
|
-
setValidationError(t2("ui.validationError"));
|
|
2528
|
-
}
|
|
2529
|
-
} else {
|
|
2530
|
-
props.onSubmit(inputValue);
|
|
2531
|
-
}
|
|
2532
|
-
return;
|
|
2533
|
-
}
|
|
2534
|
-
if (key.backspace || key.delete) {
|
|
2535
|
-
setInputValue((prev) => prev.slice(0, -1));
|
|
2536
|
-
setValidationError(null);
|
|
2537
|
-
return;
|
|
2538
|
-
}
|
|
2539
|
-
if (char && !key.ctrl && !key.meta) {
|
|
2540
|
-
setInputValue((prev) => prev + char);
|
|
2541
|
-
setValidationError(null);
|
|
2542
|
-
}
|
|
2543
|
-
return;
|
|
2544
|
-
}
|
|
2545
|
-
if (mode === "select" && isCustomMode && "onSelect" in props) {
|
|
2546
|
-
if (key.return) {
|
|
2547
|
-
if (customInput.trim()) {
|
|
2548
|
-
props.onSelect({
|
|
2549
|
-
label: customInput,
|
|
2550
|
-
value: customInput
|
|
2551
|
-
});
|
|
2552
|
-
}
|
|
2553
|
-
return;
|
|
2554
|
-
}
|
|
2555
|
-
if (key.backspace || key.delete) {
|
|
2556
|
-
setCustomInput((prev) => prev.slice(0, -1));
|
|
2557
|
-
return;
|
|
2558
|
-
}
|
|
2559
|
-
if (char && !key.ctrl && !key.meta) {
|
|
2560
|
-
setCustomInput((prev) => prev + char);
|
|
2561
|
-
}
|
|
2562
|
-
return;
|
|
2563
|
-
}
|
|
2564
|
-
if (key.return) {
|
|
2565
|
-
const selected = choices[cursor];
|
|
2566
|
-
if (_optionalChain([selected, 'optionalAccess', _6 => _6.disabled])) {
|
|
2567
|
-
return;
|
|
2568
|
-
}
|
|
2569
|
-
if (mode === "select" && "onSelect" in props) {
|
|
2570
|
-
if (_optionalChain([selected, 'optionalAccess', _7 => _7.value]) === OTHER_VALUE) {
|
|
2571
|
-
setIsCustomMode(true);
|
|
2572
|
-
} else if (selected) {
|
|
2573
|
-
props.onSelect(selected);
|
|
2574
|
-
}
|
|
2575
|
-
} else if (mode === "confirm" && "onConfirm" in props) {
|
|
2576
|
-
props.onConfirm(_optionalChain([selected, 'optionalAccess', _8 => _8.value]) === "yes");
|
|
2577
|
-
}
|
|
2578
|
-
return;
|
|
2579
|
-
}
|
|
2580
|
-
if (key.upArrow) {
|
|
2581
|
-
setCursor((prev) => findNextEnabled(prev, -1));
|
|
2582
|
-
return;
|
|
2583
|
-
}
|
|
2584
|
-
if (key.downArrow) {
|
|
2585
|
-
setCursor((prev) => findNextEnabled(prev, 1));
|
|
2586
|
-
return;
|
|
2587
|
-
}
|
|
2588
|
-
if (char && char >= "1" && char <= "9") {
|
|
2589
|
-
const index = parseInt(char, 10) - 1;
|
|
2590
|
-
if (index < choices.length) {
|
|
2591
|
-
const selected = choices[index];
|
|
2592
|
-
if (_optionalChain([selected, 'optionalAccess', _9 => _9.disabled])) {
|
|
2593
|
-
return;
|
|
2594
|
-
}
|
|
2595
|
-
if (mode === "select" && "onSelect" in props) {
|
|
2596
|
-
if (_optionalChain([selected, 'optionalAccess', _10 => _10.value]) === OTHER_VALUE) {
|
|
2597
|
-
setIsCustomMode(true);
|
|
2598
|
-
} else if (selected) {
|
|
2599
|
-
props.onSelect(selected);
|
|
2600
|
-
}
|
|
2601
|
-
} else if (mode === "confirm" && "onConfirm" in props) {
|
|
2602
|
-
props.onConfirm(_optionalChain([selected, 'optionalAccess', _11 => _11.value]) === "yes");
|
|
2603
|
-
}
|
|
2604
|
-
}
|
|
2605
|
-
return;
|
|
2606
|
-
}
|
|
2607
|
-
});
|
|
2608
|
-
const renderContent = () => {
|
|
2609
|
-
if (mode === "input" || mode === "password") {
|
|
2610
|
-
const displayValue = mode === "password" ? "\u2022".repeat(inputValue.length) : inputValue;
|
|
2611
|
-
const placeholderText = "placeholder" in props && props.placeholder || (mode === "password" ? t2("ui.passwordPlaceholder") : t2("ui.inputPlaceholder"));
|
|
2612
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
2613
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Box, { children: [
|
|
2614
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "yellow", children: "> " }),
|
|
2615
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: displayValue || /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: placeholderText }) }),
|
|
2616
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: "\u2588" })
|
|
2617
|
-
] }),
|
|
2618
|
-
validationError && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Box, { marginTop: 1, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "red", children: validationError }) })
|
|
2619
|
-
] });
|
|
2620
|
-
}
|
|
2621
|
-
if (mode === "select" && isCustomMode) {
|
|
2622
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Box, { children: [
|
|
2623
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color: "yellow", children: [
|
|
2624
|
-
t2("ui.questionYourAnswer"),
|
|
2625
|
-
": "
|
|
2626
|
-
] }),
|
|
2627
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: customInput }),
|
|
2628
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: "\u2588" })
|
|
2629
|
-
] });
|
|
2630
|
-
}
|
|
2631
|
-
if (hasNoChoices) {
|
|
2632
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Box, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: t2("ui.noOptionsAvailable") }) });
|
|
2633
|
-
}
|
|
2634
|
-
return choices.map((choice, i) => {
|
|
2635
|
-
const isSelected = i === cursor;
|
|
2636
|
-
const isDisabled = choice.disabled;
|
|
2637
|
-
let color;
|
|
2638
|
-
if (isDisabled) {
|
|
2639
|
-
color = "gray";
|
|
2640
|
-
} else if (isSelected) {
|
|
2641
|
-
color = "green";
|
|
2642
|
-
}
|
|
2643
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Box, { flexDirection: "column", children: [
|
|
2644
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color, children: [
|
|
2645
|
-
isSelected ? "\u25B8 " : " ",
|
|
2646
|
-
i + 1,
|
|
2647
|
-
". ",
|
|
2648
|
-
choice.label,
|
|
2649
|
-
isDisabled ? " (disabled)" : ""
|
|
2650
|
-
] }),
|
|
2651
|
-
choice.description && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color: "gray", children: [
|
|
2652
|
-
" ",
|
|
2653
|
-
choice.description
|
|
2654
|
-
] })
|
|
2655
|
-
] }, `${choice.value}-${i}`);
|
|
2656
|
-
});
|
|
2657
|
-
};
|
|
2658
|
-
const renderHint = () => {
|
|
2659
|
-
if (mode === "input" || mode === "password") {
|
|
2660
|
-
return t2("ui.inputHint");
|
|
2661
|
-
}
|
|
2662
|
-
if (mode === "select" && hasNoChoices) {
|
|
2663
|
-
return t2("common.pressEscToCancel");
|
|
2664
|
-
}
|
|
2665
|
-
if (mode === "select" && isCustomMode) {
|
|
2666
|
-
return t2("ui.questionCustomHint");
|
|
2667
|
-
}
|
|
2668
|
-
return t2("ui.questionSelectHint");
|
|
2669
|
-
};
|
|
2670
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Box, { flexDirection: "column", paddingX: 1, children: [
|
|
2671
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "cyan", children: title }),
|
|
2672
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: " " }),
|
|
2673
|
-
renderContent(),
|
|
2674
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: " " }),
|
|
2675
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: renderHint() })
|
|
2676
|
-
] });
|
|
2677
|
-
}
|
|
2678
|
-
async function showModal(options) {
|
|
2679
|
-
const { title, options: modalOptions, allowCustomInput, multiSelect } = options;
|
|
2680
|
-
if (!process.stdout.isTTY) {
|
|
2681
|
-
return null;
|
|
2682
|
-
}
|
|
2683
|
-
return new Promise((resolve) => {
|
|
2684
|
-
let completed = false;
|
|
2685
|
-
const instance = _ink.render.call(void 0,
|
|
2686
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2687
|
-
Modal,
|
|
2688
|
-
{
|
|
2689
|
-
title,
|
|
2690
|
-
options: modalOptions,
|
|
2691
|
-
allowCustomInput,
|
|
2692
|
-
multiSelect,
|
|
2693
|
-
onSelect: (option) => {
|
|
2694
|
-
if (completed) return;
|
|
2695
|
-
completed = true;
|
|
2696
|
-
instance.unmount();
|
|
2697
|
-
resolve(option);
|
|
2698
|
-
},
|
|
2699
|
-
onCancel: () => {
|
|
2700
|
-
if (completed) return;
|
|
2701
|
-
completed = true;
|
|
2702
|
-
instance.unmount();
|
|
2703
|
-
resolve(null);
|
|
2704
|
-
}
|
|
2705
|
-
}
|
|
2706
|
-
) }),
|
|
2707
|
-
{ exitOnCtrlC: false }
|
|
2708
|
-
);
|
|
2709
|
-
});
|
|
2710
|
-
}
|
|
2711
|
-
async function showConfirm(options) {
|
|
2712
|
-
if (!process.stdout.isTTY) {
|
|
2713
|
-
return false;
|
|
2714
|
-
}
|
|
2715
|
-
return new Promise((resolve) => {
|
|
2716
|
-
let completed = false;
|
|
2717
|
-
const instance = _ink.render.call(void 0,
|
|
2718
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2719
|
-
Modal,
|
|
2720
|
-
{
|
|
2721
|
-
mode: "confirm",
|
|
2722
|
-
title: options.title,
|
|
2723
|
-
confirmText: options.confirmText,
|
|
2724
|
-
cancelText: options.cancelText,
|
|
2725
|
-
defaultValue: options.defaultValue,
|
|
2726
|
-
onConfirm: (confirmed) => {
|
|
2727
|
-
if (completed) return;
|
|
2728
|
-
completed = true;
|
|
2729
|
-
instance.unmount();
|
|
2730
|
-
resolve(confirmed);
|
|
2731
|
-
},
|
|
2732
|
-
onCancel: () => {
|
|
2733
|
-
if (completed) return;
|
|
2734
|
-
completed = true;
|
|
2735
|
-
instance.unmount();
|
|
2736
|
-
resolve(false);
|
|
2737
|
-
}
|
|
2738
|
-
}
|
|
2739
|
-
) }),
|
|
2740
|
-
{ exitOnCtrlC: false }
|
|
2741
|
-
);
|
|
2742
|
-
});
|
|
2743
|
-
}
|
|
2744
|
-
async function showInput(options) {
|
|
2745
|
-
if (!process.stdout.isTTY) {
|
|
2746
|
-
return null;
|
|
2747
|
-
}
|
|
2748
|
-
return new Promise((resolve) => {
|
|
2749
|
-
let completed = false;
|
|
2750
|
-
const instance = _ink.render.call(void 0,
|
|
2751
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2752
|
-
Modal,
|
|
2753
|
-
{
|
|
2754
|
-
mode: "input",
|
|
2755
|
-
title: options.title,
|
|
2756
|
-
placeholder: options.placeholder,
|
|
2757
|
-
defaultValue: options.defaultValue,
|
|
2758
|
-
validate: options.validate,
|
|
2759
|
-
onSubmit: (value) => {
|
|
2760
|
-
if (completed) return;
|
|
2761
|
-
completed = true;
|
|
2762
|
-
instance.unmount();
|
|
2763
|
-
resolve(value);
|
|
2764
|
-
},
|
|
2765
|
-
onCancel: () => {
|
|
2766
|
-
if (completed) return;
|
|
2767
|
-
completed = true;
|
|
2768
|
-
instance.unmount();
|
|
2769
|
-
resolve(null);
|
|
2770
|
-
}
|
|
2771
|
-
}
|
|
2772
|
-
) }),
|
|
2773
|
-
{ exitOnCtrlC: false }
|
|
2774
|
-
);
|
|
2775
|
-
});
|
|
2776
|
-
}
|
|
2777
|
-
async function showPassword(options) {
|
|
2778
|
-
if (!process.stdout.isTTY) {
|
|
2779
|
-
return null;
|
|
2780
|
-
}
|
|
2781
|
-
return new Promise((resolve) => {
|
|
2782
|
-
let completed = false;
|
|
2783
|
-
const instance = _ink.render.call(void 0,
|
|
2784
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2785
|
-
Modal,
|
|
2786
|
-
{
|
|
2787
|
-
mode: "password",
|
|
2788
|
-
title: options.title,
|
|
2789
|
-
placeholder: options.placeholder,
|
|
2790
|
-
validate: options.validate,
|
|
2791
|
-
onSubmit: (value) => {
|
|
2792
|
-
if (completed) return;
|
|
2793
|
-
completed = true;
|
|
2794
|
-
instance.unmount();
|
|
2795
|
-
resolve(value);
|
|
2796
|
-
},
|
|
2797
|
-
onCancel: () => {
|
|
2798
|
-
if (completed) return;
|
|
2799
|
-
completed = true;
|
|
2800
|
-
instance.unmount();
|
|
2801
|
-
resolve(null);
|
|
2802
|
-
}
|
|
2803
|
-
}
|
|
2804
|
-
) }),
|
|
2805
|
-
{ exitOnCtrlC: false }
|
|
2806
|
-
);
|
|
2807
|
-
});
|
|
2808
|
-
}
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
exports.SUPPORTED_LOCALES = SUPPORTED_LOCALES; exports.LANGUAGE_DISPLAY_NAMES = LANGUAGE_DISPLAY_NAMES; exports.detectLocale = detectLocale; exports.injectLocaleIntoPrompt = injectLocaleIntoPrompt; exports.initI18n = initI18n; exports.changeLanguage = changeLanguage; exports.getCurrentLocale = getCurrentLocale; exports.t = t; exports.showModal = showModal; exports.showConfirm = showConfirm; exports.showInput = showInput; exports.showPassword = showPassword;
|
|
2824
|
-
/**
|
|
2825
|
-
* @license
|
|
2826
|
-
* Copyright 2025 Autohand AI LLC
|
|
2827
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
2828
|
-
*/
|