{"_id":"@ansstory/hitf","_rev":"16-5d6e3d721f33ace6cdcf584d49fd9677","name":"@ansstory/hitf","dist-tags":{"latest":"1.0.13"},"versions":{"1.0.1":{"name":"@ansstory/hitf","version":"1.0.1","keywords":["hitf","cli","i18n","internationalization","translation","scaffolding","vue","nuxt","react","next","uni-app","chinese-translation","locale","baidu-translate","tencent-translate","openai","ast"],"author":{"name":"AnsStory","email":"story0809@163.com"},"license":"MIT","_id":"@ansstory/hitf@1.0.1","maintainers":[{"name":"ansstory","email":"story0809@163.com"}],"homepage":"https://ansstory.github.io/hitf-cli-md/","bugs":{"url":"https://github.com/AnsStory/hitf-cli-md/issues"},"bin":{"hitf":"dist/index.cjs"},"dist":{"shasum":"ef03efa253920ef1562e1cc2832fc4ea9d7d273b","tarball":"https://registry.npmjs.org/@ansstory/hitf/-/hitf-1.0.1.tgz","fileCount":7,"integrity":"sha512-s538ap/C0E06RwZUUy4MQeWza2vBIt+2G5s0ahPjY1h7PdRENwEff6KWUm4oMvNzqyYxZKmPL8tslUvR4KGQ5g==","signatures":[{"sig":"MEUCIGsAdzRAhQIAwxzYUxKpJYAw6v9e6XBFmhaBhVFEBa/yAiEAmv8g859Dvfgdahmfz/wDNIquIZ+hljOMhrtykSDdRkM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15609545},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"a9e33d2d8712c5f7a25ec2765e7ed6c85f6945a8","private":false,"scripts":{"fix":"npm run lint:fix && npm run format","lint":"eslint src/","test":"tsx --test test/*.test.ts test/providers/*.test.ts","build":"npx tsx build.config.mts && tsc --emitDeclarationOnly","check":"npm run lint && npm run format:check && npm run typecheck","format":"prettier --write \"src/**/*.{ts,js,json}\"","doc:dev":"vitepress dev doc","lint:fix":"eslint src/ --fix","doc:build":"vitepress build doc","typecheck":"tsc --noEmit","uninstall":"node ./dist/index.cjs clear-config","doc:preview":"vitepress preview doc","postinstall":"node ./dist/index.cjs global-config","build:bundle":"npx tsx build.config.mts","format:check":"prettier --check \"src/**/*.{ts,js,json}\"","prepublishOnly":"npm run build && npm run build:obfuscated","build:obfuscated":"cross-env OBFUSCATE=true npx tsx build.config.mts"},"_npmUser":{"name":"ansstory","email":"story0809@163.com"},"_npmVersion":"10.8.2","description":"CLI toolkit for project scaffolding and i18n automation - extract Chinese text, translate via Baidu/Tencent/OpenAI, and generate locale files for Vue/React/uni-app","directories":{},"_nodeVersion":"20.19.2","dependencies":{"joi":"^18.2.3","ora":"^5.4.1","axios":"^1.17.0","chalk":"^4.1.2","exceljs":"^4.4.0","i18next":"^26.3.0","inquirer":"^8.2.6","commander":"^14.0.0","deepmerge":"^4.3.1","minimatch":"^10.2.5","@babel/parser":"^7.29.3","@babel/traverse":"^7.29.0","@vue/compiler-dom":"^3.5.35","@vue/compiler-sfc":"^3.5.35","download-git-repo":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","esbuild":"^0.28.0","prettier":"^3.9.6","cross-env":"^10.1.0","vitepress":"^1.6.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.20.1","@types/inquirer":"^9.0.10","typescript-eslint":"^8.67.0","javascript-obfuscator":"^5.4.3","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6"},"_npmOperationalInternal":{"tmp":"tmp/hitf_1.0.1_1787031153131_0.5279988713421808","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ansstory/hitf","version":"1.0.2","keywords":["hitf","cli","i18n","internationalization","translation","scaffolding","vue","nuxt","react","next","uni-app","chinese-translation","locale","baidu-translate","tencent-translate","openai","ast"],"author":{"name":"AnsStory","email":"story0809@163.com"},"license":"MIT","_id":"@ansstory/hitf@1.0.2","maintainers":[{"name":"ansstory","email":"story0809@163.com"}],"homepage":"https://ansstory.github.io/hitf-cli-md/","bugs":{"url":"https://github.com/AnsStory/hitf-cli-md/issues"},"bin":{"hitf":"dist/index.cjs"},"dist":{"shasum":"302ad8b189ee115ff02664d426ed5917be40a0da","tarball":"https://registry.npmjs.org/@ansstory/hitf/-/hitf-1.0.2.tgz","fileCount":7,"integrity":"sha512-z7bizf4KqXHtg+qr+CuWw6pb6wvRAFz5g/RDqbnb3TM9no+SlP8B2XJrZAqF6GNV84yWn5zu2n6Dbhu8WJpvPw==","signatures":[{"sig":"MEUCIQCE9YP8xYlJIP253zV+E90NED48LOlMGiTl2lBVtwfpiQIgHhkTNBSGpxPXkCvmWDpUZQUiMtbclloalxGEPTpHeHU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15637088},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"f8c52e74e3f00a1b32ef9865450a9cba14973b0c","private":false,"scripts":{"fix":"npm run lint:fix && npm run format","lint":"eslint src/","test":"tsx --test test/*.test.ts test/providers/*.test.ts","build":"npx tsx build.config.mts && tsc --emitDeclarationOnly","check":"npm run lint && npm run format:check && npm run typecheck","format":"prettier --write \"src/**/*.{ts,js,json}\"","doc:dev":"vitepress dev doc","lint:fix":"eslint src/ --fix","doc:build":"vitepress build doc","typecheck":"tsc --noEmit","uninstall":"node ./dist/index.cjs clear-config","doc:preview":"vitepress preview doc","postinstall":"node ./dist/index.cjs global-config","build:bundle":"npx tsx build.config.mts","format:check":"prettier --check \"src/**/*.{ts,js,json}\"","prepublishOnly":"npm run build && npm run build:obfuscated","build:obfuscated":"cross-env OBFUSCATE=true npx tsx build.config.mts"},"_npmUser":{"name":"ansstory","email":"story0809@163.com"},"_npmVersion":"10.8.2","description":"CLI toolkit for project scaffolding and i18n automation - extract Chinese text, translate via Baidu/Tencent/OpenAI, and generate locale files for Vue/React/uni-app","directories":{},"_nodeVersion":"20.19.2","dependencies":{"joi":"^18.2.3","ora":"^5.4.1","axios":"^1.17.0","chalk":"^4.1.2","exceljs":"^4.4.0","i18next":"^26.3.0","inquirer":"^8.2.6","commander":"^14.0.0","deepmerge":"^4.3.1","minimatch":"^10.2.5","@babel/parser":"^7.29.3","@babel/traverse":"^7.29.0","@vue/compiler-dom":"^3.5.35","@vue/compiler-sfc":"^3.5.35","download-git-repo":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","esbuild":"^0.28.0","prettier":"^3.9.6","cross-env":"^10.1.0","vitepress":"^1.6.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.20.1","@types/inquirer":"^9.0.10","typescript-eslint":"^8.67.0","javascript-obfuscator":"^5.4.3","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6"},"_npmOperationalInternal":{"tmp":"tmp/hitf_1.0.2_1787039133972_0.7265783996421982","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@ansstory/hitf","version":"1.0.3","keywords":["hitf","cli","i18n","internationalization","translation","scaffolding","vue","nuxt","react","next","uni-app","chinese-translation","locale","baidu-translate","tencent-translate","openai","ast"],"author":{"name":"AnsStory","email":"story0809@163.com"},"license":"MIT","_id":"@ansstory/hitf@1.0.3","maintainers":[{"name":"ansstory","email":"story0809@163.com"}],"homepage":"https://ansstory.github.io/hitf-cli-md/","bugs":{"url":"https://github.com/AnsStory/hitf-cli-md/issues"},"bin":{"hitf":"dist/index.cjs"},"dist":{"shasum":"14c9287d9151e25343904f873f9f959664031908","tarball":"https://registry.npmjs.org/@ansstory/hitf/-/hitf-1.0.3.tgz","fileCount":7,"integrity":"sha512-Ajb27Mp27XNrpgCelyrOqsgY2Be8d0Yel1WTv7I1q6BcbJ+ZwAJWpObnDauQ1RSfxIqCilhs4zidXGMIK0TuyQ==","signatures":[{"sig":"MEYCIQDQqZ2Dt97FaK0MhXoYE1ujE22EgynvhLypHcu0SiRLyQIhAIdpVCdn38QaedDQqOB8+0/POoxjn2bHLmog/OsPgp05","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12473503},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"dce8d893b678b89aac726c02d41f904f9a264fee","private":false,"scripts":{"dev":"npx tsx build.config.mts --watch","fix":"npm run lint:fix && npm run format","lint":"eslint src/","test":"tsx --test test/*.test.ts test/providers/*.test.ts","build":"npx tsx build.config.mts && tsc --emitDeclarationOnly","check":"npm run lint && npm run format:check && npm run typecheck","format":"prettier --write \"src/**/*.{ts,js,json}\"","doc:dev":"vitepress dev doc","publish":"","lint:fix":"eslint src/ --fix","doc:build":"vitepress build doc","typecheck":"tsc --noEmit","uninstall":"node ./dist/index.cjs clear-config","doc:preview":"vitepress preview doc","postinstall":"node ./dist/index.cjs global-config","build:bundle":"npx tsx build.config.mts","format:check":"prettier --check \"src/**/*.{ts,js,json}\"","prepublishOnly":"npm run build && npm run build:obfuscated","build:obfuscated":"cross-env OBFUSCATE=true npx tsx build.config.mts"},"_npmUser":{"name":"ansstory","email":"story0809@163.com"},"_npmVersion":"10.8.2","description":"CLI toolkit for project scaffolding and i18n automation - extract Chinese text, translate via Baidu/Tencent/OpenAI, and generate locale files for Vue/React/uni-app","directories":{},"_nodeVersion":"20.19.2","dependencies":{"joi":"^18.2.3","ora":"^5.4.1","axios":"^1.17.0","chalk":"^4.1.2","exceljs":"^4.4.0","i18next":"^26.3.0","inquirer":"^8.2.6","commander":"^14.0.0","deepmerge":"^4.3.1","minimatch":"^10.2.5","@babel/parser":"^7.29.3","@babel/traverse":"^7.29.0","@vue/compiler-dom":"^3.5.35","@vue/compiler-sfc":"^3.5.35","download-git-repo":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","esbuild":"^0.28.0","prettier":"^3.9.6","cross-env":"^10.1.0","vitepress":"^1.6.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.20.1","@types/inquirer":"^9.0.10","typescript-eslint":"^8.67.0","javascript-obfuscator":"^5.4.3","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6"},"_npmOperationalInternal":{"tmp":"tmp/hitf_1.0.3_1787882674663_0.39053586282767117","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@ansstory/hitf","version":"1.0.5","keywords":["hitf","cli","i18n","internationalization","translation","scaffolding","vue","nuxt","react","next","uni-app","chinese-translation","locale","baidu-translate","tencent-translate","openai","ast"],"author":{"name":"AnsStory","email":"story0809@163.com"},"license":"MIT","_id":"@ansstory/hitf@1.0.5","maintainers":[{"name":"ansstory","email":"story0809@163.com"}],"homepage":"https://ansstory.github.io/hitf-cli-md/","bugs":{"url":"https://github.com/AnsStory/hitf-cli-md/issues"},"bin":{"hitf":"dist/index.cjs"},"dist":{"shasum":"7959869bb8feb5b4e26765fa495e0ee20e49ed03","tarball":"https://registry.npmjs.org/@ansstory/hitf/-/hitf-1.0.5.tgz","fileCount":9,"integrity":"sha512-a3TFgHPhYnTKDlWBYrczA3om7EWzPCMQ2e49AgOaqEJSxoTvSHgo2iBeDpeL+q5Z4scCcDiKls8CAg7hYAe/ZQ==","signatures":[{"sig":"MEUCIQCtruTNVH3q8RaP8pEecUZbPpJGqbxsfv7rxaK5lv1MMgIgYMNRgNWnMCBdZDpwHMm+E+27vhFGweMBIw4pObcfM7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15703608},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"6ea43503496a5202c13c6539c13ae4a94bd8345e","private":false,"scripts":{"dev":"npx tsx build.config.mts --watch","fix":"npm run lint:fix && npm run format","lint":"eslint src/","test":"tsx --test test/*.test.ts test/providers/*.test.ts","build":"npx tsx build.config.mts && tsc --emitDeclarationOnly","check":"npm run lint && npm run format:check && npm run typecheck","format":"prettier --write \"src/**/*.{ts,js,json}\"","doc:dev":"vitepress dev doc","lint:fix":"eslint src/ --fix","doc:build":"vitepress build doc","typecheck":"tsc --noEmit","uninstall":"node ./dist/uninstall.cjs","doc:preview":"vitepress preview doc","postinstall":"node ./dist/postinstall.cjs","build:bundle":"npx tsx build.config.mts","format:check":"prettier --check \"src/**/*.{ts,js,json}\"","prepublishOnly":"npm run build && npm run build:obfuscated","build:obfuscated":"cross-env OBFUSCATE=true npx tsx build.config.mts"},"_npmUser":{"name":"ansstory","email":"story0809@163.com"},"_npmVersion":"10.8.2","description":"CLI toolkit for project scaffolding and i18n automation - extract Chinese text, translate via Baidu/Tencent/OpenAI, and generate locale files for Vue/React/uni-app","directories":{},"_nodeVersion":"20.19.2","dependencies":{"joi":"^18.2.3","ora":"^5.4.1","axios":"^1.17.0","chalk":"^4.1.2","exceljs":"^4.4.0","i18next":"^26.3.0","inquirer":"^8.2.6","commander":"^14.0.0","deepmerge":"^4.3.1","minimatch":"^10.2.5","@babel/parser":"^7.29.3","@babel/traverse":"^7.29.0","@vue/compiler-dom":"^3.5.35","@vue/compiler-sfc":"^3.5.35","download-git-repo":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","esbuild":"^0.28.0","prettier":"^3.9.6","cross-env":"^10.1.0","vitepress":"^1.6.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.20.1","@types/inquirer":"^9.0.10","typescript-eslint":"^8.67.0","javascript-obfuscator":"^5.4.3","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6"},"_npmOperationalInternal":{"tmp":"tmp/hitf_1.0.5_1787902310480_0.6217865063814949","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@ansstory/hitf","version":"1.0.6","keywords":["hitf","cli","i18n","internationalization","translation","scaffolding","vue","nuxt","react","next","uni-app","chinese-translation","locale","baidu-translate","tencent-translate","openai","ast"],"author":{"name":"AnsStory","email":"story0809@163.com"},"license":"MIT","_id":"@ansstory/hitf@1.0.6","maintainers":[{"name":"ansstory","email":"story0809@163.com"}],"homepage":"https://ansstory.github.io/hitf-cli-md/","bugs":{"url":"https://github.com/AnsStory/hitf-cli-md/issues"},"bin":{"hitf":"dist/index.cjs"},"dist":{"shasum":"f1b5be6de67024d3ba35d1dafbdb147c7902865b","tarball":"https://registry.npmjs.org/@ansstory/hitf/-/hitf-1.0.6.tgz","fileCount":9,"integrity":"sha512-Wjtl3TSqfL3U0H0YkkKT6OTle1eeMlHHt6e4KZH3T52bcR3PGEZqbb2llzxxSR5fOcoE7IxSspBnnsRDKGJErg==","signatures":[{"sig":"MEUCIQCZ6IlTRqPVEoBX+gzgLTpNvW9fYczjMYtqEzuJByQgewIgYWqKIo9PhTgrnCaRcYMPYzgloMsUi/xQImga6cas6kY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15704034},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"6a0ede81a5371893ffc64a4bb2bf3cc8b362db77","private":false,"scripts":{"dev":"npx tsx build.config.mts --watch","fix":"npm run lint:fix && npm run format","lint":"eslint src/","test":"tsx --test test/*.test.ts test/providers/*.test.ts","build":"npx tsx build.config.mts && tsc --emitDeclarationOnly","check":"npm run lint && npm run format:check && npm run typecheck","format":"prettier --write \"src/**/*.{ts,js,json}\"","doc:dev":"vitepress dev doc","lint:fix":"eslint src/ --fix","doc:build":"vitepress build doc","typecheck":"tsc --noEmit","doc:preview":"vitepress preview doc","postinstall":"node ./dist/postinstall.cjs","build:bundle":"npx tsx build.config.mts","format:check":"prettier --check \"src/**/*.{ts,js,json}\"","preuninstall":"node ./dist/uninstall.cjs","prepublishOnly":"npm run build && npm run build:obfuscated","build:obfuscated":"cross-env OBFUSCATE=true npx tsx build.config.mts"},"_npmUser":{"name":"ansstory","email":"story0809@163.com"},"_npmVersion":"10.8.2","description":"CLI toolkit for project scaffolding and i18n automation - extract Chinese text, translate via Baidu/Tencent/OpenAI, and generate locale files for Vue/React/uni-app","directories":{},"_nodeVersion":"20.19.2","dependencies":{"joi":"^18.2.3","ora":"^5.4.1","axios":"^1.17.0","chalk":"^4.1.2","exceljs":"^4.4.0","i18next":"^26.3.0","inquirer":"^8.2.6","commander":"^14.0.0","deepmerge":"^4.3.1","minimatch":"^10.2.5","@babel/parser":"^7.29.3","@babel/traverse":"^7.29.0","@vue/compiler-dom":"^3.5.35","@vue/compiler-sfc":"^3.5.35","download-git-repo":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","esbuild":"^0.28.0","prettier":"^3.9.6","cross-env":"^10.1.0","vitepress":"^1.6.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.20.1","@types/inquirer":"^9.0.10","typescript-eslint":"^8.67.0","javascript-obfuscator":"^5.4.3","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6"},"_npmOperationalInternal":{"tmp":"tmp/hitf_1.0.6_1787903007492_0.9692705635228598","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@ansstory/hitf","version":"1.0.9","keywords":["hitf","cli","i18n","internationalization","translation","scaffolding","vue","nuxt","react","next","uni-app","chinese-translation","locale","baidu-translate","tencent-translate","openai","ast"],"author":{"name":"AnsStory","email":"story0809@163.com"},"license":"MIT","_id":"@ansstory/hitf@1.0.9","maintainers":[{"name":"ansstory","email":"story0809@163.com"}],"homepage":"https://ansstory.github.io/hitf-cli-md/","bugs":{"url":"https://github.com/AnsStory/hitf-cli-md/issues"},"bin":{"hitf":"dist/index.cjs"},"dist":{"shasum":"818d0e88f2b415bde4790671f480da7ef97c8f5a","tarball":"https://registry.npmjs.org/@ansstory/hitf/-/hitf-1.0.9.tgz","fileCount":9,"integrity":"sha512-INKq72p8nO7/9INn6fGFUXzpHl0zjM+R0FFvRuw9dvP1GtzJu4z0+IllNo+42dQ58ZKBIbCWVJNRy1l0v1a0ng==","signatures":[{"sig":"MEQCIA0Pg44eZYuj25ctp5k2bZlonqdjPyFoiL2oMIkjHY1+AiA8CXwFg/Kpm+bXafMycc1M6J7FR3DVfFhj2rOp68cSWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16415987},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"13c7b03e617cd57197bb8e8c77a8b2bfb3d1d62d","private":false,"scripts":{"dev":"npx tsx build.config.mts --watch","fix":"npm run lint:fix && npm run format","lint":"eslint src/","test":"tsx --test test/*.test.ts test/providers/*.test.ts","build":"npx tsx build.config.mts && tsc --emitDeclarationOnly","check":"npm run lint && npm run format:check && npm run typecheck","format":"prettier --write \"src/**/*.{ts,js,json}\"","doc:dev":"vitepress dev doc","lint:fix":"eslint src/ --fix","doc:build":"vitepress build doc","typecheck":"tsc --noEmit","doc:preview":"vitepress preview doc","postinstall":"node ./dist/postinstall.cjs","build:bundle":"npx tsx build.config.mts","format:check":"prettier --check \"src/**/*.{ts,js,json}\"","preuninstall":"node ./dist/uninstall.cjs","prepublishOnly":"npm run build && npm run build:obfuscated","build:obfuscated":"cross-env OBFUSCATE=true npx tsx build.config.mts"},"_npmUser":{"name":"ansstory","email":"story0809@163.com"},"_npmVersion":"10.8.2","description":"CLI toolkit for project scaffolding and i18n automation - extract Chinese text, translate via Baidu/Tencent/OpenAI, and generate locale files for Vue/React/uni-app","directories":{},"_nodeVersion":"20.19.2","dependencies":{"joi":"^18.2.3","ora":"^5.4.1","axios":"^1.17.0","chalk":"^4.1.2","exceljs":"^4.4.0","i18next":"^26.3.0","inquirer":"^8.2.6","commander":"^14.0.0","deepmerge":"^4.3.1","minimatch":"^10.2.5","@babel/parser":"^7.29.3","@babel/traverse":"^7.29.0","update-notifier":"^7.3.1","@vue/compiler-dom":"^3.5.35","@vue/compiler-sfc":"^3.5.35","download-git-repo":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","esbuild":"^0.28.0","prettier":"^3.9.6","cross-env":"^10.1.0","vitepress":"^1.6.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.20.1","@types/inquirer":"^9.0.10","typescript-eslint":"^8.67.0","javascript-obfuscator":"^5.4.3","@types/update-notifier":"^6.0.8","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6"},"_npmOperationalInternal":{"tmp":"tmp/hitf_1.0.9_1788230976612_0.3748416797860574","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@ansstory/hitf","version":"1.0.10","keywords":["hitf","cli","i18n","internationalization","translation","scaffolding","vue","nuxt","react","next","uni-app","chinese-translation","locale","baidu-translate","tencent-translate","openai","ast"],"author":{"name":"AnsStory","email":"story0809@163.com"},"license":"MIT","_id":"@ansstory/hitf@1.0.10","maintainers":[{"name":"ansstory","email":"story0809@163.com"}],"homepage":"https://ansstory.github.io/hitf-cli-md/","bugs":{"url":"https://github.com/AnsStory/hitf-cli-md/issues"},"bin":{"hitf":"dist/index.cjs"},"dist":{"shasum":"3d6ffcba01dec14433e2e8bf2fa7c9c76fe8e35b","tarball":"https://registry.npmjs.org/@ansstory/hitf/-/hitf-1.0.10.tgz","fileCount":9,"integrity":"sha512-7/Lq1VcbjU2mfYXSS9I8g2Bo2uSQjUllTfBqoGJStApq2bvDhb593Pydpb9VCXrIhVasZcss7BCQVSzmCxdvzA==","signatures":[{"sig":"MEYCIQDwGmo58i7XMfAAriJkM9poAF6ce8Ei0kTEhYf0B0wNwgIhAOUPaGsqA82o/gPgw3wcA+/Fnw3rwxOrGwRc/QS2C2hL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15763694},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"a4b4f8ba9b7961cf3f801d32b5990de1560fd619","private":false,"scripts":{"dev":"npx tsx build.config.mts --watch","fix":"npm run lint:fix && npm run format","lint":"eslint src/","test":"tsx --test test/*.test.ts test/providers/*.test.ts","build":"npx tsx build.config.mts && tsc --emitDeclarationOnly","check":"npm run lint && npm run format:check && npm run typecheck","format":"prettier --write \"src/**/*.{ts,js,json}\"","doc:dev":"vitepress dev doc","lint:fix":"eslint src/ --fix","doc:build":"vitepress build doc","typecheck":"tsc --noEmit","doc:preview":"vitepress preview doc","postinstall":"node ./dist/postinstall.cjs","build:bundle":"npx tsx build.config.mts","format:check":"prettier --check \"src/**/*.{ts,js,json}\"","preuninstall":"node ./dist/uninstall.cjs","prepublishOnly":"npm run build && npm run build:obfuscated","build:obfuscated":"cross-env OBFUSCATE=true npx tsx build.config.mts"},"_npmUser":{"name":"ansstory","email":"story0809@163.com"},"_npmVersion":"10.8.2","description":"CLI toolkit for project scaffolding and i18n automation - extract Chinese text, translate via Baidu/Tencent/OpenAI, and generate locale files for Vue/React/uni-app","directories":{},"_nodeVersion":"20.19.2","dependencies":{"joi":"^18.2.3","ora":"^5.4.1","axios":"^1.17.0","chalk":"^4.1.2","exceljs":"^4.4.0","i18next":"^26.3.0","inquirer":"^8.2.6","commander":"^14.0.0","deepmerge":"^4.3.1","minimatch":"^10.2.5","@babel/parser":"^7.29.3","@babel/traverse":"^7.29.0","update-notifier":"^7.3.1","@vue/compiler-dom":"^3.5.35","@vue/compiler-sfc":"^3.5.35","download-git-repo":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","esbuild":"^0.28.0","prettier":"^3.9.6","cross-env":"^10.1.0","vitepress":"^1.6.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.20.1","@types/inquirer":"^9.0.10","typescript-eslint":"^8.67.0","javascript-obfuscator":"^5.4.3","@types/update-notifier":"^6.0.8","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6"},"_npmOperationalInternal":{"tmp":"tmp/hitf_1.0.10_1788315364081_0.46924939183022873","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@ansstory/hitf","version":"1.0.11","keywords":["hitf","cli","i18n","internationalization","translation","scaffolding","vue","nuxt","react","next","uni-app","chinese-translation","locale","baidu-translate","tencent-translate","openai","ast"],"author":{"name":"AnsStory","email":"story0809@163.com"},"license":"MIT","_id":"@ansstory/hitf@1.0.11","maintainers":[{"name":"ansstory","email":"story0809@163.com"}],"homepage":"https://ansstory.github.io/hitf-cli-md/","bugs":{"url":"https://github.com/AnsStory/hitf-cli-md/issues"},"bin":{"hitf":"dist/index.cjs"},"dist":{"shasum":"448fbc775fc438acf2b52d4f00ad14de5c7f0722","tarball":"https://registry.npmjs.org/@ansstory/hitf/-/hitf-1.0.11.tgz","fileCount":9,"integrity":"sha512-Q7YH4uwGF/KYVa9JZfLrHowrXHfoEEVTXXgMG9GnY/fcrKcVtZvRtdwOa226EcqwoWzFxNX3gLNFkcPZsFHP9g==","signatures":[{"sig":"MEQCIAhwGN8p7t7Y9hjIm9JDtt/T6QFjAVCUTq0DL3ajxDZXAiBTGX7b4W2G0g+d0FJImv9YWFOkvn8bl4p+0hnIjz9xhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15760869},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"494a18b594b7fa3df074a459d338cf9148bf1d8d","private":false,"scripts":{"dev":"npx tsx build.config.mts --watch","fix":"npm run lint:fix && npm run format","lint":"eslint src/","test":"tsx --test test/*.test.ts test/providers/*.test.ts","build":"npx tsx build.config.mts && tsc --emitDeclarationOnly","check":"npm run lint && npm run format:check && npm run typecheck","format":"prettier --write \"src/**/*.{ts,js,json}\"","doc:dev":"vitepress dev doc","lint:fix":"eslint src/ --fix","doc:build":"vitepress build doc","typecheck":"tsc --noEmit","doc:preview":"vitepress preview doc","postinstall":"node ./dist/postinstall.cjs","build:bundle":"npx tsx build.config.mts","format:check":"prettier --check \"src/**/*.{ts,js,json}\"","preuninstall":"node ./dist/uninstall.cjs","prepublishOnly":"npm run build && npm run build:obfuscated","build:obfuscated":"cross-env OBFUSCATE=true npx tsx build.config.mts"},"_npmUser":{"name":"ansstory","email":"story0809@163.com"},"_npmVersion":"10.8.2","description":"CLI toolkit for project scaffolding and i18n automation - extract Chinese text, translate via Baidu/Tencent/OpenAI, and generate locale files for Vue/React/uni-app","directories":{},"_nodeVersion":"20.19.2","dependencies":{"joi":"^18.2.3","ora":"^5.4.1","axios":"^1.17.0","chalk":"^4.1.2","exceljs":"^4.4.0","i18next":"^26.3.0","inquirer":"^8.2.6","commander":"^14.0.0","deepmerge":"^4.3.1","minimatch":"^10.2.5","@babel/parser":"^7.29.3","@babel/traverse":"^7.29.0","update-notifier":"^7.3.1","@vue/compiler-dom":"^3.5.35","@vue/compiler-sfc":"^3.5.35","download-git-repo":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","esbuild":"^0.28.0","prettier":"^3.9.6","cross-env":"^10.1.0","vitepress":"^1.6.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.20.1","@types/inquirer":"^9.0.10","typescript-eslint":"^8.67.0","javascript-obfuscator":"^5.4.3","@types/update-notifier":"^6.0.8","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6"},"_npmOperationalInternal":{"tmp":"tmp/hitf_1.0.11_1788337880692_0.7284839206930878","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@ansstory/hitf","version":"1.0.12","keywords":["hitf","cli","i18n","internationalization","translation","scaffolding","vue","nuxt","react","next","uni-app","chinese-translation","locale","baidu-translate","tencent-translate","openai","ast"],"author":{"name":"AnsStory","email":"story0809@163.com"},"license":"MIT","_id":"@ansstory/hitf@1.0.12","maintainers":[{"name":"ansstory","email":"story0809@163.com"}],"homepage":"https://ansstory.github.io/hitf-cli-md/","bugs":{"url":"https://github.com/AnsStory/hitf-cli-md/issues"},"bin":{"hitf":"dist/index.cjs"},"dist":{"shasum":"2cd0e63c167df563a13a5e492383fdf4e66d74f6","tarball":"https://registry.npmjs.org/@ansstory/hitf/-/hitf-1.0.12.tgz","fileCount":9,"integrity":"sha512-gG67QGYMTjEls2zfoRQy10wECMsz/HkyaHBn+7QxkKNJLwexYJBZR9kpyA98iozz9EwYCJj0LPwOTr+G/KckyA==","signatures":[{"sig":"MEYCIQCpc1I9f1PUBPVIX1DOqW6iN2xbRD17wg88tji+xcl6LQIhAOSSajPkA7LxHBjYPhcjBHusSs4T+jAhNcCzZxBnFzfM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15781713},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"431ee7600b5285daa0fff9f5a4f76a6a39d8d3b0","private":false,"scripts":{"dev":"npx tsx build.config.mts --watch","fix":"npm run lint:fix && npm run format","lint":"eslint src/","test":"tsx --test test/*.test.ts test/providers/*.test.ts","build":"npx tsx build.config.mts && tsc --emitDeclarationOnly","check":"npm run lint && npm run format:check && npm run typecheck","format":"prettier --write \"src/**/*.{ts,js,json}\"","doc:dev":"vitepress dev doc","lint:fix":"eslint src/ --fix","doc:build":"vitepress build doc","typecheck":"tsc --noEmit","doc:preview":"vitepress preview doc","postinstall":"node ./dist/postinstall.cjs","build:bundle":"npx tsx build.config.mts","format:check":"prettier --check \"src/**/*.{ts,js,json}\"","preuninstall":"node ./dist/uninstall.cjs","prepublishOnly":"npm run build && npm run build:obfuscated","build:obfuscated":"cross-env OBFUSCATE=true npx tsx build.config.mts"},"_npmUser":{"name":"ansstory","email":"story0809@163.com"},"_npmVersion":"10.8.2","description":"CLI toolkit for project scaffolding and i18n automation - extract Chinese text, translate via Baidu/Tencent/OpenAI, and generate locale files for Vue/React/uni-app","directories":{},"_nodeVersion":"20.19.2","dependencies":{"joi":"^18.2.3","ora":"^5.4.1","axios":"^1.17.0","chalk":"^4.1.2","exceljs":"^4.4.0","i18next":"^26.3.0","inquirer":"^8.2.6","commander":"^14.0.0","deepmerge":"^4.3.1","minimatch":"^10.2.5","@babel/parser":"^7.29.3","@babel/traverse":"^7.29.0","update-notifier":"^7.3.1","@vue/compiler-dom":"^3.5.35","@vue/compiler-sfc":"^3.5.35","download-git-repo":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","esbuild":"^0.28.0","prettier":"^3.9.6","cross-env":"^10.1.0","vitepress":"^1.6.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.20.1","@types/inquirer":"^9.0.10","typescript-eslint":"^8.67.0","javascript-obfuscator":"^5.4.3","@types/update-notifier":"^6.0.8","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6"},"_npmOperationalInternal":{"tmp":"tmp/hitf_1.0.12_1788417715126_0.22898313903780765","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@ansstory/hitf","version":"1.0.13","homepage":"https://ansstory.github.io/hitf-cli-md/","bugs":{"url":"https://github.com/AnsStory/hitf-cli-md/issues"},"private":false,"description":"CLI toolkit for project scaffolding and i18n automation - extract Chinese text, translate via Baidu/Tencent/OpenAI, and generate locale files for Vue/React/uni-app","author":{"name":"AnsStory","email":"story0809@163.com"},"license":"MIT","type":"module","engines":{"node":">=18"},"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}}},"bin":{"hitf":"dist/index.cjs"},"keywords":["hitf","cli","i18n","internationalization","translation","scaffolding","vue","nuxt","react","next","uni-app","chinese-translation","locale","baidu-translate","tencent-translate","openai","ast"],"scripts":{"dev":"npx tsx build.config.mts --watch","build":"npx tsx build.config.mts && tsc --emitDeclarationOnly","build:bundle":"npx tsx build.config.mts","build:obfuscated":"cross-env OBFUSCATE=true npx tsx build.config.mts","typecheck":"tsc --noEmit","doc:dev":"vitepress dev doc","doc:build":"vitepress build doc","doc:preview":"vitepress preview doc","test":"tsx --test test/*.test.ts test/providers/*.test.ts","prepublishOnly":"npm run build && npm run build:obfuscated","postinstall":"node ./dist/postinstall.cjs","preuninstall":"node ./dist/uninstall.cjs","lint":"eslint src/","lint:fix":"eslint src/ --fix","format":"prettier --write \"src/**/*.{ts,js,json}\"","format:check":"prettier --check \"src/**/*.{ts,js,json}\"","check":"npm run lint && npm run format:check && npm run typecheck","fix":"npm run lint:fix && npm run format"},"dependencies":{"@babel/parser":"^8.0.4","@babel/traverse":"^8.0.4","@vue/compiler-dom":"^3.5.42","@vue/compiler-sfc":"^3.5.42","axios":"^1.17.0","chalk":"^6.0.0","commander":"^15.0.0","deepmerge":"^4.3.1","download-git-repo":"^3.0.2","exceljs":"^4.4.0","i18next":"^26.3.0","inquirer":"^14.2.1","joi":"^18.2.3","minimatch":"^10.2.6","ora":"^9.4.1","update-notifier":"^7.3.1"},"devDependencies":{"@eslint/js":"^10.0.1","@inquirer/core":"^12.0.2","@inquirer/type":"^4.1.1","@types/commander":"^2.12.5","@types/inquirer":"^9.0.10","@types/node":"^26.4.1","@types/update-notifier":"^6.0.8","cross-env":"^10.1.0","esbuild":"^0.28.0","eslint":"^10.8.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","javascript-obfuscator":"^5.4.3","prettier":"^3.9.6","tsx":"^4.23.12","typescript":"^5.9.3","typescript-eslint":"^8.67.0","vitepress":"^1.6.4"},"_id":"@ansstory/hitf@1.0.13","gitHead":"8c8db2706470a67d118cd558c18b48a7f5d9ce1c","_nodeVersion":"20.19.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-z+u42z9fT9rzGSUODcZGKN5+LH7EE3Mxd120Uw8RXqkjv8NQp0eLlHK8pHZvFfBxhOU4y6oFgjl1wlt+0LHRRw==","shasum":"cc1d64853e98d2c096034cd9e96f8d98ffda764a","tarball":"https://registry.npmjs.org/@ansstory/hitf/-/hitf-1.0.13.tgz","fileCount":9,"unpackedSize":15060085,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID4FOwIY9U0p1I1ZDxUBwETao2oyyhFvmfftANd/Pxu9AiAh9EOZ8UGTgaG/SxWX2OLkFSfPNuIDAPWmHEhC/ys11A=="}]},"_npmUser":{"name":"ansstory","email":"story0809@163.com"},"directories":{},"maintainers":[{"name":"ansstory","email":"story0809@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hitf_1.0.13_1789540113941_0.42880556485547094"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-18T05:32:32.961Z","modified":"2026-09-16T06:28:34.333Z","1.0.1":"2026-08-18T05:32:33.383Z","1.0.2":"2026-08-18T07:45:34.185Z","1.0.3":"2026-08-28T02:04:34.921Z","1.0.4":"2026-08-28T06:03:41.765Z","1.0.5":"2026-08-28T07:31:50.699Z","1.0.6":"2026-08-28T07:43:27.734Z","1.0.7":"2026-09-01T02:22:29.034Z","1.0.8":"2026-09-01T02:36:19.277Z","1.0.9":"2026-09-01T02:49:36.873Z","1.0.10":"2026-09-02T02:16:04.365Z","1.0.11":"2026-09-02T08:31:20.894Z","1.0.12":"2026-09-03T06:41:55.363Z","1.0.13":"2026-09-16T06:28:34.186Z"},"bugs":{"url":"https://github.com/AnsStory/hitf-cli-md/issues"},"author":{"name":"AnsStory","email":"story0809@163.com"},"license":"MIT","homepage":"https://ansstory.github.io/hitf-cli-md/","keywords":["hitf","cli","i18n","internationalization","translation","scaffolding","vue","nuxt","react","next","uni-app","chinese-translation","locale","baidu-translate","tencent-translate","openai","ast"],"description":"CLI toolkit for project scaffolding and i18n automation - extract Chinese text, translate via Baidu/Tencent/OpenAI, and generate locale files for Vue/React/uni-app","maintainers":[{"name":"ansstory","email":"story0809@163.com"}],"readme":"# hitf\n\n[English](./README.en-US.md) | 简体中文\n\nCLI 国际化工具链，支持从 Vue/React/uni-app 源码中自动提取中文文本，通过百度/腾讯/OpenAI/Google 翻译 API 生成多语言文件，并提供项目脚手架、翻译缓存管理、IDE 代码片段生成等功能。\n\n## 安装\n\n```bash\nnpm install -g @ansstory/hitf\n```\n\n## 命令一览\n\n| 命令 | 简写 | 说明 |\n|------|------|------|\n| `hitf create <project>` | `crt` | 从 Git 仓库下载项目模板 |\n| `hitf tf <file> [name]` | | 翻译单个文件，提取中文并生成语言包 |\n| `hitf tfo <folder> [name]` | | 递归翻译整个文件夹 |\n| `hitf tcheck [target]` | | 检查 i18n 引用与语言文件的一致性 |\n| `hitf export-source <file>` | `tes` | 从源码提取唯一源语言文本并导出为 XLSX |\n| `hitf export-translated [file]` | `etr` | 从已翻译的语言包 JSON 读取文本并导出为 XLSX |\n| `hitf cache-import <file>` | `tci` | 导入公司 TSV/XLSX 翻译表到本地缓存 |\n| `hitf cache-apply [name]` | `tca` | 将缓存译文回写到语言包 JSON |\n| `hitf rollback` | | 回滚上一次翻译操作 |\n| `hitf setting` | | 生成项目级配置文件 |\n| `hitf global-config` | | 生成全局配置文件 |\n| `hitf lang [language]` | | 切换 CLI 界面语言（zh-CN / en） |\n| `hitf codesnippets [ide]` | | 生成 IDE i18n 忽略注释片段 |\n| `hitf gitignore` | | 将 `.hitf/services.json` 添加到 `.gitignore` |\n\n## 通用参数\n\n| 参数 | 简写 | 说明 |\n|------|------|------|\n| `--name <name>` | `-n` | 国际化对象 key（默认使用父级目录名） |\n| `--project <project>` | `-p` | 当 outDir 为对象时指定项目 |\n| `--dry-run` | `-d` | 仅预览翻译计划（单文件列出文本与位置，文件夹树形浏览），不执行翻译、不写文件 |\n| `--interactive` | `-i` | 树形多选要翻译的文本；未选中的项自动添加忽略注释，不参与翻译 |\n| `--report <file>` | `-r` | 输出 JSON 报告文件 |\n| `--verbose` | `-v` | 详细输出，显示每个文件的日志 |\n\n## 翻译工作流\n\n### 翻译单个文件\n\n```bash\nhitf tf src/views/Home.vue\n```\n\n- 自动提取 `<template>`、`<script>` 中的中文文本\n- 调用翻译 API 生成目标语言\n- 在 `.hitf/lang/` 下生成语言包 JSON\n- 将源码中的中文替换为 `$t('key')` 调用\n\n### 翻译整个文件夹\n\n```bash\nhitf tfo src --exclude \"**/*.test.js\"\n```\n\n递归处理目录下所有 `.vue`、`.js`、`.ts`、`.jsx`、`.tsx`、`.json` 文件。\n\n### 预览模式（-d / --dry-run）\n\n仅预览翻译计划，不调用翻译、不写入任何文件。\n\n单文件 `tf` 逐项列出提取的文本及其源码位置（文件:行:列），并附被跳过（未提取）的字符串及原因：\n\n```bash\nhitf tf src/App.vue -d\n```\n\n```text\n  合适 → src/App.vue:2:21\n  测试 → src/App.vue:3:21\n```\n\n文件夹 `tfo` 以只读树形界面展示「目录 > 文件 > 文本」三级翻译计划（叶子带 `[译]` 标记，默认全部翻译）：\n\n```bash\nhitf tfo src -d\n```\n\n树形浏览按键：`↑`/`↓` 移动 · `←`/`→` 展开/折叠 · 输入字符搜索 · `Enter` 结束。结束后输出将翻译的总条数及各处被跳过的字符串明细。\n\n> 非 TTY 环境（脚本 / CI / 管道）下 `tfo -d` 不弹交互界面，自动回退为静态树形打印，预览结果同样完整输出。\n\n### 交互式选择（-i / --interactive）\n\n以树形多选框选择**需要翻译**的文本，只有选中的项会参与翻译并生成 key；未选中的项**就地标记为忽略**，下次提取自动跳过：\n\n```bash\nhitf tf src/App.vue -i\nhitf tfo src -i\n```\n\n按键操作：\n\n| 按键 | 作用 |\n| --- | --- |\n| `↑` / `↓` | 上下移动 |\n| `←` / `→` | 折叠 / 展开分组 |\n| `Space` | 勾选 / 取消：叶子切换自身；分组切换整支（◉ 全选 / ◐ 半选 / ◯ 未选） |\n| `Ctrl+A` | 全选当前可见叶子 |\n| `Ctrl+I`（兼容 `Tab`） | 反选当前可见叶子 |\n| `Enter` | 确认提交（至少选择 1 项） |\n| 输入字符 | 按文本过滤搜索，`Backspace` 删除搜索词 |\n\n确认后仅翻译选中的项，未选中的项会提示「已跳过 N 个文本（将添加忽略注释）」，并在源码中自动插入忽略注释：\n\n- JS / TS：`/* @hitf-i18n-ignore-start */` … `/* @hitf-i18n-ignore-end */`\n- Vue 模板文本：`<!-- @hitf-i18n-ignore-start -->` … `<!-- @hitf-i18n-ignore-end -->`\n- JSX：`{/* @hitf-i18n-ignore-start */}` … `{/* @hitf-i18n-ignore-end */}`\n- Vue 模板静态属性：`<!-- @hitf-i18n-ignore:prop:<attrName> -->`（置于目标标签正上方）\n- JSON 文件：不插入注释，而是记录到 `.hitf/i18n-ignore.json`，后续提取自动过滤\n\n交互中断（如 `Ctrl+C`）会中止翻译，不产生任何写入。\n\n### 检查一致性\n\n```bash\nhitf tcheck src\n```\n\n检查源码中的 i18n 引用与语言包文件的一致性，输出缺失/未使用/不一致的 key 及位置。\n\n```\nTranslation check summary\n  missing: 2\n  missing hello\n    src/App.vue:2:11\n  missing welcome\n    src/App.vue:3:9\n```\n\n### 回滚操作\n\n```bash\nhitf rollback -l          # 查看可用备份\nhitf rollback              # 回滚最近一次\nhitf rollback -n xxx       # 回滚指定备份\nhitf rollback -k 5         # 仅保留最近 5 个备份\n```\n\n## 翻译缓存管理\n\n### 导出源语言文本\n\n```bash\nhitf export-source src/views      # 从源码提取\nhitf export-translated            # 从已翻译语言包读取\n```\n\n两个命令共享同一输出文件 `source-texts-<locale>.xlsx`，增量合并去重。根据 `locales` 配置自动填充多列，缺失翻译的列会尝试调用翻译 API 补全（API 未配置则留空）。输出格式兼容 `cache-import`。\n\n### 导入公司翻译表\n\n```bash\nhitf cache-import translations.xlsx -s zh-CN\n```\n\n支持 `.xlsx` 格式，导入后本地缓存可直接复用，无需重复调用 API。\n\n### 应用缓存到语言包\n\n```bash\nhitf cache-apply\n```\n\n将缓存中的最新译文写回 `.hitf/lang/` 下的语言包 JSON 文件。\n\n## 配置与设置\n\n### 全局配置\n\n```bash\nhitf global-config\n```\n\n生成全局配置文件，用于设置默认翻译服务、API 密钥等。\n\n### 项目配置\n\n```bash\nhitf setting\n```\n\n在项目根目录生成 `.hitf/setting.json`：\n\n```json\n{\n  \"$schema\": \"https://www.schemastore.org/hias-hitf.json\",\n  \"translationSetting\": {\n    \"locales\": [\"zh-CN\", \"en-US\"],\n    \"outDir\": \".hitf/lang\",\n    \"i18nCallTemplate\": \"$t\",\n    \"i18nImport\": \"import i18n from '@/i18n'\",\n    \"translationService\": \"tencent\",\n    \"servicePriority\": [\"tencent\", \"baidu\", \"openai\", \"google\"],\n    \"services\": {\n      \"tencent\": { \"secretId\": \"\", \"secretKey\": \"\", \"region\": \"ap-guangzhou\" },\n      \"baidu\": { \"appId\": \"\", \"secretKey\": \"\" },\n      \"openai\": { \"apiKey\": \"\", \"baseUrl\": \"https://api.openai.com\", \"model\": \"gpt-3.5-turbo\" },\n      \"google\": { \"apiKey\": \"\" }\n    }\n  }\n}\n```\n\n### 配置项说明\n\n| 字段 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| `locales` | `string[]` | `[\"zh-CN\", \"en-US\"]` | 语言列表，第一个为源语言 |\n| `outDir` | `string \\| object` | `\".hitf/lang\"` | 语言包输出目录，支持按项目名映射 |\n| `i18nCallTemplate` | `string \\| string[]` | `\"$t\"` | i18n 函数调用模板 |\n| `i18nImport` | `string \\| string[]` | `\"\"` | 注入到文件顶部的 import 语句 |\n| `translationService` | `string` | `\"tencent\"` | 首选翻译服务 |\n| `servicePriority` | `string[]` | `[\"tencent\",\"baidu\",\"openai\",\"google\"]` | 翻译服务降级优先级 |\n| `capitalizeTranslations` | `boolean` | `false` | 译文首字母大写 |\n| `pruneUnusedKeys` | `boolean` | `false` | 清理语言包中未使用的 key |\n| `replaceOriginalFile` | `boolean` | `false` | 覆盖原文件而非输出到 outDir |\n\n### 翻译服务配置\n\n#### 腾讯翻译\n\n**申请步骤：**\n\n1. 打开 [腾讯云控制台](https://console.cloud.tencent.com/cam/capi)，登录你的腾讯云账号\n2. 点击【新建密钥】，创建一对 SecretId 和 SecretKey\n3. 复制 SecretId 和 SecretKey 填入配置文件\n\n```json\n{\n  \"tencent\": {\n    \"secretId\": \"YOUR_SECRET_ID\",\n    \"secretKey\": \"YOUR_SECRET_KEY\",\n    \"region\": \"ap-guangzhou\"\n  }\n}\n```\n\n**价格：** 每月前 500 万字符免费，超出部分 58 元/百万字符。\n\n#### 百度翻译\n\n**申请步骤：**\n\n1. 打开 [百度翻译开放平台](https://fanyi-api.baidu.com/)，登录百度账号\n2. 点击【管理控制台】，注册成为开发者（选择「个人开发者」）\n3. 开通「通用翻译服务」，选择标准版\n4. 在控制台底部获取 APP ID 和密钥\n\n```json\n{\n  \"baidu\": {\n    \"appId\": \"YOUR_APP_ID\",\n    \"secretKey\": \"YOUR_SECRET_KEY\"\n  }\n}\n```\n\n**价格：** 标准版每月 5 万免费字符；完成个人认证后可切换高级版，每月 100 万免费字符。超出部分 49 元/百万字符。\n\n#### OpenAI\n\n**申请步骤：**\n\n1. 访问 [OpenAI 官网](https://platform.openai.com/) 注册账号\n2. 打开 [API Keys 页面](https://platform.openai.com/account/api-keys)\n3. 点击【Create new secret key】创建密钥\n4. 复制密钥填入配置文件\n\n> 注意：OpenAI 无法从国内直接访问，需要配置网络环境。无免费额度，需绑定国外信用卡使用。\n\n```json\n{\n  \"openai\": {\n    \"apiKey\": \"YOUR_API_KEY\",\n    \"baseUrl\": \"https://api.openai.com\",\n    \"model\": \"gpt-3.5-turbo\"\n  }\n}\n```\n\n**推荐模型与价格：**\n\n| 模型 | 输入价格 | 输出价格 |\n|------|----------|----------|\n| gpt-4o-mini | $0.15/百万 token | $0.60/百万 token |\n| gpt-4o | $2.50/百万 token | $10.00/百万 token |\n\n#### Google Translate\n\n**申请步骤：**\n\n1. 打开 [Google Cloud Console](https://console.cloud.google.com/)\n2. 创建一个新项目或选择已有项目\n3. 启用 Cloud Translation API\n4. 创建 API Key 并复制\n\n```json\n{\n  \"google\": {\n    \"apiKey\": \"YOUR_API_KEY\"\n  }\n}\n```\n\n**价格：** 每月前 50 万字符免费，超出部分 $20/百万字符。\n\n### IDE 代码片段\n\n```bash\nhitf codesnippets        # 自动检测 IDE\nhitf codesnippets vscode # 手动指定\n```\n\n支持 VS Code、WebStorm、Cursor、Sublime Text。\n\n## 忽略注释\n\n在源码中添加注释可跳过特定文本的提取；使用 `-i` 交互取消选中时，也会自动插入这些注释：\n\n```vue\n<!-- @hitf-i18n-ignore-next -->\n<div>{{ brandName }}</div>\n\n<!-- @hitf-i18n-ignore-start -->\n<div>\n  <span>不翻译</span>\n  <span>也不翻译</span>\n</div>\n<!-- @hitf-i18n-ignore-end -->\n```\n\n```js\n// @hitf-i18n-ignore-file\nconst msg = '整个文件跳过翻译'\n```\n\n指令说明：\n\n| 指令 | 作用 |\n| --- | --- |\n| `@hitf-i18n-ignore-next` | 忽略下一段可提取文本 |\n| `@hitf-i18n-ignore-start` / `-end` | 忽略区间内的所有文本 |\n| `@hitf-i18n-ignore-file` | 忽略整个文件 |\n| `@hitf-i18n-ignore:prop:<attrName>` | 忽略 Vue 模板中指定静态属性（如 `<!-- @hitf-i18n-ignore:prop:placeholder -->`） |\n\n其中 `start` / `end` / `prop` 指令可由 `-i` 交互取消选中时自动插入；JSON 文件不支持注释，取消选中项会记录到 `.hitf/i18n-ignore.json`，后续提取自动过滤。\n\n## CLI 语言切换\n\n```bash\nhitf lang -l         # 查看当前语言\nhitf lang zh-CN      # 切换为中文\nhitf lang en         # 切换为英文\n```\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}