export const translations = {
  zh: {
    // Common
    loading: "加载中...",
    save: "保存",
    cancel: "取消",
    delete: "删除",
    saved: "已保存",

    // Auth
    login: "登录",
    register: "注册",
    logout: "退出登录",
    username: "用户名",
    password: "密码",
    inviteCode: "邀请码",
    loginWelcome: "欢迎回来，继续管理提醒与通知",
    loginFailed: "登录失败，请检查用户名与密码",
    registerTitle: "邀请码注册",
    registerDesc: "只需几步即可开启高效提醒",
    registerFailed: "注册失败，请检查邀请码与输入内容",
    noAccount: "没有账号？去注册（邀请码）",
    hasAccount: "已有账号？去登录",
    enterUsername: "请输入用户名",
    enterPassword: "请输入密码",
    enterInviteCode: "请输入邀请码",

    // App Shell
    appDesc: "轻量好用的提醒与通知管理中心",

    // Sidebar
    navigation: "功能导航",
    navTodo: "Todo",
    navReminder: "提醒",
    navSettings: "设置",
    navNotifications: "未读提醒消息",

    // Todo Page
    createTask: "创建任务",
    createTaskDesc: "记录需要提醒的事项与截止时间",
    title: "标题",
    enterTodoTitle: "输入待办标题",
    dueTime: "截止时间",
    selectDueTime: "选择截止时间",
    enableAdvanceReminder: "设置提前提醒",
    advanceReminder: "提前提醒（分钟）",
    setRecurring: "设为周期性任务",
    recurrenceCycle: "重复周期",
    myTodoList: "我的 Todo 列表",
    myTodoListDesc: "保持任务清单清晰可见",
    addTask: "+ 添加任务",
    due: "截止",
    noTodo: "暂无 Todo",
    todoEmptyTitle: "还没有任何任务",
    todoEmptyDesc: "创建你的第一个任务，开始高效管理时间",
    totalTasks: "总任务",
    checkedInToday: "今日打卡",
    recurringTasks: "周期任务",
    upcomingReminders: "即将到来的提醒",
    noUpcomingReminders: "暂无即将到来的提醒",
    confirmDelete: "确认删除",
    confirmDeleteDesc: "确定要删除「{title}」吗？此操作无法撤销。",
    checkIn: "打卡",
    checkInSuccess: "打卡成功",
    checkInDesc: "本周期内已完成，不会再提醒",

    // Reminder Page
    createReminder: "创建提醒",
    createReminderDesc: "为团队或成员分配提醒事项",
    taskTitle: "任务标题",
    enterTaskTitle: "输入任务标题",
    reminderContent: "提醒内容",
    enterReminderContent: "输入提醒的具体内容",
    contentReplacedByMarkdown: "已启用 Markdown 格式，此内容将被下方 Markdown 内容替换",
    reminderTime: "提醒时间",
    selectReminderTime: "选择提醒时间",
    setRecurringReminder: "设为周期性提醒",
    reminderFor: "提醒对象",
    selectUser: "选择用户",
    reminderList: "提醒列表",
    reminderListDesc: "查看待执行的提醒任务",
    reminder: "提醒",
    noReminder: "暂无提醒任务",

    // Bark Settings
    barkSettings: "Bark 推送设置",
    barkSettingsDesc: "自定义 Bark 推送的标题、内容和样式",
    barkTitle: "推送标题",
    barkTitlePlaceholder: "自定义推送标题（留空使用默认）",
    barkSubtitle: "推送副标题",
    barkSubtitlePlaceholder: "可选的副标题",
    barkUseMarkdown: "使用 Markdown 格式",
    markdownWillReplaceContent: "此内容将替换上方的「提醒内容」",
    barkMarkdownContent: "Markdown 内容",
    barkMarkdownPlaceholder: "支持基础 Markdown 格式",
    barkLevel: "推送级别",
    barkLevelActive: "默认",
    barkLevelTimeSensitive: "时效性通知",
    barkLevelPassive: "静默通知",
    barkLevelCritical: "重要警告",
    barkIcon: "自定义图标",
    barkIconPlaceholder: "图标 URL（留空使用用户头像）",

    // Notifications Page
    notifications: "通知",
    notificationsDesc: "快速处理待查看的提醒通知",
    searchNotifications: "搜索通知...",
    markAllRead: "全部已读",
    markRead: "标记已读",
    triggerTime: "触发时间",
    channel: "渠道",
    noNotification: "暂无未读通知",

    // Settings Page
    settings: "设置",
    settingsDesc: "自定义提醒方式与通知渠道",
    avatar: "头像",
    uploadAvatar: "上传头像",
    uploading: "上传中...",
    removeAvatar: "移除头像",
    avatarHint: "支持 JPG、PNG、GIF、WebP 格式，最大 5MB",
    barkPushUrl: "Bark 推送地址",
    timezone: "时区",
    notificationChannels: "通知渠道",
    webNotifications: "站内通知",
    webNotificationsDesc: "站内通知开关",
    barkAlerts: "Bark 推送",
    barkAlertsDesc: "Bark 推送开关",

    // Change Password
    changePassword: "修改密码",
    currentPassword: "当前密码",
    newPassword: "新密码",
    confirmNewPassword: "确认新密码",
    passwordChanged: "密码修改成功",
    passwordMismatch: "两次输入的密码不一致",
    passwordTooShort: "密码至少需要6个字符",
    currentPasswordRequired: "请输入当前密码",
    newPasswordRequired: "请输入新密码",

    // Recurrence
    hourly: "每小时",
    daily: "每天",
    weekly: "每周",
    monthly: "每月",
    yearly: "每年",

    // Recurrence Picker - Modes
    modeDaily: "每天",
    modeWeekly: "每周",
    modeBiweekly: "每两周",
    modeMonthly: "每月",
    modeYearly: "每年",

    // Recurrence Picker - Weekdays
    sun: "日",
    mon: "一",
    tue: "二",
    wed: "三",
    thu: "四",
    fri: "五",
    sat: "六",

    // Recurrence Picker - Months
    jan: "1月",
    feb: "2月",
    mar: "3月",
    apr: "4月",
    may: "5月",
    jun: "6月",
    jul: "7月",
    aug: "8月",
    sep: "9月",
    oct: "10月",
    nov: "11月",
    dec: "12月",

    // Recurrence Picker - UI
    selectWeekday: "选择星期几",
    selectMonthday: "选择日期",
    selectYearlyDate: "选择日期",
    everyMonth: "每月",
    everyYear: "每年",
    dayUnit: "日",
    dailyNoOptions: "将按当前时间每天重复",
    willRepeat: "重复规则：",
    recurrencePreviewDaily: "每天 {time}",
    recurrencePreviewWeekly: "每周{weekday} {time}",
    recurrencePreviewBiweekly: "每两周的周{weekday} {time}",
    recurrencePreviewMonthly: "每月 {day} 日 {time}",
    recurrencePreviewYearly: "每年 {month} {day} 日 {time}",

    // DateTime Picker
    selectDateTime: "选择日期和时间",
    time: "时间",
    hour: "时",
    minute: "分",
    now: "现在",

    // Language
    language: "语言",
    chinese: "中文",
    english: "English",

    // Invite Management
    navInvites: "邀请管理",
    inviteManagement: "邀请管理",
    inviteManagementDesc: "生成邀请码，追踪注册用户",
    createInvite: "生成邀请码",
    createInviteDesc: "创建新的邀请码分享给他人注册",
    maxUses: "最大使用次数",
    expiresInDays: "有效期（天）",
    generateInvite: "生成邀请码",
    myInvites: "我的邀请码",
    myInvitesDesc: "查看已生成的邀请码及注册情况",
    noInvites: "暂无邀请码",
    usage: "使用情况",
    expiresAt: "过期时间",
    status: "状态",
    statusActive: "有效",
    statusExpired: "已过期",
    statusRevoked: "已撤销",
    statusExhausted: "已用完",
    revoke: "撤销",
    revokeInvite: "撤销邀请码",
    revokeInviteDesc: "确定要撤销邀请码「{code}」吗？撤销后将无法使用。",
    registeredUsers: "注册用户",
    noRegisteredUsers: "暂无用户通过此邀请码注册",
    viewDetails: "查看详情",
    copyCode: "复制邀请码",
    copied: "已复制",
  },
  en: {
    // Common
    loading: "Loading...",
    save: "Save",
    cancel: "Cancel",
    delete: "Delete",
    saved: "Saved",

    // Auth
    login: "Login",
    register: "Register",
    logout: "Logout",
    username: "Username",
    password: "Password",
    inviteCode: "Invite Code",
    loginWelcome: "Welcome back, manage your reminders and notifications",
    loginFailed: "Login failed, please check your username and password",
    registerTitle: "Register with Invite Code",
    registerDesc: "Get started with efficient reminders in just a few steps",
    registerFailed: "Registration failed, please check your invite code",
    noAccount: "No account? Register with invite code",
    hasAccount: "Already have an account? Login",
    enterUsername: "Enter username",
    enterPassword: "Enter password",
    enterInviteCode: "Enter invite code",

    // App Shell
    appDesc: "A lightweight reminder and notification management center",

    // Sidebar
    navigation: "Navigation",
    navTodo: "Todo",
    navReminder: "Reminders",
    navSettings: "Settings",
    navNotifications: "Unread Notifications",

    // Todo Page
    createTask: "Create Task",
    createTaskDesc: "Record tasks and their due times",
    title: "Title",
    enterTodoTitle: "Enter todo title",
    dueTime: "Due Time",
    selectDueTime: "Select due time",
    enableAdvanceReminder: "Enable Advance Reminder",
    advanceReminder: "Advance Reminder (minutes)",
    setRecurring: "Set as recurring task",
    recurrenceCycle: "Recurrence Cycle",
    myTodoList: "My Todo List",
    myTodoListDesc: "Keep your task list clear and visible",
    addTask: "+ Add Task",
    due: "Due",
    noTodo: "No Todo items",
    todoEmptyTitle: "No tasks yet",
    todoEmptyDesc: "Create your first task and start managing your time efficiently",
    totalTasks: "Total Tasks",
    checkedInToday: "Checked In",
    recurringTasks: "Recurring",
    upcomingReminders: "Upcoming Reminders",
    noUpcomingReminders: "No upcoming reminders",
    confirmDelete: "Confirm Delete",
    confirmDeleteDesc: "Are you sure you want to delete \"{title}\"? This action cannot be undone.",
    checkIn: "Check In",
    checkInSuccess: "Checked In",
    checkInDesc: "Completed for this cycle, no more reminders",

    // Reminder Page
    createReminder: "Create Reminder",
    createReminderDesc: "Assign reminders to team members",
    taskTitle: "Task Title",
    enterTaskTitle: "Enter task title",
    reminderContent: "Reminder Content",
    enterReminderContent: "Enter reminder content",
    contentReplacedByMarkdown: "Markdown enabled, this content will be replaced by Markdown content below",
    reminderTime: "Reminder Time",
    selectReminderTime: "Select reminder time",
    setRecurringReminder: "Set as recurring reminder",
    reminderFor: "Reminder For",
    selectUser: "Select user",
    reminderList: "Reminder List",
    reminderListDesc: "View pending reminder tasks",
    reminder: "Reminder",
    noReminder: "No reminder tasks",

    // Bark Settings
    barkSettings: "Bark Push Settings",
    barkSettingsDesc: "Customize Bark push title, content and style",
    barkTitle: "Push Title",
    barkTitlePlaceholder: "Custom push title (leave empty for default)",
    barkSubtitle: "Push Subtitle",
    barkSubtitlePlaceholder: "Optional subtitle",
    barkUseMarkdown: "Use Markdown Format",
    markdownWillReplaceContent: "This content will replace the reminder content above",
    barkMarkdownContent: "Markdown Content",
    barkMarkdownPlaceholder: "Supports basic Markdown format",
    barkLevel: "Push Level",
    barkLevelActive: "Default",
    barkLevelTimeSensitive: "Time Sensitive",
    barkLevelPassive: "Passive",
    barkLevelCritical: "Critical",
    barkIcon: "Custom Icon",
    barkIconPlaceholder: "Icon URL (leave empty to use avatar)",

    // Notifications Page
    notifications: "Notifications",
    notificationsDesc: "Quickly handle pending notifications",
    searchNotifications: "Search notifications...",
    markAllRead: "Mark All Read",
    markRead: "Mark Read",
    triggerTime: "Trigger Time",
    channel: "Channel",
    noNotification: "No unread notifications",

    // Settings Page
    settings: "Settings",
    settingsDesc: "Customize reminder methods and notification channels",
    avatar: "Avatar",
    uploadAvatar: "Upload Avatar",
    uploading: "Uploading...",
    removeAvatar: "Remove Avatar",
    avatarHint: "Supports JPG, PNG, GIF, WebP formats. Max 5MB",
    barkPushUrl: "Bark Push URL",
    timezone: "Timezone",
    notificationChannels: "Notification Channels",
    webNotifications: "Web Notifications",
    webNotificationsDesc: "Web notification toggle",
    barkAlerts: "Bark Alerts",
    barkAlertsDesc: "Bark push notification toggle",

    // Change Password
    changePassword: "Change Password",
    currentPassword: "Current Password",
    newPassword: "New Password",
    confirmNewPassword: "Confirm New Password",
    passwordChanged: "Password changed successfully",
    passwordMismatch: "Passwords do not match",
    passwordTooShort: "Password must be at least 6 characters",
    currentPasswordRequired: "Please enter current password",
    newPasswordRequired: "Please enter new password",

    // Recurrence
    hourly: "Hourly",
    daily: "Daily",
    weekly: "Weekly",
    monthly: "Monthly",
    yearly: "Yearly",

    // Recurrence Picker - Modes
    modeDaily: "Daily",
    modeWeekly: "Weekly",
    modeBiweekly: "Biweekly",
    modeMonthly: "Monthly",
    modeYearly: "Yearly",

    // Recurrence Picker - Weekdays
    sun: "Su",
    mon: "Mo",
    tue: "Tu",
    wed: "We",
    thu: "Th",
    fri: "Fr",
    sat: "Sa",

    // Recurrence Picker - Months
    jan: "Jan",
    feb: "Feb",
    mar: "Mar",
    apr: "Apr",
    may: "May",
    jun: "Jun",
    jul: "Jul",
    aug: "Aug",
    sep: "Sep",
    oct: "Oct",
    nov: "Nov",
    dec: "Dec",

    // Recurrence Picker - UI
    selectWeekday: "Select weekday",
    selectMonthday: "Select day",
    selectYearlyDate: "Select date",
    everyMonth: "Every month on",
    everyYear: "Every year on",
    dayUnit: "",
    dailyNoOptions: "Will repeat daily at the selected time",
    willRepeat: "Will repeat:",
    recurrencePreviewDaily: "Every day at {time}",
    recurrencePreviewWeekly: "Every {weekday} at {time}",
    recurrencePreviewBiweekly: "Every other {weekday} at {time}",
    recurrencePreviewMonthly: "Every month on day {day} at {time}",
    recurrencePreviewYearly: "Every year on {month} {day} at {time}",

    // DateTime Picker
    selectDateTime: "Select date and time",
    time: "Time",
    hour: "Hour",
    minute: "Min",
    now: "Now",

    // Language
    language: "Language",
    chinese: "中文",
    english: "English",

    // Invite Management
    navInvites: "Invites",
    inviteManagement: "Invite Management",
    inviteManagementDesc: "Generate invite codes and track registrations",
    createInvite: "Create Invite",
    createInviteDesc: "Generate a new invite code to share with others",
    maxUses: "Max Uses",
    expiresInDays: "Expires In (days)",
    generateInvite: "Generate Invite",
    myInvites: "My Invites",
    myInvitesDesc: "View your invite codes and registration status",
    noInvites: "No invite codes yet",
    usage: "Usage",
    expiresAt: "Expires At",
    status: "Status",
    statusActive: "Active",
    statusExpired: "Expired",
    statusRevoked: "Revoked",
    statusExhausted: "Exhausted",
    revoke: "Revoke",
    revokeInvite: "Revoke Invite",
    revokeInviteDesc: "Are you sure you want to revoke invite code \"{code}\"? It will no longer be usable.",
    registeredUsers: "Registered Users",
    noRegisteredUsers: "No users have registered with this invite code",
    viewDetails: "View Details",
    copyCode: "Copy Code",
    copied: "Copied",
  },
} as const;

export type Locale = keyof typeof translations;
export type TranslationKey = keyof typeof translations.zh;
