728edc59ef
- 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
206 lines
5.9 KiB
TypeScript
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
|