{"_id":"@wxt-dev/i18n","_rev":"10-c15b79dfa535548dd2edb8d1627d6efe","name":"@wxt-dev/i18n","dist-tags":{"latest":"0.2.7"},"versions":{"0.1.0":{"name":"@wxt-dev/i18n","version":"0.1.0","keywords":["wxt","module","i18n"],"author":{"name":"Aaron Klinker","email":"aaronklinker1+wxt@gmail.com"},"license":"MIT","_id":"@wxt-dev/i18n@0.1.0","maintainers":[{"name":"_aklinker1","email":"aaronklinker1@gmail.com"}],"homepage":"http://wxt.dev/guide/i18n/installation.html","bugs":{"url":"https://github.com/wxt-dev/wxt/issues"},"dist":{"shasum":"5780cddc4ac39f0afc772e97abd150d0f4e18973","tarball":"https://registry.npmjs.org/@wxt-dev/i18n/-/i18n-0.1.0.tgz","fileCount":18,"integrity":"sha512-qK3S8iyKFnr1MO8eLFKW/ek5pYkMuXQTLEA944H34iR+9hBuvtPFQtzw5iAlu3idm1qKy2tf6j3X8D3pnM/RNA==","signatures":[{"sig":"MEUCIQCJY1vY7AMfA9hJe9DS665ND0zxtvvRfx/p8LTUckblZAIgE0Oz62vawIvF7bUnN+bImefTVPTdZlVgouDkEJcmcdA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43747},"main":"./dist/index.cjs","type":"module","_from":"file:wxt-dev-i18n-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./build":{"import":{"types":"./dist/build.d.mts","default":"./dist/build.mjs"},"require":{"types":"./dist/build.d.cts","default":"./dist/build.cjs"}},"./module":{"import":{"types":"./dist/module.d.mts","default":"./dist/module.mjs"},"require":{"types":"./dist/module.d.cts","default":"./dist/module.cjs"}}},"scripts":{"test":"buildc --deps-only -- vitest","build":"buildc -- unbuild","check":"buildc --deps-only -- check"},"_npmUser":{"name":"_aklinker1","email":"aaronklinker1@gmail.com"},"_resolved":"/private/var/folders/g2/ztr_kd996gv4vv11lxwggz8c0000gn/T/14f24fbdb44138e040f6c69e98421c46/wxt-dev-i18n-0.1.0.tgz","_integrity":"sha512-qK3S8iyKFnr1MO8eLFKW/ek5pYkMuXQTLEA944H34iR+9hBuvtPFQtzw5iAlu3idm1qKy2tf6j3X8D3pnM/RNA==","repository":{"url":"git+https://github.com/wxt-dev/wxt.git","type":"git","directory":"packages/i18n"},"_npmVersion":"10.7.0","description":"Type-safe wrapper around browser.i18n.getMessage with additional features","directories":{},"_nodeVersion":"18.20.3","dependencies":{"confbox":"^0.1.7","chokidar":"^3.6.0","fast-glob":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"wxt":"0.19.6","vitest":"^1.6.0","publint":"^0.2.8","unbuild":"^2.0.0","typescript":"^5.4.5","@types/node":"^20.14.2","@types/chrome":"^0.0.268","@aklinker1/check":"^1.3.1","vitest-plugin-random-seed":"^1.1.0"},"peerDependencies":{"wxt":">=0.19.7"},"peerDependenciesMeta":{"wxt":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/i18n_0.1.0_1724077184954_0.8006326414329776","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@wxt-dev/i18n","version":"0.1.1","keywords":["wxt","module","i18n"],"author":{"name":"Aaron Klinker","email":"aaronklinker1+wxt@gmail.com"},"license":"MIT","_id":"@wxt-dev/i18n@0.1.1","maintainers":[{"name":"_aklinker1","email":"aaronklinker1@gmail.com"}],"homepage":"http://wxt.dev/guide/i18n/installation.html","bugs":{"url":"https://github.com/wxt-dev/wxt/issues"},"dist":{"shasum":"7b044f8c7bc42b996561d3bd17f991c03723fa8c","tarball":"https://registry.npmjs.org/@wxt-dev/i18n/-/i18n-0.1.1.tgz","fileCount":18,"integrity":"sha512-6/mDM7KiMksY6iXdCfZ0uCjdGD1ox58axLnS+2E9O6+FngmeNge8b9HRk80UrsAvD/0TdE1pBdaDGw2bkPDjlA==","signatures":[{"sig":"MEQCIE0RpaL5cPltWDrIH050vGTzyMYfwrrdpJabf153E1m5AiA65bsMBhidELZxKucuT4+qMJ734pQsFYTBff0mb7cqtQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44158},"main":"./dist/index.cjs","type":"module","_from":"file:wxt-dev-i18n-0.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./build":{"import":{"types":"./dist/build.d.mts","default":"./dist/build.mjs"},"require":{"types":"./dist/build.d.cts","default":"./dist/build.cjs"}},"./module":{"import":{"types":"./dist/module.d.mts","default":"./dist/module.mjs"},"require":{"types":"./dist/module.d.cts","default":"./dist/module.cjs"}}},"scripts":{"test":"buildc --deps-only -- vitest","build":"buildc -- unbuild","check":"buildc --deps-only -- check"},"_npmUser":{"name":"_aklinker1","email":"aaronklinker1@gmail.com"},"_resolved":"/tmp/141bafdaa9124a46ca09f2c8221b1122/wxt-dev-i18n-0.1.1.tgz","_integrity":"sha512-6/mDM7KiMksY6iXdCfZ0uCjdGD1ox58axLnS+2E9O6+FngmeNge8b9HRk80UrsAvD/0TdE1pBdaDGw2bkPDjlA==","repository":{"url":"git+https://github.com/wxt-dev/wxt.git","type":"git","directory":"packages/i18n"},"_npmVersion":"10.7.0","description":"Type-safe wrapper around browser.i18n.getMessage with additional features","directories":{},"_nodeVersion":"18.20.4","dependencies":{"confbox":"^0.1.7","chokidar":"^3.6.0","fast-glob":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"wxt":"0.19.11","oxlint":"^0.9.9","vitest":"^2.0.0","publint":"^0.2.11","unbuild":"^2.0.0","typescript":"^5.6.2","@types/node":"^20.16.10","@types/chrome":"^0.0.268","@aklinker1/check":"^1.4.5","vitest-plugin-random-seed":"^1.1.0"},"peerDependencies":{"wxt":">=0.19.7"},"peerDependenciesMeta":{"wxt":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/i18n_0.1.1_1728066267274_0.5622895013307967","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@wxt-dev/i18n","version":"0.2.0","keywords":["wxt","module","i18n"],"author":{"name":"Aaron Klinker","email":"aaronklinker1+wxt@gmail.com"},"license":"MIT","_id":"@wxt-dev/i18n@0.2.0","maintainers":[{"name":"_aklinker1","email":"aaronklinker1@gmail.com"}],"homepage":"http://wxt.dev/guide/i18n/installation.html","bugs":{"url":"https://github.com/wxt-dev/wxt/issues"},"dist":{"shasum":"f0c59948f403f4a3d7dd0e45d476e03007dfd91b","tarball":"https://registry.npmjs.org/@wxt-dev/i18n/-/i18n-0.2.0.tgz","fileCount":18,"integrity":"sha512-dt9cHupmragM9MVjBnHGHBo3sKj6oVIrIdkrveuPbv3dhjez12kAvKBWpEnjDdLSR6gMTV759uTZX7rFLH3FMA==","signatures":[{"sig":"MEQCIEww5o1+Oh56bbToHXYYzZhkrEvuexoZ+dbZiepHM6OcAiByMhqeCq1MrUgU8fjLD5SzOqwbpqjI/OC0k0DOIPMInA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41734},"main":"./dist/index.cjs","type":"module","_from":"file:wxt-dev-i18n-0.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./build":{"import":{"types":"./dist/build.d.mts","default":"./dist/build.mjs"},"require":{"types":"./dist/build.d.cts","default":"./dist/build.cjs"}},"./module":{"import":{"types":"./dist/module.d.mts","default":"./dist/module.mjs"},"require":{"types":"./dist/module.d.cts","default":"./dist/module.cjs"}}},"scripts":{"test":"buildc --deps-only -- vitest","build":"buildc -- unbuild","check":"buildc --deps-only -- check"},"_npmUser":{"name":"_aklinker1","email":"aaronklinker1@gmail.com"},"_resolved":"/tmp/c9b9ccb99da6aaf57fe0068df0dee68c/wxt-dev-i18n-0.2.0.tgz","_integrity":"sha512-dt9cHupmragM9MVjBnHGHBo3sKj6oVIrIdkrveuPbv3dhjez12kAvKBWpEnjDdLSR6gMTV759uTZX7rFLH3FMA==","repository":{"url":"git+https://github.com/wxt-dev/wxt.git","type":"git","directory":"packages/i18n"},"_npmVersion":"10.7.0","description":"Type-safe wrapper around browser.i18n.getMessage with additional features","directories":{},"_nodeVersion":"18.20.4","dependencies":{"confbox":"^0.1.7","chokidar":"^3.6.0","fast-glob":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"wxt":"0.19.11","oxlint":"^0.9.9","vitest":"^2.0.0","publint":"^0.2.11","unbuild":"^2.0.0","typescript":"^5.6.2","@types/node":"^20.16.10","@types/chrome":"^0.0.268","@aklinker1/check":"^1.4.5","vitest-plugin-random-seed":"^1.1.0"},"peerDependencies":{"wxt":">=0.19.7"},"peerDependenciesMeta":{"wxt":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/i18n_0.2.0_1728083562883_0.5091127759253675","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@wxt-dev/i18n","version":"0.2.1","keywords":["wxt","module","i18n"],"author":{"name":"Aaron Klinker","email":"aaronklinker1+wxt@gmail.com"},"license":"MIT","_id":"@wxt-dev/i18n@0.2.1","maintainers":[{"name":"_aklinker1","email":"aaronklinker1@gmail.com"}],"homepage":"http://wxt.dev/guide/i18n/installation.html","bugs":{"url":"https://github.com/wxt-dev/wxt/issues"},"dist":{"shasum":"8e431f29e6a821c8242190973b8263783017da16","tarball":"https://registry.npmjs.org/@wxt-dev/i18n/-/i18n-0.2.1.tgz","fileCount":18,"integrity":"sha512-amJS8VzefnLxshmXb2PeQEiOjNAFjohXClL2TkbZKf2487rNtDRDEBs08MLQbnca4qSKfm/OiNdYsi3AksKHog==","signatures":[{"sig":"MEYCIQCtY8VFZf7XKSqGw30oZjnoPH24SmnxSizNiCfqL6KtSgIhAMAy1CqZk44NlG5FxnhZuYuY9vDyxj59O/2fZPINpZ2Q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":51436},"main":"./dist/index.cjs","type":"module","_from":"file:wxt-dev-i18n-0.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./build":{"import":{"types":"./dist/build.d.mts","default":"./dist/build.mjs"},"require":{"types":"./dist/build.d.cts","default":"./dist/build.cjs"}},"./module":{"import":{"types":"./dist/module.d.mts","default":"./dist/module.mjs"},"require":{"types":"./dist/module.d.cts","default":"./dist/module.cjs"}}},"scripts":{"test":"buildc --deps-only -- vitest","build":"buildc -- unbuild","check":"buildc --deps-only -- check"},"_npmUser":{"name":"_aklinker1","email":"aaronklinker1@gmail.com"},"_resolved":"/tmp/3014bafe4fb6e6c050ada2028731429f/wxt-dev-i18n-0.2.1.tgz","_integrity":"sha512-amJS8VzefnLxshmXb2PeQEiOjNAFjohXClL2TkbZKf2487rNtDRDEBs08MLQbnca4qSKfm/OiNdYsi3AksKHog==","repository":{"url":"git+https://github.com/wxt-dev/wxt.git","type":"git","directory":"packages/i18n"},"_npmVersion":"10.7.0","description":"Type-safe wrapper around browser.i18n.getMessage with additional features","directories":{},"_nodeVersion":"18.20.4","dependencies":{"confbox":"^0.1.7","chokidar":"^3.6.0","fast-glob":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"wxt":"0.19.11","oxlint":"^0.9.9","vitest":"^2.0.0","publint":"^0.2.11","unbuild":"^2.0.0","typescript":"^5.6.2","@types/node":"^20.16.10","@types/chrome":"^0.0.268","@aklinker1/check":"^1.4.5","vitest-plugin-random-seed":"^1.1.0"},"peerDependencies":{"wxt":">=0.19.7"},"peerDependenciesMeta":{"wxt":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/i18n_0.2.1_1729317007089_0.21493312480331905","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@wxt-dev/i18n","version":"0.2.2","keywords":["wxt","module","i18n"],"author":{"name":"Aaron Klinker","email":"aaronklinker1+wxt@gmail.com"},"license":"MIT","_id":"@wxt-dev/i18n@0.2.2","maintainers":[{"name":"_aklinker1","email":"aaronklinker1@gmail.com"}],"homepage":"http://wxt.dev/guide/i18n/installation.html","bugs":{"url":"https://github.com/wxt-dev/wxt/issues"},"dist":{"shasum":"181a13928a3e91a63a2befd2785aee2018d54f5a","tarball":"https://registry.npmjs.org/@wxt-dev/i18n/-/i18n-0.2.2.tgz","fileCount":18,"integrity":"sha512-ElSY9xZ53L8Rm2/j6+WT4rkYif8UDC4nR7h2NODX2fmbz9Nl8X2A56BoYfrcs5i7bF5DZ+k0M69HrhzGBVLNcg==","signatures":[{"sig":"MEYCIQDtFOq6M4uVUHzUHMDm7mp3RS0sX5TGBXclfm84PdnUxAIhALmDqWF43Svor9PavztBIviyvfkKwNAANwG9TltThRzk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52902},"main":"./dist/index.cjs","type":"module","_from":"file:wxt-dev-i18n-0.2.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./build":{"import":{"types":"./dist/build.d.mts","default":"./dist/build.mjs"},"require":{"types":"./dist/build.d.cts","default":"./dist/build.cjs"}},"./module":{"import":{"types":"./dist/module.d.mts","default":"./dist/module.mjs"},"require":{"types":"./dist/module.d.cts","default":"./dist/module.cjs"}}},"scripts":{"test":"buildc --deps-only -- vitest","build":"buildc -- unbuild","check":"buildc --deps-only -- check"},"_npmUser":{"name":"_aklinker1","email":"aaronklinker1@gmail.com"},"_resolved":"/tmp/2fcbe48879091aefd862a38080a4b24b/wxt-dev-i18n-0.2.2.tgz","_integrity":"sha512-ElSY9xZ53L8Rm2/j6+WT4rkYif8UDC4nR7h2NODX2fmbz9Nl8X2A56BoYfrcs5i7bF5DZ+k0M69HrhzGBVLNcg==","repository":{"url":"git+https://github.com/wxt-dev/wxt.git","type":"git","directory":"packages/i18n"},"_npmVersion":"10.7.0","description":"Type-safe wrapper around browser.i18n.getMessage with additional features","directories":{},"_nodeVersion":"18.20.4","dependencies":{"confbox":"^0.1.7","chokidar":"^3.6.0","fast-glob":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"wxt":"0.19.13","oxlint":"^0.9.9","vitest":"^2.0.0","publint":"^0.2.11","unbuild":"^2.0.0","typescript":"^5.6.2","@types/node":"^20.16.10","@types/chrome":"^0.0.268","@aklinker1/check":"^1.4.5","vitest-plugin-random-seed":"^1.1.0"},"peerDependencies":{"wxt":">=0.19.7"},"peerDependenciesMeta":{"wxt":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/i18n_0.2.2_1729691105678_0.04656148470801025","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@wxt-dev/i18n","version":"0.2.3","keywords":["wxt","module","i18n"],"author":{"name":"Aaron Klinker","email":"aaronklinker1+wxt@gmail.com"},"license":"MIT","_id":"@wxt-dev/i18n@0.2.3","maintainers":[{"name":"_aklinker1","email":"aaronklinker1@gmail.com"}],"homepage":"http://wxt.dev/guide/i18n/installation.html","bugs":{"url":"https://github.com/wxt-dev/wxt/issues"},"dist":{"shasum":"5688cbdf5324e86fbd65d585073121bf8d493085","tarball":"https://registry.npmjs.org/@wxt-dev/i18n/-/i18n-0.2.3.tgz","fileCount":18,"integrity":"sha512-2X005PB1r+6sDYMOuZD5hxSOPkogEZZTLB5HEsOotQ5RYXF3c/OOMD+DffVeq+S0yKY2Dmg4Ujfu0Pq4busJYQ==","signatures":[{"sig":"MEUCIHC6C6Yo73xjl7L3wLuRIEHvFw2hUPT7yhL5HghXoiHWAiEAjqAFFmoPTdg/0eANzt6X0SG4TnmBmK8jVUMTIyyuT00=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":53030},"main":"./dist/index.cjs","type":"module","_from":"file:wxt-dev-i18n-0.2.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./build":{"import":{"types":"./dist/build.d.mts","default":"./dist/build.mjs"},"require":{"types":"./dist/build.d.cts","default":"./dist/build.cjs"}},"./module":{"import":{"types":"./dist/module.d.mts","default":"./dist/module.mjs"},"require":{"types":"./dist/module.d.cts","default":"./dist/module.cjs"}}},"scripts":{"test":"buildc --deps-only -- vitest","build":"buildc -- unbuild","check":"buildc --deps-only -- check"},"_npmUser":{"name":"_aklinker1","email":"aaronklinker1@gmail.com"},"_resolved":"/tmp/34e1e10cbfa82f0b7256c318b404f410/wxt-dev-i18n-0.2.3.tgz","_integrity":"sha512-2X005PB1r+6sDYMOuZD5hxSOPkogEZZTLB5HEsOotQ5RYXF3c/OOMD+DffVeq+S0yKY2Dmg4Ujfu0Pq4busJYQ==","repository":{"url":"git+https://github.com/wxt-dev/wxt.git","type":"git","directory":"packages/i18n"},"_npmVersion":"10.7.0","description":"Type-safe wrapper around browser.i18n.getMessage with additional features","directories":{},"_nodeVersion":"18.20.4","dependencies":{"confbox":"^0.1.7","chokidar":"^3.6.0","fast-glob":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"wxt":"0.19.13","oxlint":"^0.9.9","vitest":"^2.0.0","publint":"^0.2.11","unbuild":"^2.0.0","typescript":"^5.6.2","@types/node":"^20.16.10","@types/chrome":"^0.0.268","@aklinker1/check":"^1.4.5","vitest-plugin-random-seed":"^1.1.0"},"peerDependencies":{"wxt":">=0.19.7"},"peerDependenciesMeta":{"wxt":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/i18n_0.2.3_1730123308937_0.03914479332448506","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"@wxt-dev/i18n","version":"0.2.4","keywords":["wxt","module","i18n"],"author":{"name":"Aaron Klinker","email":"aaronklinker1+wxt@gmail.com"},"license":"MIT","_id":"@wxt-dev/i18n@0.2.4","maintainers":[{"name":"_aklinker1","email":"aaronklinker1@gmail.com"}],"homepage":"http://wxt.dev/guide/i18n/installation.html","bugs":{"url":"https://github.com/wxt-dev/wxt/issues"},"dist":{"shasum":"2f82071d2b7551a46440134a6e6d340ecaefd7d0","tarball":"https://registry.npmjs.org/@wxt-dev/i18n/-/i18n-0.2.4.tgz","fileCount":20,"integrity":"sha512-qYWCRlMcRY/fCcwYpPcZV55NHFlri8K+eJqS/0bhHnDClWkiYHyYnIzI0tMeNdXCCo8oyKQr+qhrVM/LKNRymw==","signatures":[{"sig":"MEUCIQD5M2SBf5X5mk2rC7ZeznACrwYb65GMa6Tj95jpLIkZtgIgdMckukeKCWIvzJfyHesnmDaSpD8iz+jSy6DQmLNgVSU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57747},"main":"./dist/index.cjs","type":"module","_from":"file:wxt-dev-i18n-0.2.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./build":{"import":{"types":"./dist/build.d.mts","default":"./dist/build.mjs"},"require":{"types":"./dist/build.d.cts","default":"./dist/build.cjs"}},"./module":{"import":{"types":"./dist/module.d.mts","default":"./dist/module.mjs"},"require":{"types":"./dist/module.d.cts","default":"./dist/module.cjs"}}},"funding":"https://github.com/sponsors/wxt-dev","scripts":{"test":"buildc --deps-only -- vitest","build":"buildc -- unbuild","check":"buildc --deps-only -- check"},"_npmUser":{"name":"_aklinker1","email":"aaronklinker1@gmail.com"},"_resolved":"/tmp/b18f7a5245035118000d0e5fb8d72dc2/wxt-dev-i18n-0.2.4.tgz","_integrity":"sha512-qYWCRlMcRY/fCcwYpPcZV55NHFlri8K+eJqS/0bhHnDClWkiYHyYnIzI0tMeNdXCCo8oyKQr+qhrVM/LKNRymw==","repository":{"url":"git+https://github.com/wxt-dev/wxt.git","type":"git","directory":"packages/i18n"},"_npmVersion":"10.8.2","description":"Type-safe wrapper around browser.i18n.getMessage with additional features","directories":{},"_nodeVersion":"18.20.8","dependencies":{"confbox":"^0.1.8 || ^0.2.2","chokidar":"^4.0.3","fast-glob":"^3.3.3","@wxt-dev/browser":"^0.0.318"},"_hasShrinkwrap":false,"devDependencies":{"wxt":"0.20.6","oxlint":"^0.16.8","vitest":"^3.1.2","publint":"^0.3.12","unbuild":"^3.5.0","typescript":"^5.8.3","@types/node":"^20.17.6","@aklinker1/check":"2.0.0","vitest-plugin-random-seed":"^1.1.1"},"peerDependencies":{"wxt":">=0.19.7"},"peerDependenciesMeta":{"wxt":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/i18n_0.2.4_1746361650549_0.19345959586316774","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@wxt-dev/i18n","version":"0.2.5","keywords":["wxt","module","i18n"],"author":{"name":"Aaron Klinker","email":"aaronklinker1+wxt@gmail.com"},"license":"MIT","_id":"@wxt-dev/i18n@0.2.5","maintainers":[{"name":"_aklinker1","email":"aaronklinker1@gmail.com"}],"homepage":"http://wxt.dev/guide/i18n/installation.html","bugs":{"url":"https://github.com/wxt-dev/wxt/issues"},"dist":{"shasum":"6935a1d75b31b59bcc213b5100241a386760353d","tarball":"https://registry.npmjs.org/@wxt-dev/i18n/-/i18n-0.2.5.tgz","fileCount":17,"integrity":"sha512-B9EwzR7eTIZv5HQSsQL9/NaBHXH7G/esEtxMCoBMQyHx6QWWJNMJLX2C4z8slQUbblvlt4bPa+/zIC1IrWc1LA==","signatures":[{"sig":"MEUCIFt0y5hdTM0/X0C1RDD1mjqqu+B/yJzvdgh4JjPK7L5mAiEAzLDVXmQZCEx4TcRnTrA5GeCQKl2kNBtjq1h9YfANhTU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@wxt-dev%2fi18n@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51228},"main":"./dist/index.cjs","type":"module","_from":"file:wxt-dev-i18n-0.2.5.tgz","types":"./dist/index.d.mts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./build":{"import":{"types":"./dist/build.d.mts","default":"./dist/build.mjs"},"require":{"types":"./dist/build.d.cts","default":"./dist/build.cjs"}},"./module":{"import":{"types":"./dist/module.d.mts","default":"./dist/module.mjs"},"require":{"types":"./dist/module.d.cts","default":"./dist/module.cjs"}}},"funding":"https://github.com/sponsors/wxt-dev","scripts":{"test":"buildc --deps-only -- vitest","build":"buildc -- tsdown","check":"buildc --deps-only -- check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:178045d8-1df7-4902-b635-ed51147008fd"}},"_resolved":"/home/runner/work/wxt/wxt/packages/i18n/wxt-dev-i18n-0.2.5.tgz","_integrity":"sha512-B9EwzR7eTIZv5HQSsQL9/NaBHXH7G/esEtxMCoBMQyHx6QWWJNMJLX2C4z8slQUbblvlt4bPa+/zIC1IrWc1LA==","repository":{"url":"git+https://github.com/wxt-dev/wxt.git","type":"git","directory":"packages/i18n"},"_npmVersion":"11.10.1","description":"Type-safe wrapper around browser.i18n.getMessage with additional features","directories":{},"_nodeVersion":"20.20.0","dependencies":{"confbox":"^0.1.8 || ^0.2.2","chokidar":"^5.0.0","fast-glob":"^3.3.3","@wxt-dev/browser":"^0.1.37"},"_hasShrinkwrap":false,"devDependencies":{"wxt":"0.20.17","oxlint":"^1.43.0","vitest":"^4.0.18","publint":"^0.3.17","typescript":"^5.9.3","@types/node":"^20.17.6","vitest-plugin-random-seed":"^1.1.2"},"peerDependencies":{"wxt":">=0.19.7"},"peerDependenciesMeta":{"wxt":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/i18n_0.2.5_1771795992445_0.30725454267917685","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@wxt-dev/i18n","version":"0.2.6","keywords":["wxt","module","i18n"],"author":{"name":"Aaron Klinker","email":"aaronklinker1+wxt@gmail.com"},"license":"MIT","_id":"@wxt-dev/i18n@0.2.6","maintainers":[{"name":"_aklinker1","email":"aaronklinker1@gmail.com"}],"homepage":"http://wxt.dev/guide/i18n/installation.html","bugs":{"url":"https://github.com/wxt-dev/wxt/issues"},"dist":{"shasum":"69647145006c150e11529ab6d0f9bfe0a8a26c53","tarball":"https://registry.npmjs.org/@wxt-dev/i18n/-/i18n-0.2.6.tgz","fileCount":18,"integrity":"sha512-bpTjdib/7WQ2rKNVCfyeYSJfc6i3+v3YBXmdqk4DZ0brMigJcmjnn6ySsyp4UBhVtutqC/zkQPV4/5HBua1seg==","signatures":[{"sig":"MEUCIQCqPcGzIoNfotpQWgHX/kQetR4pxKgXhDXIbd2nb0MPnAIgMfcupwr11jmTDPTIEIOKrtgqoO1/pKpewBCu+74znlw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@wxt-dev%2fi18n@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59867},"main":"./dist/index.cjs","type":"module","_from":"file:wxt-dev-i18n-0.2.6.tgz","types":"./dist/index.d.mts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./build":{"import":{"types":"./dist/build.d.mts","default":"./dist/build.mjs"},"require":{"types":"./dist/build.d.cts","default":"./dist/build.cjs"}},"./module":{"import":{"types":"./dist/module.d.mts","default":"./dist/module.mjs"},"require":{"types":"./dist/module.d.cts","default":"./dist/module.cjs"}}},"funding":"https://github.com/sponsors/wxt-dev","scripts":{"test":"buildc --deps-only -- vitest","bench":"buildc --deps-only -- bun run bench/run.ts","build":"buildc -- tsdown","check":"buildc --deps-only -- check","prepack":"bun run build","test:coverage":"bun run test run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:178045d8-1df7-4902-b635-ed51147008fd"}},"_resolved":"/home/runner/work/wxt/wxt/packages/i18n/wxt-dev-i18n-0.2.6.tgz","_integrity":"sha512-bpTjdib/7WQ2rKNVCfyeYSJfc6i3+v3YBXmdqk4DZ0brMigJcmjnn6ySsyp4UBhVtutqC/zkQPV4/5HBua1seg==","repository":{"url":"git+https://github.com/wxt-dev/wxt.git","type":"git","directory":"packages/i18n"},"_npmVersion":"11.18.0","description":"Type-safe wrapper around browser.i18n.getMessage with additional features","directories":{},"_nodeVersion":"22.23.0","dependencies":{"confbox":"^0.2.4","chokidar":"^5.0.0","tinyglobby":"^0.2.16","@wxt-dev/browser":"^0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"wxt":"0.20.27","oxlint":"^1.63.0","tsdown":"^0.21.0","vitest":"^4.1.5","publint":"^0.3.18","tinybench":"^6.0.1","typescript":"^6.0.3","@types/node":"^20.17.6","@aklinker1/buildc":"^1.1.7","vitest-plugin-random-seed":"^1.1.2"},"peerDependencies":{"wxt":">=0.19.7"},"peerDependenciesMeta":{"wxt":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/i18n_0.2.6_1782853368380_0.19248189631094825","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@wxt-dev/i18n","description":"Type-safe wrapper around browser.i18n.getMessage with additional features","version":"0.2.7","type":"module","repository":{"type":"git","url":"git+https://github.com/wxt-dev/wxt.git","directory":"packages/i18n"},"homepage":"http://wxt.dev/guide/i18n/installation.html","keywords":["wxt","module","i18n"],"author":{"name":"Aaron Klinker","email":"aaronklinker1+wxt@gmail.com"},"license":"MIT","funding":"https://github.com/sponsors/wxt-dev","scripts":{"build":"buildc -- tsdown","check":"buildc --deps-only -- check","test":"buildc --deps-only -- vitest","bench":"buildc --deps-only -- bun run bench/run.ts","test:coverage":"bun run test run --coverage","prepack":"bun run build"},"dependencies":{"@wxt-dev/browser":">=0.1","chokidar":"^5.0.0","confbox":"^0.2.4","tinyglobby":"^0.2.16"},"peerDependencies":{"wxt":">=0.19.7"},"peerDependenciesMeta":{"wxt":{"optional":true}},"devDependencies":{"@aklinker1/buildc":"^1.1.7","@types/node":"^22","oxlint":"^1.63.0","publint":"^0.3.18","tinybench":"^6.0.1","tsdown":"^0.21.0","typescript":"^6.0.3","vitest":"^4.1.10","vitest-plugin-random-seed":"^2.0.2","wxt":"0.21.3"},"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.mts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./build":{"import":{"types":"./dist/build.d.mts","default":"./dist/build.mjs"},"require":{"types":"./dist/build.d.cts","default":"./dist/build.cjs"}},"./module":{"import":{"types":"./dist/module.d.mts","default":"./dist/module.mjs"},"require":{"types":"./dist/module.d.cts","default":"./dist/module.cjs"}}},"_id":"@wxt-dev/i18n@0.2.7","bugs":{"url":"https://github.com/wxt-dev/wxt/issues"},"_integrity":"sha512-aBhWJ2GFMtjyWK8Qcq83pf7WA88Iu6SwRWdZl7TrDM6lAC0RV5uLuFUrX72GwO1ZuZHuN80FQVVGnK1MHDTjcA==","_resolved":"/home/runner/work/wxt/wxt/packages/i18n/wxt-dev-i18n-0.2.7.tgz","_from":"file:wxt-dev-i18n-0.2.7.tgz","_nodeVersion":"22.23.1","_npmVersion":"12.0.2","dist":{"integrity":"sha512-aBhWJ2GFMtjyWK8Qcq83pf7WA88Iu6SwRWdZl7TrDM6lAC0RV5uLuFUrX72GwO1ZuZHuN80FQVVGnK1MHDTjcA==","shasum":"59eb8a91d88260172b26ad521eead8e6d1faeee3","tarball":"https://registry.npmjs.org/@wxt-dev/i18n/-/i18n-0.2.7.tgz","fileCount":18,"unpackedSize":59861,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@wxt-dev%2fi18n@0.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBc7iozBMVkFfahm+Yy8l/Qr9LfAB2Vi9UrZgXXhRiBAAiAtxdPLIa3lEUMRaupTpo9ySsZPHs2oilc78BQrOwOCDw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:178045d8-1df7-4902-b635-ed51147008fd"}},"directories":{},"maintainers":[{"name":"_aklinker1","email":"aaronklinker1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/i18n_0.2.7_1785534801732_0.22617046714578648"},"_hasShrinkwrap":false}},"time":{"created":"2024-08-19T14:19:44.853Z","modified":"2026-07-31T21:53:22.216Z","0.1.0":"2024-08-19T14:19:45.114Z","0.1.1":"2024-10-04T18:24:27.468Z","0.2.0":"2024-10-04T23:12:43.094Z","0.2.1":"2024-10-19T05:50:07.284Z","0.2.2":"2024-10-23T13:45:05.944Z","0.2.3":"2024-10-28T13:48:29.148Z","0.2.4":"2025-05-04T12:27:30.737Z","0.2.5":"2026-02-22T21:33:12.585Z","0.2.6":"2026-06-30T21:02:48.522Z","0.2.7":"2026-07-31T21:53:21.874Z"},"bugs":{"url":"https://github.com/wxt-dev/wxt/issues"},"author":{"name":"Aaron Klinker","email":"aaronklinker1+wxt@gmail.com"},"license":"MIT","homepage":"http://wxt.dev/guide/i18n/installation.html","keywords":["wxt","module","i18n"],"repository":{"type":"git","url":"git+https://github.com/wxt-dev/wxt.git","directory":"packages/i18n"},"description":"Type-safe wrapper around browser.i18n.getMessage with additional features","maintainers":[{"name":"_aklinker1","email":"aaronklinker1@gmail.com"}],"readme":"# `@wxt-dev/i18n`\n\n[Changelog](https://github.com/wxt-dev/wxt/blob/main/packages/i18n/CHANGELOG.md)\n\n`@wxt-dev/i18n` is a simple, type-safe wrapper around the `browser.i18n` APIs. It provides several benefits over the standard API:\n\n1. Simple messages file format\n2. Plural form support\n3. Integrates with the [I18n Ally VS Code extension](#vs-code)\n\nIt also provides several benefits over other non-web extension specific i18n packages:\n\n1. Does not bundle localization files into every entrypoint\n2. Don't need to fetch the localization files asynchronously\n3. Can localize text in manifest and CSS files\n\nHowever, it does have one major downside:\n\n1. Like the `browser.i18n` API, to change the language, users must change the browser's language\n\n> [!IMPORTANT]\n> You don't have to use `wxt` to use this package - it will work in any bundler setup. See [Installation without WXT](#without-wxt) for more details.\n\n## Installation\n\n### With WXT\n\n1. Install `@wxt-dev/i18n` via your package manager:\n\n   ```sh\n   pnpm i @wxt-dev/i18n\n   ```\n\n2. Add the WXT module to your `wxt.config.ts` file and setup a default locale:\n\n   ```ts\n   export default defineConfig({\n     modules: ['@wxt-dev/i18n/module'],\n     manifest: {\n       default_locale: 'en',\n     },\n   });\n   ```\n\n3. Create a localization file at `<srcDir>/locales/<default_locale>.yml` or move your existing localization files there.\n\n   ```yml\n   # <srcDir>/locales/en.yml\n   helloWorld: Hello world!\n   ```\n\n   > `@wxt-dev/i18n` supports the standard messages format, so if you already have localization files at `<rootDir>/public/_locale/<lang>/messages.json`, you don't need to convert them to YAML or refactor them - just move them to `<srcDir>/locales/<lang>.json` and they'll just work out of the box!\n\n4. To get a translation, use the auto-imported `i18n` object or import it manually:\n\n   ```ts\n   import { i18n } from '#i18n';\n\n   i18n.t('helloWorld'); // \"Hello world!\"\n   ```\n\nAnd you're done! Using WXT, you get type-safety out of the box.\n\n### Without WXT\n\n1. Install `@wxt-dev/i18n` via your package manager:\n\n   ```sh\n   pnpm i @wxt-dev/i18n\n   ```\n\n2. Create a messages file at `_locales/<lang>/messages.json` or move your existing translations there:\n\n   ```json\n   {\n     \"helloWorld\": {\n       \"message\": \"Hello world!\"\n     }\n   }\n   ```\n\n   > [!NOTE]\n   > For the best DX, you should to integrate `@wxt-dev/i18n` into your build process. This enables:\n   >\n   > 1. Plural forms\n   > 2. Simple messages file format\n   > 3. Type safety\n   >\n   > See [Build Integrations](#build-integrations) to set it up.\n\n3. Create the `i18n` object, export it, and use it wherever you want!\n\n   ```ts\n   import { createI18n } from '@wxt-dev/i18n';\n\n   export const i18n = createI18n();\n\n   i18n.t('helloWorld'); // \"Hello world!\";\n   ```\n\n## Configuration\n\nThe module can be configured via the `i18n` config:\n\n```ts\nexport default defineConfig({\n  modules: ['@wxt-dev/i18n'],\n  i18n: {\n    // ...\n  },\n});\n```\n\nOptions have JSDocs available in your editor, or you can read them in the source code: [`I18nOptions`](https://github.com/wxt-dev/wxt/blob/main/packages/i18n/src/module.ts).\n\n## Messages File Format\n\n> [!DANGER]\n> You can only use the file format discussed on this page if you have [integrated `@wxt-dev/i18n` into your build process](#build-integrations). If you have not integrated it into your build process, you must use JSON files in the `_locales` directory, like a normal web extension.\n\n### File Extensions\n\nYou can define your messages in several different file types:\n\n- `.yml`\n- `.yaml`\n- `.json`\n- `.jsonc`\n- `.json5`\n- `.toml`\n\n### Nested Keys\n\nYou can have translations at the top level or nest them into groups:\n\n```yml\nok: OK\ncancel: Cancel\nwelcome:\n  title: Welcome to XYZ\ndialogs:\n  confirmation:\n    title: 'Are you sure?'\n```\n\nTo access a nested key, use `.`:\n\n```ts\ni18n.t('ok'); // \"OK\"\ni18n.t('cancel'); // \"Cancel\"\ni18n.t('welcome.title'); // \"Welcome to XYZ\"\ni18n.t('dialogs.confirmation.title'); // \"Are you sure?\"\n```\n\n### Substitutions\n\nBecause `@wxt-dev/i18n` is based on `browser.i18n`, you define substitutions the same way, with `$1`-`$9`:\n\n```yml\nhello: Hello $1!\norder: Thanks for ordering your $1\n```\n\n#### Escaping `$`\n\nTo escape the dollar sign, put another `$` in front of it:\n\n```yml\ndollars: $$$1\n```\n\n```ts\ni18n.t('dollars', ['1.00']); // \"$1.00\"\n```\n\n#### Named Substitutions\n\nYou can also use named substitutions with `{key}` placeholders:\n\n```yml\nwelcome: Hello {name}, welcome to {appName}!\n```\n\n```ts\ni18n.t('welcome', {\n  name: 'Ada',\n  appName: 'WXT',\n}); // \"Hello Ada, welcome to WXT!\"\n```\n\nMissing keys are left unchanged in the returned message.\n\n### Plural Forms\n\n> [!WARNING]\n> Plural support languages like Arabic, that have different forms for \"few\" or \"many\", is not supported right now. Feel free to open a PR if you are interested in this!\n\nTo get a different translation based on a count:\n\n```yml\nitems:\n  1: 1 item\n  n: $1 items\n```\n\nThen you pass in the count as the second argument to `i18n.t`:\n\n```ts\ni18n.t('items', 0); // \"0 items\"\ni18n.t('items', 1); // \"1 item\"\ni18n.t('items', 2); // \"2 items\"\n```\n\nTo add a custom translation for 0 items:\n\n```yml\nitems:\n  0: No items\n  1: 1 item\n  n: $1 items\n```\n\n```ts\ni18n.t('items', 0); // \"No items\"\ni18n.t('items', 1); // \"1 item\"\ni18n.t('items', 2); // \"2 items\"\n```\n\nIf you need to pass a custom substitution for `$1` instead of the count, just add the substitution:\n\n```yml\nitems:\n  0: No items\n  1: $1 item\n  n: $1 items\n```\n\n```ts\ni18n.t('items', 0, ['Zero']); // \"No items\"\ni18n.t('items', 1, ['One']); // \"One item\"\ni18n.t('items', 2, ['Multiple']); // \"Multiple items\"\n```\n\n### Verbose Keys\n\n`@wxt-dev/i18n` is compatible with the message format used by [`browser.i18n`](https://developer.chrome.com/docs/extensions/reference/api/i18n).\n\n> [!IMPORTANT]\n> This means if you're migrating to `@wxt-dev/i18n` and you're already using the verbose format, you don't have to change anything!\n\nA key is treated as \"verbose\" when it is:\n\n1. At the top level (not nested)\n2. Only contains the following properties: `message`, `description` and/or `placeholder`\n\n```json\n{\n  \"appName\": {\n    \"message\": \"GitHub - Better Line Counts\",\n    \"description\": \"The app's name, should not be translated\"\n  },\n  \"ok\": \"OK\",\n  \"deleteConfirmation\": {\n    \"title\": \"Delete XYZ?\",\n    \"message\": \"You cannot undo this action once taken.\"\n  }\n}\n```\n\nIn this example, only `appName` is considered verbose. `deleteConfirmation` is not verbose because it contains the additional property `title`.\n\n```ts\ni18n.t('appName'); // ✅ \"GitHub - Better Line Counts\"\ni18n.t('appName.message'); // ❌\ni18n.t('ok'); // ✅ \"OK\"\ni18n.t('deleteConfirmation'); // ❌\ni18n.t('deleteConfirmation.title'); // ✅ \"Delete XYZ?\"\ni18n.t('deleteConfirmation.message'); // ✅ \"You cannot undo this action once taken.\"\n```\n\nIf this is confusing, don't worry! With type-safety, you'll get a type error if you do it wrong. If type-safety is disabled, you'll get a runtime warning in the devtools console.\n\n> [!WARNING]\n> Using the verbose format is not recommended. I have yet to see a translation service and software that supports this format out of the box. Stick with the simple format when you can.\n\n## Build Integrations\n\nTo use the custom messages file format, you'll need to use `@wxt-dev/i18n/build` to transform the custom format to the one expected by browsers.\n\n### WXT\n\nSee [Installation with WXT](#with-wxt).\n\nBut TLDR, all you need is:\n\n```ts\n// wxt.config.ts\nexport default defineConfig({\n  modules: ['@wxt-dev/i18n/module'],\n});\n```\n\nTypes are generated whenever you run `wxt prepare` or another build command.\n\n### Custom\n\nIf you're not using WXT, you'll have to pre-process the localization files yourself. Here's a basic script to generate the `_locales/.../messages.json` and `wxt-i18n-structure.d.ts` files:\n\n```ts\n// build-i18n.js\nimport {\n  parseMessagesFile,\n  generateChromeMessagesFile,\n  generateTypeFile,\n} from '@wxt-dev/i18n/build';\n\n// Read your localization files\nconst messages = {\n  en: await parseMessagesFile('path/locales/en.yml'),\n  de: await parseMessagesFile('path/locales/de.yml'),\n  // ...\n};\n\n// Generate JSON files for the extension\nawait generateChromeMessagesFile('dist/_locales/en/messages.json', messages.en);\nawait generateChromeMessagesFile('dist/_locales/de/messages.json', messages.de);\n// ...\n\n// Generate a types file based on your default_locale\nawait generateTypeFile('wxt-i18n-structure.d.ts', messages.en);\n```\n\nThen run the script:\n\n```sh\nnode generate-i18n.js\n```\n\nIf your build tool has a dev mode, you'll also want to rerun the script whenever you change a localization file.\n\n#### Type Safety\n\nOnce you've generated `wxt-i18n-structure.d.ts` (see the [Custom](#custom) section), you can use it to pass the generated type into `createI18n`:\n\n```ts\nimport type { WxtI18nStructure } from './wxt-i18n-structure';\n\nexport const i18n = createI18n<WxtI18nStructure>();\n```\n\nAnd just like that, you have type safety!\n\n## Editor Support\n\nFor better DX, you can configure your editor with plugins and extensions.\n\n### VS Code\n\nThe [I18n Ally Extension](https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally) adds several features to VS Code:\n\n- Go to translation definition\n- Inline previews of text\n- Hover to see other translations\n\nYou'll need to configure it the extension so it knows where your localization files are and what function represents getting a translation:\n\n`.vscode/i18n-ally-custom-framework.yml`:\n\n```yml\n# An array of strings which contain Language Ids defined by VS Code\n# You can check available language ids here: https://code.visualstudio.com/docs/languages/identifiers\nlanguageIds:\n  - typescript\n  - typescriptreact\n\n# Look for t(\"...\")\nusageMatchRegex:\n  - \"[^\\\\w\\\\d]t\\\\(['\\\"`]({key})['\\\"`]\"\n\n# Disable other built-in i18n ally frameworks\nmonopoly: true\n```\n\n`.vscode/settings.json`:\n\n```json\n{\n  \"i18n-ally.localesPaths\": [\"src/locales\"],\n  \"i18n-ally.keystyle\": \"nested\"\n}\n```\n\n### Zed\n\nAs of time of writing, Aug 18, 2024, no extensions exist for Zed to add I18n support.\n\n### Jetbrains IDEs\n\nInstall the [I18n Ally plugin](https://plugins.jetbrains.com/plugin/17212-i18n-ally). The docs are limited around their Jetbrains support, but you'll probably need to configure the plugin similar to [VS Code](#vs-code)... Not sure where the files go though.\n\nPlease open a PR if you figure it out!\n","readmeFilename":"README.md"}