mirror of
https://github.com/langgenius/dify.git
synced 2026-05-13 08:57:28 +08:00
67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
'use client'
|
|
import type { TFunction } from 'i18next'
|
|
|
|
const i18nPrefix = 'nodes.questionClassifiers'
|
|
const LEGACY_DEFAULT_LABEL_PREFIX = 'CLASS'
|
|
const DEFAULT_EQUIVALENT_PREFIXES = ['CLASS', '分类', '分類', 'クラス']
|
|
|
|
const getCanonicalDefaultClassLabel = (index: number) => `${LEGACY_DEFAULT_LABEL_PREFIX} ${index}`
|
|
|
|
const getTranslatedDefaultClassLabel = (t: TFunction, index: number) => {
|
|
const translated = t(`${i18nPrefix}.defaultLabel`, { ns: 'workflow', index })
|
|
if (typeof translated !== 'string')
|
|
return undefined
|
|
|
|
const resolvedLabel = translated.replace('{{index}}', String(index))
|
|
const rawWorkflowKey = `workflow.${i18nPrefix}.defaultLabel`
|
|
const rawKey = `${i18nPrefix}.defaultLabel`
|
|
if (
|
|
resolvedLabel === rawWorkflowKey
|
|
|| resolvedLabel === rawKey
|
|
|| resolvedLabel.startsWith(`${rawWorkflowKey}:`)
|
|
|| resolvedLabel.startsWith(`${rawKey}:`)
|
|
) {
|
|
return undefined
|
|
}
|
|
|
|
return resolvedLabel
|
|
}
|
|
|
|
const normalizeClassLabel = (label?: string | null) => label?.trim() ?? ''
|
|
|
|
export const getDefaultClassLabel = (_t: TFunction, index: number) => getCanonicalDefaultClassLabel(index)
|
|
|
|
export const getDisplayClassLabel = (
|
|
label: string | undefined,
|
|
index: number,
|
|
t: TFunction,
|
|
) => normalizeClassLabel(label) || getTranslatedDefaultClassLabel(t, index) || getCanonicalDefaultClassLabel(index)
|
|
|
|
export const isDefaultClassLabel = (
|
|
label: string | undefined,
|
|
index: number,
|
|
t: TFunction,
|
|
) => {
|
|
const normalizedLabel = normalizeClassLabel(label)
|
|
if (!normalizedLabel)
|
|
return true
|
|
|
|
return DEFAULT_EQUIVALENT_PREFIXES.some(prefix => normalizedLabel === `${prefix} ${index}`)
|
|
|| normalizedLabel === getTranslatedDefaultClassLabel(t, index)
|
|
}
|
|
|
|
export const getCanonicalClassLabel = (
|
|
label: string | undefined,
|
|
index: number,
|
|
t: TFunction,
|
|
) => {
|
|
const normalizedLabel = normalizeClassLabel(label)
|
|
if (!normalizedLabel)
|
|
return getCanonicalDefaultClassLabel(index)
|
|
|
|
if (isDefaultClassLabel(normalizedLabel, index, t))
|
|
return getCanonicalDefaultClassLabel(index)
|
|
|
|
return normalizedLabel
|
|
}
|