- A project's row, held, is dragged before or after another, or a little to the right to become its sub-task, or onto a section's heading; its sub-tasks go with it, and Order changed offers Undo (TaskRepository.place). The list scrolls at its edges. - The add button is dragged onto a project's list to add the task between two rows, onto a day in Upcoming for that day, onto Today for today; dropped back on its place, an ×, it gives up. - Holding a row now drags it; a swipe to the right selects it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
461 lines
12 KiB
Text
461 lines
12 KiB
Text
{
|
||
"@@locale": "en",
|
||
"appTitle": "Halkyon Todo",
|
||
"@appTitle": {
|
||
"description": "The app's name: the window's title, and where halkyon_app's texts name the app."
|
||
},
|
||
"launchProduct": "Todo",
|
||
"@launchProduct": {
|
||
"description": "The app's word in its wordmark, under \"Halkyon\"."
|
||
},
|
||
"instanceFirstStartSubtitle": "Choose the instance to keep your tasks on. Someone runs each one; you can add others later.",
|
||
"accountTitle": "Account",
|
||
"accountDeleteMessage": "Your account is deleted on the server and on all your devices. This can't be undone.",
|
||
"aboutTitle": "About Halkyon Todo",
|
||
"shellTabToday": "Today",
|
||
"shellTabUpcoming": "Upcoming",
|
||
"shellTabInbox": "Inbox",
|
||
"shellTabBrowse": "Browse",
|
||
"settingsTitle": "Settings",
|
||
"settingsVersion": "Version {version} (build {build})",
|
||
"@settingsVersion": {
|
||
"placeholders": {
|
||
"version": {
|
||
"type": "String"
|
||
},
|
||
"build": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"clear": "Clear",
|
||
"colorLabel": "Colour",
|
||
"completedShow": "Show done tasks",
|
||
"completedHide": "Hide done tasks",
|
||
"dateTitle": "Date",
|
||
"dateNextWeek": "Next week",
|
||
"dateWeekend": "This weekend",
|
||
"datePick": "Pick a day",
|
||
"dateTime": "Time",
|
||
"dateNone": "No date",
|
||
"dateNoneYet": "No date",
|
||
"dayToday": "Today",
|
||
"dayTomorrow": "Tomorrow",
|
||
"dayYesterday": "Yesterday",
|
||
"dayHeadingNamed": "{date} · {name}",
|
||
"@dayHeadingNamed": {
|
||
"placeholders": {
|
||
"date": {
|
||
"type": "String"
|
||
},
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"deadlineOn": "Deadline {day}",
|
||
"@deadlineOn": {
|
||
"placeholders": {
|
||
"day": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"deadlineNone": "No deadline",
|
||
"keysMissing": "This device can't save: it doesn't hold your account's keys. Sign in with your password or recovery phrase to add them.",
|
||
"labelsTitle": "Labels",
|
||
"labelsNone": "No labels yet.",
|
||
"labelsNoneSet": "No labels",
|
||
"labelsCount": "{count, plural, =1{1 label} other{{count} labels}}",
|
||
"@labelsCount": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"labelAdd": "New label",
|
||
"labelEdit": "Edit label",
|
||
"labelDelete": "Delete label",
|
||
"labelDeleteTitle": "Delete the label?",
|
||
"labelDeleteMessage": "\"{name}\" is taken off every task that has it.",
|
||
"@labelDeleteMessage": {
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"nameLabel": "Name",
|
||
"save": "Save",
|
||
"overdue": "Overdue",
|
||
"reschedule": "Reschedule",
|
||
"priorityTitle": "Priority",
|
||
"priority1": "Priority 1",
|
||
"priority2": "Priority 2",
|
||
"priority3": "Priority 3",
|
||
"priority4": "No priority",
|
||
"projectsTitle": "Projects",
|
||
"projectsNone": "No projects of your own yet.",
|
||
"projectAdd": "New project",
|
||
"projectEdit": "Edit project",
|
||
"projectDelete": "Delete project",
|
||
"projectDeleteTitle": "Delete the project?",
|
||
"projectDeleteMessage": "\"{name}\" is deleted with its sections and tasks, on all your devices.",
|
||
"@projectDeleteMessage": {
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"projectEmptyTitle": "Nothing to do here",
|
||
"projectEmptyHint": "Add a task with the + button.",
|
||
"projectGone": "This project was deleted.",
|
||
"projectMenu": "More",
|
||
"projectPickTitle": "Project",
|
||
"sectionAdd": "New section",
|
||
"sectionEdit": "Rename section",
|
||
"sectionDelete": "Delete section",
|
||
"sectionDeleteTitle": "Delete the section?",
|
||
"sectionDeleteMessage": "\"{name}\" is deleted with its tasks.",
|
||
"@sectionDeleteMessage": {
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"sectionMenu": "Section",
|
||
"subTasks": "Sub-tasks",
|
||
"subTasksDone": "Sub-tasks {done}/{count}",
|
||
"@subTasksDone": {
|
||
"placeholders": {
|
||
"done": {
|
||
"type": "int"
|
||
},
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"subTaskAdd": "Add sub-task",
|
||
"taskTitle": "Task",
|
||
"taskAddTitle": "Add task",
|
||
"taskAdd": "Add",
|
||
"taskAddOn": "Add a task on {day}",
|
||
"@taskAddOn": {
|
||
"placeholders": {
|
||
"day": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"taskTitleHint": "What's to be done?",
|
||
"taskDescription": "Description",
|
||
"taskDescriptionHint": "Description",
|
||
"taskComplete": "Mark as done",
|
||
"taskReopen": "Mark as not done",
|
||
"taskCompleted": "Task done",
|
||
"taskDelete": "Delete task",
|
||
"taskDeleteTitle": "Delete the task?",
|
||
"taskDeleteMessage": "\"{title}\" is deleted on all your devices.",
|
||
"@taskDeleteMessage": {
|
||
"placeholders": {
|
||
"title": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"taskDeleteWithSubTasks": "\"{title}\" is deleted with its {count, plural, =1{sub-task} other{{count} sub-tasks}}, on all your devices.",
|
||
"@taskDeleteWithSubTasks": {
|
||
"placeholders": {
|
||
"title": {
|
||
"type": "String"
|
||
},
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"taskGone": "This task was deleted.",
|
||
"todayEmptyTitle": "Nothing due today",
|
||
"todayEmptyHint": "Tasks dated today, and those overdue, show here.",
|
||
"lockedRows": "{count, plural, =1{1 item doesn't open on this device.} other{{count} items don't open on this device.}}",
|
||
"@lockedRows": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"inboxMissingTitle": "No Inbox yet",
|
||
"inboxMissingHint": "Your Inbox comes with the next sync, or once this device holds your account's keys.",
|
||
"repeatTitle": "Repeat",
|
||
"repeatNone": "Doesn't repeat",
|
||
"repeatCustom": "Custom",
|
||
"repeatEveryDay": "{count, plural, =1{Every day} other{Every {count} days}}",
|
||
"@repeatEveryDay": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"repeatEveryWeek": "{count, plural, =1{Every week} other{Every {count} weeks}}",
|
||
"@repeatEveryWeek": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"repeatEveryMonth": "{count, plural, =1{Every month} other{Every {count} months}}",
|
||
"@repeatEveryMonth": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"repeatEveryYear": "{count, plural, =1{Every year} other{Every {count} years}}",
|
||
"@repeatEveryYear": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"repeatWeekdays": "Every weekday",
|
||
"repeatOn": "{rule} on {on}",
|
||
"@repeatOn": {
|
||
"placeholders": {
|
||
"rule": {
|
||
"type": "String"
|
||
},
|
||
"on": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"repeatMonthDay": "day {day}",
|
||
"@repeatMonthDay": {
|
||
"placeholders": {
|
||
"day": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"repeatMonthWeek": "the {nth, select, 1{first} 2{second} 3{third} 4{fourth} other{last}} {weekday}",
|
||
"@repeatMonthWeek": {
|
||
"placeholders": {
|
||
"nth": {
|
||
"type": "String"
|
||
},
|
||
"weekday": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"repeatFromCompletion": "{rule}, from when it's done",
|
||
"@repeatFromCompletion": {
|
||
"placeholders": {
|
||
"rule": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"repeatUntil": "{rule}, until {day}",
|
||
"@repeatUntil": {
|
||
"placeholders": {
|
||
"rule": {
|
||
"type": "String"
|
||
},
|
||
"day": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"repeatLeft": "{rule}, {count, plural, =0{this time only} =1{once more} other{{count} more times}}",
|
||
"@repeatLeft": {
|
||
"placeholders": {
|
||
"rule": {
|
||
"type": "String"
|
||
},
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"repeatEvery": "Every",
|
||
"repeatUnitDays": "Days",
|
||
"repeatUnitWeeks": "Weeks",
|
||
"repeatUnitMonths": "Months",
|
||
"repeatUnitYears": "Years",
|
||
"repeatCountFromCompletion": "Count from when it's done",
|
||
"repeatCountFromCompletionHint": "Not from its date: done late, it comes again as long after.",
|
||
"repeatEnds": "Ends",
|
||
"repeatEndsNever": "Never",
|
||
"repeatEndsOn": "On a day",
|
||
"repeatEndsAfter": "{count, plural, =1{After once} other{After {count} times}}",
|
||
"@repeatEndsAfter": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"remindersTitle": "Reminders",
|
||
"remindersNone": "No reminders",
|
||
"reminderAtTime": "At its time",
|
||
"reminderMinutesBefore": "{count, plural, =1{1 minute before} other{{count} minutes before}}",
|
||
"@reminderMinutesBefore": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"reminderHoursBefore": "{count, plural, =1{1 hour before} other{{count} hours before}}",
|
||
"@reminderHoursBefore": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"reminderDaysBefore": "{count, plural, =1{1 day before} other{{count} days before}}",
|
||
"@reminderDaysBefore": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"reminderDue": "Due at {time}",
|
||
"@reminderDue": {
|
||
"placeholders": {
|
||
"time": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"remindersChannel": "Task reminders",
|
||
"remindersNotAllowed": "Notifications are off for Halkyon Todo: reminders show once you allow them in the system's settings.",
|
||
"remindersOnThisDevice": "Reminders come on each of your devices that opens your tasks.",
|
||
"weekPrevious": "Previous week",
|
||
"weekNext": "Following week",
|
||
"searchTitle": "Search",
|
||
"searchHint": "Search tasks and projects",
|
||
"searchEmpty": "Find a task by the words in its title, its description or its labels. Search runs on this device: your instance can't read your tasks.",
|
||
"searchNone": "Nothing found for “{query}”.",
|
||
"@searchNone": {
|
||
"placeholders": {
|
||
"query": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"searchProjects": "Projects",
|
||
"searchTasks": "Tasks",
|
||
"taskMore": "Task options",
|
||
"taskAddedOn": "Added on {when}",
|
||
"@taskAddedOn": {
|
||
"placeholders": {
|
||
"when": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"taskDuplicate": "Duplicate",
|
||
"taskDuplicated": "Task duplicated",
|
||
"subTasksHideDone": "Hide done sub-tasks",
|
||
"subTasksShowDone": "Show done sub-tasks",
|
||
"taskClose": "Close",
|
||
"taskPath": "Where the task is",
|
||
"weekToday": "Back to today",
|
||
"monthPrevious": "Previous month",
|
||
"monthNext": "Following month",
|
||
"monthShow": "Show the whole month",
|
||
"monthHide": "Show one week",
|
||
"selectTasks": "Select tasks",
|
||
"selectionCount": "{count, plural, =0{Select tasks} =1{1 task selected} other{{count} tasks selected}}",
|
||
"@selectionCount": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"selectionEnd": "Stop selecting",
|
||
"selectionDate": "Date",
|
||
"selectionMove": "Move to",
|
||
"selectionLabels": "Labels",
|
||
"selectionPriority": "Priority",
|
||
"selectionMore": "More",
|
||
"selectionDelete": "{count, plural, =1{Delete 1 task} other{Delete {count} tasks}}",
|
||
"@selectionDelete": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"selectionDeleteTitle": "Delete the tasks?",
|
||
"selectionDeleteMessage": "{count, plural, =1{1 task is deleted with its sub-tasks, on all your devices.} other{{count} tasks are deleted with their sub-tasks, on all your devices.}}",
|
||
"@selectionDeleteMessage": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"selectionDuplicate": "{count, plural, =1{Duplicate 1 task} other{Duplicate {count} tasks}}",
|
||
"@selectionDuplicate": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"selectionComplete": "{count, plural, =1{Complete 1 task} other{Complete {count} tasks}}",
|
||
"@selectionComplete": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"selectionDeadline": "Deadline",
|
||
"tasksCompleted": "{count, plural, =1{Task done} other{{count} tasks done}}",
|
||
"@tasksCompleted": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"swipeSelect": "Select",
|
||
"swipeDate": "Date",
|
||
"tasksMenu": "More",
|
||
"quickAddMore": "More",
|
||
"@quickAddMore": {
|
||
"description": "Quick add's + menu, holding Description and Deadline (ADR 0033, D15)."
|
||
},
|
||
"quickAddTokenHint": "Tap a highlighted word to keep it as text.",
|
||
"@quickAddTokenHint": {
|
||
"description": "Below quick add's title while it has tokens recognised (D15)."
|
||
},
|
||
"deadlineTitle": "Deadline",
|
||
"@deadlineTitle": {
|
||
"description": "Quick add's deadline chip and menu entry (D15)."
|
||
},
|
||
"orderChanged": "Order changed",
|
||
"@orderChanged": {
|
||
"description": "Snack bar after a task was dragged into another place (ADR 0033, D16)."
|
||
},
|
||
"addTaskCancel": "Drop here to cancel",
|
||
"@addTaskCancel": {
|
||
"description": "The × left in the add button's place while it is dragged (D16)."
|
||
}
|
||
}
|