Files
mailova/app/locales/en.json

281 lines
12 KiB
JSON

{
"_meta": {
"name": "English"
},
"brand": "📮 Mailova",
"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": " *"
}