{ "_meta": { "name": "English" }, "brand": "📮 Mailova", "index.title": "Mailova", "index.subtitle": "Postcards from around the world", "index.go_login": "Login", "index.empty": "No public postcards yet", "nav.profiles": "Profiles", "nav.settings": "Settings", "nav.invites": "Invites", "nav.logout": "Logout", "nav.api_docs": "API Docs", "nav.showcase": "Showcase", "nav.admin": "Admin", "admin.title": "System Admin", "admin.tab_invites": "Invite Codes", "admin.tab_config": "Settings", "admin.config_title": "System Settings", "admin.copyright_label": "Copyright Text", "admin.copyright_hint": "Displayed at the bottom of all pages. Leave empty to hide.", "admin.save_config": "Save", "admin.invite_length_error": "Invite code must be 8 characters", "admin.invite_exists_error": "Invite code already exists", "admin.invite_created": "Invite code {code} created", "admin.invite_updated": "Invite code {code} updated", "admin.config_saved": "Settings saved", "login.title": "Login", "login.username": "Username", "login.password": "Password", "login.remember": "Remember me", "login.no_account": "No account?", "login.go_register": "Sign up", "register.title": "Register", "register.hint": "Invite code provided by an existing user or admin", "register.invite_code": "Invite code", "register.invite_ph": "8-char code", "register.username": "Username", "register.password": "Password", "register.confirm_password": "Confirm password", "register.has_account": "Already have an account?", "register.go_login": "Log in", "dash.welcome": "👋 Welcome, ", "dash.total_cards": "Total postcards", "dash.sent": "Sent", "dash.delivered": "Delivered", "dash.received": "Received", "dash.countries": "Countries", "dash.chart_sent": "📤 Sent", "dash.chart_received": "📬 Received", "dash.recent": "Recent activity", "dash.empty": "No postcards yet", "dash.welcome_title": "Welcome to Mailova!", "dash.welcome_hint": "Create a", "dash.welcome_hint2": " to start managing your postcards", "dash.today": "Today", "dash.yesterday": "Yesterday", "dash.days_ago": " days ago", "profiles.title": "Profiles", "profiles.new_ph": "New profile nickname", "profiles.new_btn": "+ New", "profiles.rename": "Rename", "profiles.total": "Total", "profiles.countries": "Countries", "profiles.notes_ph": "Notes (private)", "profiles.save": "Save", "profiles.created_at": "Created", "profiles.view": "View", "profiles.delete": "Delete", "profiles.confirm_delete": "Delete this profile?", "pc_list.title": "'s postcards", "pc_list.new": "+ New postcard", "pc_list.duplicate": "Card number already exists", "pc_list.all_countries": "All countries", "pc_list.filter": "Filter", "pc_list.tab_sent": "Sent", "pc_list.tab_received": "Received", "pc_list.mark_delivered": "Delivered", "pc_list.confirm_delivered": "Mark as delivered?", "pc_list.empty_sent": "No sent postcards.", "pc_list.empty_received": "No received postcards.", "pc_detail.title": "Postcard detail", "pc_detail.edit": "Edit", "pc_detail.mark_delivered": "Mark delivered", "pc_detail.confirm_delivered": "Mark as delivered?", "pc_detail.delete": "Delete", "pc_detail.confirm_delete": "Delete this postcard?", "pc_detail.front": "Front", "pc_detail.back": "Back", "pc_detail.no_front": "📷 No front image", "pc_detail.no_back": "📷 No back image", "pc_detail.upload_front": "Upload front", "pc_detail.upload_back": "Upload back", "pc_detail.card_number": "Number", "pc_detail.status": "Status", "pc_detail.recipient": "Recipient", "pc_detail.country": "Country", "pc_detail.send_time": "Sent date", "pc_detail.arrival_time": "Arrival date", "pc_detail.sender": "Sender", "pc_detail.receive_time": "Received date", "pc_detail.profile": "Profile", "pc_detail.notes": "Notes", "status.sent": "Sent", "status.delivered": "Delivered", "status.received": "Received", "pc_form.edit": "Edit postcard", "pc_form.new": "New postcard", "pc_form.number": "Number", "pc_form.number_hint": "Format: AB-1234567", "pc_form.status": "Status", "pc_form.recipient": "Recipient", "pc_form.country": "Country", "pc_form.send_time": "Sent date", "pc_form.arrival_time": "Arrival date", "pc_form.sender": "Sender", "pc_form.receive_time": "Received date", "pc_form.notes": "Notes", "pc_form.notes_ph": "Optional notes", "pc_form.save": "Save", "pc_form.cancel": "Cancel", "settings.title": "Settings", "settings.tab_account": "Account", "settings.tab_showcase": "Showcase", "settings.change_username": "Change username", "settings.current_username": "Current username", "settings.new_username": "New username", "settings.change_password": "Change password", "settings.current_password": "Current password", "settings.new_password": "New password", "settings.confirm_password": "Confirm new password", "settings.language": "Language", "settings.language_zh": "中文", "settings.language_en": "English", "settings.showcase_global": "Global showcase settings", "settings.showcase_mode": "Showcase mode", "settings.mode_profile": "Grouped by profile", "settings.mode_flat": "All together", "settings.save_global": "Save global settings", "settings.public_url": "Public showcase: ", "settings.public_url_label": "Public showcase: ", "settings.profiles_showcase": "Per-profile showcase", "settings.showcase_on": "Showing", "settings.showcase_off": "Off", "settings.enable_showcase": "Enable showcase", "settings.showcase_content": "Content", "settings.content_both": "Sent + Received", "settings.content_sent": "Sent only", "settings.content_received": "Received only", "settings.save": "Save", "invites.title": "Invite codes", "invites.create": "Create invite code", "invites.code_label": "Code (leave empty to auto-generate)", "invites.code_ph": "Auto-generate", "invites.limit_type": "Limit type", "invites.unlimited": "Unlimited", "invites.uses": "Max uses", "invites.expires": "Expiration", "invites.times": "Times", "invites.create_btn": "Create", "invites.creator": "By", "invites.used": "Used", "invites.no_expire": "No expiration", "invites.expires_at": "Expires", "invites.edit": "Edit", "invites.save": "Save", "invites.delete": "Delete", "invites.confirm_delete": "Delete this invite code?", "invites.max_uses": "Max uses", "invites.expires_time": "Expiration", "invites.registered_users": "Registered users", "invites.empty": "No invite codes yet", "showcase.title": "'s postcards", "showcase.empty": "Nothing to show yet", "showcase.tab_sent": "Sent", "showcase.tab_received": "Received", "showcase_manage.title": "Showcase manager", "showcase_manage.global": "Global showcase settings", "showcase_manage.save": "Save global settings", "showcase_manage.public_url": "Public showcase: ", "showcase_manage.profiles": "Per-profile settings", "showcase_manage.on": "Showing", "showcase_manage.off": "Off", "showcase_manage.enable": "Enable", "showcase_manage.content": "Content", "showcase_manage.both": "Sent + Received", "showcase_manage.sent_only": "Sent only", "showcase_manage.received_only": "Received only", "profile_showcase.title": " showcase settings", "profile_showcase.enable": "Enable showcase", "profile_showcase.content": "Content", "profile_showcase.both": "Sent + Received", "profile_showcase.sent_only": "Sent only", "profile_showcase.received_only": "Received only", "profile_showcase.single_control": "Per-card visibility", "profile_showcase.hidden": "Hidden", "profile_showcase.hint": "Enable showcase to control per-card visibility", "flash.username_taken": "Username already taken", "flash.username_ok": "Username changed", "flash.wrong_password": "Wrong password", "flash.password_mismatch": "Passwords don't match", "flash.password_short": "Password must be at least 6 characters", "flash.password_ok": "Password changed", "settings.tab_apikeys": "API Keys", "apikey.title": "API Key Management", "apikey.hint": "Use API Keys to access Mailova's public API via HTTP requests. Keep your key safe — it is only shown once upon creation.", "apikey.created": "✅ New key created:", "apikey.copy_now": "⚠️ Copy it now. You won't be able to see the full key again after leaving this page.", "apikey.name_ph": "Key name (optional)", "apikey.create": "Create Key", "apikey.name": "Name", "apikey.key": "Key", "apikey.created_at": "Created", "apikey.last_used": "Last used", "apikey.delete": "Delete", "apikey.confirm_delete": "Delete this API key?", "apikey.empty": "No API keys yet", "api_docs.title": "API Documentation", "api_docs.intro": "Mailova provides a RESTful API for third-party integrations. All authenticated requests must include the X-API-Key header.", "api_docs.base_url": "Base URL", "api_docs.auth": "Authentication", "api_docs.auth_desc": "Include your API Key in the request header:", "api_docs.profile_ops": "Profile Operations", "api_docs.postcard_ops": "Postcard Operations", "api_docs.upload_op": "Image Upload", "api_docs.key_ops": "API Key Management", "api_docs.showcase_ops": "Public Showcase (no auth)", "api_docs.method": "Method", "api_docs.path": "Path", "api_docs.desc": "Description", "api_docs.params": "Parameters", "api_docs.body": "Request Body (JSON)", "api_docs.response": "Response", "api_docs.status": "Status", "api_docs.go_settings": "Go to Settings to create an API Key →", "api_docs.try_it": "Try it", "api_docs.api_key_ph": "Enter your API Key", "api_docs.send": "Send", "api_docs.response_label": "Response", "api_docs.no_auth": "No authentication required", "api_docs.ep.list_profiles": "List all profiles for the current user.", "api_docs.ep.create_profile": "Create a new profile.", "api_docs.ep.get_profile": "Get a single profile by ID.", "api_docs.ep.update_profile": "Update a profile.", "api_docs.ep.delete_profile": "Delete a profile and all its postcards.", "api_docs.ep.list_postcards": "List postcards under a profile.", "api_docs.ep.create_postcard": "Create a new postcard.", "api_docs.ep.get_postcard": "Get a single postcard by ID.", "api_docs.ep.update_postcard": "Update a postcard. Only send fields you want to change.", "api_docs.ep.delete_postcard": "Delete a single postcard.", "api_docs.ep.upload_image": "Upload a postcard image (front or back), using", "api_docs.ep.upload_uses": "Upload a postcard image (front or back), using", "api_docs.ep.list_keys": "List all API keys for the current user.", "api_docs.ep.create_key": "Create a new API key. The full key is only shown once in the response.", "api_docs.ep.delete_key": "Delete an API key.", "api_docs.ep.showcase_user": "Get a user's public showcase data.", "api_docs.ep.showcase_profile": "Get showcase data for a single profile.", "api_docs.ep.filter_hint": "Filter by status: sent / delivered / received", "api_docs.ep.optional_str": "string (optional)", "api_docs.ep.image_file": "image file", "api_docs.ep.side_hint": "string (optional) — front or back, defaults to front", "api_docs.ep.key_name_hint": "string (optional) — a label for the key", "api_docs.ep.country_hint": "two uppercase letters, e.g. JP", "api_docs.ep.date_hint": "format: YYYY-MM-DD or YYYY-MM-DDTHH:MM", "apikey.permissions": "Permissions", "apikey.perm.profiles_read": "Read Profiles", "apikey.perm.profiles_write": "Write Profiles", "apikey.perm.postcards_read": "Read Postcards", "apikey.perm.postcards_write": "Write Postcards", "apikey.perm.images_upload": "Upload Images", "apikey.perm.hint": "No selection = full access (backward-compatible). Once checked, the key only has the selected permissions.", "apikey.perm_full_access": "Full Access", "apikey.edit": "Edit", "apikey.save": "Save", "apikey.cancel": "Cancel", "api_docs.permissions": "Permission System", "api_docs.permissions_desc": "Each API key can be assigned fine-grained permission scopes. Keys without any scope (legacy) have full access. Once scopes are set, the key can only access the corresponding endpoints.", "api_docs.scope": "Scope", "api_docs.scope_desc": "Description", "api_docs.scope_endpoints": "Endpoints", "api_docs.permissions_note": "A 403 response means the key is missing a required permission.", "api_docs.permissions_keys_note": "API Key management endpoints (GET/POST/DELETE /keys) only require a valid API key for authentication, no specific permission scope needed.", "misc.required": " *" }