feat(common): add common.utils.intl API

This commit is contained in:
liujuping 2024-01-11 10:37:12 +08:00 committed by 林熠
parent a00c5c9b60
commit a7d3996fa2
4 changed files with 29 additions and 11 deletions

View File

@ -145,6 +145,22 @@ const { intl, getLocale, setLocale } = common.utils.createIntl({
``` ```
#### intl
i18n 转换方法
```typescript
/**
* i18n 转换方法
*/
intl(data: IPublicTypeI18nData | string, params?: object): string;
```
##### 示例
```
const title = common.utils.intl(node.title)
```
### skeletonCabin ### skeletonCabin
#### Workbench #### Workbench
编辑器框架 View 编辑器框架 View

View File

@ -3,6 +3,7 @@ import { IntlMessageFormat } from 'intl-messageformat';
import { globalLocale } from './global-locale'; import { globalLocale } from './global-locale';
import { isI18nData } from '@alilc/lowcode-utils'; import { isI18nData } from '@alilc/lowcode-utils';
import { observer } from '../utils'; import { observer } from '../utils';
import { IPublicTypeI18nData } from '@alilc/lowcode-types';
function generateTryLocales(locale: string) { function generateTryLocales(locale: string) {
const tries = [locale, locale.replace('-', '_')]; const tries = [locale, locale.replace('-', '_')];
@ -26,18 +27,9 @@ function injectVars(msg: string, params: any, locale: string): string {
} }
const formater = new IntlMessageFormat(msg, locale); const formater = new IntlMessageFormat(msg, locale);
return formater.format(params as any) as string; return formater.format(params as any) as string;
/*
return template.replace(/({\w+})/g, (_, $1) => {
const key = (/\d+/.exec($1) || [])[0] as any;
if (key && params[key] != null) {
return params[key];
}
return $1;
}); */
} }
export function intl(data: any, params?: object): ReactNode { export function intl(data: IPublicTypeI18nData | string, params?: object): ReactNode {
if (!isI18nData(data)) { if (!isI18nData(data)) {
return data; return data;
} }

View File

@ -26,6 +26,7 @@ import {
IPublicApiCommonEditorCabin, IPublicApiCommonEditorCabin,
IPublicModelDragon, IPublicModelDragon,
IPublicModelSettingField, IPublicModelSettingField,
IPublicTypeI18nData,
} from '@alilc/lowcode-types'; } from '@alilc/lowcode-types';
import { import {
SettingField as InnerSettingField, SettingField as InnerSettingField,
@ -261,6 +262,10 @@ class Utils implements IPublicApiCommonUtils {
} { } {
return innerCreateIntl(instance); return innerCreateIntl(instance);
} }
intl(data: IPublicTypeI18nData | string, params?: object): any {
return innerIntl(data, params);
}
} }
class EditorCabin implements IPublicApiCommonEditorCabin { class EditorCabin implements IPublicApiCommonEditorCabin {

View File

@ -1,6 +1,6 @@
import { Component, ReactNode } from 'react'; import { Component, ReactNode } from 'react';
import { IPublicTypeNodeSchema, IPublicTypeTitleContent } from '../type'; import { IPublicTypeI18nData, IPublicTypeNodeSchema, IPublicTypeTitleContent } from '../type';
import { IPublicEnumTransitionType } from '../enum'; import { IPublicEnumTransitionType } from '../enum';
export interface IPublicApiCommonUtils { export interface IPublicApiCommonUtils {
@ -69,6 +69,11 @@ export interface IPublicApiCommonUtils {
getLocale(): string; getLocale(): string;
setLocale(locale: string): void; setLocale(locale: string): void;
}; };
/**
* i18n
*/
intl(data: IPublicTypeI18nData | string, params?: object): string;
} }
export interface IPublicApiCommonSkeletonCabin { export interface IPublicApiCommonSkeletonCabin {