{"_id":"@aluni/plugin-intl","_rev":"7-1f759c31cc4482d8680da323c8e66597","name":"@aluni/plugin-intl","dist-tags":{"canary":"0.0.3-canary.2","latest":"0.0.5"},"versions":{"0.0.1-canary.0":{"name":"@aluni/plugin-intl","version":"0.0.1-canary.0","description":"@aluni/plugin-intl","homepage":"https://gitee.com/congxiaochen/inula/tree/master/packages/plugin-intl#readme","bugs":{"url":"https://gitee.com/congxiaochen/inula/issues"},"repository":{"type":"git","url":"https://gitee.com/congxiaochen/inula"},"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@umijs/bundler-utils":"4.0.88","@umijs/utils":"4.0.88","event-emitter":"~0.3.5","inula-intl":"^0.0.3"},"devDependencies":{"@aluni/types":"0.0.1-canary.0"},"publishConfig":{"access":"public"},"authors":["xiaohuoni <xiaohuoni@gmail.com> (https://github.com/xiaohuoni)"],"scripts":{"build":"inula-scripts father build","build:deps":"inula-scripts bundleDeps","dev":"inula-scripts father dev"},"_id":"@aluni/plugin-intl@0.0.1-canary.0","_integrity":"sha512-ZzXFk4tvRSk2vw0IhaCw//kHBrJv7aUlAuDXffpZ7alK3dw8Fv1frNN9XEOS/fxOH6B8b9B3uRe90cT2cGy5MA==","_resolved":"/private/var/folders/wr/z6tdl7jj2qn27855nxqgt1mw0000gn/T/4e52a036d88bb6fc7b6e309a3eb8a927/aluni-plugin-intl-0.0.1-canary.0.tgz","_from":"file:aluni-plugin-intl-0.0.1-canary.0.tgz","_nodeVersion":"19.7.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-ZzXFk4tvRSk2vw0IhaCw//kHBrJv7aUlAuDXffpZ7alK3dw8Fv1frNN9XEOS/fxOH6B8b9B3uRe90cT2cGy5MA==","shasum":"d0649b2b337943b925cb914efb64af832561eb5c","tarball":"https://registry.npmjs.org/@aluni/plugin-intl/-/plugin-intl-0.0.1-canary.0.tgz","fileCount":16,"unpackedSize":36534,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDx5bw2oZeUNVH5pRzNB9s2yLnzb3585vIIUK//1FbYYQIhAMRV37dC37vWYCoBHjlL/ChFU4B2Yw8E5ciipYavCMbP"}]},"_npmUser":{"name":"xiaohuoni","email":"448627663@qq.com"},"directories":{},"maintainers":[{"name":"xiaohuoni","email":"448627663@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-intl_0.0.1-canary.0_1701165159640_0.012059154707567021"},"_hasShrinkwrap":false},"0.0.1-canary.1":{"name":"@aluni/plugin-intl","version":"0.0.1-canary.1","description":"@aluni/plugin-intl","homepage":"https://gitee.com/congxiaochen/inula/tree/master/packages/plugin-intl#readme","bugs":{"url":"https://gitee.com/congxiaochen/inula/issues"},"repository":{"type":"git","url":"https://gitee.com/congxiaochen/inula"},"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@umijs/bundler-utils":"4.0.88","@umijs/utils":"4.0.88","event-emitter":"~0.3.5","inula-intl":"^0.0.3"},"devDependencies":{"@aluni/types":"0.0.1-canary.1"},"publishConfig":{"access":"public"},"authors":["xiaohuoni <xiaohuoni@gmail.com> (https://github.com/xiaohuoni)"],"scripts":{"build":"inula-scripts father build","build:deps":"inula-scripts bundleDeps","dev":"inula-scripts father dev"},"readme":"# @aluni/plugin-intl\n\nSee our website [inula](https://inula.cn) for more information.\n\n[Inula-intl](https://docs.openinula.net/apis/Inula-intl)是openinula提供的生态组件，主要提供了国际化功能，涵盖了基本的国际化组件和钩子函数，便于用户构建具备国际化能力的前端界面。\n\n在Inula-intl中，无论是组件或者Hooks，其目的就是获取当前应用程序的国际化实例，该实例提供了处理多语言文本消息、日期、时间等功能。\n\n\n## 配置插件\n\n您可以在 `.inularc.ts` 中配置国际化插件。默认值如下：\n\n```ts\nexport default {\n  intl: {\n    default: 'zh-CN',\n    localeFolder: 'locals',\n  },\n};\n```\n\n配置的详细介绍如下：\n\n| 配置项 | 类型 | 默认值 | 介绍 |\n| --- | --- | --- | --- |\n| `default` | `String` | `zh-CN` | 项目**默认语言**。当检测不到具体语言时，使用 `default` 设置的默认语言。 |\n| `localeFolder` | `String` | `locals` |  指定国际化文件存放路径 |\n\n## 使用方式\n\n默认会将 src/locals 下的文件挂载为国际化文件，可以通过 localeFolder 配置来指定存放目录\n\n```tsx\nimport { addLocale, getAllLocales, getLocale, setLocale, useIntl } from 'inula';\n\nconst Page = () => {\n  const intl = useIntl();\n  const locals = getAllLocales();\n  return (\n    <div>\n      <p>\n        {getLocale()}:{intl.formatMessage({ id: 'navBar.lang' })}\n      </p>\n      <button\n        onClick={() => {\n          setLocale(locals[Math.floor(Math.random() * locals.length)], false);\n        }}\n      >\n        换语言啦\n      </button>\n      <p>写一个不存在的 id :{intl.formatMessage({ id: 'hello.inula' })}</p>\n      <button\n        onClick={() => {\n          setLocale(locals[Math.floor(Math.random() * locals.length)], false);\n          addLocale(\n            'zh-CN',\n            {\n              'hello.inula': '你好，OpenInula',\n            },\n          );\n          setLocale('zh-CN',false);\n        }}\n      >\n        增加一个中文的 `id: 'hello.inula'`，并将当前语言设置成中文\n      </button>\n    </div>\n  );\n};\n\nexport default Page;\n```\n\n## Api\n\n### useIntl\n\n获取当前应用程序的I18n实例，详见 [useIntl](https://docs.openinula.net/apis/Inula-intl#useintl)\n\n\n### `addLocale` 动态添加多语言支持\n\n无需创建并编写单独的多语言文件，使用 `addLocale()` 接口可以在运行时动态添加语言支持。它接受三个参数：\n\n| 参数      | 类型     | 介绍                          |\n| --------- | -------- | ----------------------------- |\n| `name`    | `String` | 多语言的 Key                  |\n| `message` | `Object` | 多语言的内容对象              |\n\n例如，您想要动态引入繁体中文的多语言支持，可以编写代码如下：\n\n```ts\nimport { addLocale } from 'inula';\n\naddLocale(\n  'zh-TW',\n  {\n    welcome: '歡迎！',\n  },\n);\n```\n\n### `getAllLocales` 获取多语言列表\n\n通过 `getAllLocales()` 接口可以获取当前所有多语言选项的数组，包括通过 `addLocale()` 方法添加的多语言选项。该接口默认会在 `src/locales` 目录下寻找形如 `zh-CN.(js|json|ts)` 的文件，并返回多语言的 Key。\n\n```ts\nimport { getAllLocales } from 'inula';\n\ngetAllLocales();\n// [en-US, zh-CN, ...]\n```\n\n### `getLocale` 获取当前选择的语言\n\n通过 `getLocale()` 接口可以获取当前选择的语言：\n\n```ts\nimport { getLocale } from 'inula';\n\ngetLocale();\n// zh-CN\n```\n\n### `setLocale` 设置语言\n\n通过 `setLocale()` 接口可以使用编程的方法动态设置当前的语言。它有两个参数：\n\n| 参数         | 类型      | 介绍                                       |\n| ------------ | --------- | ------------------------------------------ |\n| `lang`       | `String`  | 切换到的语言                               |\n| `realReload` | `Boolean` | 切换时是否刷新页面，默认为 `true` 刷新页面 |\n\n```ts\nimport { setLocale } from 'inula';\n\n// 切换时刷新页面\nsetLocale('en-US');\n\n// 切换时不刷新页面\nsetLocale('en-US', false);\n```\n\n## 生成器\n\n命令 `inula g intl filename` 会生成一个国际化文件。\n\n###  [试验性功能] 使用 AIGC 对国际化文本进行翻译 --create\n\n命令 `inula g intl --create` ，会根据用户选择，将默认的国际化文本翻译成指定语言并生成文件。\n","readmeFilename":"README.md","_id":"@aluni/plugin-intl@0.0.1-canary.1","_integrity":"sha512-+tK7ao/bbWR5oG5/hpOfsgCWU0kzep+W6ObgBC+h6IyW4q9Qe0YqGcCrnHrxqdgCslT4EA0oO4dh01r6OflNJw==","_resolved":"/private/var/folders/wr/z6tdl7jj2qn27855nxqgt1mw0000gn/T/5a9d76ecba8023bdd9f75016b4408e29/aluni-plugin-intl-0.0.1-canary.1.tgz","_from":"file:aluni-plugin-intl-0.0.1-canary.1.tgz","_nodeVersion":"19.7.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-+tK7ao/bbWR5oG5/hpOfsgCWU0kzep+W6ObgBC+h6IyW4q9Qe0YqGcCrnHrxqdgCslT4EA0oO4dh01r6OflNJw==","shasum":"f86c1ed13fe8bb1b473414eaac4c580ed505c7bb","tarball":"https://registry.npmjs.org/@aluni/plugin-intl/-/plugin-intl-0.0.1-canary.1.tgz","fileCount":16,"unpackedSize":36534,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1zztMlZQZGDr1Z9wVg/arD3TW0OjYBqNpctuInfzKyAIhAKDfcU19K4jGTJxjjcsCrU2y3nioRVM9FEKvvJQw/tbq"}]},"_npmUser":{"name":"xiaohuoni","email":"448627663@qq.com"},"directories":{},"maintainers":[{"name":"xiaohuoni","email":"448627663@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-intl_0.0.1-canary.1_1701165330826_0.9774328638501448"},"_hasShrinkwrap":false},"0.0.1":{"name":"@aluni/plugin-intl","version":"0.0.1","description":"@aluni/plugin-intl","homepage":"https://gitee.com/congxiaochen/inula/tree/master/packages/plugin-intl#readme","bugs":{"url":"https://gitee.com/congxiaochen/inula/issues"},"repository":{"type":"git","url":"https://gitee.com/congxiaochen/inula"},"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@umijs/bundler-utils":"4.0.88","@umijs/utils":"4.0.88","event-emitter":"~0.3.5","inula-intl":"^0.0.3"},"devDependencies":{"@aluni/types":"0.0.1"},"publishConfig":{"access":"public"},"authors":["xiaohuoni <xiaohuoni@gmail.com> (https://github.com/xiaohuoni)"],"scripts":{"build":"inula-scripts father build","build:deps":"inula-scripts bundleDeps","dev":"inula-scripts father dev"},"_id":"@aluni/plugin-intl@0.0.1","_integrity":"sha512-pYmTTrXKMih0NM413VZMDSWTBlOwNKEfDvG1L8koB1TQcz8nDCvHqLcuG9EW1rQepDP7yi0AjaH/Zi67AqVSZQ==","_resolved":"/private/var/folders/wr/z6tdl7jj2qn27855nxqgt1mw0000gn/T/0096eb800450b5b5a0347aacfcb87b29/aluni-plugin-intl-0.0.1.tgz","_from":"file:aluni-plugin-intl-0.0.1.tgz","_nodeVersion":"19.7.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-pYmTTrXKMih0NM413VZMDSWTBlOwNKEfDvG1L8koB1TQcz8nDCvHqLcuG9EW1rQepDP7yi0AjaH/Zi67AqVSZQ==","shasum":"bee0df4ea46ad503c80995ceb57a0cf9bc129c89","tarball":"https://registry.npmjs.org/@aluni/plugin-intl/-/plugin-intl-0.0.1.tgz","fileCount":16,"unpackedSize":36497,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXdtQU6oDuttdGXADHSOEwLjSTd8YC9RYgz78erh4nMQIhALU+hs5hIztYYUfeM8TtYPSI6LPwVVHWBIqssrnyvZkr"}]},"_npmUser":{"name":"xiaohuoni","email":"448627663@qq.com"},"directories":{},"maintainers":[{"name":"xiaohuoni","email":"448627663@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-intl_0.0.1_1701686694085_0.5203579650196031"},"_hasShrinkwrap":false},"0.0.2":{"name":"@aluni/plugin-intl","version":"0.0.2","description":"@aluni/plugin-intl","homepage":"https://gitee.com/congxiaochen/inula/tree/master/packages/plugin-intl#readme","bugs":{"url":"https://gitee.com/congxiaochen/inula/issues"},"repository":{"type":"git","url":"https://gitee.com/congxiaochen/inula"},"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@umijs/bundler-utils":"4.0.88","@umijs/utils":"4.0.88","event-emitter":"~0.3.5","inula-intl":"^0.0.3"},"devDependencies":{"@aluni/types":"0.0.2"},"publishConfig":{"access":"public"},"authors":["xiaohuoni <xiaohuoni@gmail.com> (https://github.com/xiaohuoni)"],"scripts":{"build":"inula-scripts father build","build:deps":"inula-scripts bundleDeps","dev":"inula-scripts father dev"},"_id":"@aluni/plugin-intl@0.0.2","_integrity":"sha512-mZkExtZ+cX2I1Xxdt+pTQGPFQurZL4V7s+K5WKbAHR0Os1OJ848g2iT/TmNf6pXGf92g+Elbq5Jg1PmSf8yAwQ==","_resolved":"/private/var/folders/wr/z6tdl7jj2qn27855nxqgt1mw0000gn/T/970c8af1ea4831ca41a9b2b180fd03d2/aluni-plugin-intl-0.0.2.tgz","_from":"file:aluni-plugin-intl-0.0.2.tgz","_nodeVersion":"19.7.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-mZkExtZ+cX2I1Xxdt+pTQGPFQurZL4V7s+K5WKbAHR0Os1OJ848g2iT/TmNf6pXGf92g+Elbq5Jg1PmSf8yAwQ==","shasum":"ee94b5583e20dca923182999fbb11626ac54ca65","tarball":"https://registry.npmjs.org/@aluni/plugin-intl/-/plugin-intl-0.0.2.tgz","fileCount":16,"unpackedSize":36497,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+zoq2wR9+pjlrITGiWKZNLQsvS87jb/ukIJSUc/13MgIgEClnlJijAXCjXngLA+b16Y+dGTvr09ru02rxAzl2BAY="}]},"_npmUser":{"name":"xiaohuoni","email":"448627663@qq.com"},"directories":{},"maintainers":[{"name":"xiaohuoni","email":"448627663@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-intl_0.0.2_1704869773052_0.0726990917969561"},"_hasShrinkwrap":false},"0.0.3":{"name":"@aluni/plugin-intl","version":"0.0.3","description":"@aluni/plugin-intl","homepage":"https://gitee.com/congxiaochen/inula/tree/master/packages/plugin-intl#readme","bugs":{"url":"https://gitee.com/congxiaochen/inula/issues"},"repository":{"type":"git","url":"https://gitee.com/congxiaochen/inula"},"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@umijs/bundler-utils":"4.0.88","@umijs/utils":"4.0.88","event-emitter":"~0.3.5","inula-intl":"^0.0.3"},"devDependencies":{"@aluni/types":"0.0.3"},"publishConfig":{"access":"public"},"authors":["xiaohuoni <xiaohuoni@gmail.com> (https://github.com/xiaohuoni)"],"scripts":{"build":"inula-scripts father build","build:deps":"inula-scripts bundleDeps","dev":"inula-scripts father dev"},"_id":"@aluni/plugin-intl@0.0.3","_integrity":"sha512-1RZJR5JAZNnLJwxfY0Yq9OOZhz7bq+kyUR7u9N22a9DJqDqurss+TU4eoWtwZcuxfB0psPxOBKGiV1cFuWq4RQ==","_resolved":"/private/var/folders/wr/z6tdl7jj2qn27855nxqgt1mw0000gn/T/cbcec386366f80dcc129dc9510f92872/aluni-plugin-intl-0.0.3.tgz","_from":"file:aluni-plugin-intl-0.0.3.tgz","_nodeVersion":"19.7.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-1RZJR5JAZNnLJwxfY0Yq9OOZhz7bq+kyUR7u9N22a9DJqDqurss+TU4eoWtwZcuxfB0psPxOBKGiV1cFuWq4RQ==","shasum":"d9d16299df07c3ca7f93bf1810b64f883e95ffd9","tarball":"https://registry.npmjs.org/@aluni/plugin-intl/-/plugin-intl-0.0.3.tgz","fileCount":16,"unpackedSize":36497,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBPVYW970KkGYQr1V+DDgN/dTZkhEKXifNStQTEgIzJsAiEAouaXXIR9q24mAR4PHybb95cczXzYZftWSlWvfTX4u5w="}]},"_npmUser":{"name":"xiaohuoni","email":"448627663@qq.com"},"directories":{},"maintainers":[{"name":"xiaohuoni","email":"448627663@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-intl_0.0.3_1704871325649_0.40737581088747743"},"_hasShrinkwrap":false},"0.0.3-canary.2":{"name":"@aluni/plugin-intl","version":"0.0.3-canary.2","description":"@aluni/plugin-intl","homepage":"https://gitee.com/congxiaochen/inula/tree/master/packages/plugin-intl#readme","bugs":{"url":"https://gitee.com/congxiaochen/inula/issues"},"repository":{"type":"git","url":"https://gitee.com/congxiaochen/inula"},"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@umijs/bundler-utils":"4.0.88","@umijs/utils":"4.0.88","event-emitter":"~0.3.5","inula-intl":"^0.0.3"},"devDependencies":{"@aluni/types":"0.0.3-canary.2"},"publishConfig":{"access":"public"},"authors":["xiaohuoni <xiaohuoni@gmail.com> (https://github.com/xiaohuoni)"],"scripts":{"build":"inula-scripts father build","build:deps":"inula-scripts bundleDeps","dev":"inula-scripts father dev"},"readme":"# @aluni/plugin-intl\n\nSee our website [inula](https://inula.cn) for more information.\n\n[Inula-intl](https://docs.openinula.net/apis/Inula-intl)是openinula提供的生态组件，主要提供了国际化功能，涵盖了基本的国际化组件和钩子函数，便于用户构建具备国际化能力的前端界面。\n\n在Inula-intl中，无论是组件或者Hooks，其目的就是获取当前应用程序的国际化实例，该实例提供了处理多语言文本消息、日期、时间等功能。\n\n\n## 配置插件\n\n您可以在 `.inularc.ts` 中配置国际化插件。默认值如下：\n\n```ts\nexport default {\n  intl: {\n    default: 'zh-CN',\n    localeFolder: 'locals',\n  },\n};\n```\n\n配置的详细介绍如下：\n\n| 配置项 | 类型 | 默认值 | 介绍 |\n| --- | --- | --- | --- |\n| `default` | `String` | `zh-CN` | 项目**默认语言**。当检测不到具体语言时，使用 `default` 设置的默认语言。 |\n| `localeFolder` | `String` | `locals` |  指定国际化文件存放路径 |\n\n## 使用方式\n\n默认会将 src/locals 下的文件挂载为国际化文件，可以通过 localeFolder 配置来指定存放目录\n\n```tsx\nimport { addLocale, getAllLocales, getLocale, setLocale, useIntl } from 'inula';\n\nconst Page = () => {\n  const intl = useIntl();\n  const locals = getAllLocales();\n  return (\n    <div>\n      <p>\n        {getLocale()}:{intl.formatMessage({ id: 'navBar.lang' })}\n      </p>\n      <button\n        onClick={() => {\n          setLocale(locals[Math.floor(Math.random() * locals.length)], false);\n        }}\n      >\n        换语言啦\n      </button>\n      <p>写一个不存在的 id :{intl.formatMessage({ id: 'hello.inula' })}</p>\n      <button\n        onClick={() => {\n          setLocale(locals[Math.floor(Math.random() * locals.length)], false);\n          addLocale(\n            'zh-CN',\n            {\n              'hello.inula': '你好，OpenInula',\n            },\n          );\n          setLocale('zh-CN',false);\n        }}\n      >\n        增加一个中文的 `id: 'hello.inula'`，并将当前语言设置成中文\n      </button>\n    </div>\n  );\n};\n\nexport default Page;\n```\n\n## Api\n\n### useIntl\n\n获取当前应用程序的I18n实例，详见 [useIntl](https://docs.openinula.net/apis/Inula-intl#useintl)\n\n\n### `addLocale` 动态添加多语言支持\n\n无需创建并编写单独的多语言文件，使用 `addLocale()` 接口可以在运行时动态添加语言支持。它接受三个参数：\n\n| 参数      | 类型     | 介绍                          |\n| --------- | -------- | ----------------------------- |\n| `name`    | `String` | 多语言的 Key                  |\n| `message` | `Object` | 多语言的内容对象              |\n\n例如，您想要动态引入繁体中文的多语言支持，可以编写代码如下：\n\n```ts\nimport { addLocale } from 'inula';\n\naddLocale(\n  'zh-TW',\n  {\n    welcome: '歡迎！',\n  },\n);\n```\n\n### `getAllLocales` 获取多语言列表\n\n通过 `getAllLocales()` 接口可以获取当前所有多语言选项的数组，包括通过 `addLocale()` 方法添加的多语言选项。该接口默认会在 `src/locales` 目录下寻找形如 `zh-CN.(js|json|ts)` 的文件，并返回多语言的 Key。\n\n```ts\nimport { getAllLocales } from 'inula';\n\ngetAllLocales();\n// [en-US, zh-CN, ...]\n```\n\n### `getLocale` 获取当前选择的语言\n\n通过 `getLocale()` 接口可以获取当前选择的语言：\n\n```ts\nimport { getLocale } from 'inula';\n\ngetLocale();\n// zh-CN\n```\n\n### `setLocale` 设置语言\n\n通过 `setLocale()` 接口可以使用编程的方法动态设置当前的语言。它有两个参数：\n\n| 参数         | 类型      | 介绍                                       |\n| ------------ | --------- | ------------------------------------------ |\n| `lang`       | `String`  | 切换到的语言                               |\n| `realReload` | `Boolean` | 切换时是否刷新页面，默认为 `true` 刷新页面 |\n\n```ts\nimport { setLocale } from 'inula';\n\n// 切换时刷新页面\nsetLocale('en-US');\n\n// 切换时不刷新页面\nsetLocale('en-US', false);\n```\n\n## 生成器\n\n命令 `inula g intl filename` 会生成一个国际化文件。\n\n###  [试验性功能] 使用 AIGC 对国际化文本进行翻译 --create\n\n命令 `inula g intl --create` ，会根据用户选择，将默认的国际化文本翻译成指定语言并生成文件。\n","readmeFilename":"README.md","_id":"@aluni/plugin-intl@0.0.3-canary.2","_integrity":"sha512-we0C1gUI04vbLW6fO+XGWN+kHAxErO67JM0Q/Tnga4+wNFLeIYxRYLUXMtiJTwbnNiVnFIznn7EXXYVo4DboYg==","_resolved":"/private/var/folders/wr/z6tdl7jj2qn27855nxqgt1mw0000gn/T/ea8c1aa9f2802bc9fbcc6a7e5b3167e7/aluni-plugin-intl-0.0.3-canary.2.tgz","_from":"file:aluni-plugin-intl-0.0.3-canary.2.tgz","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-we0C1gUI04vbLW6fO+XGWN+kHAxErO67JM0Q/Tnga4+wNFLeIYxRYLUXMtiJTwbnNiVnFIznn7EXXYVo4DboYg==","shasum":"72900237a3e03a6416feab155979ebe4098d453a","tarball":"https://registry.npmjs.org/@aluni/plugin-intl/-/plugin-intl-0.0.3-canary.2.tgz","fileCount":16,"unpackedSize":36531,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnMDfTzBwXnCPtF1KMvJqMAO+//KvIXQvpqO/TJlYsAwIgEr2iXAWtZ07Bx4UocCyVDCl4qsfgeIaYEt5QP3YD87k="}]},"_npmUser":{"name":"xiaohuoni","email":"448627663@qq.com"},"directories":{},"maintainers":[{"name":"xiaohuoni","email":"448627663@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-intl_0.0.3-canary.2_1712485844300_0.7350178890686305"},"_hasShrinkwrap":false},"0.0.4":{"name":"@aluni/plugin-intl","version":"0.0.4","description":"@aluni/plugin-intl","homepage":"https://gitee.com/congxiaochen/inula/tree/master/packages/plugin-intl#readme","bugs":{"url":"https://gitee.com/congxiaochen/inula/issues"},"repository":{"type":"git","url":"https://gitee.com/congxiaochen/inula"},"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@umijs/bundler-utils":"4.0.88","@umijs/utils":"4.0.88","event-emitter":"~0.3.5","inula-intl":"^0.0.3"},"devDependencies":{"@aluni/types":"0.0.4"},"publishConfig":{"access":"public"},"authors":["xiaohuoni <xiaohuoni@gmail.com> (https://github.com/xiaohuoni)"],"scripts":{"build":"inula-scripts father build","build:deps":"inula-scripts bundleDeps","dev":"inula-scripts father dev"},"_id":"@aluni/plugin-intl@0.0.4","_integrity":"sha512-aP2KTU9xP9wdhyFFoFMpgX8NduVz33BZv7mi/4diUnepcbKsOw+fHZ/oRdbwNpEbAhplRKvKHLPqIAJ6FPQUqQ==","_resolved":"/private/var/folders/wr/z6tdl7jj2qn27855nxqgt1mw0000gn/T/0c457db96adc83ab1bc61527d43802d3/aluni-plugin-intl-0.0.4.tgz","_from":"file:aluni-plugin-intl-0.0.4.tgz","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-aP2KTU9xP9wdhyFFoFMpgX8NduVz33BZv7mi/4diUnepcbKsOw+fHZ/oRdbwNpEbAhplRKvKHLPqIAJ6FPQUqQ==","shasum":"04c9d515f65975d39a0a70cddf563c180b59eee3","tarball":"https://registry.npmjs.org/@aluni/plugin-intl/-/plugin-intl-0.0.4.tgz","fileCount":16,"unpackedSize":36513,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHaEOShFmzj0lCk8OnIFN2LmHFs3LSsGem9GVDbJd/5IAiA3qSv+2B0BXaLegKXvk50yh0NlxdWD1s1LpUkMApql3A=="}]},"_npmUser":{"name":"xiaohuoni","email":"448627663@qq.com"},"directories":{},"maintainers":[{"name":"xiaohuoni","email":"448627663@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-intl_0.0.4_1712488127182_0.34043208251907564"},"_hasShrinkwrap":false},"0.0.5":{"name":"@aluni/plugin-intl","version":"0.0.5","description":"@aluni/plugin-intl","homepage":"https://gitee.com/congxiaochen/inula/tree/master/packages/plugin-intl#readme","bugs":{"url":"https://gitee.com/congxiaochen/inula/issues"},"repository":{"type":"git","url":"https://gitee.com/congxiaochen/inula"},"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@umijs/bundler-utils":"4.0.88","@umijs/utils":"4.0.88","event-emitter":"~0.3.5","inula-intl":"^0.0.3"},"devDependencies":{"@aluni/types":"0.0.5"},"publishConfig":{"access":"public"},"authors":["xiaohuoni <xiaohuoni@gmail.com> (https://github.com/xiaohuoni)"],"scripts":{"build":"inula-scripts father build","build:deps":"inula-scripts bundleDeps","dev":"inula-scripts father dev"},"_id":"@aluni/plugin-intl@0.0.5","_integrity":"sha512-wq0iv78DFUHmNaSoAIxirMXRYQVdxV7tsTMlW6Blq7Ecjexas73lhyYA7SoPr8WCzJYgJ/2J0COiS+ZaGohZDg==","_resolved":"/private/var/folders/wr/z6tdl7jj2qn27855nxqgt1mw0000gn/T/52c26d3e8f96ae3461def298904e9353/aluni-plugin-intl-0.0.5.tgz","_from":"file:aluni-plugin-intl-0.0.5.tgz","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-wq0iv78DFUHmNaSoAIxirMXRYQVdxV7tsTMlW6Blq7Ecjexas73lhyYA7SoPr8WCzJYgJ/2J0COiS+ZaGohZDg==","shasum":"eb1f0dd6d06fd8e81a91eb8daa9451056ed660ab","tarball":"https://registry.npmjs.org/@aluni/plugin-intl/-/plugin-intl-0.0.5.tgz","fileCount":16,"unpackedSize":36513,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDELiuZ1tQh7GXQhqh0LfSOI6GVzX5ea7O3MIOKvEkKMQIhAK0GD4iCJ1ma7fefSQhhmcZEZi5JsHwX/NvhLwYTXb4u"}]},"_npmUser":{"name":"xiaohuoni","email":"448627663@qq.com"},"directories":{},"maintainers":[{"name":"xiaohuoni","email":"448627663@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-intl_0.0.5_1712740405136_0.7888502903464298"},"_hasShrinkwrap":false}},"time":{"created":"2023-11-28T09:52:39.571Z","0.0.1-canary.0":"2023-11-28T09:52:39.832Z","modified":"2024-04-10T09:13:25.474Z","0.0.1-canary.1":"2023-11-28T09:55:30.989Z","0.0.1":"2023-12-04T10:44:54.248Z","0.0.2":"2024-01-10T06:56:13.234Z","0.0.3":"2024-01-10T07:22:05.810Z","0.0.3-canary.2":"2024-04-07T10:30:44.444Z","0.0.4":"2024-04-07T11:08:47.345Z","0.0.5":"2024-04-10T09:13:25.308Z"},"maintainers":[{"name":"xiaohuoni","email":"448627663@qq.com"}],"description":"@aluni/plugin-intl","homepage":"https://gitee.com/congxiaochen/inula/tree/master/packages/plugin-intl#readme","repository":{"type":"git","url":"https://gitee.com/congxiaochen/inula"},"bugs":{"url":"https://gitee.com/congxiaochen/inula/issues"},"license":"MIT","readme":"# @aluni/plugin-intl\n\nSee our website [inula](https://inula.cn) for more information.\n\n[Inula-intl](https://docs.openinula.net/apis/Inula-intl)是openinula提供的生态组件，主要提供了国际化功能，涵盖了基本的国际化组件和钩子函数，便于用户构建具备国际化能力的前端界面。\n\n在Inula-intl中，无论是组件或者Hooks，其目的就是获取当前应用程序的国际化实例，该实例提供了处理多语言文本消息、日期、时间等功能。\n\n\n## 配置插件\n\n您可以在 `.inularc.ts` 中配置国际化插件。默认值如下：\n\n```ts\nexport default {\n  intl: {\n    default: 'zh-CN',\n    localeFolder: 'locals',\n  },\n};\n```\n\n配置的详细介绍如下：\n\n| 配置项 | 类型 | 默认值 | 介绍 |\n| --- | --- | --- | --- |\n| `default` | `String` | `zh-CN` | 项目**默认语言**。当检测不到具体语言时，使用 `default` 设置的默认语言。 |\n| `localeFolder` | `String` | `locals` |  指定国际化文件存放路径 |\n\n## 使用方式\n\n默认会将 src/locals 下的文件挂载为国际化文件，可以通过 localeFolder 配置来指定存放目录\n\n```tsx\nimport { addLocale, getAllLocales, getLocale, setLocale, useIntl } from 'inula';\n\nconst Page = () => {\n  const intl = useIntl();\n  const locals = getAllLocales();\n  return (\n    <div>\n      <p>\n        {getLocale()}:{intl.formatMessage({ id: 'navBar.lang' })}\n      </p>\n      <button\n        onClick={() => {\n          setLocale(locals[Math.floor(Math.random() * locals.length)], false);\n        }}\n      >\n        换语言啦\n      </button>\n      <p>写一个不存在的 id :{intl.formatMessage({ id: 'hello.inula' })}</p>\n      <button\n        onClick={() => {\n          setLocale(locals[Math.floor(Math.random() * locals.length)], false);\n          addLocale(\n            'zh-CN',\n            {\n              'hello.inula': '你好，OpenInula',\n            },\n          );\n          setLocale('zh-CN',false);\n        }}\n      >\n        增加一个中文的 `id: 'hello.inula'`，并将当前语言设置成中文\n      </button>\n    </div>\n  );\n};\n\nexport default Page;\n```\n\n## Api\n\n### useIntl\n\n获取当前应用程序的I18n实例，详见 [useIntl](https://docs.openinula.net/apis/Inula-intl#useintl)\n\n\n### `addLocale` 动态添加多语言支持\n\n无需创建并编写单独的多语言文件，使用 `addLocale()` 接口可以在运行时动态添加语言支持。它接受三个参数：\n\n| 参数      | 类型     | 介绍                          |\n| --------- | -------- | ----------------------------- |\n| `name`    | `String` | 多语言的 Key                  |\n| `message` | `Object` | 多语言的内容对象              |\n\n例如，您想要动态引入繁体中文的多语言支持，可以编写代码如下：\n\n```ts\nimport { addLocale } from 'inula';\n\naddLocale(\n  'zh-TW',\n  {\n    welcome: '歡迎！',\n  },\n);\n```\n\n### `getAllLocales` 获取多语言列表\n\n通过 `getAllLocales()` 接口可以获取当前所有多语言选项的数组，包括通过 `addLocale()` 方法添加的多语言选项。该接口默认会在 `src/locales` 目录下寻找形如 `zh-CN.(js|json|ts)` 的文件，并返回多语言的 Key。\n\n```ts\nimport { getAllLocales } from 'inula';\n\ngetAllLocales();\n// [en-US, zh-CN, ...]\n```\n\n### `getLocale` 获取当前选择的语言\n\n通过 `getLocale()` 接口可以获取当前选择的语言：\n\n```ts\nimport { getLocale } from 'inula';\n\ngetLocale();\n// zh-CN\n```\n\n### `setLocale` 设置语言\n\n通过 `setLocale()` 接口可以使用编程的方法动态设置当前的语言。它有两个参数：\n\n| 参数         | 类型      | 介绍                                       |\n| ------------ | --------- | ------------------------------------------ |\n| `lang`       | `String`  | 切换到的语言                               |\n| `realReload` | `Boolean` | 切换时是否刷新页面，默认为 `true` 刷新页面 |\n\n```ts\nimport { setLocale } from 'inula';\n\n// 切换时刷新页面\nsetLocale('en-US');\n\n// 切换时不刷新页面\nsetLocale('en-US', false);\n```\n\n## 生成器\n\n命令 `inula g intl filename` 会生成一个国际化文件。\n\n###  [试验性功能] 使用 AIGC 对国际化文本进行翻译 --create\n\n命令 `inula g intl --create` ，会根据用户选择，将默认的国际化文本翻译成指定语言并生成文件。\n","readmeFilename":"README.md"}