{"_id":"@alauda-fe/i18n-tools","_rev":"17-4e456ba6bd6e01a6c3ec70a14527ed5b","name":"@alauda-fe/i18n-tools","dist-tags":{"beta":"1.0.3-beta.0","latest":"1.0.12"},"versions":{"1.0.0":{"name":"@alauda-fe/i18n-tools","version":"1.0.0","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.0","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"ec01d73e926bb0458f13bc820ee91dd4f67d6c5f","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.0.tgz","fileCount":12,"integrity":"sha512-i1d27o2fbU0omZRRVTFZWCEcTNIoOfbvP85yMTA9GNPkHuXun9/h/7nr1bZaBFahKcWgOTrqR6n0yVmQj1u7pA==","signatures":[{"sig":"MEYCIQCLBZpVwx2FOXX2p1TWJLtTj7omx68QrbicHCNA7dvrQAIhAJzxyB7bFTZTU6/yhPtUGEzYzKoXEeIOqGvWzJaWB+C7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121540},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"cbc6493610f98c8f6b71180753426ff81f237bc3","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","actor":{"name":"tzfeng","type":"user","email":"tzfeng@alauda.io"},"email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"10.9.0","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"22.12.0","dependencies":{"openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.0_1751523107602_0.9795474436895186","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alauda-fe/i18n-tools","version":"1.0.1","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.1","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"acfa36bc0295d7c939780b15aeb3616e27162dd3","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.1.tgz","fileCount":11,"integrity":"sha512-X/vLwXb93khDTZkAdIV9MYR7y5HbyE/R7+30NnNl37HkJItAgvEUI9/3IDs5bHUX9vmx4uqhpPsziBuuoLEBjA==","signatures":[{"sig":"MEQCIB+DlT69VzkeBqXyNx7d16+631sR8v7JT3Jba33Ks3M4AiAzzFNi7WrTZFyxXFjV74EdYwbgT4xyevsXlMXL2QV7AA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110746},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"a278f4a556b9302a83a9b412a2c09414586546cf","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","actor":{"name":"tzfeng","type":"user","email":"tzfeng@alauda.io"},"email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"10.9.0","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"22.12.0","dependencies":{"openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.1_1751526095995_0.6904613202364585","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alauda-fe/i18n-tools","version":"1.0.2","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.2","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"f90964b21fcfc07b1a517ae2578a93152d4852f1","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.2.tgz","fileCount":11,"integrity":"sha512-uOW/hEHyYuieV97LirHCxb5yiC1lwJcqTRgdB3WtbLgiD17tkMUR0JgoNdYaehqp0doHVk5kDH/0nwFlZEGDRQ==","signatures":[{"sig":"MEQCIEV57IJ3LGR/yi5lc5YekiK9tu/9L1DMqsI7v+FjTuYWAiAgK1qXRRoLBtf60L1PrHd3Krk5+7PEtl6C3HqNPe5vMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109208},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"997eaf3e9e2bc9d389ce81e798ab671ad2dd8d5c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","actor":{"name":"tzfeng","type":"user","email":"tzfeng@alauda.io"},"email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"10.9.0","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"22.12.0","dependencies":{"openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.2_1751526667620_0.6421911188895588","host":"s3://npm-registry-packages-npm-production"}},"1.0.3-beta.0":{"name":"@alauda-fe/i18n-tools","version":"1.0.3-beta.0","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.3-beta.0","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"913b1e1eeeab23d5f713ce2c421df2e5b54b37aa","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.3-beta.0.tgz","fileCount":7,"integrity":"sha512-1tOslZ4VTWO0xlbORBC+RDquEZZATIUse+Hbzd2iUWhvwt9bO1+Av4GGbcyMXJDTSfMFUdfs8McDjR+DRw6vCw==","signatures":[{"sig":"MEUCIC8PkVQoo4XpVPsUYhh/Ia3cD1PRkdY1lcJzarPqV/GhAiEArptlVZELXhyqr8XSXc+mAIspJwIO1zdFplwZyAWW6w4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90864},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"997eaf3e9e2bc9d389ce81e798ab671ad2dd8d5c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"10.9.0","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"22.12.0","dependencies":{"openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.3-beta.0_1753087798177_0.5194886915155532","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@alauda-fe/i18n-tools","version":"1.0.3","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.3","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"4d2009a9d9314f8cea3a68100d4d8d6f7007c922","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.3.tgz","fileCount":9,"integrity":"sha512-xhMZXoH0vH/kPVii8f10BxiQm86GhB6Fx9NegEO/f4X3lBP8zWYFQwLI0/ta6TBc2M/vaCqABsHXuXBmXhKlTQ==","signatures":[{"sig":"MEUCIF2B78VJ6sU+pc2D4MXoQM5fcxtCXg70q//gQMrVN/KyAiEAz6e/0reXuccioaaUGydA2yDyGv9F1ufP3uSJJkQrhfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124219},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"46f0d7be6d8c2b15ce3d726baaa9b54ba1ba9df8","scripts":{"start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"10.9.0","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"22.12.0","dependencies":{"chalk":"^5.4.1","openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.3_1753261409620_0.633528206313998","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@alauda-fe/i18n-tools","version":"1.0.4","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.4","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"a3c561a67f2fb42a2ef48f5577df2aa6c315907c","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.4.tgz","fileCount":9,"integrity":"sha512-fnn5KyG3MhZUH+RUpJrvyEHxYOnnooGIQPj6pt4tVXvQ4A+EdmEcE3vxPctKcI6arje1Or0oeYgwmIZTNYvyZA==","signatures":[{"sig":"MEYCIQCmOE/SB7SpW9vWVbirkQirQ0aO5Wh1+h8d25lLPzuS4AIhAJfuskd71kvvGZhSdPX5RUABUfPW2ou1CLMTiu/KCBO/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125137},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"1ccccaf7a9c0ae36e777b04f1b46633b820f04a5","scripts":{"start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"10.9.0","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"22.12.0","dependencies":{"chalk":"^5.4.1","openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.4_1753327401970_0.9328948767495269","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@alauda-fe/i18n-tools","version":"1.0.5","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.5","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"0fe438bdcca4e77cc2144b66478308d2c6c30305","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.5.tgz","fileCount":9,"integrity":"sha512-N0TLtjfqF2bAyzdyScpAAkvha87B6hpTKAMvzydoHKPdQY6jfQ3nh9jYddVli6Hy2cJckFvnRIxAHTWJ39X4Lg==","signatures":[{"sig":"MEUCIB16W7frAQMgrpGU3oLIcM+YFOYBMrJIqoD7HRpAXzigAiEA9EKgNIRAaHZ7GSiiTg76TQq/q+xpTlqmljnxL2p1ezw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109657},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"ca3363ce416aba02d6d3dca5a59df7c6cf1c4a91","scripts":{"start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"10.9.3","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"22.18.0","dependencies":{"chalk":"^5.4.1","openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.5_1754646864058_0.10770343758506651","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@alauda-fe/i18n-tools","version":"1.0.6","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.6","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"},{"name":"shuxun.yin","email":"shuxun.yin@gmail.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"c0c213c1919636f357308a8f2479d39ba131bb05","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.6.tgz","fileCount":9,"integrity":"sha512-V81+fQIfPVGQnWaes9B3IkyoUbF0i5xHxnUK0B259Ms1cPCrrAeC62/rIGWfWUkPeXbd1gfjd1MFwMLc1rnmuA==","signatures":[{"sig":"MEUCIQDZ3mX9n0rW+/WeecAPKCK8G8TWcfVPIpGjR53AfXqY8wIgfF64w0SyYRY80fd4AEBe7gLsY/QcBBTBvUconGsEl2I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123666},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"afc5c3b522203efa474c8c92dc1b8fd2c6610ba2","scripts":{"start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"10.9.3","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"22.18.0","dependencies":{"chalk":"^5.4.1","openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.6_1755853483189_0.28042237577712337","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@alauda-fe/i18n-tools","version":"1.0.7","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.7","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"},{"name":"shuxun.yin","email":"shuxun.yin@gmail.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"4efec8ce71a8a8f99e63767c320f20fbd0640b90","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.7.tgz","fileCount":9,"integrity":"sha512-WSVUJDiX66AwW3/YZ9oVpNFPpofPkVS6K7pULdzmxyQOup418OmGq9TYKDSg6L9J9sxzxYEHeqvmE/HPBccLOg==","signatures":[{"sig":"MEUCIFsjmh6woQ7SiPV+NevBrRtPOWftyJ2er0kXhvTzkgYbAiEAzRrkjnA2/Zxroj+olYwwaCrX1ZBAdG1PXfyLs9AYXsc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123531},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"943027bb818359346824388e4e854dc26efb83b5","scripts":{"start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"10.9.3","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"22.18.0","dependencies":{"chalk":"^5.4.1","openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.7_1757390303108_0.8835213667638473","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@alauda-fe/i18n-tools","version":"1.0.8","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.8","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"},{"name":"shuxun.yin","email":"shuxun.yin@gmail.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"3b9ea59dabc4e442adf8fef9e85a3087f93a86ab","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.8.tgz","fileCount":9,"integrity":"sha512-fPPc5tcjSs34FBGZA226BJcuAxPvpXeqDxQ7kLxmOUHkVq2EOG/jg8uBw5KTZymnaMbiL+xrMK8iiibxPcqCGQ==","signatures":[{"sig":"MEQCIA2b8x7pCU7doEjzISfoY+AYdGur/aiQgWhOyh4yPXqiAiBN7P/MpyK6qMuCXcrJYfEIF8/zVGN/pZFta7ZS1TAjUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124058},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"fdf80474e0a5be380add76200a69d8679358cf16","scripts":{"start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"11.6.1","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"24.11.0","dependencies":{"chalk":"^5.4.1","openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.8_1764059648157_0.42283072214373796","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@alauda-fe/i18n-tools","version":"1.0.9","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.9","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"},{"name":"shuxun.yin","email":"shuxun.yin@gmail.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"670dec33f4eca538ba3d263e989f945cc1ee6809","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.9.tgz","fileCount":9,"integrity":"sha512-KPwu0ZaTJL3lN7NBBZxE5lTyz/1/LvBYLdGWl142sTpVWa6EH2oYI0WlydV7THreM0TIMVvW6JGP+mlmXnkTIg==","signatures":[{"sig":"MEUCIQDPA+UxyjSNAy9ghtcnsHFCafUGkFa2p4LoWml1m/EDzQIgcywiL4HhzM0GswTyHVGbNRLVX2IjEpVs3vAg6KvQ2Y4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124052},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"85214de0474b80bce7d69a7f9b57729b0d4e1a11","scripts":{"start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"11.6.1","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"24.11.0","dependencies":{"chalk":"^5.4.1","openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.9_1764059878904_0.05223435067172111","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@alauda-fe/i18n-tools","version":"1.0.10","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.10","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"},{"name":"shuxun.yin","email":"shuxun.yin@gmail.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"e890d356dadb6d17457fc637f680f7b6f1f7604d","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.10.tgz","fileCount":9,"integrity":"sha512-KJaLTB6sZJIObzSv3WXeLNHpRSj62h+dOFCz+fhaCjLlJ0Kl8rvlamtRKYAVRVo30AA5YwnlK3d092rtbbZ2gA==","signatures":[{"sig":"MEUCIQCsXLUyOVCYL+Dfl6RALNQxQ17KglrJLW1/pOBP2ms6awIgNXm4uoGGEpIv4ojLw05icQjJqVs+c0aotNLNEagPxx0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128313},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"6cb23f9052b4ddaa2f2ae2e8f00b6ea086923010","scripts":{"start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"11.6.1","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"24.11.0","dependencies":{"chalk":"^5.4.1","openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.10_1764065132229_0.6426514642086154","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@alauda-fe/i18n-tools","version":"1.0.11","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.11","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"},{"name":"shuxun.yin","email":"shuxun.yin@gmail.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"39d235fc46507135b96b778acc7ac34d949852d5","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.11.tgz","fileCount":9,"integrity":"sha512-XzoM+RzwFw+Jl3q2ZxZ1eeuJBHeCTX7VaSuJw310AKvyLrwG0KN1braYTKHx6/XY681M4fpoiBzL6Gh9Nzl2Eg==","signatures":[{"sig":"MEUCIQDDpRNFBtc+Biu78W8oUNQnblaMlIfJSVjHpdOf8G8KEgIgGff1XurvD+843oTXddRRXiA09uau54/7lqueK21BHiI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128333},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"050157463bddd60b7ab277742292b0122ce7e020","scripts":{"start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"11.6.1","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"24.11.0","dependencies":{"chalk":"^5.4.1","openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.11_1764129701083_0.3368577913978956","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@alauda-fe/i18n-tools","version":"1.0.12","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"author":{"name":"alauda-fe"},"license":"MIT","_id":"@alauda-fe/i18n-tools@1.0.12","maintainers":[{"name":"alaudafrontend","email":"frontend@alauda.io"},{"name":"frozenwings","email":"pku.liudong@gmail.com"},{"name":"jounqin","email":"admin@1stg.me"},{"name":"tzfeng","email":"tzfeng@alauda.io"},{"name":"yangxiaolang","email":"1810849666@qq.com"},{"name":"kkxiao","email":"javascirpts@163.com"},{"name":"edisonqtx","email":"suzhenggangfs@gmail.com"},{"name":"zangguodong","email":"237974119@qq.com"},{"name":"shuxun.yin","email":"shuxun.yin@gmail.com"}],"homepage":"https://github.com/alauda-fe/i18n-tools#readme","bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"bin":{"i18n-tools":"bin/i18n-tools.js"},"dist":{"shasum":"bbd326a63fe8217d04d9d90e79d7801af52c0c8b","tarball":"https://registry.npmjs.org/@alauda-fe/i18n-tools/-/i18n-tools-1.0.12.tgz","fileCount":9,"integrity":"sha512-nBDGkEm+RCkXwg+GZgt4Q1TcPzxzEahP8tVHxHJ672e1noTgzZc0L1EkW0BeV9Woz1qxBPa4iHKmf2hM7TcCBA==","signatures":[{"sig":"MEUCIQCdBOjqzbhOfnDzsZB31b7axAP+JXzULUC5uNRgWpokQQIgRFQJNFMGWMhpnSGeBixYWfKK14MhSgQIWsiveP7bPHY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128445},"main":"lib/translate.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"97a96493956178d3a309e185107d900d34e6882b","scripts":{"start":"node bin/i18n-tools.js"},"_npmUser":{"name":"tzfeng","email":"tzfeng@alauda.io"},"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"_npmVersion":"11.6.1","description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","directories":{},"_nodeVersion":"24.11.0","dependencies":{"chalk":"^5.4.1","openai":"^4.95.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.0.1+sha512.eed77ea7382e7059c7493017f23fb281e0b478027dce10b818c8f03dadb9babc8d526808edee0ccb6d696018860a0ac1854d95287cdd225972992f28fc71539e","_npmOperationalInternal":{"tmp":"tmp/i18n-tools_1.0.12_1767582473657_0.9272006037390494","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-07-03T06:11:47.480Z","modified":"2026-06-01T11:08:49.914Z","1.0.0":"2025-07-03T06:11:47.826Z","1.0.1":"2025-07-03T07:01:36.218Z","1.0.2":"2025-07-03T07:11:07.815Z","1.0.3-beta.0":"2025-07-21T08:49:58.376Z","1.0.3":"2025-07-23T09:03:29.823Z","1.0.4":"2025-07-24T03:23:22.138Z","1.0.5":"2025-08-08T09:54:24.238Z","1.0.6":"2025-08-22T09:04:43.401Z","1.0.7":"2025-09-09T03:58:23.303Z","1.0.8":"2025-11-25T08:34:08.347Z","1.0.9":"2025-11-25T08:37:59.093Z","1.0.10":"2025-11-25T10:05:32.438Z","1.0.11":"2025-11-26T04:01:41.268Z","1.0.12":"2026-01-05T03:07:53.790Z"},"bugs":{"url":"https://github.com/alauda-fe/i18n-tools/issues"},"author":{"name":"alauda-fe"},"license":"MIT","homepage":"https://github.com/alauda-fe/i18n-tools#readme","keywords":["azure","openai","translation","json","i18n","grammar-check","cli","internationalization"],"repository":{"url":"git+https://github.com/alauda-fe/i18n-tools.git","type":"git"},"description":"基于 Azure OpenAI 的 JSON i18n 文件翻译和英文语法检查工具集","maintainers":[{"email":"frontend@alauda.io","name":"alaudafrontend"},{"email":"pku.liudong@gmail.com","name":"frozenwings"},{"email":"admin@1stg.me","name":"jounqin"},{"email":"tzfeng@alauda.io","name":"tzfeng"},{"email":"541226467@qq.com","name":"zchange"},{"email":"1810849666@qq.com","name":"yangxiaolang"},{"email":"javascirpts@163.com","name":"kkxiao"},{"email":"mario.ma.node@gmail.com","name":"mario.ma"},{"email":"suzhenggangfs@gmail.com","name":"edisonqtx"},{"email":"237974119@qq.com","name":"zangguodong"},{"email":"shuxun.yin@gmail.com","name":"shuxun.yin"}],"readme":"## i18n-tools 使用手册（场景版）\n\n面向 JSON i18n 的翻译与英文语法检查 CLI，支持增量翻译、失败重试、远端仓库同步、快照管理和自定义提示词。\n\n### ✨ 主要功能\n\n- **多格式翻译**：支持 `{{variable}}`、`${variable}` 和 ICU Message Format\n- **增量翻译**：基于快照差异的智能增量处理\n- **语法检查**：英文文案的语法和拼写检查\n- **模板保护**：完整保护所有模板变量和格式化语法\n- **远程同步**：从 Git 仓库同步 i18n 源文件\n- **自定义规则**：支持自定义提示词和翻译规则\n\n### 🎯 支持的模板格式\n\n#### 基础变量格式\n- `{{variable}}`：双大括号变量，如 `{{app_name}}`、`{{user_count}}`\n- `${variable}`：美元符号变量，如 `${username}`、`${date}`\n\n#### ICU Message Format \n- **复数格式**：`{count, plural, =0{no items} =1{one item} other{# items}}`\n- **选择格式**：`{gender, select, male{he} female{she} other{they}}`\n- **数字格式**：`{price, number, currency}`、`{value, number, percent}`\n- **日期格式**：`{date, date, short}`、`{time, time, medium}`\n- **嵌套格式**：支持多层嵌套的复杂 ICU 语法\n\n---\n\n## 安装与准备\n\n- Node.js 版本：>= 18\n- 包名：@alauda-fe/i18n-tools\n\n可选使用方式：\n\n```bash\n# 直接使用（推荐）\nnpx @alauda-fe/i18n-tools\n\n# 或全局安装\nnpm i -g @alauda-fe/i18n-tools\n```\n\n环境变量（也可通过命令行参数传入）：\n\n- OPENAI_API_KEY：Azure OpenAI 密钥（或用 -k/--token 指定）\n- GITLAB_TOKEN / GITHUB_TOKEN：sync 同步远端仓库时的访问令牌（或用 --token 指定）\n\n---\n\n## 目录约定\n\n- 翻译源/目标（全量翻译）：直接以语言代码作为目录名，如 `en/`、`zh/`、`ru/`。\n- 增量翻译：\n  - 英文源：`new/en/`（由 sync 命令下载文件生成）\n  - 快照：`snapshot/en/`（上一次翻译时的参考基线）\n  - 输出：`src/<目标语言>/`（如 `src/zh/`）\n\n翻译规则关键点：\n\n- 保留 JSON 键名，跳过空 key/value\n- 跳过注释条目（值以 `// ` 开头）\n- 跳过以 `_en` 结尾的键（视为英文原文，不翻译）\n- 严格保护所有模板变量：`{{var}}`、`${var}`、ICU Message Format\n- 保护技术术语的原始格式和拼写\n- 失败时条目置为 null，后续可用重试命令补齐\n\n---\n\n## 常用场景与流程\n\n### 1) 增量翻译语言包（推荐流程）\n\n以中文翻译包为例：\n\n1. 到 i18n-zh 仓库根目录，同步英文源到 `new/en/`：\n\n```bash\nnpx @alauda-fe/i18n-tools sync \\\n\t--level core \\\n\t--branch master\\\n\t--token $GITLAB_TOKEN   # 私有仓库需令牌，或设置 GITHUB_TOKEN\n```\n\n2. 执行增量翻译（输出新文案到 `src/zh/`，并更新 `snapshot/en/`，随后清理 `new/`）：\n\n```bash\nnpx @alauda-fe/i18n-tools incremental-translate -s en -t zh -k $OPENAI_API_KEY\n```\n\n3. 人工检查变更（主要看 `src/zh/` 与 `snapshot/en/` 的 diff），确认后提交代码。\n\n4. 若存在失败条目（值为 null），可重试：\n\n```bash\nnpx @alauda-fe/i18n-tools retry-failed -s en -t zh -k $OPENAI_API_KEY\n```\n\n提示：`incremental-translate` 会在完成后自动写回 `snapshot/en/` 并删除 `new/`。\n\n### 2) 全量翻译一个语言包\n\n当没有快照/增量需求时，直接从 `en/` 翻译到目标目录：\n\n```bash\nnpx @alauda-fe/i18n-tools translate -s en -t zh -k $OPENAI_API_KEY\n```\n\n注意：目标目录不存在会自动创建；已有同名键仅补齐缺失或为 null 的条目。\n\n### 3) 英文文案语法检查（单文件/批量）\n\n- 单文件（预览模式，不改文件）：\n\n```bash\nnpx @alauda-fe/i18n-tools grammar-check -f src/en/common.json --dry-run -k $OPENAI_API_KEY\n```\n\n- 单文件（直接修改，自动备份并生成变更记录）：\n\n```bash\nnpx @alauda-fe/i18n-tools grammar-check -f src/en/common.json -k $OPENAI_API_KEY\n```\n\n- 目录批量（并行 4 个文件，预览）：\n\n```bash\nnpx @alauda-fe/i18n-tools batch-grammar-check -d src/en --parallel 4 --dry-run -k $OPENAI_API_KEY\n```\n\n## 📋 模板格式示例\n\n### 基础变量格式\n```json\n{\n  \"welcome\": \"Welcome to {{app_name}}!\",\n  \"greeting\": \"Hello ${username}, today is ${date}\",\n  \"path\": \"File saved to ${directory}/${filename}\"\n}\n```\n\n### ICU 复数格式\n```json\n{\n  \"item_count\": \"{count, plural, =0{No items} =1{One item} other{# items}}\",\n  \"file_size\": \"{size, plural, =0{Empty} =1{# byte} other{# bytes}}\",\n  \"notification\": \"{unread, plural, =0{All caught up!} other{# unread messages}}\"\n}\n```\n\n### ICU 选择格式\n```json\n{\n  \"pronoun\": \"{gender, select, male{he} female{she} other{they}}\",\n  \"status\": \"{userStatus, select, online{Available} offline{Away} busy{Do not disturb} other{Unknown}}\"\n}\n```\n\n### ICU 格式化类型\n```json\n{\n  \"price\": \"Total: {amount, number, currency}\",\n  \"progress\": \"Complete: {value, number, percent}\",\n  \"created\": \"Created on {date, date, short}\",\n  \"lastLogin\": \"Last login: {time, time, medium}\"\n}\n```\n\n### 复杂嵌套格式\n```json\n{\n  \"complex\": \"{hasItems, select, true{{count, plural, =0{No items found} =1{Found one item} other{Found # items}}} false{Search returned no results}}\",\n  \"permissions\": \"{role, select, admin{You can {action, select, create{add new} edit{modify} delete{remove} other{view}} content} user{Read-only access} other{No access granted}}\"\n}\n```\n\n### 翻译结果示例（英文→中文）\n```json\n// 原文\n{\n  \"messages\": \"{count, plural, =0{You have no messages} =1{You have one message} other{You have # messages}}\"\n}\n\n// 中文翻译\n{\n  \"messages\": \"{count, plural, =0{您没有消息} =1{您有一条消息} other{您有 # 条消息}}\"\n}\n```\n\n**注意**：在 ICU 格式中，变量名（如 `count`）、关键字（如 `plural`）、标识符（如 `=0`, `=1`, `other`）和特殊符号（如 `#`）都会被严格保护，只翻译显示文本部分。\n\n### 4) 仅管理/更新快照\n\n若你已将新英文放入 `new/en/`，仅想刷新快照而不翻译：\n\n```bash\nnpx @alauda-fe/i18n-tools update-snapshot -s en\n```\n\n### 5) 自定义提示词与额外规则\n\n所有翻译/语法检查类命令均支持：\n\n```bash\n# 自定义系统提示词\n--custom-prompt ./prompts/translation.md\n\n# 额外规则（会附加到默认规则后）\n--extra-rules \"按钮文案绝不加句号。保持 PVC/PVCs 不展开为全称。\"\n```\n\n示例：\n\n```bash\nnpx @alauda-fe/i18n-tools translate -s en -t ja \\\n\t--custom-prompt ./prompts/ja.md \\\n\t--extra-rules \"UI 文案不加句号\" \\\n\t-k $OPENAI_API_KEY\n```\n\n---\n\n## 命令参考（速查）\n\n### translate\n\n翻译 JSON 文件（全量补齐缺失/null 的目标键）。\n\n- 选项：\n  - -s, --source <lang> 源语言目录，默认 en\n  - -t, --target <lang> 目标语言目录（必填）\n  - -k, --token <key> Azure OpenAI Key（或用 OPENAI_API_KEY）\n  - --custom-prompt <path> 自定义系统提示词\n  - --extra-rules <text> 附加规则\n\n### incremental-translate\n\n基于 `new/<source>` 与 `snapshot/<source>` 的差异增量翻译，输出至 `src/<target>`，并更新 `snapshot/<source>`，随后删除 `new/`。\n\n- 选项同 translate，另：\n  - -s 默认为 en，-t 需指定如 zh\n\n### retry-failed\n\n重试目标目录中值为 null 的条目（之前因校验失败或限流导致）。\n\n- 选项同 translate\n\n### grammar-check\n\n检查并修正英文 JSON 的语法/拼写。\n\n- 选项：\n  - -f, --file <path> 需要检查的 .json 文件\n  - -k, --token <key> Azure OpenAI Key\n  - --dry-run 预览，不落盘\n  - --custom-prompt / --extra-rules 同上\n\n### batch-grammar-check\n\n批量检查目录下所有 JSON 文件。\n\n- 选项：\n  - -d, --dir <path> 目录路径\n  - --parallel <num> 并行数量（1-10），默认 1\n  - 其余同 grammar-check\n\n### sync\n\n从配置的 GitLab/GitHub 仓库下载英文源 JSON 到 `new/en/`。\n\n- 选项：\n  - -r, --repo <name> 指定仓库名（可多次）\n  - -l, --level <level> 过滤 level（默认 core）\n  - -b, --branch <branch> 指定分支\n  - -t, --token <token> 访问令牌（或设置 GITLAB_TOKEN/GITHUB_TOKEN）\n\n说明：自动根据仓库类型优先使用对应环境变量；公开仓库可不提供令牌。\n\n### update-snapshot\n\n将 `new/<source>` 的文件复制到 `snapshot/<source>`。\n\n---\n\n## 重要校验与保护\n\n- 占位符保护：`{{var}}`、`${var}` 原样保留；若翻译后占位符集合不一致，则该条目置为 null 以待重试/人工处理\n- 技术术语/标点保护：Kubernetes、Docker、PVC/PVCs、Load Balancer 等严格按原文格式；UI 文案不强加句号\n- 注释和值跳过：值以 `// ` 开头的注释项、以 `_en` 结尾的键、空字符串值会被跳过\n\n---\n\n## 日志与排错\n\n- 错误日志：\n  - 翻译：`translate_errors.log`\n  - 语法检查：`grammar_check_errors.log`\n- 常见问题：\n  - 401/403：检查 OPENAI_API_KEY 或 GitLab/GitHub 令牌权限\n  - 429 限流：工具会等待后重试；多次失败可稍后再试\n  - 条目为 null：多因占位符校验失败或 API 出错，可用 `retry-failed` 补齐\n\n---\n\n## 提示\n\n- Node 进程需能够访问 Azure OpenAI 与 GitLab/GitHub 网络\n- 推荐在提交前对 `src/<目标语言>` 做一次抽查，并关注日志中“修改/失败”统计\n\n---\n\n如需优化提示词或术语策略，可参考仓库内 `PROMPTS_OPTIMIZATION.md`、`TECH_TERMS_GUIDE.md` 与 `CUSTOM_PROMPTS_GUIDE.md`。\n","readmeFilename":"README.md"}