Files
ai-learning-platform/frontend/src/i18n/locales/en.ts
T
yuzhiran-dev 728edc59ef feat: admin back-office system + AI assistant with action commands
- Admin analytics (recharts charts, overview stats, trend analysis, time range selector)
- Admin permissions (AdminRole/AdminUser models, role CRUD, permission catalog)
- Admin system config (site/AI/member category tabs, per-key save)
- Admin operations (Banner CRUD, push notification send/delete)
- Admin user management (table, search, create/edit, ban/delete)
- Admin layout (custom top bar with branding + sidebar, admin AI assistant)
- Admin login (adminToken localStorage, adminInfo display)
- Admin AI assistant (purple '运营助手', context-aware prompts, action commands)
- Public AI assistant Phase B (action commands: navigate, setModel, startChat, openSkill, setParameter)
- Assistant context mapping + action executor
- Skills API fix: tags parsing fallback (JSON.parse → split)
- Sandbox crash fix: curScene fallback system prompt
- JWT token expiration: access 2h→7d, refresh 7d→30d, admin 8h→7d
- i18n: assistant-related translations (zh/en)
- PM2 ecosystem config for process management
- AI assistant login prompt fix: admin uses getAdminToken(), public uses apiFetch with token refresh
2026-05-20 10:38:58 +08:00

206 lines
5.9 KiB
TypeScript

import type { Translations } from './zh'
const en: Translations = {
common: {
loading: 'Loading...',
save: 'Save',
cancel: 'Cancel',
delete: 'Delete',
confirm: 'Confirm',
search: 'Search',
back: 'Back',
login: 'Login',
register: 'Register',
logout: 'Logout',
retry: 'Retry',
noData: 'No data',
viewAll: 'View all',
},
nav: {
home: 'Home',
courses: 'Courses',
prompts: 'Prompts',
sandbox: 'AI Sandbox',
discover: 'Discover',
my: 'My',
tools: 'Tools',
community: 'Community',
},
sandbox: {
title: 'AI Sandbox',
subtitle: 'Experience AI conversations online, learn by doing',
placeholder: 'Type your question...',
send: 'Send',
sending: 'Sending...',
newChat: 'New Chat',
history: 'History',
searchHistory: 'Search history...',
noHistory: 'No history yet',
sceneGeneral: 'General',
sceneCoding: 'Coding',
sceneWriting: 'Writing',
sceneStudy: 'Study',
sceneEnglish: 'English',
modelGeneral: 'General',
modelDeepSeek: 'DeepSeek V4 Flash',
advancedParams: 'Advanced',
temperature: 'Temperature',
topP: 'Top P',
maxTokens: 'Max Tokens',
helpful: 'Helpful',
notHelpful: 'Not helpful',
runInCodeSandbox: 'Run in Code Sandbox',
shareToCommunity: 'Share to Community',
copyShareLink: 'Copy Share Link',
linkCopied: 'Link copied',
loginForMore: 'Login for more',
dailyQuota: '{used} used today, {remaining} remaining',
aiReplyDisclaimer: 'AI replies are for reference only.',
loginForMoreQuota: 'Login to get more usage and models.',
justNow: 'just now',
minutesAgo: '{n} min ago',
hoursAgo: '{n} hour ago',
},
auth: {
loginTitle: 'Login',
registerTitle: 'Register',
phone: 'Phone',
password: 'Password',
nickname: 'Nickname',
},
learning: {
analytics: 'Learning Analytics',
analyticsDesc: 'Analyze your learning progress from AI sandbox conversations',
path: 'Learning Path',
pathDesc: 'Master AI skills systematically, step by step',
totalSessions: 'AI Conversations',
domainsCovered: 'Domains Covered',
avgMastery: 'Avg Mastery',
knowledgeDomains: 'Knowledge Domains',
weakAreas: 'Weak Areas',
weakDesc: 'You have less engagement in these areas. Consider strengthening:',
recommendations: 'Recommendations',
recDesc: 'Based on your weak areas, we recommend:',
toStrengthen: 'Needs work',
conversations: '{count} conversations',
clickToGo: 'Click to visit',
},
member: {
title: 'Membership',
desc: 'Manage your subscription',
currentPlan: 'Current Plan',
freeUser: 'You are on the free plan',
monthly: 'Monthly',
yearly: 'Yearly',
monthlyPrice: 'Subscribe ¥29.9/month',
yearlyPrice: 'Subscribe ¥199/year',
expires: 'Expires: {date}',
benefits: 'All courses + unlimited sandbox + exclusive prompts + ad-free',
orderHistory: 'Order History',
noOrders: 'No orders yet',
processing: 'Processing...',
planFree: 'Free',
planMonthly: 'Monthly',
planYearly: 'Yearly',
priceMonthly: '¥29.9',
priceYearly: '¥199',
perMonth: '/mo',
perYear: '/yr',
popular: 'Most Popular',
featureSandbox: 'AI Sandbox',
featureSandboxFree: '10/day',
featureSandboxPro: '100/day',
featureSandboxUnlimited: 'Unlimited',
featureModels: 'Models',
featureModelsFree: '1 model',
featureModelsPro: '2 models',
featureModelsPremium: 'All models',
featurePrompts: 'Prompts',
featurePromptsFree: 'Basic',
featurePromptsPro: 'All',
featurePromptsPremium: 'All + Exclusive',
featureCourses: 'Courses',
featureCoursesFree: 'Some free',
featureCoursesPro: 'All',
featureCoursesPremium: 'All',
featureAds: 'Ads',
featureAdsFree: 'Yes',
featureAdsPro: 'Ad-free',
featureAdsPremium: 'Ad-free',
dailyQuota: 'Daily Quota Usage',
used: '{n} used',
subscribe: 'Subscribe',
currentPlan_badge: 'Current Plan',
},
compare: {
title: 'Compare Lab',
desc: 'Compare model responses side by side',
placeholder: 'Enter your prompt to compare...',
startCompare: 'Compare',
comparing: 'Comparing...',
},
codeSandbox: {
title: 'Code Sandbox',
run: 'Run',
runShortcut: 'Run (⌘⏎)',
template: 'Template...',
blank: 'Blank',
react: 'React (CDN)',
chart: 'Chart.js',
three: 'Three.js',
console: 'Console Output',
},
skills: {
title: 'Skill Library',
desc: 'Composable AI learning skill modules',
search: 'Search skills...',
allCategories: 'All Categories',
allDifficulties: 'All Levels',
beginner: 'Beginner',
intermediate: 'Intermediate',
advanced: 'Advanced',
tasks: 'Practice Tasks',
starters: 'Try these questions',
prerequisites: 'Prerequisites',
apply: 'Use this skill',
categories: {
basic: 'Basic',
technical: 'Technical',
creative: 'Creative',
education: 'Education',
advanced: 'Advanced',
career: 'Career',
},
},
promptWorkshop: {
title: 'Prompt Workshop',
desc: 'Write, test, and optimize your prompts',
editor: 'Prompt Editor',
test: 'Test Prompt',
testing: 'Testing...',
clear: 'Clear',
saveToLibrary: 'Save to Library',
saveSuccess: 'Saved!',
variables: 'Variables',
role: 'Role',
task: 'Task',
outputFormat: 'Output Format',
constraints: 'Constraints',
insert: 'Insert',
testResult: 'Test Result',
saveDialogTitle: 'Save Prompt',
saveTitle: 'Title *',
saveDesc: 'Description',
saveTags: 'Tags',
saveTagsPlaceholder: 'Separate by commas, e.g. coding,Python,debug',
saving: 'Saving...',
},
assistant: {
title: 'AI Assistant',
greeting: 'Hi! I\'m the Yuzhiran AI assistant. I can help you learn about and use this site. Try asking:',
placeholder: 'Type your question...',
},
}
export default en