mirror of
https://github.com/langgenius/dify.git
synced 2026-05-04 09:28:04 +08:00
refactor(i18n): use JSON with flattened key and namespace (#30114)
Co-authored-by: yyh <yuanyouhuilyz@gmail.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
@ -20,7 +20,14 @@ type DeprecationNoticeProps = {
|
||||
textClassName?: string
|
||||
}
|
||||
|
||||
const i18nPrefix = 'plugin.detailPanel.deprecation'
|
||||
const i18nPrefix = 'detailPanel.deprecation'
|
||||
|
||||
type DeprecatedReasonKey = 'businessAdjustments' | 'ownershipTransferred' | 'noMaintainer'
|
||||
const validReasonKeys: DeprecatedReasonKey[] = ['businessAdjustments', 'ownershipTransferred', 'noMaintainer']
|
||||
|
||||
function isValidReasonKey(key: string): key is DeprecatedReasonKey {
|
||||
return (validReasonKeys as string[]).includes(key)
|
||||
}
|
||||
|
||||
const DeprecationNotice: FC<DeprecationNoticeProps> = ({
|
||||
status,
|
||||
@ -37,19 +44,15 @@ const DeprecationNotice: FC<DeprecationNoticeProps> = ({
|
||||
|
||||
const deprecatedReasonKey = useMemo(() => {
|
||||
if (!deprecatedReason)
|
||||
return ''
|
||||
return camelCase(deprecatedReason)
|
||||
return null
|
||||
const key = camelCase(deprecatedReason)
|
||||
if (isValidReasonKey(key))
|
||||
return key
|
||||
return null
|
||||
}, [deprecatedReason])
|
||||
|
||||
// Check if the deprecatedReasonKey exists in i18n
|
||||
const hasValidDeprecatedReason = useMemo(() => {
|
||||
if (!deprecatedReason || !deprecatedReasonKey)
|
||||
return false
|
||||
|
||||
// Define valid reason keys that exist in i18n
|
||||
const validReasonKeys = ['businessAdjustments', 'ownershipTransferred', 'noMaintainer']
|
||||
return validReasonKeys.includes(deprecatedReasonKey)
|
||||
}, [deprecatedReason, deprecatedReasonKey])
|
||||
const hasValidDeprecatedReason = deprecatedReasonKey !== null
|
||||
|
||||
if (status !== 'deleted')
|
||||
return null
|
||||
@ -82,7 +85,7 @@ const DeprecationNotice: FC<DeprecationNoticeProps> = ({
|
||||
),
|
||||
}}
|
||||
values={{
|
||||
deprecatedReason: t(`${i18nPrefix}.reason.${deprecatedReasonKey}` as any) as string,
|
||||
deprecatedReason: deprecatedReasonKey ? t(`${i18nPrefix}.reason.${deprecatedReasonKey}`, { ns: 'plugin' }) : '',
|
||||
alternativePluginId,
|
||||
}}
|
||||
/>
|
||||
@ -91,13 +94,13 @@ const DeprecationNotice: FC<DeprecationNoticeProps> = ({
|
||||
{
|
||||
hasValidDeprecatedReason && !alternativePluginId && (
|
||||
<span>
|
||||
{t(`${i18nPrefix}.onlyReason` as any, { deprecatedReason: t(`${i18nPrefix}.reason.${deprecatedReasonKey}` as any) as string }) as string}
|
||||
{t(`${i18nPrefix}.onlyReason`, { ns: 'plugin', deprecatedReason: deprecatedReasonKey ? t(`${i18nPrefix}.reason.${deprecatedReasonKey}`, { ns: 'plugin' }) : '' })}
|
||||
</span>
|
||||
)
|
||||
}
|
||||
{
|
||||
!hasValidDeprecatedReason && (
|
||||
<span>{t(`${i18nPrefix}.noReason`)}</span>
|
||||
<span>{t(`${i18nPrefix}.noReason`, { ns: 'plugin' })}</span>
|
||||
)
|
||||
}
|
||||
</div>
|
||||
|
||||
@ -54,7 +54,7 @@ const KeyValueItem: FC<Props> = ({
|
||||
<span className={cn(valueMaxWidthClassName, ' system-xs-medium truncate text-text-secondary')}>
|
||||
{maskedValue || value}
|
||||
</span>
|
||||
<Tooltip popupContent={t(`common.operation.${isCopied ? 'copied' : 'copy'}`)} position="top">
|
||||
<Tooltip popupContent={t(`operation.${isCopied ? 'copied' : 'copy'}`, { ns: 'common' })} position="top">
|
||||
<ActionButton onClick={handleCopy}>
|
||||
<CopyIcon className="h-3.5 w-3.5 shrink-0 text-text-tertiary" />
|
||||
</ActionButton>
|
||||
|
||||
Reference in New Issue
Block a user