Skip to content

国际化

可根据用户语言动态选择语言包或者创建应用时手动指定语言

创建文件

文件结构为:

.
├─ 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: '树先生!' });