Files
personal-ai-assistant/frontend/public/locales/en/translation.json
dolgolyov.alexei fed6a3df1b Phase 6: PDF & Polish — PDF generation, admin users/settings, AI tool
Backend:
- Setting + GeneratedPdf models, Alembic migration with default settings seed
- PDF generation service (WeasyPrint + Jinja2 with autoescape)
- Health report HTML template with memory entries + document excerpts
- Admin user management: list, create, update (role/max_chats/is_active)
- Admin settings: self_registration_enabled, default_max_chats
- Self-registration check wired into auth register endpoint
- default_max_chats applied to new user registrations
- AI tool: generate_pdf creates health compilation PDFs
- PDF compile/list/download API endpoints
- WeasyPrint system deps added to Dockerfile

Frontend:
- PDF reports page with generate + download
- Admin users page with create/edit/activate/deactivate
- Admin settings page with self-registration toggle + max chats
- Extended sidebar with PDF reports + admin users/settings links
- English + Russian translations for all new UI

Review fixes applied:
- Jinja2 autoescape enabled (XSS prevention in PDFs)
- db.refresh after flush (created_at populated correctly)
- storage_path removed from API response (no internal path leak)
- Role field uses Literal["user", "admin"] validation
- React hooks called before conditional returns (rules of hooks)
- default_max_chats setting now applied during registration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:37:43 +03:00

190 lines
5.8 KiB
JSON

{
"auth": {
"login": "Log In",
"register": "Sign Up",
"email": "Email",
"password": "Password",
"confirmPassword": "Confirm Password",
"username": "Username",
"fullName": "Full Name",
"rememberMe": "Remember me",
"submit": "Submit",
"noAccount": "Don't have an account?",
"hasAccount": "Already have an account?",
"loginTitle": "Welcome Back",
"loginSubtitle": "Sign in to your account",
"registerTitle": "Create Account",
"registerSubtitle": "Get started with your personal AI assistant",
"errors": {
"invalidCredentials": "Invalid email or password",
"emailExists": "User with this email or username already exists",
"passwordMismatch": "Passwords do not match",
"passwordMinLength": "Password must be at least 8 characters",
"usernameFormat": "Username must be 3-50 characters (letters, numbers, _ or -)",
"required": "This field is required"
}
},
"layout": {
"dashboard": "Dashboard",
"chats": "Chats",
"documents": "Documents",
"memory": "Memory",
"notifications": "Notifications",
"profile": "Profile",
"logout": "Log Out",
"settings": "Settings",
"admin": "Admin",
"users": "Users",
"context": "Context",
"skills": "Skills",
"personal_context": "My Context",
"pdf": "PDF Reports"
},
"dashboard": {
"welcome": "Welcome, {{name}}",
"subtitle": "Your personal AI health assistant"
},
"chat": {
"new_chat": "New Chat",
"no_chats": "No chats yet. Create one to get started.",
"no_messages": "Start a conversation...",
"select_chat": "Select a chat to start messaging",
"type_message": "Type a message...",
"send": "Send",
"archive": "Archive",
"unarchive": "Unarchive",
"delete_confirm": "Are you sure you want to delete this chat?",
"limit_reached": "Chat limit reached",
"streaming": "AI is thinking..."
},
"admin": {
"context_editor": "Primary Context Editor",
"context_placeholder": "Enter the system prompt for the AI assistant...",
"save": "Save",
"saved": "Saved",
"unsaved_changes": "Unsaved changes",
"version": "Version",
"characters": "characters"
},
"skills": {
"my_skills": "My Skills",
"general_skills": "General Skills",
"no_skills": "No skills yet.",
"no_personal_skills": "You haven't created any personal skills yet.",
"create_personal": "Create Personal Skill",
"edit_personal": "Edit Personal Skill",
"create_general": "Create General Skill",
"edit_general": "Edit General Skill",
"name": "Name",
"name_placeholder": "e.g. Cardiologist",
"description": "Description",
"description_placeholder": "Brief description of this specialist",
"system_prompt": "System Prompt",
"prompt_placeholder": "Instructions for the AI when using this skill...",
"icon": "Icon",
"no_skill": "No specialist",
"general": "General",
"personal": "Personal"
},
"personal_context": {
"title": "Personal Context",
"subtitle": "This context is added to all your AI conversations",
"placeholder": "Add personal information that the AI should know about you..."
},
"notifications": {
"title": "Notifications",
"no_notifications": "No notifications yet.",
"mark_all_read": "Mark all read",
"mark_read": "Mark as read",
"view_all": "View all notifications",
"types": {
"reminder": "Reminder",
"alert": "Alert",
"info": "Info",
"ai_generated": "AI Generated"
}
},
"documents": {
"upload": "Upload",
"drop_or_click": "Drop a file here or click to browse",
"doc_type": "Document Type",
"no_documents": "No documents uploaded yet.",
"download": "Download",
"reindex": "Re-extract text",
"extracted_text": "Extracted Text",
"search_placeholder": "Search documents...",
"clear_search": "Clear",
"types": {
"other": "Other",
"lab_result": "Lab Result",
"consultation": "Consultation",
"prescription": "Prescription",
"imaging": "Imaging"
},
"status": {
"pending": "Pending",
"processing": "Processing",
"completed": "Completed",
"failed": "Failed"
}
},
"memory": {
"create": "Add Memory Entry",
"edit": "Edit Memory Entry",
"no_entries": "No memory entries yet. The AI will save important health information here.",
"category": "Category",
"importance": "Importance",
"title_field": "Title",
"title_placeholder": "e.g. Diabetes Type 2",
"content_field": "Content",
"content_placeholder": "Detailed information...",
"categories": {
"condition": "Condition",
"medication": "Medication",
"allergy": "Allergy",
"vital": "Vital Sign",
"document_summary": "Document Summary",
"other": "Other"
},
"importance_levels": {
"critical": "Critical",
"high": "High",
"medium": "Medium",
"low": "Low"
}
},
"pdf": {
"title": "PDF Reports",
"generate": "Generate PDF",
"title_placeholder": "Report title...",
"no_pdfs": "No PDF reports generated yet."
},
"admin_users": {
"title": "User Management",
"create": "Create User",
"edit": "Edit User",
"max_chats": "Max Chats",
"deactivate": "Deactivate",
"activate": "Activate"
},
"admin_settings": {
"title": "App Settings",
"self_registration": "Self Registration",
"self_registration_desc": "Allow users to register accounts themselves",
"default_max_chats": "Default Max Chats",
"default_max_chats_desc": "Default chat limit for new users"
},
"common": {
"loading": "Loading...",
"error": "An error occurred",
"notFound": "Page not found",
"goHome": "Go to Dashboard",
"save": "Save",
"cancel": "Cancel",
"delete": "Delete",
"edit": "Edit",
"create": "Create",
"search": "Search"
}
}