国际化
可根据用户语言动态选择语言包或者创建应用时手动指定语言
创建文件
文件结构为:
.
├─ src
│ └─ i18n
│ ├─ index.ts
│ └─ locales
│ ├─ index.ts
│ ├─ zh-cn.ts
│ └─ en-us.ts
└─ package.json
注册
typescript
import { I18n } from '@aomex/core';
export const zh = I18n.define({
hello: '你好,{{name}}',
button: {
ok: "确定"
cancel: "取消"
}
});
typescript
import { I18n } from '@aomex/core';
import { zh } from './zh';
export const en = I18n.satisfies(zh).define({
hello: 'Hello, {{name}}',
button: {
ok: "OK"
cancel: "Cancel"
}
});
typescript
import { zh } from './zh';
import { en } from './en';
export const resources = {
zh_CN: zh,
en_US: en,
};
初始化
typescript
import { I18n } from '@aomex/core';
import { resources } from './locales';
export const i18n = new I18n({
resources,
defaultLanguage: 'zh_CN',
});
// 检查不同语言包的缺失字段(相对于默认语言)
export type I18nMissingKeys = typeof i18n.missingKeys;
翻译
配置i18n后,输出文字不再硬编码,而是通过翻译功能自动处理
typescript
i18n.t('button.ok');
i18n.t('hello', { name: '树先生!' });