@codeborne/i18n-json (英语)
简单的框架中和 json 翻译,没有依赖性.
npm install @codeborne/i18n-json
见 样本 如何构建您的翻译文件.
该格式还得到以下支持: 翻译工具图形界面。 。 。 .
使用量
在您的项目中创建 i18n.ts 用于进口的:
import langs from '../i18n/langs.json'
import {init} from '@codeborne/i18n-json'
export * from '@codeborne/i18n-json'
export async function initTranslations() {
await init({langs})
}
那就打电话 await initTranslations() 在索引.ts中加载所选语言文件.
要翻译一个密钥,呼叫 _('your.translate.key')
或用替换: _('users.hello', {name: 'World'})
多元字符串也被支持: _('trees', {count: 1}),对于英语来说,它可能看起来像:
"trees": "You have {count|one:# tree|other:# trees}" 俄语是:
"trees": "У вас есть {count|one:одно дерево|few:# дерева|many:# деревьев}"。 。 。 .
由浏览器提供的多键 Intl.PluralRules 为语言.
更多例子见测试.
框架
库体非常小,具有零依赖性并具有框架不可知性. 你可以用到斯维尔特,反应,Vue或其他东西.
如果使用 SPA 框架并想要在"飞行"上切换语言(不重新加载页面),则需要添加一个
小包装 _ 函数.
例如,在Svelte中,您会使用商店设置/检索函数,然后将其作为 $_()。 。 。 .
后汇编步骤
您可以在构建时将默认 lang 中缺失的密钥/ 值添加到其它所有文件, 从而合并翻译文件, 而不需要在运行时对未翻译的密钥进行倒置 .
i18n-compile <srcDir> <dstDir>
然后在prod模式下禁用动态回落到默认状态,例如. await init({langs, fallbackToDefault: import.meta.env.DEV})。 。 。 .