diff --git a/app/src/components/History/HistoryTable.tsx b/app/src/components/History/HistoryTable.tsx index 605abe32..8aa47f53 100644 --- a/app/src/components/History/HistoryTable.tsx +++ b/app/src/components/History/HistoryTable.tsx @@ -673,7 +673,7 @@ export function HistoryTable() { variant="ghost" size="icon" className="h-6 w-6 text-muted-foreground/50 hover:bg-muted-foreground/20 hover:text-muted-foreground" - aria-label="Actions" + aria-label={t('history.actions.menu')} disabled={isGenerating} > @@ -684,37 +684,36 @@ export function HistoryTable() { onClick={() => handlePlay(gen.id, gen.text, gen.profile_id)} > - Play + {t('history.actions.play')} handleDownloadAudio(gen.id, gen.text)} disabled={exportGenerationAudio.isPending} > - Export Audio + {t('history.actions.exportAudio')} handleExportPackage(gen.id, gen.text)} disabled={exportGeneration.isPending} > - Export Package + {t('history.actions.exportPackage')} handleApplyEffects(gen.id)}> - Apply Effects + {t('history.actions.applyEffects')} handleRegenerate(gen.id)}> - Regenerate + {t('history.actions.regenerate')} handleDeleteClick(gen.id, gen.profile_name)} disabled={deleteGeneration.isPending} - // className="text-destructive focus:text-destructive" > - Delete + {t('common.delete')} diff --git a/app/src/components/StoriesTab/StoryChatItem.tsx b/app/src/components/StoriesTab/StoryChatItem.tsx index 7055e136..8ae49b0d 100644 --- a/app/src/components/StoriesTab/StoryChatItem.tsx +++ b/app/src/components/StoriesTab/StoryChatItem.tsx @@ -2,6 +2,7 @@ import { useSortable } from '@dnd-kit/sortable'; import { CSS } from '@dnd-kit/utilities'; import { GripVertical, Mic, MoreHorizontal, Play, Trash2 } from 'lucide-react'; import { useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { Button } from '@/components/ui/button'; import { DropdownMenu, @@ -34,6 +35,7 @@ export function StoryChatItem({ dragHandleProps, isDragging, }: StoryChatItemProps) { + const { t } = useTranslation(); const seek = useStoryStore((state) => state.seek); const serverUrl = useServerStore((state) => state.serverUrl); const [avatarError, setAvatarError] = useState(false); @@ -118,21 +120,26 @@ export function StoryChatItem({
- - Play from here + {t('storyContent.itemActions.playFromHere')} - Remove from Story + {t('storyContent.itemActions.removeFromStory')} diff --git a/app/src/i18n/locales/en/translation.json b/app/src/i18n/locales/en/translation.json index 5581e49a..53e89764 100644 --- a/app/src/i18n/locales/en/translation.json +++ b/app/src/i18n/locales/en/translation.json @@ -104,6 +104,10 @@ "title": "No items in this story", "hint": "Generate speech using the box below to add items" }, + "itemActions": { + "playFromHere": "Play from here", + "removeFromStory": "Remove from Story" + }, "toast": { "removeFailed": "Failed to remove item", "reorderFailed": "Failed to reorder items", @@ -112,6 +116,14 @@ } }, "history": { + "actions": { + "menu": "Actions", + "play": "Play", + "exportAudio": "Export Audio", + "exportPackage": "Export Package", + "applyEffects": "Apply Effects", + "regenerate": "Regenerate" + }, "deleteDialog": { "title": "Delete Generation", "body": "Are you sure you want to delete this generation from \"{{name}}\"? This action cannot be undone.", diff --git a/app/src/i18n/locales/zh-CN/translation.json b/app/src/i18n/locales/zh-CN/translation.json index a2cfb4b9..d1ce7eac 100644 --- a/app/src/i18n/locales/zh-CN/translation.json +++ b/app/src/i18n/locales/zh-CN/translation.json @@ -104,6 +104,10 @@ "title": "此故事暂无项目", "hint": "使用下方输入框生成语音以添加项目" }, + "itemActions": { + "playFromHere": "从此处播放", + "removeFromStory": "从故事中移除" + }, "toast": { "removeFailed": "移除项目失败", "reorderFailed": "重新排序项目失败", @@ -112,6 +116,14 @@ } }, "history": { + "actions": { + "menu": "操作", + "play": "播放", + "exportAudio": "导出音频", + "exportPackage": "导出包", + "applyEffects": "应用效果", + "regenerate": "重新生成" + }, "deleteDialog": { "title": "删除生成", "body": "确定要删除来自 \"{{name}}\" 的这次生成吗?此操作不可撤销。",