useRuleChainI18n.ts
1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import { RuleNodeTypeEnum } from '../packages/index.type';
import {
ActionNodeType,
EnrichmentNodeType,
EntryNodeType,
ExternalNodeType,
FilterNodeType,
FlowNodeType,
TransformationNodeType,
} from '../types/node';
import { useI18n } from '/@/hooks/web/useI18n';
type PlaceholderType = 'choose' | 'input';
interface RuleNodeWidthNodeType {
[RuleNodeTypeEnum.ACTION]: ActionNodeType;
[RuleNodeTypeEnum.ENRICHMENT]: EnrichmentNodeType;
[RuleNodeTypeEnum.ENTRY]: EntryNodeType;
[RuleNodeTypeEnum.EXTERNAL]: ExternalNodeType;
[RuleNodeTypeEnum.FILTER]: FilterNodeType;
[RuleNodeTypeEnum.FLOW]: FlowNodeType;
[RuleNodeTypeEnum.TRANSFORMATION]: TransformationNodeType;
}
export function useRuleChainI18n<T extends RuleNodeTypeEnum>(
category: Lowercase<`${T}`>,
node: Uncapitalize<RuleNodeWidthNodeType[T]>
) {
const { t, ...reset } = useI18n();
function tPlaceholder(field: string, type: PlaceholderType = 'input') {
return `${t(`common.${type}Text`)}${tLabel(field)}`;
}
function tLabel(field: string) {
return t(`rule.chain.${category}.${node}.fields.${field}`);
}
return {
...reset,
t,
tLabel,
tPlaceholder,
};
}