diff --git a/src/components/config/VisualConfigEditor.tsx b/src/components/config/VisualConfigEditor.tsx index 7f41220..7fe3ebe 100644 --- a/src/components/config/VisualConfigEditor.tsx +++ b/src/components/config/VisualConfigEditor.tsx @@ -426,8 +426,24 @@ function PayloadRulesEditor({ protocolFirst?: boolean; onChange: (next: PayloadRule[]) => void; }) { - const { t } = useTranslation(); + const { t, i18n } = useTranslation(); const rules = value.length ? value : []; + const protocolOptions = useMemo( + () => + VISUAL_CONFIG_PROTOCOL_OPTIONS.map((option) => ({ + value: option.value, + label: t(option.labelKey, { defaultValue: option.defaultLabel }), + })), + [t, i18n.resolvedLanguage] + ); + const payloadValueTypeOptions = useMemo( + () => + VISUAL_CONFIG_PAYLOAD_VALUE_TYPE_OPTIONS.map((option) => ({ + value: option.value, + label: t(option.labelKey, { defaultValue: option.defaultLabel }), + })), + [t, i18n.resolvedLanguage] + ); const addRule = () => onChange([...rules, { id: makeClientId(), models: [], params: [] }]); const removeRule = (ruleIndex: number) => onChange(rules.filter((_, i) => i !== ruleIndex)); @@ -533,7 +549,7 @@ function PayloadRulesEditor({ <> @@ -561,7 +577,7 @@ function PayloadRulesEditor({ /> @@ -603,7 +619,7 @@ function PayloadRulesEditor({ /> @@ -669,8 +685,16 @@ function PayloadFilterRulesEditor({ disabled?: boolean; onChange: (next: PayloadFilterRule[]) => void; }) { - const { t } = useTranslation(); + const { t, i18n } = useTranslation(); const rules = value.length ? value : []; + const protocolOptions = useMemo( + () => + VISUAL_CONFIG_PROTOCOL_OPTIONS.map((option) => ({ + value: option.value, + label: t(option.labelKey, { defaultValue: option.defaultLabel }), + })), + [t, i18n.resolvedLanguage] + ); const addRule = () => onChange([...rules, { id: makeClientId(), models: [], params: [] }]); const removeRule = (ruleIndex: number) => onChange(rules.filter((_, i) => i !== ruleIndex)); @@ -738,7 +762,7 @@ function PayloadFilterRulesEditor({ /> diff --git a/src/hooks/useVisualConfig.ts b/src/hooks/useVisualConfig.ts index b4dd32b..5cc6b5f 100644 --- a/src/hooks/useVisualConfig.ts +++ b/src/hooks/useVisualConfig.ts @@ -529,18 +529,66 @@ export function useVisualConfig() { } export const VISUAL_CONFIG_PROTOCOL_OPTIONS = [ - { value: '', label: '默认' }, - { value: 'openai', label: 'OpenAI' }, - { value: 'openai-response', label: 'OpenAI Response' }, - { value: 'gemini', label: 'Gemini' }, - { value: 'claude', label: 'Claude' }, - { value: 'codex', label: 'Codex' }, - { value: 'antigravity', label: 'Antigravity' }, + { + value: '', + labelKey: 'config_management.visual.payload_rules.provider_default', + defaultLabel: 'Default', + }, + { + value: 'openai', + labelKey: 'config_management.visual.payload_rules.provider_openai', + defaultLabel: 'OpenAI', + }, + { + value: 'openai-response', + labelKey: 'config_management.visual.payload_rules.provider_openai_response', + defaultLabel: 'OpenAI Response', + }, + { + value: 'gemini', + labelKey: 'config_management.visual.payload_rules.provider_gemini', + defaultLabel: 'Gemini', + }, + { + value: 'claude', + labelKey: 'config_management.visual.payload_rules.provider_claude', + defaultLabel: 'Claude', + }, + { + value: 'codex', + labelKey: 'config_management.visual.payload_rules.provider_codex', + defaultLabel: 'Codex', + }, + { + value: 'antigravity', + labelKey: 'config_management.visual.payload_rules.provider_antigravity', + defaultLabel: 'Antigravity', + }, ] as const; export const VISUAL_CONFIG_PAYLOAD_VALUE_TYPE_OPTIONS = [ - { value: 'string', label: '字符串' }, - { value: 'number', label: '数字' }, - { value: 'boolean', label: '布尔' }, - { value: 'json', label: 'JSON' }, -] as const satisfies ReadonlyArray<{ value: PayloadParamValueType; label: string }>; + { + value: 'string', + labelKey: 'config_management.visual.payload_rules.value_type_string', + defaultLabel: 'String', + }, + { + value: 'number', + labelKey: 'config_management.visual.payload_rules.value_type_number', + defaultLabel: 'Number', + }, + { + value: 'boolean', + labelKey: 'config_management.visual.payload_rules.value_type_boolean', + defaultLabel: 'Boolean', + }, + { + value: 'json', + labelKey: 'config_management.visual.payload_rules.value_type_json', + defaultLabel: 'JSON', + }, +] as const satisfies ReadonlyArray<{ + value: PayloadParamValueType; + labelKey: string; + defaultLabel: string; +}>; diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index ca64e53..9780587 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -1000,6 +1000,17 @@ "add_param": "Add Parameter", "no_rules": "No rules", "add_rule": "Add Rule", + "provider_default": "Default", + "provider_openai": "OpenAI", + "provider_openai_response": "OpenAI Response", + "provider_gemini": "Gemini", + "provider_claude": "Claude", + "provider_codex": "Codex", + "provider_antigravity": "Antigravity", + "value_type_string": "String", + "value_type_number": "Number", + "value_type_boolean": "Boolean", + "value_type_json": "JSON", "value_string": "String value", "value_number": "Number value (e.g., 0.7)", "value_boolean": "true or false", diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 700dd47..487127f 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -1005,6 +1005,17 @@ "add_param": "Добавить параметр", "no_rules": "Правил нет", "add_rule": "Добавить правило", + "provider_default": "По умолчанию", + "provider_openai": "OpenAI", + "provider_openai_response": "OpenAI Response", + "provider_gemini": "Gemini", + "provider_claude": "Claude", + "provider_codex": "Codex", + "provider_antigravity": "Antigravity", + "value_type_string": "Строка", + "value_type_number": "Число", + "value_type_boolean": "Булево", + "value_type_json": "JSON", "value_string": "Строковое значение", "value_number": "Числовое значение (например, 0.7)", "value_boolean": "true или false", diff --git a/src/i18n/locales/zh-CN.json b/src/i18n/locales/zh-CN.json index 3eee0e8..f9794e1 100644 --- a/src/i18n/locales/zh-CN.json +++ b/src/i18n/locales/zh-CN.json @@ -1000,6 +1000,17 @@ "add_param": "添加参数", "no_rules": "暂无规则", "add_rule": "添加规则", + "provider_default": "默认", + "provider_openai": "OpenAI", + "provider_openai_response": "OpenAI Response", + "provider_gemini": "Gemini", + "provider_claude": "Claude", + "provider_codex": "Codex", + "provider_antigravity": "Antigravity", + "value_type_string": "字符串", + "value_type_number": "数字", + "value_type_boolean": "布尔", + "value_type_json": "JSON", "value_string": "字符串值", "value_number": "数字值 (如 0.7)", "value_boolean": "true 或 false",