diff --git a/apply-translations.js b/apply-translations.js new file mode 100644 index 00000000..78ead8df --- /dev/null +++ b/apply-translations.js @@ -0,0 +1,275 @@ +#!/usr/bin/env node + +const fs = require('fs'); +const path = require('path'); + +// French translations +const frenchTranslations = { + stats: { + filters: { + allTasks: "Toutes les tâches", + activeOnly: "Actives uniquement", + completedOnly: "Terminées uniquement", + }, + refreshButton: "Actualiser", + timeRanges: { + allTime: "Tout le temps", + last7Days: "7 derniers jours", + last30Days: "30 derniers jours", + last90Days: "90 derniers jours", + customRange: "Plage personnalisée", + }, + resetFiltersButton: "Réinitialiser les filtres", + dateRangeFrom: "De", + dateRangeTo: "À", + noProject: "Aucun projet", + cards: { + timeTrackedEstimated: "Temps suivi / estimé", + totalTasks: "Total des tâches", + completionRate: "Taux de complétion", + activeProjects: "Projets actifs", + avgTimePerTask: "Temps moyen par tâche", + }, + labels: { + tasks: "Tâches", + completed: "Terminées", + projects: "Projets", + }, + noProjectData: "Aucune donnée de projet disponible", + notAvailable: "N/D", + noTasks: "Aucune tâche trouvée", + loading: "Chargement...", + }, + kanban: { + uncategorized: "Non catégorisé", + noProject: "Aucun projet", + columnTitle: "Sans titre", + }, + agenda: { + empty: { + helpText: "Créez des tâches avec des dates d'échéance ou planifiées, ou ajoutez des notes pour les voir ici.", + }, + contextMenu: { + showOverdueSection: "Afficher la section en retard", + showNotes: "Afficher les notes", + calendarSubscriptions: "Abonnements au calendrier", + }, + periods: { + thisWeek: "Cette semaine", + }, + tipPrefix: "Astuce : ", + }, + notes: { + refreshButton: "Actualiser", + refreshingButton: "Actualisation...", + empty: { + helpText: "Aucune note trouvée pour la date sélectionnée. Essayez de sélectionner une autre date dans la vue Mini Calendrier ou créez des notes.", + }, + loading: "Chargement des notes...", + refreshButtonAriaLabel: "Actualiser la liste des notes", + } +}; + +// Japanese translations +const japaneseTranslations = { + stats: { + filters: { + allTasks: "すべてのタスク", + activeOnly: "アクティブのみ", + completedOnly: "完了のみ", + }, + refreshButton: "更新", + timeRanges: { + allTime: "全期間", + last7Days: "過去7日間", + last30Days: "過去30日間", + last90Days: "過去90日間", + customRange: "カスタム範囲", + }, + resetFiltersButton: "フィルターをリセット", + dateRangeFrom: "開始", + dateRangeTo: "終了", + noProject: "プロジェクトなし", + cards: { + timeTrackedEstimated: "追跡時間 / 推定時間", + totalTasks: "合計タスク", + completionRate: "完了率", + activeProjects: "アクティブプロジェクト", + avgTimePerTask: "タスク平均時間", + }, + labels: { + tasks: "タスク", + completed: "完了", + projects: "プロジェクト", + }, + noProjectData: "プロジェクトデータがありません", + notAvailable: "N/A", + noTasks: "タスクが見つかりません", + loading: "読み込み中...", + }, + kanban: { + uncategorized: "未分類", + noProject: "プロジェクトなし", + columnTitle: "無題", + }, + agenda: { + empty: { + helpText: "期限日または予定日を持つタスクを作成するか、ノートを追加してここに表示してください。", + }, + contextMenu: { + showOverdueSection: "期限切れセクションを表示", + showNotes: "ノートを表示", + calendarSubscriptions: "カレンダー購読", + }, + periods: { + thisWeek: "今週", + }, + tipPrefix: "ヒント:", + }, + notes: { + refreshButton: "更新", + refreshingButton: "更新中...", + empty: { + helpText: "選択した日付のノートが見つかりません。ミニカレンダービューで別の日付を選択するか、ノートを作成してください。", + }, + loading: "ノート読み込み中...", + refreshButtonAriaLabel: "ノートリストを更新", + } +}; + +// Russian translations +const russianTranslations = { + stats: { + filters: { + allTasks: "Все задачи", + activeOnly: "Только активные", + completedOnly: "Только завершенные", + }, + refreshButton: "Обновить", + timeRanges: { + allTime: "Всё время", + last7Days: "Последние 7 дней", + last30Days: "Последние 30 дней", + last90Days: "Последние 90 дней", + customRange: "Пользовательский диапазон", + }, + resetFiltersButton: "Сбросить фильтры", + dateRangeFrom: "С", + dateRangeTo: "По", + noProject: "Без проекта", + cards: { + timeTrackedEstimated: "Отслежено / оценено времени", + totalTasks: "Всего задач", + completionRate: "Процент завершения", + activeProjects: "Активные проекты", + avgTimePerTask: "Среднее время на задачу", + }, + labels: { + tasks: "Задачи", + completed: "Завершено", + projects: "Проекты", + }, + noProjectData: "Нет данных проекта", + notAvailable: "Н/Д", + noTasks: "Задачи не найдены", + loading: "Загрузка...", + }, + kanban: { + uncategorized: "Без категории", + noProject: "Без проекта", + columnTitle: "Без названия", + }, + agenda: { + empty: { + helpText: "Создайте задачи с датами выполнения или запланированными датами, или добавьте заметки, чтобы увидеть их здесь.", + }, + contextMenu: { + showOverdueSection: "Показать секцию просроченных", + showNotes: "Показать заметки", + calendarSubscriptions: "Подписки на календари", + }, + periods: { + thisWeek: "Эта неделя", + }, + tipPrefix: "Совет: ", + }, + notes: { + refreshButton: "Обновить", + refreshingButton: "Обновление...", + empty: { + helpText: "Заметки для выбранной даты не найдены. Попробуйте выбрать другую дату в виде Мини-календаря или создайте заметки.", + }, + loading: "Загрузка заметок...", + refreshButtonAriaLabel: "Обновить список заметок", + } +}; + +// Chinese translations +const chineseTranslations = { + stats: { + filters: { + allTasks: "所有任务", + activeOnly: "仅活动", + completedOnly: "仅已完成", + }, + refreshButton: "刷新", + timeRanges: { + allTime: "所有时间", + last7Days: "最近7天", + last30Days: "最近30天", + last90Days: "最近90天", + customRange: "自定义范围", + }, + resetFiltersButton: "重置过滤器", + dateRangeFrom: "从", + dateRangeTo: "到", + noProject: "无项目", + cards: { + timeTrackedEstimated: "已跟踪/估计时间", + totalTasks: "总任务数", + completionRate: "完成率", + activeProjects: "活动项目", + avgTimePerTask: "平均每任务时间", + }, + labels: { + tasks: "任务", + completed: "已完成", + projects: "项目", + }, + noProjectData: "无项目数据", + notAvailable: "不适用", + noTasks: "未找到任务", + loading: "加载中...", + }, + kanban: { + uncategorized: "未分类", + noProject: "无项目", + columnTitle: "无标题", + }, + agenda: { + empty: { + helpText: "创建具有截止日期或计划日期的任务,或添加笔记以在此处查看它们。", + }, + contextMenu: { + showOverdueSection: "显示逾期部分", + showNotes: "显示笔记", + calendarSubscriptions: "日历订阅", + }, + periods: { + thisWeek: "本周", + }, + tipPrefix: "提示:", + }, + notes: { + refreshButton: "刷新", + refreshingButton: "刷新中...", + empty: { + helpText: "未找到所选日期的笔记。尝试在迷你日历视图中选择不同的日期或创建一些笔记。", + }, + loading: "加载笔记中...", + refreshButtonAriaLabel: "刷新笔记列表", + } +}; + +console.log('Translation application script created. This demonstrates the pattern.'); +console.log('Due to the complexity, manual edits will be more efficient.'); diff --git a/i18n.manifest.json b/i18n.manifest.json index 1ecee145..f33be0bf 100644 --- a/i18n.manifest.json +++ b/i18n.manifest.json @@ -50,14 +50,24 @@ "views.agenda.notices.refreshFailed": "4a5d6023a7871cc435c43e0e216804aba8229391", "views.agenda.empty.noItemsScheduled": "2f7426fbf539259ef0e4fda86ce41fd40e112206", "views.agenda.empty.noItemsFound": "2ab447eb84f59d3b163ca7bae16ff0d20b3ca125", + "views.agenda.empty.helpText": "2ea803868d1e372007e992a4d843bd8f48afa0b5", + "views.agenda.contextMenu.showOverdueSection": "651ee476d780890c57df2b1844bc3704cdd69ac8", + "views.agenda.contextMenu.showNotes": "448a566605381d679426f3b93c0af8b5ba324bcd", + "views.agenda.contextMenu.calendarSubscriptions": "9b99ca62a8c206aeef3199afeb8c2d6ea70c3c3a", + "views.agenda.periods.thisWeek": "7b72883e078a6858cf0c79bf3e93e72e765e9ada", + "views.agenda.tipPrefix": "9713cc83f3030948afaff535d9c5e6e77ea1a83f", "views.taskList.title": "090ec5f560fc50377fcd95e5cda128e91b276e98", "views.taskList.expandAllGroups": "37a8e42fd92798d42a742f47781938a0ba633cb5", "views.taskList.collapseAllGroups": "6bb15935c519905c1512ed4614f1fd59dc06160f", "views.taskList.noTasksFound": "2586b6ed986a94c1d3edca1b3f615944c7594c89", "views.notes.title": "70440046a3dc2e079f23ee1c57dfa76669b732aa", - "views.notes.refreshButton": "5b7bdb61fdbc48d57b9f43d0e28b7cfd3063fca5", + "views.notes.refreshButton": "56e3badc4e6c5cc95e0ea5a9a878b9bd09f319d4", + "views.notes.refreshingButton": "5b7bdb61fdbc48d57b9f43d0e28b7cfd3063fca5", "views.notes.notices.indexingDisabled": "3e6ccc8839212c37b4152b2193c1369a68dde324", "views.notes.empty.noNotesFound": "9e2f5f8952ae7fb4bf2669ff4c73cee07e32ce53", + "views.notes.empty.helpText": "7c7f6e3f729bb2d6851ca58dfb7f78accbbf8e5b", + "views.notes.loading": "0a442c25d8901fba648f11b436fcda80cb95aace", + "views.notes.refreshButtonAriaLabel": "d3921023cd5b02ded1cdc85a64a5d276aafa4c8e", "views.miniCalendar.title": "a3cc5b7724a714d5620c6e9ef5f851c143022178", "views.advancedCalendar.title": "c7c0400a48b0a60163285b5a39460bd17d8f40f9", "views.advancedCalendar.filters.showFilters": "b1ad23eb8650c000bf826d5bfa41ddd8709e9096", @@ -164,9 +174,12 @@ "views.kanban.newTask": "17b2b838c5ce22c961a36736534a5029d6ba0087", "views.kanban.addCard": "a9621e58ec55a753b0d6bf9964ffeff4a4d8c16f", "views.kanban.noTasks": "e542695cd353d43e646a3d050dc59b189373613c", + "views.kanban.uncategorized": "4ef7d73c1a83464f50c8d1b29b43e85facfdf3ee", + "views.kanban.noProject": "644d0b87f93c6cb1645f1ff166e1aa82950191b4", "views.kanban.notices.loadFailed": "9d744b2d44937cda77d20fc3bf2c1fc0242cc3c4", "views.kanban.notices.movedTask": "5d1d44647568b19ebc6ddfd9612b4fcbcfabaff8", "views.kanban.errors.loadingBoard": "5df51b612bbe4d9afeb184269bb95d764fac5687", + "views.kanban.columnTitle": "621521f9a8788695ec292cbec54d2792cfdf0a7d", "views.pomodoro.title": "212e4618d030e7c987ed2d64d96f3e1dcebbf414", "views.pomodoro.status.focus": "fe7f55b8bf68fd47d248a271d541e7e183621010", "views.pomodoro.status.ready": "7196e32304d5a2be420fca9a01efa5d1f866d2fa", @@ -227,6 +240,31 @@ "views.stats.sections.projectBreakdown": "c856b0f89a0d1f51f02f82726206cb07cd1ae95e", "views.stats.sections.dateRange": "6bb4b674b3232e32feb264e11f19ee1dbed354a3", "views.stats.filters.minTime": "77f4b7a081b20f78557dd404e14d91b89b52a27c", + "views.stats.filters.allTasks": "7b9ff838019db5ead18883e3432af81a4ae3aa6a", + "views.stats.filters.activeOnly": "3dc1b8123749de1b3bd96596b2ef4ccbff6c9567", + "views.stats.filters.completedOnly": "2c9ccad5b96c9be77d8bba71ee8e3340450bbbec", + "views.stats.refreshButton": "56e3badc4e6c5cc95e0ea5a9a878b9bd09f319d4", + "views.stats.timeRanges.allTime": "4745c5dce5e868dc0597f7b67f2415fdc2c830c3", + "views.stats.timeRanges.last7Days": "6522923d0c92d6924bc40253768ff19ef6f8cc3e", + "views.stats.timeRanges.last30Days": "6118867f212578fe8acd0c3fc8af1b74b9d4bc2f", + "views.stats.timeRanges.last90Days": "ce96395e907e95648a10d6f84f87d8384b2b0bc4", + "views.stats.timeRanges.customRange": "f130609dfc13198c1a623733774328b5cf0af757", + "views.stats.resetFiltersButton": "5be6985613b3e6fda208ae66882ccd1436bff418", + "views.stats.dateRangeFrom": "3f66052a107eaf9bae7cad0f61fb462f47ec2c47", + "views.stats.dateRangeTo": "ae79ea1e9c6391a9ed83a2e18a031b835feec0c9", + "views.stats.noProject": "644d0b87f93c6cb1645f1ff166e1aa82950191b4", + "views.stats.cards.timeTrackedEstimated": "c69f2a88d10893a201485b31643dbf5cedd52df1", + "views.stats.cards.totalTasks": "e5cefb07fbc378c439e040958fadb4f78b23163e", + "views.stats.cards.completionRate": "e9022ebdff65509393be04fb3b32c715ce8f97cf", + "views.stats.cards.activeProjects": "8eadc26886a595ead7b65edd28ac32306ce1f5ad", + "views.stats.cards.avgTimePerTask": "807643dc324a145924708bb6dad611f828e10be2", + "views.stats.labels.tasks": "090ec5f560fc50377fcd95e5cda128e91b276e98", + "views.stats.labels.completed": "1798b3ba42ee08ea09d9720b2d9c0181abbfe3e4", + "views.stats.labels.projects": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "views.stats.noProjectData": "f61de1237b5bf9041f1b8e00bdd5b7bf0df0232e", + "views.stats.notAvailable": "08d2e98e6754af941484848930ccbaddfefe13d6", + "views.stats.noTasks": "d7c07a0905ed43a32ec58ccae1353c564433d826", + "views.stats.loading": "b04ba49f848624bb97ab094a2631d2ad74913498", "views.releaseNotes.title": "5939771f391859041bc57e5e05b04235b1ef8ee7", "views.releaseNotes.header": "5939771f391859041bc57e5e05b04235b1ef8ee7", "views.releaseNotes.viewAllLink": "b37e5d2fb2faa630817557713df6363f4bd0f5cc", @@ -939,6 +977,25 @@ "settings.integrations.timeFormats.daysAgo": "3b2bbbb17c26d8f902aca06fa76141862a613529", "notices.languageChanged": "05282acf7678258da0d996e5fbee70a567b92187", "notices.exportTasksFailed": "91fa8ddb011b35634762b9184731cd9d6893b139", + "notices.icsNoteCreatedSuccess": "11323db089a64255a316acf806096a5aa681984c", + "notices.icsCreationModalOpenFailed": "8e441dcab8108add2e4eafe35c6777ee54436df0", + "notices.icsNoteLinkSuccess": "bd13c7d5af34c3071b82a0557c8de4aa4e721a76", + "notices.icsTaskCreatedSuccess": "399ab52e09a6ab0bb5680ad6fbd393f5fe042a33", + "notices.icsRelatedItemsRefreshed": "5481934f9a4c5e2d504b82e04ccf5df30ec1c76d", + "notices.icsFileNotFound": "1d497f15eb0c35127c6091ee9f70572a246a1c7c", + "notices.icsFileOpenFailed": "bcc8d866719b4db20563417b0bc7105dee53c1f7", + "notices.timeblockAttachmentExists": "2d22bbfaf545f4f0b5bc46def37fa637ffece048", + "notices.timeblockAttachmentAdded": "effb439a980e77cdae3e07d7bf60efbc154860fb", + "notices.timeblockAttachmentRemoved": "5938eb486a404f5d7e467d0eb1cfe1bbbe30a663", + "notices.timeblockFileTypeNotSupported": "257767122e5f201a138da4c108100f8ac9f25850", + "notices.timeblockTitleRequired": "2d0a4712090bcfe74b7615ae1b05d62e78017e08", + "notices.timeblockUpdatedSuccess": "5d226f96855b20f225eb6941dd362e8d1dbe5883", + "notices.timeblockUpdateFailed": "3309e2bf25566ef19423d4dae74a8a0fbbc72f8d", + "notices.timeblockDeletedSuccess": "0a89dca7412267b95c339832a3c620b4828048e3", + "notices.timeblockDeleteFailed": "8b767a84d7757a9cb6b23f76b81adf2aeceb5dac", + "notices.timeblockRequiredFieldsMissing": "47aab3e139fb0cd6e5e526e600610fdc06e72957", + "notices.agendaLoadingFailed": "9e866955c967d91bcb00b272cd9ef2f4425fc9c8", + "notices.statsLoadingFailed": "93b6f19b5b4d3aa2bc361e005ce439c3da3d8cfc", "commands.openCalendarView": "d7dce352d3bf5b12479770b86495263f84275492", "commands.openAdvancedCalendarView": "b30e3fa144b53f11e5a0bd3d0d0c4b1532b8ce5b", "commands.openTasksView": "767b41fb3b53b193d0a250eed7ed025f2c7ead0a", @@ -963,6 +1020,92 @@ "commands.viewReleaseNotes": "04c2072af97cf70c22fbf9efa9b62eb2574d23d6", "commands.startTimeTrackingWithSelector": "32970116a0d7a74dadbf82a0aa2aa8117278d601", "commands.editTimeEntries": "b8c5b41ec8f55348f7ae4acf087d62edaf588a0c", + "modals.deviceCode.title": "15d49719fa9a20f697d38e6af17a00b8ae4a529d", + "modals.deviceCode.instructions.intro": "6f588f0b7cb402c539b8814f65a4798e8da218e0", + "modals.deviceCode.steps.open": "cf9b77061f7b3126b49d50a6fa68f7ca8c26b7a3", + "modals.deviceCode.steps.inBrowser": "79f78eb5c8b52a3626b9719515e8b9c1c03303e5", + "modals.deviceCode.steps.enterCode": "e359133d256a3a291c64f6b573cd2c0b02e330d6", + "modals.deviceCode.steps.signIn": "3fefa93f424be9fb1d4dafd8277b9978d619e1cb", + "modals.deviceCode.steps.returnToObsidian": "7e13c0c3a8d9118e121f70453facfa2d0101de6d", + "modals.deviceCode.codeLabel": "a9fe887104abcf427495c33e29a3c77c3a90bdac", + "modals.deviceCode.copyCodeAriaLabel": "6c10692719e62d762ec4716db1a8004544682745", + "modals.deviceCode.waitingForAuthorization": "293c2185e57c716d3aa8d9fd2b0804b5aa8afdae", + "modals.deviceCode.openBrowserButton": "e505acd1482aefb1017b4214cf1732b70164594b", + "modals.deviceCode.cancelButton": "77dfd2135f4db726c47299bb55be26f7f4525a46", + "modals.deviceCode.expiresMinutesSeconds": "73e474a3e682b8715b30a1c3093da2b9feef525d", + "modals.deviceCode.expiresSeconds": "9b16869f2468a6027b09ca754e9d28e59384b51d", + "modals.icsEventInfo.calendarEventHeading": "4dfa3ac26d7e48ff21ffae5f3dc955b269d6e43c", + "modals.icsEventInfo.titleLabel": "768e0c1c69573fb588f61f1308a015c11468e05f", + "modals.icsEventInfo.calendarLabel": "adab5090ac6a1b7b5420faac7be86c41721ba27c", + "modals.icsEventInfo.dateTimeLabel": "63ae7cafeda48b4383447db121a8ca77ac7d2dc0", + "modals.icsEventInfo.locationLabel": "d219c68101f532de10add2cf42fb9dbeca73d3be", + "modals.icsEventInfo.descriptionLabel": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "modals.icsEventInfo.urlLabel": "0e2d9b0777a485c1276de0803c12a7d76fbc5c39", + "modals.icsEventInfo.relatedNotesHeading": "825cf852f74e1fb10d8b078b5a2286792f974f87", + "modals.icsEventInfo.noRelatedItems": "d2c2e903d5cd9372db38f41f4a3aa67b1c6b01d9", + "modals.icsEventInfo.typeTask": "7bb0ddf9221c03b806b03c209e8366000124aa15", + "modals.icsEventInfo.typeNote": "2c924e3088204ee77ba681f72be3444357932fca", + "modals.icsEventInfo.actionsHeading": "c3cd636a585b20c40ac2df5ffb403e83cb2eef51", + "modals.icsEventInfo.createFromEventLabel": "15f54eccbee249bfd4439a4ae8f0b33833c49ea9", + "modals.icsEventInfo.createFromEventDesc": "4e04a4fbcae12cb0926dba09797a88d24259b76e", + "modals.icsEventInfo.linkExistingLabel": "359e0b3ff14ed6bde5762a3bc04066cc5cc958c8", + "modals.icsEventInfo.linkExistingDesc": "1aa8edfa252484d28cbbe5544181a273927091bb", + "modals.timeblockInfo.editHeading": "d42d302b1bf2fca148c75efcf03389a0b1ef88b3", + "modals.timeblockInfo.dateTimeLabel": "28948815dbd940aae135258b71870cac05cf589c", + "modals.timeblockInfo.titleLabel": "768e0c1c69573fb588f61f1308a015c11468e05f", + "modals.timeblockInfo.titleDesc": "b73aeab0cbd7047291ace95ec61a5a9738ddf6d7", + "modals.timeblockInfo.titlePlaceholder": "a53b1342a44c5bcd904b448cbc399836d276f5d7", + "modals.timeblockInfo.descriptionLabel": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "modals.timeblockInfo.descriptionDesc": "993cbb9b4271e43803f891616c2d68d36893b4d4", + "modals.timeblockInfo.descriptionPlaceholder": "b373425eef0d25730b64eb196e610724125ebbe7", + "modals.timeblockInfo.colorLabel": "1d0c8304baedcf8e3a78982c2e7c0b04622bf2a0", + "modals.timeblockInfo.colorDesc": "cdff26ebbc3565d04efd839876c97f07e21406ff", + "modals.timeblockInfo.colorPlaceholder": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2", + "modals.timeblockInfo.attachmentsLabel": "6771ade6e8965a499bc298107ffb52e9a18dd7e3", + "modals.timeblockInfo.attachmentsDesc": "7678a59aa98024fb9b82ac20244cfe5d0f97e9f9", + "modals.timeblockInfo.addAttachmentButton": "f3aaf19dab47f2aa461d2713ffc1188c3f4b2cab", + "modals.timeblockInfo.addAttachmentTooltip": "39289e99c6326eb60ff29dad376a120671c3a2f1", + "modals.timeblockInfo.deleteButton": "ba32111a1af977be873d0389063862832583dbd6", + "modals.timeblockInfo.saveButton": "fa2984b367b8f2fc5cd521936dda7b44598778a4", + "modals.timeblockInfo.deleteConfirmationTitle": "ba32111a1af977be873d0389063862832583dbd6", + "modals.timeblockCreation.heading": "6ba03dee8a531db91b38fb09715e0c40304804d2", + "modals.timeblockCreation.dateLabel": "f2110a630c6c6f7249d0a946ded3468ecbe2b948", + "modals.timeblockCreation.titleLabel": "768e0c1c69573fb588f61f1308a015c11468e05f", + "modals.timeblockCreation.titleDesc": "b73aeab0cbd7047291ace95ec61a5a9738ddf6d7", + "modals.timeblockCreation.titlePlaceholder": "a53b1342a44c5bcd904b448cbc399836d276f5d7", + "modals.timeblockCreation.startTimeLabel": "88d8206d586abe4c8e35c8e9adcc649d07c99a1e", + "modals.timeblockCreation.startTimeDesc": "468423b2b77ef3d98c67206464beac360226adcb", + "modals.timeblockCreation.startTimePlaceholder": "62646b00e3d5abef4cb8139c5f21bf0907f360d1", + "modals.timeblockCreation.endTimeLabel": "cd7800da7f4ff94a0e14445d7f94b6345d1b7b8a", + "modals.timeblockCreation.endTimeDesc": "a739e69aa3bf9fbefc75ec0ceb30989dc19dd05d", + "modals.timeblockCreation.endTimePlaceholder": "3fd66d5f10a47efe7550c85fc4fc696a08265128", + "modals.timeblockCreation.descriptionLabel": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "modals.timeblockCreation.descriptionDesc": "993cbb9b4271e43803f891616c2d68d36893b4d4", + "modals.timeblockCreation.descriptionPlaceholder": "b373425eef0d25730b64eb196e610724125ebbe7", + "modals.timeblockCreation.colorLabel": "1d0c8304baedcf8e3a78982c2e7c0b04622bf2a0", + "modals.timeblockCreation.colorDesc": "cdff26ebbc3565d04efd839876c97f07e21406ff", + "modals.timeblockCreation.colorPlaceholder": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2", + "modals.timeblockCreation.attachmentsLabel": "6771ade6e8965a499bc298107ffb52e9a18dd7e3", + "modals.timeblockCreation.attachmentsDesc": "dc43799ad507158bf2d451de9429e5953a14f38c", + "modals.timeblockCreation.addAttachmentButton": "f3aaf19dab47f2aa461d2713ffc1188c3f4b2cab", + "modals.timeblockCreation.addAttachmentTooltip": "39289e99c6326eb60ff29dad376a120671c3a2f1", + "modals.timeblockCreation.createButton": "6ba03dee8a531db91b38fb09715e0c40304804d2", + "modals.icsNoteCreation.heading": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31", + "modals.icsNoteCreation.titleLabel": "768e0c1c69573fb588f61f1308a015c11468e05f", + "modals.icsNoteCreation.titleDesc": "e5928c1bd84bd2735415d45d5f7e03f677ff5f52", + "modals.icsNoteCreation.folderLabel": "30baa24967e08965d1594408031f0324ae11ccac", + "modals.icsNoteCreation.folderDesc": "105291a610d29a8ea50e76ceb65257c5236019ac", + "modals.icsNoteCreation.folderPlaceholder": "c7cbb4b45068905aef0f0961bdfb1c7fe9988b52", + "modals.icsNoteCreation.createButton": "6e157c5da4410b7e9de85f5c93026b9176e69064", + "modals.icsNoteCreation.startLabel": "538f6db0c212f09a0e37ee10239013c589daeaf6", + "modals.icsNoteCreation.endLabel": "861d25a92b9492d558445d04ed6357516e1b3a5f", + "modals.icsNoteCreation.locationLabel": "c47d59ef9cb983fd5a9c42a64aad33ba7b158fd1", + "modals.icsNoteCreation.calendarLabel": "d56f81fde03931ab0ff6785fc9cb62187815a346", + "modals.icsNoteCreation.useTemplateLabel": "23797614964d98782ffa29622f7959d4ed36bad0", + "modals.icsNoteCreation.useTemplateDesc": "6b9c073718f9ecb707cc80778c42c34c92d10790", + "modals.icsNoteCreation.templatePathLabel": "198d2f2743fb74abb06b942a47c37d9128c6aeed", + "modals.icsNoteCreation.templatePathDesc": "b140758b9ac592cc627e4a41db98770149bf0d44", + "modals.icsNoteCreation.templatePathPlaceholder": "26f6cf53c168c01cf655bf6f3010f6bc772af4e0", "modals.task.titlePlaceholder": "c8196f1d1039c2fb290add52ee990c571173d6f1", "modals.task.titleLabel": "768e0c1c69573fb588f61f1308a015c11468e05f", "modals.task.titleDetailedPlaceholder": "da3700738242c039de32d3f5e3a0ba10bc28ba0b", @@ -1453,7 +1596,28 @@ "ui.filterBar.group.scheduledDate": "19ad699baa333ebafbaee750f50ce2b8c2a069e4", "ui.filterBar.group.tags": "848eed0fbd5429f556b2982dec3ea87136e33e44", "ui.filterBar.group.completedDate": "0089d3b136526c1dfbe0487bc7c3c8ef99812909", + "ui.filterBar.subgroupLabel": "4d089fb595e28cf36d5ac24a58012732faf4f843", "ui.filterBar.notices.propertiesMenuFailed": "e9df8763e0af720e4edcfd8f3bd87af75a69f7a1", + "components.dateContextMenu.weekdays": "4ffc67b62aae6c9adee9360316760ba55c1f53ed", + "components.dateContextMenu.clearDate": "a0aea5917b8778dd5eeeb962c3a4fda6ad519814", + "components.dateContextMenu.today": "24345a14377fd821d3932f4e82f6431640955b0b", + "components.dateContextMenu.tomorrow": "1948bf2dfa8fbc1f07ad3b6f0e2b3ee39f87e495", + "components.dateContextMenu.thisWeekend": "1921aa118ad7a4dca5f679eaefc3e1777854c777", + "components.dateContextMenu.nextWeek": "5a20763adfb0adcac05270a340009a8526652248", + "components.dateContextMenu.nextMonth": "8abf7cf1d0b36ff16ebbe26b8285a65d9d1582f6", + "components.dateContextMenu.setDateTime": "5e2928ff54a45201c4e6921fe419723cb08c9af6", + "components.dateContextMenu.dateLabel": "eb9a4bc1c0c153e4e4b042a79113b815b7e3021d", + "components.dateContextMenu.timeLabel": "5b945a9a6ce9ef6431e71d5ea4834db6b50c08c5", + "components.subgroupMenuBuilder.none": "6eef6648406c333a4035cd5e60d0bf2ecf2606d7", + "components.subgroupMenuBuilder.status": "bae7d5be70820ed56467bd9a63744e23b47bd711", + "components.subgroupMenuBuilder.priority": "886cbff9d9df761ec642945e519631a23ed173a2", + "components.subgroupMenuBuilder.context": "cc11b3a28fa30ae6d3d3ad1438824cbd5224ba5c", + "components.subgroupMenuBuilder.project": "f6f4da8d93e88a08220e03b7810451d3ba540a34", + "components.subgroupMenuBuilder.dueDate": "a1b308ec704aed240db754a1862adcf67e19f001", + "components.subgroupMenuBuilder.scheduledDate": "19ad699baa333ebafbaee750f50ce2b8c2a069e4", + "components.subgroupMenuBuilder.tags": "848eed0fbd5429f556b2982dec3ea87136e33e44", + "components.subgroupMenuBuilder.completedDate": "0089d3b136526c1dfbe0487bc7c3c8ef99812909", + "components.subgroupMenuBuilder.subgroup": "4d089fb595e28cf36d5ac24a58012732faf4f843", "components.propertyVisibilityDropdown.coreProperties": "b3cfb1af6a8f2011725da9badb151b1c72b0e6ec", "components.propertyVisibilityDropdown.organization": "9da72239ddeee345a6b025c468d9817c49cae014", "components.propertyVisibilityDropdown.customProperties": "ac0f02bfadfd325f29ae589a256f3417c45faceb", diff --git a/i18n.state.json b/i18n.state.json index bccede35..2d156098 100644 --- a/i18n.state.json +++ b/i18n.state.json @@ -204,6 +204,30 @@ "source": "2ab447eb84f59d3b163ca7bae16ff0d20b3ca125", "translation": "d1d4eaadd819d5f15b18be7505e48e872a6c7c29" }, + "views.agenda.empty.helpText": { + "source": "2ea803868d1e372007e992a4d843bd8f48afa0b5", + "translation": "463c4b595a6a51c82a0cb26b76ab209b62c8d93f" + }, + "views.agenda.contextMenu.showOverdueSection": { + "source": "651ee476d780890c57df2b1844bc3704cdd69ac8", + "translation": "46e52fdac5a6efcd42602a30c3e607b6662675c8" + }, + "views.agenda.contextMenu.showNotes": { + "source": "448a566605381d679426f3b93c0af8b5ba324bcd", + "translation": "c5a7ae5253c87e3fc6c7d2726134053fba23fb16" + }, + "views.agenda.contextMenu.calendarSubscriptions": { + "source": "9b99ca62a8c206aeef3199afeb8c2d6ea70c3c3a", + "translation": "efa3533c4e46110cb13fbbefc736130b3cb95b22" + }, + "views.agenda.periods.thisWeek": { + "source": "7b72883e078a6858cf0c79bf3e93e72e765e9ada", + "translation": "3973f6e2fd55ad755b957df3680268359575bbbb" + }, + "views.agenda.tipPrefix": { + "source": "9713cc83f3030948afaff535d9c5e6e77ea1a83f", + "translation": "7966137d4d898090ef97847cb87651dc23c0c8a3" + }, "views.taskList.title": { "source": "090ec5f560fc50377fcd95e5cda128e91b276e98", "translation": "c667f1f22a05f7a3fde816af664758eb9240bcb1" @@ -225,6 +249,10 @@ "translation": "7e458d013900c8a6ddd6673a343663408cd76628" }, "views.notes.refreshButton": { + "source": "56e3badc4e6c5cc95e0ea5a9a878b9bd09f319d4", + "translation": "87c65f265a185afe8ec1786ae022914c838dc286" + }, + "views.notes.refreshingButton": { "source": "5b7bdb61fdbc48d57b9f43d0e28b7cfd3063fca5", "translation": "a17bd9c2b80259ae2badf3585ad170e75a47202d" }, @@ -236,6 +264,18 @@ "source": "9e2f5f8952ae7fb4bf2669ff4c73cee07e32ce53", "translation": "142a7a4bf7462231e0fd030af87a89c7dc9187d1" }, + "views.notes.empty.helpText": { + "source": "7c7f6e3f729bb2d6851ca58dfb7f78accbbf8e5b", + "translation": "982fb3a071219d914e1b235f16f3132126553f62" + }, + "views.notes.loading": { + "source": "0a442c25d8901fba648f11b436fcda80cb95aace", + "translation": "3e3baf3fd1c350afb89d3b97d34ce24f0daacb97" + }, + "views.notes.refreshButtonAriaLabel": { + "source": "d3921023cd5b02ded1cdc85a64a5d276aafa4c8e", + "translation": "9b893473118879b67351b9a2f4fb5907ea4da604" + }, "views.miniCalendar.title": { "source": "a3cc5b7724a714d5620c6e9ef5f851c143022178", "translation": "23a11f789696118f25d513e0e39ce2f17b04e5db" @@ -440,7 +480,10 @@ "source": "aa73278ad78de284702c875cbe2d73ccb8f9c5d3", "translation": "17b1f4317dfccc4e2cf4ab36745827154f5ad3f2" }, - "views.basesCalendar.buttonText.listDays": null, + "views.basesCalendar.buttonText.listDays": { + "source": "27491b23f022fd85faf8c467fb04415d0b5d6bed", + "translation": "981033a764fe998867669eb085c533d099224594" + }, "views.basesCalendar.settings.groups.dateNavigation": { "source": "8487a72e02c205a734e6ec6a5684a99576039cb3", "translation": "447a68387740ba7281dd48cc034168c1bb83cb9c" @@ -461,8 +504,14 @@ "source": "9b99ca62a8c206aeef3199afeb8c2d6ea70c3c3a", "translation": "efa3533c4e46110cb13fbbefc736130b3cb95b22" }, - "views.basesCalendar.settings.groups.googleCalendars": null, - "views.basesCalendar.settings.groups.microsoftCalendars": null, + "views.basesCalendar.settings.groups.googleCalendars": { + "source": "cfa0f6bb3b4422195fc4abb06c02bca780fce33a", + "translation": "567dd668015587a7ed69597e1f6f5a8fc6aff8d9" + }, + "views.basesCalendar.settings.groups.microsoftCalendars": { + "source": "2edac69ff3c043d662037911af60ea54cc1c3746", + "translation": "0326a4482509b7f06b6e0ebc12bb75df45b01291" + }, "views.basesCalendar.settings.dateNavigation.navigateToDate": { "source": "2a47407705ef9a77de4778c38853a4122e38b1fd", "translation": "b3a01d7806d06830f7d4a4f6723ae639cc0915df" @@ -527,7 +576,10 @@ "source": "1aadcb0d4d3400d00e2ad0a4cffa017ad1fac481", "translation": "e7d36da2adbcbb1f8a24b00984c812e0c636e5b2" }, - "views.basesCalendar.settings.layout.listDayCount": null, + "views.basesCalendar.settings.layout.listDayCount": { + "source": "914d28dbcb8c39a44885ec1b53d4c50180639463", + "translation": "38b5f1b26a013008c5472cb6237b23ea7c9901e9" + }, "views.basesCalendar.settings.layout.dayStartTime": { "source": "0f668f32458bf870e8823e6dd50a7fcc1dc595c7", "translation": "78b8eee51d19827b871600dfe2826848c0c4db6d" @@ -648,6 +700,14 @@ "source": "e542695cd353d43e646a3d050dc59b189373613c", "translation": "26c23138ba5d79b18f435c5953204093df8b0a49" }, + "views.kanban.uncategorized": { + "source": "4ef7d73c1a83464f50c8d1b29b43e85facfdf3ee", + "translation": "c86f3b282d1993ed57949c9c8e25336a8374e6f0" + }, + "views.kanban.noProject": { + "source": "644d0b87f93c6cb1645f1ff166e1aa82950191b4", + "translation": "777afb5b67e93b44a2ea67a9f9b7c8c1da6f7b28" + }, "views.kanban.notices.loadFailed": { "source": "9d744b2d44937cda77d20fc3bf2c1fc0242cc3c4", "translation": "a10abbfcbccbd0732390be11f6ca55b0e3e8aa25" @@ -660,6 +720,10 @@ "source": "5df51b612bbe4d9afeb184269bb95d764fac5687", "translation": "e8f2f673e5f67e5c5d08c3c315c87577f78495d6" }, + "views.kanban.columnTitle": { + "source": "621521f9a8788695ec292cbec54d2792cfdf0a7d", + "translation": "e49f833404c0a635105d8f1db1076be79cea9495" + }, "views.pomodoro.title": { "source": "212e4618d030e7c987ed2d64d96f3e1dcebbf414", "translation": "212e4618d030e7c987ed2d64d96f3e1dcebbf414" @@ -900,6 +964,106 @@ "source": "77f4b7a081b20f78557dd404e14d91b89b52a27c", "translation": "a6bce6cf45ab6987a0491268052e0770559f80a4" }, + "views.stats.filters.allTasks": { + "source": "7b9ff838019db5ead18883e3432af81a4ae3aa6a", + "translation": "eee13ef94f7626d8b94aa312db9a02c471bd8f28" + }, + "views.stats.filters.activeOnly": { + "source": "3dc1b8123749de1b3bd96596b2ef4ccbff6c9567", + "translation": "e9a53f720f0847708477c55729a83edddcc8dd52" + }, + "views.stats.filters.completedOnly": { + "source": "2c9ccad5b96c9be77d8bba71ee8e3340450bbbec", + "translation": "adbda06861c5091760319cb956da40b6a0e47d29" + }, + "views.stats.refreshButton": { + "source": "56e3badc4e6c5cc95e0ea5a9a878b9bd09f319d4", + "translation": "87c65f265a185afe8ec1786ae022914c838dc286" + }, + "views.stats.timeRanges.allTime": { + "source": "4745c5dce5e868dc0597f7b67f2415fdc2c830c3", + "translation": "2a8a291a83fb54a66cbbac1392538ae18e0a30bb" + }, + "views.stats.timeRanges.last7Days": { + "source": "6522923d0c92d6924bc40253768ff19ef6f8cc3e", + "translation": "a4e98a938e59e7e1de419c8a20f38cfd36f7217a" + }, + "views.stats.timeRanges.last30Days": { + "source": "6118867f212578fe8acd0c3fc8af1b74b9d4bc2f", + "translation": "62d9eba87a43f9a20ced8e6127a122be0bed64dd" + }, + "views.stats.timeRanges.last90Days": { + "source": "ce96395e907e95648a10d6f84f87d8384b2b0bc4", + "translation": "078988ce028af187d4310da5f0f4748318061176" + }, + "views.stats.timeRanges.customRange": { + "source": "f130609dfc13198c1a623733774328b5cf0af757", + "translation": "6d6e0de6f14bf4f299262c14967dc7c2cac241c3" + }, + "views.stats.resetFiltersButton": { + "source": "5be6985613b3e6fda208ae66882ccd1436bff418", + "translation": "f711760625d8dbf6c5a541a4d40f865d7d37e69f" + }, + "views.stats.dateRangeFrom": { + "source": "3f66052a107eaf9bae7cad0f61fb462f47ec2c47", + "translation": "a4b078f9eb7bd2df4e3753f11540dce130d74025" + }, + "views.stats.dateRangeTo": { + "source": "ae79ea1e9c6391a9ed83a2e18a031b835feec0c9", + "translation": "0afaa0e566a1a30a7c185ff624fa63ec18a8098d" + }, + "views.stats.noProject": { + "source": "644d0b87f93c6cb1645f1ff166e1aa82950191b4", + "translation": "777afb5b67e93b44a2ea67a9f9b7c8c1da6f7b28" + }, + "views.stats.cards.timeTrackedEstimated": { + "source": "c69f2a88d10893a201485b31643dbf5cedd52df1", + "translation": "929a12ec560b8c9341b26781fc02247212fd6f70" + }, + "views.stats.cards.totalTasks": { + "source": "e5cefb07fbc378c439e040958fadb4f78b23163e", + "translation": "08f58e74d380f56c6707596f0d8961a293a9d962" + }, + "views.stats.cards.completionRate": { + "source": "e9022ebdff65509393be04fb3b32c715ce8f97cf", + "translation": "0fd0848466e10449fcff3cbdc186b19db4a440f8" + }, + "views.stats.cards.activeProjects": { + "source": "8eadc26886a595ead7b65edd28ac32306ce1f5ad", + "translation": "04f7b787a2d0b39221b523b1b234281432bb3cdb" + }, + "views.stats.cards.avgTimePerTask": { + "source": "807643dc324a145924708bb6dad611f828e10be2", + "translation": "550e06afd501e2f3b0a8a7c198ffd48f6722add9" + }, + "views.stats.labels.tasks": { + "source": "090ec5f560fc50377fcd95e5cda128e91b276e98", + "translation": "c667f1f22a05f7a3fde816af664758eb9240bcb1" + }, + "views.stats.labels.completed": { + "source": "1798b3ba42ee08ea09d9720b2d9c0181abbfe3e4", + "translation": "be274c6e71f4a5837b1f8124da980ac92a56ac7e" + }, + "views.stats.labels.projects": { + "source": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "translation": "3930f79f07e540a93c58dbf7a3a48c45f2d91ef8" + }, + "views.stats.noProjectData": { + "source": "f61de1237b5bf9041f1b8e00bdd5b7bf0df0232e", + "translation": "9498f145434ab24e10edd7f857c47fbd4b529a4b" + }, + "views.stats.notAvailable": { + "source": "08d2e98e6754af941484848930ccbaddfefe13d6", + "translation": "d8fa25974630d265eba87aa8f559e326c228bef1" + }, + "views.stats.noTasks": { + "source": "d7c07a0905ed43a32ec58ccae1353c564433d826", + "translation": "9fab9b825c7ba74646c0a669d22659d6d4c33dea" + }, + "views.stats.loading": { + "source": "b04ba49f848624bb97ab094a2631d2ad74913498", + "translation": "c640bd3760d308375cbc9ee042b73c1a0b288827" + }, "views.releaseNotes.title": { "source": "5939771f391859041bc57e5e05b04235b1ef8ee7", "translation": "13e0a79179479dd7bd03740e53af56d3b965f8fc" @@ -1668,8 +1832,14 @@ "source": "80122e53d8a3a7eb2c2ac8e352efba551330d1c5", "translation": "26badeb063972db6f4f0d34423fa04602e3a223a" }, - "settings.general.taskIdentification.hideIdentifyingTags.name": null, - "settings.general.taskIdentification.hideIdentifyingTags.description": null, + "settings.general.taskIdentification.hideIdentifyingTags.name": { + "source": "446bbfd987521d42035442c4652693d996565cf8", + "translation": "a42da4a74ff4f67094f9d1e2d586129fde9bd621" + }, + "settings.general.taskIdentification.hideIdentifyingTags.description": { + "source": "a38be9ef6457fd38857917cbbc387d396cd2e60a", + "translation": "8be143e41a83b945618f871106e07778ff735e8e" + }, "settings.general.taskIdentification.taskProperty.name": { "source": "fb00b60c99acd4529404e3ef8bd77017d9332da6", "translation": "8d7c7b08b22af017050540dc817b845f6edb0a4a" @@ -1698,10 +1868,22 @@ "source": "4ff367979f5bdb70f928733dda339ca81435c4b1", "translation": "f03123a435174cef25cce4330e1d7c9c6ba5993d" }, - "settings.general.frontmatter.header": null, - "settings.general.frontmatter.description": null, - "settings.general.frontmatter.useMarkdownLinks.name": null, - "settings.general.frontmatter.useMarkdownLinks.description": null, + "settings.general.frontmatter.header": { + "source": "49415878931e5edbbf6d49465647a990f04b12ae", + "translation": "49415878931e5edbbf6d49465647a990f04b12ae" + }, + "settings.general.frontmatter.description": { + "source": "24a51bb38d3857a7e0d9df7130ffff10bdd3b386", + "translation": "980a44d44879311a5aece6786c38eacf99d7f7a8" + }, + "settings.general.frontmatter.useMarkdownLinks.name": { + "source": "345e6cf9ce20ff8a3ac2966ceb53f8a83bdbd9ba", + "translation": "3fab299799ce84e60ae537e4638909ec735625ea" + }, + "settings.general.frontmatter.useMarkdownLinks.description": { + "source": "f56ef5842cbd725ff74500d96e3d40e0046e3693", + "translation": "194354c8d71b4d87f17752606fa8de44cb1187f6" + }, "settings.general.taskInteraction.header": { "source": "a8194c053a4f989c874659b7d4a0e99f5a4a3df5", "translation": "9765fd942e9dd3fe08dc3599d3754e21c0aaa271" @@ -2162,8 +2344,14 @@ "source": "5ac477c267332c84ac6f5fe5509d523e08a4af94", "translation": "1323694046557ec28a86f1d61b62ea5196d40ddd" }, - "settings.taskProperties.customUserFields.autosuggestFilters.header": null, - "settings.taskProperties.customUserFields.autosuggestFilters.description": null, + "settings.taskProperties.customUserFields.autosuggestFilters.header": { + "source": "54bbd5ce9872e3040735f334d7a52a22dfd80868", + "translation": "4e8eb3e2763d62545b12a84dd2eafb9ecf4fa03a" + }, + "settings.taskProperties.customUserFields.autosuggestFilters.description": { + "source": "61290f286c6963dbe266b1b6b20a4c3f29c78d66", + "translation": "c54d4eb84d3640c1557eb9dcb99ade31309f0b4e" + }, "settings.appearance.taskCards.header": { "source": "08836d307ea5b1614f69962e1b9d36f243baddc5", "translation": "20a69cc45e76fad40738bab186f0ffa7be6f8d99" @@ -3724,6 +3912,82 @@ "source": "91fa8ddb011b35634762b9184731cd9d6893b139", "translation": "be1d117c7288cb32621ccbdad460b7b6794e7b32" }, + "notices.icsNoteCreatedSuccess": { + "source": "11323db089a64255a316acf806096a5aa681984c", + "translation": "7b68958465090da91a3d703bc5bcb674c620b210" + }, + "notices.icsCreationModalOpenFailed": { + "source": "8e441dcab8108add2e4eafe35c6777ee54436df0", + "translation": "04e628891bd898cc7bcb6222fba153c9a5af8282" + }, + "notices.icsNoteLinkSuccess": { + "source": "bd13c7d5af34c3071b82a0557c8de4aa4e721a76", + "translation": "ae37c124f706517fb001e92cea0dffb95cb48a6c" + }, + "notices.icsTaskCreatedSuccess": { + "source": "399ab52e09a6ab0bb5680ad6fbd393f5fe042a33", + "translation": "f62b131cce8ebcaf4f5006d7a47bb4e0927397c7" + }, + "notices.icsRelatedItemsRefreshed": { + "source": "5481934f9a4c5e2d504b82e04ccf5df30ec1c76d", + "translation": "5414f1796bb4483717b0527f381d5d2822b16cb3" + }, + "notices.icsFileNotFound": { + "source": "1d497f15eb0c35127c6091ee9f70572a246a1c7c", + "translation": "aacfdd426a494d91f14adfc070ca0ab76093cfd9" + }, + "notices.icsFileOpenFailed": { + "source": "bcc8d866719b4db20563417b0bc7105dee53c1f7", + "translation": "a00c0598b7020c48d07846e595a3a5dcd4a18be8" + }, + "notices.timeblockAttachmentExists": { + "source": "2d22bbfaf545f4f0b5bc46def37fa637ffece048", + "translation": "5a58f8f20978797d63a99237d3054d712b7e2578" + }, + "notices.timeblockAttachmentAdded": { + "source": "effb439a980e77cdae3e07d7bf60efbc154860fb", + "translation": "1b17863b0a13762cba0b87060e1ec7ef3a1ba751" + }, + "notices.timeblockAttachmentRemoved": { + "source": "5938eb486a404f5d7e467d0eb1cfe1bbbe30a663", + "translation": "32a644590da35a036b4bf1f67bee5193b205973f" + }, + "notices.timeblockFileTypeNotSupported": { + "source": "257767122e5f201a138da4c108100f8ac9f25850", + "translation": "1de61dd66fe8bfc2338f517e7575fff4068f9596" + }, + "notices.timeblockTitleRequired": { + "source": "2d0a4712090bcfe74b7615ae1b05d62e78017e08", + "translation": "681732bd7a472416c5a96b9f6f6a004251f74666" + }, + "notices.timeblockUpdatedSuccess": { + "source": "5d226f96855b20f225eb6941dd362e8d1dbe5883", + "translation": "95afd87b4277924876a9de93eaf5dcafdc47121f" + }, + "notices.timeblockUpdateFailed": { + "source": "3309e2bf25566ef19423d4dae74a8a0fbbc72f8d", + "translation": "42bed9f8fc25e8cb91b2eaec9b06d285776c2a32" + }, + "notices.timeblockDeletedSuccess": { + "source": "0a89dca7412267b95c339832a3c620b4828048e3", + "translation": "ba7aebe5bc0fa0b786769175e156e123567c93b5" + }, + "notices.timeblockDeleteFailed": { + "source": "8b767a84d7757a9cb6b23f76b81adf2aeceb5dac", + "translation": "a867a01feb493b767fccd6ae9e9f7e67fb50cf84" + }, + "notices.timeblockRequiredFieldsMissing": { + "source": "47aab3e139fb0cd6e5e526e600610fdc06e72957", + "translation": "202953173cb9bb84ea2e1afb4726ab81919f238e" + }, + "notices.agendaLoadingFailed": { + "source": "9e866955c967d91bcb00b272cd9ef2f4425fc9c8", + "translation": "b4e255c0a47bd9eadce2aab26d93bfe2cd07ba38" + }, + "notices.statsLoadingFailed": { + "source": "93b6f19b5b4d3aa2bc361e005ce439c3da3d8cfc", + "translation": "48b6b25d3c2bb80e22f5335afb721ceadd0d7570" + }, "commands.openCalendarView": { "source": "d7dce352d3bf5b12479770b86495263f84275492", "translation": "1fcab5b50d9d6ffb720cb3996503072939afb6fb" @@ -3812,8 +4076,358 @@ "source": "04c2072af97cf70c22fbf9efa9b62eb2574d23d6", "translation": "d69d1c26f388903bba0094ba00f61217c47fa732" }, - "commands.startTimeTrackingWithSelector": null, - "commands.editTimeEntries": null, + "commands.startTimeTrackingWithSelector": { + "source": "32970116a0d7a74dadbf82a0aa2aa8117278d601", + "translation": "71454ccfe06493325d441cffc6ffa78fd69b48d0" + }, + "commands.editTimeEntries": { + "source": "b8c5b41ec8f55348f7ae4acf087d62edaf588a0c", + "translation": "31a313a10a6041307d37a969422ed1f0e46ed5e1" + }, + "modals.deviceCode.title": { + "source": "15d49719fa9a20f697d38e6af17a00b8ae4a529d", + "translation": "d9773cd7807685cbb53ffdc1410ab2cbf7b78b85" + }, + "modals.deviceCode.instructions.intro": { + "source": "6f588f0b7cb402c539b8814f65a4798e8da218e0", + "translation": "042e3c2acbbf4f227d4a3e42887f9ed736baebf3" + }, + "modals.deviceCode.steps.open": { + "source": "cf9b77061f7b3126b49d50a6fa68f7ca8c26b7a3", + "translation": "977217e214c279f8bab8a9d39f238af059eff8ab" + }, + "modals.deviceCode.steps.inBrowser": { + "source": "79f78eb5c8b52a3626b9719515e8b9c1c03303e5", + "translation": "4b204dd9a2edc8bde7b609f4784f7cb69510697b" + }, + "modals.deviceCode.steps.enterCode": { + "source": "e359133d256a3a291c64f6b573cd2c0b02e330d6", + "translation": "af77f048f076448387f685375d882af2a2a54102" + }, + "modals.deviceCode.steps.signIn": { + "source": "3fefa93f424be9fb1d4dafd8277b9978d619e1cb", + "translation": "42cf4d737f4b664fbc822682ea6043527aa7bc5d" + }, + "modals.deviceCode.steps.returnToObsidian": { + "source": "7e13c0c3a8d9118e121f70453facfa2d0101de6d", + "translation": "5f0e1541e5b0101b24db4d9e05f75eafb1ddc1ee" + }, + "modals.deviceCode.codeLabel": { + "source": "a9fe887104abcf427495c33e29a3c77c3a90bdac", + "translation": "ae43763d672af09561e2dcff2f459f46002fca84" + }, + "modals.deviceCode.copyCodeAriaLabel": { + "source": "6c10692719e62d762ec4716db1a8004544682745", + "translation": "c7216250ea0abc7f5e05afac5fbb1eed432ea143" + }, + "modals.deviceCode.waitingForAuthorization": { + "source": "293c2185e57c716d3aa8d9fd2b0804b5aa8afdae", + "translation": "8e6883bb1fb7abafed1571976e2e004146770e58" + }, + "modals.deviceCode.openBrowserButton": { + "source": "e505acd1482aefb1017b4214cf1732b70164594b", + "translation": "4169e7a5f602fd415b384003182c1ae8cc5cb3e7" + }, + "modals.deviceCode.cancelButton": { + "source": "77dfd2135f4db726c47299bb55be26f7f4525a46", + "translation": "07af7cb30fca13091b0c2f0831dc8283e9f24965" + }, + "modals.deviceCode.expiresMinutesSeconds": { + "source": "73e474a3e682b8715b30a1c3093da2b9feef525d", + "translation": "4f1650369aaf1406be150a344a67a82477055a0b" + }, + "modals.deviceCode.expiresSeconds": { + "source": "9b16869f2468a6027b09ca754e9d28e59384b51d", + "translation": "40528c39acde73f1bd6ddbc9a83b1f40e79910db" + }, + "modals.icsEventInfo.calendarEventHeading": { + "source": "4dfa3ac26d7e48ff21ffae5f3dc955b269d6e43c", + "translation": "8914e4493160904354acd8e8821a7092955cfaee" + }, + "modals.icsEventInfo.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "950701e758d18a72134a6b8948c7cf42867c0eb9" + }, + "modals.icsEventInfo.calendarLabel": { + "source": "adab5090ac6a1b7b5420faac7be86c41721ba27c", + "translation": "33fe92f625e5e1d93b2f0ad659aeb0950c49bc06" + }, + "modals.icsEventInfo.dateTimeLabel": { + "source": "63ae7cafeda48b4383447db121a8ca77ac7d2dc0", + "translation": "f4537f493b3e5e842b3396f4150114b08641f27b" + }, + "modals.icsEventInfo.locationLabel": { + "source": "d219c68101f532de10add2cf42fb9dbeca73d3be", + "translation": "d95f9e67114d4f4267b966a80a35f074ad30dc5d" + }, + "modals.icsEventInfo.descriptionLabel": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "b3c8defcacc0ad93a3cfcbdd962b7b95ab5d019f" + }, + "modals.icsEventInfo.urlLabel": { + "source": "0e2d9b0777a485c1276de0803c12a7d76fbc5c39", + "translation": "0e2d9b0777a485c1276de0803c12a7d76fbc5c39" + }, + "modals.icsEventInfo.relatedNotesHeading": { + "source": "825cf852f74e1fb10d8b078b5a2286792f974f87", + "translation": "e7f250ac49634ec6aefd446b78b75786b14a418f" + }, + "modals.icsEventInfo.noRelatedItems": { + "source": "d2c2e903d5cd9372db38f41f4a3aa67b1c6b01d9", + "translation": "93acaf657c2155304f31ee2eaa3d88b5542e9ac0" + }, + "modals.icsEventInfo.typeTask": { + "source": "7bb0ddf9221c03b806b03c209e8366000124aa15", + "translation": "7964532fe02bd0c75575a3dc972e330982de2590" + }, + "modals.icsEventInfo.typeNote": { + "source": "2c924e3088204ee77ba681f72be3444357932fca", + "translation": "b6c4417da0e3d803d13cdd8d202a3d488a5c6dc6" + }, + "modals.icsEventInfo.actionsHeading": { + "source": "c3cd636a585b20c40ac2df5ffb403e83cb2eef51", + "translation": "445e0c4cac2fae57fd46d267590541413bb4f2cc" + }, + "modals.icsEventInfo.createFromEventLabel": { + "source": "15f54eccbee249bfd4439a4ae8f0b33833c49ea9", + "translation": "63c7ad5bf09dd4d061009c1ceabd0ff281b28d23" + }, + "modals.icsEventInfo.createFromEventDesc": { + "source": "4e04a4fbcae12cb0926dba09797a88d24259b76e", + "translation": "bbf0a20a3c4a1ee1af03b1f542f40f5e9f5ada9a" + }, + "modals.icsEventInfo.linkExistingLabel": { + "source": "359e0b3ff14ed6bde5762a3bc04066cc5cc958c8", + "translation": "8f6adf69fa75d064a1b1c52a7adf41a1e0840b56" + }, + "modals.icsEventInfo.linkExistingDesc": { + "source": "1aa8edfa252484d28cbbe5544181a273927091bb", + "translation": "bbb763fe6f586a63d3c1b6f6a7e80054814ad9d1" + }, + "modals.timeblockInfo.editHeading": { + "source": "d42d302b1bf2fca148c75efcf03389a0b1ef88b3", + "translation": "bfe56e6012f39e80982dff384c6763b7e6f04922" + }, + "modals.timeblockInfo.dateTimeLabel": { + "source": "28948815dbd940aae135258b71870cac05cf589c", + "translation": "e0794ae909f0f6ef70a639a591b8fcfd82aeec8f" + }, + "modals.timeblockInfo.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "950701e758d18a72134a6b8948c7cf42867c0eb9" + }, + "modals.timeblockInfo.titleDesc": { + "source": "b73aeab0cbd7047291ace95ec61a5a9738ddf6d7", + "translation": "a3e99a0d20825eccb878e87e5241c5483995a43c" + }, + "modals.timeblockInfo.titlePlaceholder": { + "source": "a53b1342a44c5bcd904b448cbc399836d276f5d7", + "translation": "028d288d8f7a5deb6ee147df8e2e3e17a8a30792" + }, + "modals.timeblockInfo.descriptionLabel": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "b3c8defcacc0ad93a3cfcbdd962b7b95ab5d019f" + }, + "modals.timeblockInfo.descriptionDesc": { + "source": "993cbb9b4271e43803f891616c2d68d36893b4d4", + "translation": "84e627ef7f11a2156c51283d79dba14edf2eee06" + }, + "modals.timeblockInfo.descriptionPlaceholder": { + "source": "b373425eef0d25730b64eb196e610724125ebbe7", + "translation": "dae0fb0f37a524c2c1861ebb2cccad35445dcfa8" + }, + "modals.timeblockInfo.colorLabel": { + "source": "1d0c8304baedcf8e3a78982c2e7c0b04622bf2a0", + "translation": "89b7957dae43b5c264cf9a6889b67259dadcda25" + }, + "modals.timeblockInfo.colorDesc": { + "source": "cdff26ebbc3565d04efd839876c97f07e21406ff", + "translation": "78cdd25813c7ce0152167d4f5420cf22a74efe69" + }, + "modals.timeblockInfo.colorPlaceholder": { + "source": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2", + "translation": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2" + }, + "modals.timeblockInfo.attachmentsLabel": { + "source": "6771ade6e8965a499bc298107ffb52e9a18dd7e3", + "translation": "19f4e6bc4ab9f686a80a6e2c14e8c5a8188648d0" + }, + "modals.timeblockInfo.attachmentsDesc": { + "source": "7678a59aa98024fb9b82ac20244cfe5d0f97e9f9", + "translation": "86788d23971e108b6ca5686e2384a0a31219dc13" + }, + "modals.timeblockInfo.addAttachmentButton": { + "source": "f3aaf19dab47f2aa461d2713ffc1188c3f4b2cab", + "translation": "b0e1a69dbd3698d1fb2ca87217d321149c8793c8" + }, + "modals.timeblockInfo.addAttachmentTooltip": { + "source": "39289e99c6326eb60ff29dad376a120671c3a2f1", + "translation": "04de93756c2e3920c25fb383e6a98c09cb779a2a" + }, + "modals.timeblockInfo.deleteButton": { + "source": "ba32111a1af977be873d0389063862832583dbd6", + "translation": "b8ef309738371f3341bcd1ef2d503f45c88cee44" + }, + "modals.timeblockInfo.saveButton": { + "source": "fa2984b367b8f2fc5cd521936dda7b44598778a4", + "translation": "00fe8153834083ad058baf83eb1f4bb02904893a" + }, + "modals.timeblockInfo.deleteConfirmationTitle": { + "source": "ba32111a1af977be873d0389063862832583dbd6", + "translation": "b8ef309738371f3341bcd1ef2d503f45c88cee44" + }, + "modals.timeblockCreation.heading": { + "source": "6ba03dee8a531db91b38fb09715e0c40304804d2", + "translation": "901f706bc8539497483f268eb8b75e17180da316" + }, + "modals.timeblockCreation.dateLabel": { + "source": "f2110a630c6c6f7249d0a946ded3468ecbe2b948", + "translation": "3fe11c95a8a1268a27e9ea7a366c1267d9e04320" + }, + "modals.timeblockCreation.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "950701e758d18a72134a6b8948c7cf42867c0eb9" + }, + "modals.timeblockCreation.titleDesc": { + "source": "b73aeab0cbd7047291ace95ec61a5a9738ddf6d7", + "translation": "a3e99a0d20825eccb878e87e5241c5483995a43c" + }, + "modals.timeblockCreation.titlePlaceholder": { + "source": "a53b1342a44c5bcd904b448cbc399836d276f5d7", + "translation": "028d288d8f7a5deb6ee147df8e2e3e17a8a30792" + }, + "modals.timeblockCreation.startTimeLabel": { + "source": "88d8206d586abe4c8e35c8e9adcc649d07c99a1e", + "translation": "4aa533c84189a4c82a1a07bfdac1895974ad6d28" + }, + "modals.timeblockCreation.startTimeDesc": { + "source": "468423b2b77ef3d98c67206464beac360226adcb", + "translation": "d4007317e37a31aee592a41872a21af5121f7407" + }, + "modals.timeblockCreation.startTimePlaceholder": { + "source": "62646b00e3d5abef4cb8139c5f21bf0907f360d1", + "translation": "62646b00e3d5abef4cb8139c5f21bf0907f360d1" + }, + "modals.timeblockCreation.endTimeLabel": { + "source": "cd7800da7f4ff94a0e14445d7f94b6345d1b7b8a", + "translation": "352471b9c9ccd5953e5082e42431638098d75b3e" + }, + "modals.timeblockCreation.endTimeDesc": { + "source": "a739e69aa3bf9fbefc75ec0ceb30989dc19dd05d", + "translation": "7cbf68df2c40a6879f12522c828f84edc34b238e" + }, + "modals.timeblockCreation.endTimePlaceholder": { + "source": "3fd66d5f10a47efe7550c85fc4fc696a08265128", + "translation": "3fd66d5f10a47efe7550c85fc4fc696a08265128" + }, + "modals.timeblockCreation.descriptionLabel": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "b3c8defcacc0ad93a3cfcbdd962b7b95ab5d019f" + }, + "modals.timeblockCreation.descriptionDesc": { + "source": "993cbb9b4271e43803f891616c2d68d36893b4d4", + "translation": "84e627ef7f11a2156c51283d79dba14edf2eee06" + }, + "modals.timeblockCreation.descriptionPlaceholder": { + "source": "b373425eef0d25730b64eb196e610724125ebbe7", + "translation": "dae0fb0f37a524c2c1861ebb2cccad35445dcfa8" + }, + "modals.timeblockCreation.colorLabel": { + "source": "1d0c8304baedcf8e3a78982c2e7c0b04622bf2a0", + "translation": "89b7957dae43b5c264cf9a6889b67259dadcda25" + }, + "modals.timeblockCreation.colorDesc": { + "source": "cdff26ebbc3565d04efd839876c97f07e21406ff", + "translation": "78cdd25813c7ce0152167d4f5420cf22a74efe69" + }, + "modals.timeblockCreation.colorPlaceholder": { + "source": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2", + "translation": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2" + }, + "modals.timeblockCreation.attachmentsLabel": { + "source": "6771ade6e8965a499bc298107ffb52e9a18dd7e3", + "translation": "19f4e6bc4ab9f686a80a6e2c14e8c5a8188648d0" + }, + "modals.timeblockCreation.attachmentsDesc": { + "source": "dc43799ad507158bf2d451de9429e5953a14f38c", + "translation": "310d2888e163e5be64933cf47c3c92479f0375fe" + }, + "modals.timeblockCreation.addAttachmentButton": { + "source": "f3aaf19dab47f2aa461d2713ffc1188c3f4b2cab", + "translation": "b0e1a69dbd3698d1fb2ca87217d321149c8793c8" + }, + "modals.timeblockCreation.addAttachmentTooltip": { + "source": "39289e99c6326eb60ff29dad376a120671c3a2f1", + "translation": "04de93756c2e3920c25fb383e6a98c09cb779a2a" + }, + "modals.timeblockCreation.createButton": { + "source": "6ba03dee8a531db91b38fb09715e0c40304804d2", + "translation": "901f706bc8539497483f268eb8b75e17180da316" + }, + "modals.icsNoteCreation.heading": { + "source": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31", + "translation": "81c836d8e8400ce625098ac41c63a3f6a77526bb" + }, + "modals.icsNoteCreation.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "950701e758d18a72134a6b8948c7cf42867c0eb9" + }, + "modals.icsNoteCreation.titleDesc": { + "source": "e5928c1bd84bd2735415d45d5f7e03f677ff5f52", + "translation": "eaa3493465787a641fca5c86ecd8144fa98b6970" + }, + "modals.icsNoteCreation.folderLabel": { + "source": "30baa24967e08965d1594408031f0324ae11ccac", + "translation": "adfefd7147665e6c5f8391797fb8e85fdae36afd" + }, + "modals.icsNoteCreation.folderDesc": { + "source": "105291a610d29a8ea50e76ceb65257c5236019ac", + "translation": "4ebf73d152e1dcba5612194e388aea843b7e943e" + }, + "modals.icsNoteCreation.folderPlaceholder": { + "source": "c7cbb4b45068905aef0f0961bdfb1c7fe9988b52", + "translation": "497577b52b59829db1ca3ad229e0de770a89ff71" + }, + "modals.icsNoteCreation.createButton": { + "source": "6e157c5da4410b7e9de85f5c93026b9176e69064", + "translation": "dbc9fb8c7424c1726b51bf46c1aff7160eb2a310" + }, + "modals.icsNoteCreation.startLabel": { + "source": "538f6db0c212f09a0e37ee10239013c589daeaf6", + "translation": "538f6db0c212f09a0e37ee10239013c589daeaf6" + }, + "modals.icsNoteCreation.endLabel": { + "source": "861d25a92b9492d558445d04ed6357516e1b3a5f", + "translation": "10557b91635076ba1f607f2ba2c28f35324013fa" + }, + "modals.icsNoteCreation.locationLabel": { + "source": "c47d59ef9cb983fd5a9c42a64aad33ba7b158fd1", + "translation": "bfa544aae26c711a0e35546b1126fd88788c977d" + }, + "modals.icsNoteCreation.calendarLabel": { + "source": "d56f81fde03931ab0ff6785fc9cb62187815a346", + "translation": "f4340e48bdd0811cf8e3e6c1479a886c102948aa" + }, + "modals.icsNoteCreation.useTemplateLabel": { + "source": "23797614964d98782ffa29622f7959d4ed36bad0", + "translation": "c2fd83f35110b24506d1cdf4ab7672e6c949b862" + }, + "modals.icsNoteCreation.useTemplateDesc": { + "source": "6b9c073718f9ecb707cc80778c42c34c92d10790", + "translation": "14dd7e6f84354c7d837eafeffeb632732d6f8f5c" + }, + "modals.icsNoteCreation.templatePathLabel": { + "source": "198d2f2743fb74abb06b942a47c37d9128c6aeed", + "translation": "abc5b508a0f244a13cfa9ba1b262657ef2c15cbc" + }, + "modals.icsNoteCreation.templatePathDesc": { + "source": "b140758b9ac592cc627e4a41db98770149bf0d44", + "translation": "905157bb7bbedcd6049973e35b3159fefca1be5c" + }, + "modals.icsNoteCreation.templatePathPlaceholder": { + "source": "26f6cf53c168c01cf655bf6f3010f6bc772af4e0", + "translation": "26f6cf53c168c01cf655bf6f3010f6bc772af4e0" + }, "modals.task.titlePlaceholder": { "source": "c8196f1d1039c2fb290add52ee990c571173d6f1", "translation": "03f97eff6f24910100617f3fcbc4665e2e65cd7e" @@ -4090,14 +4704,38 @@ "source": "0fe4ddf98d535f0b7e919aec9630254b1d2ad167", "translation": "0fe4ddf98d535f0b7e919aec9630254b1d2ad167" }, - "modals.taskSelector.title": null, - "modals.taskSelector.placeholder": null, - "modals.taskSelector.instructions.navigate": null, - "modals.taskSelector.instructions.select": null, - "modals.taskSelector.instructions.dismiss": null, - "modals.taskSelector.notices.noteNotFound": null, - "modals.taskSelector.dueDate.overdue": null, - "modals.taskSelector.dueDate.today": null, + "modals.taskSelector.title": { + "source": "957bbd1116cdb7c59e3f7649b8bc2c2e8ed3de54", + "translation": "6bb0bea62643ea5869733fd42e1faae5bfa8939c" + }, + "modals.taskSelector.placeholder": { + "source": "72bbd8a758aaf0c92b3e7a6d22b962077db3b6ff", + "translation": "8417861683b7b46fb2c0b6d1d7d12bdd09896c9b" + }, + "modals.taskSelector.instructions.navigate": { + "source": "130c10ed2c60f33a0f4416b6b7412b9bd11649ce", + "translation": "6692e31f8bb5b8d3e00bed16bf7af19905d87800" + }, + "modals.taskSelector.instructions.select": { + "source": "e4e5b8e792f7971958b92028636ff584167bb638", + "translation": "0e872bd05a01ea79e8ea1d1965f6f571a2410404" + }, + "modals.taskSelector.instructions.dismiss": { + "source": "6688c3f3833719827c18453d8e6d7eecbda657ff", + "translation": "c5fd80ecace92ab7e9610ad09e6c4367a599f0bf" + }, + "modals.taskSelector.notices.noteNotFound": { + "source": "c1508711476a6e33215c7e7a3eaee01b7b1b90f9", + "translation": "9102407ed7a16cdd0d6b84c9eb51d9c36dfbe84a" + }, + "modals.taskSelector.dueDate.overdue": { + "source": "7980fcc0ec0fb23d3b8bd43a1ce5c87f5d868622", + "translation": "b2872b58a0c9b75701a6faa6915a11b103fb056d" + }, + "modals.taskSelector.dueDate.today": { + "source": "5c1fc193ed4468897cf177a7de9cf77e4a673853", + "translation": "047b83d45914a6aed8486d3b2a554aafa6a4510d" + }, "modals.taskCreation.title": { "source": "f1f1450ff80aeab91cb0853329e2b454904866e2", "translation": "488d83103a8236915faa3e85250e6f7a4be0ee0b" @@ -4134,7 +4772,10 @@ "source": "d95ef5460dda68f0b2f23b2168ec04d567436991", "translation": "7b27c54fac70c7ea93d381252d658c933d350451" }, - "modals.taskCreation.notices.blockingUnresolved": null, + "modals.taskCreation.notices.blockingUnresolved": { + "source": "545b04083e38f5969b9605a0ac51686b3124d5c8", + "translation": "7d5ba61667bf2643dccde923c1331c128d1abd29" + }, "modals.taskEdit.title": { "source": "8a4d4e6eb9a367d616b8a4cbfa2792068482e884", "translation": "be02f3392dd894bf6d897e8d076e137b6d45092e" @@ -4187,8 +4828,14 @@ "source": "fed2485c8e57184fdccdbbe4728bea5eb29e61e8", "translation": "d29297c4a503b91e80889df103b1dac405745ff0" }, - "modals.taskEdit.notices.dependenciesUpdateSuccess": null, - "modals.taskEdit.notices.blockingUnresolved": null, + "modals.taskEdit.notices.dependenciesUpdateSuccess": { + "source": "69065c1c9e58bc4eae0501893c63426389497b54", + "translation": "c386b27639d1ea1857f72b32c162cc6ae1770164" + }, + "modals.taskEdit.notices.blockingUnresolved": { + "source": "545b04083e38f5969b9605a0ac51686b3124d5c8", + "translation": "7d5ba61667bf2643dccde923c1331c128d1abd29" + }, "modals.taskEdit.notices.fileMissing": { "source": "596fc23c289a0b102027e30e03f9da21180f9e3c", "translation": "d171bedd5015d283a2650bf28d02a41b21116f85" @@ -4437,33 +5084,114 @@ "source": "e3b84e89bc68a5c8f2e36e22ee9857002c4a2545", "translation": "d5088628545e4e751596457f295b2c7071d78256" }, - "modals.timeEntryEditor.title": null, - "modals.timeEntryEditor.addEntry": null, - "modals.timeEntryEditor.noEntries": null, - "modals.timeEntryEditor.deleteEntry": null, - "modals.timeEntryEditor.startTime": null, - "modals.timeEntryEditor.endTime": null, - "modals.timeEntryEditor.duration": null, - "modals.timeEntryEditor.durationDesc": null, - "modals.timeEntryEditor.durationPlaceholder": null, - "modals.timeEntryEditor.description": null, - "modals.timeEntryEditor.descriptionPlaceholder": null, - "modals.timeEntryEditor.calculatedDuration": null, - "modals.timeEntryEditor.totalTime": null, - "modals.timeEntryEditor.totalMinutes": null, - "modals.timeEntryEditor.saved": null, - "modals.timeEntryEditor.saveFailed": null, - "modals.timeEntryEditor.openFailed": null, - "modals.timeEntryEditor.noTasksWithEntries": null, - "modals.timeEntryEditor.validation.missingStartTime": null, - "modals.timeEntryEditor.validation.endBeforeStart": null, - "modals.timeTracking.noTasksAvailable": null, - "modals.timeTracking.started": null, - "modals.timeTracking.startFailed": null, - "modals.timeEntry.mustHaveSpecificTime": null, - "modals.timeEntry.noTasksAvailable": null, - "modals.timeEntry.created": null, - "modals.timeEntry.createFailed": null, + "modals.timeEntryEditor.title": { + "source": "5a583eaa9a1e14bd48dc7a8cc1ab3f8dbeae6d12", + "translation": "8bb5b47a0ccb960e7f7011cf445456b0d859abda" + }, + "modals.timeEntryEditor.addEntry": { + "source": "49482cb4584ab3db093588777b7ac7f9dadb6ba5", + "translation": "dc0d3d9065bd6b123be61786120f80e9a386e284" + }, + "modals.timeEntryEditor.noEntries": { + "source": "56ea4f47bf44cb3e8e420b5479548231f1f68b7b", + "translation": "da0c29d2f15ba5c911042b64faf296c19562bedb" + }, + "modals.timeEntryEditor.deleteEntry": { + "source": "ccaf752b04ea9ccd6299a14c75e6bb065cd392b6", + "translation": "594754ab79c1f557cdba713674fdbd867b4dd0cc" + }, + "modals.timeEntryEditor.startTime": { + "source": "88d8206d586abe4c8e35c8e9adcc649d07c99a1e", + "translation": "4aa533c84189a4c82a1a07bfdac1895974ad6d28" + }, + "modals.timeEntryEditor.endTime": { + "source": "90525fcfc63aaf7370c341ff277299cd02df3705", + "translation": "fe1368b65876748f0eaad766daab8ae5ede9a8e3" + }, + "modals.timeEntryEditor.duration": { + "source": "10c3d1ca4b19f76a702335cf54c4ad5e308b9269", + "translation": "3e2b606422c85149213058f69ac65be149be9d0f" + }, + "modals.timeEntryEditor.durationDesc": { + "source": "03f5c59b12a26186f784cc542c31552236d7feca", + "translation": "7a7acf6c5ee6f23b2eea3b5cb3f017232979a283" + }, + "modals.timeEntryEditor.durationPlaceholder": { + "source": "01cdc0c08662f0a248e0a1c3739e7fcfd15bed2a", + "translation": "2f599b6fe44c89d5abd4095b5377ea954e56fd87" + }, + "modals.timeEntryEditor.description": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "b3c8defcacc0ad93a3cfcbdd962b7b95ab5d019f" + }, + "modals.timeEntryEditor.descriptionPlaceholder": { + "source": "89c8239873859b318429811db142d3b8c695b2ac", + "translation": "3d7dc4680006bdd8900c42d103c757fb4b423a19" + }, + "modals.timeEntryEditor.calculatedDuration": { + "source": "b7cc42c87dac49b80cf3ab1b6f14860033a61e06", + "translation": "721b3b677dcd4975fd3d186e8134b3b4ef2433ea" + }, + "modals.timeEntryEditor.totalTime": { + "source": "042bd2520b3f2b773bdad26dbd7da5faad717454", + "translation": "c2da40d0c6a5bfe010e3f4928a884754a0be946b" + }, + "modals.timeEntryEditor.totalMinutes": { + "source": "97ff49bf5909a19e98de6e0fd5db5465acade28e", + "translation": "18f1111aa55abe859a8d49ed381be6e034edd0b9" + }, + "modals.timeEntryEditor.saved": { + "source": "4f5b612346e6ff0ccbf9bf1a2bc066b75d492182", + "translation": "3acd8d23080a2f10d1671014b3cd323ac44b8293" + }, + "modals.timeEntryEditor.saveFailed": { + "source": "ee11ad6a60432aedc8b7ffc17a114d7a10d64aa9", + "translation": "4d940d4e1af6dbe4b8cbba8ad02a60adc1ed35ae" + }, + "modals.timeEntryEditor.openFailed": { + "source": "b0e2d1ab7251bb67ffebe49b31ba77ecbb567e83", + "translation": "8ba93192c686706e97a279d87a49d0e973034333" + }, + "modals.timeEntryEditor.noTasksWithEntries": { + "source": "634bcd14e86e7416c2c55af84ed5d586529e4c6f", + "translation": "af5ded0af20f07fa18cee2f315347bee1f05c8b5" + }, + "modals.timeEntryEditor.validation.missingStartTime": { + "source": "ece990b264aa1b7aee79dcef46cc950be2ec88d0", + "translation": "8e8b864582942308d1c44cffa8c846ad664defe4" + }, + "modals.timeEntryEditor.validation.endBeforeStart": { + "source": "468339327f19d1060b77fff4957224707e821025", + "translation": "88b5071453060e4bae428c611cc12f8b663b9dbb" + }, + "modals.timeTracking.noTasksAvailable": { + "source": "f632e1e836cc6d1d58eee8c6aa178297f73658a4", + "translation": "707b3ff5e884df881525b8e99b76ba6c68267d13" + }, + "modals.timeTracking.started": { + "source": "6c0a2563cd30cfab8cee8ad540bba85df045de06", + "translation": "2621bb0e8ec9ef87bb7a17aceab9044fee49cb6a" + }, + "modals.timeTracking.startFailed": { + "source": "c1b914325ad18471661dcc078d2e4111856abffc", + "translation": "26a9402fa92333a54c36b9859d59d6398a84a6e1" + }, + "modals.timeEntry.mustHaveSpecificTime": { + "source": "b5e4624ad4a4356677441185f8d75c03831d1965", + "translation": "a229b079426534cb23a9d7e26b6507d3aef047ea" + }, + "modals.timeEntry.noTasksAvailable": { + "source": "8c8ab856815d4eced441cfd78f8b327a49ad7914", + "translation": "5d39eb1b75ed915c811cfa1c2c5ac5075da1a0ed" + }, + "modals.timeEntry.created": { + "source": "c9c5244ef7123a90bf648150a3c88577a6dd955f", + "translation": "4a0348033cd6828a6222361fdd9fa62ab14a056c" + }, + "modals.timeEntry.createFailed": { + "source": "6b01c84eaddf7dd2da3a9f10a1470268926dd944", + "translation": "a585e67357bb975b0bde78889eda116c12035fca" + }, "contextMenus.task.status": { "source": "bae7d5be70820ed56467bd9a63744e23b47bd711", "translation": "bae7d5be70820ed56467bd9a63744e23b47bd711" @@ -5656,11 +6384,98 @@ "source": "848eed0fbd5429f556b2982dec3ea87136e33e44", "translation": "848eed0fbd5429f556b2982dec3ea87136e33e44" }, - "ui.filterBar.group.completedDate": null, + "ui.filterBar.group.completedDate": { + "source": "0089d3b136526c1dfbe0487bc7c3c8ef99812909", + "translation": "8ab4b7664dcc10383a464fdc702528fb35e30775" + }, + "ui.filterBar.subgroupLabel": { + "source": "4d089fb595e28cf36d5ac24a58012732faf4f843", + "translation": "69e0928cc108cbb41871571541e21bed8a331e6b" + }, "ui.filterBar.notices.propertiesMenuFailed": { "source": "e9df8763e0af720e4edcfd8f3bd87af75a69f7a1", "translation": "61031394986a0d06ec5548a0f054f66de47c1736" }, + "components.dateContextMenu.weekdays": { + "source": "4ffc67b62aae6c9adee9360316760ba55c1f53ed", + "translation": "1d474635b5d26d18871e4f555a4d8634855eb08a" + }, + "components.dateContextMenu.clearDate": { + "source": "a0aea5917b8778dd5eeeb962c3a4fda6ad519814", + "translation": "1be6d62084f5aa40e166e0a3645e6695ed7aff36" + }, + "components.dateContextMenu.today": { + "source": "24345a14377fd821d3932f4e82f6431640955b0b", + "translation": "1ab33097cd8e13568f48934edb37a699300295dc" + }, + "components.dateContextMenu.tomorrow": { + "source": "1948bf2dfa8fbc1f07ad3b6f0e2b3ee39f87e495", + "translation": "67c0dcf84ac06f61a19098dfe98bac28abc1f2d9" + }, + "components.dateContextMenu.thisWeekend": { + "source": "1921aa118ad7a4dca5f679eaefc3e1777854c777", + "translation": "43e35639bbb3f8e564fb406317fc12fcb23aca4c" + }, + "components.dateContextMenu.nextWeek": { + "source": "5a20763adfb0adcac05270a340009a8526652248", + "translation": "393f10c7b38d86ae77fe5c9812cb8aa4b8c76861" + }, + "components.dateContextMenu.nextMonth": { + "source": "8abf7cf1d0b36ff16ebbe26b8285a65d9d1582f6", + "translation": "14f1f66ebdb0942f90b42dda7920accc4cc2b6a0" + }, + "components.dateContextMenu.setDateTime": { + "source": "5e2928ff54a45201c4e6921fe419723cb08c9af6", + "translation": "488cd56eed1cf9c521194e3336ca4cba70644324" + }, + "components.dateContextMenu.dateLabel": { + "source": "eb9a4bc1c0c153e4e4b042a79113b815b7e3021d", + "translation": "df5c3008c765b0f5cdf0189d6a71536187af3365" + }, + "components.dateContextMenu.timeLabel": { + "source": "5b945a9a6ce9ef6431e71d5ea4834db6b50c08c5", + "translation": "208ff29d0ad0971a56faebfb6b76acc0541e4416" + }, + "components.subgroupMenuBuilder.none": { + "source": "6eef6648406c333a4035cd5e60d0bf2ecf2606d7", + "translation": "3ce60e7427c113d30c71fad1d6a9f224d612fe7c" + }, + "components.subgroupMenuBuilder.status": { + "source": "bae7d5be70820ed56467bd9a63744e23b47bd711", + "translation": "bae7d5be70820ed56467bd9a63744e23b47bd711" + }, + "components.subgroupMenuBuilder.priority": { + "source": "886cbff9d9df761ec642945e519631a23ed173a2", + "translation": "c3ae74d4763f2029465abfeeec924b77d9d218e1" + }, + "components.subgroupMenuBuilder.context": { + "source": "cc11b3a28fa30ae6d3d3ad1438824cbd5224ba5c", + "translation": "98bd5cd47690a2830fd840c8dc63cac103adac16" + }, + "components.subgroupMenuBuilder.project": { + "source": "f6f4da8d93e88a08220e03b7810451d3ba540a34", + "translation": "20bda6d2e72578c00d52ba5fd10ff36437988dac" + }, + "components.subgroupMenuBuilder.dueDate": { + "source": "a1b308ec704aed240db754a1862adcf67e19f001", + "translation": "0fb757b8f746cea74271e0a0c3d3f63d11508ce3" + }, + "components.subgroupMenuBuilder.scheduledDate": { + "source": "19ad699baa333ebafbaee750f50ce2b8c2a069e4", + "translation": "b20833645977b748a4432ac4a36a20709f116946" + }, + "components.subgroupMenuBuilder.tags": { + "source": "848eed0fbd5429f556b2982dec3ea87136e33e44", + "translation": "848eed0fbd5429f556b2982dec3ea87136e33e44" + }, + "components.subgroupMenuBuilder.completedDate": { + "source": "0089d3b136526c1dfbe0487bc7c3c8ef99812909", + "translation": "8ab4b7664dcc10383a464fdc702528fb35e30775" + }, + "components.subgroupMenuBuilder.subgroup": { + "source": "4d089fb595e28cf36d5ac24a58012732faf4f843", + "translation": "69e0928cc108cbb41871571541e21bed8a331e6b" + }, "components.propertyVisibilityDropdown.coreProperties": { "source": "b3cfb1af6a8f2011725da9badb151b1c72b0e6ec", "translation": "8b854e53ad33addbdd700ee4851887dbc68b254c" @@ -6207,6 +7022,30 @@ "source": "2ab447eb84f59d3b163ca7bae16ff0d20b3ca125", "translation": "8cb915ad63ffe83f23026162d7d071d91be946cc" }, + "views.agenda.empty.helpText": { + "source": "2ea803868d1e372007e992a4d843bd8f48afa0b5", + "translation": "5e9af63b2e2c8f2bff36db1424afc1fa45161ff5" + }, + "views.agenda.contextMenu.showOverdueSection": { + "source": "651ee476d780890c57df2b1844bc3704cdd69ac8", + "translation": "d6fb51c755ec3e962ba82c594296d780af3237c4" + }, + "views.agenda.contextMenu.showNotes": { + "source": "448a566605381d679426f3b93c0af8b5ba324bcd", + "translation": "d95289ee88cfd9e79c56a8ab1707dfffb71f10f4" + }, + "views.agenda.contextMenu.calendarSubscriptions": { + "source": "9b99ca62a8c206aeef3199afeb8c2d6ea70c3c3a", + "translation": "fb2be6dc29776b765d49d49218dd87ea71dfc715" + }, + "views.agenda.periods.thisWeek": { + "source": "7b72883e078a6858cf0c79bf3e93e72e765e9ada", + "translation": "cc74a23b8c5e78642d6451199c2409903da7b393" + }, + "views.agenda.tipPrefix": { + "source": "9713cc83f3030948afaff535d9c5e6e77ea1a83f", + "translation": "799db21a6a09deabab0f4e32e059f327f55139df" + }, "views.taskList.title": { "source": "090ec5f560fc50377fcd95e5cda128e91b276e98", "translation": "0e783f9dd49b856c8b58298414ed0ee934652e73" @@ -6228,6 +7067,10 @@ "translation": "73035e47f79392d5582a94e74c974fea24d76e55" }, "views.notes.refreshButton": { + "source": "56e3badc4e6c5cc95e0ea5a9a878b9bd09f319d4", + "translation": "c725f8bffa86a8ba5464c672765f6d453b0ea543" + }, + "views.notes.refreshingButton": { "source": "5b7bdb61fdbc48d57b9f43d0e28b7cfd3063fca5", "translation": "1ff6e9d3feeb33ddc536a8f0a2b0ec3f30fc91f5" }, @@ -6239,6 +7082,18 @@ "source": "9e2f5f8952ae7fb4bf2669ff4c73cee07e32ce53", "translation": "4d0731556f6f7f34684776784f3c452678887efe" }, + "views.notes.empty.helpText": { + "source": "7c7f6e3f729bb2d6851ca58dfb7f78accbbf8e5b", + "translation": "d291370a3aa7ec3d18f78cf0bea8dcc57a4d4d77" + }, + "views.notes.loading": { + "source": "0a442c25d8901fba648f11b436fcda80cb95aace", + "translation": "f08254ff2a860e82ef94d8a5d4180058394c7f78" + }, + "views.notes.refreshButtonAriaLabel": { + "source": "d3921023cd5b02ded1cdc85a64a5d276aafa4c8e", + "translation": "1edf1522efff88c7012b0dacdf48b9be4a7212fd" + }, "views.miniCalendar.title": { "source": "a3cc5b7724a714d5620c6e9ef5f851c143022178", "translation": "32b8c4adbbdde63cb3f2be9bf2cad06d6e70ff6a" @@ -6443,7 +7298,10 @@ "source": "aa73278ad78de284702c875cbe2d73ccb8f9c5d3", "translation": "aa73278ad78de284702c875cbe2d73ccb8f9c5d3" }, - "views.basesCalendar.buttonText.listDays": null, + "views.basesCalendar.buttonText.listDays": { + "source": "27491b23f022fd85faf8c467fb04415d0b5d6bed", + "translation": "77017bfcd6653460376ae3f0ba866197a555357e" + }, "views.basesCalendar.settings.groups.dateNavigation": { "source": "8487a72e02c205a734e6ec6a5684a99576039cb3", "translation": "5cba3a19c4bdca7c7335ef59885db537d31a3571" @@ -6464,8 +7322,14 @@ "source": "9b99ca62a8c206aeef3199afeb8c2d6ea70c3c3a", "translation": "fb2be6dc29776b765d49d49218dd87ea71dfc715" }, - "views.basesCalendar.settings.groups.googleCalendars": null, - "views.basesCalendar.settings.groups.microsoftCalendars": null, + "views.basesCalendar.settings.groups.googleCalendars": { + "source": "cfa0f6bb3b4422195fc4abb06c02bca780fce33a", + "translation": "cfa0f6bb3b4422195fc4abb06c02bca780fce33a" + }, + "views.basesCalendar.settings.groups.microsoftCalendars": { + "source": "2edac69ff3c043d662037911af60ea54cc1c3746", + "translation": "2edac69ff3c043d662037911af60ea54cc1c3746" + }, "views.basesCalendar.settings.dateNavigation.navigateToDate": { "source": "2a47407705ef9a77de4778c38853a4122e38b1fd", "translation": "fa66602b85f1f973639677da41fcafd2912bfff0" @@ -6530,7 +7394,10 @@ "source": "1aadcb0d4d3400d00e2ad0a4cffa017ad1fac481", "translation": "c585fec878ba515866da41eb7d674ade38f4a26c" }, - "views.basesCalendar.settings.layout.listDayCount": null, + "views.basesCalendar.settings.layout.listDayCount": { + "source": "914d28dbcb8c39a44885ec1b53d4c50180639463", + "translation": "271e2ad8e81e118d01d1968dc751b0295b27d9d8" + }, "views.basesCalendar.settings.layout.dayStartTime": { "source": "0f668f32458bf870e8823e6dd50a7fcc1dc595c7", "translation": "a497b916e7f0b2437f82805314e87c9a4567c4fb" @@ -6651,6 +7518,14 @@ "source": "e542695cd353d43e646a3d050dc59b189373613c", "translation": "4847b68dbe6fccbdcfc70e0b9f4ee3976784c47d" }, + "views.kanban.uncategorized": { + "source": "4ef7d73c1a83464f50c8d1b29b43e85facfdf3ee", + "translation": "b8497979613b270b47704046ede59a84e06e781f" + }, + "views.kanban.noProject": { + "source": "644d0b87f93c6cb1645f1ff166e1aa82950191b4", + "translation": "41d236886bd724837571f6173714236988db9cda" + }, "views.kanban.notices.loadFailed": { "source": "9d744b2d44937cda77d20fc3bf2c1fc0242cc3c4", "translation": "072d7a787f6c1c7ed4a0ed9e83e6eecd72596d27" @@ -6663,6 +7538,10 @@ "source": "5df51b612bbe4d9afeb184269bb95d764fac5687", "translation": "9e0179474e87d1303cbc94ccf3cb15e4ae619b82" }, + "views.kanban.columnTitle": { + "source": "621521f9a8788695ec292cbec54d2792cfdf0a7d", + "translation": "fd8beeee2c6e61f064d3b33ff47bbc5ebf3af872" + }, "views.pomodoro.title": { "source": "212e4618d030e7c987ed2d64d96f3e1dcebbf414", "translation": "212e4618d030e7c987ed2d64d96f3e1dcebbf414" @@ -6903,6 +7782,106 @@ "source": "77f4b7a081b20f78557dd404e14d91b89b52a27c", "translation": "01c1479a894b4e8a3b6e679bd3630c1389c7cd60" }, + "views.stats.filters.allTasks": { + "source": "7b9ff838019db5ead18883e3432af81a4ae3aa6a", + "translation": "9d2c107e2dfac53a036dbe28812347a525c4b215" + }, + "views.stats.filters.activeOnly": { + "source": "3dc1b8123749de1b3bd96596b2ef4ccbff6c9567", + "translation": "1bc52096a744e6c8b2d34b069fb5cc11dbb45a8a" + }, + "views.stats.filters.completedOnly": { + "source": "2c9ccad5b96c9be77d8bba71ee8e3340450bbbec", + "translation": "e20cc046ff4be670bf277dfe759491704c08cd62" + }, + "views.stats.refreshButton": { + "source": "56e3badc4e6c5cc95e0ea5a9a878b9bd09f319d4", + "translation": "c725f8bffa86a8ba5464c672765f6d453b0ea543" + }, + "views.stats.timeRanges.allTime": { + "source": "4745c5dce5e868dc0597f7b67f2415fdc2c830c3", + "translation": "65fdb5f6ccbc6107c624ae2676108f1899fd91d8" + }, + "views.stats.timeRanges.last7Days": { + "source": "6522923d0c92d6924bc40253768ff19ef6f8cc3e", + "translation": "2a38397780874635adc7cab9e33589973bd50b0f" + }, + "views.stats.timeRanges.last30Days": { + "source": "6118867f212578fe8acd0c3fc8af1b74b9d4bc2f", + "translation": "99ebcd1011b90918b224975b4f64ae3ba5bc6062" + }, + "views.stats.timeRanges.last90Days": { + "source": "ce96395e907e95648a10d6f84f87d8384b2b0bc4", + "translation": "196c2e170dd6ef2341c8e08a4495f8d8d46ff526" + }, + "views.stats.timeRanges.customRange": { + "source": "f130609dfc13198c1a623733774328b5cf0af757", + "translation": "b7ea056c3bcd192fc494d60009c773d13dcf2448" + }, + "views.stats.resetFiltersButton": { + "source": "5be6985613b3e6fda208ae66882ccd1436bff418", + "translation": "0a25a0dd65d70d73abb8780aacfab81f59ccbc79" + }, + "views.stats.dateRangeFrom": { + "source": "3f66052a107eaf9bae7cad0f61fb462f47ec2c47", + "translation": "966c7c4cad9a7637ca13f8d8d785ceb61d4c34b4" + }, + "views.stats.dateRangeTo": { + "source": "ae79ea1e9c6391a9ed83a2e18a031b835feec0c9", + "translation": "ccdaad85efd51c29123ec6bcc775a04f5fdb6e72" + }, + "views.stats.noProject": { + "source": "644d0b87f93c6cb1645f1ff166e1aa82950191b4", + "translation": "41d236886bd724837571f6173714236988db9cda" + }, + "views.stats.cards.timeTrackedEstimated": { + "source": "c69f2a88d10893a201485b31643dbf5cedd52df1", + "translation": "72a64305c6b63cb512e4b29904a01eecadd34079" + }, + "views.stats.cards.totalTasks": { + "source": "e5cefb07fbc378c439e040958fadb4f78b23163e", + "translation": "f0f9ba479d943c685a3edf0d852cc5771cc39ffe" + }, + "views.stats.cards.completionRate": { + "source": "e9022ebdff65509393be04fb3b32c715ce8f97cf", + "translation": "ceb552fdf70e77aa535834ff53afdc5b3aaf70f4" + }, + "views.stats.cards.activeProjects": { + "source": "8eadc26886a595ead7b65edd28ac32306ce1f5ad", + "translation": "605f746fb6cd1238b6c587f3e93874f0b466168a" + }, + "views.stats.cards.avgTimePerTask": { + "source": "807643dc324a145924708bb6dad611f828e10be2", + "translation": "61b5eb44e0358039c7928be62475b69658e64ec1" + }, + "views.stats.labels.tasks": { + "source": "090ec5f560fc50377fcd95e5cda128e91b276e98", + "translation": "0e783f9dd49b856c8b58298414ed0ee934652e73" + }, + "views.stats.labels.completed": { + "source": "1798b3ba42ee08ea09d9720b2d9c0181abbfe3e4", + "translation": "149714a0b80ea279bb8223a09c7f55dcbd78e874" + }, + "views.stats.labels.projects": { + "source": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "translation": "8541c1877ee3309d0f3d1910723d879f56f38441" + }, + "views.stats.noProjectData": { + "source": "f61de1237b5bf9041f1b8e00bdd5b7bf0df0232e", + "translation": "93b1b0e68e9c16bd4510d3a7a9ae2601e92b1513" + }, + "views.stats.notAvailable": { + "source": "08d2e98e6754af941484848930ccbaddfefe13d6", + "translation": "635d698f7eac414a5ed50b332f7a8ad456cb5793" + }, + "views.stats.noTasks": { + "source": "d7c07a0905ed43a32ec58ccae1353c564433d826", + "translation": "1937bbbc35e4e6bf83cb5308d161a74870fa61d4" + }, + "views.stats.loading": { + "source": "b04ba49f848624bb97ab094a2631d2ad74913498", + "translation": "c3ec5fdd5a74619746a8e7aeeacc7eeb9c0a4563" + }, "views.releaseNotes.title": { "source": "5939771f391859041bc57e5e05b04235b1ef8ee7", "translation": "d77248708380c01950bad45e2eee3593861fe33c" @@ -7671,8 +8650,14 @@ "source": "80122e53d8a3a7eb2c2ac8e352efba551330d1c5", "translation": "83aae4eddea6aa8212ef9b58e462a682e6a382f9" }, - "settings.general.taskIdentification.hideIdentifyingTags.name": null, - "settings.general.taskIdentification.hideIdentifyingTags.description": null, + "settings.general.taskIdentification.hideIdentifyingTags.name": { + "source": "446bbfd987521d42035442c4652693d996565cf8", + "translation": "3cb9d2251bc097e1a613a212caffb46602ad92ea" + }, + "settings.general.taskIdentification.hideIdentifyingTags.description": { + "source": "a38be9ef6457fd38857917cbbc387d396cd2e60a", + "translation": "7997d4c509689eca02f46b66ce20ae26fce63289" + }, "settings.general.taskIdentification.taskProperty.name": { "source": "fb00b60c99acd4529404e3ef8bd77017d9332da6", "translation": "23c1cedf5122cc274c710d34a3952a277e20d21d" @@ -7701,10 +8686,22 @@ "source": "4ff367979f5bdb70f928733dda339ca81435c4b1", "translation": "d7ff49bfccec1fc23a91f3ba5033c279f8833fea" }, - "settings.general.frontmatter.header": null, - "settings.general.frontmatter.description": null, - "settings.general.frontmatter.useMarkdownLinks.name": null, - "settings.general.frontmatter.useMarkdownLinks.description": null, + "settings.general.frontmatter.header": { + "source": "49415878931e5edbbf6d49465647a990f04b12ae", + "translation": "49415878931e5edbbf6d49465647a990f04b12ae" + }, + "settings.general.frontmatter.description": { + "source": "24a51bb38d3857a7e0d9df7130ffff10bdd3b386", + "translation": "518a5ee599fa3382d20c5a24f08f7d8e4fdb2026" + }, + "settings.general.frontmatter.useMarkdownLinks.name": { + "source": "345e6cf9ce20ff8a3ac2966ceb53f8a83bdbd9ba", + "translation": "b8c6bf36d2ee60ed7fac5c7ecf6982140adcac32" + }, + "settings.general.frontmatter.useMarkdownLinks.description": { + "source": "f56ef5842cbd725ff74500d96e3d40e0046e3693", + "translation": "1a2e5b953270d7567a8d0f8271dcfd951f189255" + }, "settings.general.taskInteraction.header": { "source": "a8194c053a4f989c874659b7d4a0e99f5a4a3df5", "translation": "0c99bacc36ebbb163aa2813d5b0d18602725e551" @@ -8165,8 +9162,14 @@ "source": "5ac477c267332c84ac6f5fe5509d523e08a4af94", "translation": "7b7f39c5646078ab8350766132d94cd51d7ea8f6" }, - "settings.taskProperties.customUserFields.autosuggestFilters.header": null, - "settings.taskProperties.customUserFields.autosuggestFilters.description": null, + "settings.taskProperties.customUserFields.autosuggestFilters.header": { + "source": "54bbd5ce9872e3040735f334d7a52a22dfd80868", + "translation": "5fe6a37b94301b58e5891b80c678a93208672e78" + }, + "settings.taskProperties.customUserFields.autosuggestFilters.description": { + "source": "61290f286c6963dbe266b1b6b20a4c3f29c78d66", + "translation": "d6061c04e26ea34b6fa7a32b34b2acc54e6d10fc" + }, "settings.appearance.taskCards.header": { "source": "08836d307ea5b1614f69962e1b9d36f243baddc5", "translation": "06c1127504474b20e7e52386ba6905005993e026" @@ -9727,6 +10730,82 @@ "source": "91fa8ddb011b35634762b9184731cd9d6893b139", "translation": "fa4a91e0206980bc84695604a6e06b8958eb8629" }, + "notices.icsNoteCreatedSuccess": { + "source": "11323db089a64255a316acf806096a5aa681984c", + "translation": "3996a5e105d5760008177ab47bdee1d1b94b10fe" + }, + "notices.icsCreationModalOpenFailed": { + "source": "8e441dcab8108add2e4eafe35c6777ee54436df0", + "translation": "721e0f85743d6d42b26ca0291e957aa26204e18d" + }, + "notices.icsNoteLinkSuccess": { + "source": "bd13c7d5af34c3071b82a0557c8de4aa4e721a76", + "translation": "4bcaa2c5b7f10d8d164e8b82ab4d2760c9c4e7a4" + }, + "notices.icsTaskCreatedSuccess": { + "source": "399ab52e09a6ab0bb5680ad6fbd393f5fe042a33", + "translation": "224c97ebdb2fccd35bb426e4e6b1e058855fb638" + }, + "notices.icsRelatedItemsRefreshed": { + "source": "5481934f9a4c5e2d504b82e04ccf5df30ec1c76d", + "translation": "863b0f78f18be354bb8bde9d1bbea5c80ecd3d15" + }, + "notices.icsFileNotFound": { + "source": "1d497f15eb0c35127c6091ee9f70572a246a1c7c", + "translation": "d01e8cd568334d4d84bdbe1774f2072a6212860a" + }, + "notices.icsFileOpenFailed": { + "source": "bcc8d866719b4db20563417b0bc7105dee53c1f7", + "translation": "0dd3576c3b6a4b79089706a8cc813f40f8215197" + }, + "notices.timeblockAttachmentExists": { + "source": "2d22bbfaf545f4f0b5bc46def37fa637ffece048", + "translation": "ae2a27c36a5fd0167e8471441b4cb65ad07effcd" + }, + "notices.timeblockAttachmentAdded": { + "source": "effb439a980e77cdae3e07d7bf60efbc154860fb", + "translation": "bca020166fc82a6eaa7b9aab91b186d3499f1992" + }, + "notices.timeblockAttachmentRemoved": { + "source": "5938eb486a404f5d7e467d0eb1cfe1bbbe30a663", + "translation": "2955049d952c72227563423e7deff0850d09c362" + }, + "notices.timeblockFileTypeNotSupported": { + "source": "257767122e5f201a138da4c108100f8ac9f25850", + "translation": "94324206093f6f01d7dd33859ad41c5006e70a75" + }, + "notices.timeblockTitleRequired": { + "source": "2d0a4712090bcfe74b7615ae1b05d62e78017e08", + "translation": "5b0b6b9cafe2d1968bcf01d69a885c084d3114d0" + }, + "notices.timeblockUpdatedSuccess": { + "source": "5d226f96855b20f225eb6941dd362e8d1dbe5883", + "translation": "887edec3123748214cb5f199d5b9adb57ac4b573" + }, + "notices.timeblockUpdateFailed": { + "source": "3309e2bf25566ef19423d4dae74a8a0fbbc72f8d", + "translation": "cce911236693d4418c4b5689f6ee9a9b97aaf7c9" + }, + "notices.timeblockDeletedSuccess": { + "source": "0a89dca7412267b95c339832a3c620b4828048e3", + "translation": "8a32402c517f7210a646e5a1d748c76f5ddc5090" + }, + "notices.timeblockDeleteFailed": { + "source": "8b767a84d7757a9cb6b23f76b81adf2aeceb5dac", + "translation": "eafd4c04a3403c114f46fba3c8b9e901bd3d4d77" + }, + "notices.timeblockRequiredFieldsMissing": { + "source": "47aab3e139fb0cd6e5e526e600610fdc06e72957", + "translation": "032578b2913ed34e66654abdd48260a5c23a1e13" + }, + "notices.agendaLoadingFailed": { + "source": "9e866955c967d91bcb00b272cd9ef2f4425fc9c8", + "translation": "ab2ea029e95941953655256e5da655901da246a6" + }, + "notices.statsLoadingFailed": { + "source": "93b6f19b5b4d3aa2bc361e005ce439c3da3d8cfc", + "translation": "26a44336cb5d53991dcb84a5a03b3cfd0617bd9d" + }, "commands.openCalendarView": { "source": "d7dce352d3bf5b12479770b86495263f84275492", "translation": "11e514cf3b3274eef09162a3f5f038b414ef62ce" @@ -9813,10 +10892,360 @@ }, "commands.viewReleaseNotes": { "source": "04c2072af97cf70c22fbf9efa9b62eb2574d23d6", - "translation": "6b3d99d1c66a1ab48efa9303a68404ff95c10897" + "translation": "19ef9ab3a718f13f42fe08b4dcbcdcb7f7e57601" + }, + "commands.startTimeTrackingWithSelector": { + "source": "32970116a0d7a74dadbf82a0aa2aa8117278d601", + "translation": "083a677f81b5508ba7e8ec98cf3ab8eb9ba7d9e4" + }, + "commands.editTimeEntries": { + "source": "b8c5b41ec8f55348f7ae4acf087d62edaf588a0c", + "translation": "739a9f515cd6428a436482eafd221b1f468beea6" + }, + "modals.deviceCode.title": { + "source": "15d49719fa9a20f697d38e6af17a00b8ae4a529d", + "translation": "69974268e1a96961aa677e2cbc376113498dcce8" + }, + "modals.deviceCode.instructions.intro": { + "source": "6f588f0b7cb402c539b8814f65a4798e8da218e0", + "translation": "b1d676ed51a6ea6fbf2c59103f71bcd486a2c23b" + }, + "modals.deviceCode.steps.open": { + "source": "cf9b77061f7b3126b49d50a6fa68f7ca8c26b7a3", + "translation": "bf763df73110274fa438f1d7c8699c5feb93a26a" + }, + "modals.deviceCode.steps.inBrowser": { + "source": "79f78eb5c8b52a3626b9719515e8b9c1c03303e5", + "translation": "6558ac681b4fb66f412aed77d7d9da3d46f90093" + }, + "modals.deviceCode.steps.enterCode": { + "source": "e359133d256a3a291c64f6b573cd2c0b02e330d6", + "translation": "5043efe6521478044618906692ea82b09e3674bd" + }, + "modals.deviceCode.steps.signIn": { + "source": "3fefa93f424be9fb1d4dafd8277b9978d619e1cb", + "translation": "9f1e3e74173ec9519e608f0c7f7393ed5451bb81" + }, + "modals.deviceCode.steps.returnToObsidian": { + "source": "7e13c0c3a8d9118e121f70453facfa2d0101de6d", + "translation": "d4c36783d12e99db2df95b159542f73b7f803860" + }, + "modals.deviceCode.codeLabel": { + "source": "a9fe887104abcf427495c33e29a3c77c3a90bdac", + "translation": "8788945d30c775f53ec5a02972088d5928814247" + }, + "modals.deviceCode.copyCodeAriaLabel": { + "source": "6c10692719e62d762ec4716db1a8004544682745", + "translation": "3b9435be5e4c13856ced81e37bc74b0845a614bd" + }, + "modals.deviceCode.waitingForAuthorization": { + "source": "293c2185e57c716d3aa8d9fd2b0804b5aa8afdae", + "translation": "480f6c654caac92a3e06376435ed10280dc35aa7" + }, + "modals.deviceCode.openBrowserButton": { + "source": "e505acd1482aefb1017b4214cf1732b70164594b", + "translation": "7bab55c92b9a476a2591e8b56f04f23674f20648" + }, + "modals.deviceCode.cancelButton": { + "source": "77dfd2135f4db726c47299bb55be26f7f4525a46", + "translation": "c111e0ab9ddb1dfb79f8a12c741ba6dbdb07992a" + }, + "modals.deviceCode.expiresMinutesSeconds": { + "source": "73e474a3e682b8715b30a1c3093da2b9feef525d", + "translation": "e0e9380b76e34656624e8257164f214a645ed790" + }, + "modals.deviceCode.expiresSeconds": { + "source": "9b16869f2468a6027b09ca754e9d28e59384b51d", + "translation": "cdb74b222d45d32cd07096bf15dfd6c28b838f2f" + }, + "modals.icsEventInfo.calendarEventHeading": { + "source": "4dfa3ac26d7e48ff21ffae5f3dc955b269d6e43c", + "translation": "e458cb1fc377964e2565d5b2e3dd4bb75ab6a8da" + }, + "modals.icsEventInfo.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "98a5efa60beb882ed4dbac1ac013f73418acda77" + }, + "modals.icsEventInfo.calendarLabel": { + "source": "adab5090ac6a1b7b5420faac7be86c41721ba27c", + "translation": "df824e6b9b926d40cc19b68662e959c8d43a8fff" + }, + "modals.icsEventInfo.dateTimeLabel": { + "source": "63ae7cafeda48b4383447db121a8ca77ac7d2dc0", + "translation": "ab880f2011fb8e2a878cc55f372c18f691efe13e" + }, + "modals.icsEventInfo.locationLabel": { + "source": "d219c68101f532de10add2cf42fb9dbeca73d3be", + "translation": "7af1ffcca691e731c33e254a9d552915acd12ca6" + }, + "modals.icsEventInfo.descriptionLabel": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "7fda3970598ef60b0b151b2274290dd18559cf83" + }, + "modals.icsEventInfo.urlLabel": { + "source": "0e2d9b0777a485c1276de0803c12a7d76fbc5c39", + "translation": "0e2d9b0777a485c1276de0803c12a7d76fbc5c39" + }, + "modals.icsEventInfo.relatedNotesHeading": { + "source": "825cf852f74e1fb10d8b078b5a2286792f974f87", + "translation": "898a4033c2e4f50ad41d24b16a13717b947d663b" + }, + "modals.icsEventInfo.noRelatedItems": { + "source": "d2c2e903d5cd9372db38f41f4a3aa67b1c6b01d9", + "translation": "2aa98a1e35905f4aabfc07640075cc26a8259092" + }, + "modals.icsEventInfo.typeTask": { + "source": "7bb0ddf9221c03b806b03c209e8366000124aa15", + "translation": "0e06d640f2910bc96d689befcf38434781dd05c5" + }, + "modals.icsEventInfo.typeNote": { + "source": "2c924e3088204ee77ba681f72be3444357932fca", + "translation": "1a6b7be7e5a3f92b65f566e257937e1ef7ba4237" + }, + "modals.icsEventInfo.actionsHeading": { + "source": "c3cd636a585b20c40ac2df5ffb403e83cb2eef51", + "translation": "79bd0ed912c3db9614b89efabba9671b6542a2af" + }, + "modals.icsEventInfo.createFromEventLabel": { + "source": "15f54eccbee249bfd4439a4ae8f0b33833c49ea9", + "translation": "05eb23322073fe840b6499c998542c3315f378e3" + }, + "modals.icsEventInfo.createFromEventDesc": { + "source": "4e04a4fbcae12cb0926dba09797a88d24259b76e", + "translation": "529c51afc081f3334f4f7ea441890c0b8579d738" + }, + "modals.icsEventInfo.linkExistingLabel": { + "source": "359e0b3ff14ed6bde5762a3bc04066cc5cc958c8", + "translation": "3a61c02c69ef360ec51359851f8864775c0e668d" + }, + "modals.icsEventInfo.linkExistingDesc": { + "source": "1aa8edfa252484d28cbbe5544181a273927091bb", + "translation": "01a0e0d7ef255e4f96306ad8d221dcf034d2574e" + }, + "modals.timeblockInfo.editHeading": { + "source": "d42d302b1bf2fca148c75efcf03389a0b1ef88b3", + "translation": "343acec27dc4ee87b01136145b3b85060be25cd6" + }, + "modals.timeblockInfo.dateTimeLabel": { + "source": "28948815dbd940aae135258b71870cac05cf589c", + "translation": "34ebd04dbf2153601d4e839c5ed13c3650164a24" + }, + "modals.timeblockInfo.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "98a5efa60beb882ed4dbac1ac013f73418acda77" + }, + "modals.timeblockInfo.titleDesc": { + "source": "b73aeab0cbd7047291ace95ec61a5a9738ddf6d7", + "translation": "5e5f3a6e08f6ac124aeb383eaf2bc1d9019ede98" + }, + "modals.timeblockInfo.titlePlaceholder": { + "source": "a53b1342a44c5bcd904b448cbc399836d276f5d7", + "translation": "f745f7e383c13f44b5eaaa9d47140a32737ad506" + }, + "modals.timeblockInfo.descriptionLabel": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "7fda3970598ef60b0b151b2274290dd18559cf83" + }, + "modals.timeblockInfo.descriptionDesc": { + "source": "993cbb9b4271e43803f891616c2d68d36893b4d4", + "translation": "12aa0bd21b47c4225f352b5686ff64966e99c5f8" + }, + "modals.timeblockInfo.descriptionPlaceholder": { + "source": "b373425eef0d25730b64eb196e610724125ebbe7", + "translation": "73b56431ca782ed29078ad20bfa457dc91a667a2" + }, + "modals.timeblockInfo.colorLabel": { + "source": "1d0c8304baedcf8e3a78982c2e7c0b04622bf2a0", + "translation": "1d0c8304baedcf8e3a78982c2e7c0b04622bf2a0" + }, + "modals.timeblockInfo.colorDesc": { + "source": "cdff26ebbc3565d04efd839876c97f07e21406ff", + "translation": "fc76f14fcbbb4e71d32788a5a2dea2b50045f630" + }, + "modals.timeblockInfo.colorPlaceholder": { + "source": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2", + "translation": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2" + }, + "modals.timeblockInfo.attachmentsLabel": { + "source": "6771ade6e8965a499bc298107ffb52e9a18dd7e3", + "translation": "b925ab31f95cf30f226efa031da97576df152ab1" + }, + "modals.timeblockInfo.attachmentsDesc": { + "source": "7678a59aa98024fb9b82ac20244cfe5d0f97e9f9", + "translation": "449f39d8886ecb51029a8fca132a9077766294e5" + }, + "modals.timeblockInfo.addAttachmentButton": { + "source": "f3aaf19dab47f2aa461d2713ffc1188c3f4b2cab", + "translation": "61b2060beae856e7501e9e89875873de763cc013" + }, + "modals.timeblockInfo.addAttachmentTooltip": { + "source": "39289e99c6326eb60ff29dad376a120671c3a2f1", + "translation": "7c76b63c331be50961cba2d3eb776952c6716f49" + }, + "modals.timeblockInfo.deleteButton": { + "source": "ba32111a1af977be873d0389063862832583dbd6", + "translation": "ad009d42da58e823fd8aa30749fd0f29e37127e5" + }, + "modals.timeblockInfo.saveButton": { + "source": "fa2984b367b8f2fc5cd521936dda7b44598778a4", + "translation": "831d46b9be9c61d18f47d4d8ea4e44345e8753ef" + }, + "modals.timeblockInfo.deleteConfirmationTitle": { + "source": "ba32111a1af977be873d0389063862832583dbd6", + "translation": "ad009d42da58e823fd8aa30749fd0f29e37127e5" + }, + "modals.timeblockCreation.heading": { + "source": "6ba03dee8a531db91b38fb09715e0c40304804d2", + "translation": "61a9103ef44153884f3f8c5cedcc1bfefd189d2f" + }, + "modals.timeblockCreation.dateLabel": { + "source": "f2110a630c6c6f7249d0a946ded3468ecbe2b948", + "translation": "513347266d8f69c75c673d2611519a89d3ac3afc" + }, + "modals.timeblockCreation.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "98a5efa60beb882ed4dbac1ac013f73418acda77" + }, + "modals.timeblockCreation.titleDesc": { + "source": "b73aeab0cbd7047291ace95ec61a5a9738ddf6d7", + "translation": "5e5f3a6e08f6ac124aeb383eaf2bc1d9019ede98" + }, + "modals.timeblockCreation.titlePlaceholder": { + "source": "a53b1342a44c5bcd904b448cbc399836d276f5d7", + "translation": "f745f7e383c13f44b5eaaa9d47140a32737ad506" + }, + "modals.timeblockCreation.startTimeLabel": { + "source": "88d8206d586abe4c8e35c8e9adcc649d07c99a1e", + "translation": "2c247b9086a9eb9fdb29d38e03b6d72ed7bf4e30" + }, + "modals.timeblockCreation.startTimeDesc": { + "source": "468423b2b77ef3d98c67206464beac360226adcb", + "translation": "56395bae5552ed4a829d05dbe3277fd4cbe3d237" + }, + "modals.timeblockCreation.startTimePlaceholder": { + "source": "62646b00e3d5abef4cb8139c5f21bf0907f360d1", + "translation": "62646b00e3d5abef4cb8139c5f21bf0907f360d1" + }, + "modals.timeblockCreation.endTimeLabel": { + "source": "cd7800da7f4ff94a0e14445d7f94b6345d1b7b8a", + "translation": "0752cbf005c3974f3ab43097b7dcc88e4f12b36f" + }, + "modals.timeblockCreation.endTimeDesc": { + "source": "a739e69aa3bf9fbefc75ec0ceb30989dc19dd05d", + "translation": "d0fc2584214a58b316c73fc6b8173853b0422190" + }, + "modals.timeblockCreation.endTimePlaceholder": { + "source": "3fd66d5f10a47efe7550c85fc4fc696a08265128", + "translation": "3fd66d5f10a47efe7550c85fc4fc696a08265128" + }, + "modals.timeblockCreation.descriptionLabel": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "7fda3970598ef60b0b151b2274290dd18559cf83" + }, + "modals.timeblockCreation.descriptionDesc": { + "source": "993cbb9b4271e43803f891616c2d68d36893b4d4", + "translation": "12aa0bd21b47c4225f352b5686ff64966e99c5f8" + }, + "modals.timeblockCreation.descriptionPlaceholder": { + "source": "b373425eef0d25730b64eb196e610724125ebbe7", + "translation": "73b56431ca782ed29078ad20bfa457dc91a667a2" + }, + "modals.timeblockCreation.colorLabel": { + "source": "1d0c8304baedcf8e3a78982c2e7c0b04622bf2a0", + "translation": "1d0c8304baedcf8e3a78982c2e7c0b04622bf2a0" + }, + "modals.timeblockCreation.colorDesc": { + "source": "cdff26ebbc3565d04efd839876c97f07e21406ff", + "translation": "fc76f14fcbbb4e71d32788a5a2dea2b50045f630" + }, + "modals.timeblockCreation.colorPlaceholder": { + "source": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2", + "translation": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2" + }, + "modals.timeblockCreation.attachmentsLabel": { + "source": "6771ade6e8965a499bc298107ffb52e9a18dd7e3", + "translation": "b925ab31f95cf30f226efa031da97576df152ab1" + }, + "modals.timeblockCreation.attachmentsDesc": { + "source": "dc43799ad507158bf2d451de9429e5953a14f38c", + "translation": "9537253b2b52ef817bd4f1067538618a60cb02b7" + }, + "modals.timeblockCreation.addAttachmentButton": { + "source": "f3aaf19dab47f2aa461d2713ffc1188c3f4b2cab", + "translation": "61b2060beae856e7501e9e89875873de763cc013" + }, + "modals.timeblockCreation.addAttachmentTooltip": { + "source": "39289e99c6326eb60ff29dad376a120671c3a2f1", + "translation": "7c76b63c331be50961cba2d3eb776952c6716f49" + }, + "modals.timeblockCreation.createButton": { + "source": "6ba03dee8a531db91b38fb09715e0c40304804d2", + "translation": "61a9103ef44153884f3f8c5cedcc1bfefd189d2f" + }, + "modals.icsNoteCreation.heading": { + "source": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31", + "translation": "1dcdb592eb0649fe79a88527224d55840b4c4f24" + }, + "modals.icsNoteCreation.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "98a5efa60beb882ed4dbac1ac013f73418acda77" + }, + "modals.icsNoteCreation.titleDesc": { + "source": "e5928c1bd84bd2735415d45d5f7e03f677ff5f52", + "translation": "671ea7c8262804293ac95576a1e2075185e10c84" + }, + "modals.icsNoteCreation.folderLabel": { + "source": "30baa24967e08965d1594408031f0324ae11ccac", + "translation": "26085753fcf9e61c9540eeb2798caaf68dd9669d" + }, + "modals.icsNoteCreation.folderDesc": { + "source": "105291a610d29a8ea50e76ceb65257c5236019ac", + "translation": "2ecc5bf07cb19c7bd01f1b9dd01760834287e435" + }, + "modals.icsNoteCreation.folderPlaceholder": { + "source": "c7cbb4b45068905aef0f0961bdfb1c7fe9988b52", + "translation": "29229d2131554bda26797a907ee52c1101f28a16" + }, + "modals.icsNoteCreation.createButton": { + "source": "6e157c5da4410b7e9de85f5c93026b9176e69064", + "translation": "48a0686f58318623637083a4fa0e39abb00acde3" + }, + "modals.icsNoteCreation.startLabel": { + "source": "538f6db0c212f09a0e37ee10239013c589daeaf6", + "translation": "b772963220f9ff7672baee8608b22e56406cc3ef" + }, + "modals.icsNoteCreation.endLabel": { + "source": "861d25a92b9492d558445d04ed6357516e1b3a5f", + "translation": "3611d446d63934d1c0ac2bd47ec6eb938031f4ec" + }, + "modals.icsNoteCreation.locationLabel": { + "source": "c47d59ef9cb983fd5a9c42a64aad33ba7b158fd1", + "translation": "b6caecffdcd1f51ce69aa0d7a41bf6284f56ecd1" + }, + "modals.icsNoteCreation.calendarLabel": { + "source": "d56f81fde03931ab0ff6785fc9cb62187815a346", + "translation": "7f79d2697e32debab68198f0c90cc254e8b8701a" + }, + "modals.icsNoteCreation.useTemplateLabel": { + "source": "23797614964d98782ffa29622f7959d4ed36bad0", + "translation": "38d3c092bd674c3cdfa1a9a93ddd4a4be7564924" + }, + "modals.icsNoteCreation.useTemplateDesc": { + "source": "6b9c073718f9ecb707cc80778c42c34c92d10790", + "translation": "e83358af6abfecb1a967897bcc6e51d430cd6db8" + }, + "modals.icsNoteCreation.templatePathLabel": { + "source": "198d2f2743fb74abb06b942a47c37d9128c6aeed", + "translation": "7c4f72f42ff25fced69393f41672c6df4e1856e0" + }, + "modals.icsNoteCreation.templatePathDesc": { + "source": "b140758b9ac592cc627e4a41db98770149bf0d44", + "translation": "351e006b64299acee92153b15144cbe373c72cd6" + }, + "modals.icsNoteCreation.templatePathPlaceholder": { + "source": "26f6cf53c168c01cf655bf6f3010f6bc772af4e0", + "translation": "26f6cf53c168c01cf655bf6f3010f6bc772af4e0" }, - "commands.startTimeTrackingWithSelector": null, - "commands.editTimeEntries": null, "modals.task.titlePlaceholder": { "source": "c8196f1d1039c2fb290add52ee990c571173d6f1", "translation": "dee0035d1027b937237c8bbdd6e77288df356ff4" @@ -10093,14 +11522,38 @@ "source": "0fe4ddf98d535f0b7e919aec9630254b1d2ad167", "translation": "0fe4ddf98d535f0b7e919aec9630254b1d2ad167" }, - "modals.taskSelector.title": null, - "modals.taskSelector.placeholder": null, - "modals.taskSelector.instructions.navigate": null, - "modals.taskSelector.instructions.select": null, - "modals.taskSelector.instructions.dismiss": null, - "modals.taskSelector.notices.noteNotFound": null, - "modals.taskSelector.dueDate.overdue": null, - "modals.taskSelector.dueDate.today": null, + "modals.taskSelector.title": { + "source": "957bbd1116cdb7c59e3f7649b8bc2c2e8ed3de54", + "translation": "36751f44d4f3680455e9d26242664a766f673e6b" + }, + "modals.taskSelector.placeholder": { + "source": "72bbd8a758aaf0c92b3e7a6d22b962077db3b6ff", + "translation": "3d6122b56dd583b6fd92f8f82111b51d5b580d0b" + }, + "modals.taskSelector.instructions.navigate": { + "source": "130c10ed2c60f33a0f4416b6b7412b9bd11649ce", + "translation": "b835293dd3453ae38e3dffc2bc0b1e2a22255c2e" + }, + "modals.taskSelector.instructions.select": { + "source": "e4e5b8e792f7971958b92028636ff584167bb638", + "translation": "733f4ab5d2bd022281559099ee1396750fa58db5" + }, + "modals.taskSelector.instructions.dismiss": { + "source": "6688c3f3833719827c18453d8e6d7eecbda657ff", + "translation": "204f255eb6ca1d51da833feae7e98e1b003b4a56" + }, + "modals.taskSelector.notices.noteNotFound": { + "source": "c1508711476a6e33215c7e7a3eaee01b7b1b90f9", + "translation": "5c254ab8e10ce8a599f78309882a6c9202ef184b" + }, + "modals.taskSelector.dueDate.overdue": { + "source": "7980fcc0ec0fb23d3b8bd43a1ce5c87f5d868622", + "translation": "289237faf4b92f2855282254711a3a2ebc320141" + }, + "modals.taskSelector.dueDate.today": { + "source": "5c1fc193ed4468897cf177a7de9cf77e4a673853", + "translation": "8f45a2e80e97330bfff7549defccf7e11a53a48b" + }, "modals.taskCreation.title": { "source": "f1f1450ff80aeab91cb0853329e2b454904866e2", "translation": "fa53244edbfdb1336b1bca3df1c16839b71e3fa7" @@ -10137,7 +11590,10 @@ "source": "d95ef5460dda68f0b2f23b2168ec04d567436991", "translation": "47443426935bfeeeb5c95e29327719eb778287b0" }, - "modals.taskCreation.notices.blockingUnresolved": null, + "modals.taskCreation.notices.blockingUnresolved": { + "source": "545b04083e38f5969b9605a0ac51686b3124d5c8", + "translation": "941526d2322196808f234e44977752591858ce62" + }, "modals.taskEdit.title": { "source": "8a4d4e6eb9a367d616b8a4cbfa2792068482e884", "translation": "051083fa034ad55509d16dafb492a62f62a261fe" @@ -10190,8 +11646,14 @@ "source": "fed2485c8e57184fdccdbbe4728bea5eb29e61e8", "translation": "e9548e7bd3adc72804020d2d1ca53da53076a85f" }, - "modals.taskEdit.notices.dependenciesUpdateSuccess": null, - "modals.taskEdit.notices.blockingUnresolved": null, + "modals.taskEdit.notices.dependenciesUpdateSuccess": { + "source": "69065c1c9e58bc4eae0501893c63426389497b54", + "translation": "509f2a9d3ef9650bad6144d1b5be2fa0e4092f09" + }, + "modals.taskEdit.notices.blockingUnresolved": { + "source": "545b04083e38f5969b9605a0ac51686b3124d5c8", + "translation": "941526d2322196808f234e44977752591858ce62" + }, "modals.taskEdit.notices.fileMissing": { "source": "596fc23c289a0b102027e30e03f9da21180f9e3c", "translation": "f72cbce27666448b0f6290834688f480579870c1" @@ -10440,33 +11902,114 @@ "source": "e3b84e89bc68a5c8f2e36e22ee9857002c4a2545", "translation": "710dff33842bc2252a35666052fa038d11b31a14" }, - "modals.timeEntryEditor.title": null, - "modals.timeEntryEditor.addEntry": null, - "modals.timeEntryEditor.noEntries": null, - "modals.timeEntryEditor.deleteEntry": null, - "modals.timeEntryEditor.startTime": null, - "modals.timeEntryEditor.endTime": null, - "modals.timeEntryEditor.duration": null, - "modals.timeEntryEditor.durationDesc": null, - "modals.timeEntryEditor.durationPlaceholder": null, - "modals.timeEntryEditor.description": null, - "modals.timeEntryEditor.descriptionPlaceholder": null, - "modals.timeEntryEditor.calculatedDuration": null, - "modals.timeEntryEditor.totalTime": null, - "modals.timeEntryEditor.totalMinutes": null, - "modals.timeEntryEditor.saved": null, - "modals.timeEntryEditor.saveFailed": null, - "modals.timeEntryEditor.openFailed": null, - "modals.timeEntryEditor.noTasksWithEntries": null, - "modals.timeEntryEditor.validation.missingStartTime": null, - "modals.timeEntryEditor.validation.endBeforeStart": null, - "modals.timeTracking.noTasksAvailable": null, - "modals.timeTracking.started": null, - "modals.timeTracking.startFailed": null, - "modals.timeEntry.mustHaveSpecificTime": null, - "modals.timeEntry.noTasksAvailable": null, - "modals.timeEntry.created": null, - "modals.timeEntry.createFailed": null, + "modals.timeEntryEditor.title": { + "source": "5a583eaa9a1e14bd48dc7a8cc1ab3f8dbeae6d12", + "translation": "7731fcfdfba3d5f50178c3d79cd2913cd07d00fd" + }, + "modals.timeEntryEditor.addEntry": { + "source": "49482cb4584ab3db093588777b7ac7f9dadb6ba5", + "translation": "d71ef2dc3e340899b668bc5996b9f91b30d9d514" + }, + "modals.timeEntryEditor.noEntries": { + "source": "56ea4f47bf44cb3e8e420b5479548231f1f68b7b", + "translation": "73d431969cfeac1a469a8782d7f1c157f71126f4" + }, + "modals.timeEntryEditor.deleteEntry": { + "source": "ccaf752b04ea9ccd6299a14c75e6bb065cd392b6", + "translation": "46542aa89f5e921d2e30f964292d995124733021" + }, + "modals.timeEntryEditor.startTime": { + "source": "88d8206d586abe4c8e35c8e9adcc649d07c99a1e", + "translation": "2c247b9086a9eb9fdb29d38e03b6d72ed7bf4e30" + }, + "modals.timeEntryEditor.endTime": { + "source": "90525fcfc63aaf7370c341ff277299cd02df3705", + "translation": "09ca46b1e3d307915c61ab36f352aee544c662de" + }, + "modals.timeEntryEditor.duration": { + "source": "10c3d1ca4b19f76a702335cf54c4ad5e308b9269", + "translation": "af4c7429ea46399987b830f1a394dcc0a3682e7c" + }, + "modals.timeEntryEditor.durationDesc": { + "source": "03f5c59b12a26186f784cc542c31552236d7feca", + "translation": "e4b78f210a9d7e20afea64dc5f4b2a42dbab5644" + }, + "modals.timeEntryEditor.durationPlaceholder": { + "source": "01cdc0c08662f0a248e0a1c3739e7fcfd15bed2a", + "translation": "c930b8bc45d18c8028734c852dddf17918aa42dd" + }, + "modals.timeEntryEditor.description": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "7fda3970598ef60b0b151b2274290dd18559cf83" + }, + "modals.timeEntryEditor.descriptionPlaceholder": { + "source": "89c8239873859b318429811db142d3b8c695b2ac", + "translation": "0ef99c6d2cde3ef2d95c703838e3b5fa083df25d" + }, + "modals.timeEntryEditor.calculatedDuration": { + "source": "b7cc42c87dac49b80cf3ab1b6f14860033a61e06", + "translation": "86cff1012d19fa5ee8fed3f3b9af556135f396ef" + }, + "modals.timeEntryEditor.totalTime": { + "source": "042bd2520b3f2b773bdad26dbd7da5faad717454", + "translation": "042bd2520b3f2b773bdad26dbd7da5faad717454" + }, + "modals.timeEntryEditor.totalMinutes": { + "source": "97ff49bf5909a19e98de6e0fd5db5465acade28e", + "translation": "97ff49bf5909a19e98de6e0fd5db5465acade28e" + }, + "modals.timeEntryEditor.saved": { + "source": "4f5b612346e6ff0ccbf9bf1a2bc066b75d492182", + "translation": "9fc373e47be946ea8b1f2fd7cca0a1cd6f699a08" + }, + "modals.timeEntryEditor.saveFailed": { + "source": "ee11ad6a60432aedc8b7ffc17a114d7a10d64aa9", + "translation": "132dab715ce6fae2db14100ead1494fa762d75aa" + }, + "modals.timeEntryEditor.openFailed": { + "source": "b0e2d1ab7251bb67ffebe49b31ba77ecbb567e83", + "translation": "a1bce0d18b9ac6416af4c43eb51f5fafdb79c407" + }, + "modals.timeEntryEditor.noTasksWithEntries": { + "source": "634bcd14e86e7416c2c55af84ed5d586529e4c6f", + "translation": "db5ce83ea9454c5f44cc6f320552fe50b4872253" + }, + "modals.timeEntryEditor.validation.missingStartTime": { + "source": "ece990b264aa1b7aee79dcef46cc950be2ec88d0", + "translation": "4f5ac955616e3040b289a4cb8b5df44f41a7a75e" + }, + "modals.timeEntryEditor.validation.endBeforeStart": { + "source": "468339327f19d1060b77fff4957224707e821025", + "translation": "f91c6a62234ac1c52aac97095ce97a893b634249" + }, + "modals.timeTracking.noTasksAvailable": { + "source": "f632e1e836cc6d1d58eee8c6aa178297f73658a4", + "translation": "1cc14e15ed9a705aa53afae0c0bbe4b83b252f0f" + }, + "modals.timeTracking.started": { + "source": "6c0a2563cd30cfab8cee8ad540bba85df045de06", + "translation": "ab4da434fe523c6d4fabf1cdadef0b298f5b44b9" + }, + "modals.timeTracking.startFailed": { + "source": "c1b914325ad18471661dcc078d2e4111856abffc", + "translation": "78b1da893370881ecc86cd5299aa5faa3eef4906" + }, + "modals.timeEntry.mustHaveSpecificTime": { + "source": "b5e4624ad4a4356677441185f8d75c03831d1965", + "translation": "b0021147886682584a1080a93f63a1161e2ee86b" + }, + "modals.timeEntry.noTasksAvailable": { + "source": "8c8ab856815d4eced441cfd78f8b327a49ad7914", + "translation": "2ed300d06aff79fea5d47b9ad56b0ce21b47426d" + }, + "modals.timeEntry.created": { + "source": "c9c5244ef7123a90bf648150a3c88577a6dd955f", + "translation": "37d10f7debf038610b2a97c6bcd308a208ff6bd3" + }, + "modals.timeEntry.createFailed": { + "source": "6b01c84eaddf7dd2da3a9f10a1470268926dd944", + "translation": "6e06ced83b07191f9aa272f95c5ae0aa66c4d775" + }, "contextMenus.task.status": { "source": "bae7d5be70820ed56467bd9a63744e23b47bd711", "translation": "87cf2a843e2e43a05edc326327fca7e1388bc196" @@ -11659,11 +13202,98 @@ "source": "848eed0fbd5429f556b2982dec3ea87136e33e44", "translation": "d830f4246090d5a2c2647ce5f622aa9e62dd472b" }, - "ui.filterBar.group.completedDate": null, + "ui.filterBar.group.completedDate": { + "source": "0089d3b136526c1dfbe0487bc7c3c8ef99812909", + "translation": "0e0819da46286f82e17b71a8c319a18429f65102" + }, + "ui.filterBar.subgroupLabel": { + "source": "4d089fb595e28cf36d5ac24a58012732faf4f843", + "translation": "3b77b5065602959f87c60b09970060c4269e64ee" + }, "ui.filterBar.notices.propertiesMenuFailed": { "source": "e9df8763e0af720e4edcfd8f3bd87af75a69f7a1", "translation": "0644f495396344b8c866086150382c5e2b26fd77" }, + "components.dateContextMenu.weekdays": { + "source": "4ffc67b62aae6c9adee9360316760ba55c1f53ed", + "translation": "1d173621a315c3edd17837af795dbb0e6911c573" + }, + "components.dateContextMenu.clearDate": { + "source": "a0aea5917b8778dd5eeeb962c3a4fda6ad519814", + "translation": "d687cb791fa6282ce037432e66d9f9d1dd3a048f" + }, + "components.dateContextMenu.today": { + "source": "24345a14377fd821d3932f4e82f6431640955b0b", + "translation": "565e9824d995abb146d7f796e6cb377ef5bf2cb8" + }, + "components.dateContextMenu.tomorrow": { + "source": "1948bf2dfa8fbc1f07ad3b6f0e2b3ee39f87e495", + "translation": "153d4410177eb547b494c17328d5fe626cf71572" + }, + "components.dateContextMenu.thisWeekend": { + "source": "1921aa118ad7a4dca5f679eaefc3e1777854c777", + "translation": "28ca968c960197dc9deee5535b405a79d52f38b8" + }, + "components.dateContextMenu.nextWeek": { + "source": "5a20763adfb0adcac05270a340009a8526652248", + "translation": "3867104e8cc448f78c929c319187d66cd9c4ce7e" + }, + "components.dateContextMenu.nextMonth": { + "source": "8abf7cf1d0b36ff16ebbe26b8285a65d9d1582f6", + "translation": "5cea706e8433fcf9bcb64d1e2f89529138e2a6f8" + }, + "components.dateContextMenu.setDateTime": { + "source": "5e2928ff54a45201c4e6921fe419723cb08c9af6", + "translation": "488007d97d065689d2cd09c8cdea004f04b927e6" + }, + "components.dateContextMenu.dateLabel": { + "source": "eb9a4bc1c0c153e4e4b042a79113b815b7e3021d", + "translation": "bcc476092dcf939d7a85ca79d76ff9e48d5597f3" + }, + "components.dateContextMenu.timeLabel": { + "source": "5b945a9a6ce9ef6431e71d5ea4834db6b50c08c5", + "translation": "04b82d19f6d9f48be6169b0185fd544f433b494f" + }, + "components.subgroupMenuBuilder.none": { + "source": "6eef6648406c333a4035cd5e60d0bf2ecf2606d7", + "translation": "f3c24118253ba4c6d9714a1b7072af06a8990a67" + }, + "components.subgroupMenuBuilder.status": { + "source": "bae7d5be70820ed56467bd9a63744e23b47bd711", + "translation": "87cf2a843e2e43a05edc326327fca7e1388bc196" + }, + "components.subgroupMenuBuilder.priority": { + "source": "886cbff9d9df761ec642945e519631a23ed173a2", + "translation": "48f9c9750a53cc8f910fa331f141f80f025af271" + }, + "components.subgroupMenuBuilder.context": { + "source": "cc11b3a28fa30ae6d3d3ad1438824cbd5224ba5c", + "translation": "0078616a8727617e0180622340fc2f4a8455d2e3" + }, + "components.subgroupMenuBuilder.project": { + "source": "f6f4da8d93e88a08220e03b7810451d3ba540a34", + "translation": "cca57b0118da06cf38b4a9d251528ceb9d8da9ff" + }, + "components.subgroupMenuBuilder.dueDate": { + "source": "a1b308ec704aed240db754a1862adcf67e19f001", + "translation": "ee1e0f39e45ddf8007f79069c57e1362ac698870" + }, + "components.subgroupMenuBuilder.scheduledDate": { + "source": "19ad699baa333ebafbaee750f50ce2b8c2a069e4", + "translation": "d993412cdda43c87b63b68675e3b219add3bb102" + }, + "components.subgroupMenuBuilder.tags": { + "source": "848eed0fbd5429f556b2982dec3ea87136e33e44", + "translation": "d830f4246090d5a2c2647ce5f622aa9e62dd472b" + }, + "components.subgroupMenuBuilder.completedDate": { + "source": "0089d3b136526c1dfbe0487bc7c3c8ef99812909", + "translation": "0e0819da46286f82e17b71a8c319a18429f65102" + }, + "components.subgroupMenuBuilder.subgroup": { + "source": "4d089fb595e28cf36d5ac24a58012732faf4f843", + "translation": "3b77b5065602959f87c60b09970060c4269e64ee" + }, "components.propertyVisibilityDropdown.coreProperties": { "source": "b3cfb1af6a8f2011725da9badb151b1c72b0e6ec", "translation": "a3fde73e81c95a92d5645faa11a31f43498671bf" @@ -12210,6 +13840,30 @@ "source": "2ab447eb84f59d3b163ca7bae16ff0d20b3ca125", "translation": "ed8748ce3accb9c691931f2fbd1ddb9db10b6f7d" }, + "views.agenda.empty.helpText": { + "source": "2ea803868d1e372007e992a4d843bd8f48afa0b5", + "translation": "e5f23bb4ee7527ab675a50618c6939627c62d879" + }, + "views.agenda.contextMenu.showOverdueSection": { + "source": "651ee476d780890c57df2b1844bc3704cdd69ac8", + "translation": "f6150752e5edd4491f697d466e8636a61df3d3f8" + }, + "views.agenda.contextMenu.showNotes": { + "source": "448a566605381d679426f3b93c0af8b5ba324bcd", + "translation": "7f5728613fe8138b776ba08fe9afe8bb11f90cbb" + }, + "views.agenda.contextMenu.calendarSubscriptions": { + "source": "9b99ca62a8c206aeef3199afeb8c2d6ea70c3c3a", + "translation": "8fa5a0c55c39ccd6b214a4910bcdb42bd577aafe" + }, + "views.agenda.periods.thisWeek": { + "source": "7b72883e078a6858cf0c79bf3e93e72e765e9ada", + "translation": "af7dc0a9e1cce0e546393135e4c7f9bd03581f6a" + }, + "views.agenda.tipPrefix": { + "source": "9713cc83f3030948afaff535d9c5e6e77ea1a83f", + "translation": "54e7e30697c48792db1cdd8e6f5a31becbc401c0" + }, "views.taskList.title": { "source": "090ec5f560fc50377fcd95e5cda128e91b276e98", "translation": "1b018f86f2cae2df1a70e37a69cc41124105ca4e" @@ -12231,6 +13885,10 @@ "translation": "fff560fe01b1a818a7f2db64b55a8480c299030a" }, "views.notes.refreshButton": { + "source": "56e3badc4e6c5cc95e0ea5a9a878b9bd09f319d4", + "translation": "9d3b2a7d8b0d9634679efceda8296a8d14235392" + }, + "views.notes.refreshingButton": { "source": "5b7bdb61fdbc48d57b9f43d0e28b7cfd3063fca5", "translation": "d6e57c7dc206caffc816ed342a51f0265690e2f2" }, @@ -12242,6 +13900,18 @@ "source": "9e2f5f8952ae7fb4bf2669ff4c73cee07e32ce53", "translation": "7e24a22c772502a9f05cc8c861b21156fc328de3" }, + "views.notes.empty.helpText": { + "source": "7c7f6e3f729bb2d6851ca58dfb7f78accbbf8e5b", + "translation": "3a38501b40615aecaecada776ba918022cfba20c" + }, + "views.notes.loading": { + "source": "0a442c25d8901fba648f11b436fcda80cb95aace", + "translation": "6b51341a49b136b8c5b50b5d1f987573a4909f15" + }, + "views.notes.refreshButtonAriaLabel": { + "source": "d3921023cd5b02ded1cdc85a64a5d276aafa4c8e", + "translation": "5863f000431d425ebc074b492daa5de8337eab92" + }, "views.miniCalendar.title": { "source": "a3cc5b7724a714d5620c6e9ef5f851c143022178", "translation": "9b5cfe7ec39e66f54817ff5711d1eb92eea514d2" @@ -12446,7 +14116,10 @@ "source": "aa73278ad78de284702c875cbe2d73ccb8f9c5d3", "translation": "5de56b1ab2623758e2b533e17cb8ac608d6a9013" }, - "views.basesCalendar.buttonText.listDays": null, + "views.basesCalendar.buttonText.listDays": { + "source": "27491b23f022fd85faf8c467fb04415d0b5d6bed", + "translation": "85b49318014babe75b46c8dd737b69be87b48ffa" + }, "views.basesCalendar.settings.groups.dateNavigation": { "source": "8487a72e02c205a734e6ec6a5684a99576039cb3", "translation": "df5980b4f6dea6e9889ba9f95cbae73f350a0f21" @@ -12467,8 +14140,14 @@ "source": "9b99ca62a8c206aeef3199afeb8c2d6ea70c3c3a", "translation": "8fa5a0c55c39ccd6b214a4910bcdb42bd577aafe" }, - "views.basesCalendar.settings.groups.googleCalendars": null, - "views.basesCalendar.settings.groups.microsoftCalendars": null, + "views.basesCalendar.settings.groups.googleCalendars": { + "source": "cfa0f6bb3b4422195fc4abb06c02bca780fce33a", + "translation": "cfa0f6bb3b4422195fc4abb06c02bca780fce33a" + }, + "views.basesCalendar.settings.groups.microsoftCalendars": { + "source": "2edac69ff3c043d662037911af60ea54cc1c3746", + "translation": "2edac69ff3c043d662037911af60ea54cc1c3746" + }, "views.basesCalendar.settings.dateNavigation.navigateToDate": { "source": "2a47407705ef9a77de4778c38853a4122e38b1fd", "translation": "4ae8748fca0ca5203f2c6498dc5055d9b6fd2d4f" @@ -12533,7 +14212,10 @@ "source": "1aadcb0d4d3400d00e2ad0a4cffa017ad1fac481", "translation": "90710f98bfb77e7d3787746a23f0412835a8495c" }, - "views.basesCalendar.settings.layout.listDayCount": null, + "views.basesCalendar.settings.layout.listDayCount": { + "source": "914d28dbcb8c39a44885ec1b53d4c50180639463", + "translation": "6d2616d3cb4d9ba18475f2dc91648876bbbad4fe" + }, "views.basesCalendar.settings.layout.dayStartTime": { "source": "0f668f32458bf870e8823e6dd50a7fcc1dc595c7", "translation": "e3180159c9a136fc28c11d5da31bd36e7df6097f" @@ -12654,6 +14336,14 @@ "source": "e542695cd353d43e646a3d050dc59b189373613c", "translation": "5127b17d30c95ba0b2486ea439e859d97d118065" }, + "views.kanban.uncategorized": { + "source": "4ef7d73c1a83464f50c8d1b29b43e85facfdf3ee", + "translation": "8bfbe69b3d1532d30f6e7b3673dfc7faab583f36" + }, + "views.kanban.noProject": { + "source": "644d0b87f93c6cb1645f1ff166e1aa82950191b4", + "translation": "c77f3894fec70f53190df99f2c45ee352388c052" + }, "views.kanban.notices.loadFailed": { "source": "9d744b2d44937cda77d20fc3bf2c1fc0242cc3c4", "translation": "6c7a8f78f02ae3f0cd2b1c287a7fbec7514c807b" @@ -12666,6 +14356,10 @@ "source": "5df51b612bbe4d9afeb184269bb95d764fac5687", "translation": "cfacc3cf7737cfe4fb5d7c00b4f8f6a2d84e0685" }, + "views.kanban.columnTitle": { + "source": "621521f9a8788695ec292cbec54d2792cfdf0a7d", + "translation": "679c67488602e3bcf12df41bbc2437a88afe04a4" + }, "views.pomodoro.title": { "source": "212e4618d030e7c987ed2d64d96f3e1dcebbf414", "translation": "adb4e9cf1b9054fef72665c51628bd22778b12e4" @@ -12906,6 +14600,106 @@ "source": "77f4b7a081b20f78557dd404e14d91b89b52a27c", "translation": "b6a500e983b64d611aab3a9d5b2ec65fd4511f10" }, + "views.stats.filters.allTasks": { + "source": "7b9ff838019db5ead18883e3432af81a4ae3aa6a", + "translation": "208c5a2a57565b508ddc94c3c605e83b376aa072" + }, + "views.stats.filters.activeOnly": { + "source": "3dc1b8123749de1b3bd96596b2ef4ccbff6c9567", + "translation": "414bde40c22d7954e595f1f5c011da5490ad32c6" + }, + "views.stats.filters.completedOnly": { + "source": "2c9ccad5b96c9be77d8bba71ee8e3340450bbbec", + "translation": "dfa017d4a8cf501d556f22e3fb1b741b08b4d5ce" + }, + "views.stats.refreshButton": { + "source": "56e3badc4e6c5cc95e0ea5a9a878b9bd09f319d4", + "translation": "9d3b2a7d8b0d9634679efceda8296a8d14235392" + }, + "views.stats.timeRanges.allTime": { + "source": "4745c5dce5e868dc0597f7b67f2415fdc2c830c3", + "translation": "d92501d5c26c7e30d5c51732487f0fb99d13843b" + }, + "views.stats.timeRanges.last7Days": { + "source": "6522923d0c92d6924bc40253768ff19ef6f8cc3e", + "translation": "4ea89a9cdb7d034a6a733d0f433a8b6348f38d48" + }, + "views.stats.timeRanges.last30Days": { + "source": "6118867f212578fe8acd0c3fc8af1b74b9d4bc2f", + "translation": "edd8abc9c8632034ce10003e442caa21bfd96b4d" + }, + "views.stats.timeRanges.last90Days": { + "source": "ce96395e907e95648a10d6f84f87d8384b2b0bc4", + "translation": "05c1080c778666c6fb9f6ee9ea3b87125260f9d2" + }, + "views.stats.timeRanges.customRange": { + "source": "f130609dfc13198c1a623733774328b5cf0af757", + "translation": "dc490baa686e6cfbd708ed3c3a44037d696f587b" + }, + "views.stats.resetFiltersButton": { + "source": "5be6985613b3e6fda208ae66882ccd1436bff418", + "translation": "d8915f02490b0da34ff325564777179d6baf7f73" + }, + "views.stats.dateRangeFrom": { + "source": "3f66052a107eaf9bae7cad0f61fb462f47ec2c47", + "translation": "6b98c9b528241fc8135fb9fd472c7db12ec14964" + }, + "views.stats.dateRangeTo": { + "source": "ae79ea1e9c6391a9ed83a2e18a031b835feec0c9", + "translation": "10738f8f8987750cb2066519caa89b901e1751fe" + }, + "views.stats.noProject": { + "source": "644d0b87f93c6cb1645f1ff166e1aa82950191b4", + "translation": "c77f3894fec70f53190df99f2c45ee352388c052" + }, + "views.stats.cards.timeTrackedEstimated": { + "source": "c69f2a88d10893a201485b31643dbf5cedd52df1", + "translation": "dd8f69fa291a302d9fa00f86292f08faa260c803" + }, + "views.stats.cards.totalTasks": { + "source": "e5cefb07fbc378c439e040958fadb4f78b23163e", + "translation": "3056509f09e48bc1088f0000873e01b959fab76d" + }, + "views.stats.cards.completionRate": { + "source": "e9022ebdff65509393be04fb3b32c715ce8f97cf", + "translation": "65c4b8869f5a8b7a60eb69f8d9a3756066962750" + }, + "views.stats.cards.activeProjects": { + "source": "8eadc26886a595ead7b65edd28ac32306ce1f5ad", + "translation": "9a6cf9d685977a6daa33fd36ee0c738d594870c0" + }, + "views.stats.cards.avgTimePerTask": { + "source": "807643dc324a145924708bb6dad611f828e10be2", + "translation": "c8bc2fd81b8939b0a4388892f42b49089bf5cc09" + }, + "views.stats.labels.tasks": { + "source": "090ec5f560fc50377fcd95e5cda128e91b276e98", + "translation": "1b018f86f2cae2df1a70e37a69cc41124105ca4e" + }, + "views.stats.labels.completed": { + "source": "1798b3ba42ee08ea09d9720b2d9c0181abbfe3e4", + "translation": "7d7f40abb56b70794a5ba1a2c1dcf976ee281f1d" + }, + "views.stats.labels.projects": { + "source": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "translation": "b1e8cd4da2128109e230cd0b08a140bf854d70a8" + }, + "views.stats.noProjectData": { + "source": "f61de1237b5bf9041f1b8e00bdd5b7bf0df0232e", + "translation": "6d64db329b4658c0944221ac9bc98792a733c7d8" + }, + "views.stats.notAvailable": { + "source": "08d2e98e6754af941484848930ccbaddfefe13d6", + "translation": "635d698f7eac414a5ed50b332f7a8ad456cb5793" + }, + "views.stats.noTasks": { + "source": "d7c07a0905ed43a32ec58ccae1353c564433d826", + "translation": "fe2c2ccc19edc2442fb28bb0e19623e467e6f584" + }, + "views.stats.loading": { + "source": "b04ba49f848624bb97ab094a2631d2ad74913498", + "translation": "a209b664efa2dc592f0a28726ac7652f4039f527" + }, "views.releaseNotes.title": { "source": "5939771f391859041bc57e5e05b04235b1ef8ee7", "translation": "eb15567c6afcd90288bcd72e1a8b2529f4f9c30f" @@ -13674,8 +15468,14 @@ "source": "80122e53d8a3a7eb2c2ac8e352efba551330d1c5", "translation": "9fc6e104816cb592bbb6bac08c261c3cde696860" }, - "settings.general.taskIdentification.hideIdentifyingTags.name": null, - "settings.general.taskIdentification.hideIdentifyingTags.description": null, + "settings.general.taskIdentification.hideIdentifyingTags.name": { + "source": "446bbfd987521d42035442c4652693d996565cf8", + "translation": "9e12e871364a89f9cb5b03a50f36d34c4c9462f7" + }, + "settings.general.taskIdentification.hideIdentifyingTags.description": { + "source": "a38be9ef6457fd38857917cbbc387d396cd2e60a", + "translation": "3e37cfe1ff67d316b21518c95f65af52a9b7843c" + }, "settings.general.taskIdentification.taskProperty.name": { "source": "fb00b60c99acd4529404e3ef8bd77017d9332da6", "translation": "06f4bdc41d759b82d6dc63ff17155b7be8edfa69" @@ -13704,10 +15504,22 @@ "source": "4ff367979f5bdb70f928733dda339ca81435c4b1", "translation": "f429284d9f211ecd199f673e8b700b051af4fe51" }, - "settings.general.frontmatter.header": null, - "settings.general.frontmatter.description": null, - "settings.general.frontmatter.useMarkdownLinks.name": null, - "settings.general.frontmatter.useMarkdownLinks.description": null, + "settings.general.frontmatter.header": { + "source": "49415878931e5edbbf6d49465647a990f04b12ae", + "translation": "49415878931e5edbbf6d49465647a990f04b12ae" + }, + "settings.general.frontmatter.description": { + "source": "24a51bb38d3857a7e0d9df7130ffff10bdd3b386", + "translation": "3168d64639b29512c6665433795c80c1230ef49e" + }, + "settings.general.frontmatter.useMarkdownLinks.name": { + "source": "345e6cf9ce20ff8a3ac2966ceb53f8a83bdbd9ba", + "translation": "c6982133300da25eca1c2a33cd749dd9e0a31649" + }, + "settings.general.frontmatter.useMarkdownLinks.description": { + "source": "f56ef5842cbd725ff74500d96e3d40e0046e3693", + "translation": "a18e3aa2c2665d5ff0e1f9b7625b97a83c16d202" + }, "settings.general.taskInteraction.header": { "source": "a8194c053a4f989c874659b7d4a0e99f5a4a3df5", "translation": "fbd07b9c2d07333ad938a9ffd3d17cf4cf06193f" @@ -14168,8 +15980,14 @@ "source": "5ac477c267332c84ac6f5fe5509d523e08a4af94", "translation": "c965afce3ec1984899fb69c1068a2f6168271011" }, - "settings.taskProperties.customUserFields.autosuggestFilters.header": null, - "settings.taskProperties.customUserFields.autosuggestFilters.description": null, + "settings.taskProperties.customUserFields.autosuggestFilters.header": { + "source": "54bbd5ce9872e3040735f334d7a52a22dfd80868", + "translation": "b06fe8c79f103eb3b05775b61284165f3d8f0c8c" + }, + "settings.taskProperties.customUserFields.autosuggestFilters.description": { + "source": "61290f286c6963dbe266b1b6b20a4c3f29c78d66", + "translation": "23a94e85cad389fac003ad9ad886b37bc52acf39" + }, "settings.appearance.taskCards.header": { "source": "08836d307ea5b1614f69962e1b9d36f243baddc5", "translation": "642148984b7b1f1908934199cb4f3fb2e857bd01" @@ -15730,6 +17548,82 @@ "source": "91fa8ddb011b35634762b9184731cd9d6893b139", "translation": "ff30240ef05c53aeda0d7d10e7a2fa0f55c09a30" }, + "notices.icsNoteCreatedSuccess": { + "source": "11323db089a64255a316acf806096a5aa681984c", + "translation": "c75d674c234ff5d6a5423db4c1bd1a702bac660c" + }, + "notices.icsCreationModalOpenFailed": { + "source": "8e441dcab8108add2e4eafe35c6777ee54436df0", + "translation": "5f65b106a9500dc713e4df7e35cda2941a266f10" + }, + "notices.icsNoteLinkSuccess": { + "source": "bd13c7d5af34c3071b82a0557c8de4aa4e721a76", + "translation": "3250e9dd12aaa95003e07441316f90d6f594cf75" + }, + "notices.icsTaskCreatedSuccess": { + "source": "399ab52e09a6ab0bb5680ad6fbd393f5fe042a33", + "translation": "533ed41c09cb2ceb1c7c2dd755ae446b0038ceb2" + }, + "notices.icsRelatedItemsRefreshed": { + "source": "5481934f9a4c5e2d504b82e04ccf5df30ec1c76d", + "translation": "85e657066973f17c693214c2296eee2d93d1a849" + }, + "notices.icsFileNotFound": { + "source": "1d497f15eb0c35127c6091ee9f70572a246a1c7c", + "translation": "e97a2a504dece1b9a7bad4dce8b35f36b0f3d37c" + }, + "notices.icsFileOpenFailed": { + "source": "bcc8d866719b4db20563417b0bc7105dee53c1f7", + "translation": "f171f7e68826a2e94dc85fb6264fdd0846e69a00" + }, + "notices.timeblockAttachmentExists": { + "source": "2d22bbfaf545f4f0b5bc46def37fa637ffece048", + "translation": "1a6f2e72fadc34859673fa778854ce75b381447c" + }, + "notices.timeblockAttachmentAdded": { + "source": "effb439a980e77cdae3e07d7bf60efbc154860fb", + "translation": "5019efa1ca0ebf769205e2d35e6dc55801e95427" + }, + "notices.timeblockAttachmentRemoved": { + "source": "5938eb486a404f5d7e467d0eb1cfe1bbbe30a663", + "translation": "16310fb5503e8dc22d166b7818f67edd41eb131b" + }, + "notices.timeblockFileTypeNotSupported": { + "source": "257767122e5f201a138da4c108100f8ac9f25850", + "translation": "a875f5eaa877b38cae215432d85180597185def2" + }, + "notices.timeblockTitleRequired": { + "source": "2d0a4712090bcfe74b7615ae1b05d62e78017e08", + "translation": "a5ee273466c79d6ef959bac7cf3cb75adb89d597" + }, + "notices.timeblockUpdatedSuccess": { + "source": "5d226f96855b20f225eb6941dd362e8d1dbe5883", + "translation": "1f93c21b46cdc27f015f8e23b7c4679b1e84361a" + }, + "notices.timeblockUpdateFailed": { + "source": "3309e2bf25566ef19423d4dae74a8a0fbbc72f8d", + "translation": "ce4f355704e1d740f53e67546bbf5f06dee586b2" + }, + "notices.timeblockDeletedSuccess": { + "source": "0a89dca7412267b95c339832a3c620b4828048e3", + "translation": "35935ed8ec36fa9df18807f59f74475ff3ba0e53" + }, + "notices.timeblockDeleteFailed": { + "source": "8b767a84d7757a9cb6b23f76b81adf2aeceb5dac", + "translation": "9ba2b8e140e7ca4c0a645e2d49b1a2b252a303c0" + }, + "notices.timeblockRequiredFieldsMissing": { + "source": "47aab3e139fb0cd6e5e526e600610fdc06e72957", + "translation": "01bb94bd7398de7bc66af2cda239e88d71ebb24b" + }, + "notices.agendaLoadingFailed": { + "source": "9e866955c967d91bcb00b272cd9ef2f4425fc9c8", + "translation": "fd714ee82c506378bdbacc2e9b0a6e51133a96e4" + }, + "notices.statsLoadingFailed": { + "source": "93b6f19b5b4d3aa2bc361e005ce439c3da3d8cfc", + "translation": "09852e0da7c31a9514d323655cc1d542e5686cc4" + }, "commands.openCalendarView": { "source": "d7dce352d3bf5b12479770b86495263f84275492", "translation": "93ef7fa71140819bcd7ff92af774e58e45d12867" @@ -15818,8 +17712,358 @@ "source": "04c2072af97cf70c22fbf9efa9b62eb2574d23d6", "translation": "e8e1d32313d229666301e29a37df418032835142" }, - "commands.startTimeTrackingWithSelector": null, - "commands.editTimeEntries": null, + "commands.startTimeTrackingWithSelector": { + "source": "32970116a0d7a74dadbf82a0aa2aa8117278d601", + "translation": "d35f2f3eaa8d9006158e16041632583a1b2c0f1e" + }, + "commands.editTimeEntries": { + "source": "b8c5b41ec8f55348f7ae4acf087d62edaf588a0c", + "translation": "8fdf096030924f2e22e98852be11530ba22e45a7" + }, + "modals.deviceCode.title": { + "source": "15d49719fa9a20f697d38e6af17a00b8ae4a529d", + "translation": "95908c6ccf03e20fef6c5c1c2d9628e08e3a2d4b" + }, + "modals.deviceCode.instructions.intro": { + "source": "6f588f0b7cb402c539b8814f65a4798e8da218e0", + "translation": "cc6d264d46c10d13039f9c76495ebbd818bd6956" + }, + "modals.deviceCode.steps.open": { + "source": "cf9b77061f7b3126b49d50a6fa68f7ca8c26b7a3", + "translation": "42c07747756067eae4c1ff69028d40b496855787" + }, + "modals.deviceCode.steps.inBrowser": { + "source": "79f78eb5c8b52a3626b9719515e8b9c1c03303e5", + "translation": "0c2d926c29ceefd34266c9df9e0fecb936cab0a6" + }, + "modals.deviceCode.steps.enterCode": { + "source": "e359133d256a3a291c64f6b573cd2c0b02e330d6", + "translation": "4aa85a270c55ccdc856f75bd1b3d53851d5c7619" + }, + "modals.deviceCode.steps.signIn": { + "source": "3fefa93f424be9fb1d4dafd8277b9978d619e1cb", + "translation": "4849e569d4d1df2f01db8b6c88b1cfe8a278f23e" + }, + "modals.deviceCode.steps.returnToObsidian": { + "source": "7e13c0c3a8d9118e121f70453facfa2d0101de6d", + "translation": "092d4200211d67385d609b157a0f33ed8b689d11" + }, + "modals.deviceCode.codeLabel": { + "source": "a9fe887104abcf427495c33e29a3c77c3a90bdac", + "translation": "7e741a9b21b2dae24c16d3cc7b397f8c268a5933" + }, + "modals.deviceCode.copyCodeAriaLabel": { + "source": "6c10692719e62d762ec4716db1a8004544682745", + "translation": "ffdfce135642b7829bc1667551369439adad4613" + }, + "modals.deviceCode.waitingForAuthorization": { + "source": "293c2185e57c716d3aa8d9fd2b0804b5aa8afdae", + "translation": "9aea9845477914aff8498cdf98c4ae621c9389d5" + }, + "modals.deviceCode.openBrowserButton": { + "source": "e505acd1482aefb1017b4214cf1732b70164594b", + "translation": "607f35967cf353f884b3ac11f1101c81daca6679" + }, + "modals.deviceCode.cancelButton": { + "source": "77dfd2135f4db726c47299bb55be26f7f4525a46", + "translation": "49ba3292420c74828e7892fadc66f3f4ee4c0111" + }, + "modals.deviceCode.expiresMinutesSeconds": { + "source": "73e474a3e682b8715b30a1c3093da2b9feef525d", + "translation": "5bd2233e765d73666003af28914b8d871832c855" + }, + "modals.deviceCode.expiresSeconds": { + "source": "9b16869f2468a6027b09ca754e9d28e59384b51d", + "translation": "0d800c6bb98ee0a47f259fb62cac8d6a7feea73f" + }, + "modals.icsEventInfo.calendarEventHeading": { + "source": "4dfa3ac26d7e48ff21ffae5f3dc955b269d6e43c", + "translation": "0f773add0e7fdf04500f9057ddbee8a654bafb34" + }, + "modals.icsEventInfo.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "eb97899aedcd5609782b5ccb4ffa390e0e66a3eb" + }, + "modals.icsEventInfo.calendarLabel": { + "source": "adab5090ac6a1b7b5420faac7be86c41721ba27c", + "translation": "4c83736b7403957857c3e9951ecc30262711c6c7" + }, + "modals.icsEventInfo.dateTimeLabel": { + "source": "63ae7cafeda48b4383447db121a8ca77ac7d2dc0", + "translation": "d77bc41b3c9f91b38d886aa16a9d8c5dcf436cd2" + }, + "modals.icsEventInfo.locationLabel": { + "source": "d219c68101f532de10add2cf42fb9dbeca73d3be", + "translation": "7791ebea903fa767c64733b14faed6d303d4f530" + }, + "modals.icsEventInfo.descriptionLabel": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af" + }, + "modals.icsEventInfo.urlLabel": { + "source": "0e2d9b0777a485c1276de0803c12a7d76fbc5c39", + "translation": "0e2d9b0777a485c1276de0803c12a7d76fbc5c39" + }, + "modals.icsEventInfo.relatedNotesHeading": { + "source": "825cf852f74e1fb10d8b078b5a2286792f974f87", + "translation": "4c46d477a9fb1c3a6a064c127c6bd7af36961540" + }, + "modals.icsEventInfo.noRelatedItems": { + "source": "d2c2e903d5cd9372db38f41f4a3aa67b1c6b01d9", + "translation": "ab5fd7887acfa867af93714d73c674e6dc38bae1" + }, + "modals.icsEventInfo.typeTask": { + "source": "7bb0ddf9221c03b806b03c209e8366000124aa15", + "translation": "43c8425cb1d9b67e4c759dab0d64a9de904501d5" + }, + "modals.icsEventInfo.typeNote": { + "source": "2c924e3088204ee77ba681f72be3444357932fca", + "translation": "2c924e3088204ee77ba681f72be3444357932fca" + }, + "modals.icsEventInfo.actionsHeading": { + "source": "c3cd636a585b20c40ac2df5ffb403e83cb2eef51", + "translation": "c3cd636a585b20c40ac2df5ffb403e83cb2eef51" + }, + "modals.icsEventInfo.createFromEventLabel": { + "source": "15f54eccbee249bfd4439a4ae8f0b33833c49ea9", + "translation": "0c4d000ca17fbbe12cd087cd8e5638dad1319c1d" + }, + "modals.icsEventInfo.createFromEventDesc": { + "source": "4e04a4fbcae12cb0926dba09797a88d24259b76e", + "translation": "41092d0d1df0ced166cc7839a21e3c524ee5c014" + }, + "modals.icsEventInfo.linkExistingLabel": { + "source": "359e0b3ff14ed6bde5762a3bc04066cc5cc958c8", + "translation": "13bc0326e460b3eeca4c3bd86cdeb5743675ef2d" + }, + "modals.icsEventInfo.linkExistingDesc": { + "source": "1aa8edfa252484d28cbbe5544181a273927091bb", + "translation": "90320b525e6ac3f95e28ab693e357a5971983acc" + }, + "modals.timeblockInfo.editHeading": { + "source": "d42d302b1bf2fca148c75efcf03389a0b1ef88b3", + "translation": "ca0be6a53176ca8d5dcb175ca242b8a96488c03e" + }, + "modals.timeblockInfo.dateTimeLabel": { + "source": "28948815dbd940aae135258b71870cac05cf589c", + "translation": "1a0134fde9fabe377e46ba8ca85f9393e6bd3046" + }, + "modals.timeblockInfo.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "eb97899aedcd5609782b5ccb4ffa390e0e66a3eb" + }, + "modals.timeblockInfo.titleDesc": { + "source": "b73aeab0cbd7047291ace95ec61a5a9738ddf6d7", + "translation": "a1fa80e0896b943609d6dd7f3586f920fdbe1c2a" + }, + "modals.timeblockInfo.titlePlaceholder": { + "source": "a53b1342a44c5bcd904b448cbc399836d276f5d7", + "translation": "902e4b4864bcdfd91e1f862ce4103fb34357200d" + }, + "modals.timeblockInfo.descriptionLabel": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af" + }, + "modals.timeblockInfo.descriptionDesc": { + "source": "993cbb9b4271e43803f891616c2d68d36893b4d4", + "translation": "891301a55eed5311d20f6ebb1d053d350f579562" + }, + "modals.timeblockInfo.descriptionPlaceholder": { + "source": "b373425eef0d25730b64eb196e610724125ebbe7", + "translation": "864b78d3cfe3c187a3d28e0bed2a6b0d8a6473c2" + }, + "modals.timeblockInfo.colorLabel": { + "source": "1d0c8304baedcf8e3a78982c2e7c0b04622bf2a0", + "translation": "145c4326e92bd951de43c1c9af9158c7b49a0d76" + }, + "modals.timeblockInfo.colorDesc": { + "source": "cdff26ebbc3565d04efd839876c97f07e21406ff", + "translation": "0a0b8f24f53049888a6ef47bbf287f71bdb86036" + }, + "modals.timeblockInfo.colorPlaceholder": { + "source": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2", + "translation": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2" + }, + "modals.timeblockInfo.attachmentsLabel": { + "source": "6771ade6e8965a499bc298107ffb52e9a18dd7e3", + "translation": "98d89a25004b82f91b49c16489f6090b16c3b395" + }, + "modals.timeblockInfo.attachmentsDesc": { + "source": "7678a59aa98024fb9b82ac20244cfe5d0f97e9f9", + "translation": "2dd6fa1e323c8f8b5d69d94f50eeadf736896dcb" + }, + "modals.timeblockInfo.addAttachmentButton": { + "source": "f3aaf19dab47f2aa461d2713ffc1188c3f4b2cab", + "translation": "fec460dc11f7f1fdffc63ffd2771ec6bf2ad0e13" + }, + "modals.timeblockInfo.addAttachmentTooltip": { + "source": "39289e99c6326eb60ff29dad376a120671c3a2f1", + "translation": "fda5a3a72a96f5075b50a74d3c925ea53093630f" + }, + "modals.timeblockInfo.deleteButton": { + "source": "ba32111a1af977be873d0389063862832583dbd6", + "translation": "8b0078d1a0006229485d02c9ccc673883d870dd8" + }, + "modals.timeblockInfo.saveButton": { + "source": "fa2984b367b8f2fc5cd521936dda7b44598778a4", + "translation": "2a945921280748d8d38184221fef75ed9772526a" + }, + "modals.timeblockInfo.deleteConfirmationTitle": { + "source": "ba32111a1af977be873d0389063862832583dbd6", + "translation": "8b0078d1a0006229485d02c9ccc673883d870dd8" + }, + "modals.timeblockCreation.heading": { + "source": "6ba03dee8a531db91b38fb09715e0c40304804d2", + "translation": "37f67e2819ebbe183e4df51aaa23648eb2083b45" + }, + "modals.timeblockCreation.dateLabel": { + "source": "f2110a630c6c6f7249d0a946ded3468ecbe2b948", + "translation": "9d0acc85af83cfaea5bd8496ae320ddf882a953f" + }, + "modals.timeblockCreation.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "eb97899aedcd5609782b5ccb4ffa390e0e66a3eb" + }, + "modals.timeblockCreation.titleDesc": { + "source": "b73aeab0cbd7047291ace95ec61a5a9738ddf6d7", + "translation": "a1fa80e0896b943609d6dd7f3586f920fdbe1c2a" + }, + "modals.timeblockCreation.titlePlaceholder": { + "source": "a53b1342a44c5bcd904b448cbc399836d276f5d7", + "translation": "902e4b4864bcdfd91e1f862ce4103fb34357200d" + }, + "modals.timeblockCreation.startTimeLabel": { + "source": "88d8206d586abe4c8e35c8e9adcc649d07c99a1e", + "translation": "3ca90c1c63730e9855171e6d307b025866f7c391" + }, + "modals.timeblockCreation.startTimeDesc": { + "source": "468423b2b77ef3d98c67206464beac360226adcb", + "translation": "313c0b5d36a1637eaeb98963b43d6be15b16e648" + }, + "modals.timeblockCreation.startTimePlaceholder": { + "source": "62646b00e3d5abef4cb8139c5f21bf0907f360d1", + "translation": "62646b00e3d5abef4cb8139c5f21bf0907f360d1" + }, + "modals.timeblockCreation.endTimeLabel": { + "source": "cd7800da7f4ff94a0e14445d7f94b6345d1b7b8a", + "translation": "931055b55b71172aa58f94a64d7612e630b02156" + }, + "modals.timeblockCreation.endTimeDesc": { + "source": "a739e69aa3bf9fbefc75ec0ceb30989dc19dd05d", + "translation": "cc86c120988e4daf1353d961c6bc16ed0da2d928" + }, + "modals.timeblockCreation.endTimePlaceholder": { + "source": "3fd66d5f10a47efe7550c85fc4fc696a08265128", + "translation": "3fd66d5f10a47efe7550c85fc4fc696a08265128" + }, + "modals.timeblockCreation.descriptionLabel": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af" + }, + "modals.timeblockCreation.descriptionDesc": { + "source": "993cbb9b4271e43803f891616c2d68d36893b4d4", + "translation": "891301a55eed5311d20f6ebb1d053d350f579562" + }, + "modals.timeblockCreation.descriptionPlaceholder": { + "source": "b373425eef0d25730b64eb196e610724125ebbe7", + "translation": "864b78d3cfe3c187a3d28e0bed2a6b0d8a6473c2" + }, + "modals.timeblockCreation.colorLabel": { + "source": "1d0c8304baedcf8e3a78982c2e7c0b04622bf2a0", + "translation": "145c4326e92bd951de43c1c9af9158c7b49a0d76" + }, + "modals.timeblockCreation.colorDesc": { + "source": "cdff26ebbc3565d04efd839876c97f07e21406ff", + "translation": "0a0b8f24f53049888a6ef47bbf287f71bdb86036" + }, + "modals.timeblockCreation.colorPlaceholder": { + "source": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2", + "translation": "3e9b5e6a253b87945c1ae3793c1ad680b34e85b2" + }, + "modals.timeblockCreation.attachmentsLabel": { + "source": "6771ade6e8965a499bc298107ffb52e9a18dd7e3", + "translation": "98d89a25004b82f91b49c16489f6090b16c3b395" + }, + "modals.timeblockCreation.attachmentsDesc": { + "source": "dc43799ad507158bf2d451de9429e5953a14f38c", + "translation": "a86a2921d88b20334fccc5d49dcb0e5649aa6b43" + }, + "modals.timeblockCreation.addAttachmentButton": { + "source": "f3aaf19dab47f2aa461d2713ffc1188c3f4b2cab", + "translation": "fec460dc11f7f1fdffc63ffd2771ec6bf2ad0e13" + }, + "modals.timeblockCreation.addAttachmentTooltip": { + "source": "39289e99c6326eb60ff29dad376a120671c3a2f1", + "translation": "fda5a3a72a96f5075b50a74d3c925ea53093630f" + }, + "modals.timeblockCreation.createButton": { + "source": "6ba03dee8a531db91b38fb09715e0c40304804d2", + "translation": "37f67e2819ebbe183e4df51aaa23648eb2083b45" + }, + "modals.icsNoteCreation.heading": { + "source": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31", + "translation": "15e79e5a8ceabb713e1aa8010dc3e2d36c47e42a" + }, + "modals.icsNoteCreation.titleLabel": { + "source": "768e0c1c69573fb588f61f1308a015c11468e05f", + "translation": "eb97899aedcd5609782b5ccb4ffa390e0e66a3eb" + }, + "modals.icsNoteCreation.titleDesc": { + "source": "e5928c1bd84bd2735415d45d5f7e03f677ff5f52", + "translation": "c89c15265d576276973abcc8fa0b0db3365b3689" + }, + "modals.icsNoteCreation.folderLabel": { + "source": "30baa24967e08965d1594408031f0324ae11ccac", + "translation": "8ed6578829ed850c28d5f5af90f54b55053fec15" + }, + "modals.icsNoteCreation.folderDesc": { + "source": "105291a610d29a8ea50e76ceb65257c5236019ac", + "translation": "1f589a6272d64baaecd78b3e7054cc67d2e975cd" + }, + "modals.icsNoteCreation.folderPlaceholder": { + "source": "c7cbb4b45068905aef0f0961bdfb1c7fe9988b52", + "translation": "9d69679e1328b9c7313208e424903e3a393e59a5" + }, + "modals.icsNoteCreation.createButton": { + "source": "6e157c5da4410b7e9de85f5c93026b9176e69064", + "translation": "1a6861723c6988e95ccc2010a3eca9a44fae0458" + }, + "modals.icsNoteCreation.startLabel": { + "source": "538f6db0c212f09a0e37ee10239013c589daeaf6", + "translation": "a1590b2cdf5b9fa3033e0fd8383df2855f6378a9" + }, + "modals.icsNoteCreation.endLabel": { + "source": "861d25a92b9492d558445d04ed6357516e1b3a5f", + "translation": "7775e3579916486a331e0d19504e42750e4ed27a" + }, + "modals.icsNoteCreation.locationLabel": { + "source": "c47d59ef9cb983fd5a9c42a64aad33ba7b158fd1", + "translation": "16424cf0c9bbd5feab350f5e89f66bb77a0dd8cd" + }, + "modals.icsNoteCreation.calendarLabel": { + "source": "d56f81fde03931ab0ff6785fc9cb62187815a346", + "translation": "b381ffcebc4632b5f116563d7439e70181ccebdf" + }, + "modals.icsNoteCreation.useTemplateLabel": { + "source": "23797614964d98782ffa29622f7959d4ed36bad0", + "translation": "8718cb1bda14f25c5f035b4d60b4b2cd9e4a8971" + }, + "modals.icsNoteCreation.useTemplateDesc": { + "source": "6b9c073718f9ecb707cc80778c42c34c92d10790", + "translation": "6f39809d3fa6e8c01efbcae0e5663e2f9eabd4ba" + }, + "modals.icsNoteCreation.templatePathLabel": { + "source": "198d2f2743fb74abb06b942a47c37d9128c6aeed", + "translation": "09ba62412f2afb7f2707585fa4dc151ee1e4e8fb" + }, + "modals.icsNoteCreation.templatePathDesc": { + "source": "b140758b9ac592cc627e4a41db98770149bf0d44", + "translation": "72296ce7dd594496f28d1d9699ad103a03193e84" + }, + "modals.icsNoteCreation.templatePathPlaceholder": { + "source": "26f6cf53c168c01cf655bf6f3010f6bc772af4e0", + "translation": "26f6cf53c168c01cf655bf6f3010f6bc772af4e0" + }, "modals.task.titlePlaceholder": { "source": "c8196f1d1039c2fb290add52ee990c571173d6f1", "translation": "4ad6efca173a22d4bf622d5729c3ad13612e6902" @@ -15904,16 +18148,46 @@ "source": "5be1bc9e1837b131abac53534235a44b4bca541e", "translation": "276b299a986fcd43e518ea337f28cfa18f0d8428" }, - "modals.task.organization.projects": null, - "modals.task.organization.subtasks": null, - "modals.task.organization.addToProject": null, - "modals.task.organization.addToProjectButton": null, - "modals.task.organization.addSubtasks": null, - "modals.task.organization.addSubtasksButton": null, - "modals.task.organization.addSubtasksTooltip": null, - "modals.task.organization.removeSubtaskTooltip": null, - "modals.task.organization.notices.noEligibleSubtasks": null, - "modals.task.organization.notices.subtaskSelectFailed": null, + "modals.task.organization.projects": { + "source": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "translation": "b1e8cd4da2128109e230cd0b08a140bf854d70a8" + }, + "modals.task.organization.subtasks": { + "source": "173312c6e2592de729610a4d319877c9aa8d8b67", + "translation": "b8c605d6478947d70d80136c055af12dd97b127a" + }, + "modals.task.organization.addToProject": { + "source": "85be7d2ce90b02bd410c4deb918f46e112efd677", + "translation": "c1e8eef42347527338c99c1569029c3c3a1161e7" + }, + "modals.task.organization.addToProjectButton": { + "source": "85be7d2ce90b02bd410c4deb918f46e112efd677", + "translation": "c1e8eef42347527338c99c1569029c3c3a1161e7" + }, + "modals.task.organization.addSubtasks": { + "source": "15f2a584071a1fe7796c37fc0ea6b5164dd5dda6", + "translation": "91ae353368d5e846720381748d0cf51e14206b39" + }, + "modals.task.organization.addSubtasksButton": { + "source": "65b9d7a6f28a02d5a60ab0005804c73e137d14b6", + "translation": "880a31eef26d0b053183cb143c495b19ac3dde1c" + }, + "modals.task.organization.addSubtasksTooltip": { + "source": "1a875945612b63d144cb3cf02c792a38443378e1", + "translation": "1c95cd7d9e91fd78fa72fae23382e09d252bb459" + }, + "modals.task.organization.removeSubtaskTooltip": { + "source": "d6acf378b038ad0b4b130817b370fb9dba31caef", + "translation": "efeb9ce93cf5a3dfbd6a3127667486f967f60365" + }, + "modals.task.organization.notices.noEligibleSubtasks": { + "source": "bce7ca1d7ce5603179f86b83b9074a4aa27de835", + "translation": "1313d6c9fe0754bced4281ce86b100e094e96154" + }, + "modals.task.organization.notices.subtaskSelectFailed": { + "source": "333c06c796628bc21ecdaa6da4556bbe343c2284", + "translation": "77f1289b8d0b2605c670edde90c98a68e9e8e235" + }, "modals.task.customFieldsLabel": { "source": "143b179529aecd0bdc5aa86599fe60057b83d32b", "translation": "3b3eae0b1b54b8f551d41a0dea45ab0c79b93b7a" @@ -16066,14 +18340,38 @@ "source": "0fe4ddf98d535f0b7e919aec9630254b1d2ad167", "translation": "08283d1e721977b2fa053c3da59ec2ed1d77f737" }, - "modals.taskSelector.title": null, - "modals.taskSelector.placeholder": null, - "modals.taskSelector.instructions.navigate": null, - "modals.taskSelector.instructions.select": null, - "modals.taskSelector.instructions.dismiss": null, - "modals.taskSelector.notices.noteNotFound": null, - "modals.taskSelector.dueDate.overdue": null, - "modals.taskSelector.dueDate.today": null, + "modals.taskSelector.title": { + "source": "957bbd1116cdb7c59e3f7649b8bc2c2e8ed3de54", + "translation": "2bda619be7f7ca69873ad30eab31cd073ef126c4" + }, + "modals.taskSelector.placeholder": { + "source": "72bbd8a758aaf0c92b3e7a6d22b962077db3b6ff", + "translation": "dc02f0f452af2c8c3b686826f96efae65bd91b09" + }, + "modals.taskSelector.instructions.navigate": { + "source": "130c10ed2c60f33a0f4416b6b7412b9bd11649ce", + "translation": "5053061c1e5278deb25914f3653483f679daef21" + }, + "modals.taskSelector.instructions.select": { + "source": "e4e5b8e792f7971958b92028636ff584167bb638", + "translation": "5114c367671a1c11206edf45726de4559376ddc4" + }, + "modals.taskSelector.instructions.dismiss": { + "source": "6688c3f3833719827c18453d8e6d7eecbda657ff", + "translation": "a237674e200ecd7309f6e55b13edb26f5de2a82f" + }, + "modals.taskSelector.notices.noteNotFound": { + "source": "c1508711476a6e33215c7e7a3eaee01b7b1b90f9", + "translation": "a01b13b78a2073e83822eb77caacc3e71e9de1a4" + }, + "modals.taskSelector.dueDate.overdue": { + "source": "7980fcc0ec0fb23d3b8bd43a1ce5c87f5d868622", + "translation": "5f18403c99befcd9415e9db0ce2444f3062fd8b3" + }, + "modals.taskSelector.dueDate.today": { + "source": "5c1fc193ed4468897cf177a7de9cf77e4a673853", + "translation": "09c27c4cd80b96409f4bcc9d221b888a3d986783" + }, "modals.taskCreation.title": { "source": "f1f1450ff80aeab91cb0853329e2b454904866e2", "translation": "755f02296f51c5f77f9e4e2fc0f2e74a53baf796" @@ -16422,33 +18720,114 @@ "source": "e3b84e89bc68a5c8f2e36e22ee9857002c4a2545", "translation": "766daf2c2c291eb0b785e3a79c8600a358cb8935" }, - "modals.timeEntryEditor.title": null, - "modals.timeEntryEditor.addEntry": null, - "modals.timeEntryEditor.noEntries": null, - "modals.timeEntryEditor.deleteEntry": null, - "modals.timeEntryEditor.startTime": null, - "modals.timeEntryEditor.endTime": null, - "modals.timeEntryEditor.duration": null, - "modals.timeEntryEditor.durationDesc": null, - "modals.timeEntryEditor.durationPlaceholder": null, - "modals.timeEntryEditor.description": null, - "modals.timeEntryEditor.descriptionPlaceholder": null, - "modals.timeEntryEditor.calculatedDuration": null, - "modals.timeEntryEditor.totalTime": null, - "modals.timeEntryEditor.totalMinutes": null, - "modals.timeEntryEditor.saved": null, - "modals.timeEntryEditor.saveFailed": null, - "modals.timeEntryEditor.openFailed": null, - "modals.timeEntryEditor.noTasksWithEntries": null, - "modals.timeEntryEditor.validation.missingStartTime": null, - "modals.timeEntryEditor.validation.endBeforeStart": null, - "modals.timeTracking.noTasksAvailable": null, - "modals.timeTracking.started": null, - "modals.timeTracking.startFailed": null, - "modals.timeEntry.mustHaveSpecificTime": null, - "modals.timeEntry.noTasksAvailable": null, - "modals.timeEntry.created": null, - "modals.timeEntry.createFailed": null, + "modals.timeEntryEditor.title": { + "source": "5a583eaa9a1e14bd48dc7a8cc1ab3f8dbeae6d12", + "translation": "64091a76776d050a3769b9c2d0bc3109485043fe" + }, + "modals.timeEntryEditor.addEntry": { + "source": "49482cb4584ab3db093588777b7ac7f9dadb6ba5", + "translation": "21fa977e9ea904f6d60d7db1f50b967d06075a1e" + }, + "modals.timeEntryEditor.noEntries": { + "source": "56ea4f47bf44cb3e8e420b5479548231f1f68b7b", + "translation": "6c7bf4b2b2e0fa61f857739e2f324264e07fa17f" + }, + "modals.timeEntryEditor.deleteEntry": { + "source": "ccaf752b04ea9ccd6299a14c75e6bb065cd392b6", + "translation": "423bd825141a214e04c0754d8e7d2625f15b17af" + }, + "modals.timeEntryEditor.startTime": { + "source": "88d8206d586abe4c8e35c8e9adcc649d07c99a1e", + "translation": "3ca90c1c63730e9855171e6d307b025866f7c391" + }, + "modals.timeEntryEditor.endTime": { + "source": "90525fcfc63aaf7370c341ff277299cd02df3705", + "translation": "d5b82c6110fff09a690089d1e3b94d29fa5780eb" + }, + "modals.timeEntryEditor.duration": { + "source": "10c3d1ca4b19f76a702335cf54c4ad5e308b9269", + "translation": "f4f522072362c9aa26666b6f1dee9611be7becfe" + }, + "modals.timeEntryEditor.durationDesc": { + "source": "03f5c59b12a26186f784cc542c31552236d7feca", + "translation": "7f3e1589a1491ebd00b82725c6c6ad671d18ec9c" + }, + "modals.timeEntryEditor.durationPlaceholder": { + "source": "01cdc0c08662f0a248e0a1c3739e7fcfd15bed2a", + "translation": "e3a750f7dce02b5912d7e9dd64bc565b96f4f150" + }, + "modals.timeEntryEditor.description": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af" + }, + "modals.timeEntryEditor.descriptionPlaceholder": { + "source": "89c8239873859b318429811db142d3b8c695b2ac", + "translation": "72aeb6ed96e8f94925b83f6d09a35788f633066b" + }, + "modals.timeEntryEditor.calculatedDuration": { + "source": "b7cc42c87dac49b80cf3ab1b6f14860033a61e06", + "translation": "3c7dd1039639ecb426c8bf3f38a3487e6a551fc1" + }, + "modals.timeEntryEditor.totalTime": { + "source": "042bd2520b3f2b773bdad26dbd7da5faad717454", + "translation": "4a65208759362f36aab3253b30265cdbdfb1689d" + }, + "modals.timeEntryEditor.totalMinutes": { + "source": "97ff49bf5909a19e98de6e0fd5db5465acade28e", + "translation": "0b5677b3de800c0b27b74ac49255a9eda964d628" + }, + "modals.timeEntryEditor.saved": { + "source": "4f5b612346e6ff0ccbf9bf1a2bc066b75d492182", + "translation": "de832c324fd5a6184612ae85fed032c6be6f12c5" + }, + "modals.timeEntryEditor.saveFailed": { + "source": "ee11ad6a60432aedc8b7ffc17a114d7a10d64aa9", + "translation": "cda90420ae8344de79cec51b5adc82af55bc4d3a" + }, + "modals.timeEntryEditor.openFailed": { + "source": "b0e2d1ab7251bb67ffebe49b31ba77ecbb567e83", + "translation": "e149e83fcf91b78738e47533f31e482543e4841c" + }, + "modals.timeEntryEditor.noTasksWithEntries": { + "source": "634bcd14e86e7416c2c55af84ed5d586529e4c6f", + "translation": "8666f4c6abd3e05f5e18821ce848e3aba0c55afd" + }, + "modals.timeEntryEditor.validation.missingStartTime": { + "source": "ece990b264aa1b7aee79dcef46cc950be2ec88d0", + "translation": "b5100ae918f1d5e17c0c24c486d5d61f67dbac52" + }, + "modals.timeEntryEditor.validation.endBeforeStart": { + "source": "468339327f19d1060b77fff4957224707e821025", + "translation": "3002cdc1440bcff095157c01ea9e5d3deca80c2a" + }, + "modals.timeTracking.noTasksAvailable": { + "source": "f632e1e836cc6d1d58eee8c6aa178297f73658a4", + "translation": "146bfbbd2024fa87a145295eea6d4b3075504ea9" + }, + "modals.timeTracking.started": { + "source": "6c0a2563cd30cfab8cee8ad540bba85df045de06", + "translation": "4474d7ad44ea1f548b92f30af98fb9e976f39c15" + }, + "modals.timeTracking.startFailed": { + "source": "c1b914325ad18471661dcc078d2e4111856abffc", + "translation": "ad75eb99f2d10500635220a794c2587c4f59afa2" + }, + "modals.timeEntry.mustHaveSpecificTime": { + "source": "b5e4624ad4a4356677441185f8d75c03831d1965", + "translation": "e47f807a25cee21a39ed2444e53eb5d6624b0d1d" + }, + "modals.timeEntry.noTasksAvailable": { + "source": "8c8ab856815d4eced441cfd78f8b327a49ad7914", + "translation": "a25aa1c97251ae958eb8f6cc839a64e6e5da4318" + }, + "modals.timeEntry.created": { + "source": "c9c5244ef7123a90bf648150a3c88577a6dd955f", + "translation": "bec27ae1075cdb38b60dcab047086d99ac9b39a0" + }, + "modals.timeEntry.createFailed": { + "source": "6b01c84eaddf7dd2da3a9f10a1470268926dd944", + "translation": "c1c141ca8e94f5eddf40cfe81c1e1fa84281fd9f" + }, "contextMenus.task.status": { "source": "bae7d5be70820ed56467bd9a63744e23b47bd711", "translation": "659499f38a5647a0d307be6f23a5d367a167fbf7" @@ -16661,21 +19040,66 @@ "source": "9d6d4726a51b50bb7ae7926ee341d84f79de7442", "translation": "524baeca9566ac70974aec26e31fdb9d6b42de85" }, - "contextMenus.task.organization.title": null, - "contextMenus.task.organization.projects": null, - "contextMenus.task.organization.addToProject": null, - "contextMenus.task.organization.subtasks": null, - "contextMenus.task.organization.addSubtasks": null, - "contextMenus.task.organization.notices.alreadyInProject": null, - "contextMenus.task.organization.notices.alreadySubtask": null, - "contextMenus.task.organization.notices.addedToProject": null, - "contextMenus.task.organization.notices.addedAsSubtask": null, - "contextMenus.task.organization.notices.addToProjectFailed": null, - "contextMenus.task.organization.notices.addAsSubtaskFailed": null, - "contextMenus.task.organization.notices.projectSelectFailed": null, - "contextMenus.task.organization.notices.subtaskSelectFailed": null, - "contextMenus.task.organization.notices.noEligibleSubtasks": null, - "contextMenus.task.organization.notices.currentTaskNotFound": null, + "contextMenus.task.organization.title": { + "source": "519255ae1f74ffc5ddd29979295c7572f048ad81", + "translation": "6e99c1d3b1502c090dcd07ad2e7110ed5c0118a9" + }, + "contextMenus.task.organization.projects": { + "source": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "translation": "b1e8cd4da2128109e230cd0b08a140bf854d70a8" + }, + "contextMenus.task.organization.addToProject": { + "source": "9dd214953c4e6809b5781c1d3e3e02314a5e0b60", + "translation": "9cbcd32633dd8455ad4c972a79400f3114e93d9f" + }, + "contextMenus.task.organization.subtasks": { + "source": "173312c6e2592de729610a4d319877c9aa8d8b67", + "translation": "b8c605d6478947d70d80136c055af12dd97b127a" + }, + "contextMenus.task.organization.addSubtasks": { + "source": "e3be6d5743bddcf6860ae9b0e3b3195a615a9851", + "translation": "963f3afd9425ad2bb6c299b5c46d7054a806b444" + }, + "contextMenus.task.organization.notices.alreadyInProject": { + "source": "1e29ecb2858c6534f5a0ce04cc31cacd4ae517b9", + "translation": "a11c0ed4de4676dfe37e700334a9afb493672e6b" + }, + "contextMenus.task.organization.notices.alreadySubtask": { + "source": "1ba79408a9d9efc90cc09da294427b361ea47704", + "translation": "c811c3ed682d4f9921377caec026886e0011f0d5" + }, + "contextMenus.task.organization.notices.addedToProject": { + "source": "16e3e41454eb0bb323fa483247d7bbc8d9f8682c", + "translation": "e9223d1640d0ba303de8a08dd03bb21c8aa67fe2" + }, + "contextMenus.task.organization.notices.addedAsSubtask": { + "source": "58716eb79b04312adc6aff8fe462878ad590a61e", + "translation": "8aae950926ab11915f43a656aa829152105d4d8c" + }, + "contextMenus.task.organization.notices.addToProjectFailed": { + "source": "b33b7412093bbc9bf659f740f2f6a2c195e567fe", + "translation": "8ade85155a0d534618e10479473679a308d3e8b4" + }, + "contextMenus.task.organization.notices.addAsSubtaskFailed": { + "source": "7e976d9c2e9af1a6b11f181e40d19885d754c690", + "translation": "d791beb9c67f38bfc1f61f088e5878dc610058d7" + }, + "contextMenus.task.organization.notices.projectSelectFailed": { + "source": "ce7aecc0fc448d9b71a0fca743cf6a4089b08ec3", + "translation": "9eac4713f3c99e4f156c436ab95198ea0f984d4c" + }, + "contextMenus.task.organization.notices.subtaskSelectFailed": { + "source": "333c06c796628bc21ecdaa6da4556bbe343c2284", + "translation": "77f1289b8d0b2605c670edde90c98a68e9e8e235" + }, + "contextMenus.task.organization.notices.noEligibleSubtasks": { + "source": "bce7ca1d7ce5603179f86b83b9074a4aa27de835", + "translation": "1313d6c9fe0754bced4281ce86b100e094e96154" + }, + "contextMenus.task.organization.notices.currentTaskNotFound": { + "source": "08026c9b7c99f5ebba74878389670c6236361b82", + "translation": "948eff8dfbe018b10f86f539ee8edce6f7dad565" + }, "contextMenus.task.subtasks.loading": { "source": "df656368163a3d196b63857636b0ee9e2a41273d", "translation": "63cfd51c99bfb46671646eaf4b13acc1cab822e0" @@ -17252,354 +19676,177 @@ "source": "6a72085653e4c5be8c7640c868ef787cbcf063d1", "translation": "c5f641e4d1cc19bfedbfdf37bb7c1e13a471deb9" }, - "ui.filterBar.saveView": { - "source": "b4190583ca27890ac981f949f297fa935992a361", - "translation": "f630a0a999f8208003f0a73b4c48e627626e4349" - }, - "ui.filterBar.saveViewNamePlaceholder": { - "source": "588b34d448e6ec695ed48b5b6672835b1298ccae", - "translation": "54fa774de41f28df5363d2504be6ea86e566d826" - }, - "ui.filterBar.saveButton": { - "source": "efc007a393f66cdb14d57d385822a3d9e36ef873", - "translation": "f7c8bcd8b213a6cc4a0cfd3462bd1379e4ef9689" - }, - "ui.filterBar.views": { - "source": "24be61285e096fa817d4cdb0a0ed8294ea5bd2fb", - "translation": "ff576f2ba73e62311d311c8f6a2be80d8db2c7b7" - }, - "ui.filterBar.savedFilterViews": { - "source": "09b8a30b21f3f7ee6316295e112483a1d1022e9b", - "translation": "b9c05935b569a0e0af795cb1ef9b75d2cca9a87d" - }, - "ui.filterBar.filters": { - "source": "96e578211aa295317cf257310712fa28ccd8f6c6", - "translation": "2a8e76e0d96e7c546136c2f3b480f4c74326a221" - }, - "ui.filterBar.properties": { - "source": "bc6c88db2f0703a9e2461a4a8060ccf1cb881998", - "translation": "d43f3df4dd1d91efed5695f4c4952056662d03e2" - }, - "ui.filterBar.sort": { - "source": "adc4e96a478be02a8147b100bd68113f38b89f80", - "translation": "c05261e0f7a7dc4664ed5a45672bb75db91ccea7" - }, - "ui.filterBar.newTask": { - "source": "6403f2b7eb2aaafe6de34cbf2a029b01afebc512", - "translation": "3278b098378158e7be8a4c5f9a3bd93be8246297" - }, - "ui.filterBar.expandAllGroups": { - "source": "37a8e42fd92798d42a742f47781938a0ba633cb5", - "translation": "36a987aad27f1da8e50398bb288fe43cb3b9bce0" - }, - "ui.filterBar.collapseAllGroups": { - "source": "6bb15935c519905c1512ed4614f1fd59dc06160f", - "translation": "80e4894b472334339de15318732ba19aade46348" - }, - "ui.filterBar.searchTasksPlaceholder": { - "source": "927df1743be7cda151ea9a525183bb2cf9d54fe8", - "translation": "4351d5591b67394fb5c6acf08caaf319e223c051" - }, - "ui.filterBar.searchTasksTooltip": { - "source": "c623caa9d150ad9c72bf98a99fff866d22f56ded", - "translation": "26fb0b698d581ea5f266f4b2ebd63990f3df24a0" - }, - "ui.filterBar.filterUnavailable": { - "source": "a5ea6203077a4a20c718524fcd353a5f7e3e1603", - "translation": "e2f133413f636d2ff23cb9cd7faa06d0511c7800" - }, - "ui.filterBar.toggleFilter": { - "source": "a5eaedd387cdeeed14e58328922beebee93913cd", - "translation": "36e92adce6d73f07314eaafbfbf6ac8342f2ade6" - }, - "ui.filterBar.activeFiltersTooltip": { - "source": "7d8f944b2ddce9e94f38b484268e0c41934e971f", - "translation": "2cd1ae2a8a3a43418cd51daf6614f2e5c86205b2" - }, - "ui.filterBar.configureVisibleProperties": { - "source": "9600d0167e64e1646e0cece242ba7202d7a0514b", - "translation": "3fe2f7de8b638c3b2342c00c92388a8932c6c2c5" - }, - "ui.filterBar.sortAndGroupOptions": { - "source": "6d74b8c68e9095d4c31833619a598aecf1c3ddbf", - "translation": "1d1331ff7e99e826d12090632b1fd7f27dd2305c" - }, - "ui.filterBar.sortMenuHeader": { - "source": "adc4e96a478be02a8147b100bd68113f38b89f80", - "translation": "c05261e0f7a7dc4664ed5a45672bb75db91ccea7" - }, - "ui.filterBar.orderMenuHeader": { - "source": "1d75774c0f96b6ee44eb6643c9fea71b50b90ea8", - "translation": "5c32e6311ccfd7e9b147f06b0cf51680b9d4532b" - }, - "ui.filterBar.groupMenuHeader": { - "source": "171a0606f7c74580fd3982cf57c49d604104120a", - "translation": "1026d22e2a7c1aae2be863f5be84cc05d7677e65" - }, - "ui.filterBar.createNewTask": { - "source": "5f80d7a8fe673e68c503e8500f81f243db25ed15", - "translation": "cba0259d3c1b0d8e817dbb924415a19c2106814e" - }, - "ui.filterBar.filter": { - "source": "d7decf1aa22b02ae8abf9a96849ee423eee838e4", - "translation": "9b759d62fce00c19b0e4276b4a1da2bab7405b28" - }, - "ui.filterBar.displayOrganization": { - "source": "01e6f8cc293fb4c9c87fb0a48b4f637d672e8da2", - "translation": "6b466c68acd432395cf3d2a5c4bbc493e9bf98d8" - }, - "ui.filterBar.viewOptions": { - "source": "da1aedd5c0c0364898119558da08ff0394950cab", - "translation": "a804057c093a44eac764e15530263305da5f60f3" - }, - "ui.filterBar.addFilter": { - "source": "85425f957a3375c360ec4ceb1fbe7bf600a02884", - "translation": "11f60cc2df2726ac69a1618625c478110c5cf87b" - }, - "ui.filterBar.addFilterGroup": { - "source": "d7607b6101203cbefe1b6bfe9b95744d3189314f", - "translation": "581563495ecefd9ba16f337256e5e760d8191352" - }, - "ui.filterBar.addFilterTooltip": { - "source": "4306431d6495016c83d0a627dda47df0a713facc", - "translation": "8159d157060d37e16b5211bb7da8e9be380da414" - }, - "ui.filterBar.addFilterGroupTooltip": { - "source": "63e8ebef835228f68ebc739e725381577115ec1e", - "translation": "fc834c75d2f8a7b65a26a3b4aca091bcd70b8a9a" - }, - "ui.filterBar.clearAllFilters": { - "source": "60f6824df05563ae6a5bdae77b08dba64dd8a01d", - "translation": "261ef73a317f292198fbe0d473eefdd834ca5f5a" - }, - "ui.filterBar.saveCurrentFilter": { - "source": "b092f5eb0c5a3bdb8f4807dc5fd734d33400df7b", - "translation": "8286cf4a6a56b9278e24e34ae6a0798e95406865" - }, - "ui.filterBar.closeFilterModal": { - "source": "a70202589d38d789e83bb81332e03bc548d35ae9", - "translation": "5400b3fa06971151f919d6daf82fd6bbbfd678ab" - }, - "ui.filterBar.deleteFilterGroup": { - "source": "b331e5226dc796d59e25a43f04547cd255d34dc9", - "translation": "e64abf9b0c2c3f9432091e8b3f0cf51f9a1f9a9d" - }, - "ui.filterBar.deleteCondition": { - "source": "8dad260f73a085b011a577f434784dc3596dfd29", - "translation": "bd432d9d0bf3212d4aab27c8dc8412d51ff725cd" - }, - "ui.filterBar.all": { - "source": "6a72085653e4c5be8c7640c868ef787cbcf063d1", - "translation": "c5f641e4d1cc19bfedbfdf37bb7c1e13a471deb9" - }, - "ui.filterBar.any": { - "source": "322444d3bb52c341f429ca0454f292dc242f315b", - "translation": "bcc8881f174b8b9e53cd7b10826d9a3743eed827" - }, - "ui.filterBar.followingAreTrue": { - "source": "bd0dcec00ef08ef1b08278a93d6690134236d9eb", - "translation": "b1cd0a8139dd5cb6dbb908631f6fa9fd00d8e967" - }, - "ui.filterBar.where": { - "source": "46148cc3b4d2b3ac8073f14b0cba7f25ffff54bd", - "translation": "47bb7acd4dd89ccd4082f8618e204a8969bc2dd2" - }, - "ui.filterBar.selectProperty": { - "source": "b92e64f8b332abb65066132727c8a354601e81a3", - "translation": "01ea04b3f6a302d7d1ca27e57c95078d08289fc7" - }, - "ui.filterBar.chooseProperty": { - "source": "a05a57b8e966be832dce224ae940c48cb69e53b3", - "translation": "328c00cda2887262f6fc4de2b1b5a7451cc18acd" - }, - "ui.filterBar.chooseOperator": { - "source": "dbdf6185d42e5b74489aa66535bcc5cfd5e41417", - "translation": "507b6851e6fb5f9084f374e58502af0074575bf4" - }, - "ui.filterBar.enterValue": { - "source": "0abfd69521a4b9ca871d0cdbe649e5ce49236651", - "translation": "c14d7e08a347627fd035cbbb1c61acaa17fe4584" - }, - "ui.filterBar.selectValue": { - "source": "ec589a58c1ddcfad2206ab7875e105f4bd63b106", - "translation": "285d7c99bb71428fe0895b2dbfefc9621ae3ba13" - }, - "ui.filterBar.sortBy": { - "source": "9bb640e5a0146023d54d138beb584484d1f9b701", - "translation": "1a4df408ec434bbf11bf23e716fc95816746dd02" - }, - "ui.filterBar.toggleSortDirection": { - "source": "77b575fbe5f4770b38750006f228a8c91f1cae7b", - "translation": "036f8fd132b157f5889fa144755bdde44fda66a1" - }, - "ui.filterBar.chooseSortMethod": { - "source": "d03b10be1236f7d0482c950995fbbda549f631b0", - "translation": "9b1ea73e6811586d30f12fed5b51f3d69627edc9" - }, - "ui.filterBar.groupBy": { - "source": "e357306c9e503231e3d7d90eb81c95feabb1d234", - "translation": "0571471b520eed3df73501ebff283b701ad8b215" - }, - "ui.filterBar.chooseGroupMethod": { - "source": "9293b8179e29e7768c9e5a122bbb0e46c929909f", - "translation": "07894e3932eec9252a1e692a4566864adc0a2891" - }, - "ui.filterBar.toggleViewOption": { - "source": "002db51706b3fa2640fdca55cb71c8eee2bba276", - "translation": "4114263983cadbd004d83d4ce1544dc815ec5240" - }, - "ui.filterBar.expandCollapseFilters": { - "source": "f1813d79d5ea495e18a862da6201a9f3c0f27702", - "translation": "cb17303b9f9bfbb0351ae2ed5737706476dbd455" - }, - "ui.filterBar.expandCollapseSort": { - "source": "6410940f8db23c6b64f4681109ee9c10a8f9cf02", - "translation": "c3a25e31896830e326a87ac5b1e14eae78259f96" - }, - "ui.filterBar.expandCollapseViewOptions": { - "source": "16e38e2b927b53035da0dc547537e0a72ab4db49", - "translation": "0fdf3579439137fb8b8dcf1c176ebfc0e56500f2" - }, - "ui.filterBar.naturalLanguageDates": { - "source": "ce82dacf53b6b8f598dec752881dad385e68b2e5", - "translation": "1d0557ab721b7ea42c87e560b06edb4f87974b1d" - }, - "ui.filterBar.naturalLanguageExamples": { - "source": "3ce8432d430e87a84d941fcf90173c05e726c7f3", - "translation": "d18d02b982d6683d2a2f130a8bd7ed0db42707fd" - }, - "ui.filterBar.enterNumericValue": { - "source": "8c52fd270c075b1b95a99d5395c80df8a2f93366", - "translation": "b1d7d0d642a65bc1041aa12581c86ae5ae67b99f" - }, - "ui.filterBar.enterDateValue": { - "source": "cad20f7b1ca73c40287ad2321d8310e3c02399e3", - "translation": "df1b3f7a691f4b423034fa21ddf5266032d68750" - }, - "ui.filterBar.pickDateTime": { - "source": "cd79abf2b28c47a470fca1fd56270ef61f9556ee", - "translation": "63950dea665b2d1bf92d925deaa4ab3db7092302" - }, - "ui.filterBar.noSavedViews": { - "source": "705636150e2931e816b7132b8d53ef477aaa1fd9", - "translation": "424d328fb3548707624a69658d042de4982ff36c" - }, - "ui.filterBar.savedViews": { - "source": "c0c4dac89fed2563d745e38c3b0d3b38127e5ece", - "translation": "61aaed2b6d19e73eb66d71e2c97759c694c01a94" - }, - "ui.filterBar.yourSavedFilters": { - "source": "7d6cc5480755c5813bf7d5f32ef1e3c9438c529d", - "translation": "b2555a79442a3de01b19c8812867ec43c7f4ce30" - }, - "ui.filterBar.dragToReorder": { - "source": "153a51e30fb4542e9a7c1984efd89631665abc03", - "translation": "bd10a3cfc59adc590f1e941fe9ca79c77545265c" - }, - "ui.filterBar.loadSavedView": { - "source": "f21fb85139619a79a4d6929363460bd58bb3b6fb", - "translation": "0d79a75b813b73078d8636d8c7095e38e15806e7" - }, - "ui.filterBar.deleteView": { - "source": "67595eb9b66fc2e335342eeb784b50d4be5ad954", - "translation": "1fd858156433ca9f74a651bf0e11fe10bda29a26" - }, - "ui.filterBar.deleteViewTitle": { - "source": "fe4ee97c1976a239fe42ccdffe902b192ad8486e", - "translation": "1fd858156433ca9f74a651bf0e11fe10bda29a26" - }, - "ui.filterBar.deleteViewMessage": { - "source": "0e1926ab44393a42f7f2d2a9912fa52694529b87", - "translation": "275598d797899177d60e916dcf2a73535c812fe4" - }, - "ui.filterBar.manageAllReminders": { - "source": "6e978d018883af35ee9bb351b36ad124b449f5e4", - "translation": "ef07e9cf3e92355fafc473148951229395552a63" - }, - "ui.filterBar.clearAllReminders": { - "source": "05c2fe2163d3737b86a7c8a6a8c4ceda9e208976", - "translation": "8080c24a077229f53ce2d39e008f7a37a19fa0bd" - }, - "ui.filterBar.customRecurrence": { - "source": "679d804e3d523e432f58ba49b33f7991ae69a60a", - "translation": "e71bb37723cf63b81099b3ac16aed23f963c4def" - }, - "ui.filterBar.clearRecurrence": { - "source": "8b9f74a21faab220585365e48e7242b915af32e4", - "translation": "d4603edcfce43fad88c5dcfb2881ac2cdfbd7f52" - }, - "ui.filterBar.sortOptions.dueDate": { - "source": "a1b308ec704aed240db754a1862adcf67e19f001", - "translation": "4f9893d71a6d095b3d509517c14f2fb4cf71c09d" - }, - "ui.filterBar.sortOptions.scheduledDate": { - "source": "19ad699baa333ebafbaee750f50ce2b8c2a069e4", - "translation": "a0a3c2d4cce388135d6267c00a58264fba1513b2" - }, - "ui.filterBar.sortOptions.priority": { - "source": "886cbff9d9df761ec642945e519631a23ed173a2", - "translation": "eede91d2f77e0901ba7ebf704f4ea2e1738e04dc" - }, - "ui.filterBar.sortOptions.status": { - "source": "bae7d5be70820ed56467bd9a63744e23b47bd711", - "translation": "659499f38a5647a0d307be6f23a5d367a167fbf7" - }, - "ui.filterBar.sortOptions.title": { - "source": "768e0c1c69573fb588f61f1308a015c11468e05f", - "translation": "eb97899aedcd5609782b5ccb4ffa390e0e66a3eb" - }, - "ui.filterBar.sortOptions.createdDate": { - "source": "479fa82ac7623e85b4bba2dc78da45687f223f4e", - "translation": "d5e8d1af5f3c137fb998b7afa347eeea683a7229" - }, - "ui.filterBar.sortOptions.tags": { - "source": "848eed0fbd5429f556b2982dec3ea87136e33e44", - "translation": "e26c690ca57a3cd9f3b5ba1a396e84299da3f09d" - }, - "ui.filterBar.sortOptions.ascending": { - "source": "2b226c7948b48ad8f6ece8d91270c6915aba6b73", - "translation": "c4f64a876a0da37247669a7413d85bd82918e8c4" - }, - "ui.filterBar.sortOptions.descending": { - "source": "36377adf43984d298439110cf96f95529471c501", - "translation": "7e888644247ffa6c8e4f1295729cf66c03b60318" - }, - "ui.filterBar.group.none": { + "ui.filterBar.saveView": null, + "ui.filterBar.saveViewNamePlaceholder": null, + "ui.filterBar.saveButton": null, + "ui.filterBar.views": null, + "ui.filterBar.savedFilterViews": null, + "ui.filterBar.filters": null, + "ui.filterBar.properties": null, + "ui.filterBar.sort": null, + "ui.filterBar.newTask": null, + "ui.filterBar.expandAllGroups": null, + "ui.filterBar.collapseAllGroups": null, + "ui.filterBar.searchTasksPlaceholder": null, + "ui.filterBar.searchTasksTooltip": null, + "ui.filterBar.filterUnavailable": null, + "ui.filterBar.toggleFilter": null, + "ui.filterBar.activeFiltersTooltip": null, + "ui.filterBar.configureVisibleProperties": null, + "ui.filterBar.sortAndGroupOptions": null, + "ui.filterBar.sortMenuHeader": null, + "ui.filterBar.orderMenuHeader": null, + "ui.filterBar.groupMenuHeader": null, + "ui.filterBar.createNewTask": null, + "ui.filterBar.filter": null, + "ui.filterBar.displayOrganization": null, + "ui.filterBar.viewOptions": null, + "ui.filterBar.addFilter": null, + "ui.filterBar.addFilterGroup": null, + "ui.filterBar.addFilterTooltip": null, + "ui.filterBar.addFilterGroupTooltip": null, + "ui.filterBar.clearAllFilters": null, + "ui.filterBar.saveCurrentFilter": null, + "ui.filterBar.closeFilterModal": null, + "ui.filterBar.deleteFilterGroup": null, + "ui.filterBar.deleteCondition": null, + "ui.filterBar.all": null, + "ui.filterBar.any": null, + "ui.filterBar.followingAreTrue": null, + "ui.filterBar.where": null, + "ui.filterBar.selectProperty": null, + "ui.filterBar.chooseProperty": null, + "ui.filterBar.chooseOperator": null, + "ui.filterBar.enterValue": null, + "ui.filterBar.selectValue": null, + "ui.filterBar.sortBy": null, + "ui.filterBar.toggleSortDirection": null, + "ui.filterBar.chooseSortMethod": null, + "ui.filterBar.groupBy": null, + "ui.filterBar.chooseGroupMethod": null, + "ui.filterBar.toggleViewOption": null, + "ui.filterBar.expandCollapseFilters": null, + "ui.filterBar.expandCollapseSort": null, + "ui.filterBar.expandCollapseViewOptions": null, + "ui.filterBar.naturalLanguageDates": null, + "ui.filterBar.naturalLanguageExamples": null, + "ui.filterBar.enterNumericValue": null, + "ui.filterBar.enterDateValue": null, + "ui.filterBar.pickDateTime": null, + "ui.filterBar.noSavedViews": null, + "ui.filterBar.savedViews": null, + "ui.filterBar.yourSavedFilters": null, + "ui.filterBar.dragToReorder": null, + "ui.filterBar.loadSavedView": null, + "ui.filterBar.deleteView": null, + "ui.filterBar.deleteViewTitle": null, + "ui.filterBar.deleteViewMessage": null, + "ui.filterBar.manageAllReminders": null, + "ui.filterBar.clearAllReminders": null, + "ui.filterBar.customRecurrence": null, + "ui.filterBar.clearRecurrence": null, + "ui.filterBar.sortOptions.dueDate": null, + "ui.filterBar.sortOptions.scheduledDate": null, + "ui.filterBar.sortOptions.priority": null, + "ui.filterBar.sortOptions.status": null, + "ui.filterBar.sortOptions.title": null, + "ui.filterBar.sortOptions.createdDate": null, + "ui.filterBar.sortOptions.tags": null, + "ui.filterBar.sortOptions.ascending": null, + "ui.filterBar.sortOptions.descending": null, + "ui.filterBar.group.none": null, + "ui.filterBar.group.status": null, + "ui.filterBar.group.priority": null, + "ui.filterBar.group.context": null, + "ui.filterBar.group.project": null, + "ui.filterBar.group.dueDate": null, + "ui.filterBar.group.scheduledDate": null, + "ui.filterBar.group.tags": null, + "ui.filterBar.group.completedDate": null, + "ui.filterBar.subgroupLabel": { + "source": "4d089fb595e28cf36d5ac24a58012732faf4f843", + "translation": "16c803877a56d0e543e1f965f222ab092fc55c9e" + }, + "ui.filterBar.notices.propertiesMenuFailed": null, + "components.dateContextMenu.weekdays": { + "source": "4ffc67b62aae6c9adee9360316760ba55c1f53ed", + "translation": "31bd99c01a6bb373b261373bd9d6249a3183a668" + }, + "components.dateContextMenu.clearDate": { + "source": "a0aea5917b8778dd5eeeb962c3a4fda6ad519814", + "translation": "1bfb9f59535be48bb1a69ebe90a1494db792e9e9" + }, + "components.dateContextMenu.today": { + "source": "24345a14377fd821d3932f4e82f6431640955b0b", + "translation": "baca97f697fbf114ca2b08c97c106dde47583c4a" + }, + "components.dateContextMenu.tomorrow": { + "source": "1948bf2dfa8fbc1f07ad3b6f0e2b3ee39f87e495", + "translation": "2ab7e70a795413277c5fb24b3bd9b35c5c06598a" + }, + "components.dateContextMenu.thisWeekend": { + "source": "1921aa118ad7a4dca5f679eaefc3e1777854c777", + "translation": "c8b6ff418b3a60e984b0adfe061ceefa8ee91c3c" + }, + "components.dateContextMenu.nextWeek": { + "source": "5a20763adfb0adcac05270a340009a8526652248", + "translation": "ada9f8906dd2ff302a24371a4d050100a6d874e6" + }, + "components.dateContextMenu.nextMonth": { + "source": "8abf7cf1d0b36ff16ebbe26b8285a65d9d1582f6", + "translation": "730a4d29fd044df250ea001f37e8c0d3b22c24c9" + }, + "components.dateContextMenu.setDateTime": { + "source": "5e2928ff54a45201c4e6921fe419723cb08c9af6", + "translation": "a3250315e8a5f188d69ebcd71666275252bc3df9" + }, + "components.dateContextMenu.dateLabel": { + "source": "eb9a4bc1c0c153e4e4b042a79113b815b7e3021d", + "translation": "eb9a4bc1c0c153e4e4b042a79113b815b7e3021d" + }, + "components.dateContextMenu.timeLabel": { + "source": "5b945a9a6ce9ef6431e71d5ea4834db6b50c08c5", + "translation": "dad1a2d51a43fa56e575f23db21b99732da3e29a" + }, + "components.subgroupMenuBuilder.none": { "source": "6eef6648406c333a4035cd5e60d0bf2ecf2606d7", "translation": "b2ed82f1bf1c30916cde300ded82176c2ff0300a" }, - "ui.filterBar.group.status": { + "components.subgroupMenuBuilder.status": { "source": "bae7d5be70820ed56467bd9a63744e23b47bd711", "translation": "659499f38a5647a0d307be6f23a5d367a167fbf7" }, - "ui.filterBar.group.priority": { + "components.subgroupMenuBuilder.priority": { "source": "886cbff9d9df761ec642945e519631a23ed173a2", "translation": "eede91d2f77e0901ba7ebf704f4ea2e1738e04dc" }, - "ui.filterBar.group.context": { + "components.subgroupMenuBuilder.context": { "source": "cc11b3a28fa30ae6d3d3ad1438824cbd5224ba5c", "translation": "8112e9eb98ed86cf2af7c43d9c0976a2036aceae" }, - "ui.filterBar.group.project": { + "components.subgroupMenuBuilder.project": { "source": "f6f4da8d93e88a08220e03b7810451d3ba540a34", "translation": "a9de3a26033871723d410703d876904b76d967cb" }, - "ui.filterBar.group.dueDate": { + "components.subgroupMenuBuilder.dueDate": { "source": "a1b308ec704aed240db754a1862adcf67e19f001", "translation": "4f9893d71a6d095b3d509517c14f2fb4cf71c09d" }, - "ui.filterBar.group.scheduledDate": { + "components.subgroupMenuBuilder.scheduledDate": { "source": "19ad699baa333ebafbaee750f50ce2b8c2a069e4", - "translation": "a0a3c2d4cce388135d6267c00a58264fba1513b2" + "translation": "037900d45ecca0ebbdd7732937000aca6219264f" }, - "ui.filterBar.group.tags": { + "components.subgroupMenuBuilder.tags": { "source": "848eed0fbd5429f556b2982dec3ea87136e33e44", "translation": "e26c690ca57a3cd9f3b5ba1a396e84299da3f09d" }, - "ui.filterBar.group.completedDate": null, - "ui.filterBar.notices.propertiesMenuFailed": { - "source": "e9df8763e0af720e4edcfd8f3bd87af75a69f7a1", - "translation": "f484ebd4deb515f1b3e665d1e67fa8fae2f8fb1b" + "components.subgroupMenuBuilder.completedDate": { + "source": "0089d3b136526c1dfbe0487bc7c3c8ef99812909", + "translation": "0ffd21de2c6d2900609b6929c42780416c1f6f47" + }, + "components.subgroupMenuBuilder.subgroup": { + "source": "4d089fb595e28cf36d5ac24a58012732faf4f843", + "translation": "16c803877a56d0e543e1f965f222ab092fc55c9e" }, "components.propertyVisibilityDropdown.coreProperties": { "source": "b3cfb1af6a8f2011725da9badb151b1c72b0e6ec", @@ -18147,6 +20394,12 @@ "source": "2ab447eb84f59d3b163ca7bae16ff0d20b3ca125", "translation": "fcf842f45d8ada744fd6707f1eb737405a890fb6" }, + "views.agenda.empty.helpText": null, + "views.agenda.contextMenu.showOverdueSection": null, + "views.agenda.contextMenu.showNotes": null, + "views.agenda.contextMenu.calendarSubscriptions": null, + "views.agenda.periods.thisWeek": null, + "views.agenda.tipPrefix": null, "views.taskList.title": { "source": "090ec5f560fc50377fcd95e5cda128e91b276e98", "translation": "2b79c0b9423d706444ac2a504d6157f503834d4f" @@ -18171,6 +20424,7 @@ "source": "5b7bdb61fdbc48d57b9f43d0e28b7cfd3063fca5", "translation": "338df352fa9ca58b82d7d4e8ea4f43da516c868e" }, + "views.notes.refreshingButton": null, "views.notes.notices.indexingDisabled": { "source": "3e6ccc8839212c37b4152b2193c1369a68dde324", "translation": "a1470895537cb07416974dba3f3f6cf7f07940d9" @@ -18179,6 +20433,9 @@ "source": "9e2f5f8952ae7fb4bf2669ff4c73cee07e32ce53", "translation": "3e8bc727980a9fdf5db03041c0bb9372f37e3c09" }, + "views.notes.empty.helpText": null, + "views.notes.loading": null, + "views.notes.refreshButtonAriaLabel": null, "views.miniCalendar.title": { "source": "a3cc5b7724a714d5620c6e9ef5f851c143022178", "translation": "a856081710d80964b1a1256d3d0e43ecdc5cbd6f" @@ -18383,7 +20640,10 @@ "source": "aa73278ad78de284702c875cbe2d73ccb8f9c5d3", "translation": "0753dde3fefe6f6187fc84f9baa52a674c1fe120" }, - "views.basesCalendar.buttonText.listDays": null, + "views.basesCalendar.buttonText.listDays": { + "source": "27491b23f022fd85faf8c467fb04415d0b5d6bed", + "translation": "61de41de0ea8e5334e97d06345cd3e68ec59a305" + }, "views.basesCalendar.settings.groups.dateNavigation": { "source": "8487a72e02c205a734e6ec6a5684a99576039cb3", "translation": "4e0b207c74b14cd8a4e6a275afa1418c8c38767e" @@ -18404,8 +20664,14 @@ "source": "9b99ca62a8c206aeef3199afeb8c2d6ea70c3c3a", "translation": "2287d63241f1d8aa5eadaf7392c317a92cf7866d" }, - "views.basesCalendar.settings.groups.googleCalendars": null, - "views.basesCalendar.settings.groups.microsoftCalendars": null, + "views.basesCalendar.settings.groups.googleCalendars": { + "source": "cfa0f6bb3b4422195fc4abb06c02bca780fce33a", + "translation": "cfa0f6bb3b4422195fc4abb06c02bca780fce33a" + }, + "views.basesCalendar.settings.groups.microsoftCalendars": { + "source": "2edac69ff3c043d662037911af60ea54cc1c3746", + "translation": "2edac69ff3c043d662037911af60ea54cc1c3746" + }, "views.basesCalendar.settings.dateNavigation.navigateToDate": { "source": "2a47407705ef9a77de4778c38853a4122e38b1fd", "translation": "54ceab04071c47bd8194d1bc48240748c089c7d2" @@ -18470,7 +20736,10 @@ "source": "1aadcb0d4d3400d00e2ad0a4cffa017ad1fac481", "translation": "a8c383e51fd4cf53dac4c9993fd8a661d073b006" }, - "views.basesCalendar.settings.layout.listDayCount": null, + "views.basesCalendar.settings.layout.listDayCount": { + "source": "914d28dbcb8c39a44885ec1b53d4c50180639463", + "translation": "45905c7c0a37d600bfb05c187dc3bcc7f1ee5111" + }, "views.basesCalendar.settings.layout.dayStartTime": { "source": "0f668f32458bf870e8823e6dd50a7fcc1dc595c7", "translation": "50901883f5d93cbd0c3b975dd65390685cb978bd" @@ -18591,6 +20860,8 @@ "source": "e542695cd353d43e646a3d050dc59b189373613c", "translation": "99a2f09c8fa003662ffb9428623bafb9c736e382" }, + "views.kanban.uncategorized": null, + "views.kanban.noProject": null, "views.kanban.notices.loadFailed": { "source": "9d744b2d44937cda77d20fc3bf2c1fc0242cc3c4", "translation": "d7250542b58b0390f8751e5378f719ff54201f22" @@ -18603,6 +20874,7 @@ "source": "5df51b612bbe4d9afeb184269bb95d764fac5687", "translation": "0d16fd8b6e3342b391d0190d5c63f9b1f4b47eb0" }, + "views.kanban.columnTitle": null, "views.pomodoro.title": { "source": "212e4618d030e7c987ed2d64d96f3e1dcebbf414", "translation": "59b6bea2859f4f7bd00dba544b3d025b15fd1329" @@ -18843,6 +21115,31 @@ "source": "77f4b7a081b20f78557dd404e14d91b89b52a27c", "translation": "7deced4ee8b6e75d5dcafff58c7bd89905c98fd6" }, + "views.stats.filters.allTasks": null, + "views.stats.filters.activeOnly": null, + "views.stats.filters.completedOnly": null, + "views.stats.refreshButton": null, + "views.stats.timeRanges.allTime": null, + "views.stats.timeRanges.last7Days": null, + "views.stats.timeRanges.last30Days": null, + "views.stats.timeRanges.last90Days": null, + "views.stats.timeRanges.customRange": null, + "views.stats.resetFiltersButton": null, + "views.stats.dateRangeFrom": null, + "views.stats.dateRangeTo": null, + "views.stats.noProject": null, + "views.stats.cards.timeTrackedEstimated": null, + "views.stats.cards.totalTasks": null, + "views.stats.cards.completionRate": null, + "views.stats.cards.activeProjects": null, + "views.stats.cards.avgTimePerTask": null, + "views.stats.labels.tasks": null, + "views.stats.labels.completed": null, + "views.stats.labels.projects": null, + "views.stats.noProjectData": null, + "views.stats.notAvailable": null, + "views.stats.noTasks": null, + "views.stats.loading": null, "views.releaseNotes.title": { "source": "5939771f391859041bc57e5e05b04235b1ef8ee7", "translation": "b04d2e20a60a122b2f4926df86d88940f3050b39" @@ -19576,8 +21873,8 @@ "translation": "4b204d3b686f3e6b70a83cd83402172f3b26dbca" }, "settings.general.taskStorage.archiveFolder.description": { - "source": "585d1d1880702b21f0351cd59009545b68253772", - "translation": "9875820f6f709428c7b819598d7980e31e7c501e" + "source": "525cd580be814f568406dfa1750369aeaee8da8d", + "translation": "d5a64de1385140e996933c347e0d443f2ab2c4b4" }, "settings.general.taskIdentification.header": { "source": "a73ea48ea8d65c6dd5762403f0cee5e34b96773c", @@ -19611,8 +21908,14 @@ "source": "80122e53d8a3a7eb2c2ac8e352efba551330d1c5", "translation": "b64934c6cf4f77ed09796855de0b1298086c5542" }, - "settings.general.taskIdentification.hideIdentifyingTags.name": null, - "settings.general.taskIdentification.hideIdentifyingTags.description": null, + "settings.general.taskIdentification.hideIdentifyingTags.name": { + "source": "446bbfd987521d42035442c4652693d996565cf8", + "translation": "5e63b74221669a82d21d52e898bf8ad3e410881b" + }, + "settings.general.taskIdentification.hideIdentifyingTags.description": { + "source": "a38be9ef6457fd38857917cbbc387d396cd2e60a", + "translation": "9b4570a01a1d3a4918133bcc1723fc847cf427a0" + }, "settings.general.taskIdentification.taskProperty.name": { "source": "fb00b60c99acd4529404e3ef8bd77017d9332da6", "translation": "6ae7187e00f57eab334c8a458722548b27d302fc" @@ -19641,10 +21944,22 @@ "source": "4ff367979f5bdb70f928733dda339ca81435c4b1", "translation": "2bb6adcc292c5961c3bd4b7039b088a5aef92768" }, - "settings.general.frontmatter.header": null, - "settings.general.frontmatter.description": null, - "settings.general.frontmatter.useMarkdownLinks.name": null, - "settings.general.frontmatter.useMarkdownLinks.description": null, + "settings.general.frontmatter.header": { + "source": "49415878931e5edbbf6d49465647a990f04b12ae", + "translation": "49415878931e5edbbf6d49465647a990f04b12ae" + }, + "settings.general.frontmatter.description": { + "source": "24a51bb38d3857a7e0d9df7130ffff10bdd3b386", + "translation": "401a3771094681b847784477861dec5a798000a5" + }, + "settings.general.frontmatter.useMarkdownLinks.name": { + "source": "345e6cf9ce20ff8a3ac2966ceb53f8a83bdbd9ba", + "translation": "19605fdb95f0dc49a0a3f76f04676fc1449ce8c9" + }, + "settings.general.frontmatter.useMarkdownLinks.description": { + "source": "f56ef5842cbd725ff74500d96e3d40e0046e3693", + "translation": "e1d094e7106de8b6a78335034c13140a90edb9c2" + }, "settings.general.taskInteraction.header": { "source": "a8194c053a4f989c874659b7d4a0e99f5a4a3df5", "translation": "b23138923158d6981b28c676c475f4d2d9018124" @@ -20105,8 +22420,14 @@ "source": "5ac477c267332c84ac6f5fe5509d523e08a4af94", "translation": "c693364ea2d0cda28689bd4c11f91a5caabd7579" }, - "settings.taskProperties.customUserFields.autosuggestFilters.header": null, - "settings.taskProperties.customUserFields.autosuggestFilters.description": null, + "settings.taskProperties.customUserFields.autosuggestFilters.header": { + "source": "54bbd5ce9872e3040735f334d7a52a22dfd80868", + "translation": "4b94639e15f200f097f5f931dc4560c730c822ae" + }, + "settings.taskProperties.customUserFields.autosuggestFilters.description": { + "source": "61290f286c6963dbe266b1b6b20a4c3f29c78d66", + "translation": "0ed296d49c0b1d51f9bb879bbf880f53614bf648" + }, "settings.appearance.taskCards.header": { "source": "08836d307ea5b1614f69962e1b9d36f243baddc5", "translation": "8eecc3ac22ee85969f71f2b2cecd98975959028c" @@ -20555,8 +22876,14 @@ "source": "5f9fded041bcc55ad42199dd16555cc3808fda38", "translation": "c62a46945a990eb47d01be0e5b2da523d17b0e5e" }, - "settings.appearance.uiElements.showTaskCardInNote.name": null, - "settings.appearance.uiElements.showTaskCardInNote.description": null, + "settings.appearance.uiElements.showTaskCardInNote.name": { + "source": "0b1f1ec16383521fcfd6d02f3e80eb6a207b3c49", + "translation": "74b6c0d5ab3c7c49e09dba554457f11f75d61960" + }, + "settings.appearance.uiElements.showTaskCardInNote.description": { + "source": "b4aa118727222f93f2d6332eb132086fe482e087", + "translation": "8f101550eb94203177727010b912b6ff4e59899b" + }, "settings.appearance.uiElements.showExpandableSubtasks.name": { "source": "ae273c967a5801820e4f174610708fc4d1859951", "translation": "234b390c44c22f628c739f2647dafb04846b46cc" @@ -21661,6 +23988,25 @@ "source": "91fa8ddb011b35634762b9184731cd9d6893b139", "translation": "3e63ebd6fdf480923d7665253abe9ed6d5800f9d" }, + "notices.icsNoteCreatedSuccess": null, + "notices.icsCreationModalOpenFailed": null, + "notices.icsNoteLinkSuccess": null, + "notices.icsTaskCreatedSuccess": null, + "notices.icsRelatedItemsRefreshed": null, + "notices.icsFileNotFound": null, + "notices.icsFileOpenFailed": null, + "notices.timeblockAttachmentExists": null, + "notices.timeblockAttachmentAdded": null, + "notices.timeblockAttachmentRemoved": null, + "notices.timeblockFileTypeNotSupported": null, + "notices.timeblockTitleRequired": null, + "notices.timeblockUpdatedSuccess": null, + "notices.timeblockUpdateFailed": null, + "notices.timeblockDeletedSuccess": null, + "notices.timeblockDeleteFailed": null, + "notices.timeblockRequiredFieldsMissing": null, + "notices.agendaLoadingFailed": null, + "notices.statsLoadingFailed": null, "commands.openCalendarView": { "source": "d7dce352d3bf5b12479770b86495263f84275492", "translation": "238d8e03e2d389757ad2ceb689cd167abb51e3c1" @@ -21749,8 +24095,100 @@ "source": "04c2072af97cf70c22fbf9efa9b62eb2574d23d6", "translation": "2add1152032ee15c68c3fc05a7923fc50d2d0c31" }, - "commands.startTimeTrackingWithSelector": null, - "commands.editTimeEntries": null, + "commands.startTimeTrackingWithSelector": { + "source": "32970116a0d7a74dadbf82a0aa2aa8117278d601", + "translation": "a41b37c9484f432bce00b46045c2b999800329dc" + }, + "commands.editTimeEntries": { + "source": "b8c5b41ec8f55348f7ae4acf087d62edaf588a0c", + "translation": "c2c3943deaea48ee28abbd4c0c97cf49654b2518" + }, + "modals.deviceCode.title": null, + "modals.deviceCode.instructions.intro": null, + "modals.deviceCode.steps.open": null, + "modals.deviceCode.steps.inBrowser": null, + "modals.deviceCode.steps.enterCode": null, + "modals.deviceCode.steps.signIn": null, + "modals.deviceCode.steps.returnToObsidian": null, + "modals.deviceCode.codeLabel": null, + "modals.deviceCode.copyCodeAriaLabel": null, + "modals.deviceCode.waitingForAuthorization": null, + "modals.deviceCode.openBrowserButton": null, + "modals.deviceCode.cancelButton": null, + "modals.deviceCode.expiresMinutesSeconds": null, + "modals.deviceCode.expiresSeconds": null, + "modals.icsEventInfo.calendarEventHeading": null, + "modals.icsEventInfo.titleLabel": null, + "modals.icsEventInfo.calendarLabel": null, + "modals.icsEventInfo.dateTimeLabel": null, + "modals.icsEventInfo.locationLabel": null, + "modals.icsEventInfo.descriptionLabel": null, + "modals.icsEventInfo.urlLabel": null, + "modals.icsEventInfo.relatedNotesHeading": null, + "modals.icsEventInfo.noRelatedItems": null, + "modals.icsEventInfo.typeTask": null, + "modals.icsEventInfo.typeNote": null, + "modals.icsEventInfo.actionsHeading": null, + "modals.icsEventInfo.createFromEventLabel": null, + "modals.icsEventInfo.createFromEventDesc": null, + "modals.icsEventInfo.linkExistingLabel": null, + "modals.icsEventInfo.linkExistingDesc": null, + "modals.timeblockInfo.editHeading": null, + "modals.timeblockInfo.dateTimeLabel": null, + "modals.timeblockInfo.titleLabel": null, + "modals.timeblockInfo.titleDesc": null, + "modals.timeblockInfo.titlePlaceholder": null, + "modals.timeblockInfo.descriptionLabel": null, + "modals.timeblockInfo.descriptionDesc": null, + "modals.timeblockInfo.descriptionPlaceholder": null, + "modals.timeblockInfo.colorLabel": null, + "modals.timeblockInfo.colorDesc": null, + "modals.timeblockInfo.colorPlaceholder": null, + "modals.timeblockInfo.attachmentsLabel": null, + "modals.timeblockInfo.attachmentsDesc": null, + "modals.timeblockInfo.addAttachmentButton": null, + "modals.timeblockInfo.addAttachmentTooltip": null, + "modals.timeblockInfo.deleteButton": null, + "modals.timeblockInfo.saveButton": null, + "modals.timeblockInfo.deleteConfirmationTitle": null, + "modals.timeblockCreation.heading": null, + "modals.timeblockCreation.dateLabel": null, + "modals.timeblockCreation.titleLabel": null, + "modals.timeblockCreation.titleDesc": null, + "modals.timeblockCreation.titlePlaceholder": null, + "modals.timeblockCreation.startTimeLabel": null, + "modals.timeblockCreation.startTimeDesc": null, + "modals.timeblockCreation.startTimePlaceholder": null, + "modals.timeblockCreation.endTimeLabel": null, + "modals.timeblockCreation.endTimeDesc": null, + "modals.timeblockCreation.endTimePlaceholder": null, + "modals.timeblockCreation.descriptionLabel": null, + "modals.timeblockCreation.descriptionDesc": null, + "modals.timeblockCreation.descriptionPlaceholder": null, + "modals.timeblockCreation.colorLabel": null, + "modals.timeblockCreation.colorDesc": null, + "modals.timeblockCreation.colorPlaceholder": null, + "modals.timeblockCreation.attachmentsLabel": null, + "modals.timeblockCreation.attachmentsDesc": null, + "modals.timeblockCreation.addAttachmentButton": null, + "modals.timeblockCreation.addAttachmentTooltip": null, + "modals.timeblockCreation.createButton": null, + "modals.icsNoteCreation.heading": null, + "modals.icsNoteCreation.titleLabel": null, + "modals.icsNoteCreation.titleDesc": null, + "modals.icsNoteCreation.folderLabel": null, + "modals.icsNoteCreation.folderDesc": null, + "modals.icsNoteCreation.folderPlaceholder": null, + "modals.icsNoteCreation.createButton": null, + "modals.icsNoteCreation.startLabel": null, + "modals.icsNoteCreation.endLabel": null, + "modals.icsNoteCreation.locationLabel": null, + "modals.icsNoteCreation.calendarLabel": null, + "modals.icsNoteCreation.useTemplateLabel": null, + "modals.icsNoteCreation.useTemplateDesc": null, + "modals.icsNoteCreation.templatePathLabel": null, + "modals.icsNoteCreation.templatePathDesc": null, + "modals.icsNoteCreation.templatePathPlaceholder": null, "modals.task.titlePlaceholder": { "source": "c8196f1d1039c2fb290add52ee990c571173d6f1", "translation": "0e65840f941f2c5e030cf553e4e5a3cc315fe73d" @@ -21811,22 +24249,70 @@ "source": "22d200f8670dbdb3e253a90eee5098477c95c23d", "translation": "22d200f8670dbdb3e253a90eee5098477c95c23d" }, - "modals.task.dependencies.blockedBy": null, - "modals.task.dependencies.blocking": null, - "modals.task.dependencies.placeholder": null, - "modals.task.dependencies.addTaskButton": null, - "modals.task.dependencies.selectTaskTooltip": null, - "modals.task.dependencies.removeTaskTooltip": null, - "modals.task.organization.projects": null, - "modals.task.organization.subtasks": null, - "modals.task.organization.addToProject": null, - "modals.task.organization.addToProjectButton": null, - "modals.task.organization.addSubtasks": null, - "modals.task.organization.addSubtasksButton": null, - "modals.task.organization.addSubtasksTooltip": null, - "modals.task.organization.removeSubtaskTooltip": null, - "modals.task.organization.notices.noEligibleSubtasks": null, - "modals.task.organization.notices.subtaskSelectFailed": null, + "modals.task.dependencies.blockedBy": { + "source": "ea05d7701157b2371f01467a3a25cd6e3a5bbefd", + "translation": "62ab57415c6659f2bbc639631ca37eca062e583b" + }, + "modals.task.dependencies.blocking": { + "source": "d785c0d4b3b9c24878b62f64a7bcf78e9506ab27", + "translation": "1a2fe6fc48859372352cc38a1e3be6d2ee96f4dd" + }, + "modals.task.dependencies.placeholder": { + "source": "67c2a027f7b139a8b9103081eb4fb418e135cd38", + "translation": "e0dd7b3c859584e950f686781a00a66187bb5656" + }, + "modals.task.dependencies.addTaskButton": { + "source": "24700e60fedcf00a741c5adb1d9f15aee05f95d8", + "translation": "c4ceb61be3910ae46fc82c81d0749db6a6eb049b" + }, + "modals.task.dependencies.selectTaskTooltip": { + "source": "752b3be46866220ce17567bede45bdac374d4a4f", + "translation": "60a78f87905b43c27448e17dc886a16553291c62" + }, + "modals.task.dependencies.removeTaskTooltip": { + "source": "5be1bc9e1837b131abac53534235a44b4bca541e", + "translation": "d8851a8ef576d91cef7e1b6e0403e9fe086f5038" + }, + "modals.task.organization.projects": { + "source": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "translation": "598ab78312d81dc734208e1af4111acd9de08fac" + }, + "modals.task.organization.subtasks": { + "source": "173312c6e2592de729610a4d319877c9aa8d8b67", + "translation": "d64e0fd189ee7ab1f5811090b8ee22381d250c38" + }, + "modals.task.organization.addToProject": { + "source": "85be7d2ce90b02bd410c4deb918f46e112efd677", + "translation": "ac0604060478403a3331111d70a9b706f2ad3613" + }, + "modals.task.organization.addToProjectButton": { + "source": "85be7d2ce90b02bd410c4deb918f46e112efd677", + "translation": "ac0604060478403a3331111d70a9b706f2ad3613" + }, + "modals.task.organization.addSubtasks": { + "source": "15f2a584071a1fe7796c37fc0ea6b5164dd5dda6", + "translation": "a6211bd42b9990cf33a504589be33b353b85d057" + }, + "modals.task.organization.addSubtasksButton": { + "source": "65b9d7a6f28a02d5a60ab0005804c73e137d14b6", + "translation": "a6211bd42b9990cf33a504589be33b353b85d057" + }, + "modals.task.organization.addSubtasksTooltip": { + "source": "1a875945612b63d144cb3cf02c792a38443378e1", + "translation": "163daaa0688fb0e66c270dd108d5ca5e8a17ce4b" + }, + "modals.task.organization.removeSubtaskTooltip": { + "source": "d6acf378b038ad0b4b130817b370fb9dba31caef", + "translation": "c65e46611af6a5924eb6612b97d2fa85e19614fb" + }, + "modals.task.organization.notices.noEligibleSubtasks": { + "source": "bce7ca1d7ce5603179f86b83b9074a4aa27de835", + "translation": "1ea18f4603267b75d7acd7e7dcae8efe45617ccf" + }, + "modals.task.organization.notices.subtaskSelectFailed": { + "source": "333c06c796628bc21ecdaa6da4556bbe343c2284", + "translation": "670e3f9a1ec5dd226c41ede3f0c270ecfe97c77b" + }, "modals.task.customFieldsLabel": { "source": "143b179529aecd0bdc5aa86599fe60057b83d32b", "translation": "f98bcee411bb492921551ff3e6d1dd449ecfe287" @@ -21979,14 +24465,38 @@ "source": "0fe4ddf98d535f0b7e919aec9630254b1d2ad167", "translation": "0fe4ddf98d535f0b7e919aec9630254b1d2ad167" }, - "modals.taskSelector.title": null, - "modals.taskSelector.placeholder": null, - "modals.taskSelector.instructions.navigate": null, - "modals.taskSelector.instructions.select": null, - "modals.taskSelector.instructions.dismiss": null, - "modals.taskSelector.notices.noteNotFound": null, - "modals.taskSelector.dueDate.overdue": null, - "modals.taskSelector.dueDate.today": null, + "modals.taskSelector.title": { + "source": "957bbd1116cdb7c59e3f7649b8bc2c2e8ed3de54", + "translation": "79c399b2c86da79d4f25556f8230ce69a9f44e18" + }, + "modals.taskSelector.placeholder": { + "source": "72bbd8a758aaf0c92b3e7a6d22b962077db3b6ff", + "translation": "217e529d3049bfd2804a2fb68f2921af017ffa84" + }, + "modals.taskSelector.instructions.navigate": { + "source": "130c10ed2c60f33a0f4416b6b7412b9bd11649ce", + "translation": "9a97fc3ae6bdec96fb5d6372aa6f03e27608f8df" + }, + "modals.taskSelector.instructions.select": { + "source": "e4e5b8e792f7971958b92028636ff584167bb638", + "translation": "b9fa67abcaf9ed785a3ddc735b519548caed9869" + }, + "modals.taskSelector.instructions.dismiss": { + "source": "6688c3f3833719827c18453d8e6d7eecbda657ff", + "translation": "269b0f92e460f3dd51ddf582098d0a998d525974" + }, + "modals.taskSelector.notices.noteNotFound": { + "source": "c1508711476a6e33215c7e7a3eaee01b7b1b90f9", + "translation": "7e7f383f6f20b5d8bccd6e1a26e536ba7a69f747" + }, + "modals.taskSelector.dueDate.overdue": { + "source": "7980fcc0ec0fb23d3b8bd43a1ce5c87f5d868622", + "translation": "65f9c1e494e922829c05bb2e3557586926ee15f6" + }, + "modals.taskSelector.dueDate.today": { + "source": "5c1fc193ed4468897cf177a7de9cf77e4a673853", + "translation": "ca48f4d30525cffa952c91c0f7252b746c92af98" + }, "modals.taskCreation.title": { "source": "f1f1450ff80aeab91cb0853329e2b454904866e2", "translation": "b97535ef518e4c84b8ad1bc5bbf98bc39821f03f" @@ -22023,7 +24533,10 @@ "source": "d95ef5460dda68f0b2f23b2168ec04d567436991", "translation": "61f60a977c0ee8566a6531f41ba47652fb6aefd4" }, - "modals.taskCreation.notices.blockingUnresolved": null, + "modals.taskCreation.notices.blockingUnresolved": { + "source": "545b04083e38f5969b9605a0ac51686b3124d5c8", + "translation": "e83f6a7d2551d6c00aa8293b893de9e9dfa618d7" + }, "modals.taskEdit.title": { "source": "8a4d4e6eb9a367d616b8a4cbfa2792068482e884", "translation": "2f764f11562e8c595ca2dadff6ffa138b40bdd18" @@ -22076,8 +24589,14 @@ "source": "fed2485c8e57184fdccdbbe4728bea5eb29e61e8", "translation": "c594a20859bba05f7af4f83f0d21ef4e44f25d1a" }, - "modals.taskEdit.notices.dependenciesUpdateSuccess": null, - "modals.taskEdit.notices.blockingUnresolved": null, + "modals.taskEdit.notices.dependenciesUpdateSuccess": { + "source": "69065c1c9e58bc4eae0501893c63426389497b54", + "translation": "d684f5dbfcce7141400a695d121b99303b63267e" + }, + "modals.taskEdit.notices.blockingUnresolved": { + "source": "545b04083e38f5969b9605a0ac51686b3124d5c8", + "translation": "e83f6a7d2551d6c00aa8293b893de9e9dfa618d7" + }, "modals.taskEdit.notices.fileMissing": { "source": "596fc23c289a0b102027e30e03f9da21180f9e3c", "translation": "d97b02676eb5f6100b3f8b8db2b07d8df6e79dbf" @@ -22326,33 +24845,114 @@ "source": "e3b84e89bc68a5c8f2e36e22ee9857002c4a2545", "translation": "1d6dd7e4008faf0ab81f38a900e4a311ca5db621" }, - "modals.timeEntryEditor.title": null, - "modals.timeEntryEditor.addEntry": null, - "modals.timeEntryEditor.noEntries": null, - "modals.timeEntryEditor.deleteEntry": null, - "modals.timeEntryEditor.startTime": null, - "modals.timeEntryEditor.endTime": null, - "modals.timeEntryEditor.duration": null, - "modals.timeEntryEditor.durationDesc": null, - "modals.timeEntryEditor.durationPlaceholder": null, - "modals.timeEntryEditor.description": null, - "modals.timeEntryEditor.descriptionPlaceholder": null, - "modals.timeEntryEditor.calculatedDuration": null, - "modals.timeEntryEditor.totalTime": null, - "modals.timeEntryEditor.totalMinutes": null, - "modals.timeEntryEditor.saved": null, - "modals.timeEntryEditor.saveFailed": null, - "modals.timeEntryEditor.openFailed": null, - "modals.timeEntryEditor.noTasksWithEntries": null, - "modals.timeEntryEditor.validation.missingStartTime": null, - "modals.timeEntryEditor.validation.endBeforeStart": null, - "modals.timeTracking.noTasksAvailable": null, - "modals.timeTracking.started": null, - "modals.timeTracking.startFailed": null, - "modals.timeEntry.mustHaveSpecificTime": null, - "modals.timeEntry.noTasksAvailable": null, - "modals.timeEntry.created": null, - "modals.timeEntry.createFailed": null, + "modals.timeEntryEditor.title": { + "source": "5a583eaa9a1e14bd48dc7a8cc1ab3f8dbeae6d12", + "translation": "6732e891f59ab846780cc526d38fef4f809e170c" + }, + "modals.timeEntryEditor.addEntry": { + "source": "49482cb4584ab3db093588777b7ac7f9dadb6ba5", + "translation": "c967e87d3dc9280c009e943bac2daa078548c893" + }, + "modals.timeEntryEditor.noEntries": { + "source": "56ea4f47bf44cb3e8e420b5479548231f1f68b7b", + "translation": "af971ea2b95a402471f67a0c0315b4536700dc8e" + }, + "modals.timeEntryEditor.deleteEntry": { + "source": "ccaf752b04ea9ccd6299a14c75e6bb065cd392b6", + "translation": "d56c09728752994d3bd006528a3cc2c52b865237" + }, + "modals.timeEntryEditor.startTime": { + "source": "88d8206d586abe4c8e35c8e9adcc649d07c99a1e", + "translation": "1b47ee0e963a3484485e322a44708116b3277411" + }, + "modals.timeEntryEditor.endTime": { + "source": "90525fcfc63aaf7370c341ff277299cd02df3705", + "translation": "2087945c1581ffd904b84cdb8f7be3ce75843424" + }, + "modals.timeEntryEditor.duration": { + "source": "10c3d1ca4b19f76a702335cf54c4ad5e308b9269", + "translation": "0b11d1a679c1a2c755642bbf916ca18511c550e5" + }, + "modals.timeEntryEditor.durationDesc": { + "source": "03f5c59b12a26186f784cc542c31552236d7feca", + "translation": "d10099a7619cb8c7ffe8e45cfa82b38a3b49b837" + }, + "modals.timeEntryEditor.durationPlaceholder": { + "source": "01cdc0c08662f0a248e0a1c3739e7fcfd15bed2a", + "translation": "7b6e357b941ce0bb5d62f53c67005609c91f5689" + }, + "modals.timeEntryEditor.description": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "f6c2c8d0f4629d905c124c8a59694eb1343a2a5a" + }, + "modals.timeEntryEditor.descriptionPlaceholder": { + "source": "89c8239873859b318429811db142d3b8c695b2ac", + "translation": "a35a7ae80b449003216463c3fdc452df76dee4f3" + }, + "modals.timeEntryEditor.calculatedDuration": { + "source": "b7cc42c87dac49b80cf3ab1b6f14860033a61e06", + "translation": "81a747f71df5ff843d0550d7d7226c2b9df90ef0" + }, + "modals.timeEntryEditor.totalTime": { + "source": "042bd2520b3f2b773bdad26dbd7da5faad717454", + "translation": "34dbbd1124cc88039f82a5ab168a7e4aff6fbceb" + }, + "modals.timeEntryEditor.totalMinutes": { + "source": "97ff49bf5909a19e98de6e0fd5db5465acade28e", + "translation": "afc77b18d6079cdeeae83d69920e821cf2f8e4b0" + }, + "modals.timeEntryEditor.saved": { + "source": "4f5b612346e6ff0ccbf9bf1a2bc066b75d492182", + "translation": "798f3e49acac3141b079973730eb706f8c924fc8" + }, + "modals.timeEntryEditor.saveFailed": { + "source": "ee11ad6a60432aedc8b7ffc17a114d7a10d64aa9", + "translation": "9e5403c627d8f07f16461035a8d8c82f9212aea7" + }, + "modals.timeEntryEditor.openFailed": { + "source": "b0e2d1ab7251bb67ffebe49b31ba77ecbb567e83", + "translation": "c731eb2b601d7bcba0330d82f7234028460950b0" + }, + "modals.timeEntryEditor.noTasksWithEntries": { + "source": "634bcd14e86e7416c2c55af84ed5d586529e4c6f", + "translation": "50235041680768e3c5435634d9b6ea3abe72ae60" + }, + "modals.timeEntryEditor.validation.missingStartTime": { + "source": "ece990b264aa1b7aee79dcef46cc950be2ec88d0", + "translation": "8f1de18ae1486f669b05c916788eb088cb1eb8c4" + }, + "modals.timeEntryEditor.validation.endBeforeStart": { + "source": "468339327f19d1060b77fff4957224707e821025", + "translation": "4d7321a1aebd03a48a0b56889ac9be64c8cf5ed5" + }, + "modals.timeTracking.noTasksAvailable": { + "source": "f632e1e836cc6d1d58eee8c6aa178297f73658a4", + "translation": "8c74829498deb8cadfa4b6457984e702bc850816" + }, + "modals.timeTracking.started": { + "source": "6c0a2563cd30cfab8cee8ad540bba85df045de06", + "translation": "44e503e30c1fe4c3e2a4606f391c1ed8a322025e" + }, + "modals.timeTracking.startFailed": { + "source": "c1b914325ad18471661dcc078d2e4111856abffc", + "translation": "01e1e4132fecc357f4707fdbd7c6b22f51c4de49" + }, + "modals.timeEntry.mustHaveSpecificTime": { + "source": "b5e4624ad4a4356677441185f8d75c03831d1965", + "translation": "a80e87979e83ab448ebf26ceaa33e066fa39168f" + }, + "modals.timeEntry.noTasksAvailable": { + "source": "8c8ab856815d4eced441cfd78f8b327a49ad7914", + "translation": "39f9c3e57cf54244f7019dd263737995bd45aff0" + }, + "modals.timeEntry.created": { + "source": "c9c5244ef7123a90bf648150a3c88577a6dd955f", + "translation": "c65fbb34bcd5a38a0ee9110090d1b93b701985a7" + }, + "modals.timeEntry.createFailed": { + "source": "6b01c84eaddf7dd2da3a9f10a1470268926dd944", + "translation": "f1f005c426eabb2a2655b7036c5432784809f48b" + }, "contextMenus.task.status": { "source": "bae7d5be70820ed56467bd9a63744e23b47bd711", "translation": "0a409cee235c7f6064ee84956d3cbb8e45973ca3" @@ -22501,37 +25101,130 @@ "source": "884de27a3c88d610e9f31a8be3ed4e9358ed06f6", "translation": "36503fac82068c946872ad4ceb68725fc16acec8" }, - "contextMenus.task.dependencies.title": null, - "contextMenus.task.dependencies.addBlockedBy": null, - "contextMenus.task.dependencies.addBlockedByTitle": null, - "contextMenus.task.dependencies.addBlocking": null, - "contextMenus.task.dependencies.addBlockingTitle": null, - "contextMenus.task.dependencies.removeBlockedBy": null, - "contextMenus.task.dependencies.removeBlocking": null, - "contextMenus.task.dependencies.inputPlaceholder": null, - "contextMenus.task.dependencies.notices.noEntries": null, - "contextMenus.task.dependencies.notices.blockedByAdded": null, - "contextMenus.task.dependencies.notices.blockedByRemoved": null, - "contextMenus.task.dependencies.notices.blockingAdded": null, - "contextMenus.task.dependencies.notices.blockingRemoved": null, - "contextMenus.task.dependencies.notices.unresolved": null, - "contextMenus.task.dependencies.notices.noEligibleTasks": null, - "contextMenus.task.dependencies.notices.updateFailed": null, - "contextMenus.task.organization.title": null, - "contextMenus.task.organization.projects": null, - "contextMenus.task.organization.addToProject": null, - "contextMenus.task.organization.subtasks": null, - "contextMenus.task.organization.addSubtasks": null, - "contextMenus.task.organization.notices.alreadyInProject": null, - "contextMenus.task.organization.notices.alreadySubtask": null, - "contextMenus.task.organization.notices.addedToProject": null, - "contextMenus.task.organization.notices.addedAsSubtask": null, - "contextMenus.task.organization.notices.addToProjectFailed": null, - "contextMenus.task.organization.notices.addAsSubtaskFailed": null, - "contextMenus.task.organization.notices.projectSelectFailed": null, - "contextMenus.task.organization.notices.subtaskSelectFailed": null, - "contextMenus.task.organization.notices.noEligibleSubtasks": null, - "contextMenus.task.organization.notices.currentTaskNotFound": null, + "contextMenus.task.dependencies.title": { + "source": "0562f32dc56f5c702810cbe010068ddd38dbd69a", + "translation": "8fdc8ba382d56b121744988c29871470272bd46d" + }, + "contextMenus.task.dependencies.addBlockedBy": { + "source": "f597543dba879a9e8140662ffa1f51d8e774e3e8", + "translation": "9032b1330185544e39f1f8fe986ac09bc48fa38f" + }, + "contextMenus.task.dependencies.addBlockedByTitle": { + "source": "d3d38df38d0de13c4d53a7e9cf968474f56d3f84", + "translation": "a92fcfdf2e7dbac7bbff2088ebc95f84c029e501" + }, + "contextMenus.task.dependencies.addBlocking": { + "source": "faeb5dd750b331cf31a798c4248e0af74a96c961", + "translation": "73a54e16eb2dbc883e5378ef807eaf8273c1d47c" + }, + "contextMenus.task.dependencies.addBlockingTitle": { + "source": "5253abdd048b571bc40d69691cc3f82739f0f30c", + "translation": "659a003baf86e9212a047e935f05a48cda96003e" + }, + "contextMenus.task.dependencies.removeBlockedBy": { + "source": "7d38375d41dfda37e2adcdaea68e95312a792312", + "translation": "b768cbde6990b7f26785e755bacc2a11528c5ed6" + }, + "contextMenus.task.dependencies.removeBlocking": { + "source": "29f784e16f2ca0df6d37a9fb6f29c3a186937738", + "translation": "d2dd8230d8c86234ae2e5b1998816d08b436949c" + }, + "contextMenus.task.dependencies.inputPlaceholder": { + "source": "67c2a027f7b139a8b9103081eb4fb418e135cd38", + "translation": "e0dd7b3c859584e950f686781a00a66187bb5656" + }, + "contextMenus.task.dependencies.notices.noEntries": { + "source": "e5145350fdd7dee5b4a532bea740c844b64d938e", + "translation": "445150191ecd094cfed6b5449c7dbacc20e19d60" + }, + "contextMenus.task.dependencies.notices.blockedByAdded": { + "source": "5b40b08d56beaf43181cea5aeb55474c47a3e347", + "translation": "5594f720553cb4cf427d1affff467ca42ff0f2c7" + }, + "contextMenus.task.dependencies.notices.blockedByRemoved": { + "source": "57fad1951282c3f35aa4e286eaadd935155c6c61", + "translation": "629522e83d8705bf6494d823e31f2351efa9f5cb" + }, + "contextMenus.task.dependencies.notices.blockingAdded": { + "source": "6c117c211cb78fa6a74d11cce12bd07b42d773fb", + "translation": "fd7a80dabc2a56644b557662d4fab46ab190d0fc" + }, + "contextMenus.task.dependencies.notices.blockingRemoved": { + "source": "c9a2d7e53f16e772fe7d95a5b364553a1b5da4ce", + "translation": "5b00ed29622e662739567fe89ee3fddb6196eeef" + }, + "contextMenus.task.dependencies.notices.unresolved": { + "source": "545b04083e38f5969b9605a0ac51686b3124d5c8", + "translation": "e83f6a7d2551d6c00aa8293b893de9e9dfa618d7" + }, + "contextMenus.task.dependencies.notices.noEligibleTasks": { + "source": "cbde1bf24f51daea65f8878a2dacd0ed80fd651a", + "translation": "2845eb9d59f90f71d7a09980f89d9cea25f878af" + }, + "contextMenus.task.dependencies.notices.updateFailed": { + "source": "9d6d4726a51b50bb7ae7926ee341d84f79de7442", + "translation": "4dbcd2065d33e166bc10d38d5ba169d64d8866a8" + }, + "contextMenus.task.organization.title": { + "source": "519255ae1f74ffc5ddd29979295c7572f048ad81", + "translation": "48b3756154cf88c10586437807a0798aba842dce" + }, + "contextMenus.task.organization.projects": { + "source": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "translation": "598ab78312d81dc734208e1af4111acd9de08fac" + }, + "contextMenus.task.organization.addToProject": { + "source": "9dd214953c4e6809b5781c1d3e3e02314a5e0b60", + "translation": "be567c5f527920e6d20ac1e491477aefb33d4787" + }, + "contextMenus.task.organization.subtasks": { + "source": "173312c6e2592de729610a4d319877c9aa8d8b67", + "translation": "d64e0fd189ee7ab1f5811090b8ee22381d250c38" + }, + "contextMenus.task.organization.addSubtasks": { + "source": "e3be6d5743bddcf6860ae9b0e3b3195a615a9851", + "translation": "371aa8dfe6154b42260153d3b78249c219594f59" + }, + "contextMenus.task.organization.notices.alreadyInProject": { + "source": "1e29ecb2858c6534f5a0ce04cc31cacd4ae517b9", + "translation": "70fccb87d7cda7dd9ab9fc516d5b2ad17a8f32ae" + }, + "contextMenus.task.organization.notices.alreadySubtask": { + "source": "1ba79408a9d9efc90cc09da294427b361ea47704", + "translation": "f74fd4093ae6fab682b2e6aadef5b93c72ccc666" + }, + "contextMenus.task.organization.notices.addedToProject": { + "source": "16e3e41454eb0bb323fa483247d7bbc8d9f8682c", + "translation": "58f7ccc47339d2bd8d6d10c2672a66459057f303" + }, + "contextMenus.task.organization.notices.addedAsSubtask": { + "source": "58716eb79b04312adc6aff8fe462878ad590a61e", + "translation": "a0a93d96599432454a64e6f22706e374edd4d081" + }, + "contextMenus.task.organization.notices.addToProjectFailed": { + "source": "b33b7412093bbc9bf659f740f2f6a2c195e567fe", + "translation": "cf8f171e7dbd637bed10c2cad662789cb1b598a0" + }, + "contextMenus.task.organization.notices.addAsSubtaskFailed": { + "source": "7e976d9c2e9af1a6b11f181e40d19885d754c690", + "translation": "b1da31b373773a0091ad7b09e5a8aabd83ea6e60" + }, + "contextMenus.task.organization.notices.projectSelectFailed": { + "source": "ce7aecc0fc448d9b71a0fca743cf6a4089b08ec3", + "translation": "03b85d29be3a5f83fcf218014dae2eea488f5e7a" + }, + "contextMenus.task.organization.notices.subtaskSelectFailed": { + "source": "333c06c796628bc21ecdaa6da4556bbe343c2284", + "translation": "670e3f9a1ec5dd226c41ede3f0c270ecfe97c77b" + }, + "contextMenus.task.organization.notices.noEligibleSubtasks": { + "source": "bce7ca1d7ce5603179f86b83b9074a4aa27de835", + "translation": "1ea18f4603267b75d7acd7e7dcae8efe45617ccf" + }, + "contextMenus.task.organization.notices.currentTaskNotFound": { + "source": "08026c9b7c99f5ebba74878389670c6236361b82", + "translation": "e785d058cf1760e19179bdf905766bcbfe4225c0" + }, "contextMenus.task.subtasks.loading": { "source": "df656368163a3d196b63857636b0ee9e2a41273d", "translation": "bbaa7a9197deb3252a5ddc17982410c99d180da5" @@ -23452,11 +26145,35 @@ "source": "848eed0fbd5429f556b2982dec3ea87136e33e44", "translation": "26fff73dfc904d36bd4a195fd03bac87b1c1db4a" }, - "ui.filterBar.group.completedDate": null, + "ui.filterBar.group.completedDate": { + "source": "0089d3b136526c1dfbe0487bc7c3c8ef99812909", + "translation": "c93be1fc42c7428bb0e2b56c2071de1d055cb5cf" + }, + "ui.filterBar.subgroupLabel": null, "ui.filterBar.notices.propertiesMenuFailed": { "source": "e9df8763e0af720e4edcfd8f3bd87af75a69f7a1", "translation": "ff97a46d536253e14b0dd4d164a47fa032a27b2e" }, + "components.dateContextMenu.weekdays": null, + "components.dateContextMenu.clearDate": null, + "components.dateContextMenu.today": null, + "components.dateContextMenu.tomorrow": null, + "components.dateContextMenu.thisWeekend": null, + "components.dateContextMenu.nextWeek": null, + "components.dateContextMenu.nextMonth": null, + "components.dateContextMenu.setDateTime": null, + "components.dateContextMenu.dateLabel": null, + "components.dateContextMenu.timeLabel": null, + "components.subgroupMenuBuilder.none": null, + "components.subgroupMenuBuilder.status": null, + "components.subgroupMenuBuilder.priority": null, + "components.subgroupMenuBuilder.context": null, + "components.subgroupMenuBuilder.project": null, + "components.subgroupMenuBuilder.dueDate": null, + "components.subgroupMenuBuilder.scheduledDate": null, + "components.subgroupMenuBuilder.tags": null, + "components.subgroupMenuBuilder.completedDate": null, + "components.subgroupMenuBuilder.subgroup": null, "components.propertyVisibilityDropdown.coreProperties": { "source": "b3cfb1af6a8f2011725da9badb151b1c72b0e6ec", "translation": "5547ff8f91ea1468c73df95fe41ba7ae215a21a1" @@ -24003,6 +26720,12 @@ "source": "2ab447eb84f59d3b163ca7bae16ff0d20b3ca125", "translation": "20897aeacbb9ac72596f0d79022d8b1e1ee12f7c" }, + "views.agenda.empty.helpText": null, + "views.agenda.contextMenu.showOverdueSection": null, + "views.agenda.contextMenu.showNotes": null, + "views.agenda.contextMenu.calendarSubscriptions": null, + "views.agenda.periods.thisWeek": null, + "views.agenda.tipPrefix": null, "views.taskList.title": { "source": "090ec5f560fc50377fcd95e5cda128e91b276e98", "translation": "2ff08344934d2f5c54e31d9346e380a747f8ac33" @@ -24027,6 +26750,7 @@ "source": "5b7bdb61fdbc48d57b9f43d0e28b7cfd3063fca5", "translation": "3eeb4056fbbc3e0d967e64e905f69ae8b98fdd59" }, + "views.notes.refreshingButton": null, "views.notes.notices.indexingDisabled": { "source": "3e6ccc8839212c37b4152b2193c1369a68dde324", "translation": "7d4dabf5b5f4486b31d54be81e57ee1945cb2860" @@ -24035,6 +26759,9 @@ "source": "9e2f5f8952ae7fb4bf2669ff4c73cee07e32ce53", "translation": "78341311abf182d02e7e632b39bdc62f82d02f97" }, + "views.notes.empty.helpText": null, + "views.notes.loading": null, + "views.notes.refreshButtonAriaLabel": null, "views.miniCalendar.title": { "source": "a3cc5b7724a714d5620c6e9ef5f851c143022178", "translation": "ec807092f4721c0c4f84d6cfe075961fd7a99347" @@ -24239,7 +26966,10 @@ "source": "aa73278ad78de284702c875cbe2d73ccb8f9c5d3", "translation": "e9509356398612ae229f35f7002b841eff235692" }, - "views.basesCalendar.buttonText.listDays": null, + "views.basesCalendar.buttonText.listDays": { + "source": "27491b23f022fd85faf8c467fb04415d0b5d6bed", + "translation": "d1170ff85de8e909034e9b60da437f6b5ddd05aa" + }, "views.basesCalendar.settings.groups.dateNavigation": { "source": "8487a72e02c205a734e6ec6a5684a99576039cb3", "translation": "57bf0f6969699757d18f7b4453086a172f435690" @@ -24260,8 +26990,14 @@ "source": "9b99ca62a8c206aeef3199afeb8c2d6ea70c3c3a", "translation": "033b97980f8cfe564611b9a179dd1d63d41f91ac" }, - "views.basesCalendar.settings.groups.googleCalendars": null, - "views.basesCalendar.settings.groups.microsoftCalendars": null, + "views.basesCalendar.settings.groups.googleCalendars": { + "source": "cfa0f6bb3b4422195fc4abb06c02bca780fce33a", + "translation": "9d7627c4afa50c30b37c6e65ea57fe5e0ae04c8c" + }, + "views.basesCalendar.settings.groups.microsoftCalendars": { + "source": "2edac69ff3c043d662037911af60ea54cc1c3746", + "translation": "c16c20ed4e51086b6d670585eaeffa4cf0b5dd96" + }, "views.basesCalendar.settings.dateNavigation.navigateToDate": { "source": "2a47407705ef9a77de4778c38853a4122e38b1fd", "translation": "a19547af0ba78583a6a456399f0ccd71cf31e442" @@ -24326,7 +27062,10 @@ "source": "1aadcb0d4d3400d00e2ad0a4cffa017ad1fac481", "translation": "8023fa493fbdceefae07500f67148b562ca8a575" }, - "views.basesCalendar.settings.layout.listDayCount": null, + "views.basesCalendar.settings.layout.listDayCount": { + "source": "914d28dbcb8c39a44885ec1b53d4c50180639463", + "translation": "6e81200c3a36653d57e0d056a26c2a20bb542196" + }, "views.basesCalendar.settings.layout.dayStartTime": { "source": "0f668f32458bf870e8823e6dd50a7fcc1dc595c7", "translation": "ad7076c8fea6ae68bb0ce52b47c635c5861d80a7" @@ -24447,6 +27186,8 @@ "source": "e542695cd353d43e646a3d050dc59b189373613c", "translation": "b8215386969932300dc8b6d11d76f9706f9b0b2d" }, + "views.kanban.uncategorized": null, + "views.kanban.noProject": null, "views.kanban.notices.loadFailed": { "source": "9d744b2d44937cda77d20fc3bf2c1fc0242cc3c4", "translation": "ff4962360945dc85e00475b14fcad6a44b0b6f99" @@ -24459,6 +27200,7 @@ "source": "5df51b612bbe4d9afeb184269bb95d764fac5687", "translation": "d89534b85c805f66b8d3d13aeb5ad7c39867f1c5" }, + "views.kanban.columnTitle": null, "views.pomodoro.title": { "source": "212e4618d030e7c987ed2d64d96f3e1dcebbf414", "translation": "00536aca4a23643885ecfe4ffaabea84d92e0d1b" @@ -24699,6 +27441,31 @@ "source": "77f4b7a081b20f78557dd404e14d91b89b52a27c", "translation": "a82231aecd1ee2ec08d32031cf19b6f6a4f2842e" }, + "views.stats.filters.allTasks": null, + "views.stats.filters.activeOnly": null, + "views.stats.filters.completedOnly": null, + "views.stats.refreshButton": null, + "views.stats.timeRanges.allTime": null, + "views.stats.timeRanges.last7Days": null, + "views.stats.timeRanges.last30Days": null, + "views.stats.timeRanges.last90Days": null, + "views.stats.timeRanges.customRange": null, + "views.stats.resetFiltersButton": null, + "views.stats.dateRangeFrom": null, + "views.stats.dateRangeTo": null, + "views.stats.noProject": null, + "views.stats.cards.timeTrackedEstimated": null, + "views.stats.cards.totalTasks": null, + "views.stats.cards.completionRate": null, + "views.stats.cards.activeProjects": null, + "views.stats.cards.avgTimePerTask": null, + "views.stats.labels.tasks": null, + "views.stats.labels.completed": null, + "views.stats.labels.projects": null, + "views.stats.noProjectData": null, + "views.stats.notAvailable": null, + "views.stats.noTasks": null, + "views.stats.loading": null, "views.releaseNotes.title": { "source": "5939771f391859041bc57e5e05b04235b1ef8ee7", "translation": "92e2d6dcf90925e3073f30916467f8d01ead921a" @@ -24911,7 +27678,10 @@ "source": "a8ea1773561dda5137ea4680450999490130cbc2", "translation": "a5f1aff33318b552203531097b4601656f07dff0" }, - "settings.features.dataStorage.description": null, + "settings.features.dataStorage.description": { + "source": "03b56efa27cfb265caa98aee50bd30525a4b15f9", + "translation": "9b7510794c04f665a90d7c850f4a80ede08c85d9" + }, "settings.features.dataStorage.dailyNotes": { "source": "35a87462db1b9c1e553a3118185225d378be3e27", "translation": "1728eb98fab798fedcd65c9b92e2d65cbdc99448" @@ -24920,7 +27690,10 @@ "source": "753a22b2eb617204efee4644795034b8ace1ee14", "translation": "ee3c35f31147fec923ebe20dd899c59a13f25384" }, - "settings.features.notifications.description": null, + "settings.features.notifications.description": { + "source": "4b200f4d3e2a6004f5d85212e238982275eaa7a5", + "translation": "e354c3b6e4fa803fd4c2962d7f9950166d3878ef" + }, "settings.features.notifications.enableName": { "source": "da3967d004ec4b3493b04e53997991851767517e", "translation": "468e167ec35ce215d8639b94dc260bcc77e120c6" @@ -25025,17 +27798,26 @@ "source": "47a90976a23af061fed8b191748a031b1d7218a6", "translation": "62751ef0553e888c9e2d9a00606bf1f95d2789e1" }, - "settings.features.performance.description": null, + "settings.features.performance.description": { + "source": "f3da7e226b33106351e5cdb02691ea97d130bdf4", + "translation": "ff90c65ddab84a78234e4fff62190b6234a24ae7" + }, "settings.features.timeTrackingSection.header": { "source": "edac2c002638327299df79bbdf20f54bf331737c", "translation": "2f259234c1d65dc11f358672e1d07b75bc192e31" }, - "settings.features.timeTrackingSection.description": null, + "settings.features.timeTrackingSection.description": { + "source": "63187a98d5058a4f35fceb7272fdc082d047be7a", + "translation": "8c277df3397f9bf062109245e1295363b772c0a6" + }, "settings.features.recurringSection.header": { "source": "cd5f29ad0ff529fa95f130e62ace80fa836a4550", "translation": "2790d0e72f91ee2a7b5a2e462de03080d55bfa58" }, - "settings.features.recurringSection.description": null, + "settings.features.recurringSection.description": { + "source": "1d5d9e14e6b6541bc31c38623049716e8c4b7e73", + "translation": "9efcdfe19b9a45cc1e41c0488674db792f611516" + }, "settings.defaults.header.basicDefaults": { "source": "83fdac0f6e43ee01edc1eb61b9e6ed821c742942", "translation": "d65bceeb285486dceceb4ff7b9fb7739b0e755d9" @@ -25417,7 +28199,7 @@ "translation": "18fbb16967e868c517c78fd4ab691cfada2858f0" }, "settings.general.taskStorage.archiveFolder.description": { - "source": "585d1d1880702b21f0351cd59009545b68253772", + "source": "525cd580be814f568406dfa1750369aeaee8da8d", "translation": "f8cbd07a359bcb2544daeca7c122d4f1ce1e4f1f" }, "settings.general.taskIdentification.header": { @@ -25452,8 +28234,14 @@ "source": "80122e53d8a3a7eb2c2ac8e352efba551330d1c5", "translation": "7b3f870af1eabaee59530f9a87ef108bbeb9922c" }, - "settings.general.taskIdentification.hideIdentifyingTags.name": null, - "settings.general.taskIdentification.hideIdentifyingTags.description": null, + "settings.general.taskIdentification.hideIdentifyingTags.name": { + "source": "446bbfd987521d42035442c4652693d996565cf8", + "translation": "3d2fd52c9d0c9d2125249904692d3d5d6e99f9d7" + }, + "settings.general.taskIdentification.hideIdentifyingTags.description": { + "source": "a38be9ef6457fd38857917cbbc387d396cd2e60a", + "translation": "d366a1986fd2dbcf41dbe7c9b0b1642918641957" + }, "settings.general.taskIdentification.taskProperty.name": { "source": "fb00b60c99acd4529404e3ef8bd77017d9332da6", "translation": "529e6550b3ee48e9b545e227e3034e37be04dc7f" @@ -25482,10 +28270,22 @@ "source": "4ff367979f5bdb70f928733dda339ca81435c4b1", "translation": "4a6c60aef4be1329cd69b6137e9bdc046fda96e6" }, - "settings.general.frontmatter.header": null, - "settings.general.frontmatter.description": null, - "settings.general.frontmatter.useMarkdownLinks.name": null, - "settings.general.frontmatter.useMarkdownLinks.description": null, + "settings.general.frontmatter.header": { + "source": "49415878931e5edbbf6d49465647a990f04b12ae", + "translation": "49415878931e5edbbf6d49465647a990f04b12ae" + }, + "settings.general.frontmatter.description": { + "source": "24a51bb38d3857a7e0d9df7130ffff10bdd3b386", + "translation": "aa3576cbacafdda4dfa88af8338ae35084cfd973" + }, + "settings.general.frontmatter.useMarkdownLinks.name": { + "source": "345e6cf9ce20ff8a3ac2966ceb53f8a83bdbd9ba", + "translation": "e2d66e0219c60a186ee2820eac202ae8c5b661c3" + }, + "settings.general.frontmatter.useMarkdownLinks.description": { + "source": "f56ef5842cbd725ff74500d96e3d40e0046e3693", + "translation": "ff44ddb08d4c7d7523007422d6138bf0c8db6739" + }, "settings.general.taskInteraction.header": { "source": "a8194c053a4f989c874659b7d4a0e99f5a4a3df5", "translation": "83a4ef0c5d6972fcc165e451ce42dc6c996f1a85" @@ -25846,7 +28646,10 @@ "source": "c0a3c74ff6dabed59f7134dbf7ce64223bc13eba", "translation": "ee65a18b00d3bfbde89bd3403a90166ce8cd13f3" }, - "settings.taskProperties.fieldMapping.fields.blockedBy": null, + "settings.taskProperties.fieldMapping.fields.blockedBy": { + "source": "ea05d7701157b2371f01467a3a25cd6e3a5bbefd", + "translation": "e6508771dd9ebbd8bcdaa21766de3f2c5cd46ced" + }, "settings.taskProperties.fieldMapping.fields.pomodoros": { "source": "0e0dd790cfe241eb919f53037668418d757bc0cb", "translation": "00536aca4a23643885ecfe4ffaabea84d92e0d1b" @@ -25943,8 +28746,14 @@ "source": "5ac477c267332c84ac6f5fe5509d523e08a4af94", "translation": "eba675fad82b57bcf437709ef3391f8239b85215" }, - "settings.taskProperties.customUserFields.autosuggestFilters.header": null, - "settings.taskProperties.customUserFields.autosuggestFilters.description": null, + "settings.taskProperties.customUserFields.autosuggestFilters.header": { + "source": "54bbd5ce9872e3040735f334d7a52a22dfd80868", + "translation": "6e26b072a502eca30a94476b2316419cc3ef0e0b" + }, + "settings.taskProperties.customUserFields.autosuggestFilters.description": { + "source": "61290f286c6963dbe266b1b6b20a4c3f29c78d66", + "translation": "2ad7b930566ee7d7065ea34005954711ff85ed34" + }, "settings.appearance.taskCards.header": { "source": "08836d307ea5b1614f69962e1b9d36f243baddc5", "translation": "529b26b313f5f06e0757d38c9f04b72c5150d4bc" @@ -26341,9 +29150,18 @@ "source": "62646b00e3d5abef4cb8139c5f21bf0907f360d1", "translation": "62646b00e3d5abef4cb8139c5f21bf0907f360d1" }, - "settings.appearance.timeSettings.eventMinHeight.name": null, - "settings.appearance.timeSettings.eventMinHeight.description": null, - "settings.appearance.timeSettings.eventMinHeight.placeholder": null, + "settings.appearance.timeSettings.eventMinHeight.name": { + "source": "67a8232d69bec32baaf18aa6e9ca9fe3c000ab4d", + "translation": "78ddf483e98cf9e12ba380fce5644b061a6c0c9b" + }, + "settings.appearance.timeSettings.eventMinHeight.description": { + "source": "abdf220549b2c4c45637d08889a2fce81ee56864", + "translation": "757df96a19c6d9cbff77c7f72f1b030f2e436ae1" + }, + "settings.appearance.timeSettings.eventMinHeight.placeholder": { + "source": "f1abd670358e036c31296e66b3b66c382ac00812", + "translation": "f1abd670358e036c31296e66b3b66c382ac00812" + }, "settings.appearance.uiElements.header": { "source": "828b5505ff4402471cfbb7fe32a6613ec912c004", "translation": "75785beb2b36517ada96d92b5cbaa63f07e474ff" @@ -26384,8 +29202,14 @@ "source": "5f9fded041bcc55ad42199dd16555cc3808fda38", "translation": "4d1487cc5be42c1acc9f7cc41159e450cd966a61" }, - "settings.appearance.uiElements.showTaskCardInNote.name": null, - "settings.appearance.uiElements.showTaskCardInNote.description": null, + "settings.appearance.uiElements.showTaskCardInNote.name": { + "source": "0b1f1ec16383521fcfd6d02f3e80eb6a207b3c49", + "translation": "64701c5ecb3819440ece16c2e4ca017b49fe6139" + }, + "settings.appearance.uiElements.showTaskCardInNote.description": { + "source": "b4aa118727222f93f2d6332eb132086fe482e087", + "translation": "b7704002ef6c92cf97375b47db5de4f7b3e3dccb" + }, "settings.appearance.uiElements.showExpandableSubtasks.name": { "source": "ae273c967a5801820e4f174610708fc4d1859951", "translation": "f6d2f00cca1ba469670fe7f2d6151abe4eff9239" @@ -27490,6 +30314,25 @@ "source": "91fa8ddb011b35634762b9184731cd9d6893b139", "translation": "88288bd1c8c2c7d132cb4142f35f1f66864db850" }, + "notices.icsNoteCreatedSuccess": null, + "notices.icsCreationModalOpenFailed": null, + "notices.icsNoteLinkSuccess": null, + "notices.icsTaskCreatedSuccess": null, + "notices.icsRelatedItemsRefreshed": null, + "notices.icsFileNotFound": null, + "notices.icsFileOpenFailed": null, + "notices.timeblockAttachmentExists": null, + "notices.timeblockAttachmentAdded": null, + "notices.timeblockAttachmentRemoved": null, + "notices.timeblockFileTypeNotSupported": null, + "notices.timeblockTitleRequired": null, + "notices.timeblockUpdatedSuccess": null, + "notices.timeblockUpdateFailed": null, + "notices.timeblockDeletedSuccess": null, + "notices.timeblockDeleteFailed": null, + "notices.timeblockRequiredFieldsMissing": null, + "notices.agendaLoadingFailed": null, + "notices.statsLoadingFailed": null, "commands.openCalendarView": { "source": "d7dce352d3bf5b12479770b86495263f84275492", "translation": "d0a77d204fd475eecb26b93a0dd2069a177dd85b" @@ -27578,8 +30421,100 @@ "source": "04c2072af97cf70c22fbf9efa9b62eb2574d23d6", "translation": "060c1aa179717a8ebedce8eeae250cf12307291d" }, - "commands.startTimeTrackingWithSelector": null, - "commands.editTimeEntries": null, + "commands.startTimeTrackingWithSelector": { + "source": "32970116a0d7a74dadbf82a0aa2aa8117278d601", + "translation": "03b858a180310d895a6c6de42c41360ac5fecd5f" + }, + "commands.editTimeEntries": { + "source": "b8c5b41ec8f55348f7ae4acf087d62edaf588a0c", + "translation": "e38399a4d8b3375b0306f3eda7df6a1721c79323" + }, + "modals.deviceCode.title": null, + "modals.deviceCode.instructions.intro": null, + "modals.deviceCode.steps.open": null, + "modals.deviceCode.steps.inBrowser": null, + "modals.deviceCode.steps.enterCode": null, + "modals.deviceCode.steps.signIn": null, + "modals.deviceCode.steps.returnToObsidian": null, + "modals.deviceCode.codeLabel": null, + "modals.deviceCode.copyCodeAriaLabel": null, + "modals.deviceCode.waitingForAuthorization": null, + "modals.deviceCode.openBrowserButton": null, + "modals.deviceCode.cancelButton": null, + "modals.deviceCode.expiresMinutesSeconds": null, + "modals.deviceCode.expiresSeconds": null, + "modals.icsEventInfo.calendarEventHeading": null, + "modals.icsEventInfo.titleLabel": null, + "modals.icsEventInfo.calendarLabel": null, + "modals.icsEventInfo.dateTimeLabel": null, + "modals.icsEventInfo.locationLabel": null, + "modals.icsEventInfo.descriptionLabel": null, + "modals.icsEventInfo.urlLabel": null, + "modals.icsEventInfo.relatedNotesHeading": null, + "modals.icsEventInfo.noRelatedItems": null, + "modals.icsEventInfo.typeTask": null, + "modals.icsEventInfo.typeNote": null, + "modals.icsEventInfo.actionsHeading": null, + "modals.icsEventInfo.createFromEventLabel": null, + "modals.icsEventInfo.createFromEventDesc": null, + "modals.icsEventInfo.linkExistingLabel": null, + "modals.icsEventInfo.linkExistingDesc": null, + "modals.timeblockInfo.editHeading": null, + "modals.timeblockInfo.dateTimeLabel": null, + "modals.timeblockInfo.titleLabel": null, + "modals.timeblockInfo.titleDesc": null, + "modals.timeblockInfo.titlePlaceholder": null, + "modals.timeblockInfo.descriptionLabel": null, + "modals.timeblockInfo.descriptionDesc": null, + "modals.timeblockInfo.descriptionPlaceholder": null, + "modals.timeblockInfo.colorLabel": null, + "modals.timeblockInfo.colorDesc": null, + "modals.timeblockInfo.colorPlaceholder": null, + "modals.timeblockInfo.attachmentsLabel": null, + "modals.timeblockInfo.attachmentsDesc": null, + "modals.timeblockInfo.addAttachmentButton": null, + "modals.timeblockInfo.addAttachmentTooltip": null, + "modals.timeblockInfo.deleteButton": null, + "modals.timeblockInfo.saveButton": null, + "modals.timeblockInfo.deleteConfirmationTitle": null, + "modals.timeblockCreation.heading": null, + "modals.timeblockCreation.dateLabel": null, + "modals.timeblockCreation.titleLabel": null, + "modals.timeblockCreation.titleDesc": null, + "modals.timeblockCreation.titlePlaceholder": null, + "modals.timeblockCreation.startTimeLabel": null, + "modals.timeblockCreation.startTimeDesc": null, + "modals.timeblockCreation.startTimePlaceholder": null, + "modals.timeblockCreation.endTimeLabel": null, + "modals.timeblockCreation.endTimeDesc": null, + "modals.timeblockCreation.endTimePlaceholder": null, + "modals.timeblockCreation.descriptionLabel": null, + "modals.timeblockCreation.descriptionDesc": null, + "modals.timeblockCreation.descriptionPlaceholder": null, + "modals.timeblockCreation.colorLabel": null, + "modals.timeblockCreation.colorDesc": null, + "modals.timeblockCreation.colorPlaceholder": null, + "modals.timeblockCreation.attachmentsLabel": null, + "modals.timeblockCreation.attachmentsDesc": null, + "modals.timeblockCreation.addAttachmentButton": null, + "modals.timeblockCreation.addAttachmentTooltip": null, + "modals.timeblockCreation.createButton": null, + "modals.icsNoteCreation.heading": null, + "modals.icsNoteCreation.titleLabel": null, + "modals.icsNoteCreation.titleDesc": null, + "modals.icsNoteCreation.folderLabel": null, + "modals.icsNoteCreation.folderDesc": null, + "modals.icsNoteCreation.folderPlaceholder": null, + "modals.icsNoteCreation.createButton": null, + "modals.icsNoteCreation.startLabel": null, + "modals.icsNoteCreation.endLabel": null, + "modals.icsNoteCreation.locationLabel": null, + "modals.icsNoteCreation.calendarLabel": null, + "modals.icsNoteCreation.useTemplateLabel": null, + "modals.icsNoteCreation.useTemplateDesc": null, + "modals.icsNoteCreation.templatePathLabel": null, + "modals.icsNoteCreation.templatePathDesc": null, + "modals.icsNoteCreation.templatePathPlaceholder": null, "modals.task.titlePlaceholder": { "source": "c8196f1d1039c2fb290add52ee990c571173d6f1", "translation": "fb99b9f5be8916e4a7b038e3d1d9d9087f8a5653" @@ -27664,16 +30599,46 @@ "source": "5be1bc9e1837b131abac53534235a44b4bca541e", "translation": "baf47b08bc84a7f2983bc31b1288c23ccc06f11a" }, - "modals.task.organization.projects": null, - "modals.task.organization.subtasks": null, - "modals.task.organization.addToProject": null, - "modals.task.organization.addToProjectButton": null, - "modals.task.organization.addSubtasks": null, - "modals.task.organization.addSubtasksButton": null, - "modals.task.organization.addSubtasksTooltip": null, - "modals.task.organization.removeSubtaskTooltip": null, - "modals.task.organization.notices.noEligibleSubtasks": null, - "modals.task.organization.notices.subtaskSelectFailed": null, + "modals.task.organization.projects": { + "source": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "translation": "b90d9f72b44e086831c38646ac95961cc7d79c64" + }, + "modals.task.organization.subtasks": { + "source": "173312c6e2592de729610a4d319877c9aa8d8b67", + "translation": "71f53f28abf4fff6daef647a06377a22ac2b8e60" + }, + "modals.task.organization.addToProject": { + "source": "85be7d2ce90b02bd410c4deb918f46e112efd677", + "translation": "a72f6d7a533eb3cdcba48bb853687052e6463997" + }, + "modals.task.organization.addToProjectButton": { + "source": "85be7d2ce90b02bd410c4deb918f46e112efd677", + "translation": "a72f6d7a533eb3cdcba48bb853687052e6463997" + }, + "modals.task.organization.addSubtasks": { + "source": "15f2a584071a1fe7796c37fc0ea6b5164dd5dda6", + "translation": "8e07600d507e4c9ec517bea2f464209ac433d4c4" + }, + "modals.task.organization.addSubtasksButton": { + "source": "65b9d7a6f28a02d5a60ab0005804c73e137d14b6", + "translation": "9a712f6f7c413b73006dcf6c67caec9aff96236d" + }, + "modals.task.organization.addSubtasksTooltip": { + "source": "1a875945612b63d144cb3cf02c792a38443378e1", + "translation": "194876a118e10be826e8d34aae1b88f0fe893bd7" + }, + "modals.task.organization.removeSubtaskTooltip": { + "source": "d6acf378b038ad0b4b130817b370fb9dba31caef", + "translation": "e9f7eaef87c23f1f90ef7c55e1e046966cb1e8cd" + }, + "modals.task.organization.notices.noEligibleSubtasks": { + "source": "bce7ca1d7ce5603179f86b83b9074a4aa27de835", + "translation": "b5afd9994d807531fe1cc116c8f75eb398fb9579" + }, + "modals.task.organization.notices.subtaskSelectFailed": { + "source": "333c06c796628bc21ecdaa6da4556bbe343c2284", + "translation": "8e49b42974f02b6fa3fa3f6b29eccc235ab69c68" + }, "modals.task.customFieldsLabel": { "source": "143b179529aecd0bdc5aa86599fe60057b83d32b", "translation": "2808dd841af40296a1083d396549e6c47a7ac4d1" @@ -27826,14 +30791,38 @@ "source": "0fe4ddf98d535f0b7e919aec9630254b1d2ad167", "translation": "0fe4ddf98d535f0b7e919aec9630254b1d2ad167" }, - "modals.taskSelector.title": null, - "modals.taskSelector.placeholder": null, - "modals.taskSelector.instructions.navigate": null, - "modals.taskSelector.instructions.select": null, - "modals.taskSelector.instructions.dismiss": null, - "modals.taskSelector.notices.noteNotFound": null, - "modals.taskSelector.dueDate.overdue": null, - "modals.taskSelector.dueDate.today": null, + "modals.taskSelector.title": { + "source": "957bbd1116cdb7c59e3f7649b8bc2c2e8ed3de54", + "translation": "827344c843a29108fa93038d46817e0725c92822" + }, + "modals.taskSelector.placeholder": { + "source": "72bbd8a758aaf0c92b3e7a6d22b962077db3b6ff", + "translation": "cb2dd0368c39953bee9128a2687a1e581b142edc" + }, + "modals.taskSelector.instructions.navigate": { + "source": "130c10ed2c60f33a0f4416b6b7412b9bd11649ce", + "translation": "0fea535cef68e5a421810a37af3955fb9dd59461" + }, + "modals.taskSelector.instructions.select": { + "source": "e4e5b8e792f7971958b92028636ff584167bb638", + "translation": "cb0bd61b3a85286847fd884a881c28e67978ad4c" + }, + "modals.taskSelector.instructions.dismiss": { + "source": "6688c3f3833719827c18453d8e6d7eecbda657ff", + "translation": "e30004d078714668a9ade94101813f8c571d8c6e" + }, + "modals.taskSelector.notices.noteNotFound": { + "source": "c1508711476a6e33215c7e7a3eaee01b7b1b90f9", + "translation": "896fcf417732a48587aaec167b6de852e59777aa" + }, + "modals.taskSelector.dueDate.overdue": { + "source": "7980fcc0ec0fb23d3b8bd43a1ce5c87f5d868622", + "translation": "03821263d02689791d8127f6cdfc175abf740e6c" + }, + "modals.taskSelector.dueDate.today": { + "source": "5c1fc193ed4468897cf177a7de9cf77e4a673853", + "translation": "919f138de18de91da42e2764cf1582a006f00a7d" + }, "modals.taskCreation.title": { "source": "f1f1450ff80aeab91cb0853329e2b454904866e2", "translation": "c53a9f0c094738447a069a768a690b9a5d3d4da7" @@ -28182,33 +31171,114 @@ "source": "e3b84e89bc68a5c8f2e36e22ee9857002c4a2545", "translation": "9d86119b219ea2949c06eae6a3f294e251790da7" }, - "modals.timeEntryEditor.title": null, - "modals.timeEntryEditor.addEntry": null, - "modals.timeEntryEditor.noEntries": null, - "modals.timeEntryEditor.deleteEntry": null, - "modals.timeEntryEditor.startTime": null, - "modals.timeEntryEditor.endTime": null, - "modals.timeEntryEditor.duration": null, - "modals.timeEntryEditor.durationDesc": null, - "modals.timeEntryEditor.durationPlaceholder": null, - "modals.timeEntryEditor.description": null, - "modals.timeEntryEditor.descriptionPlaceholder": null, - "modals.timeEntryEditor.calculatedDuration": null, - "modals.timeEntryEditor.totalTime": null, - "modals.timeEntryEditor.totalMinutes": null, - "modals.timeEntryEditor.saved": null, - "modals.timeEntryEditor.saveFailed": null, - "modals.timeEntryEditor.openFailed": null, - "modals.timeEntryEditor.noTasksWithEntries": null, - "modals.timeEntryEditor.validation.missingStartTime": null, - "modals.timeEntryEditor.validation.endBeforeStart": null, - "modals.timeTracking.noTasksAvailable": null, - "modals.timeTracking.started": null, - "modals.timeTracking.startFailed": null, - "modals.timeEntry.mustHaveSpecificTime": null, - "modals.timeEntry.noTasksAvailable": null, - "modals.timeEntry.created": null, - "modals.timeEntry.createFailed": null, + "modals.timeEntryEditor.title": { + "source": "5a583eaa9a1e14bd48dc7a8cc1ab3f8dbeae6d12", + "translation": "dfb640af41c412286544206d17bb8387cfefe0d9" + }, + "modals.timeEntryEditor.addEntry": { + "source": "49482cb4584ab3db093588777b7ac7f9dadb6ba5", + "translation": "c2bbfec93b9b9139a4c9813b5111b3d8b4484f75" + }, + "modals.timeEntryEditor.noEntries": { + "source": "56ea4f47bf44cb3e8e420b5479548231f1f68b7b", + "translation": "e31122d99f4a3a32bf6b09db6fdf6f54859aea88" + }, + "modals.timeEntryEditor.deleteEntry": { + "source": "ccaf752b04ea9ccd6299a14c75e6bb065cd392b6", + "translation": "c87aab7e150887c267e794bcb83341a51b569706" + }, + "modals.timeEntryEditor.startTime": { + "source": "88d8206d586abe4c8e35c8e9adcc649d07c99a1e", + "translation": "d0ab03c14d1fd07208ff3731c427e5e79c54f936" + }, + "modals.timeEntryEditor.endTime": { + "source": "90525fcfc63aaf7370c341ff277299cd02df3705", + "translation": "51c27a7d1ca51ab0f1ead40fe632cdb4d640e9fb" + }, + "modals.timeEntryEditor.duration": { + "source": "10c3d1ca4b19f76a702335cf54c4ad5e308b9269", + "translation": "2d8f5be8a6fd8d2b47a4fbf99e7bfc0a936ec061" + }, + "modals.timeEntryEditor.durationDesc": { + "source": "03f5c59b12a26186f784cc542c31552236d7feca", + "translation": "a6622c69f7dbd69936d1e7fda1b252c3fd82b5df" + }, + "modals.timeEntryEditor.durationPlaceholder": { + "source": "01cdc0c08662f0a248e0a1c3739e7fcfd15bed2a", + "translation": "5005a6afc325a4a0cd2e1a576240be72973645ea" + }, + "modals.timeEntryEditor.description": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "f5441f6aee76222c4120066575e80c2d177ac3c0" + }, + "modals.timeEntryEditor.descriptionPlaceholder": { + "source": "89c8239873859b318429811db142d3b8c695b2ac", + "translation": "5efd6a834ed71f0047183dfde67f4b26d0ef750e" + }, + "modals.timeEntryEditor.calculatedDuration": { + "source": "b7cc42c87dac49b80cf3ab1b6f14860033a61e06", + "translation": "f36412b31bf420254aaf3ca0d6ca50fe2ff150e4" + }, + "modals.timeEntryEditor.totalTime": { + "source": "042bd2520b3f2b773bdad26dbd7da5faad717454", + "translation": "01fefec90185e029896966d12b3ef5a2cfd0145d" + }, + "modals.timeEntryEditor.totalMinutes": { + "source": "97ff49bf5909a19e98de6e0fd5db5465acade28e", + "translation": "ed03a362e8792bbd65660a13fab21979e591bb0d" + }, + "modals.timeEntryEditor.saved": { + "source": "4f5b612346e6ff0ccbf9bf1a2bc066b75d492182", + "translation": "9163b214f7297722f23f073e341b07523638cf97" + }, + "modals.timeEntryEditor.saveFailed": { + "source": "ee11ad6a60432aedc8b7ffc17a114d7a10d64aa9", + "translation": "a1b4bf3f1f2e6a521577b3a7dc8964281162873b" + }, + "modals.timeEntryEditor.openFailed": { + "source": "b0e2d1ab7251bb67ffebe49b31ba77ecbb567e83", + "translation": "d78ec154ee39e56e942008e6e28bb2f8fff42bc4" + }, + "modals.timeEntryEditor.noTasksWithEntries": { + "source": "634bcd14e86e7416c2c55af84ed5d586529e4c6f", + "translation": "91fd68b71b854ddb7f98498fda788897470f4581" + }, + "modals.timeEntryEditor.validation.missingStartTime": { + "source": "ece990b264aa1b7aee79dcef46cc950be2ec88d0", + "translation": "4d0d63b57a81d5b3542ee96eb1e52f75b0f75735" + }, + "modals.timeEntryEditor.validation.endBeforeStart": { + "source": "468339327f19d1060b77fff4957224707e821025", + "translation": "bde4c5551bf0c75e13fda227eb368c9496cd3857" + }, + "modals.timeTracking.noTasksAvailable": { + "source": "f632e1e836cc6d1d58eee8c6aa178297f73658a4", + "translation": "995517adeb3c54f3dc1a92d99e802cba13a19661" + }, + "modals.timeTracking.started": { + "source": "6c0a2563cd30cfab8cee8ad540bba85df045de06", + "translation": "d79979e4ca96492362d205fa554b2aab24ee32ba" + }, + "modals.timeTracking.startFailed": { + "source": "c1b914325ad18471661dcc078d2e4111856abffc", + "translation": "a693fc144ccd1fde283faf6ecfc9a9054e274ca9" + }, + "modals.timeEntry.mustHaveSpecificTime": { + "source": "b5e4624ad4a4356677441185f8d75c03831d1965", + "translation": "c393331e1c5433a3c8dab9afd20bd8bca421e2d7" + }, + "modals.timeEntry.noTasksAvailable": { + "source": "8c8ab856815d4eced441cfd78f8b327a49ad7914", + "translation": "79f07b378a8133cdaa43f46b55429d96fce8ec85" + }, + "modals.timeEntry.created": { + "source": "c9c5244ef7123a90bf648150a3c88577a6dd955f", + "translation": "d8f6a029bbb5542990ffc6c1b8284a6425d7e558" + }, + "modals.timeEntry.createFailed": { + "source": "6b01c84eaddf7dd2da3a9f10a1470268926dd944", + "translation": "05f4c95497558b9f9663dbb6f4bb973e43dc3763" + }, "contextMenus.task.status": { "source": "bae7d5be70820ed56467bd9a63744e23b47bd711", "translation": "f7f293b5c58cf8a1508319db3e59577951e44343" @@ -28421,21 +31491,66 @@ "source": "9d6d4726a51b50bb7ae7926ee341d84f79de7442", "translation": "36dd859841a66950608a9714ef907b38ba70de0c" }, - "contextMenus.task.organization.title": null, - "contextMenus.task.organization.projects": null, - "contextMenus.task.organization.addToProject": null, - "contextMenus.task.organization.subtasks": null, - "contextMenus.task.organization.addSubtasks": null, - "contextMenus.task.organization.notices.alreadyInProject": null, - "contextMenus.task.organization.notices.alreadySubtask": null, - "contextMenus.task.organization.notices.addedToProject": null, - "contextMenus.task.organization.notices.addedAsSubtask": null, - "contextMenus.task.organization.notices.addToProjectFailed": null, - "contextMenus.task.organization.notices.addAsSubtaskFailed": null, - "contextMenus.task.organization.notices.projectSelectFailed": null, - "contextMenus.task.organization.notices.subtaskSelectFailed": null, - "contextMenus.task.organization.notices.noEligibleSubtasks": null, - "contextMenus.task.organization.notices.currentTaskNotFound": null, + "contextMenus.task.organization.title": { + "source": "519255ae1f74ffc5ddd29979295c7572f048ad81", + "translation": "48b493a19d1fb15257e829fcd90927bd5d6417e8" + }, + "contextMenus.task.organization.projects": { + "source": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "translation": "b90d9f72b44e086831c38646ac95961cc7d79c64" + }, + "contextMenus.task.organization.addToProject": { + "source": "9dd214953c4e6809b5781c1d3e3e02314a5e0b60", + "translation": "411e35f5961332d4560cda6a845a3b6c3c015e39" + }, + "contextMenus.task.organization.subtasks": { + "source": "173312c6e2592de729610a4d319877c9aa8d8b67", + "translation": "71f53f28abf4fff6daef647a06377a22ac2b8e60" + }, + "contextMenus.task.organization.addSubtasks": { + "source": "e3be6d5743bddcf6860ae9b0e3b3195a615a9851", + "translation": "ecc586fbe2dd866d368230b56ceeaad02eba81dc" + }, + "contextMenus.task.organization.notices.alreadyInProject": { + "source": "1e29ecb2858c6534f5a0ce04cc31cacd4ae517b9", + "translation": "3db066bfe8a1670559d9a8a7e19316ac209cf5ee" + }, + "contextMenus.task.organization.notices.alreadySubtask": { + "source": "1ba79408a9d9efc90cc09da294427b361ea47704", + "translation": "e12471f41aa38c8af214d705917e0d395635d6d1" + }, + "contextMenus.task.organization.notices.addedToProject": { + "source": "16e3e41454eb0bb323fa483247d7bbc8d9f8682c", + "translation": "cafeddc4f233fa5102e227936999dcd7cb451870" + }, + "contextMenus.task.organization.notices.addedAsSubtask": { + "source": "58716eb79b04312adc6aff8fe462878ad590a61e", + "translation": "55017317ab37f2d5336055ddf695d54436a470df" + }, + "contextMenus.task.organization.notices.addToProjectFailed": { + "source": "b33b7412093bbc9bf659f740f2f6a2c195e567fe", + "translation": "8c0893cdf5d9b32ce8c155df430c29ecf9f38237" + }, + "contextMenus.task.organization.notices.addAsSubtaskFailed": { + "source": "7e976d9c2e9af1a6b11f181e40d19885d754c690", + "translation": "89e9a988cbe5c167714390bde4af8f860b58c6b6" + }, + "contextMenus.task.organization.notices.projectSelectFailed": { + "source": "ce7aecc0fc448d9b71a0fca743cf6a4089b08ec3", + "translation": "f3a02c3d0cf1df25fb32229ead3e1240922e18d4" + }, + "contextMenus.task.organization.notices.subtaskSelectFailed": { + "source": "333c06c796628bc21ecdaa6da4556bbe343c2284", + "translation": "8e49b42974f02b6fa3fa3f6b29eccc235ab69c68" + }, + "contextMenus.task.organization.notices.noEligibleSubtasks": { + "source": "bce7ca1d7ce5603179f86b83b9074a4aa27de835", + "translation": "b5afd9994d807531fe1cc116c8f75eb398fb9579" + }, + "contextMenus.task.organization.notices.currentTaskNotFound": { + "source": "08026c9b7c99f5ebba74878389670c6236361b82", + "translation": "68f1e4c35e68d12602fd0c25470d6c19a1b6a2b8" + }, "contextMenus.task.subtasks.loading": { "source": "df656368163a3d196b63857636b0ee9e2a41273d", "translation": "c8f1630a012f64517cf5df0d6bd34e83c4a9db0a" @@ -29356,11 +32471,35 @@ "source": "848eed0fbd5429f556b2982dec3ea87136e33e44", "translation": "5e52520af44e38fb9f11292b7215841854a01d1e" }, - "ui.filterBar.group.completedDate": null, + "ui.filterBar.group.completedDate": { + "source": "0089d3b136526c1dfbe0487bc7c3c8ef99812909", + "translation": "aec9b258ffae2d32e21b76929fed13250b828e10" + }, + "ui.filterBar.subgroupLabel": null, "ui.filterBar.notices.propertiesMenuFailed": { "source": "e9df8763e0af720e4edcfd8f3bd87af75a69f7a1", "translation": "7311d052585143a499c55944cfb51de46ff29501" }, + "components.dateContextMenu.weekdays": null, + "components.dateContextMenu.clearDate": null, + "components.dateContextMenu.today": null, + "components.dateContextMenu.tomorrow": null, + "components.dateContextMenu.thisWeekend": null, + "components.dateContextMenu.nextWeek": null, + "components.dateContextMenu.nextMonth": null, + "components.dateContextMenu.setDateTime": null, + "components.dateContextMenu.dateLabel": null, + "components.dateContextMenu.timeLabel": null, + "components.subgroupMenuBuilder.none": null, + "components.subgroupMenuBuilder.status": null, + "components.subgroupMenuBuilder.priority": null, + "components.subgroupMenuBuilder.context": null, + "components.subgroupMenuBuilder.project": null, + "components.subgroupMenuBuilder.dueDate": null, + "components.subgroupMenuBuilder.scheduledDate": null, + "components.subgroupMenuBuilder.tags": null, + "components.subgroupMenuBuilder.completedDate": null, + "components.subgroupMenuBuilder.subgroup": null, "components.propertyVisibilityDropdown.coreProperties": { "source": "b3cfb1af6a8f2011725da9badb151b1c72b0e6ec", "translation": "273a4585152f46d25617f5b68785c0aaa5ad0743" @@ -29907,6 +33046,12 @@ "source": "2ab447eb84f59d3b163ca7bae16ff0d20b3ca125", "translation": "417e0f6f622918b99f1b7f63efd95311670736a1" }, + "views.agenda.empty.helpText": null, + "views.agenda.contextMenu.showOverdueSection": null, + "views.agenda.contextMenu.showNotes": null, + "views.agenda.contextMenu.calendarSubscriptions": null, + "views.agenda.periods.thisWeek": null, + "views.agenda.tipPrefix": null, "views.taskList.title": { "source": "090ec5f560fc50377fcd95e5cda128e91b276e98", "translation": "3172b317f9fc809f3aee467c0446384de4cc9255" @@ -29931,6 +33076,7 @@ "source": "5b7bdb61fdbc48d57b9f43d0e28b7cfd3063fca5", "translation": "0637f2e3d45fe351a28f77d51632e3b215591d10" }, + "views.notes.refreshingButton": null, "views.notes.notices.indexingDisabled": { "source": "3e6ccc8839212c37b4152b2193c1369a68dde324", "translation": "78511670397e93fb6e0674e92fae816e11026877" @@ -29939,6 +33085,9 @@ "source": "9e2f5f8952ae7fb4bf2669ff4c73cee07e32ce53", "translation": "9743a66c6026e3446dcc4c19e369dfaa3cf3f555" }, + "views.notes.empty.helpText": null, + "views.notes.loading": null, + "views.notes.refreshButtonAriaLabel": null, "views.miniCalendar.title": { "source": "a3cc5b7724a714d5620c6e9ef5f851c143022178", "translation": "1bfd29d2d968cd78622f97899d9a436a299c806f" @@ -30143,7 +33292,10 @@ "source": "aa73278ad78de284702c875cbe2d73ccb8f9c5d3", "translation": "5c5b4fd5ba33a15949b29d65fe325a8bbb0b476b" }, - "views.basesCalendar.buttonText.listDays": null, + "views.basesCalendar.buttonText.listDays": { + "source": "27491b23f022fd85faf8c467fb04415d0b5d6bed", + "translation": "7eac709b4427662b4872c5b1e51b3ea393036c4d" + }, "views.basesCalendar.settings.groups.dateNavigation": { "source": "8487a72e02c205a734e6ec6a5684a99576039cb3", "translation": "9418cc43710bff3818e4d2251de159c0df30c7b9" @@ -30164,8 +33316,14 @@ "source": "9b99ca62a8c206aeef3199afeb8c2d6ea70c3c3a", "translation": "9dab5527fc38aa92f2fb093e2ac87f54532d5788" }, - "views.basesCalendar.settings.groups.googleCalendars": null, - "views.basesCalendar.settings.groups.microsoftCalendars": null, + "views.basesCalendar.settings.groups.googleCalendars": { + "source": "cfa0f6bb3b4422195fc4abb06c02bca780fce33a", + "translation": "947b3c195a1269273802aca16be3d810e59775ba" + }, + "views.basesCalendar.settings.groups.microsoftCalendars": { + "source": "2edac69ff3c043d662037911af60ea54cc1c3746", + "translation": "246ce5743f4159b6413490d4894d5c7b041d2f3a" + }, "views.basesCalendar.settings.dateNavigation.navigateToDate": { "source": "2a47407705ef9a77de4778c38853a4122e38b1fd", "translation": "c0efa068855bb9fb623f36c52244cdd39eb55b04" @@ -30230,7 +33388,10 @@ "source": "1aadcb0d4d3400d00e2ad0a4cffa017ad1fac481", "translation": "4fb424df11ed00a6944983a5e08350220fe6ad5c" }, - "views.basesCalendar.settings.layout.listDayCount": null, + "views.basesCalendar.settings.layout.listDayCount": { + "source": "914d28dbcb8c39a44885ec1b53d4c50180639463", + "translation": "6567dda3a3cba269569fd4d40566fb8ae3bb8aee" + }, "views.basesCalendar.settings.layout.dayStartTime": { "source": "0f668f32458bf870e8823e6dd50a7fcc1dc595c7", "translation": "99e69a099befe98c44d4e0955be7e2043bc76429" @@ -30351,6 +33512,8 @@ "source": "e542695cd353d43e646a3d050dc59b189373613c", "translation": "76ddb605c417827b88dcaf01ba44b710a87a0738" }, + "views.kanban.uncategorized": null, + "views.kanban.noProject": null, "views.kanban.notices.loadFailed": { "source": "9d744b2d44937cda77d20fc3bf2c1fc0242cc3c4", "translation": "850b411e1456596266ff2799cecf1ca7ced8bd2a" @@ -30363,6 +33526,7 @@ "source": "5df51b612bbe4d9afeb184269bb95d764fac5687", "translation": "8f93982d8b56a4600cd2bc3eb9dcc4f59b3c1bf6" }, + "views.kanban.columnTitle": null, "views.pomodoro.title": { "source": "212e4618d030e7c987ed2d64d96f3e1dcebbf414", "translation": "0162a10275f2d94b5596a4d1163605e75e2360b7" @@ -30603,6 +33767,31 @@ "source": "77f4b7a081b20f78557dd404e14d91b89b52a27c", "translation": "227f72b88ebec3e37158e855352776b82662a27c" }, + "views.stats.filters.allTasks": null, + "views.stats.filters.activeOnly": null, + "views.stats.filters.completedOnly": null, + "views.stats.refreshButton": null, + "views.stats.timeRanges.allTime": null, + "views.stats.timeRanges.last7Days": null, + "views.stats.timeRanges.last30Days": null, + "views.stats.timeRanges.last90Days": null, + "views.stats.timeRanges.customRange": null, + "views.stats.resetFiltersButton": null, + "views.stats.dateRangeFrom": null, + "views.stats.dateRangeTo": null, + "views.stats.noProject": null, + "views.stats.cards.timeTrackedEstimated": null, + "views.stats.cards.totalTasks": null, + "views.stats.cards.completionRate": null, + "views.stats.cards.activeProjects": null, + "views.stats.cards.avgTimePerTask": null, + "views.stats.labels.tasks": null, + "views.stats.labels.completed": null, + "views.stats.labels.projects": null, + "views.stats.noProjectData": null, + "views.stats.notAvailable": null, + "views.stats.noTasks": null, + "views.stats.loading": null, "views.releaseNotes.title": { "source": "5939771f391859041bc57e5e05b04235b1ef8ee7", "translation": "f2780c1c443bdaf2d9eba3d81667be844efaf310" @@ -31336,8 +34525,8 @@ "translation": "9c524f830cbe7bc1c3057fc8a9ace592f0446022" }, "settings.general.taskStorage.archiveFolder.description": { - "source": "585d1d1880702b21f0351cd59009545b68253772", - "translation": "f5d20b3090530763cb806445b52555a5a940d86d" + "source": "525cd580be814f568406dfa1750369aeaee8da8d", + "translation": "09795ae0bf93ff8b931f468246b9908f66e0206b" }, "settings.general.taskIdentification.header": { "source": "a73ea48ea8d65c6dd5762403f0cee5e34b96773c", @@ -31371,8 +34560,14 @@ "source": "80122e53d8a3a7eb2c2ac8e352efba551330d1c5", "translation": "9ecff4cdf6387ad87f28136c34a5aeca816dcb9e" }, - "settings.general.taskIdentification.hideIdentifyingTags.name": null, - "settings.general.taskIdentification.hideIdentifyingTags.description": null, + "settings.general.taskIdentification.hideIdentifyingTags.name": { + "source": "446bbfd987521d42035442c4652693d996565cf8", + "translation": "3f49bfeda0909fb23407943ecb14cdaee3d3dc2d" + }, + "settings.general.taskIdentification.hideIdentifyingTags.description": { + "source": "a38be9ef6457fd38857917cbbc387d396cd2e60a", + "translation": "d73726f69dc2dc21fcde960bc1f6e890d816bebd" + }, "settings.general.taskIdentification.taskProperty.name": { "source": "fb00b60c99acd4529404e3ef8bd77017d9332da6", "translation": "3ef03311b54be061d87301dc86824007f7c17823" @@ -31401,10 +34596,22 @@ "source": "4ff367979f5bdb70f928733dda339ca81435c4b1", "translation": "4c9da6382b78df24efdf07f811d8cf02f1cec7fe" }, - "settings.general.frontmatter.header": null, - "settings.general.frontmatter.description": null, - "settings.general.frontmatter.useMarkdownLinks.name": null, - "settings.general.frontmatter.useMarkdownLinks.description": null, + "settings.general.frontmatter.header": { + "source": "49415878931e5edbbf6d49465647a990f04b12ae", + "translation": "49415878931e5edbbf6d49465647a990f04b12ae" + }, + "settings.general.frontmatter.description": { + "source": "24a51bb38d3857a7e0d9df7130ffff10bdd3b386", + "translation": "4f6e55627a40a35142b05d3fde42719266f68934" + }, + "settings.general.frontmatter.useMarkdownLinks.name": { + "source": "345e6cf9ce20ff8a3ac2966ceb53f8a83bdbd9ba", + "translation": "8ce8f8e61e7c9a09bda8b4db966bd4e9eacb3db4" + }, + "settings.general.frontmatter.useMarkdownLinks.description": { + "source": "f56ef5842cbd725ff74500d96e3d40e0046e3693", + "translation": "31a07f3645f11e098fb30b58294743b5931985e7" + }, "settings.general.taskInteraction.header": { "source": "a8194c053a4f989c874659b7d4a0e99f5a4a3df5", "translation": "a88718a01e7ff2ad9d96ca1f171d99d9319307a2" @@ -31865,8 +35072,14 @@ "source": "5ac477c267332c84ac6f5fe5509d523e08a4af94", "translation": "b9cee430291309e3229482a2d63d9e58a02642df" }, - "settings.taskProperties.customUserFields.autosuggestFilters.header": null, - "settings.taskProperties.customUserFields.autosuggestFilters.description": null, + "settings.taskProperties.customUserFields.autosuggestFilters.header": { + "source": "54bbd5ce9872e3040735f334d7a52a22dfd80868", + "translation": "5ac3ea697819dbb0cf8ae0ab0e244976d6ceefa9" + }, + "settings.taskProperties.customUserFields.autosuggestFilters.description": { + "source": "61290f286c6963dbe266b1b6b20a4c3f29c78d66", + "translation": "59eda010c844762c761d8c2dba0d9d9a6470d1df" + }, "settings.appearance.taskCards.header": { "source": "08836d307ea5b1614f69962e1b9d36f243baddc5", "translation": "c15beaf879843058d9b229f03f12c62f0150178e" @@ -32263,9 +35476,18 @@ "source": "62646b00e3d5abef4cb8139c5f21bf0907f360d1", "translation": "62646b00e3d5abef4cb8139c5f21bf0907f360d1" }, - "settings.appearance.timeSettings.eventMinHeight.name": null, - "settings.appearance.timeSettings.eventMinHeight.description": null, - "settings.appearance.timeSettings.eventMinHeight.placeholder": null, + "settings.appearance.timeSettings.eventMinHeight.name": { + "source": "67a8232d69bec32baaf18aa6e9ca9fe3c000ab4d", + "translation": "3d1258c0174cc507b48af62c2999719d034ec225" + }, + "settings.appearance.timeSettings.eventMinHeight.description": { + "source": "abdf220549b2c4c45637d08889a2fce81ee56864", + "translation": "d988b2891e42f0e161435926a4aa4e349b30d1d6" + }, + "settings.appearance.timeSettings.eventMinHeight.placeholder": { + "source": "f1abd670358e036c31296e66b3b66c382ac00812", + "translation": "f1abd670358e036c31296e66b3b66c382ac00812" + }, "settings.appearance.uiElements.header": { "source": "828b5505ff4402471cfbb7fe32a6613ec912c004", "translation": "f14ac2e91c0708f59855fd80308cd30140248bf4" @@ -32306,8 +35528,14 @@ "source": "5f9fded041bcc55ad42199dd16555cc3808fda38", "translation": "737192ba1cb18c19c524eed1c143597d3c3e3547" }, - "settings.appearance.uiElements.showTaskCardInNote.name": null, - "settings.appearance.uiElements.showTaskCardInNote.description": null, + "settings.appearance.uiElements.showTaskCardInNote.name": { + "source": "0b1f1ec16383521fcfd6d02f3e80eb6a207b3c49", + "translation": "b9f96fc3d00189c9ea71d61c4292e0dae23776a3" + }, + "settings.appearance.uiElements.showTaskCardInNote.description": { + "source": "b4aa118727222f93f2d6332eb132086fe482e087", + "translation": "f8f4c955abac10d78765d0317a474f00b664af57" + }, "settings.appearance.uiElements.showExpandableSubtasks.name": { "source": "ae273c967a5801820e4f174610708fc4d1859951", "translation": "5fc251c6a425ef3761b287dd3221b732b372f8fb" @@ -33412,6 +36640,25 @@ "source": "91fa8ddb011b35634762b9184731cd9d6893b139", "translation": "c3a29dbddca78f347cb9ce8a8d9ecb61468d6865" }, + "notices.icsNoteCreatedSuccess": null, + "notices.icsCreationModalOpenFailed": null, + "notices.icsNoteLinkSuccess": null, + "notices.icsTaskCreatedSuccess": null, + "notices.icsRelatedItemsRefreshed": null, + "notices.icsFileNotFound": null, + "notices.icsFileOpenFailed": null, + "notices.timeblockAttachmentExists": null, + "notices.timeblockAttachmentAdded": null, + "notices.timeblockAttachmentRemoved": null, + "notices.timeblockFileTypeNotSupported": null, + "notices.timeblockTitleRequired": null, + "notices.timeblockUpdatedSuccess": null, + "notices.timeblockUpdateFailed": null, + "notices.timeblockDeletedSuccess": null, + "notices.timeblockDeleteFailed": null, + "notices.timeblockRequiredFieldsMissing": null, + "notices.agendaLoadingFailed": null, + "notices.statsLoadingFailed": null, "commands.openCalendarView": { "source": "d7dce352d3bf5b12479770b86495263f84275492", "translation": "2ff9c940fa568cb7744b11cb1964e2ba41282620" @@ -33500,8 +36747,100 @@ "source": "04c2072af97cf70c22fbf9efa9b62eb2574d23d6", "translation": "524c479f706f46cb1f6e70be920671d9ed610e5c" }, - "commands.startTimeTrackingWithSelector": null, - "commands.editTimeEntries": null, + "commands.startTimeTrackingWithSelector": { + "source": "32970116a0d7a74dadbf82a0aa2aa8117278d601", + "translation": "a9be862e0b806cd89ae46aee36f3dbf6d182b75f" + }, + "commands.editTimeEntries": { + "source": "b8c5b41ec8f55348f7ae4acf087d62edaf588a0c", + "translation": "9775f387f4a9a149812511e8ec2b20fa0df3c371" + }, + "modals.deviceCode.title": null, + "modals.deviceCode.instructions.intro": null, + "modals.deviceCode.steps.open": null, + "modals.deviceCode.steps.inBrowser": null, + "modals.deviceCode.steps.enterCode": null, + "modals.deviceCode.steps.signIn": null, + "modals.deviceCode.steps.returnToObsidian": null, + "modals.deviceCode.codeLabel": null, + "modals.deviceCode.copyCodeAriaLabel": null, + "modals.deviceCode.waitingForAuthorization": null, + "modals.deviceCode.openBrowserButton": null, + "modals.deviceCode.cancelButton": null, + "modals.deviceCode.expiresMinutesSeconds": null, + "modals.deviceCode.expiresSeconds": null, + "modals.icsEventInfo.calendarEventHeading": null, + "modals.icsEventInfo.titleLabel": null, + "modals.icsEventInfo.calendarLabel": null, + "modals.icsEventInfo.dateTimeLabel": null, + "modals.icsEventInfo.locationLabel": null, + "modals.icsEventInfo.descriptionLabel": null, + "modals.icsEventInfo.urlLabel": null, + "modals.icsEventInfo.relatedNotesHeading": null, + "modals.icsEventInfo.noRelatedItems": null, + "modals.icsEventInfo.typeTask": null, + "modals.icsEventInfo.typeNote": null, + "modals.icsEventInfo.actionsHeading": null, + "modals.icsEventInfo.createFromEventLabel": null, + "modals.icsEventInfo.createFromEventDesc": null, + "modals.icsEventInfo.linkExistingLabel": null, + "modals.icsEventInfo.linkExistingDesc": null, + "modals.timeblockInfo.editHeading": null, + "modals.timeblockInfo.dateTimeLabel": null, + "modals.timeblockInfo.titleLabel": null, + "modals.timeblockInfo.titleDesc": null, + "modals.timeblockInfo.titlePlaceholder": null, + "modals.timeblockInfo.descriptionLabel": null, + "modals.timeblockInfo.descriptionDesc": null, + "modals.timeblockInfo.descriptionPlaceholder": null, + "modals.timeblockInfo.colorLabel": null, + "modals.timeblockInfo.colorDesc": null, + "modals.timeblockInfo.colorPlaceholder": null, + "modals.timeblockInfo.attachmentsLabel": null, + "modals.timeblockInfo.attachmentsDesc": null, + "modals.timeblockInfo.addAttachmentButton": null, + "modals.timeblockInfo.addAttachmentTooltip": null, + "modals.timeblockInfo.deleteButton": null, + "modals.timeblockInfo.saveButton": null, + "modals.timeblockInfo.deleteConfirmationTitle": null, + "modals.timeblockCreation.heading": null, + "modals.timeblockCreation.dateLabel": null, + "modals.timeblockCreation.titleLabel": null, + "modals.timeblockCreation.titleDesc": null, + "modals.timeblockCreation.titlePlaceholder": null, + "modals.timeblockCreation.startTimeLabel": null, + "modals.timeblockCreation.startTimeDesc": null, + "modals.timeblockCreation.startTimePlaceholder": null, + "modals.timeblockCreation.endTimeLabel": null, + "modals.timeblockCreation.endTimeDesc": null, + "modals.timeblockCreation.endTimePlaceholder": null, + "modals.timeblockCreation.descriptionLabel": null, + "modals.timeblockCreation.descriptionDesc": null, + "modals.timeblockCreation.descriptionPlaceholder": null, + "modals.timeblockCreation.colorLabel": null, + "modals.timeblockCreation.colorDesc": null, + "modals.timeblockCreation.colorPlaceholder": null, + "modals.timeblockCreation.attachmentsLabel": null, + "modals.timeblockCreation.attachmentsDesc": null, + "modals.timeblockCreation.addAttachmentButton": null, + "modals.timeblockCreation.addAttachmentTooltip": null, + "modals.timeblockCreation.createButton": null, + "modals.icsNoteCreation.heading": null, + "modals.icsNoteCreation.titleLabel": null, + "modals.icsNoteCreation.titleDesc": null, + "modals.icsNoteCreation.folderLabel": null, + "modals.icsNoteCreation.folderDesc": null, + "modals.icsNoteCreation.folderPlaceholder": null, + "modals.icsNoteCreation.createButton": null, + "modals.icsNoteCreation.startLabel": null, + "modals.icsNoteCreation.endLabel": null, + "modals.icsNoteCreation.locationLabel": null, + "modals.icsNoteCreation.calendarLabel": null, + "modals.icsNoteCreation.useTemplateLabel": null, + "modals.icsNoteCreation.useTemplateDesc": null, + "modals.icsNoteCreation.templatePathLabel": null, + "modals.icsNoteCreation.templatePathDesc": null, + "modals.icsNoteCreation.templatePathPlaceholder": null, "modals.task.titlePlaceholder": { "source": "c8196f1d1039c2fb290add52ee990c571173d6f1", "translation": "37d9b0a0a59872345ce5e206027f8eccf793e6fa" @@ -33562,22 +36901,70 @@ "source": "22d200f8670dbdb3e253a90eee5098477c95c23d", "translation": "22d200f8670dbdb3e253a90eee5098477c95c23d" }, - "modals.task.dependencies.blockedBy": null, - "modals.task.dependencies.blocking": null, - "modals.task.dependencies.placeholder": null, - "modals.task.dependencies.addTaskButton": null, - "modals.task.dependencies.selectTaskTooltip": null, - "modals.task.dependencies.removeTaskTooltip": null, - "modals.task.organization.projects": null, - "modals.task.organization.subtasks": null, - "modals.task.organization.addToProject": null, - "modals.task.organization.addToProjectButton": null, - "modals.task.organization.addSubtasks": null, - "modals.task.organization.addSubtasksButton": null, - "modals.task.organization.addSubtasksTooltip": null, - "modals.task.organization.removeSubtaskTooltip": null, - "modals.task.organization.notices.noEligibleSubtasks": null, - "modals.task.organization.notices.subtaskSelectFailed": null, + "modals.task.dependencies.blockedBy": { + "source": "ea05d7701157b2371f01467a3a25cd6e3a5bbefd", + "translation": "0b2664618af6ef68bb7f5cbf71c9ab1bcfd465ec" + }, + "modals.task.dependencies.blocking": { + "source": "d785c0d4b3b9c24878b62f64a7bcf78e9506ab27", + "translation": "1127903a5c2adf803c50e0dc75386e7a93f91a88" + }, + "modals.task.dependencies.placeholder": { + "source": "67c2a027f7b139a8b9103081eb4fb418e135cd38", + "translation": "cde761a18a3d3b85182fc314d5496a2fe766580e" + }, + "modals.task.dependencies.addTaskButton": { + "source": "24700e60fedcf00a741c5adb1d9f15aee05f95d8", + "translation": "2de2818c5b9f938f095949d61943f2fb777a02f0" + }, + "modals.task.dependencies.selectTaskTooltip": { + "source": "752b3be46866220ce17567bede45bdac374d4a4f", + "translation": "166eb3f82530d4b1b01965223352efa677a2528d" + }, + "modals.task.dependencies.removeTaskTooltip": { + "source": "5be1bc9e1837b131abac53534235a44b4bca541e", + "translation": "0705816c6804a18095ddeedadeaa0357848d3432" + }, + "modals.task.organization.projects": { + "source": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "translation": "22336e6b892f14855e9f71b6ff9d861510dbe57b" + }, + "modals.task.organization.subtasks": { + "source": "173312c6e2592de729610a4d319877c9aa8d8b67", + "translation": "2a8ce33ff0aaf399d3c99a0b98d76068189bb0c5" + }, + "modals.task.organization.addToProject": { + "source": "85be7d2ce90b02bd410c4deb918f46e112efd677", + "translation": "257b27f93f882fbad8b796602dc79e75766bd6ba" + }, + "modals.task.organization.addToProjectButton": { + "source": "85be7d2ce90b02bd410c4deb918f46e112efd677", + "translation": "257b27f93f882fbad8b796602dc79e75766bd6ba" + }, + "modals.task.organization.addSubtasks": { + "source": "15f2a584071a1fe7796c37fc0ea6b5164dd5dda6", + "translation": "1f50119c5b466872fc6a44957f317415f08dcf5e" + }, + "modals.task.organization.addSubtasksButton": { + "source": "65b9d7a6f28a02d5a60ab0005804c73e137d14b6", + "translation": "1f50119c5b466872fc6a44957f317415f08dcf5e" + }, + "modals.task.organization.addSubtasksTooltip": { + "source": "1a875945612b63d144cb3cf02c792a38443378e1", + "translation": "b900d4945ab0860f0d3a31b02f9728d1f3bbca97" + }, + "modals.task.organization.removeSubtaskTooltip": { + "source": "d6acf378b038ad0b4b130817b370fb9dba31caef", + "translation": "165f2995e1ba002fabc3a8adc3aa06bedb0c3aa4" + }, + "modals.task.organization.notices.noEligibleSubtasks": { + "source": "bce7ca1d7ce5603179f86b83b9074a4aa27de835", + "translation": "4206e6aa5673cb84b3e70cc84ddfbc928fd5bab9" + }, + "modals.task.organization.notices.subtaskSelectFailed": { + "source": "333c06c796628bc21ecdaa6da4556bbe343c2284", + "translation": "530515abf9b28d0993d2cbfad4a9de2b7db7608d" + }, "modals.task.customFieldsLabel": { "source": "143b179529aecd0bdc5aa86599fe60057b83d32b", "translation": "40516c8f045553da81624db7da31da311d942c51" @@ -33730,14 +37117,38 @@ "source": "0fe4ddf98d535f0b7e919aec9630254b1d2ad167", "translation": "0fe4ddf98d535f0b7e919aec9630254b1d2ad167" }, - "modals.taskSelector.title": null, - "modals.taskSelector.placeholder": null, - "modals.taskSelector.instructions.navigate": null, - "modals.taskSelector.instructions.select": null, - "modals.taskSelector.instructions.dismiss": null, - "modals.taskSelector.notices.noteNotFound": null, - "modals.taskSelector.dueDate.overdue": null, - "modals.taskSelector.dueDate.today": null, + "modals.taskSelector.title": { + "source": "957bbd1116cdb7c59e3f7649b8bc2c2e8ed3de54", + "translation": "f440af604feeb5a35d80ff2ae750849304d81478" + }, + "modals.taskSelector.placeholder": { + "source": "72bbd8a758aaf0c92b3e7a6d22b962077db3b6ff", + "translation": "97732beb050ba931849028f12562acf6111a2f7d" + }, + "modals.taskSelector.instructions.navigate": { + "source": "130c10ed2c60f33a0f4416b6b7412b9bd11649ce", + "translation": "c7ed24950426e2d71e02f902e4bd3ef5548ff0d1" + }, + "modals.taskSelector.instructions.select": { + "source": "e4e5b8e792f7971958b92028636ff584167bb638", + "translation": "70b208202ce59f6b9a7eff400b8928d9d95fa568" + }, + "modals.taskSelector.instructions.dismiss": { + "source": "6688c3f3833719827c18453d8e6d7eecbda657ff", + "translation": "4d0b4688c787cf6c33c744bdad5f7d7f56b0feee" + }, + "modals.taskSelector.notices.noteNotFound": { + "source": "c1508711476a6e33215c7e7a3eaee01b7b1b90f9", + "translation": "91c554685ff1d0a8fdc6bf808760638381037bbd" + }, + "modals.taskSelector.dueDate.overdue": { + "source": "7980fcc0ec0fb23d3b8bd43a1ce5c87f5d868622", + "translation": "3d83ea5556cb9a5137e111c4b2bd20a349d81c1a" + }, + "modals.taskSelector.dueDate.today": { + "source": "5c1fc193ed4468897cf177a7de9cf77e4a673853", + "translation": "7292fd7ced22db8e3cf5ae65073805cae8f870f1" + }, "modals.taskCreation.title": { "source": "f1f1450ff80aeab91cb0853329e2b454904866e2", "translation": "cf42fd678f460f971d827c93938c14a6045f3374" @@ -33774,7 +37185,10 @@ "source": "d95ef5460dda68f0b2f23b2168ec04d567436991", "translation": "0826d9ca4d4d6004b2246cb2eedaedeb39e3acd1" }, - "modals.taskCreation.notices.blockingUnresolved": null, + "modals.taskCreation.notices.blockingUnresolved": { + "source": "545b04083e38f5969b9605a0ac51686b3124d5c8", + "translation": "cb6f9a83a62a9b250540df709f68ccbf443d303a" + }, "modals.taskEdit.title": { "source": "8a4d4e6eb9a367d616b8a4cbfa2792068482e884", "translation": "67659ba581add1dfdc7d691c0cd73dd7812f9577" @@ -33827,8 +37241,14 @@ "source": "fed2485c8e57184fdccdbbe4728bea5eb29e61e8", "translation": "b9bf044283911ac3f66a713f01ac2fcff3c799e9" }, - "modals.taskEdit.notices.dependenciesUpdateSuccess": null, - "modals.taskEdit.notices.blockingUnresolved": null, + "modals.taskEdit.notices.dependenciesUpdateSuccess": { + "source": "69065c1c9e58bc4eae0501893c63426389497b54", + "translation": "501965d39712de6b2aff701285238667505c1952" + }, + "modals.taskEdit.notices.blockingUnresolved": { + "source": "545b04083e38f5969b9605a0ac51686b3124d5c8", + "translation": "cb6f9a83a62a9b250540df709f68ccbf443d303a" + }, "modals.taskEdit.notices.fileMissing": { "source": "596fc23c289a0b102027e30e03f9da21180f9e3c", "translation": "5325d7c966d1693f8c23555763107c35c32a1f71" @@ -34077,33 +37497,114 @@ "source": "e3b84e89bc68a5c8f2e36e22ee9857002c4a2545", "translation": "7727b4c3e9161bbd7263da14ad0d107af1347c21" }, - "modals.timeEntryEditor.title": null, - "modals.timeEntryEditor.addEntry": null, - "modals.timeEntryEditor.noEntries": null, - "modals.timeEntryEditor.deleteEntry": null, - "modals.timeEntryEditor.startTime": null, - "modals.timeEntryEditor.endTime": null, - "modals.timeEntryEditor.duration": null, - "modals.timeEntryEditor.durationDesc": null, - "modals.timeEntryEditor.durationPlaceholder": null, - "modals.timeEntryEditor.description": null, - "modals.timeEntryEditor.descriptionPlaceholder": null, - "modals.timeEntryEditor.calculatedDuration": null, - "modals.timeEntryEditor.totalTime": null, - "modals.timeEntryEditor.totalMinutes": null, - "modals.timeEntryEditor.saved": null, - "modals.timeEntryEditor.saveFailed": null, - "modals.timeEntryEditor.openFailed": null, - "modals.timeEntryEditor.noTasksWithEntries": null, - "modals.timeEntryEditor.validation.missingStartTime": null, - "modals.timeEntryEditor.validation.endBeforeStart": null, - "modals.timeTracking.noTasksAvailable": null, - "modals.timeTracking.started": null, - "modals.timeTracking.startFailed": null, - "modals.timeEntry.mustHaveSpecificTime": null, - "modals.timeEntry.noTasksAvailable": null, - "modals.timeEntry.created": null, - "modals.timeEntry.createFailed": null, + "modals.timeEntryEditor.title": { + "source": "5a583eaa9a1e14bd48dc7a8cc1ab3f8dbeae6d12", + "translation": "6fdacf76fcf07f1a85efe3dce65831e8efe1ec8b" + }, + "modals.timeEntryEditor.addEntry": { + "source": "49482cb4584ab3db093588777b7ac7f9dadb6ba5", + "translation": "7f51c6dca41a270ecdc37744d10ad14788b498a3" + }, + "modals.timeEntryEditor.noEntries": { + "source": "56ea4f47bf44cb3e8e420b5479548231f1f68b7b", + "translation": "7c4f2cc9d388403b956358131f7ba53ee0c34ae4" + }, + "modals.timeEntryEditor.deleteEntry": { + "source": "ccaf752b04ea9ccd6299a14c75e6bb065cd392b6", + "translation": "97470a5159072909ba2645f6288ef539eb25c0a6" + }, + "modals.timeEntryEditor.startTime": { + "source": "88d8206d586abe4c8e35c8e9adcc649d07c99a1e", + "translation": "e8868af6eb6ca224edd27128364e362d3c01cae1" + }, + "modals.timeEntryEditor.endTime": { + "source": "90525fcfc63aaf7370c341ff277299cd02df3705", + "translation": "52a9bd2b10af8d95b7847bd41245e6b46583271c" + }, + "modals.timeEntryEditor.duration": { + "source": "10c3d1ca4b19f76a702335cf54c4ad5e308b9269", + "translation": "d97f25ca4946df1b30c623cbf01defa0334acece" + }, + "modals.timeEntryEditor.durationDesc": { + "source": "03f5c59b12a26186f784cc542c31552236d7feca", + "translation": "fef38ca45030ae8b2da52d5227eaddf3914ba20a" + }, + "modals.timeEntryEditor.durationPlaceholder": { + "source": "01cdc0c08662f0a248e0a1c3739e7fcfd15bed2a", + "translation": "16c0564e6aff6158d00affde6c90b9de9eb6c168" + }, + "modals.timeEntryEditor.description": { + "source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af", + "translation": "412f54dc38e642eda535746e715503df35ad768f" + }, + "modals.timeEntryEditor.descriptionPlaceholder": { + "source": "89c8239873859b318429811db142d3b8c695b2ac", + "translation": "2a822f9caff00d35f95b54de7b01129a93e77f24" + }, + "modals.timeEntryEditor.calculatedDuration": { + "source": "b7cc42c87dac49b80cf3ab1b6f14860033a61e06", + "translation": "1ac29e2a893ceaf157f6ee62ae905449b6cd16ca" + }, + "modals.timeEntryEditor.totalTime": { + "source": "042bd2520b3f2b773bdad26dbd7da5faad717454", + "translation": "0a1e7edd4e22036756b067073a086d44fde9052f" + }, + "modals.timeEntryEditor.totalMinutes": { + "source": "97ff49bf5909a19e98de6e0fd5db5465acade28e", + "translation": "d253268bcbb3cfd3105395d1c6662d0d53613d08" + }, + "modals.timeEntryEditor.saved": { + "source": "4f5b612346e6ff0ccbf9bf1a2bc066b75d492182", + "translation": "ff9079ca54898c1594372d22435f19838ab37887" + }, + "modals.timeEntryEditor.saveFailed": { + "source": "ee11ad6a60432aedc8b7ffc17a114d7a10d64aa9", + "translation": "4cbd26ed37fd22cc66b5d875d59f011e33ab3667" + }, + "modals.timeEntryEditor.openFailed": { + "source": "b0e2d1ab7251bb67ffebe49b31ba77ecbb567e83", + "translation": "0c59ce6b3285c888cb3804ab082e5aa109591c7e" + }, + "modals.timeEntryEditor.noTasksWithEntries": { + "source": "634bcd14e86e7416c2c55af84ed5d586529e4c6f", + "translation": "c1b9e47924ce8a6fe690f80a335fa038df81bd90" + }, + "modals.timeEntryEditor.validation.missingStartTime": { + "source": "ece990b264aa1b7aee79dcef46cc950be2ec88d0", + "translation": "e0dbcece9586db749bb4b7063f3ad49171f70d00" + }, + "modals.timeEntryEditor.validation.endBeforeStart": { + "source": "468339327f19d1060b77fff4957224707e821025", + "translation": "b7117f6aade3d0a5f61cbd27b1e823daffdeb4c6" + }, + "modals.timeTracking.noTasksAvailable": { + "source": "f632e1e836cc6d1d58eee8c6aa178297f73658a4", + "translation": "c9a03d11698565a4005db3e6562253bb810347c3" + }, + "modals.timeTracking.started": { + "source": "6c0a2563cd30cfab8cee8ad540bba85df045de06", + "translation": "aa5d0c9509e862d8978f2eb4e21dd8727c16a145" + }, + "modals.timeTracking.startFailed": { + "source": "c1b914325ad18471661dcc078d2e4111856abffc", + "translation": "9fed9a648ed6d01952088d17407251ffd8921da8" + }, + "modals.timeEntry.mustHaveSpecificTime": { + "source": "b5e4624ad4a4356677441185f8d75c03831d1965", + "translation": "ffb29953b70cef34713617b169f102b9a0bfd80d" + }, + "modals.timeEntry.noTasksAvailable": { + "source": "8c8ab856815d4eced441cfd78f8b327a49ad7914", + "translation": "fcb8baece239484054b6474a9f8c5e35fa3e0877" + }, + "modals.timeEntry.created": { + "source": "c9c5244ef7123a90bf648150a3c88577a6dd955f", + "translation": "0d1fef96566c0d71761319cf2305c9c3fb7d5e65" + }, + "modals.timeEntry.createFailed": { + "source": "6b01c84eaddf7dd2da3a9f10a1470268926dd944", + "translation": "27e4e4024761094df2de591bf54ec7c61974e4df" + }, "contextMenus.task.status": { "source": "bae7d5be70820ed56467bd9a63744e23b47bd711", "translation": "62e951a692ff8f4e8a0e9049d726f42685237d0d" @@ -34252,37 +37753,130 @@ "source": "884de27a3c88d610e9f31a8be3ed4e9358ed06f6", "translation": "3a3f554a88e2d6a10099580ef2311289f0f8e686" }, - "contextMenus.task.dependencies.title": null, - "contextMenus.task.dependencies.addBlockedBy": null, - "contextMenus.task.dependencies.addBlockedByTitle": null, - "contextMenus.task.dependencies.addBlocking": null, - "contextMenus.task.dependencies.addBlockingTitle": null, - "contextMenus.task.dependencies.removeBlockedBy": null, - "contextMenus.task.dependencies.removeBlocking": null, - "contextMenus.task.dependencies.inputPlaceholder": null, - "contextMenus.task.dependencies.notices.noEntries": null, - "contextMenus.task.dependencies.notices.blockedByAdded": null, - "contextMenus.task.dependencies.notices.blockedByRemoved": null, - "contextMenus.task.dependencies.notices.blockingAdded": null, - "contextMenus.task.dependencies.notices.blockingRemoved": null, - "contextMenus.task.dependencies.notices.unresolved": null, - "contextMenus.task.dependencies.notices.noEligibleTasks": null, - "contextMenus.task.dependencies.notices.updateFailed": null, - "contextMenus.task.organization.title": null, - "contextMenus.task.organization.projects": null, - "contextMenus.task.organization.addToProject": null, - "contextMenus.task.organization.subtasks": null, - "contextMenus.task.organization.addSubtasks": null, - "contextMenus.task.organization.notices.alreadyInProject": null, - "contextMenus.task.organization.notices.alreadySubtask": null, - "contextMenus.task.organization.notices.addedToProject": null, - "contextMenus.task.organization.notices.addedAsSubtask": null, - "contextMenus.task.organization.notices.addToProjectFailed": null, - "contextMenus.task.organization.notices.addAsSubtaskFailed": null, - "contextMenus.task.organization.notices.projectSelectFailed": null, - "contextMenus.task.organization.notices.subtaskSelectFailed": null, - "contextMenus.task.organization.notices.noEligibleSubtasks": null, - "contextMenus.task.organization.notices.currentTaskNotFound": null, + "contextMenus.task.dependencies.title": { + "source": "0562f32dc56f5c702810cbe010068ddd38dbd69a", + "translation": "39ca45977ca9f5a70614047e46d96fbf4dddf084" + }, + "contextMenus.task.dependencies.addBlockedBy": { + "source": "f597543dba879a9e8140662ffa1f51d8e774e3e8", + "translation": "cde2bf8b8b4a5981b5ae01dbe9f7c9aeb71a1eb1" + }, + "contextMenus.task.dependencies.addBlockedByTitle": { + "source": "d3d38df38d0de13c4d53a7e9cf968474f56d3f84", + "translation": "ce216701cbdb9705bc476e4c5ec24cd43694ccdb" + }, + "contextMenus.task.dependencies.addBlocking": { + "source": "faeb5dd750b331cf31a798c4248e0af74a96c961", + "translation": "fee77d4e4989805981963cc3f92bf2caacff77a9" + }, + "contextMenus.task.dependencies.addBlockingTitle": { + "source": "5253abdd048b571bc40d69691cc3f82739f0f30c", + "translation": "f2b3e2f04a4246d6e1f0dc47760ba2288f17c5af" + }, + "contextMenus.task.dependencies.removeBlockedBy": { + "source": "7d38375d41dfda37e2adcdaea68e95312a792312", + "translation": "d36090a369b91f8bd82fd615752329e491c3563c" + }, + "contextMenus.task.dependencies.removeBlocking": { + "source": "29f784e16f2ca0df6d37a9fb6f29c3a186937738", + "translation": "4444b5c80141c84f2a7a8b0d703922d1ec91991e" + }, + "contextMenus.task.dependencies.inputPlaceholder": { + "source": "67c2a027f7b139a8b9103081eb4fb418e135cd38", + "translation": "cde761a18a3d3b85182fc314d5496a2fe766580e" + }, + "contextMenus.task.dependencies.notices.noEntries": { + "source": "e5145350fdd7dee5b4a532bea740c844b64d938e", + "translation": "c39a578311899b7d89ece3d9ae19fcd32f02ea0d" + }, + "contextMenus.task.dependencies.notices.blockedByAdded": { + "source": "5b40b08d56beaf43181cea5aeb55474c47a3e347", + "translation": "125f6099485cc78fa084d54a61123429f5c44472" + }, + "contextMenus.task.dependencies.notices.blockedByRemoved": { + "source": "57fad1951282c3f35aa4e286eaadd935155c6c61", + "translation": "d8ae45b21fc75a4fd1fcc649b6b7b5aff09a19a5" + }, + "contextMenus.task.dependencies.notices.blockingAdded": { + "source": "6c117c211cb78fa6a74d11cce12bd07b42d773fb", + "translation": "236b97b7cbbe644764503f1dbbd2891cb4c9abfc" + }, + "contextMenus.task.dependencies.notices.blockingRemoved": { + "source": "c9a2d7e53f16e772fe7d95a5b364553a1b5da4ce", + "translation": "ce382ffb2ffe0cf701c92d36a01c7c051b0810fc" + }, + "contextMenus.task.dependencies.notices.unresolved": { + "source": "545b04083e38f5969b9605a0ac51686b3124d5c8", + "translation": "cb6f9a83a62a9b250540df709f68ccbf443d303a" + }, + "contextMenus.task.dependencies.notices.noEligibleTasks": { + "source": "cbde1bf24f51daea65f8878a2dacd0ed80fd651a", + "translation": "1c5a0cf1b8681492fffef93cb8ffa7ecf45e34d7" + }, + "contextMenus.task.dependencies.notices.updateFailed": { + "source": "9d6d4726a51b50bb7ae7926ee341d84f79de7442", + "translation": "992d2bfdebad560ecd8f5cc54b233c57dff89887" + }, + "contextMenus.task.organization.title": { + "source": "519255ae1f74ffc5ddd29979295c7572f048ad81", + "translation": "a3540e824bd48b4f7a0046f108ac4ead76493471" + }, + "contextMenus.task.organization.projects": { + "source": "53e890d5f0fffe09587c55dce74e9a6febf59b5c", + "translation": "22336e6b892f14855e9f71b6ff9d861510dbe57b" + }, + "contextMenus.task.organization.addToProject": { + "source": "9dd214953c4e6809b5781c1d3e3e02314a5e0b60", + "translation": "d083e372bc49d514b869568af7d5b735a8a78247" + }, + "contextMenus.task.organization.subtasks": { + "source": "173312c6e2592de729610a4d319877c9aa8d8b67", + "translation": "2a8ce33ff0aaf399d3c99a0b98d76068189bb0c5" + }, + "contextMenus.task.organization.addSubtasks": { + "source": "e3be6d5743bddcf6860ae9b0e3b3195a615a9851", + "translation": "bcec5e13ad45f0c76edb300d887106403dc97f18" + }, + "contextMenus.task.organization.notices.alreadyInProject": { + "source": "1e29ecb2858c6534f5a0ce04cc31cacd4ae517b9", + "translation": "033b0c00b793a97db4fd7cc28df2030bf591a5d7" + }, + "contextMenus.task.organization.notices.alreadySubtask": { + "source": "1ba79408a9d9efc90cc09da294427b361ea47704", + "translation": "c30e39fb3b7dc1fd2717cacb97cc34ce814326bd" + }, + "contextMenus.task.organization.notices.addedToProject": { + "source": "16e3e41454eb0bb323fa483247d7bbc8d9f8682c", + "translation": "b03091a27d0bd4b205dbaa65fc668157015b2cec" + }, + "contextMenus.task.organization.notices.addedAsSubtask": { + "source": "58716eb79b04312adc6aff8fe462878ad590a61e", + "translation": "21d2064fcac24de21ee1dde692c1721ff8a2b51f" + }, + "contextMenus.task.organization.notices.addToProjectFailed": { + "source": "b33b7412093bbc9bf659f740f2f6a2c195e567fe", + "translation": "44a9e693c7f32aea23d5a8c57b1d1a94a6975a48" + }, + "contextMenus.task.organization.notices.addAsSubtaskFailed": { + "source": "7e976d9c2e9af1a6b11f181e40d19885d754c690", + "translation": "6c58be8ea4eefd8dd6205e9a0c23c329b711c694" + }, + "contextMenus.task.organization.notices.projectSelectFailed": { + "source": "ce7aecc0fc448d9b71a0fca743cf6a4089b08ec3", + "translation": "d3521834970023cddd9350bbf771e759a4f8ba9d" + }, + "contextMenus.task.organization.notices.subtaskSelectFailed": { + "source": "333c06c796628bc21ecdaa6da4556bbe343c2284", + "translation": "530515abf9b28d0993d2cbfad4a9de2b7db7608d" + }, + "contextMenus.task.organization.notices.noEligibleSubtasks": { + "source": "bce7ca1d7ce5603179f86b83b9074a4aa27de835", + "translation": "4206e6aa5673cb84b3e70cc84ddfbc928fd5bab9" + }, + "contextMenus.task.organization.notices.currentTaskNotFound": { + "source": "08026c9b7c99f5ebba74878389670c6236361b82", + "translation": "dabf8515c86d8cb1a768e3041d69fc31152093b0" + }, "contextMenus.task.subtasks.loading": { "source": "df656368163a3d196b63857636b0ee9e2a41273d", "translation": "c183e871bd336972aaee4f7fd430a3ad53c8876f" @@ -35203,11 +38797,35 @@ "source": "848eed0fbd5429f556b2982dec3ea87136e33e44", "translation": "ae0a7afecee1e83d27e322e287cb9bf351ea0018" }, - "ui.filterBar.group.completedDate": null, + "ui.filterBar.group.completedDate": { + "source": "0089d3b136526c1dfbe0487bc7c3c8ef99812909", + "translation": "02cb025ca36535fde353b9f20b199e484fafa2eb" + }, + "ui.filterBar.subgroupLabel": null, "ui.filterBar.notices.propertiesMenuFailed": { "source": "e9df8763e0af720e4edcfd8f3bd87af75a69f7a1", "translation": "1f237bc20f759ef50decd45f362077fe5b5fa74a" }, + "components.dateContextMenu.weekdays": null, + "components.dateContextMenu.clearDate": null, + "components.dateContextMenu.today": null, + "components.dateContextMenu.tomorrow": null, + "components.dateContextMenu.thisWeekend": null, + "components.dateContextMenu.nextWeek": null, + "components.dateContextMenu.nextMonth": null, + "components.dateContextMenu.setDateTime": null, + "components.dateContextMenu.dateLabel": null, + "components.dateContextMenu.timeLabel": null, + "components.subgroupMenuBuilder.none": null, + "components.subgroupMenuBuilder.status": null, + "components.subgroupMenuBuilder.priority": null, + "components.subgroupMenuBuilder.context": null, + "components.subgroupMenuBuilder.project": null, + "components.subgroupMenuBuilder.dueDate": null, + "components.subgroupMenuBuilder.scheduledDate": null, + "components.subgroupMenuBuilder.tags": null, + "components.subgroupMenuBuilder.completedDate": null, + "components.subgroupMenuBuilder.subgroup": null, "components.propertyVisibilityDropdown.coreProperties": { "source": "b3cfb1af6a8f2011725da9badb151b1c72b0e6ec", "translation": "6503db48028c919fb82aa2f1b6beb676980bc93e" diff --git a/package-lock.json b/package-lock.json index c24fc803..5f8e9770 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "tasknotes", - "version": "3.25.4", + "version": "3.25.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "tasknotes", - "version": "3.25.4", + "version": "3.25.6", "license": "MIT", "dependencies": { "@codemirror/view": "^6.37.2", @@ -136,6 +136,7 @@ "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -724,6 +725,7 @@ "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz", "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", "license": "MIT", + "peer": true, "dependencies": { "@marijn/find-cluster-break": "^1.0.0" } @@ -733,6 +735,7 @@ "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.1.tgz", "integrity": "sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ==", "license": "MIT", + "peer": true, "dependencies": { "@codemirror/state": "^6.5.0", "crelt": "^1.0.6", @@ -828,6 +831,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -851,6 +855,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -1447,6 +1452,7 @@ "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.19.tgz", "integrity": "sha512-z0aVlO5e4Wah6p6mouM0UEqtRf1MZZPt4mwzEyU6kusaNL+dlWQgAasF2cK23hwT4cmxkEmr4inULXgpyeExdQ==", "license": "MIT", + "peer": true, "dependencies": { "preact": "~10.12.1" } @@ -2634,6 +2640,7 @@ "integrity": "sha512-7199re3wvMAlVqXLaCyAr8IkJSXqkeVAxcYyB2rBu4Id5m2hhlGX1dQsdMBiCXLwu6/LLVqDvJggSNVQBzL6ZQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/css-font-loading-module": "^0.0.7" }, @@ -2683,6 +2690,7 @@ "integrity": "sha512-0XtvrfxHlS2T+beBBSpo7GI8+QLyyTqMVQpNmPqB4woYxzrOEJ9JaUFBaBfCvycLeUkfVih1u6HAbtF+2d1EjQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@pixi/color": "7.2.4", "@pixi/constants": "7.2.4", @@ -2705,6 +2713,7 @@ "integrity": "sha512-w5tqb8cWEO5qIDaO9GEqRvxYhL0iMk0Wsngw23bbLm1gLEQmrFkB2tpJlRAqd7H82C3DrDDeWvkrrxW6+m4apg==", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "@pixi/core": "7.2.4" } @@ -2715,6 +2724,7 @@ "integrity": "sha512-/JtmoB98fzIU8giN9xvlRvmvOi6u4MaD2DnKNOMHkQ1MBraj3pmrXM9fZ0JbNzi+324GraAAY76QidgHjIYoYQ==", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "@pixi/core": "7.2.4", "@pixi/display": "7.2.4" @@ -2803,6 +2813,7 @@ "integrity": "sha512-3A2EumTjWJgXlDLOyuBrl9b6v1Za/E+/IjOGUIX843HH4NYaf1a2sfDfljx6r3oiDvy+VhuBFmgynRcV5IyA0Q==", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "@pixi/core": "7.2.4", "@pixi/display": "7.2.4", @@ -2822,6 +2833,7 @@ "integrity": "sha512-wiALIqcRKib2BqeH9kOA5fOKWN352nqAspgbDa8gA7OyWzmNwqIedIlElixd0oLFOrIN5jOZAdzeKnoYQlt9Aw==", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "@pixi/core": "7.2.4", "@pixi/display": "7.2.4" @@ -2928,6 +2940,7 @@ "integrity": "sha512-DhR1B+/d0eXpxHIesJMXcVPrKFwQ+zRA1LvEIFfzewqfaRN3X6PMIuoKX8SIb6tl+Hq8Ba9Pe28zI7d2rmRzrA==", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "@pixi/core": "7.2.4", "@pixi/display": "7.2.4" @@ -2973,6 +2986,7 @@ "integrity": "sha512-DGu7ktpe+zHhqR2sG9NsJt4mgvSObv5EqXTtUxD4Z0li1gmqF7uktpLyn5I6vSg1TTEL4TECClRDClVDGiykWw==", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "@pixi/core": "7.2.4", "@pixi/sprite": "7.2.4" @@ -3023,6 +3037,7 @@ "integrity": "sha512-VUGQHBOINIS4ePzoqafwxaGPVRTa3oM/mEutIIHbNGI3b+QvSO+1Dnk40M0zcH6Bo+MxQZbOZK5X/wO9oU5+LQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@pixi/color": "7.2.4", "@pixi/constants": "7.2.4", @@ -3843,6 +3858,7 @@ "integrity": "sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.29.0", "@typescript-eslint/types": "5.29.0", @@ -4461,6 +4477,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4914,6 +4931,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001718", "electron-to-chromium": "^1.5.160", @@ -5149,6 +5167,7 @@ "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@chevrotain/cst-dts-gen": "11.0.3", "@chevrotain/gast": "11.0.3", @@ -5361,6 +5380,7 @@ "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10" } @@ -5795,6 +5815,7 @@ "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "dev": true, "license": "ISC", + "peer": true, "engines": { "node": ">=12" } @@ -6540,6 +6561,7 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -6612,6 +6634,7 @@ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -8954,6 +8977,7 @@ "integrity": "sha512-yC3JvpP/ZcAZX5rYCtXO/g9k6VTCQz0VFE2v1FpxytWzUqfDtu0XL/pwnNvptzYItvGwomh1ehomRNMOyhCJKw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "30.1.1", "@jest/types": "30.0.5", @@ -9715,6 +9739,7 @@ "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "cssstyle": "^4.2.1", "data-urls": "^5.0.0", @@ -11123,6 +11148,7 @@ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -12675,6 +12701,7 @@ "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -12751,6 +12778,7 @@ "integrity": "sha512-V1EknKUubZ1gWFjiOZhDSNToOjs63/9O0puCgGS8aDOgpZY326fzFu15QAUjwaXzRZjf/qdsdBrckYdv9YxB8w==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "7.1.0", "@typescript-eslint/types": "7.1.0", diff --git a/scripts/add-missing-translations.mjs b/scripts/add-missing-translations.mjs new file mode 100644 index 00000000..d42ded9d --- /dev/null +++ b/scripts/add-missing-translations.mjs @@ -0,0 +1,268 @@ +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const RESOURCES_DIR = path.resolve(__dirname, '../src/i18n/resources'); + +// Helper to build nested object from dot notation +function setNestedValue(obj, pathStr, value) { + const parts = pathStr.split('.'); + const last = parts.pop(); + let current = obj; + for (const part of parts) { + if (!current[part]) { + current[part] = {}; + } + current = current[part]; + } + current[last] = value; +} + +// Helper to get nested value +function getNestedValue(obj, pathStr) { + const parts = pathStr.split('.'); + let current = obj; + for (const part of parts) { + if (!current || typeof current !== 'object') return undefined; + current = current[part]; + } + return current; +} + +// Parse TypeScript object to JavaScript object (simple version) +function parseTS File(content, locale) { + // Remove imports and type exports + content = content.replace(/^import\s+.*?;$/gm, ''); + content = content.replace(/export\s+type\s+.*?;$/gm, ''); + + // Convert to module export + content = content.replace( + new RegExp(`export\\s+const\\s+${locale}\\s*:\\s*\\w+\\s*=\\s*`, 'g'), + 'export default ' + ); + content = content.replace( + new RegExp(`export\\s+const\\s+${locale}\\s*=\\s*`, 'g'), + 'export default ' + ); + + const tempPath = path.join(RESOURCES_DIR, `.${locale}.temp.mjs`); + fs.writeFileSync(tempPath, content); + + try { + const absolutePath = path.resolve(tempPath); + const module = await import(`file://${absolutePath}?v=${Date.now()}`); + return module.default; + } finally { + if (fs.existsSync(tempPath)) { + fs.unlinkSync(tempPath); + } + } +} + +// Convert object back to TypeScript string +function objectToTS(obj, indent = '\t', level = 1) { + const entries = []; + const currentIndent = indent.repeat(level); + const nextIndent = indent.repeat(level + 1); + + for (const [key, value] of Object.entries(obj)) { + if (typeof value === 'string') { + // Escape special characters + const escaped = value + .replace(/\\/g, '\\\\') + .replace(/"/g, '\\"') + .replace(/\n/g, '\\n') + .replace(/\t/g, '\\t'); + entries.push(`${currentIndent}${key}: "${escaped}",`); + } else if (typeof value === 'object' && value !== null) { + entries.push(`${currentIndent}${key}: {`); + entries.push(objectToTS(value, indent, level + 1)); + entries.push(`${currentIndent}},`); + } + } + + return entries.join('\n'); +} + +// Translation mappings +const translations = { + fr: { + "views.notes.refreshingButton": "Actualisation...", + "views.notes.empty.helpText": "Aucune note trouvée pour la date sélectionnée. Essayez de sélectionner une date différente dans la vue Mini Calendrier ou créez quelques notes.", + "views.notes.loading": "Chargement des notes...", + "views.notes.refreshButtonAriaLabel": "Actualiser la liste des notes", + "notices.icsNoteCreatedSuccess": "Note créée avec succès", + "notices.icsCreationModalOpenFailed": "Échec de l'ouverture de la modale de création", + "notices.icsNoteLinkSuccess": "Note \"{fileName}\" liée à l'événement ICS", + "notices.icsTaskCreatedSuccess": "Tâche créée : {title}", + "notices.icsRelatedItemsRefreshed": "Notes associées actualisées", + "notices.icsFileNotFound": "Fichier introuvable ou invalide", + "notices.icsFileOpenFailed": "Échec de l'ouverture du fichier", + "notices.timeblockAttachmentExists": "\"{fileName}\" est déjà attaché", + "notices.timeblockAttachmentAdded": "\"{fileName}\" ajouté comme pièce jointe", + "notices.timeblockAttachmentRemoved": "\"{fileName}\" retiré des pièces jointes", + "notices.timeblockFileTypeNotSupported": "Impossible d'ouvrir \"{fileName}\" - type de fichier non pris en charge", + "notices.timeblockTitleRequired": "Veuillez saisir un titre pour le bloc de temps", + "notices.timeblockUpdatedSuccess": "Bloc de temps \"{title}\" mis à jour avec succès", + "notices.timeblockUpdateFailed": "Échec de la mise à jour du bloc de temps. Consultez la console pour plus de détails.", + "notices.timeblockDeletedSuccess": "Bloc de temps \"{title}\" supprimé avec succès", + "notices.timeblockDeleteFailed": "Échec de la suppression du bloc de temps. Consultez la console pour plus de détails.", + "notices.timeblockRequiredFieldsMissing": "Veuillez remplir tous les champs requis", + "notices.agendaLoadingFailed": "Erreur lors du chargement de l'agenda. Veuillez essayer d'actualiser.", + "notices.statsLoadingFailed": "Erreur lors du chargement des détails du projet.", + "modals.deviceCode.title": "Autorisation Google Calendar", + "modals.deviceCode.instructions.intro": "Pour connecter votre Google Calendar, veuillez suivre ces étapes :", + "modals.deviceCode.steps.open": "Ouvrir", + "modals.deviceCode.steps.inBrowser": "dans votre navigateur", + "modals.deviceCode.steps.enterCode": "Entrez ce code lorsque demandé :", + "modals.deviceCode.steps.signIn": "Connectez-vous avec votre compte Google et accordez l'accès", + "modals.deviceCode.steps.returnToObsidian": "Retournez à Obsidian (cette fenêtre se fermera automatiquement)", + "modals.deviceCode.codeLabel": "Votre code :", + "modals.deviceCode.copyCodeAriaLabel": "Copier le code", + "modals.deviceCode.waitingForAuthorization": "En attente d'autorisation...", + "modals.deviceCode.openBrowserButton": "Ouvrir le navigateur", + "modals.deviceCode.cancelButton": "Annuler", + "modals.deviceCode.expiresMinutesSeconds": "Le code expire dans {minutes}m {seconds}s", + "modals.deviceCode.expiresSeconds": "Le code expire dans {seconds}s", + "modals.icsEventInfo.calendarEventHeading": "Événement de calendrier", + "modals.icsEventInfo.titleLabel": "Titre", + "modals.icsEventInfo.calendarLabel": "Calendrier", + "modals.icsEventInfo.dateTimeLabel": "Date et heure", + "modals.icsEventInfo.locationLabel": "Lieu", + "modals.icsEventInfo.descriptionLabel": "Description", + "modals.icsEventInfo.urlLabel": "URL", + "modals.icsEventInfo.relatedNotesHeading": "Notes et tâches associées", + "modals.icsEventInfo.noRelatedItems": "Aucune note ou tâche associée trouvée pour cet événement.", + "modals.icsEventInfo.typeTask": "Tâche", + "modals.icsEventInfo.typeNote": "Note", + "modals.icsEventInfo.actionsHeading": "Actions", + "modals.icsEventInfo.createFromEventLabel": "Créer à partir de l'événement", + "modals.icsEventInfo.createFromEventDesc": "Créer une nouvelle note ou tâche à partir de cet événement de calendrier", + "modals.icsEventInfo.linkExistingLabel": "Lier existant", + "modals.icsEventInfo.linkExistingDesc": "Lier une note existante à cet événement de calendrier", + "modals.timeblockInfo.editHeading": "Modifier le bloc de temps", + "modals.timeblockInfo.dateTimeLabel": "Date et heure : ", + "modals.timeblockInfo.titleLabel": "Titre", + "modals.timeblockInfo.titleDesc": "Titre de votre bloc de temps", + "modals.timeblockInfo.titlePlaceholder": "ex., Session de travail approfondi", + "modals.timeblockInfo.descriptionLabel": "Description", + "modals.timeblockInfo.descriptionDesc": "Description optionnelle du bloc de temps", + "modals.timeblockInfo.descriptionPlaceholder": "Concentrez-vous sur les nouvelles fonctionnalités, sans interruptions", + "modals.timeblockInfo.colorLabel": "Couleur", + "modals.timeblockInfo.colorDesc": "Couleur optionnelle pour le bloc de temps", + "modals.timeblockInfo.colorPlaceholder": "#3b82f6", + "modals.timeblockInfo.attachmentsLabel": "Pièces jointes", + "modals.timeblockInfo.attachmentsDesc": "Fichiers ou notes liés à ce bloc de temps", + "modals.timeblockInfo.addAttachmentButton": "Ajouter une pièce jointe", + "modals.timeblockInfo.addAttachmentTooltip": "Sélectionnez un fichier ou une note en utilisant la recherche floue", + "modals.timeblockInfo.deleteButton": "Supprimer le bloc de temps", + "modals.timeblockInfo.saveButton": "Enregistrer les modifications", + "modals.timeblockInfo.deleteConfirmationTitle": "Supprimer le bloc de temps", + "modals.timeblockCreation.heading": "Créer un bloc de temps", + "modals.timeblockCreation.dateLabel": "Date : ", + "modals.timeblockCreation.titleLabel": "Titre", + "modals.timeblockCreation.titleDesc": "Titre de votre bloc de temps", + "modals.timeblockCreation.titlePlaceholder": "ex., Session de travail approfondi", + "modals.timeblockCreation.startTimeLabel": "Heure de début", + "modals.timeblockCreation.startTimeDesc": "Quand le bloc de temps commence", + "modals.timeblockCreation.startTimePlaceholder": "09:00", + "modals.timeblockCreation.endTimeLabel": "Heure de fin", + "modals.timeblockCreation.endTimeDesc": "Quand le bloc de temps se termine", + "modals.timeblockCreation.endTimePlaceholder": "11:00", + "modals.timeblockCreation.descriptionLabel": "Description", + "modals.timeblockCreation.descriptionDesc": "Description optionnelle du bloc de temps", + "modals.timeblockCreation.descriptionPlaceholder": "Concentrez-vous sur les nouvelles fonctionnalités, sans interruptions", + "modals.timeblockCreation.colorLabel": "Couleur", + "modals.timeblockCreation.colorDesc": "Couleur optionnelle pour le bloc de temps", + "modals.timeblockCreation.colorPlaceholder": "#3b82f6", + "modals.timeblockCreation.attachmentsLabel": "Pièces jointes", + "modals.timeblockCreation.attachmentsDesc": "Fichiers ou notes à lier à ce bloc de temps", + "modals.timeblockCreation.addAttachmentButton": "Ajouter une pièce jointe", + "modals.timeblockCreation.addAttachmentTooltip": "Sélectionnez un fichier ou une note en utilisant la recherche floue", + "modals.timeblockCreation.createButton": "Créer un bloc de temps", + "modals.icsNoteCreation.heading": "Créer à partir d'un événement ICS", + "modals.icsNoteCreation.titleLabel": "Titre", + "modals.icsNoteCreation.titleDesc": "Titre du nouveau contenu", + "modals.icsNoteCreation.folderLabel": "Dossier", + "modals.icsNoteCreation.folderDesc": "Dossier de destination (laisser vide pour la racine du coffre)", + "modals.icsNoteCreation.folderPlaceholder": "dossier/sous-dossier", + "modals.icsNoteCreation.createButton": "Créer", + "modals.icsNoteCreation.startLabel": "Début : ", + "modals.icsNoteCreation.endLabel": "Fin : ", + "modals.icsNoteCreation.locationLabel": "Lieu : ", + "modals.icsNoteCreation.calendarLabel": "Calendrier : ", + "modals.icsNoteCreation.useTemplateLabel": "Utiliser un modèle", + "modals.icsNoteCreation.useTemplateDesc": "Appliquer un modèle lors de la création du contenu", + "modals.icsNoteCreation.templatePathLabel": "Chemin du modèle", + "modals.icsNoteCreation.templatePathDesc": "Chemin vers le fichier de modèle", + "modals.icsNoteCreation.templatePathPlaceholder": "templates/ics-note-template.md", + "ui.filterBar.subgroupLabel": "SOUS-GROUPE", + "components.dateContextMenu.weekdays": "Jours de semaine", + "components.dateContextMenu.clearDate": "Effacer la date", + "components.dateContextMenu.today": "Aujourd'hui", + "components.dateContextMenu.tomorrow": "Demain", + "components.dateContextMenu.thisWeekend": "Ce week-end", + "components.dateContextMenu.nextWeek": "La semaine prochaine", + "components.dateContextMenu.nextMonth": "Le mois prochain", + "components.dateContextMenu.setDateTime": "Définir la date et l'heure", + "components.dateContextMenu.dateLabel": "Date", + "components.dateContextMenu.timeLabel": "Heure (optionnelle)", + "components.subgroupMenuBuilder.none": "Aucun", + "components.subgroupMenuBuilder.status": "Statut", + "components.subgroupMenuBuilder.priority": "Priorité", + "components.subgroupMenuBuilder.context": "Contexte", + "components.subgroupMenuBuilder.project": "Projet", + "components.subgroupMenuBuilder.dueDate": "Date d'échéance", + "components.subgroupMenuBuilder.scheduledDate": "Date programmée", + "components.subgroupMenuBuilder.tags": "Étiquettes", + "components.subgroupMenuBuilder.completedDate": "Date de finalisation", + "components.subgroupMenuBuilder.subgroup": "SOUS-GROUPE", + }, +}; + +// Main execution +const locale = process.argv[2]; +if (!locale || !translations[locale]) { + console.error(`Usage: node add-missing-translations.mjs `); + console.error(`Available locales: ${Object.keys(translations).join(', ')}`); + process.exit(1); +} + +console.log(`\nAdding missing translations for ${locale}...`); + +const filePath = path.join(RESOURCES_DIR, `${locale}.ts`); +const content = fs.readFileSync(filePath, 'utf8'); + +// Load and parse current translations +const currentObj = await parseTS File(content, locale); + +// Add missing translations +let addedCount = 0; +const translationMap = translations[locale]; + +for (const [key, value] of Object.entries(translationMap)) { + const existing = getNestedValue(currentObj, key); + if (existing === undefined) { + setNestedValue(currentObj, key, value); + addedCount++; + console.log(` ✓ Added: ${key}`); + } else { + console.log(` - Skipped (exists): ${key}`); + } +} + +// Generate new TypeScript content +const newContent = `import type { Translation } from "./en"; + +export const ${locale}: Translation = { +${objectToTS(currentObj, '\t', 1)} +}; + +export type ${locale.charAt(0).toUpperCase() + locale.slice(1)}Translation = typeof ${locale}; +`; + +// Write back +fs.writeFileSync(filePath, newContent); + +console.log(`\n✓ Completed ${locale}: Added ${addedCount} translations`); diff --git a/scripts/add-translations.mjs b/scripts/add-translations.mjs new file mode 100644 index 00000000..79859a8b --- /dev/null +++ b/scripts/add-translations.mjs @@ -0,0 +1,662 @@ +import fs from 'fs'; +import path from 'path'; + +const RESOURCES_DIR = path.resolve('src/i18n/resources'); + +// Translation mappings +const translations = { + fr: { + "views.agenda.empty.helpText": "Créez des tâches avec des dates d'échéance ou programmées, ou ajoutez des notes pour les voir ici.", + "views.agenda.contextMenu.showOverdueSection": "Afficher la section en retard", + "views.agenda.contextMenu.showNotes": "Afficher les notes", + "views.agenda.contextMenu.calendarSubscriptions": "Abonnements au calendrier", + "views.agenda.periods.thisWeek": "Cette semaine", + "views.agenda.tipPrefix": "Astuce : ", + "views.notes.refreshingButton": "Actualisation...", + "views.notes.empty.helpText": "Aucune note trouvée pour la date sélectionnée. Essayez de sélectionner une date différente dans la vue Mini Calendrier ou créez quelques notes.", + "views.notes.loading": "Chargement des notes...", + "views.notes.refreshButtonAriaLabel": "Actualiser la liste des notes", + "views.kanban.uncategorized": "Non catégorisé", + "views.kanban.noProject": "Aucun projet", + "views.kanban.columnTitle": "Sans titre", + "notices.icsNoteCreatedSuccess": "Note créée avec succès", + "notices.icsCreationModalOpenFailed": "Échec de l'ouverture de la modale de création", + "notices.icsNoteLinkSuccess": "Note \"{fileName}\" liée à l'événement ICS", + "notices.icsTaskCreatedSuccess": "Tâche créée : {title}", + "notices.icsRelatedItemsRefreshed": "Notes associées actualisées", + "notices.icsFileNotFound": "Fichier introuvable ou invalide", + "notices.icsFileOpenFailed": "Échec de l'ouverture du fichier", + "notices.timeblockAttachmentExists": "\"{fileName}\" est déjà attaché", + "notices.timeblockAttachmentAdded": "\"{fileName}\" ajouté comme pièce jointe", + "notices.timeblockAttachmentRemoved": "\"{fileName}\" retiré des pièces jointes", + "notices.timeblockFileTypeNotSupported": "Impossible d'ouvrir \"{fileName}\" - type de fichier non pris en charge", + "notices.timeblockTitleRequired": "Veuillez saisir un titre pour le bloc de temps", + "notices.timeblockUpdatedSuccess": "Bloc de temps \"{title}\" mis à jour avec succès", + "notices.timeblockUpdateFailed": "Échec de la mise à jour du bloc de temps. Consultez la console pour plus de détails.", + "notices.timeblockDeletedSuccess": "Bloc de temps \"{title}\" supprimé avec succès", + "notices.timeblockDeleteFailed": "Échec de la suppression du bloc de temps. Consultez la console pour plus de détails.", + "notices.timeblockRequiredFieldsMissing": "Veuillez remplir tous les champs requis", + "notices.agendaLoadingFailed": "Erreur lors du chargement de l'agenda. Veuillez essayer d'actualiser.", + "notices.statsLoadingFailed": "Erreur lors du chargement des détails du projet.", + "modals.deviceCode.title": "Autorisation Google Calendar", + "modals.deviceCode.instructions.intro": "Pour connecter votre Google Calendar, veuillez suivre ces étapes :", + "modals.deviceCode.steps.open": "Ouvrir", + "modals.deviceCode.steps.inBrowser": "dans votre navigateur", + "modals.deviceCode.steps.enterCode": "Entrez ce code lorsque demandé :", + "modals.deviceCode.steps.signIn": "Connectez-vous avec votre compte Google et accordez l'accès", + "modals.deviceCode.steps.returnToObsidian": "Retournez à Obsidian (cette fenêtre se fermera automatiquement)", + "modals.deviceCode.codeLabel": "Votre code :", + "modals.deviceCode.copyCodeAriaLabel": "Copier le code", + "modals.deviceCode.waitingForAuthorization": "En attente d'autorisation...", + "modals.deviceCode.openBrowserButton": "Ouvrir le navigateur", + "modals.deviceCode.cancelButton": "Annuler", + "modals.deviceCode.expiresMinutesSeconds": "Le code expire dans {minutes}m {seconds}s", + "modals.deviceCode.expiresSeconds": "Le code expire dans {seconds}s", + "modals.icsEventInfo.calendarEventHeading": "Événement de calendrier", + "modals.icsEventInfo.titleLabel": "Titre", + "modals.icsEventInfo.calendarLabel": "Calendrier", + "modals.icsEventInfo.dateTimeLabel": "Date et heure", + "modals.icsEventInfo.locationLabel": "Lieu", + "modals.icsEventInfo.descriptionLabel": "Description", + "modals.icsEventInfo.urlLabel": "URL", + "modals.icsEventInfo.relatedNotesHeading": "Notes et tâches associées", + "modals.icsEventInfo.noRelatedItems": "Aucune note ou tâche associée trouvée pour cet événement.", + "modals.icsEventInfo.typeTask": "Tâche", + "modals.icsEventInfo.typeNote": "Note", + "modals.icsEventInfo.actionsHeading": "Actions", + "modals.icsEventInfo.createFromEventLabel": "Créer à partir de l'événement", + "modals.icsEventInfo.createFromEventDesc": "Créer une nouvelle note ou tâche à partir de cet événement de calendrier", + "modals.icsEventInfo.linkExistingLabel": "Lier existant", + "modals.icsEventInfo.linkExistingDesc": "Lier une note existante à cet événement de calendrier", + "modals.timeblockInfo.editHeading": "Modifier le bloc de temps", + "modals.timeblockInfo.dateTimeLabel": "Date et heure : ", + "modals.timeblockInfo.titleLabel": "Titre", + "modals.timeblockInfo.titleDesc": "Titre de votre bloc de temps", + "modals.timeblockInfo.titlePlaceholder": "ex., Session de travail approfondi", + "modals.timeblockInfo.descriptionLabel": "Description", + "modals.timeblockInfo.descriptionDesc": "Description optionnelle du bloc de temps", + "modals.timeblockInfo.descriptionPlaceholder": "Concentrez-vous sur les nouvelles fonctionnalités, sans interruptions", + "modals.timeblockInfo.colorLabel": "Couleur", + "modals.timeblockInfo.colorDesc": "Couleur optionnelle pour le bloc de temps", + "modals.timeblockInfo.colorPlaceholder": "#3b82f6", + "modals.timeblockInfo.attachmentsLabel": "Pièces jointes", + "modals.timeblockInfo.attachmentsDesc": "Fichiers ou notes liés à ce bloc de temps", + "modals.timeblockInfo.addAttachmentButton": "Ajouter une pièce jointe", + "modals.timeblockInfo.addAttachmentTooltip": "Sélectionnez un fichier ou une note en utilisant la recherche floue", + "modals.timeblockInfo.deleteButton": "Supprimer le bloc de temps", + "modals.timeblockInfo.saveButton": "Enregistrer les modifications", + "modals.timeblockInfo.deleteConfirmationTitle": "Supprimer le bloc de temps", + "modals.timeblockCreation.heading": "Créer un bloc de temps", + "modals.timeblockCreation.dateLabel": "Date : ", + "modals.timeblockCreation.titleLabel": "Titre", + "modals.timeblockCreation.titleDesc": "Titre de votre bloc de temps", + "modals.timeblockCreation.titlePlaceholder": "ex., Session de travail approfondi", + "modals.timeblockCreation.startTimeLabel": "Heure de début", + "modals.timeblockCreation.startTimeDesc": "Quand le bloc de temps commence", + "modals.timeblockCreation.startTimePlaceholder": "09:00", + "modals.timeblockCreation.endTimeLabel": "Heure de fin", + "modals.timeblockCreation.endTimeDesc": "Quand le bloc de temps se termine", + "modals.timeblockCreation.endTimePlaceholder": "11:00", + "modals.timeblockCreation.descriptionLabel": "Description", + "modals.timeblockCreation.descriptionDesc": "Description optionnelle du bloc de temps", + "modals.timeblockCreation.descriptionPlaceholder": "Concentrez-vous sur les nouvelles fonctionnalités, sans interruptions", + "modals.timeblockCreation.colorLabel": "Couleur", + "modals.timeblockCreation.colorDesc": "Couleur optionnelle pour le bloc de temps", + "modals.timeblockCreation.colorPlaceholder": "#3b82f6", + "modals.timeblockCreation.attachmentsLabel": "Pièces jointes", + "modals.timeblockCreation.attachmentsDesc": "Fichiers ou notes à lier à ce bloc de temps", + "modals.timeblockCreation.addAttachmentButton": "Ajouter une pièce jointe", + "modals.timeblockCreation.addAttachmentTooltip": "Sélectionnez un fichier ou une note en utilisant la recherche floue", + "modals.timeblockCreation.createButton": "Créer un bloc de temps", + "modals.icsNoteCreation.heading": "Créer à partir d'un événement ICS", + "modals.icsNoteCreation.titleLabel": "Titre", + "modals.icsNoteCreation.titleDesc": "Titre du nouveau contenu", + "modals.icsNoteCreation.folderLabel": "Dossier", + "modals.icsNoteCreation.folderDesc": "Dossier de destination (laisser vide pour la racine du coffre)", + "modals.icsNoteCreation.folderPlaceholder": "dossier/sous-dossier", + "modals.icsNoteCreation.createButton": "Créer", + "modals.icsNoteCreation.startLabel": "Début : ", + "modals.icsNoteCreation.endLabel": "Fin : ", + "modals.icsNoteCreation.locationLabel": "Lieu : ", + "modals.icsNoteCreation.calendarLabel": "Calendrier : ", + "modals.icsNoteCreation.useTemplateLabel": "Utiliser un modèle", + "modals.icsNoteCreation.useTemplateDesc": "Appliquer un modèle lors de la création du contenu", + "modals.icsNoteCreation.templatePathLabel": "Chemin du modèle", + "modals.icsNoteCreation.templatePathDesc": "Chemin vers le fichier de modèle", + "modals.icsNoteCreation.templatePathPlaceholder": "templates/ics-note-template.md", + "ui.filterBar.subgroupLabel": "SOUS-GROUPE", + "components.dateContextMenu.weekdays": "Jours de semaine", + "components.dateContextMenu.clearDate": "Effacer la date", + "components.dateContextMenu.today": "Aujourd'hui", + "components.dateContextMenu.tomorrow": "Demain", + "components.dateContextMenu.thisWeekend": "Ce week-end", + "components.dateContextMenu.nextWeek": "La semaine prochaine", + "components.dateContextMenu.nextMonth": "Le mois prochain", + "components.dateContextMenu.setDateTime": "Définir la date et l'heure", + "components.dateContextMenu.dateLabel": "Date", + "components.dateContextMenu.timeLabel": "Heure (optionnelle)", + "components.subgroupMenuBuilder.none": "Aucun", + "components.subgroupMenuBuilder.status": "Statut", + "components.subgroupMenuBuilder.priority": "Priorité", + "components.subgroupMenuBuilder.context": "Contexte", + "components.subgroupMenuBuilder.project": "Projet", + "components.subgroupMenuBuilder.dueDate": "Date d'échéance", + "components.subgroupMenuBuilder.scheduledDate": "Date programmée", + "components.subgroupMenuBuilder.tags": "Étiquettes", + "components.subgroupMenuBuilder.completedDate": "Date de finalisation", + "components.subgroupMenuBuilder.subgroup": "SOUS-GROUPE", + }, + ja: { + // Japanese translations with polite です/ます form + "views.agenda.empty.helpText": "期限や予定日を持つタスクを作成するか、ノートを追加してここに表示します。", + "views.agenda.contextMenu.showOverdueSection": "期限切れセクションを表示", + "views.agenda.contextMenu.showNotes": "ノートを表示", + "views.agenda.contextMenu.calendarSubscriptions": "カレンダーサブスクリプション", + "views.agenda.periods.thisWeek": "今週", + "views.agenda.tipPrefix": "ヒント:", + "views.notes.refreshingButton": "更新中...", + "views.notes.empty.helpText": "選択した日付のノートが見つかりませんでした。ミニカレンダービューで別の日付を選択するか、ノートを作成してください。", + "views.notes.loading": "ノートを読み込み中...", + "views.notes.refreshButtonAriaLabel": "ノートリストを更新", + "views.kanban.uncategorized": "未分類", + "views.kanban.noProject": "プロジェクトなし", + "views.kanban.columnTitle": "無題", + "notices.icsNoteCreatedSuccess": "ノートが正常に作成されました", + "notices.icsCreationModalOpenFailed": "作成モーダルを開けませんでした", + "notices.icsNoteLinkSuccess": "ノート「{fileName}」をICSイベントにリンクしました", + "notices.icsTaskCreatedSuccess": "タスクを作成しました:{title}", + "notices.icsRelatedItemsRefreshed": "関連ノートを更新しました", + "notices.icsFileNotFound": "ファイルが見つからないか無効です", + "notices.icsFileOpenFailed": "ファイルを開けませんでした", + "notices.timeblockAttachmentExists": "「{fileName}」は既に添付されています", + "notices.timeblockAttachmentAdded": "「{fileName}」を添付ファイルとして追加しました", + "notices.timeblockAttachmentRemoved": "「{fileName}」を添付ファイルから削除しました", + "notices.timeblockFileTypeNotSupported": "「{fileName}」を開けません - ファイルタイプがサポートされていません", + "notices.timeblockTitleRequired": "タイムブロックのタイトルを入力してください", + "notices.timeblockUpdatedSuccess": "タイムブロック「{title}」を正常に更新しました", + "notices.timeblockUpdateFailed": "タイムブロックの更新に失敗しました。詳細はコンソールを確認してください。", + "notices.timeblockDeletedSuccess": "タイムブロック「{title}」を正常に削除しました", + "notices.timeblockDeleteFailed": "タイムブロックの削除に失敗しました。詳細はコンソールを確認してください。", + "notices.timeblockRequiredFieldsMissing": "必須フィールドをすべて入力してください", + "notices.agendaLoadingFailed": "アジェンダの読み込みエラー。更新をお試しください。", + "notices.statsLoadingFailed": "プロジェクトの詳細の読み込みエラー。", + "modals.deviceCode.title": "Google Calendar認証", + "modals.deviceCode.instructions.intro": "Google Calendarに接続するには、次の手順に従ってください:", + "modals.deviceCode.steps.open": "開く", + "modals.deviceCode.steps.inBrowser": "ブラウザで", + "modals.deviceCode.steps.enterCode": "プロンプトが表示されたら、このコードを入力してください:", + "modals.deviceCode.steps.signIn": "Googleアカウントでサインインし、アクセスを許可してください", + "modals.deviceCode.steps.returnToObsidian": "Obsidianに戻る(このウィンドウは自動的に閉じます)", + "modals.deviceCode.codeLabel": "あなたのコード:", + "modals.deviceCode.copyCodeAriaLabel": "コードをコピー", + "modals.deviceCode.waitingForAuthorization": "認証を待機中...", + "modals.deviceCode.openBrowserButton": "ブラウザを開く", + "modals.deviceCode.cancelButton": "キャンセル", + "modals.deviceCode.expiresMinutesSeconds": "コードは{minutes}分{seconds}秒後に期限切れになります", + "modals.deviceCode.expiresSeconds": "コードは{seconds}秒後に期限切れになります", + "modals.icsEventInfo.calendarEventHeading": "カレンダーイベント", + "modals.icsEventInfo.titleLabel": "タイトル", + "modals.icsEventInfo.calendarLabel": "カレンダー", + "modals.icsEventInfo.dateTimeLabel": "日時", + "modals.icsEventInfo.locationLabel": "場所", + "modals.icsEventInfo.descriptionLabel": "説明", + "modals.icsEventInfo.urlLabel": "URL", + "modals.icsEventInfo.relatedNotesHeading": "関連するノートとタスク", + "modals.icsEventInfo.noRelatedItems": "このイベントに関連するノートまたはタスクが見つかりませんでした。", + "modals.icsEventInfo.typeTask": "タスク", + "modals.icsEventInfo.typeNote": "ノート", + "modals.icsEventInfo.actionsHeading": "アクション", + "modals.icsEventInfo.createFromEventLabel": "イベントから作成", + "modals.icsEventInfo.createFromEventDesc": "このカレンダーイベントから新しいノートまたはタスクを作成します", + "modals.icsEventInfo.linkExistingLabel": "既存をリンク", + "modals.icsEventInfo.linkExistingDesc": "既存のノートをこのカレンダーイベントにリンクします", + "modals.timeblockInfo.editHeading": "タイムブロックを編集", + "modals.timeblockInfo.dateTimeLabel": "日時:", + "modals.timeblockInfo.titleLabel": "タイトル", + "modals.timeblockInfo.titleDesc": "タイムブロックのタイトル", + "modals.timeblockInfo.titlePlaceholder": "例:集中作業セッション", + "modals.timeblockInfo.descriptionLabel": "説明", + "modals.timeblockInfo.descriptionDesc": "タイムブロックのオプション説明", + "modals.timeblockInfo.descriptionPlaceholder": "新機能に集中、中断なし", + "modals.timeblockInfo.colorLabel": "色", + "modals.timeblockInfo.colorDesc": "タイムブロックのオプションの色", + "modals.timeblockInfo.colorPlaceholder": "#3b82f6", + "modals.timeblockInfo.attachmentsLabel": "添付ファイル", + "modals.timeblockInfo.attachmentsDesc": "このタイムブロックにリンクされたファイルまたはノート", + "modals.timeblockInfo.addAttachmentButton": "添付ファイルを追加", + "modals.timeblockInfo.addAttachmentTooltip": "ファジー検索を使用してファイルまたはノートを選択", + "modals.timeblockInfo.deleteButton": "タイムブロックを削除", + "modals.timeblockInfo.saveButton": "変更を保存", + "modals.timeblockInfo.deleteConfirmationTitle": "タイムブロックを削除", + "modals.timeblockCreation.heading": "タイムブロックを作成", + "modals.timeblockCreation.dateLabel": "日付:", + "modals.timeblockCreation.titleLabel": "タイトル", + "modals.timeblockCreation.titleDesc": "タイムブロックのタイトル", + "modals.timeblockCreation.titlePlaceholder": "例:集中作業セッション", + "modals.timeblockCreation.startTimeLabel": "開始時刻", + "modals.timeblockCreation.startTimeDesc": "タイムブロックが開始する時刻", + "modals.timeblockCreation.startTimePlaceholder": "09:00", + "modals.timeblockCreation.endTimeLabel": "終了時刻", + "modals.timeblockCreation.endTimeDesc": "タイムブロックが終了する時刻", + "modals.timeblockCreation.endTimePlaceholder": "11:00", + "modals.timeblockCreation.descriptionLabel": "説明", + "modals.timeblockCreation.descriptionDesc": "タイムブロックのオプション説明", + "modals.timeblockCreation.descriptionPlaceholder": "新機能に集中、中断なし", + "modals.timeblockCreation.colorLabel": "色", + "modals.timeblockCreation.colorDesc": "タイムブロックのオプションの色", + "modals.timeblockCreation.colorPlaceholder": "#3b82f6", + "modals.timeblockCreation.attachmentsLabel": "添付ファイル", + "modals.timeblockCreation.attachmentsDesc": "このタイムブロックにリンクするファイルまたはノート", + "modals.timeblockCreation.addAttachmentButton": "添付ファイルを追加", + "modals.timeblockCreation.addAttachmentTooltip": "ファジー検索を使用してファイルまたはノートを選択", + "modals.timeblockCreation.createButton": "タイムブロックを作成", + "modals.icsNoteCreation.heading": "ICSイベントから作成", + "modals.icsNoteCreation.titleLabel": "タイトル", + "modals.icsNoteCreation.titleDesc": "新しいコンテンツのタイトル", + "modals.icsNoteCreation.folderLabel": "フォルダ", + "modals.icsNoteCreation.folderDesc": "保存先フォルダ(空欄の場合はVaultルート)", + "modals.icsNoteCreation.folderPlaceholder": "フォルダ/サブフォルダ", + "modals.icsNoteCreation.createButton": "作成", + "modals.icsNoteCreation.startLabel": "開始:", + "modals.icsNoteCreation.endLabel": "終了:", + "modals.icsNoteCreation.locationLabel": "場所:", + "modals.icsNoteCreation.calendarLabel": "カレンダー:", + "modals.icsNoteCreation.useTemplateLabel": "テンプレートを使用", + "modals.icsNoteCreation.useTemplateDesc": "コンテンツ作成時にテンプレートを適用", + "modals.icsNoteCreation.templatePathLabel": "テンプレートパス", + "modals.icsNoteCreation.templatePathDesc": "テンプレートファイルへのパス", + "modals.icsNoteCreation.templatePathPlaceholder": "templates/ics-note-template.md", + "ui.filterBar.subgroupLabel": "サブグループ", + "components.dateContextMenu.weekdays": "平日", + "components.dateContextMenu.clearDate": "日付をクリア", + "components.dateContextMenu.today": "今日", + "components.dateContextMenu.tomorrow": "明日", + "components.dateContextMenu.thisWeekend": "今週末", + "components.dateContextMenu.nextWeek": "来週", + "components.dateContextMenu.nextMonth": "来月", + "components.dateContextMenu.setDateTime": "日時を設定", + "components.dateContextMenu.dateLabel": "日付", + "components.dateContextMenu.timeLabel": "時刻(オプション)", + "components.subgroupMenuBuilder.none": "なし", + "components.subgroupMenuBuilder.status": "ステータス", + "components.subgroupMenuBuilder.priority": "優先度", + "components.subgroupMenuBuilder.context": "コンテキスト", + "components.subgroupMenuBuilder.project": "プロジェクト", + "components.subgroupMenuBuilder.dueDate": "期限", + "components.subgroupMenuBuilder.scheduledDate": "予定日", + "components.subgroupMenuBuilder.tags": "タグ", + "components.subgroupMenuBuilder.completedDate": "完了日", + "components.subgroupMenuBuilder.subgroup": "サブグループ", + }, + ru: { + // Russian translations with formal address forms + "views.agenda.empty.helpText": "Создайте задачи с датами выполнения или планирования, или добавьте заметки, чтобы увидеть их здесь.", + "views.agenda.contextMenu.showOverdueSection": "Показать раздел просроченных", + "views.agenda.contextMenu.showNotes": "Показать заметки", + "views.agenda.contextMenu.calendarSubscriptions": "Подписки календаря", + "views.agenda.periods.thisWeek": "Эта неделя", + "views.agenda.tipPrefix": "Совет: ", + "views.notes.refreshingButton": "Обновление...", + "views.notes.empty.helpText": "Заметки для выбранной даты не найдены. Попробуйте выбрать другую дату в мини-календаре или создайте несколько заметок.", + "views.notes.loading": "Загрузка заметок...", + "views.notes.refreshButtonAriaLabel": "Обновить список заметок", + "views.kanban.uncategorized": "Без категории", + "views.kanban.noProject": "Без проекта", + "views.kanban.columnTitle": "Без названия", + "notices.icsNoteCreatedSuccess": "Заметка успешно создана", + "notices.icsCreationModalOpenFailed": "Не удалось открыть модальное окно создания", + "notices.icsNoteLinkSuccess": "Заметка \"{fileName}\" связана с событием ICS", + "notices.icsTaskCreatedSuccess": "Задача создана: {title}", + "notices.icsRelatedItemsRefreshed": "Связанные заметки обновлены", + "notices.icsFileNotFound": "Файл не найден или недействителен", + "notices.icsFileOpenFailed": "Не удалось открыть файл", + "notices.timeblockAttachmentExists": "\"{fileName}\" уже прикреплен", + "notices.timeblockAttachmentAdded": "\"{fileName}\" добавлен как вложение", + "notices.timeblockAttachmentRemoved": "\"{fileName}\" удален из вложений", + "notices.timeblockFileTypeNotSupported": "Невозможно открыть \"{fileName}\" - тип файла не поддерживается", + "notices.timeblockTitleRequired": "Пожалуйста, введите название для временного блока", + "notices.timeblockUpdatedSuccess": "Временной блок \"{title}\" успешно обновлен", + "notices.timeblockUpdateFailed": "Не удалось обновить временной блок. Проверьте консоль для подробностей.", + "notices.timeblockDeletedSuccess": "Временной блок \"{title}\" успешно удален", + "notices.timeblockDeleteFailed": "Не удалось удалить временной блок. Проверьте консоль для подробностей.", + "notices.timeblockRequiredFieldsMissing": "Пожалуйста, заполните все обязательные поля", + "notices.agendaLoadingFailed": "Ошибка при загрузке повестки. Пожалуйста, попробуйте обновить.", + "notices.statsLoadingFailed": "Ошибка при загрузке деталей проекта.", + "modals.deviceCode.title": "Авторизация Google Calendar", + "modals.deviceCode.instructions.intro": "Чтобы подключить ваш Google Calendar, пожалуйста, выполните следующие шаги:", + "modals.deviceCode.steps.open": "Откройте", + "modals.deviceCode.steps.inBrowser": "в вашем браузере", + "modals.deviceCode.steps.enterCode": "Введите этот код при запросе:", + "modals.deviceCode.steps.signIn": "Войдите с помощью вашего аккаунта Google и предоставьте доступ", + "modals.deviceCode.steps.returnToObsidian": "Вернитесь в Obsidian (это окно закроется автоматически)", + "modals.deviceCode.codeLabel": "Ваш код:", + "modals.deviceCode.copyCodeAriaLabel": "Скопировать код", + "modals.deviceCode.waitingForAuthorization": "Ожидание авторизации...", + "modals.deviceCode.openBrowserButton": "Открыть браузер", + "modals.deviceCode.cancelButton": "Отмена", + "modals.deviceCode.expiresMinutesSeconds": "Код истекает через {minutes}м {seconds}с", + "modals.deviceCode.expiresSeconds": "Код истекает через {seconds}с", + "modals.icsEventInfo.calendarEventHeading": "Событие календаря", + "modals.icsEventInfo.titleLabel": "Название", + "modals.icsEventInfo.calendarLabel": "Календарь", + "modals.icsEventInfo.dateTimeLabel": "Дата и время", + "modals.icsEventInfo.locationLabel": "Место", + "modals.icsEventInfo.descriptionLabel": "Описание", + "modals.icsEventInfo.urlLabel": "URL", + "modals.icsEventInfo.relatedNotesHeading": "Связанные заметки и задачи", + "modals.icsEventInfo.noRelatedItems": "Для этого события не найдено связанных заметок или задач.", + "modals.icsEventInfo.typeTask": "Задача", + "modals.icsEventInfo.typeNote": "Заметка", + "modals.icsEventInfo.actionsHeading": "Действия", + "modals.icsEventInfo.createFromEventLabel": "Создать из события", + "modals.icsEventInfo.createFromEventDesc": "Создать новую заметку или задачу из этого события календаря", + "modals.icsEventInfo.linkExistingLabel": "Связать существующее", + "modals.icsEventInfo.linkExistingDesc": "Связать существующую заметку с этим событием календаря", + "modals.timeblockInfo.editHeading": "Редактировать временной блок", + "modals.timeblockInfo.dateTimeLabel": "Дата и время: ", + "modals.timeblockInfo.titleLabel": "Название", + "modals.timeblockInfo.titleDesc": "Название вашего временного блока", + "modals.timeblockInfo.titlePlaceholder": "напр., Сессия глубокой работы", + "modals.timeblockInfo.descriptionLabel": "Описание", + "modals.timeblockInfo.descriptionDesc": "Необязательное описание временного блока", + "modals.timeblockInfo.descriptionPlaceholder": "Сосредоточиться на новых функциях, без прерываний", + "modals.timeblockInfo.colorLabel": "Цвет", + "modals.timeblockInfo.colorDesc": "Необязательный цвет для временного блока", + "modals.timeblockInfo.colorPlaceholder": "#3b82f6", + "modals.timeblockInfo.attachmentsLabel": "Вложения", + "modals.timeblockInfo.attachmentsDesc": "Файлы или заметки, связанные с этим временным блоком", + "modals.timeblockInfo.addAttachmentButton": "Добавить вложение", + "modals.timeblockInfo.addAttachmentTooltip": "Выберите файл или заметку с помощью нечеткого поиска", + "modals.timeblockInfo.deleteButton": "Удалить временной блок", + "modals.timeblockInfo.saveButton": "Сохранить изменения", + "modals.timeblockInfo.deleteConfirmationTitle": "Удалить временной блок", + "modals.timeblockCreation.heading": "Создать временной блок", + "modals.timeblockCreation.dateLabel": "Дата: ", + "modals.timeblockCreation.titleLabel": "Название", + "modals.timeblockCreation.titleDesc": "Название вашего временного блока", + "modals.timeblockCreation.titlePlaceholder": "напр., Сессия глубокой работы", + "modals.timeblockCreation.startTimeLabel": "Время начала", + "modals.timeblockCreation.startTimeDesc": "Когда начинается временной блок", + "modals.timeblockCreation.startTimePlaceholder": "09:00", + "modals.timeblockCreation.endTimeLabel": "Время окончания", + "modals.timeblockCreation.endTimeDesc": "Когда заканчивается временной блок", + "modals.timeblockCreation.endTimePlaceholder": "11:00", + "modals.timeblockCreation.descriptionLabel": "Описание", + "modals.timeblockCreation.descriptionDesc": "Необязательное описание временного блока", + "modals.timeblockCreation.descriptionPlaceholder": "Сосредоточиться на новых функциях, без прерываний", + "modals.timeblockCreation.colorLabel": "Цвет", + "modals.timeblockCreation.colorDesc": "Необязательный цвет для временного блока", + "modals.timeblockCreation.colorPlaceholder": "#3b82f6", + "modals.timeblockCreation.attachmentsLabel": "Вложения", + "modals.timeblockCreation.attachmentsDesc": "Файлы или заметки для связи с этим временным блоком", + "modals.timeblockCreation.addAttachmentButton": "Добавить вложение", + "modals.timeblockCreation.addAttachmentTooltip": "Выберите файл или заметку с помощью нечеткого поиска", + "modals.timeblockCreation.createButton": "Создать временной блок", + "modals.icsNoteCreation.heading": "Создать из события ICS", + "modals.icsNoteCreation.titleLabel": "Название", + "modals.icsNoteCreation.titleDesc": "Название нового содержимого", + "modals.icsNoteCreation.folderLabel": "Папка", + "modals.icsNoteCreation.folderDesc": "Папка назначения (оставьте пустым для корня хранилища)", + "modals.icsNoteCreation.folderPlaceholder": "папка/подпапка", + "modals.icsNoteCreation.createButton": "Создать", + "modals.icsNoteCreation.startLabel": "Начало: ", + "modals.icsNoteCreation.endLabel": "Окончание: ", + "modals.icsNoteCreation.locationLabel": "Место: ", + "modals.icsNoteCreation.calendarLabel": "Календарь: ", + "modals.icsNoteCreation.useTemplateLabel": "Использовать шаблон", + "modals.icsNoteCreation.useTemplateDesc": "Применить шаблон при создании содержимого", + "modals.icsNoteCreation.templatePathLabel": "Путь к шаблону", + "modals.icsNoteCreation.templatePathDesc": "Путь к файлу шаблона", + "modals.icsNoteCreation.templatePathPlaceholder": "templates/ics-note-template.md", + "ui.filterBar.subgroupLabel": "ПОДГРУППА", + "components.dateContextMenu.weekdays": "Будние дни", + "components.dateContextMenu.clearDate": "Очистить дату", + "components.dateContextMenu.today": "Сегодня", + "components.dateContextMenu.tomorrow": "Завтра", + "components.dateContextMenu.thisWeekend": "Эти выходные", + "components.dateContextMenu.nextWeek": "Следующая неделя", + "components.dateContextMenu.nextMonth": "Следующий месяц", + "components.dateContextMenu.setDateTime": "Установить дату и время", + "components.dateContextMenu.dateLabel": "Дата", + "components.dateContextMenu.timeLabel": "Время (необязательно)", + "components.subgroupMenuBuilder.none": "Нет", + "components.subgroupMenuBuilder.status": "Статус", + "components.subgroupMenuBuilder.priority": "Приоритет", + "components.subgroupMenuBuilder.context": "Контекст", + "components.subgroupMenuBuilder.project": "Проект", + "components.subgroupMenuBuilder.dueDate": "Срок выполнения", + "components.subgroupMenuBuilder.scheduledDate": "Запланированная дата", + "components.subgroupMenuBuilder.tags": "Теги", + "components.subgroupMenuBuilder.completedDate": "Дата завершения", + "components.subgroupMenuBuilder.subgroup": "ПОДГРУППА", + }, + zh: { + // Simplified Chinese translations + "views.agenda.empty.helpText": "创建具有截止日期或计划日期的任务,或添加笔记以在此处查看它们。", + "views.agenda.contextMenu.showOverdueSection": "显示逾期部分", + "views.agenda.contextMenu.showNotes": "显示笔记", + "views.agenda.contextMenu.calendarSubscriptions": "日历订阅", + "views.agenda.periods.thisWeek": "本周", + "views.agenda.tipPrefix": "提示:", + "views.notes.refreshingButton": "刷新中...", + "views.notes.empty.helpText": "未找到所选日期的笔记。请尝试在迷你日历视图中选择其他日期或创建一些笔记。", + "views.notes.loading": "加载笔记中...", + "views.notes.refreshButtonAriaLabel": "刷新笔记列表", + "views.kanban.uncategorized": "未分类", + "views.kanban.noProject": "无项目", + "views.kanban.columnTitle": "无标题", + "notices.icsNoteCreatedSuccess": "笔记创建成功", + "notices.icsCreationModalOpenFailed": "无法打开创建模态框", + "notices.icsNoteLinkSuccess": "已将笔记"{fileName}"链接到ICS事件", + "notices.icsTaskCreatedSuccess": "任务已创建:{title}", + "notices.icsRelatedItemsRefreshed": "相关笔记已刷新", + "notices.icsFileNotFound": "文件未找到或无效", + "notices.icsFileOpenFailed": "无法打开文件", + "notices.timeblockAttachmentExists": ""{fileName}"已经附加", + "notices.timeblockAttachmentAdded": "已将"{fileName}"添加为附件", + "notices.timeblockAttachmentRemoved": "已从附件中移除"{fileName}"", + "notices.timeblockFileTypeNotSupported": "无法打开"{fileName}" - 不支持的文件类型", + "notices.timeblockTitleRequired": "请为时间块输入标题", + "notices.timeblockUpdatedSuccess": "时间块"{title}"更新成功", + "notices.timeblockUpdateFailed": "无法更新时间块。请查看控制台以获取详细信息。", + "notices.timeblockDeletedSuccess": "时间块"{title}"删除成功", + "notices.timeblockDeleteFailed": "无法删除时间块。请查看控制台以获取详细信息。", + "notices.timeblockRequiredFieldsMissing": "请填写所有必填字段", + "notices.agendaLoadingFailed": "加载议程时出错。请尝试刷新。", + "notices.statsLoadingFailed": "加载项目详情时出错。", + "modals.deviceCode.title": "Google Calendar授权", + "modals.deviceCode.instructions.intro": "要连接您的Google Calendar,请按照以下步骤操作:", + "modals.deviceCode.steps.open": "打开", + "modals.deviceCode.steps.inBrowser": "在您的浏览器中", + "modals.deviceCode.steps.enterCode": "在提示时输入此代码:", + "modals.deviceCode.steps.signIn": "使用您的Google帐户登录并授予访问权限", + "modals.deviceCode.steps.returnToObsidian": "返回Obsidian(此窗口将自动关闭)", + "modals.deviceCode.codeLabel": "您的代码:", + "modals.deviceCode.copyCodeAriaLabel": "复制代码", + "modals.deviceCode.waitingForAuthorization": "等待授权中...", + "modals.deviceCode.openBrowserButton": "打开浏览器", + "modals.deviceCode.cancelButton": "取消", + "modals.deviceCode.expiresMinutesSeconds": "代码将在{minutes}分{seconds}秒后过期", + "modals.deviceCode.expiresSeconds": "代码将在{seconds}秒后过期", + "modals.icsEventInfo.calendarEventHeading": "日历事件", + "modals.icsEventInfo.titleLabel": "标题", + "modals.icsEventInfo.calendarLabel": "日历", + "modals.icsEventInfo.dateTimeLabel": "日期和时间", + "modals.icsEventInfo.locationLabel": "位置", + "modals.icsEventInfo.descriptionLabel": "描述", + "modals.icsEventInfo.urlLabel": "URL", + "modals.icsEventInfo.relatedNotesHeading": "相关笔记和任务", + "modals.icsEventInfo.noRelatedItems": "未找到此事件的相关笔记或任务。", + "modals.icsEventInfo.typeTask": "任务", + "modals.icsEventInfo.typeNote": "笔记", + "modals.icsEventInfo.actionsHeading": "操作", + "modals.icsEventInfo.createFromEventLabel": "从事件创建", + "modals.icsEventInfo.createFromEventDesc": "从此日历事件创建新笔记或任务", + "modals.icsEventInfo.linkExistingLabel": "链接现有", + "modals.icsEventInfo.linkExistingDesc": "将现有笔记链接到此日历事件", + "modals.timeblockInfo.editHeading": "编辑时间块", + "modals.timeblockInfo.dateTimeLabel": "日期和时间:", + "modals.timeblockInfo.titleLabel": "标题", + "modals.timeblockInfo.titleDesc": "您的时间块标题", + "modals.timeblockInfo.titlePlaceholder": "例如,深度工作会话", + "modals.timeblockInfo.descriptionLabel": "描述", + "modals.timeblockInfo.descriptionDesc": "时间块的可选描述", + "modals.timeblockInfo.descriptionPlaceholder": "专注于新功能,无打扰", + "modals.timeblockInfo.colorLabel": "颜色", + "modals.timeblockInfo.colorDesc": "时间块的可选颜色", + "modals.timeblockInfo.colorPlaceholder": "#3b82f6", + "modals.timeblockInfo.attachmentsLabel": "附件", + "modals.timeblockInfo.attachmentsDesc": "链接到此时间块的文件或笔记", + "modals.timeblockInfo.addAttachmentButton": "添加附件", + "modals.timeblockInfo.addAttachmentTooltip": "使用模糊搜索选择文件或笔记", + "modals.timeblockInfo.deleteButton": "删除时间块", + "modals.timeblockInfo.saveButton": "保存更改", + "modals.timeblockInfo.deleteConfirmationTitle": "删除时间块", + "modals.timeblockCreation.heading": "创建时间块", + "modals.timeblockCreation.dateLabel": "日期:", + "modals.timeblockCreation.titleLabel": "标题", + "modals.timeblockCreation.titleDesc": "您的时间块标题", + "modals.timeblockCreation.titlePlaceholder": "例如,深度工作会话", + "modals.timeblockCreation.startTimeLabel": "开始时间", + "modals.timeblockCreation.startTimeDesc": "时间块开始的时间", + "modals.timeblockCreation.startTimePlaceholder": "09:00", + "modals.timeblockCreation.endTimeLabel": "结束时间", + "modals.timeblockCreation.endTimeDesc": "时间块结束的时间", + "modals.timeblockCreation.endTimePlaceholder": "11:00", + "modals.timeblockCreation.descriptionLabel": "描述", + "modals.timeblockCreation.descriptionDesc": "时间块的可选描述", + "modals.timeblockCreation.descriptionPlaceholder": "专注于新功能,无打扰", + "modals.timeblockCreation.colorLabel": "颜色", + "modals.timeblockCreation.colorDesc": "时间块的可选颜色", + "modals.timeblockCreation.colorPlaceholder": "#3b82f6", + "modals.timeblockCreation.attachmentsLabel": "附件", + "modals.timeblockCreation.attachmentsDesc": "要链接到此时间块的文件或笔记", + "modals.timeblockCreation.addAttachmentButton": "添加附件", + "modals.timeblockCreation.addAttachmentTooltip": "使用模糊搜索选择文件或笔记", + "modals.timeblockCreation.createButton": "创建时间块", + "modals.icsNoteCreation.heading": "从ICS事件创建", + "modals.icsNoteCreation.titleLabel": "标题", + "modals.icsNoteCreation.titleDesc": "新内容的标题", + "modals.icsNoteCreation.folderLabel": "文件夹", + "modals.icsNoteCreation.folderDesc": "目标文件夹(留空则为库根目录)", + "modals.icsNoteCreation.folderPlaceholder": "文件夹/子文件夹", + "modals.icsNoteCreation.createButton": "创建", + "modals.icsNoteCreation.startLabel": "开始:", + "modals.icsNoteCreation.endLabel": "结束:", + "modals.icsNoteCreation.locationLabel": "位置:", + "modals.icsNoteCreation.calendarLabel": "日历:", + "modals.icsNoteCreation.useTemplateLabel": "使用模板", + "modals.icsNoteCreation.useTemplateDesc": "创建内容时应用模板", + "modals.icsNoteCreation.templatePathLabel": "模板路径", + "modals.icsNoteCreation.templatePathDesc": "模板文件的路径", + "modals.icsNoteCreation.templatePathPlaceholder": "templates/ics-note-template.md", + "ui.filterBar.subgroupLabel": "子组", + "components.dateContextMenu.weekdays": "工作日", + "components.dateContextMenu.clearDate": "清除日期", + "components.dateContextMenu.today": "今天", + "components.dateContextMenu.tomorrow": "明天", + "components.dateContextMenu.thisWeekend": "本周末", + "components.dateContextMenu.nextWeek": "下周", + "components.dateContextMenu.nextMonth": "下个月", + "components.dateContextMenu.setDateTime": "设置日期和时间", + "components.dateContextMenu.dateLabel": "日期", + "components.dateContextMenu.timeLabel": "时间(可选)", + "components.subgroupMenuBuilder.none": "无", + "components.subgroupMenuBuilder.status": "状态", + "components.subgroupMenuBuilder.priority": "优先级", + "components.subgroupMenuBuilder.context": "上下文", + "components.subgroupMenuBuilder.project": "项目", + "components.subgroupMenuBuilder.dueDate": "截止日期", + "components.subgroupMenuBuilder.scheduledDate": "计划日期", + "components.subgroupMenuBuilder.tags": "标签", + "components.subgroupMenuBuilder.completedDate": "完成日期", + "components.subgroupMenuBuilder.subgroup": "子组", + }, +}; + +// Helper to build nested object from dot notation +function setNestedValue(obj, path, value) { + const parts = path.split('.'); + const last = parts.pop(); + let current = obj; + for (const part of parts) { + if (!current[part]) { + current[part] = {}; + } + current = current[part]; + } + current[last] = value; +} + +// Process each locale +for (const [locale, translationMap] of Object.entries(translations)) { + console.log(`\nProcessing ${locale}...`); + + const filePath = path.join(RESOURCES_DIR, `${locale}.ts`); + let content = fs.readFileSync(filePath, 'utf8'); + + // Parse the existing structure to find insertion points + const lines = content.split('\n'); + + for (const [key, value] of Object.entries(translationMap)) { + const parts = key.split('.'); + + // Find where to insert this key + // Strategy: Find the parent section and insert alphabetically or at the end + let insertIndex = -1; + let indent = ''; + + // Build the search pattern for the parent + const parentPath = parts.slice(0, -1); + const lastKey = parts[parts.length - 1]; + + // Search for the parent section + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + + // Check if we're in the right nested section + if (parentPath.length > 0) { + const parentPattern = parentPath[parentPath.length - 1] + ':'; + if (line.includes(parentPattern) && line.includes('{')) { + // Found the parent, now find where to insert + insertIndex = i + 1; + // Get indentation + const match = line.match(/^(\s*)/); + indent = match ? match[1] + '\t' : '\t\t'; + + // Find the closing brace of this section + let braceCount = 1; + for (let j = i + 1; j < lines.length; j++) { + if (lines[j].includes('{')) braceCount++; + if (lines[j].includes('}')) { + braceCount--; + if (braceCount === 0) { + insertIndex = j; + break; + } + } + } + break; + } + } + } + + // Escape special characters in value + const escapedValue = value.replace(/\\/g, '\\\\').replace(/"/g, '\\"'); + const newLine = `${indent}${lastKey}: "${escapedValue}",`; + + // Insert the line + if (insertIndex > 0) { + lines.splice(insertIndex, 0, newLine); + console.log(` Added: ${key}`); + } else { + console.warn(` Warning: Could not find insertion point for ${key}`); + } + } + + // Write back + fs.writeFileSync(filePath, lines.join('\n')); + console.log(`✓ Completed ${locale}`); +} + +console.log('\n✓ All translations added!'); diff --git a/scripts/export-missing.mjs b/scripts/export-missing.mjs new file mode 100644 index 00000000..697d305f --- /dev/null +++ b/scripts/export-missing.mjs @@ -0,0 +1,71 @@ +import fs from 'fs'; +import path from 'path'; + +const RESOURCES_DIR = path.resolve('src/i18n/resources'); +const MANIFEST_PATH = path.resolve('i18n.manifest.json'); +const STATE_PATH = path.resolve('i18n.state.json'); + +function flatten(tree, prefix = '') { + const entries = {}; + for (const [key, value] of Object.entries(tree)) { + const fullKey = prefix ? `${prefix}.${key}` : key; + if (typeof value === 'string') { + entries[fullKey] = value; + } else if (value && typeof value === 'object' && !Array.isArray(value)) { + Object.assign(entries, flatten(value, fullKey)); + } + } + return entries; +} + +async function loadLocaleModule(locale) { + const filePath = path.join(RESOURCES_DIR, `${locale}.ts`); + let content = fs.readFileSync(filePath, 'utf8'); + content = content.replace(/^import\s+.*?;$/gm, ''); + content = content.replace(/export\s+type\s+.*?;$/gm, ''); + content = content.replace( + new RegExp(`export\\s+const\\s+${locale}\\s*:\\s*\\w+\\s*=\\s*`, 'g'), + 'export default ' + ); + content = content.replace( + new RegExp(`export\\s+const\\s+${locale}\\s*=\\s*`, 'g'), + 'export default ' + ); + const tempPath = path.join(RESOURCES_DIR, `.${locale}.temp.mjs`); + fs.writeFileSync(tempPath, content); + try { + const absolutePath = path.resolve(tempPath); + const module = await import(`file://${absolutePath}?v=${Date.now()}`); + return module.default; + } finally { + if (fs.existsSync(tempPath)) { + fs.unlinkSync(tempPath); + } + } +} + +async function getLocaleMap(locale) { + const module = await loadLocaleModule(locale); + return flatten(module); +} + +const locale = process.argv[2]; +if (!locale) { + console.error('Usage: node export-missing.mjs '); + process.exit(1); +} + +const manifest = JSON.parse(fs.readFileSync(MANIFEST_PATH, 'utf8')); +const state = JSON.parse(fs.readFileSync(STATE_PATH, 'utf8')); +const enMap = await getLocaleMap('en'); +const targetMap = await getLocaleMap(locale); + +const missing = []; +for (const key in manifest) { + const entry = state[locale]?.[key]; + if (!entry || !entry.translation) { + missing.push({ key, value: enMap[key] }); + } +} + +console.log(JSON.stringify(missing, null, 2)); diff --git a/src/components/SubgroupMenuBuilder.ts b/src/components/SubgroupMenuBuilder.ts index 39767e89..58de51cd 100644 --- a/src/components/SubgroupMenuBuilder.ts +++ b/src/components/SubgroupMenuBuilder.ts @@ -1,5 +1,6 @@ import { Menu } from "obsidian"; import { FilterOptions, FilterQuery, TaskGroupKey } from "../types"; +import type TaskNotesPlugin from "../main"; /** * Builder for the SUBGROUP section of the sort/group context menu. @@ -12,18 +13,19 @@ export class SubgroupMenuBuilder { */ static buildOptions( primaryKey: TaskGroupKey, - filterOptions: FilterOptions + filterOptions: FilterOptions, + plugin: TaskNotesPlugin ): Record { const builtIn: Record = { - none: "None", - status: "Status", - priority: "Priority", - context: "Context", - project: "Project", - due: "Due Date", - scheduled: "Scheduled Date", - tags: "Tags", - completedDate: "Completed Date", + none: plugin.i18n.translate("ui.filterBar.group.none"), + status: plugin.i18n.translate("ui.filterBar.group.status"), + priority: plugin.i18n.translate("ui.filterBar.group.priority"), + context: plugin.i18n.translate("ui.filterBar.group.context"), + project: plugin.i18n.translate("ui.filterBar.group.project"), + due: plugin.i18n.translate("ui.filterBar.group.dueDate"), + scheduled: plugin.i18n.translate("ui.filterBar.group.scheduledDate"), + tags: plugin.i18n.translate("ui.filterBar.group.tags"), + completedDate: plugin.i18n.translate("ui.filterBar.group.completedDate"), } as const; const options: Record = {}; @@ -59,16 +61,17 @@ export class SubgroupMenuBuilder { menu: Menu, currentQuery: Pick, filterOptions: FilterOptions, - onSelect: (key: TaskGroupKey) => void + onSelect: (key: TaskGroupKey) => void, + plugin: TaskNotesPlugin ): void { const primary = (currentQuery.groupKey || "none") as TaskGroupKey; const subKey = (currentQuery.subgroupKey || "none") as TaskGroupKey; - const options = SubgroupMenuBuilder.buildOptions(primary, filterOptions); + const options = SubgroupMenuBuilder.buildOptions(primary, filterOptions, plugin); // Visual separator and header menu.addSeparator(); menu.addItem((item: any) => { - item.setTitle("SUBGROUP"); + item.setTitle(plugin.i18n.translate("ui.filterBar.subgroupLabel")); if (typeof item.setDisabled === "function") item.setDisabled(true); }); diff --git a/src/components/TaskContextMenu.ts b/src/components/TaskContextMenu.ts index 84ce77ed..e9aff150 100644 --- a/src/components/TaskContextMenu.ts +++ b/src/components/TaskContextMenu.ts @@ -1206,18 +1206,18 @@ export class TaskContextMenu { const today = new Date(); const dayNames = ["SU", "MO", "TU", "WE", "TH", "FR", "SA"]; const monthNames = [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December", + plugin.i18n.translate("common.months.january"), + plugin.i18n.translate("common.months.february"), + plugin.i18n.translate("common.months.march"), + plugin.i18n.translate("common.months.april"), + plugin.i18n.translate("common.months.may"), + plugin.i18n.translate("common.months.june"), + plugin.i18n.translate("common.months.july"), + plugin.i18n.translate("common.months.august"), + plugin.i18n.translate("common.months.september"), + plugin.i18n.translate("common.months.october"), + plugin.i18n.translate("common.months.november"), + plugin.i18n.translate("common.months.december"), ]; const currentDay = dayNames[today.getDay()]; const currentDate = today.getDate(); diff --git a/src/i18n/resources/de.ts b/src/i18n/resources/de.ts index 9d4cb2df..8c54708e 100644 --- a/src/i18n/resources/de.ts +++ b/src/i18n/resources/de.ts @@ -67,7 +67,17 @@ export const de: TranslationTree = { empty: { noItemsScheduled: "Keine Elemente geplant", noItemsFound: "Keine Elemente gefunden", + helpText: "Erstellen Sie Aufgaben mit Fälligkeits- oder Planungsdaten oder fügen Sie Notizen hinzu, um sie hier zu sehen.", }, + contextMenu: { + showOverdueSection: "Überfälligkeitsbereich anzeigen", + showNotes: "Notizen anzeigen", + calendarSubscriptions: "Kalenderabonnements", + }, + periods: { + thisWeek: "Diese Woche", + }, + tipPrefix: "Tipp: ", }, taskList: { title: "Aufgaben", @@ -77,13 +87,17 @@ export const de: TranslationTree = { }, notes: { title: "Notizen", - refreshButton: "Wird aktualisiert...", + refreshButton: "Aktualisieren", + refreshingButton: "Wird aktualisiert...", notices: { indexingDisabled: "Notizindexierung deaktiviert", }, empty: { noNotesFound: "Keine Notizen gefunden", + helpText: "Keine Notizen für das gewählte Datum gefunden. Versuchen Sie, ein anderes Datum in der Mini-Kalenderansicht auszuwählen oder erstellen Sie einige Notizen.", }, + loading: "Notizen werden geladen...", + refreshButtonAriaLabel: "Notizenliste aktualisieren", }, miniCalendar: { title: "Mini-Kalender", @@ -96,6 +110,8 @@ export const de: TranslationTree = { }, viewOptions: { calendarSubscriptions: "Kalenderabonnements", + googleCalendars: "Google Kalender", + microsoftCalendars: "Microsoft Kalender", timeEntries: "Zeiteinträge", timeblocks: "Zeitblöcke", scheduledDates: "Geplante Termine", @@ -126,7 +142,36 @@ export const de: TranslationTree = { timeEntryDeleted: "Zeiteintrag gelöscht", deleteTimeEntryFailed: "Fehler beim Löschen des Zeiteintrags", }, - timeEntry: { + timeEntryEditor: { + title: "Zeiteinträge - {taskTitle}", + addEntry: "Zeiteintrag hinzufügen", + noEntries: "Noch keine Zeiteinträge", + deleteEntry: "Eintrag löschen", + startTime: "Startzeit", + endTime: "Endzeit (leer lassen, falls noch laufend)", + duration: "Dauer (Minuten)", + durationDesc: "Berechnete Dauer überschreiben", + durationPlaceholder: "Dauer in Minuten eingeben", + description: "Beschreibung", + descriptionPlaceholder: "Woran haben Sie gearbeitet?", + calculatedDuration: "Berechnet: {minutes} Minuten", + totalTime: "{hours}h {minutes}m gesamt", + totalMinutes: "{minutes}m gesamt", + saved: "Zeiteinträge gespeichert", + saveFailed: "Speichern der Zeiteinträge fehlgeschlagen", + openFailed: "Öffnen des Zeiteintrag-Editors fehlgeschlagen", + noTasksWithEntries: "Keine Aufgaben mit Zeiteinträgen zum Bearbeiten", + validation: { + missingStartTime: "Startzeit ist erforderlich", + endBeforeStart: "Endzeit muss nach der Startzeit liegen", + }, + }, + timeTracking: { + noTasksAvailable: "Keine Aufgaben zur Zeiterfassung verfügbar", + started: "Zeiterfassung gestartet für: {taskTitle}", + startFailed: "Starten der Zeiterfassung fehlgeschlagen", + }, + timeEntry: { estimatedSuffix: "geschätzt", trackedSuffix: "erfasst", recurringPrefix: "Wiederkehrend: ", @@ -156,6 +201,7 @@ export const de: TranslationTree = { year: "J", list: "L", customDays: "{count}T", + listDays: "{count}d Liste", }, settings: { groups: { @@ -164,6 +210,8 @@ export const de: TranslationTree = { layout: "Layout", propertyBasedEvents: "Eigenschaftsbasierte Ereignisse", calendarSubscriptions: "Kalenderabonnements", + googleCalendars: "Google Kalender", + microsoftCalendars: "Microsoft Kalender", }, dateNavigation: { navigateToDate: "Zum Datum navigieren", @@ -188,6 +236,7 @@ export const de: TranslationTree = { layout: { calendarView: "Kalenderansicht", customDayCount: "Benutzerdefinierte Tagesanzahl", + listDayCount: "Anzahl der Listentage", dayStartTime: "Tagesbeginn", dayStartTimePlaceholder: "HH:mm:ss (z.B. 08:00:00)", dayEndTime: "Tagesende", @@ -226,6 +275,8 @@ export const de: TranslationTree = { newTask: "Neue Aufgabe", addCard: "+ Karte hinzufügen", noTasks: "Keine Aufgaben", + uncategorized: "Nicht kategorisiert", + noProject: "Kein Projekt", notices: { loadFailed: "Kanban-Board konnte nicht geladen werden", movedTask: 'Aufgabe verschoben zu "{0}"', @@ -233,6 +284,7 @@ export const de: TranslationTree = { errors: { loadingBoard: "Fehler beim Laden des Boards.", }, + columnTitle: "Ohne Titel", }, pomodoro: { title: "Pomodoro", @@ -332,7 +384,38 @@ export const de: TranslationTree = { }, filters: { minTime: "Min. Zeit (Minuten)", + allTasks: "Alle Aufgaben", + activeOnly: "Nur Aktive", + completedOnly: "Nur Abgeschlossene", }, + refreshButton: "Aktualisieren", + timeRanges: { + allTime: "Gesamt", + last7Days: "Letzte 7 Tage", + last30Days: "Letzte 30 Tage", + last90Days: "Letzte 90 Tage", + customRange: "Benutzerdefinierter Bereich", + }, + resetFiltersButton: "Filter zurücksetzen", + dateRangeFrom: "Von", + dateRangeTo: "Bis", + noProject: "Kein Projekt", + cards: { + timeTrackedEstimated: "Zeit erfasst / geschätzt", + totalTasks: "Aufgaben gesamt", + completionRate: "Abschlussrate", + activeProjects: "Aktive Projekte", + avgTimePerTask: "Ø Zeit pro Aufgabe", + }, + labels: { + tasks: "Aufgaben", + completed: "Abgeschlossen", + projects: "Projekte", + }, + noProjectData: "Keine Projektdaten verfügbar", + notAvailable: "N/V", + noTasks: "Keine Aufgaben gefunden", + loading: "Lädt...", }, releaseNotes: { title: "Was ist neu in TaskNotes {version}", @@ -712,6 +795,19 @@ export const de: TranslationTree = { name: "Aufgabeneigenschaftswert", description: 'Der Wert, der eine Notiz als Aufgabe identifiziert (z.B. "task")', }, + hideIdentifyingTags: { + name: "Identifikations-Tags in Aufgabenkarten ausblenden", + description: + "Wenn aktiviert, werden Tags, die mit dem Aufgabenidentifikations-Tag übereinstimmen (einschließlich hierarchischer Übereinstimmungen wie 'task/project'), in Aufgabenkartenanzeigen ausgeblendet", + }, + }, + frontmatter: { + header: "Frontmatter", + description: "Konfigurieren Sie, wie Links in Frontmatter-Eigenschaften formatiert werden.", + useMarkdownLinks: { + name: "Markdown-Links in Frontmatter verwenden", + description: "Markdown-Links ([text](path)) anstelle von Wikilinks ([[link]]) in Frontmatter-Eigenschaften generieren.\\n\\n⚠️ Erfordert das Plugin 'obsidian-frontmatter-markdown-links', um korrekt zu funktionieren.", + }, }, folderManagement: { header: "Ordnerverwaltung", @@ -911,6 +1007,11 @@ export const de: TranslationTree = { noKey: "kein-schlüssel", }, deleteTooltip: "Feld löschen", + autosuggestFilters: { + header: "Autovervollständigungsfilter (Erweitert)", + description: + "Filtern Sie, welche Dateien in Autovervollständigungsvorschlägen für dieses Feld angezeigt werden", + }, }, }, appearance: { @@ -1566,6 +1667,22 @@ export const de: TranslationTree = { }, }, modals: { + taskSelector: { + title: "Aufgabe auswählen", + placeholder: "Tippen Sie, um nach Aufgaben zu suchen...", + instructions: { + navigate: "zum Navigieren", + select: "zum Auswählen", + dismiss: "zum Abbrechen", + }, + notices: { + noteNotFound: "Notiz \"{name}\" konnte nicht gefunden werden", + }, + dueDate: { + overdue: "Fällig: {date} (überfällig)", + today: "Fällig: Heute", + }, + }, secretGenerated: { title: "Webhook-Secret generiert", description: @@ -1656,6 +1773,30 @@ export const de: TranslationTree = { notices: { languageChanged: "Sprache geändert zu {language}.", exportTasksFailed: "Export der Aufgaben als ICS-Datei fehlgeschlagen", + // ICS Event Info Modal notices + icsNoteCreatedSuccess: "Notiz erfolgreich erstellt", + icsCreationModalOpenFailed: "Erstellungsmodal konnte nicht geöffnet werden", + icsNoteLinkSuccess: 'Notiz "{fileName}" mit ICS Event verknüpft', + icsTaskCreatedSuccess: 'Aufgabe erstellt: {title}', + icsRelatedItemsRefreshed: "Verknüpfte Notizen aktualisiert", + icsFileNotFound: "Datei nicht gefunden oder ungültig", + icsFileOpenFailed: "Datei konnte nicht geöffnet werden", + // Timeblock Info Modal notices + timeblockAttachmentExists: '"{fileName}" ist bereits angehängt', + timeblockAttachmentAdded: '"{fileName}" als Anhang hinzugefügt', + timeblockAttachmentRemoved: '"{fileName}" aus Anhängen entfernt', + timeblockFileTypeNotSupported: '"{fileName}" kann nicht geöffnet werden - Dateityp nicht unterstützt', + timeblockTitleRequired: "Bitte geben Sie einen Titel für den Timeblock ein", + timeblockUpdatedSuccess: 'Timeblock "{title}" erfolgreich aktualisiert', + timeblockUpdateFailed: "Timeblock konnte nicht aktualisiert werden. Prüfen Sie die Konsole für Details.", + timeblockDeletedSuccess: 'Timeblock "{title}" erfolgreich gelöscht', + timeblockDeleteFailed: "Timeblock konnte nicht gelöscht werden. Prüfen Sie die Konsole für Details.", + // Timeblock Creation Modal notices + timeblockRequiredFieldsMissing: "Bitte füllen Sie alle erforderlichen Felder aus", + // Agenda View notices + agendaLoadingFailed: "Fehler beim Laden der Agenda. Bitte versuchen Sie, zu aktualisieren.", + // Stats View notices + statsLoadingFailed: "Fehler beim Laden der Projektdetails.", }, commands: { openCalendarView: "Mini-Kalenderansicht öffnen", @@ -1680,8 +1821,126 @@ export const de: TranslationTree = { refreshCache: "Cache aktualisieren", exportAllTasksIcs: "Alle Aufgaben als ICS-Datei exportieren", viewReleaseNotes: "Versionshinweise anzeigen", + startTimeTrackingWithSelector: "Zeiterfassung starten (Aufgabe auswählen)", + editTimeEntries: "Zeiteinträge bearbeiten (Aufgabe auswählen)", }, modals: { + deviceCode: { + title: "Google Calendar Autorisierung", + instructions: { + intro: "Um Ihren Google Calendar zu verbinden, folgen Sie bitte diesen Schritten:", + }, + steps: { + open: "Öffnen Sie", + inBrowser: "in Ihrem Browser", + enterCode: "Geben Sie diesen Code ein, wenn Sie dazu aufgefordert werden:", + signIn: "Melden Sie sich mit Ihrem Google-Konto an und gewähren Sie Zugriff", + returnToObsidian: "Kehren Sie zu Obsidian zurück (dieses Fenster schließt sich automatisch)", + }, + codeLabel: "Ihr Code:", + copyCodeAriaLabel: "Code kopieren", + waitingForAuthorization: "Warte auf Autorisierung...", + openBrowserButton: "Browser öffnen", + cancelButton: "Abbrechen", + expiresMinutesSeconds: "Code läuft ab in {minutes}m {seconds}s", + expiresSeconds: "Code läuft ab in {seconds}s", + }, + icsEventInfo: { + calendarEventHeading: "Kalenderereignis", + titleLabel: "Titel", + calendarLabel: "Kalender", + dateTimeLabel: "Datum & Uhrzeit", + locationLabel: "Ort", + descriptionLabel: "Beschreibung", + urlLabel: "URL", + relatedNotesHeading: "Verknüpfte Notizen & Aufgaben", + noRelatedItems: "Keine verknüpften Notizen oder Aufgaben für dieses Ereignis gefunden.", + typeTask: "Aufgabe", + typeNote: "Notiz", + actionsHeading: "Aktionen", + createFromEventLabel: "Aus Ereignis erstellen", + createFromEventDesc: "Eine neue Notiz oder Aufgabe aus diesem Kalenderereignis erstellen", + linkExistingLabel: "Vorhandene verknüpfen", + linkExistingDesc: "Eine vorhandene Notiz mit diesem Kalenderereignis verknüpfen", + }, + timeblockInfo: { + editHeading: "Timeblock bearbeiten", + dateTimeLabel: "Datum & Uhrzeit: ", + titleLabel: "Titel", + titleDesc: "Titel für Ihren Timeblock", + titlePlaceholder: "z.B. Deep Work Session", + descriptionLabel: "Beschreibung", + descriptionDesc: "Optionale Beschreibung für den Timeblock", + descriptionPlaceholder: "Fokus auf neue Features, keine Unterbrechungen", + colorLabel: "Farbe", + colorDesc: "Optionale Farbe für den Timeblock", + colorPlaceholder: "#3b82f6", + attachmentsLabel: "Anhänge", + attachmentsDesc: "Dateien oder Notizen, die mit diesem Timeblock verknüpft sind", + addAttachmentButton: "Anhang hinzufügen", + addAttachmentTooltip: "Datei oder Notiz mit unscharfer Suche auswählen", + deleteButton: "Timeblock löschen", + saveButton: "Änderungen speichern", + deleteConfirmationTitle: "Timeblock löschen", + }, + timeblockCreation: { + heading: "Timeblock erstellen", + dateLabel: "Datum: ", + titleLabel: "Titel", + titleDesc: "Titel für Ihren Timeblock", + titlePlaceholder: "z.B. Deep Work Session", + startTimeLabel: "Startzeit", + startTimeDesc: "Wann der Timeblock beginnt", + startTimePlaceholder: "09:00", + endTimeLabel: "Endzeit", + endTimeDesc: "Wann der Timeblock endet", + endTimePlaceholder: "11:00", + descriptionLabel: "Beschreibung", + descriptionDesc: "Optionale Beschreibung für den Timeblock", + descriptionPlaceholder: "Fokus auf neue Features, keine Unterbrechungen", + colorLabel: "Farbe", + colorDesc: "Optionale Farbe für den Timeblock", + colorPlaceholder: "#3b82f6", + attachmentsLabel: "Anhänge", + attachmentsDesc: "Dateien oder Notizen, die mit diesem Timeblock verknüpft werden sollen", + addAttachmentButton: "Anhang hinzufügen", + addAttachmentTooltip: "Datei oder Notiz mit unscharfer Suche auswählen", + createButton: "Timeblock erstellen", + }, + icsNoteCreation: { + heading: "Aus ICS Event erstellen", + titleLabel: "Titel", + titleDesc: "Titel für den neuen Inhalt", + folderLabel: "Ordner", + folderDesc: "Zielordner (leer lassen für Vault-Wurzel)", + folderPlaceholder: "ordner/unterordner", + createButton: "Erstellen", + startLabel: "Start: ", + endLabel: "Ende: ", + locationLabel: "Ort: ", + calendarLabel: "Kalender: ", + useTemplateLabel: "Vorlage verwenden", + useTemplateDesc: "Eine Vorlage beim Erstellen des Inhalts anwenden", + templatePathLabel: "Vorlagenpfad", + templatePathDesc: "Pfad zur Vorlagendatei", + templatePathPlaceholder: "templates/ics-note-template.md", + }, + taskSelector: { + title: "Aufgabe auswählen", + placeholder: "Tippen Sie, um nach Aufgaben zu suchen...", + instructions: { + navigate: "zum Navigieren", + select: "zum Auswählen", + dismiss: "zum Abbrechen", + }, + notices: { + noteNotFound: "Notiz \"{name}\" konnte nicht gefunden werden", + }, + dueDate: { + overdue: "Fällig: {date} (überfällig)", + today: "Fällig: Heute", + }, + }, task: { titlePlaceholder: "Was muss getan werden?", titleLabel: "Titel", @@ -1786,6 +2045,7 @@ export const de: TranslationTree = { successShortened: 'Aufgabe "{title}" erfolgreich erstellt (Dateiname wegen Länge gekürzt)', failure: "Aufgabe konnte nicht erstellt werden: {message}", + blockingUnresolved: "Konnte nicht auflösen: {entries}", }, }, taskEdit: { @@ -1810,6 +2070,8 @@ export const de: TranslationTree = { updateSuccess: 'Aufgabe "{title}" erfolgreich aktualisiert', updateFailure: "Aufgabe konnte nicht aktualisiert werden: {message}", fileMissing: "Aufgabendatei konnte nicht gefunden werden: {path}", + dependenciesUpdateSuccess: "Abhängigkeiten aktualisiert", + blockingUnresolved: "Konnte nicht auflösen: {entries}", openNoteFailure: "Aufgabennotiz konnte nicht geöffnet werden", archiveSuccess: "Aufgabe erfolgreich {action}", archiveFailure: "Aufgabe konnte nicht archiviert werden", @@ -1923,6 +2185,41 @@ export const de: TranslationTree = { "Planungsdatum konnte nicht aktualisiert werden. Bitte versuche es erneut.", }, }, + timeEntryEditor: { + title: "Zeiteinträge - {taskTitle}", + addEntry: "Zeiteintrag hinzufügen", + noEntries: "Noch keine Zeiteinträge", + deleteEntry: "Eintrag löschen", + startTime: "Startzeit", + endTime: "Endzeit (leer lassen, falls noch laufend)", + duration: "Dauer (Minuten)", + durationDesc: "Berechnete Dauer überschreiben", + durationPlaceholder: "Dauer in Minuten eingeben", + description: "Beschreibung", + descriptionPlaceholder: "Woran haben Sie gearbeitet?", + calculatedDuration: "Berechnet: {minutes} Minuten", + totalTime: "{hours}h {minutes}m gesamt", + totalMinutes: "{minutes}m gesamt", + saved: "Zeiteinträge gespeichert", + saveFailed: "Speichern der Zeiteinträge fehlgeschlagen", + openFailed: "Öffnen des Zeiteintrag-Editors fehlgeschlagen", + noTasksWithEntries: "Keine Aufgaben mit Zeiteinträgen zum Bearbeiten", + validation: { + missingStartTime: "Startzeit ist erforderlich", + endBeforeStart: "Endzeit muss nach der Startzeit liegen", + }, + }, + timeTracking: { + noTasksAvailable: "Keine Aufgaben zur Zeiterfassung verfügbar", + started: "Zeiterfassung gestartet für: {taskTitle}", + startFailed: "Starten der Zeiterfassung fehlgeschlagen", + }, + timeEntry: { + mustHaveSpecificTime: "Zeiteinträge müssen spezifische Zeiten haben. Bitte wählen Sie einen Zeitbereich in der Wochen- oder Tagesansicht.", + noTasksAvailable: "Keine Aufgaben zum Erstellen von Zeiteinträgen verfügbar", + created: "Zeiteintrag erstellt für {taskTitle} ({duration} Minuten)", + createFailed: "Erstellen des Zeiteintrags fehlgeschlagen", + }, }, contextMenus: { task: { @@ -2337,13 +2634,39 @@ export const de: TranslationTree = { dueDate: "Fälligkeitsdatum", scheduledDate: "Planungsdatum", tags: "Tags", + completedDate: "Abschlussdatum", }, + subgroupLabel: "UNTERGRUPPE", notices: { propertiesMenuFailed: "Eigenschaftenmenü konnte nicht angezeigt werden", }, }, }, components: { + dateContextMenu: { + weekdays: "Wochentage", + clearDate: "Datum löschen", + today: "Heute", + tomorrow: "Morgen", + thisWeekend: "Dieses Wochenende", + nextWeek: "Nächste Woche", + nextMonth: "Nächsten Monat", + setDateTime: "Datum & Zeit setzen", + dateLabel: "Datum", + timeLabel: "Zeit (optional)", + }, + subgroupMenuBuilder: { + none: "Keine", + status: "Status", + priority: "Priorität", + context: "Kontext", + project: "Projekt", + dueDate: "Fälligkeitsdatum", + scheduledDate: "Planungsdatum", + tags: "Tags", + completedDate: "Abschlussdatum", + subgroup: "UNTERGRUPPE", + }, propertyVisibilityDropdown: { coreProperties: "KERNEIGENSCHAFTEN", organization: "ORGANISATION", diff --git a/src/i18n/resources/en.ts b/src/i18n/resources/en.ts index 29873ff5..b36a3dd1 100644 --- a/src/i18n/resources/en.ts +++ b/src/i18n/resources/en.ts @@ -67,7 +67,17 @@ export const en: TranslationTree = { empty: { noItemsScheduled: "No items scheduled", noItemsFound: "No items found", + helpText: "Create tasks with due or scheduled dates, or add notes to see them here.", }, + contextMenu: { + showOverdueSection: "Show overdue section", + showNotes: "Show notes", + calendarSubscriptions: "Calendar subscriptions", + }, + periods: { + thisWeek: "This week", + }, + tipPrefix: "Tip: ", }, taskList: { title: "Tasks", @@ -77,13 +87,17 @@ export const en: TranslationTree = { }, notes: { title: "Notes", - refreshButton: "Refreshing...", + refreshButton: "Refresh", + refreshingButton: "Refreshing...", notices: { indexingDisabled: "Note indexing disabled", }, empty: { noNotesFound: "No notes found", + helpText: "No notes found for the selected date. Try selecting a different date in the Mini Calendar view or create some notes.", }, + loading: "Loading notes...", + refreshButtonAriaLabel: "Refresh notes list", }, miniCalendar: { title: "Mini Calendar", @@ -230,6 +244,8 @@ export const en: TranslationTree = { newTask: "New task", addCard: "+ Add a card", noTasks: "No tasks", + uncategorized: "Uncategorized", + noProject: "No Project", notices: { loadFailed: "Failed to load Kanban board", movedTask: 'Task moved to "{0}"', @@ -237,6 +253,7 @@ export const en: TranslationTree = { errors: { loadingBoard: "Error loading board.", }, + columnTitle: "Untitled", }, pomodoro: { title: "Pomodoro", @@ -336,7 +353,38 @@ export const en: TranslationTree = { }, filters: { minTime: "Min Time (minutes)", + allTasks: "All Tasks", + activeOnly: "Active Only", + completedOnly: "Completed Only", }, + refreshButton: "Refresh", + timeRanges: { + allTime: "All Time", + last7Days: "Last 7 Days", + last30Days: "Last 30 Days", + last90Days: "Last 90 Days", + customRange: "Custom Range", + }, + resetFiltersButton: "Reset Filters", + dateRangeFrom: "From", + dateRangeTo: "To", + noProject: "No Project", + cards: { + timeTrackedEstimated: "Time Tracked / Estimated", + totalTasks: "Total Tasks", + completionRate: "Completion Rate", + activeProjects: "Active Projects", + avgTimePerTask: "Avg Time per Task", + }, + labels: { + tasks: "Tasks", + completed: "Completed", + projects: "Projects", + }, + noProjectData: "No project data available", + notAvailable: "N/A", + noTasks: "No tasks found", + loading: "Loading...", }, releaseNotes: { title: "What's new in TaskNotes {version}", @@ -1636,6 +1684,30 @@ export const en: TranslationTree = { notices: { languageChanged: "Language changed to {language}.", exportTasksFailed: "Failed to export tasks as ICS file", + // ICS Event Info Modal notices + icsNoteCreatedSuccess: "Note created successfully", + icsCreationModalOpenFailed: "Failed to open creation modal", + icsNoteLinkSuccess: 'Linked note "{fileName}" to ICS event', + icsTaskCreatedSuccess: 'Task created: {title}', + icsRelatedItemsRefreshed: "Related notes refreshed", + icsFileNotFound: "File not found or invalid", + icsFileOpenFailed: "Failed to open file", + // Timeblock Info Modal notices + timeblockAttachmentExists: '"{fileName}" is already attached', + timeblockAttachmentAdded: 'Added "{fileName}" as attachment', + timeblockAttachmentRemoved: 'Removed "{fileName}" from attachments', + timeblockFileTypeNotSupported: 'Cannot open "{fileName}" - file type not supported', + timeblockTitleRequired: "Please enter a title for the timeblock", + timeblockUpdatedSuccess: 'Timeblock "{title}" updated successfully', + timeblockUpdateFailed: "Failed to update timeblock. Check console for details.", + timeblockDeletedSuccess: 'Timeblock "{title}" deleted successfully', + timeblockDeleteFailed: "Failed to delete timeblock. Check console for details.", + // Timeblock Creation Modal notices + timeblockRequiredFieldsMissing: "Please fill in all required fields", + // Agenda View notices + agendaLoadingFailed: "Error loading agenda. Please try refreshing.", + // Stats View notices + statsLoadingFailed: "Error loading project details.", }, commands: { openCalendarView: "Open mini calendar view", @@ -1664,7 +1736,107 @@ export const en: TranslationTree = { editTimeEntries: "Edit time entries (select task)", }, modals: { - task: { + deviceCode: { + title: "Google Calendar Authorization", + instructions: { + intro: "To connect your Google Calendar, please follow these steps:", + }, + steps: { + open: "Open", + inBrowser: "in your browser", + enterCode: "Enter this code when prompted:", + signIn: "Sign in with your Google account and grant access", + returnToObsidian: "Return to Obsidian (this window will close automatically)", + }, + codeLabel: "Your Code:", + copyCodeAriaLabel: "Copy code", + waitingForAuthorization: "Waiting for authorization...", + openBrowserButton: "Open Browser", + cancelButton: "Cancel", + expiresMinutesSeconds: "Code expires in {minutes}m {seconds}s", + expiresSeconds: "Code expires in {seconds}s", + }, + icsEventInfo: { + calendarEventHeading: "Calendar Event", + titleLabel: "Title", + calendarLabel: "Calendar", + dateTimeLabel: "Date & Time", + locationLabel: "Location", + descriptionLabel: "Description", + urlLabel: "URL", + relatedNotesHeading: "Related Notes & Tasks", + noRelatedItems: "No related notes or tasks found for this event.", + typeTask: "Task", + typeNote: "Note", + actionsHeading: "Actions", + createFromEventLabel: "Create from Event", + createFromEventDesc: "Create a new note or task from this calendar event", + linkExistingLabel: "Link Existing", + linkExistingDesc: "Link an existing note to this calendar event", + }, + timeblockInfo: { + editHeading: "Edit Timeblock", + dateTimeLabel: "Date & Time: ", + titleLabel: "Title", + titleDesc: "Title for your timeblock", + titlePlaceholder: "e.g., Deep work session", + descriptionLabel: "Description", + descriptionDesc: "Optional description for the timeblock", + descriptionPlaceholder: "Focus on new features, no interruptions", + colorLabel: "Color", + colorDesc: "Optional color for the timeblock", + colorPlaceholder: "#3b82f6", + attachmentsLabel: "Attachments", + attachmentsDesc: "Files or notes linked to this timeblock", + addAttachmentButton: "Add Attachment", + addAttachmentTooltip: "Select a file or note using fuzzy search", + deleteButton: "Delete Timeblock", + saveButton: "Save Changes", + deleteConfirmationTitle: "Delete Timeblock", + }, + timeblockCreation: { + heading: "Create timeblock", + dateLabel: "Date: ", + titleLabel: "Title", + titleDesc: "Title for your timeblock", + titlePlaceholder: "e.g., Deep work session", + startTimeLabel: "Start time", + startTimeDesc: "When the timeblock starts", + startTimePlaceholder: "09:00", + endTimeLabel: "End time", + endTimeDesc: "When the timeblock ends", + endTimePlaceholder: "11:00", + descriptionLabel: "Description", + descriptionDesc: "Optional description for the timeblock", + descriptionPlaceholder: "Focus on new features, no interruptions", + colorLabel: "Color", + colorDesc: "Optional color for the timeblock", + colorPlaceholder: "#3b82f6", + attachmentsLabel: "Attachments", + attachmentsDesc: "Files or notes to link to this timeblock", + addAttachmentButton: "Add Attachment", + addAttachmentTooltip: "Select a file or note using fuzzy search", + createButton: "Create timeblock", + }, + icsNoteCreation: { + heading: "Create from ICS Event", + titleLabel: "Title", + titleDesc: "Title for the new content", + folderLabel: "Folder", + folderDesc: "Destination folder (leave empty for vault root)", + folderPlaceholder: "folder/subfolder", + createButton: "Create", + startLabel: "Start: ", + endLabel: "End: ", + locationLabel: "Location: ", + calendarLabel: "Calendar: ", + useTemplateLabel: "Use Template", + useTemplateDesc: "Apply a template when creating the content", + templatePathLabel: "Template Path", + templatePathDesc: "Path to the template file", + templatePathPlaceholder: "templates/ics-note-template.md", + }, + task: { titlePlaceholder: "What needs to be done?", titleLabel: "Title", titleDetailedPlaceholder: "Task title...", @@ -2360,12 +2532,37 @@ export const en: TranslationTree = { tags: "Tags", completedDate: "Completed Date", }, + subgroupLabel: "SUBGROUP", notices: { propertiesMenuFailed: "Failed to show properties menu", }, }, }, components: { + dateContextMenu: { + weekdays: "Weekdays", + clearDate: "Clear date", + today: "Today", + tomorrow: "Tomorrow", + thisWeekend: "This weekend", + nextWeek: "Next week", + nextMonth: "Next month", + setDateTime: "Set date & time", + dateLabel: "Date", + timeLabel: "Time (optional)", + }, + subgroupMenuBuilder: { + none: "None", + status: "Status", + priority: "Priority", + context: "Context", + project: "Project", + dueDate: "Due Date", + scheduledDate: "Scheduled Date", + tags: "Tags", + completedDate: "Completed Date", + subgroup: "SUBGROUP", + }, propertyVisibilityDropdown: { coreProperties: "CORE PROPERTIES", organization: "ORGANIZATION", diff --git a/src/i18n/resources/es.ts b/src/i18n/resources/es.ts index 821cd62e..9db97c60 100644 --- a/src/i18n/resources/es.ts +++ b/src/i18n/resources/es.ts @@ -67,7 +67,17 @@ export const es: TranslationTree = { empty: { noItemsScheduled: "No hay elementos programados", noItemsFound: "No se encontraron elementos", + helpText: "Cree tareas con fechas de vencimiento o programadas, o agregue notas para verlas aquí.", }, + contextMenu: { + showOverdueSection: "Mostrar sección de vencidos", + showNotes: "Mostrar notas", + calendarSubscriptions: "Suscripciones de calendario", + }, + periods: { + thisWeek: "Esta semana", + }, + tipPrefix: "Consejo: ", }, taskList: { title: "Tareas", @@ -77,13 +87,17 @@ export const es: TranslationTree = { }, notes: { title: "Notas", - refreshButton: "Actualizando...", + refreshButton: "Actualizar", + refreshingButton: "Actualizando...", notices: { indexingDisabled: "Indexación de notas deshabilitada", }, empty: { noNotesFound: "No se encontraron notas", + helpText: "No se encontraron notas para la fecha seleccionada. Intente seleccionar una fecha diferente en la vista de Mini Calendario o cree algunas notas.", }, + loading: "Cargando notas...", + refreshButtonAriaLabel: "Actualizar lista de notas", }, miniCalendar: { title: "Mini Calendario", @@ -156,6 +170,7 @@ export const es: TranslationTree = { year: "A", list: "L", customDays: "{count}D", + listDays: "{count}d Lista", }, settings: { groups: { @@ -164,6 +179,8 @@ export const es: TranslationTree = { layout: "Diseño", propertyBasedEvents: "Eventos basados en propiedades", calendarSubscriptions: "Suscripciones de calendario", + googleCalendars: "Google Calendars", + microsoftCalendars: "Microsoft Calendars", }, dateNavigation: { navigateToDate: "Navegar a la fecha", @@ -188,6 +205,7 @@ export const es: TranslationTree = { layout: { calendarView: "Vista del calendario", customDayCount: "Número de días personalizado", + listDayCount: "Recuento de días de lista", dayStartTime: "Hora de inicio del día", dayStartTimePlaceholder: "HH:mm:ss (ej. 08:00:00)", dayEndTime: "Hora de fin del día", @@ -226,6 +244,8 @@ export const es: TranslationTree = { newTask: "Nueva tarea", addCard: "+ Agregar tarjeta", noTasks: "Sin tareas", + uncategorized: "Sin categorizar", + noProject: "Sin proyecto", notices: { loadFailed: "Error al cargar el tablero Kanban", movedTask: 'Tarea movida a "{0}"', @@ -233,6 +253,7 @@ export const es: TranslationTree = { errors: { loadingBoard: "Error al cargar el tablero.", }, + columnTitle: "Sin título", }, pomodoro: { title: "Pomodoro", @@ -332,7 +353,38 @@ export const es: TranslationTree = { }, filters: { minTime: "Tiempo mínimo (minutos)", + allTasks: "Todas las tareas", + activeOnly: "Solo activas", + completedOnly: "Solo completadas", }, + refreshButton: "Actualizar", + timeRanges: { + allTime: "Todo el tiempo", + last7Days: "Últimos 7 días", + last30Days: "Últimos 30 días", + last90Days: "Últimos 90 días", + customRange: "Rango personalizado", + }, + resetFiltersButton: "Restablecer filtros", + dateRangeFrom: "Desde", + dateRangeTo: "Hasta", + noProject: "Sin proyecto", + cards: { + timeTrackedEstimated: "Tiempo registrado / estimado", + totalTasks: "Total de tareas", + completionRate: "Tasa de completado", + activeProjects: "Proyectos activos", + avgTimePerTask: "Tiempo promedio por tarea", + }, + labels: { + tasks: "Tareas", + completed: "Completadas", + projects: "Proyectos", + }, + noProjectData: "No hay datos de proyectos disponibles", + notAvailable: "N/D", + noTasks: "No se encontraron tareas", + loading: "Cargando...", }, releaseNotes: { title: "Novedades en TaskNotes {version}", @@ -716,6 +768,20 @@ export const es: TranslationTree = { name: "Valor de propiedad de tarea", description: 'El valor que identifica una nota como tarea (ej. "tarea")', }, + + hideIdentifyingTags: { + name: "Ocultar etiquetas de identificación en tarjetas de tarea", + description: + "Cuando está habilitado, las etiquetas que coinciden con la etiqueta de identificación de tarea (incluidas las coincidencias jerárquicas como 'task/project') se ocultarán de las pantallas de tarjetas de tarea", + }, + }, + frontmatter: { + header: "Frontmatter", + description: "Configure cómo se formatean los enlaces en las propiedades frontmatter.", + useMarkdownLinks: { + name: "Usar enlaces markdown en frontmatter", + description: "Generar enlaces markdown ([texto](ruta)) en lugar de wikilinks ([[enlace]]) en las propiedades frontmatter.\n\n⚠️ Requiere el plugin 'obsidian-frontmatter-markdown-links' para funcionar correctamente.", + }, }, folderManagement: { header: "Gestión de carpetas", @@ -915,6 +981,11 @@ export const es: TranslationTree = { noKey: "sin-clave", }, deleteTooltip: "Eliminar campo", + autosuggestFilters: { + header: "Filtros de auto-sugerencia (Avanzado)", + description: + "Filtrar qué archivos aparecen en las sugerencias de autocompletar para este campo", + }, }, }, appearance: { @@ -1666,6 +1737,30 @@ export const es: TranslationTree = { notices: { languageChanged: "Idioma cambiado a {language}.", exportTasksFailed: "Error al exportar tareas como archivo ICS", + // ICS Event Info Modal notices + icsNoteCreatedSuccess: "Nota creada exitosamente", + icsCreationModalOpenFailed: "Error al abrir modal de creación", + icsNoteLinkSuccess: 'Nota "{fileName}" vinculada al evento ICS', + icsTaskCreatedSuccess: 'Tarea creada: {title}', + icsRelatedItemsRefreshed: "Elementos relacionados actualizados", + icsFileNotFound: "Archivo no encontrado o inválido", + icsFileOpenFailed: "Error al abrir el archivo", + // Timeblock Info Modal notices + timeblockAttachmentExists: '"{fileName}" ya está adjunto', + timeblockAttachmentAdded: '"{fileName}" agregado como adjunto', + timeblockAttachmentRemoved: '"{fileName}" eliminado de los adjuntos', + timeblockFileTypeNotSupported: 'No se puede abrir "{fileName}" - tipo de archivo no compatible', + timeblockTitleRequired: "Por favor ingrese un título para el bloque de tiempo", + timeblockUpdatedSuccess: 'Bloque de tiempo "{title}" actualizado exitosamente', + timeblockUpdateFailed: "Error al actualizar el bloque de tiempo. Consulte la consola para más detalles.", + timeblockDeletedSuccess: 'Bloque de tiempo "{title}" eliminado exitosamente', + timeblockDeleteFailed: "Error al eliminar el bloque de tiempo. Consulte la consola para más detalles.", + // Timeblock Creation Modal notices + timeblockRequiredFieldsMissing: "Por favor complete todos los campos obligatorios", + // Agenda View notices + agendaLoadingFailed: "Error al cargar la agenda. Por favor intente actualizar.", + // Stats View notices + statsLoadingFailed: "Error al cargar los detalles del proyecto.", }, commands: { openCalendarView: "Abrir vista de mini calendario", @@ -1689,9 +1784,127 @@ export const es: TranslationTree = { pauseResumePomodoro: "Pausar/reanudar temporizador pomodoro", refreshCache: "Actualizar caché", exportAllTasksIcs: "Exportar todas las tareas como archivo ICS", - viewReleaseNotes: "Ver notas de versión", + viewReleaseNotes: "Ver notas de la versión", + startTimeTrackingWithSelector: "Iniciar seguimiento de tiempo (seleccionar tarea)", + editTimeEntries: "Editar entradas de tiempo (seleccionar tarea)", }, modals: { + deviceCode: { + title: "Autorización de Google Calendar", + instructions: { + intro: "Para conectar su Google Calendar, siga estos pasos:", + }, + steps: { + open: "Abrir", + inBrowser: "en su navegador", + enterCode: "Ingrese este código cuando se le solicite:", + signIn: "Inicie sesión con su cuenta de Google y otorgue acceso", + returnToObsidian: "Vuelva a Obsidian (esta ventana se cerrará automáticamente)", + }, + codeLabel: "Su código:", + copyCodeAriaLabel: "Copiar código", + waitingForAuthorization: "Esperando autorización...", + openBrowserButton: "Abrir navegador", + cancelButton: "Cancelar", + expiresMinutesSeconds: "El código expira en {minutes}m {seconds}s", + expiresSeconds: "El código expira en {seconds}s", + }, + icsEventInfo: { + calendarEventHeading: "Evento de calendario", + titleLabel: "Título", + calendarLabel: "Calendario", + dateTimeLabel: "Fecha y hora", + locationLabel: "Ubicación", + descriptionLabel: "Descripción", + urlLabel: "URL", + relatedNotesHeading: "Notas y tareas relacionadas", + noRelatedItems: "No se encontraron notas o tareas relacionadas para este evento.", + typeTask: "Tarea", + typeNote: "Nota", + actionsHeading: "Acciones", + createFromEventLabel: "Crear desde evento", + createFromEventDesc: "Crear una nueva nota o tarea desde este evento de calendario", + linkExistingLabel: "Vincular existente", + linkExistingDesc: "Vincular una nota existente a este evento de calendario", + }, + timeblockInfo: { + editHeading: "Editar bloque de tiempo", + dateTimeLabel: "Fecha y hora: ", + titleLabel: "Título", + titleDesc: "Título para su bloque de tiempo", + titlePlaceholder: "ej. Sesión de trabajo profundo", + descriptionLabel: "Descripción", + descriptionDesc: "Descripción opcional para el bloque de tiempo", + descriptionPlaceholder: "Enfoque en nuevas funciones, sin interrupciones", + colorLabel: "Color", + colorDesc: "Color opcional para el bloque de tiempo", + colorPlaceholder: "#3b82f6", + attachmentsLabel: "Adjuntos", + attachmentsDesc: "Archivos o notas vinculados a este bloque de tiempo", + addAttachmentButton: "Agregar adjunto", + addAttachmentTooltip: "Seleccionar un archivo o nota usando búsqueda difusa", + deleteButton: "Eliminar bloque de tiempo", + saveButton: "Guardar cambios", + deleteConfirmationTitle: "Eliminar bloque de tiempo", + }, + timeblockCreation: { + heading: "Crear bloque de tiempo", + dateLabel: "Fecha: ", + titleLabel: "Título", + titleDesc: "Título para su bloque de tiempo", + titlePlaceholder: "ej. Sesión de trabajo profundo", + startTimeLabel: "Hora de inicio", + startTimeDesc: "Cuándo comienza el bloque de tiempo", + startTimePlaceholder: "09:00", + endTimeLabel: "Hora de fin", + endTimeDesc: "Cuándo termina el bloque de tiempo", + endTimePlaceholder: "11:00", + descriptionLabel: "Descripción", + descriptionDesc: "Descripción opcional para el bloque de tiempo", + descriptionPlaceholder: "Enfoque en nuevas funciones, sin interrupciones", + colorLabel: "Color", + colorDesc: "Color opcional para el bloque de tiempo", + colorPlaceholder: "#3b82f6", + attachmentsLabel: "Adjuntos", + attachmentsDesc: "Archivos o notas para vincular a este bloque de tiempo", + addAttachmentButton: "Agregar adjunto", + addAttachmentTooltip: "Seleccionar un archivo o nota usando búsqueda difusa", + createButton: "Crear bloque de tiempo", + }, + icsNoteCreation: { + heading: "Crear desde evento ICS", + titleLabel: "Título", + titleDesc: "Título para el nuevo contenido", + folderLabel: "Carpeta", + folderDesc: "Carpeta de destino (dejar vacío para la raíz del vault)", + folderPlaceholder: "carpeta/subcarpeta", + createButton: "Crear", + startLabel: "Inicio: ", + endLabel: "Fin: ", + locationLabel: "Ubicación: ", + calendarLabel: "Calendario: ", + useTemplateLabel: "Usar plantilla", + useTemplateDesc: "Aplicar una plantilla al crear el contenido", + templatePathLabel: "Ruta de plantilla", + templatePathDesc: "Ruta al archivo de plantilla", + templatePathPlaceholder: "templates/ics-note-template.md", + }, + taskSelector: { + title: "Seleccionar tarea", + placeholder: "Escribe para buscar tareas...", + instructions: { + navigate: "para navegar", + select: "para seleccionar", + dismiss: "para cancelar", + }, + notices: { + noteNotFound: "No se pudo encontrar la nota \"{name}\"", + }, + dueDate: { + overdue: "Vencimiento: {date} (vencido)", + today: "Vencimiento: Hoy", + }, + }, task: { titlePlaceholder: "¿Qué necesita hacerse?", titleLabel: "Título", @@ -1796,6 +2009,7 @@ export const es: TranslationTree = { successShortened: 'Tarea "{title}" creada exitosamente (nombre de archivo acortado por longitud)', failure: "Error al crear tarea: {message}", + blockingUnresolved: "No se pudo resolver: {entries}", }, }, taskEdit: { @@ -1820,6 +2034,8 @@ export const es: TranslationTree = { updateSuccess: 'Tarea "{title}" actualizada exitosamente', updateFailure: "Error al actualizar tarea: {message}", fileMissing: "No se pudo encontrar el archivo de tarea: {path}", + dependenciesUpdateSuccess: "Dependencias actualizadas", + blockingUnresolved: "No se pudo resolver: {entries}", openNoteFailure: "Error al abrir nota de tarea", archiveSuccess: "Tarea {action} exitosamente", archiveFailure: "Error al archivar tarea", @@ -1932,6 +2148,41 @@ export const es: TranslationTree = { updateFailed: "Error al actualizar fecha programada. Por favor intenta de nuevo.", }, }, + timeEntryEditor: { + title: "Entradas de tiempo - {taskTitle}", + addEntry: "Agregar entrada de tiempo", + noEntries: "Aún no hay entradas de tiempo", + deleteEntry: "Eliminar entrada", + startTime: "Hora de inicio", + endTime: "Hora de finalización (dejar vacío si aún está en ejecución)", + duration: "Duración (minutos)", + durationDesc: "Anular duración calculada", + durationPlaceholder: "Ingresar duración en minutos", + description: "Descripción", + descriptionPlaceholder: "¿En qué trabajaste?", + calculatedDuration: "Calculado: {minutes} minutos", + totalTime: "{hours}h {minutes}m total", + totalMinutes: "{minutes}m total", + saved: "Entradas de tiempo guardadas", + saveFailed: "Error al guardar entradas de tiempo", + openFailed: "Error al abrir el editor de entradas de tiempo", + noTasksWithEntries: "No hay tareas con entradas de tiempo para editar", + validation: { + missingStartTime: "Se requiere hora de inicio", + endBeforeStart: "La hora de finalización debe ser posterior a la hora de inicio", + }, + }, + timeTracking: { + noTasksAvailable: "No hay tareas disponibles para rastrear tiempo", + started: "Seguimiento de tiempo iniciado para: {taskTitle}", + startFailed: "Error al iniciar el seguimiento de tiempo", + }, + timeEntry: { + mustHaveSpecificTime: "Las entradas de tiempo deben tener horas específicas. Seleccione un rango de tiempo en la vista semanal o diaria.", + noTasksAvailable: "No hay tareas disponibles para crear entradas de tiempo", + created: "Entrada de tiempo creada para {taskTitle} ({duration} minutos)", + createFailed: "Error al crear entrada de tiempo", + }, }, contextMenus: { task: { @@ -2340,13 +2591,39 @@ export const es: TranslationTree = { dueDate: "Fecha de vencimiento", scheduledDate: "Fecha programada", tags: "Etiquetas", + completedDate: "Fecha de finalización", }, + subgroupLabel: "SUBGRUPO", notices: { propertiesMenuFailed: "Error al mostrar menú de propiedades", }, }, }, components: { + dateContextMenu: { + weekdays: "Días laborables", + clearDate: "Borrar fecha", + today: "Hoy", + tomorrow: "Mañana", + thisWeekend: "Este fin de semana", + nextWeek: "Próxima semana", + nextMonth: "Próximo mes", + setDateTime: "Establecer fecha y hora", + dateLabel: "Fecha", + timeLabel: "Hora (opcional)", + }, + subgroupMenuBuilder: { + none: "Ninguno", + status: "Estado", + priority: "Prioridad", + context: "Contexto", + project: "Proyecto", + dueDate: "Fecha de vencimiento", + scheduledDate: "Fecha programada", + tags: "Etiquetas", + completedDate: "Fecha de finalización", + subgroup: "SUBGRUPO", + }, propertyVisibilityDropdown: { coreProperties: "PROPIEDADES PRINCIPALES", organization: "ORGANIZACIÓN", diff --git a/src/i18n/resources/fr.ts b/src/i18n/resources/fr.ts index c80bc2c6..30cba84f 100644 --- a/src/i18n/resources/fr.ts +++ b/src/i18n/resources/fr.ts @@ -67,7 +67,17 @@ export const fr: TranslationTree = { empty: { noItemsScheduled: "Aucun élément planifié", noItemsFound: "Aucun élément trouvé", + helpText: "Créez des tâches avec des dates d'échéance ou planifiées, ou ajoutez des notes pour les voir ici.", }, + contextMenu: { + showOverdueSection: "Afficher la section en retard", + showNotes: "Afficher les notes", + calendarSubscriptions: "Abonnements au calendrier", + }, + periods: { + thisWeek: "Cette semaine", + }, + tipPrefix: "Astuce : ", }, taskList: { title: "Tâches", @@ -77,13 +87,17 @@ export const fr: TranslationTree = { }, notes: { title: "Bloc-notes", - refreshButton: "Actualisation...", + refreshButton: "Actualiser", + refreshingButton: "Actualisation...", notices: { indexingDisabled: "Indexation des notes désactivée", }, empty: { noNotesFound: "Aucune note trouvée", + helpText: "Aucune note trouvée pour la date sélectionnée. Essayez de sélectionner une date différente dans la vue Mini Calendrier ou créez quelques notes.", }, + loading: "Chargement des notes...", + refreshButtonAriaLabel: "Actualiser la liste des notes", }, miniCalendar: { title: "Mini calendrier", @@ -156,6 +170,7 @@ export const fr: TranslationTree = { year: "A", list: "L", customDays: "{count}J", + listDays: "{count}j Liste", }, settings: { groups: { @@ -164,6 +179,8 @@ export const fr: TranslationTree = { layout: "Mise en page", propertyBasedEvents: "Événements basés sur les propriétés", calendarSubscriptions: "Abonnements au calendrier", + googleCalendars: "Google Calendars", + microsoftCalendars: "Microsoft Calendars", }, dateNavigation: { navigateToDate: "Naviguer vers la date", @@ -188,6 +205,7 @@ export const fr: TranslationTree = { layout: { calendarView: "Vue du calendrier", customDayCount: "Nombre de jours personnalisé", + listDayCount: "Nombre de jours de liste", dayStartTime: "Heure de début de journée", dayStartTimePlaceholder: "HH:mm:ss (ex. 08:00:00)", dayEndTime: "Heure de fin de journée", @@ -226,6 +244,8 @@ export const fr: TranslationTree = { newTask: "Nouvelle tâche", addCard: "+ Ajouter une carte", noTasks: "Aucune tâche", + uncategorized: "Non catégorisé", + noProject: "Aucun projet", notices: { loadFailed: "Échec du chargement du tableau Kanban", movedTask: 'Tâche déplacée vers "{0}"', @@ -233,6 +253,7 @@ export const fr: TranslationTree = { errors: { loadingBoard: "Erreur lors du chargement du tableau.", }, + columnTitle: "Sans titre", }, pomodoro: { title: "Sessions Pomodoro", @@ -332,7 +353,38 @@ export const fr: TranslationTree = { }, filters: { minTime: "Temps min (minutes)", + allTasks: "Toutes les tâches", + activeOnly: "Actives uniquement", + completedOnly: "Terminées uniquement", }, + refreshButton: "Actualiser", + timeRanges: { + allTime: "Tout le temps", + last7Days: "7 derniers jours", + last30Days: "30 derniers jours", + last90Days: "90 derniers jours", + customRange: "Plage personnalisée", + }, + resetFiltersButton: "Réinitialiser les filtres", + dateRangeFrom: "De", + dateRangeTo: "À", + noProject: "Aucun projet", + cards: { + timeTrackedEstimated: "Temps suivi / estimé", + totalTasks: "Total des tâches", + completionRate: "Taux de complétion", + activeProjects: "Projets actifs", + avgTimePerTask: "Temps moyen par tâche", + }, + labels: { + tasks: "Tâches", + completed: "Terminées", + projects: "Projets", + }, + noProjectData: "Aucune donnée de projet disponible", + notAvailable: "N/D", + noTasks: "Aucune tâche trouvée", + loading: "Chargement...", }, releaseNotes: { title: "Nouveautés de TaskNotes {version}", @@ -710,6 +762,11 @@ export const fr: TranslationTree = { name: "Tag de tâche", description: "Tag qui identifie les notes comme des tâches (sans #)", }, + hideIdentifyingTags: { + name: "Masquer les tags d'identification dans les cartes de tâches", + description: + "Lorsque activé, les tags correspondant au tag d'identification de tâche (y compris les correspondances hiérarchiques comme 'task/project') seront masqués dans l'affichage des cartes de tâches", + }, taskProperty: { name: "Nom de la propriété de tâche", description: 'Le nom de la propriété frontmatter (ex. "category")', @@ -727,6 +784,14 @@ export const fr: TranslationTree = { "Liste séparée par des virgules des dossiers à exclure de l'onglet Notes", }, }, + frontmatter: { + header: "Frontmatter", + description: "Configurez la façon dont les liens sont formatés dans les propriétés frontmatter.", + useMarkdownLinks: { + name: "Utiliser des liens markdown dans le frontmatter", + description: "Générer des liens markdown ([text](path)) au lieu de wikilinks ([[link]]) dans les propriétés frontmatter.\n\n⚠️ Nécessite le plugin 'obsidian-frontmatter-markdown-links' pour fonctionner correctement.", + }, + }, taskInteraction: { header: "Interaction avec les tâches", description: "Configurez le comportement des clics sur les tâches.", @@ -917,6 +982,11 @@ export const fr: TranslationTree = { noKey: "aucune-cle", }, deleteTooltip: "Supprimer le champ", + autosuggestFilters: { + header: "Filtres d'auto-suggestion (Avancé)", + description: + "Filtrer quels fichiers apparaissent dans les suggestions d'auto-complétion pour ce champ", + }, }, }, appearance: { @@ -1667,6 +1737,25 @@ export const fr: TranslationTree = { notices: { languageChanged: "Langue changée pour {language}.", exportTasksFailed: "Échec de l'export des tâches au format ICS", + icsNoteCreatedSuccess: "Note créée avec succès", + icsCreationModalOpenFailed: "Échec de l'ouverture de la modale de création", + icsNoteLinkSuccess: "Note \"{fileName}\" liée à l'événement ICS", + icsTaskCreatedSuccess: "Tâche créée : {title}", + icsRelatedItemsRefreshed: "Notes associées actualisées", + icsFileNotFound: "Fichier introuvable ou invalide", + icsFileOpenFailed: "Échec de l'ouverture du fichier", + timeblockAttachmentExists: "\"{fileName}\" est déjà attaché", + timeblockAttachmentAdded: "\"{fileName}\" ajouté comme pièce jointe", + timeblockAttachmentRemoved: "\"{fileName}\" retiré des pièces jointes", + timeblockFileTypeNotSupported: "Impossible d'ouvrir \"{fileName}\" - type de fichier non pris en charge", + timeblockTitleRequired: "Veuillez saisir un titre pour le bloc de temps", + timeblockUpdatedSuccess: "Bloc de temps \"{title}\" mis à jour avec succès", + timeblockUpdateFailed: "Échec de la mise à jour du bloc de temps. Consultez la console pour plus de détails.", + timeblockDeletedSuccess: "Bloc de temps \"{title}\" supprimé avec succès", + timeblockDeleteFailed: "Échec de la suppression du bloc de temps. Consultez la console pour plus de détails.", + timeblockRequiredFieldsMissing: "Veuillez remplir tous les champs requis", + agendaLoadingFailed: "Erreur lors du chargement de l'agenda. Veuillez essayer d'actualiser.", + statsLoadingFailed: "Erreur lors du chargement des détails du projet.", }, commands: { openCalendarView: "Ouvrir la vue mini calendrier", @@ -1691,8 +1780,110 @@ export const fr: TranslationTree = { refreshCache: "Actualiser le cache", exportAllTasksIcs: "Exporter toutes les tâches en fichier ICS", viewReleaseNotes: "Voir les notes de version", + startTimeTrackingWithSelector: "Démarrer le suivi du temps (sélectionner une tâche)", + editTimeEntries: "Modifier les entrées de temps (sélectionner une tâche)", }, modals: { + deviceCode: { + title: "Autorisation Google Calendar", + instructions: { + intro: "Pour connecter votre Google Calendar, veuillez suivre ces étapes :", + }, + steps: { + open: "Ouvrir", + inBrowser: "dans votre navigateur", + enterCode: "Entrez ce code lorsque demandé :", + signIn: "Connectez-vous avec votre compte Google et accordez l'accès", + returnToObsidian: "Retournez à Obsidian (cette fenêtre se fermera automatiquement)", + }, + codeLabel: "Votre code :", + copyCodeAriaLabel: "Copier le code", + waitingForAuthorization: "En attente d'autorisation...", + openBrowserButton: "Ouvrir le navigateur", + cancelButton: "Annuler", + expiresMinutesSeconds: "Le code expire dans {minutes}m {seconds}s", + expiresSeconds: "Le code expire dans {seconds}s", + }, + icsEventInfo: { + calendarEventHeading: "Événement de calendrier", + titleLabel: "Titre", + calendarLabel: "Calendrier", + dateTimeLabel: "Date et heure", + locationLabel: "Lieu", + descriptionLabel: "Description", + urlLabel: "URL", + relatedNotesHeading: "Notes et tâches associées", + noRelatedItems: "Aucune note ou tâche associée trouvée pour cet événement.", + typeTask: "Tâche", + typeNote: "Note", + actionsHeading: "Actions", + createFromEventLabel: "Créer à partir de l'événement", + createFromEventDesc: "Créer une nouvelle note ou tâche à partir de cet événement de calendrier", + linkExistingLabel: "Lier existant", + linkExistingDesc: "Lier une note existante à cet événement de calendrier", + }, + timeblockInfo: { + editHeading: "Modifier le bloc de temps", + dateTimeLabel: "Date et heure : ", + titleLabel: "Titre", + titleDesc: "Titre de votre bloc de temps", + titlePlaceholder: "ex., Session de travail approfondi", + descriptionLabel: "Description", + descriptionDesc: "Description optionnelle du bloc de temps", + descriptionPlaceholder: "Concentrez-vous sur les nouvelles fonctionnalités, sans interruptions", + colorLabel: "Couleur", + colorDesc: "Couleur optionnelle pour le bloc de temps", + colorPlaceholder: "#3b82f6", + attachmentsLabel: "Pièces jointes", + attachmentsDesc: "Fichiers ou notes liés à ce bloc de temps", + addAttachmentButton: "Ajouter une pièce jointe", + addAttachmentTooltip: "Sélectionnez un fichier ou une note en utilisant la recherche floue", + deleteButton: "Supprimer le bloc de temps", + saveButton: "Enregistrer les modifications", + deleteConfirmationTitle: "Supprimer le bloc de temps", + }, + timeblockCreation: { + heading: "Créer un bloc de temps", + dateLabel: "Date : ", + titleLabel: "Titre", + titleDesc: "Titre de votre bloc de temps", + titlePlaceholder: "ex., Session de travail approfondi", + startTimeLabel: "Heure de début", + startTimeDesc: "Quand le bloc de temps commence", + startTimePlaceholder: "09:00", + endTimeLabel: "Heure de fin", + endTimeDesc: "Quand le bloc de temps se termine", + endTimePlaceholder: "11:00", + descriptionLabel: "Description", + descriptionDesc: "Description optionnelle du bloc de temps", + descriptionPlaceholder: "Concentrez-vous sur les nouvelles fonctionnalités, sans interruptions", + colorLabel: "Couleur", + colorDesc: "Couleur optionnelle pour le bloc de temps", + colorPlaceholder: "#3b82f6", + attachmentsLabel: "Pièces jointes", + attachmentsDesc: "Fichiers ou notes à lier à ce bloc de temps", + addAttachmentButton: "Ajouter une pièce jointe", + addAttachmentTooltip: "Sélectionnez un fichier ou une note en utilisant la recherche floue", + createButton: "Créer un bloc de temps", + }, + icsNoteCreation: { + heading: "Créer à partir d'un événement ICS", + titleLabel: "Titre", + titleDesc: "Titre du nouveau contenu", + folderLabel: "Dossier", + folderDesc: "Dossier de destination (laisser vide pour la racine du coffre)", + folderPlaceholder: "dossier/sous-dossier", + createButton: "Créer", + startLabel: "Début : ", + endLabel: "Fin : ", + locationLabel: "Lieu : ", + calendarLabel: "Calendrier : ", + useTemplateLabel: "Utiliser un modèle", + useTemplateDesc: "Appliquer un modèle lors de la création du contenu", + templatePathLabel: "Chemin du modèle", + templatePathDesc: "Chemin vers le fichier de modèle", + templatePathPlaceholder: "templates/ics-note-template.md", + }, task: { titlePlaceholder: "Quel est votre prochain objectif ?", titleLabel: "Titre", @@ -1717,6 +1908,20 @@ export const fr: TranslationTree = { selectTaskTooltip: "Sélectionnez une note de tâche via la recherche floue", removeTaskTooltip: "Retirer la tâche", }, + organization: { + projects: "Projets", + subtasks: "Sous-tâches", + addToProject: "Ajouter au projet", + addToProjectButton: "Ajouter au projet", + addSubtasks: "Ajouter des sous-tâches", + addSubtasksButton: "Ajouter une sous-tâche", + addSubtasksTooltip: "Sélectionner des tâches pour en faire des sous-tâches de cette tâche", + removeSubtaskTooltip: "Retirer la sous-tâche", + notices: { + noEligibleSubtasks: "Aucune tâche éligible disponible pour être assignée comme sous-tâche", + subtaskSelectFailed: "Échec de l'ouverture du sélecteur de sous-tâches", + }, + }, customFieldsLabel: "Champs personnalisés", actions: { due: "Définir l'échéance", @@ -1922,6 +2127,57 @@ export const fr: TranslationTree = { updateFailed: "Échec de la mise à jour de la date planifiée. Veuillez réessayer.", }, }, + taskSelector: { + title: "Sélectionner une tâche", + placeholder: "Tapez pour rechercher des tâches...", + instructions: { + navigate: "pour naviguer", + select: "pour sélectionner", + dismiss: "pour annuler", + }, + notices: { + noteNotFound: 'Impossible de trouver la note "{name}"', + }, + dueDate: { + overdue: "Échéance : {date} (en retard)", + today: "Échéance : Aujourd'hui", + }, + }, + timeEntryEditor: { + title: "Entrées de temps - {taskTitle}", + addEntry: "Ajouter une entrée de temps", + noEntries: "Aucune entrée de temps pour le moment", + deleteEntry: "Supprimer l'entrée", + startTime: "Heure de début", + endTime: "Heure de fin (laisser vide si toujours en cours)", + duration: "Durée (minutes)", + durationDesc: "Remplacer la durée calculée", + durationPlaceholder: "Entrer la durée en minutes", + description: "Description", + descriptionPlaceholder: "Sur quoi avez-vous travaillé ?", + calculatedDuration: "Calculé : {minutes} minutes", + totalTime: "{hours}h {minutes}m au total", + totalMinutes: "{minutes}m au total", + saved: "Entrées de temps enregistrées", + saveFailed: "Échec de l'enregistrement des entrées de temps", + openFailed: "Échec de l'ouverture de l'éditeur d'entrées de temps", + noTasksWithEntries: "Aucune tâche n'a d'entrées de temps à modifier", + validation: { + missingStartTime: "L'heure de début est requise", + endBeforeStart: "L'heure de fin doit être après l'heure de début", + }, + }, + timeTracking: { + noTasksAvailable: "Aucune tâche disponible pour le suivi du temps", + started: "Suivi du temps démarré pour : {taskTitle}", + startFailed: "Échec du démarrage du suivi du temps", + }, + timeEntry: { + mustHaveSpecificTime: "Les entrées de temps doivent avoir des heures spécifiques. Veuillez sélectionner une plage horaire dans la vue semaine ou jour.", + noTasksAvailable: "Aucune tâche disponible pour créer des entrées de temps", + created: "Entrée de temps créée pour {taskTitle} ({duration} minutes)", + createFailed: "Échec de la création de l'entrée de temps", + }, }, contextMenus: { task: { @@ -1984,6 +2240,25 @@ export const fr: TranslationTree = { updateFailed: "Impossible de mettre à jour les dépendances", }, }, + organization: { + title: "Organisation", + projects: "Projets", + addToProject: "Ajouter au projet…", + subtasks: "Sous-tâches", + addSubtasks: "Ajouter des sous-tâches…", + notices: { + alreadyInProject: "La tâche est déjà dans ce projet", + alreadySubtask: "La tâche est déjà une sous-tâche de cette tâche", + addedToProject: "Ajoutée au projet : {project}", + addedAsSubtask: "{subtask} ajoutée comme sous-tâche de {parent}", + addToProjectFailed: "Échec de l'ajout de la tâche au projet", + addAsSubtaskFailed: "Échec de l'ajout de la tâche comme sous-tâche", + projectSelectFailed: "Échec de l'ouverture du sélecteur de projet", + subtaskSelectFailed: "Échec de l'ouverture du sélecteur de sous-tâches", + noEligibleSubtasks: "Aucune tâche éligible disponible pour être assignée comme sous-tâche", + currentTaskNotFound: "Fichier de tâche actuel introuvable", + }, + }, subtasks: { loading: "Chargement des sous-tâches...", noSubtasks: "Aucune sous-tâche trouvée", @@ -2311,11 +2586,15 @@ export const fr: TranslationTree = { dueDate: "Date d'échéance", scheduledDate: "Date planifiée", tags: "Étiquettes", + completedDate: "Date de complétion", }, notices: { propertiesMenuFailed: "Impossible d'afficher le menu des propriétés", }, }, + filterBar: { + subgroupLabel: "SOUS-GROUPE", + }, }, components: { propertyVisibilityDropdown: { @@ -2354,6 +2633,30 @@ export const fr: TranslationTree = { oneDayBefore: "1 jour avant", }, }, + dateContextMenu: { + weekdays: "Jours de semaine", + clearDate: "Effacer la date", + today: "Aujourd'hui", + tomorrow: "Demain", + thisWeekend: "Ce week-end", + nextWeek: "La semaine prochaine", + nextMonth: "Le mois prochain", + setDateTime: "Définir la date et l'heure", + dateLabel: "Date", + timeLabel: "Heure (optionnelle)", + }, + subgroupMenuBuilder: { + none: "Aucun", + status: "Statut", + priority: "Priorité", + context: "Contexte", + project: "Projet", + dueDate: "Date d'échéance", + scheduledDate: "Date programmée", + tags: "Étiquettes", + completedDate: "Date de finalisation", + subgroup: "SOUS-GROUPE", + }, recurrenceContextMenu: { daily: "Quotidien", weeklyOn: "Hebdomadaire le {day}", diff --git a/src/i18n/resources/ja.ts b/src/i18n/resources/ja.ts index 6b6aaaca..b145f0ed 100644 --- a/src/i18n/resources/ja.ts +++ b/src/i18n/resources/ja.ts @@ -156,6 +156,7 @@ export const ja: TranslationTree = { year: "年", list: "一覧", customDays: "{count}日", + listDays: "{count}日一覧", }, settings: { groups: { @@ -164,6 +165,8 @@ export const ja: TranslationTree = { layout: "レイアウト", propertyBasedEvents: "プロパティベースのイベント", calendarSubscriptions: "カレンダー購読", + googleCalendars: "Google Calendars", + microsoftCalendars: "Microsoft Calendars", }, dateNavigation: { navigateToDate: "日付に移動", @@ -188,6 +191,7 @@ export const ja: TranslationTree = { layout: { calendarView: "カレンダービュー", customDayCount: "カスタム日数", + listDayCount: "一覧表示日数", dayStartTime: "1日の開始時刻", dayStartTimePlaceholder: "HH:mm:ss(例:08:00:00)", dayEndTime: "1日の終了時刻", @@ -673,7 +677,8 @@ export const ja: TranslationTree = { }, archiveFolder: { name: "アーカイブフォルダー", - description: "アーカイブ時にタスクを移動するフォルダー", + description: + "アーカイブ時にタスクを移動するフォルダー。{{year}}、{{month}}、{{priority}}などのテンプレート変数をサポートします。", }, }, taskIdentification: { @@ -691,6 +696,11 @@ export const ja: TranslationTree = { name: "タスクタグ", description: "ノートをタスクとして識別するタグ(#なし)", }, + hideIdentifyingTags: { + name: "タスクカードで識別タグを非表示", + description: + "有効にすると、タスク識別タグに一致するタグ('task/project'のような階層的一致を含む)がタスクカード表示から非表示になります", + }, taskProperty: { name: "タスクプロパティ名", description: 'フロントマタープロパティ名(例:"category")', @@ -707,6 +717,14 @@ export const ja: TranslationTree = { description: "ノートタブから除外するフォルダーのカンマ区切りリスト", }, }, + frontmatter: { + header: "Frontmatter", + description: "frontmatterプロパティでのリンクのフォーマット方法を設定します。", + useMarkdownLinks: { + name: "frontmatterでmarkdownリンクを使用", + description: "frontmatterプロパティでwikilink([[link]])の代わりにmarkdownリンク([text](path))を生成します。\n\n⚠️ 正しく機能するには'obsidian-frontmatter-markdown-links'プラグインが必要です。", + }, + }, taskInteraction: { header: "タスクインタラクション", description: "タスクをクリックする際の動作を設定します。", @@ -896,6 +914,11 @@ export const ja: TranslationTree = { noKey: "no-key", }, deleteTooltip: "フィールドを削除", + autosuggestFilters: { + header: "自動提案フィルター", + description: + "タスク作成時にカスタムユーザーフィールドの自動提案をフィルターします。各フィールドに対して、提案される値を特定のタグ、フォルダー、またはプロパティ値を持つノートに制限できます。", + }, }, }, appearance: { @@ -1087,6 +1110,10 @@ export const ja: TranslationTree = { name: "ステータスバーに追跡タスクを表示", description: "Obsidianのステータスバーに現在追跡中のタスクを表示", }, + showTaskCardInNote: { + name: "ノート内にタスクカードを表示", + description: "タスクノートを開いたときにタスクプロパティを表示するインタラクティブカードを表示", + }, showProjectSubtasksWidget: { name: "プロジェクトサブタスクウィジェットを表示", description: "現在のプロジェクトノートのサブタスクを表示するウィジェットを表示", @@ -1637,6 +1664,8 @@ export const ja: TranslationTree = { refreshCache: "キャッシュを更新", exportAllTasksIcs: "すべてのタスクをICSファイルとしてエクスポート", viewReleaseNotes: "リリースノートを表示", + startTimeTrackingWithSelector: "時間追跡を開始(タスクを選択)", + editTimeEntries: "時間エントリを編集(タスクを選択)", }, modals: { task: { @@ -1655,6 +1684,28 @@ export const ja: TranslationTree = { tagsPlaceholder: "tag1, tag2", timeEstimateLabel: "時間見積もり(分)", timeEstimatePlaceholder: "30", + dependencies: { + blockedBy: "ブロック元", + blocking: "ブロックしている", + placeholder: "[[タスクノート]]", + addTaskButton: "タスクを追加", + selectTaskTooltip: "ファジー検索を使用してタスクノートを選択", + removeTaskTooltip: "タスクを削除", + }, + organization: { + projects: "プロジェクト", + subtasks: "サブタスク", + addToProject: "プロジェクトに追加", + addToProjectButton: "プロジェクトに追加", + addSubtasks: "サブタスクを追加", + addSubtasksButton: "サブタスクを追加", + addSubtasksTooltip: "このタスクのサブタスクにするタスクを選択", + removeSubtaskTooltip: "サブタスクを削除", + notices: { + noEligibleSubtasks: "サブタスクとして割り当て可能なタスクがありません", + subtaskSelectFailed: "サブタスクセレクターを開けませんでした", + }, + }, customFieldsLabel: "カスタムフィールド", actions: { due: "期限日を設定", @@ -1706,6 +1757,22 @@ export const ja: TranslationTree = { ordinal: "{number}{suffix}", }, }, + taskSelector: { + title: "タスクを選択", + placeholder: "タスクを検索...", + instructions: { + navigate: "移動", + select: "選択", + dismiss: "キャンセル", + }, + notices: { + noteNotFound: 'ノート"{name}"が見つかりませんでした', + }, + dueDate: { + overdue: "期限:{date}(期限切れ)", + today: "期限:今日", + }, + }, taskCreation: { title: "タスクを作成", actions: { @@ -1720,6 +1787,7 @@ export const ja: TranslationTree = { successShortened: 'タスク"{title}"が正常に作成されました(長さのためファイル名が短縮されました)', failure: "タスクの作成に失敗しました:{message}", + blockingUnresolved: "解決できませんでした:{entries}", }, }, taskEdit: { @@ -1743,6 +1811,8 @@ export const ja: TranslationTree = { noChanges: "保存する変更がありません", updateSuccess: 'タスク"{title}"が正常に更新されました', updateFailure: "タスクの更新に失敗しました:{message}", + dependenciesUpdateSuccess: "依存関係が更新されました", + blockingUnresolved: "解決できませんでした:{entries}", fileMissing: "タスクファイルが見つかりませんでした:{path}", openNoteFailure: "タスクノートを開けませんでした", archiveSuccess: "タスクが正常に{action}されました", @@ -1855,6 +1925,41 @@ export const ja: TranslationTree = { updateFailed: "予定日の更新に失敗しました。再試行してください。", }, }, + timeEntryEditor: { + title: "時間エントリ - {taskTitle}", + addEntry: "時間エントリを追加", + noEntries: "まだ時間エントリがありません", + deleteEntry: "エントリを削除", + startTime: "開始時刻", + endTime: "終了時刻(実行中の場合は空白のまま)", + duration: "時間(分)", + durationDesc: "計算された時間を上書き", + durationPlaceholder: "時間を分単位で入力", + description: "説明", + descriptionPlaceholder: "何に取り組みましたか?", + calculatedDuration: "計算:{minutes}分", + totalTime: "合計{hours}時間{minutes}分", + totalMinutes: "合計{minutes}分", + saved: "時間エントリが保存されました", + saveFailed: "時間エントリの保存に失敗しました", + openFailed: "時間エントリエディターを開けませんでした", + noTasksWithEntries: "編集する時間エントリを持つタスクがありません", + validation: { + missingStartTime: "開始時刻は必須です", + endBeforeStart: "終了時刻は開始時刻より後である必要があります", + }, + }, + timeTracking: { + noTasksAvailable: "時間を追跡できるタスクがありません", + started: "時間追跡を開始しました:{taskTitle}", + startFailed: "時間追跡の開始に失敗しました", + }, + timeEntry: { + mustHaveSpecificTime: "時間エントリには具体的な時間が必要です。週表示または日表示で時間範囲を選択してください。", + noTasksAvailable: "時間エントリを作成できるタスクがありません", + created: "{taskTitle}の時間エントリを作成しました({duration}分)", + createFailed: "時間エントリの作成に失敗しました", + }, }, contextMenus: { task: { @@ -1897,6 +2002,45 @@ export const ja: TranslationTree = { clearRecurrence: "繰り返しをクリア", customRecurrence: "カスタム繰り返し...", createSubtask: "サブタスクを作成", + dependencies: { + title: "依存関係", + addBlockedBy: "「ブロック元」を追加…", + addBlockedByTitle: "このタスクが依存するタスクを追加", + addBlocking: "「ブロックしている」を追加…", + addBlockingTitle: "このタスクがブロックするタスクを追加", + removeBlockedBy: "ブロック元を削除…", + removeBlocking: "ブロックしているを削除…", + inputPlaceholder: "[[タスクノート]]", + notices: { + noEntries: "少なくとも1つのタスクを入力してください", + blockedByAdded: "{count}件の依存関係が追加されました", + blockedByRemoved: "依存関係が削除されました", + blockingAdded: "{count}件の依存タスクが追加されました", + blockingRemoved: "依存タスクが削除されました", + unresolved: "解決できませんでした:{entries}", + noEligibleTasks: "一致するタスクが利用できません", + updateFailed: "依存関係の更新に失敗しました", + }, + }, + organization: { + title: "組織", + projects: "プロジェクト", + addToProject: "プロジェクトに追加…", + subtasks: "サブタスク", + addSubtasks: "サブタスクを追加…", + notices: { + alreadyInProject: "タスクは既にこのプロジェクトに含まれています", + alreadySubtask: "タスクは既にこのタスクのサブタスクです", + addedToProject: "プロジェクトに追加されました:{project}", + addedAsSubtask: "{subtask}を{parent}のサブタスクとして追加しました", + addToProjectFailed: "タスクをプロジェクトに追加できませんでした", + addAsSubtaskFailed: "タスクをサブタスクとして追加できませんでした", + projectSelectFailed: "プロジェクトセレクターを開けませんでした", + subtaskSelectFailed: "サブタスクセレクターを開けませんでした", + noEligibleSubtasks: "サブタスクとして割り当て可能なタスクがありません", + currentTaskNotFound: "現在のタスクファイルが見つかりませんでした", + }, + }, subtasks: { loading: "サブタスクを読み込み中...", noSubtasks: "サブタスクが見つかりません", @@ -2221,6 +2365,7 @@ export const ja: TranslationTree = { dueDate: "期限日", scheduledDate: "予定日", tags: "タグ", + completedDate: "完了日", }, notices: { propertiesMenuFailed: "プロパティメニューの表示に失敗しました", diff --git a/src/i18n/resources/ru.ts b/src/i18n/resources/ru.ts index c54a4b2e..1007ba10 100644 --- a/src/i18n/resources/ru.ts +++ b/src/i18n/resources/ru.ts @@ -112,14 +112,13 @@ export const ru: TranslationTree = { icsServiceNotAvailable: "Сервис подписки ICS недоступен", calendarRefreshedAll: "Все подписки на календари успешно обновлены", refreshFailed: "Не удалось обновить некоторые подписки на календари", - timeblockSpecificTime: - "Временные блоки должны иметь конкретное время. Выберите временной диапазон в недельном или дневном виде.", - timeblockMoved: 'Временной блок "{title}" перемещен на {date}', - timeblockUpdated: 'Время временного блока "{title}" обновлено', + timeblockSpecificTime: "Временные блоки должны иметь конкретное время. Выберите временной диапазон в недельном или дневном виде.", + timeblockMoved: "Временной блок \"{title}\" перемещен на {date}", + timeblockUpdated: "Время временного блока \"{title}\" обновлено", timeblockMoveFailed: "Не удалось переместить временной блок: {message}", - timeblockResized: 'Длительность временного блока "{title}" обновлена', + timeblockResized: "Длительность временного блока \"{title}\" обновлена", timeblockResizeFailed: "Не удалось изменить размер временного блока: {message}", - taskScheduled: 'Задача "{title}" запланирована на {date}', + taskScheduled: "Задача \"{title}\" запланирована на {date}", scheduleTaskFailed: "Не удалось запланировать задачу", endTimeAfterStart: "Время окончания должно быть после времени начала", timeEntryNotFound: "Временная запись не найдена", @@ -140,8 +139,7 @@ export const ru: TranslationTree = { openTask: "Открыть задачу", deleteTimeEntry: "Удалить временную запись", deleteTimeEntryTitle: "Удалить временную запись", - deleteTimeEntryConfirm: - "Вы уверены, что хотите удалить эту временную запись{duration}? Это действие нельзя отменить.", + deleteTimeEntryConfirm: "Вы уверены, что хотите удалить эту временную запись{duration}? Это действие нельзя отменить.", deleteButton: "Удалить", cancelButton: "Отмена", }, @@ -156,6 +154,7 @@ export const ru: TranslationTree = { year: "Г", list: "С", customDays: "{count}Д", + listDays: "{count}д Список", }, settings: { groups: { @@ -164,6 +163,8 @@ export const ru: TranslationTree = { layout: "Макет", propertyBasedEvents: "События на основе свойств", calendarSubscriptions: "Подписки календаря", + googleCalendars: "Google Календари", + microsoftCalendars: "Microsoft Календари", }, dateNavigation: { navigateToDate: "Перейти к дате", @@ -207,6 +208,7 @@ export const ru: TranslationTree = { initialScrollTime: "Начальное время прокрутки", initialScrollTimePlaceholder: "ЧЧ:мм:сс (например, 08:00:00)", minimumEventHeight: "Минимальная высота события (px)", + listDayCount: "Количество дней списка", }, propertyBasedEvents: { startDateProperty: "Свойство даты начала", @@ -228,7 +230,7 @@ export const ru: TranslationTree = { noTasks: "Нет задач", notices: { loadFailed: "Не удалось загрузить доску Канбан", - movedTask: 'Задача перемещена в "{0}"', + movedTask: "Задача перемещена в \"{0}\"", }, errors: { loadingBoard: "Ошибка загрузки доски.", @@ -353,8 +355,7 @@ export const ru: TranslationTree = { features: { inlineTasks: { header: "Встроенные задачи", - description: - "Настройте функции встроенных задач для беспрепятственного управления задачами в любой заметке.", + description: "Настройте функции встроенных задач для беспрепятственного управления задачами в любой заметке.", }, overlays: { taskLinkToggle: { @@ -365,28 +366,23 @@ export const ru: TranslationTree = { instantConvert: { toggle: { name: "Показывать кнопку преобразования рядом с флажками", - description: - "Отображать встроенную кнопку рядом с флажками Markdown, которая преобразует их в TaskNotes", + description: "Отображать встроенную кнопку рядом с флажками Markdown, которая преобразует их в TaskNotes", }, folder: { name: "Папка для преобразованных задач", - description: - "Папка, в которой будут создаваться задачи, преобразованные из флажков. Используйте {{currentNotePath}} для относительного пути к текущей заметке, {{currentNoteTitle}} для заголовка текущей заметки", + description: "Папка, в которой будут создаваться задачи, преобразованные из флажков. Используйте {{currentNotePath}} для относительного пути к текущей заметке, {{currentNoteTitle}} для заголовка текущей заметки", }, }, nlp: { header: "Обработка естественного языка", - description: - "Включить интеллектуальный анализ деталей задач из ввода на естественном языке.", + description: "Включить интеллектуальный анализ деталей задач из ввода на естественном языке.", enable: { name: "Включить ввод задач на естественном языке", - description: - "Анализировать сроки выполнения, приоритеты и контексты из естественного языка при создании задач", + description: "Анализировать сроки выполнения, приоритеты и контексты из естественного языка при создании задач", }, defaultToScheduled: { name: "По умолчанию запланированное", - description: - "Когда NLP обнаруживает дату без контекста, трактовать ее как запланированную, а не срок выполнения", + description: "Когда NLP обнаруживает дату без контекста, трактовать ее как запланированную, а не срок выполнения", }, language: { name: "Язык NLP", @@ -394,14 +390,12 @@ export const ru: TranslationTree = { }, statusTrigger: { name: "Триггер предложения статуса", - description: - "Текст для запуска предложений статуса (оставьте пустым для отключения)", + description: "Текст для запуска предложений статуса (оставьте пустым для отключения)", }, }, pomodoro: { header: "Таймер помодоро", - description: - "Встроенный таймер помодоро для управления временем и отслеживания продуктивности.", + description: "Встроенный таймер помодоро для управления временем и отслеживания продуктивности.", workDuration: { name: "Длительность работы", description: "Длительность рабочих интервалов в минутах", @@ -448,6 +442,7 @@ export const ru: TranslationTree = { dataStorage: { name: "Хранилище данных помодоро", dailyNotes: "Ежедневные заметки", + description: "Настройка места хранения данных сеансов Pomodoro и управления ими.", }, notifications: { header: "Уведомления", @@ -457,6 +452,7 @@ export const ru: TranslationTree = { typeDesc: "Тип отображаемых уведомлений", systemLabel: "Системные уведомления", inAppLabel: "Уведомления в приложении", + description: "Настройка уведомлений о напоминаниях задач и оповещений.", }, overdue: { hideCompletedName: "Скрыть завершенные задачи из просроченных", @@ -464,8 +460,7 @@ export const ru: TranslationTree = { }, indexing: { disableName: "Отключить индексацию заметок", - disableDesc: - "Отключить автоматическую индексацию содержимого заметок для лучшей производительности", + disableDesc: "Отключить автоматическую индексацию содержимого заметок для лучшей производительности", }, suggestions: { debounceName: "Задержка предложений", @@ -473,36 +468,34 @@ export const ru: TranslationTree = { }, timeTracking: { autoStopName: "Автоостановка отслеживания времени", - autoStopDesc: - "Автоматически останавливать отслеживание времени при отметке задачи как выполненной", + autoStopDesc: "Автоматически останавливать отслеживание времени при отметке задачи как выполненной", stopNotificationName: "Уведомление об остановке отслеживания времени", - stopNotificationDesc: - "Показывать уведомление при автоматической остановке отслеживания времени", + stopNotificationDesc: "Показывать уведомление при автоматической остановке отслеживания времени", }, recurring: { maintainOffsetName: "Сохранять смещение срока выполнения в повторяющихся задачах", - maintainOffsetDesc: - "Сохранять смещение между сроком выполнения и запланированной датой при завершении повторяющихся задач", + maintainOffsetDesc: "Сохранять смещение между сроком выполнения и запланированной датой при завершении повторяющихся задач", }, timeblocking: { header: "Блокировка времени", - description: - "Настройте функциональность временных блоков для легкого планирования в ежедневных заметках. В расширенном представлении календаря удерживайте Shift + клик и перетащите для создания временных блоков.", + description: "Настройте функциональность временных блоков для легкого планирования в ежедневных заметках. В расширенном представлении календаря удерживайте Shift + клик и перетащите для создания временных блоков.", enableName: "Включить блокировку времени", - enableDesc: - "Включить функциональность временных блоков для легкого планирования в ежедневных заметках", + enableDesc: "Включить функциональность временных блоков для легкого планирования в ежедневных заметках", showBlocksName: "Показать временные блоки", showBlocksDesc: "Отображать временные блоки из ежедневных заметок по умолчанию", usage: "Использование: В расширенном представлении календаря удерживайте Shift + перетащите для создания временных блоков. Перетащите для перемещения существующих блоков. Измените размер краев для настройки длительности.", }, performance: { header: "Производительность и поведение", + description: "Настройка производительности плагина и параметров поведения.", }, timeTrackingSection: { header: "Отслеживание времени", + description: "Настройка автоматического отслеживания времени.", }, recurringSection: { header: "Повторяющиеся задачи", + description: "Настройка поведения для управления повторяющимися задачами.", }, }, defaults: { @@ -514,15 +507,11 @@ export const ru: TranslationTree = { instantTaskConversion: "Мгновенное преобразование задач", }, description: { - basicDefaults: - "Установите значения по умолчанию для новых задач, чтобы ускорить создание задач.", - dateDefaults: - "Установите сроки выполнения и запланированные даты по умолчанию для новых задач.", - defaultReminders: - "Настройте напоминания по умолчанию, которые будут добавляться к новым задачам.", + basicDefaults: "Установите значения по умолчанию для новых задач, чтобы ускорить создание задач.", + dateDefaults: "Установите сроки выполнения и запланированные даты по умолчанию для новых задач.", + defaultReminders: "Настройте напоминания по умолчанию, которые будут добавляться к новым задачам.", bodyTemplate: "Настройте файл шаблона для использования в содержимом новых задач.", - instantTaskConversion: - "Настройте поведение при мгновенном преобразовании текста в задачи.", + instantTaskConversion: "Настройте поведение при мгновенном преобразовании текста в задачи.", }, basicDefaults: { defaultStatus: { @@ -535,8 +524,7 @@ export const ru: TranslationTree = { }, defaultContexts: { name: "Контексты по умолчанию", - description: - "Список контекстов по умолчанию через запятую (например, @дом, @работа)", + description: "Список контекстов по умолчанию через запятую (например, @дом, @работа)", placeholder: "@дом, @работа", }, defaultTags: { @@ -553,8 +541,7 @@ export const ru: TranslationTree = { }, useParentNoteAsProject: { name: "Использовать родительскую заметку как проект при мгновенном преобразовании", - description: - "Автоматически связывать родительскую заметку как проект при использовании мгновенного преобразования задач", + description: "Автоматически связывать родительскую заметку как проект при использовании мгновенного преобразования задач", }, defaultTimeEstimate: { name: "Оценка времени по умолчанию", @@ -579,12 +566,10 @@ export const ru: TranslationTree = { reminders: { addReminder: { name: "Добавить напоминание по умолчанию", - description: - "Создать новое напоминание по умолчанию, которое будет добавляться ко всем новым задачам", + description: "Создать новое напоминание по умолчанию, которое будет добавляться ко всем новым задачам", buttonText: "Добавить напоминание", }, - emptyState: - "Напоминания по умолчанию не настроены. Добавьте напоминание для автоматического уведомления о новых задачах.", + emptyState: "Напоминания по умолчанию не настроены. Добавьте напоминание для автоматического уведомления о новых задачах.", emptyStateButton: "Добавить напоминание", reminderDescription: "Описание напоминания", unnamedReminder: "Безымянное напоминание", @@ -624,16 +609,14 @@ export const ru: TranslationTree = { }, bodyTemplateFile: { name: "Файл шаблона тела", - description: - "Путь к файлу шаблона для содержимого тела задачи. Поддерживает переменные шаблона, такие как {{title}}, {{date}}, {{time}}, {{priority}}, {{status}} и т.д.", + description: "Путь к файлу шаблона для содержимого тела задачи. Поддерживает переменные шаблона, такие как {{title}}, {{date}}, {{time}}, {{priority}}, {{status}} и т.д.", placeholder: "Шаблоны/Шаблон задачи.md", ariaLabel: "Путь к файлу шаблона тела", }, variablesHeader: "Переменные шаблона:", variables: { title: "{{title}} - Название задачи", - details: - "{{details}} - Детали, предоставленные пользователем из модального окна", + details: "{{details}} - Детали, предоставленные пользователем из модального окна", date: "{{date}} - Текущая дата (ГГГГ-ММ-ДД)", time: "{{time}} - Текущее время (ЧЧ:ММ)", priority: "{{priority}} - Приоритет задачи", @@ -646,8 +629,7 @@ export const ru: TranslationTree = { instantConversion: { useDefaultsOnInstantConvert: { name: "Использовать значения по умолчанию при мгновенном преобразовании", - description: - "Применять настройки задач по умолчанию при мгновенном преобразовании текста в задачи", + description: "Применять настройки задач по умолчанию при мгновенном преобразовании текста в задачи", }, }, options: { @@ -684,8 +666,7 @@ export const ru: TranslationTree = { description: "Выберите, как TaskNotes идентифицирует заметки как задачи.", identifyBy: { name: "Идентифицировать задачи по", - description: - "Выберите, идентифицировать ли задачи по тегу или по свойству frontmatter", + description: "Выберите, идентифицировать ли задачи по тегу или по свойству frontmatter", options: { tag: "Тег", property: "Свойство", @@ -697,12 +678,15 @@ export const ru: TranslationTree = { }, taskProperty: { name: "Имя свойства задачи", - description: 'Имя свойства frontmatter (например, "категория")', + description: "Имя свойства frontmatter (например, \"категория\")", }, taskPropertyValue: { name: "Значение свойства задачи", - description: - 'Значение, которое идентифицирует заметку как задачу (например, "задача")', + description: "Значение, которое идентифицирует заметку как задачу (например, \"задача\")", + }, + hideIdentifyingTags: { + name: "Скрыть идентификационные теги в карточках задач", + description: "При включении теги, соответствующие тегу идентификации задачи (включая иерархические совпадения, такие как 'task/project'), будут скрыты в карточках задач", }, }, folderManagement: { @@ -742,31 +726,34 @@ export const ru: TranslationTree = { buttonText: "Просмотреть примечания к выпуску", }, }, + frontmatter: { + header: "Frontmatter", + description: "Настройка форматирования ссылок в свойствах frontmatter.", + useMarkdownLinks: { + name: "Использовать ссылки markdown во frontmatter", + description: "Генерировать ссылки markdown ([текст](путь)) вместо викиссылок ([[ссылка]]) в свойствах frontmatter.\\n\\n⚠️ Требуется плагин 'obsidian-frontmatter-markdown-links' для корректной работы.", + }, + }, }, taskProperties: { taskStatuses: { header: "Статусы задач", - description: - "Настройте варианты статусов, доступные для ваших задач. Эти статусы контролируют жизненный цикл задач и определяют, когда задачи считаются завершенными.", + description: "Настройте варианты статусов, доступные для ваших задач. Эти статусы контролируют жизненный цикл задач и определяют, когда задачи считаются завершенными.", howTheyWork: { title: "Как работают статусы:", - value: 'Значение: Внутренний идентификатор, хранящийся в файлах задач (например, "в-процессе")', - label: 'Метка: Отображаемое имя в интерфейсе (например, "В процессе")', + value: "Значение: Внутренний идентификатор, хранящийся в файлах задач (например, \"в-процессе\")", + label: "Метка: Отображаемое имя в интерфейсе (например, \"В процессе\")", color: "Цвет: Цвет визуального индикатора для точки статуса и значков", - completed: - "Завершено: При отметке задачи с этим статусом считаются завершенными и могут фильтроваться по-разному", - autoArchive: - "Автоархивирование: При включении задачи будут автоматически архивироваться после указанной задержки (1-1440 минут)", - orderNote: - "Порядок ниже определяет последовательность при переключении между статусами нажатием на значки статуса задач.", + completed: "Завершено: При отметке задачи с этим статусом считаются завершенными и могут фильтроваться по-разному", + autoArchive: "Автоархивирование: При включении задачи будут автоматически архивироваться после указанной задержки (1-1440 минут)", + orderNote: "Порядок ниже определяет последовательность при переключении между статусами нажатием на значки статуса задач.", }, addNew: { name: "Добавить новый статус", description: "Создать новый вариант статуса для ваших задач", buttonText: "Добавить статус", }, - validationNote: - 'Примечание: У вас должно быть минимум 2 статуса, и минимум один статус должен быть отмечен как "Завершенный".', + validationNote: "Примечание: У вас должно быть минимум 2 статуса, и минимум один статус должен быть отмечен как \"Завершенный\".", emptyState: "Пользовательские статусы не настроены. Добавьте статус для начала.", emptyStateButton: "Добавить статус", fields: { @@ -784,30 +771,26 @@ export const ru: TranslationTree = { badges: { completed: "Завершено", }, - deleteConfirm: 'Вы уверены, что хотите удалить статус "{label}"?', + deleteConfirm: "Вы уверены, что хотите удалить статус \"{label}\"?", }, taskPriorities: { header: "Приоритеты задач", - description: - "Настройте уровни приоритета, доступные для ваших задач. Веса приоритета определяют порядок сортировки и визуальную иерархию в представлениях задач.", + description: "Настройте уровни приоритета, доступные для ваших задач. Веса приоритета определяют порядок сортировки и визуальную иерархию в представлениях задач.", howTheyWork: { title: "Как работают приоритеты:", - value: 'Значение: Внутренний идентификатор, хранящийся в файлах задач (например, "высокий")', - label: 'Отображаемая метка: Отображаемое имя в интерфейсе (например, "Высокий приоритет")', + value: "Значение: Внутренний идентификатор, хранящийся в файлах задач (например, \"высокий\")", + label: "Отображаемая метка: Отображаемое имя в интерфейсе (например, \"Высокий приоритет\")", color: "Цвет: Цвет визуального индикатора для точки приоритета и значков", weight: "Вес: Числовое значение для сортировки (более высокие веса появляются первыми в списках)", - weightNote: - "Задачи автоматически сортируются по весу приоритета в убывающем порядке (наивысший вес первым). Веса могут быть любыми положительными числами.", + weightNote: "Задачи автоматически сортируются по весу приоритета в убывающем порядке (наивысший вес первым). Веса могут быть любыми положительными числами.", }, addNew: { name: "Добавить новый приоритет", description: "Создать новый уровень приоритета для ваших задач", buttonText: "Добавить приоритет", }, - validationNote: - "Примечание: У вас должен быть минимум 1 приоритет. Более высокие веса имеют приоритет в сортировке и визуальной иерархии.", - emptyState: - "Пользовательские приоритеты не настроены. Добавьте приоритет для начала.", + validationNote: "Примечание: У вас должен быть минимум 1 приоритет. Более высокие веса имеют приоритет в сортировке и визуальной иерархии.", + emptyState: "Пользовательские приоритеты не настроены. Добавьте приоритет для начала.", emptyStateButton: "Добавить приоритет", fields: { value: "Значение:", @@ -825,10 +808,8 @@ export const ru: TranslationTree = { }, fieldMapping: { header: "Сопоставление полей", - warning: - "⚠️ Предупреждение: TaskNotes будет ЧИТАТЬ И ЗАПИСЫВАТЬ, используя эти имена свойств. Изменение их после создания задач может вызвать несоответствия.", - description: - "Настройте, какие свойства frontmatter TaskNotes должны использовать для каждого поля.", + warning: "⚠️ Предупреждение: TaskNotes будет ЧИТАТЬ И ЗАПИСЫВАТЬ, используя эти имена свойств. Изменение их после создания задач может вызвать несоответствия.", + description: "Настройте, какие свойства frontmatter TaskNotes должны использовать для каждого поля.", resetButton: { name: "Сбросить сопоставления полей", description: "Сбросить все сопоставления полей к значениям по умолчанию", @@ -837,8 +818,7 @@ export const ru: TranslationTree = { notices: { resetSuccess: "Сопоставления полей сброшены к умолчаниям", resetFailure: "Не удалось сбросить сопоставления полей", - updateFailure: - "Не удалось обновить сопоставление поля для {label}. Пожалуйста, попробуйте снова.", + updateFailure: "Не удалось обновить сопоставление поля для {label}. Пожалуйста, попробуйте снова.", }, table: { fieldHeader: "Поле TaskNotes", @@ -864,20 +844,18 @@ export const ru: TranslationTree = { icsEventId: "ID события ICS", icsEventTag: "Тег события ICS", reminders: "Напоминания", + blockedBy: "Заблокировано", }, }, customUserFields: { header: "Пользовательские поля", - description: - "Определите пользовательские свойства frontmatter для появления как типо-осведомленные варианты фильтра в представлениях. Каждая строка: Отображаемое имя, Имя свойства, Тип.", + description: "Определите пользовательские свойства frontmatter для появления как типо-осведомленные варианты фильтра в представлениях. Каждая строка: Отображаемое имя, Имя свойства, Тип.", addNew: { name: "Добавить новое пользовательское поле", - description: - "Создать новое пользовательское поле, которое будет появляться в фильтрах и представлениях", + description: "Создать новое пользовательское поле, которое будет появляться в фильтрах и представлениях", buttonText: "Добавить пользовательское поле", }, - emptyState: - "Пользовательские поля не настроены. Добавьте поле для создания пользовательских свойств для ваших задач.", + emptyState: "Пользовательские поля не настроены. Добавьте поле для создания пользовательских свойств для ваших задач.", emptyStateButton: "Добавить пользовательское поле", fields: { displayName: "Отображаемое имя:", @@ -900,6 +878,10 @@ export const ru: TranslationTree = { noKey: "без-ключа", }, deleteTooltip: "Удалить поле", + autosuggestFilters: { + header: "Фильтры автоподсказок (расширенные)", + description: "Фильтрация файлов, отображаемых в автоподсказках для этого поля", + }, }, }, appearance: { @@ -908,8 +890,7 @@ export const ru: TranslationTree = { description: "Настройте отображение карточек задач во всех представлениях.", defaultVisibleProperties: { name: "Видимые свойства по умолчанию", - description: - "Выберите, какие свойства появляются на карточках задач по умолчанию.", + description: "Выберите, какие свойства появляются на карточках задач по умолчанию.", }, propertyGroups: { coreProperties: "ОСНОВНЫЕ СВОЙСТВА", @@ -939,8 +920,7 @@ export const ru: TranslationTree = { description: "Настройте именование файлов задач при создании.", storeTitleInFilename: { name: "Хранить название в имени файла", - description: - "Использовать название задачи как имя файла. Имя файла будет обновляться при изменении названия задачи (Рекомендуется).", + description: "Использовать название задачи как имя файла. Имя файла будет обновляться при изменении названия задачи (Рекомендуется).", }, filenameFormat: { name: "Формат имени файла", @@ -954,11 +934,9 @@ export const ru: TranslationTree = { }, customTemplate: { name: "Пользовательский шаблон имени файла", - description: - "Шаблон для пользовательских имен файлов. Доступные переменные: {title}, {titleLower}, {titleUpper}, {titleSnake}, {titleKebab}, {titleCamel}, {titlePascal}, {date}, {shortDate}, {time}, {time12}, {time24}, {timestamp}, {dateTime}, {year}, {month}, {monthName}, {monthNameShort}, {day}, {dayName}, {dayNameShort}, {hour}, {hour12}, {minute}, {second}, {milliseconds}, {ms}, {ampm}, {week}, {quarter}, {unix}, {unixMs}, {timezone}, {timezoneShort}, {utcOffset}, {utcOffsetShort}, {utcZ}, {zettel}, {nano}, {priority}, {priorityShort}, {status}, {statusShort}, {dueDate}, {scheduledDate}", + description: "Шаблон для пользовательских имен файлов. Доступные переменные: {title}, {titleLower}, {titleUpper}, {titleSnake}, {titleKebab}, {titleCamel}, {titlePascal}, {date}, {shortDate}, {time}, {time12}, {time24}, {timestamp}, {dateTime}, {year}, {month}, {monthName}, {monthNameShort}, {day}, {dayName}, {dayNameShort}, {hour}, {hour12}, {minute}, {second}, {milliseconds}, {ms}, {ampm}, {week}, {quarter}, {unix}, {unixMs}, {timezone}, {timezoneShort}, {utcOffset}, {utcOffsetShort}, {utcZ}, {zettel}, {nano}, {priority}, {priorityShort}, {status}, {statusShort}, {dueDate}, {scheduledDate}", placeholder: "{date}-{title}-{dueDate}", - helpText: - "Примечание: {dueDate} и {scheduledDate} в формате ГГГГ-ММ-ДД и будут пустыми, если не установлены.", + helpText: "Примечание: {dueDate} и {scheduledDate} в формате ГГГГ-ММ-ДД и будут пустыми, если не установлены.", }, }, displayFormatting: { @@ -978,8 +956,7 @@ export const ru: TranslationTree = { description: "Настройте внешний вид и поведение представления календаря.", defaultView: { name: "Представление по умолчанию", - description: - "Представление календаря, показываемое при открытии вкладки календаря", + description: "Представление календаря, показываемое при открытии вкладки календаря", options: { monthGrid: "Сетка месяца", weekTimeline: "Временная линия недели", @@ -990,14 +967,12 @@ export const ru: TranslationTree = { }, customDayCount: { name: "Количество дней пользовательского представления", - description: - "Количество дней для отображения в пользовательском многодневном представлении", + description: "Количество дней для отображения в пользовательском многодневном представлении", placeholder: "3", }, firstDayOfWeek: { name: "Первый день недели", - description: - "Какой день должен быть первой колонкой в недельных представлениях", + description: "Какой день должен быть первой колонкой в недельных представлениях", }, showWeekends: { name: "Показать выходные", @@ -1013,25 +988,21 @@ export const ru: TranslationTree = { }, showCurrentTimeIndicator: { name: "Показать индикатор текущего времени", - description: - "Отображать линию, показывающую текущее время в представлениях временной линии", + description: "Отображать линию, показывающую текущее время в представлениях временной линии", }, selectionMirror: { name: "Зеркало выбора", - description: - "Показывать визуальный предварительный просмотр при перетаскивании для выбора временных диапазонов", + description: "Показывать визуальный предварительный просмотр при перетаскивании для выбора временных диапазонов", }, calendarLocale: { name: "Локаль календаря", - description: - 'Локаль календаря для форматирования дат и календарной системы (например, "en", "fa" для фарси/персидского, "de" для немецкого). Оставьте пустым для автоопределения из браузера.', + description: "Локаль календаря для форматирования дат и календарной системы (например, \"en\", \"fa\" для фарси/персидского, \"de\" для немецкого). Оставьте пустым для автоопределения из браузера.", placeholder: "Автоопределение", }, }, defaultEventVisibility: { header: "Видимость событий по умолчанию", - description: - "Настройте, какие типы событий видимы по умолчанию при открытии расширенного календаря. Пользователи все еще могут переключать их в представлении календаря.", + description: "Настройте, какие типы событий видимы по умолчанию при открытии расширенного календаря. Пользователи все еще могут переключать их в представлении календаря.", showScheduledTasks: { name: "Показать запланированные задачи", description: "Отображать задачи с запланированными датами по умолчанию", @@ -1042,8 +1013,7 @@ export const ru: TranslationTree = { }, showDueWhenScheduled: { name: "Показать сроки выполнения для запланированных", - description: - "Отображать сроки выполнения даже для задач, которые уже имеют запланированные даты", + description: "Отображать сроки выполнения даже для задач, которые уже имеют запланированные даты", }, showTimeEntries: { name: "Показать записи времени", @@ -1060,12 +1030,10 @@ export const ru: TranslationTree = { }, timeSettings: { header: "Настройки времени", - description: - "Настройте связанные со временем параметры отображения для представлений временной линии.", + description: "Настройте связанные со временем параметры отображения для представлений временной линии.", timeSlotDuration: { name: "Длительность временного слота", - description: - "Длительность каждого временного слота в представлениях временной линии", + description: "Длительность каждого временного слота в представлениях временной линии", options: { fifteenMinutes: "15 минут", thirtyMinutes: "30 минут", @@ -1074,35 +1042,35 @@ export const ru: TranslationTree = { }, startTime: { name: "Время начала", - description: - "Самое раннее время, показываемое в представлениях временной линии (формат ЧЧ:ММ)", + description: "Самое раннее время, показываемое в представлениях временной линии (формат ЧЧ:ММ)", placeholder: "06:00", }, endTime: { name: "Время окончания", - description: - "Самое позднее время, показываемое в представлениях временной линии (формат ЧЧ:ММ)", + description: "Самое позднее время, показываемое в представлениях временной линии (формат ЧЧ:ММ)", placeholder: "22:00", }, initialScrollTime: { name: "Начальное время прокрутки", - description: - "Время для прокрутки при открытии представлений временной линии (формат ЧЧ:ММ)", + description: "Время для прокрутки при открытии представлений временной линии (формат ЧЧ:ММ)", placeholder: "09:00", }, + eventMinHeight: { + name: "Минимальная высота события", + description: "Минимальная высота событий в представлениях временной шкалы (в пикселях)", + placeholder: "15", + }, }, uiElements: { header: "Элементы интерфейса", description: "Настройте отображение различных элементов интерфейса.", showTrackedTasksInStatusBar: { name: "Показать отслеживаемые задачи в строке состояния", - description: - "Отображать текущие отслеживаемые задачи в строке состояния Obsidian", + description: "Отображать текущие отслеживаемые задачи в строке состояния Obsidian", }, showProjectSubtasksWidget: { name: "Показать виджет подзадач проекта", - description: - "Отображать виджет, показывающий подзадачи для текущей заметки проекта", + description: "Отображать виджет, показывающий подзадачи для текущей заметки проекта", }, projectSubtasksPosition: { name: "Позиция подзадач проекта", @@ -1114,8 +1082,7 @@ export const ru: TranslationTree = { }, showExpandableSubtasks: { name: "Показать раскрываемые подзадачи", - description: - "Разрешить раскрытие/свертывание разделов подзадач в карточках задач", + description: "Разрешить раскрытие/свертывание разделов подзадач в карточках задач", }, subtaskChevronPosition: { name: "Позиция шеврона подзадач", @@ -1133,75 +1100,67 @@ export const ru: TranslationTree = { right: "Правая сторона", }, }, + showTaskCardInNote: { + name: "Показывать карточку задачи в заметке", + description: "Отображать виджет карточки задачи в верхней части заметок задач с деталями и действиями задачи", + }, }, projectAutosuggest: { header: "Автопредложения проектов", description: "Настройте отображение предложений проектов при создании задач.", requiredTags: { name: "Обязательные теги", - description: - "Показывать только заметки с любым из этих тегов (через запятую). Оставьте пустым для показа всех заметок.", + description: "Показывать только заметки с любым из этих тегов (через запятую). Оставьте пустым для показа всех заметок.", placeholder: "проект, активный, важный", }, includeFolders: { name: "Включить папки", - description: - "Показывать только заметки в этих папках (пути через запятую). Оставьте пустым для показа всех папок.", + description: "Показывать только заметки в этих папках (пути через запятую). Оставьте пустым для показа всех папок.", placeholder: "Проекты/, Работа/Активные, Личное", }, requiredPropertyKey: { name: "Обязательный ключ свойства", - description: - "Показывать только заметки, где это свойство frontmatter соответствует значению ниже. Оставьте пустым для игнорирования.", + description: "Показывать только заметки, где это свойство frontmatter соответствует значению ниже. Оставьте пустым для игнорирования.", placeholder: "тип", }, requiredPropertyValue: { name: "Обязательное значение свойства", - description: - "Только заметки, где свойство равно этому значению, предлагаются. Оставьте пустым для требования существования свойства.", + description: "Только заметки, где свойство равно этому значению, предлагаются. Оставьте пустым для требования существования свойства.", placeholder: "проект", }, customizeDisplay: { name: "Настроить отображение предложений", - description: - "Показать дополнительные опции для настройки отображения предложений проектов и информации, которую они отображают.", + description: "Показать дополнительные опции для настройки отображения предложений проектов и информации, которую они отображают.", }, enableFuzzyMatching: { name: "Включить нечеткое сопоставление", - description: - "Разрешить опечатки и частичные совпадения в поиске проектов. Может быть медленнее в больших хранилищах.", + description: "Разрешить опечатки и частичные совпадения в поиске проектов. Может быть медленнее в больших хранилищах.", }, - displayRowsHelp: - "Настройте до 3 строк информации для отображения для каждого предложения проекта.", + displayRowsHelp: "Настройте до 3 строк информации для отображения для каждого предложения проекта.", displayRows: { row1: { name: "Строка 1", - description: - "Формат: {свойство|флаги}. Свойства: title, aliases, file.path, file.parent. Флаги: n(Метка) показывает метку, s делает поисковым. Пример: {title|n(Название)|s}", + description: "Формат: {свойство|флаги}. Свойства: title, aliases, file.path, file.parent. Флаги: n(Метка) показывает метку, s делает поисковым. Пример: {title|n(Название)|s}", placeholder: "{title|n(Название)}", }, row2: { name: "Строка 2 (опционально)", - description: - "Общие шаблоны: {aliases|n(Псевдонимы)}, {file.parent|n(Папка)}, literal:Пользовательский текст", + description: "Общие шаблоны: {aliases|n(Псевдонимы)}, {file.parent|n(Папка)}, literal:Пользовательский текст", placeholder: "{aliases|n(Псевдонимы)}", }, row3: { name: "Строка 3 (опционально)", - description: - "Дополнительная информация, такая как {file.path|n(Путь)} или пользовательские поля frontmatter", + description: "Дополнительная информация, такая как {file.path|n(Путь)} или пользовательские поля frontmatter", placeholder: "{file.path|n(Путь)}", }, }, quickReference: { header: "Быстрая справка", - properties: - "Доступные свойства: title, aliases, file.path, file.parent или любое поле frontmatter", - labels: 'Добавить метки: {title|n(Название)} → "Название: Мой проект"', + properties: "Доступные свойства: title, aliases, file.path, file.parent или любое поле frontmatter", + labels: "Добавить метки: {title|n(Название)} → \"Название: Мой проект\"", searchable: "Сделать поисковым: {description|s} включает описание в + поиск", staticText: "Статический текст: literal:Моя пользовательская метка", - alwaysSearchable: - "Имя файла, название и псевдонимы всегда поисковы по умолчанию.", + alwaysSearchable: "Имя файла, название и псевдонимы всегда поисковы по умолчанию.", }, }, dataStorage: { @@ -1226,32 +1185,26 @@ export const ru: TranslationTree = { description: "Настройте поведение для управления повторяющимися задачами.", }, timeblocking: { - description: - "Настройте функциональность временных блоков для легкого планирования в ежедневных заметках.", + description: "Настройте функциональность временных блоков для легкого планирования в ежедневных заметках.", usage: "Использование: В расширенном представлении календаря удерживайте Shift + перетащите для создания временных блоков. Перетащите для перемещения существующих временных блоков. Измените размер краев для настройки длительности.", }, }, integrations: { basesIntegration: { header: "Интеграция с Bases", - description: - "Настройте интеграцию с плагином Obsidian Bases. Это экспериментальная функция, которая в настоящее время опирается на недокументированные API Obsidian. Поведение может измениться или сломаться.", + description: "Настройте интеграцию с плагином Obsidian Bases. Это экспериментальная функция, которая в настоящее время опирается на недокументированные API Obsidian. Поведение может измениться или сломаться.", enable: { name: "Включить интеграцию с Bases", - description: - "Включить использование представлений TaskNotes в плагине Obsidian Bases. Плагин Bases должен быть включен для работы.", + description: "Включить использование представлений TaskNotes в плагине Obsidian Bases. Плагин Bases должен быть включен для работы.", }, notices: { - enabled: - "Интеграция с Bases включена. Пожалуйста, перезапустите Obsidian для завершения настройки.", - disabled: - "Интеграция с Bases отключена. Пожалуйста, перезапустите Obsidian для завершения удаления.", + enabled: "Интеграция с Bases включена. Пожалуйста, перезапустите Obsidian для завершения настройки.", + disabled: "Интеграция с Bases отключена. Пожалуйста, перезапустите Obsidian для завершения удаления.", }, }, calendarSubscriptions: { header: "Подписки на календари", - description: - "Подпишитесь на внешние календари через URL ICS/iCal для просмотра событий вместе с задачами.", + description: "Подпишитесь на внешние календари через URL ICS/iCal для просмотра событий вместе с задачами.", defaultNoteTemplate: { name: "Шаблон заметки по умолчанию", description: "Путь к файлу шаблона для заметок, созданных из событий ICS", @@ -1264,8 +1217,7 @@ export const ru: TranslationTree = { }, filenameFormat: { name: "Формат имени файла заметки ICS", - description: - "Как генерируются имена файлов для заметок, созданных из событий ICS", + description: "Как генерируются имена файлов для заметок, созданных из событий ICS", options: { title: "Название события", zettel: "Формат Zettelkasten", @@ -1283,8 +1235,7 @@ export const ru: TranslationTree = { header: "Список подписок на календари", addSubscription: { name: "Добавить подписку на календарь", - description: - "Добавить новую подписку на календарь из URL ICS/iCal или локального файла", + description: "Добавить новую подписку на календарь из URL ICS/iCal или локального файла", buttonText: "Добавить подписку", }, refreshAll: { @@ -1293,20 +1244,18 @@ export const ru: TranslationTree = { buttonText: "Обновить все", }, newCalendarName: "Новый календарь", - emptyState: - "Подписки на календари не настроены. Добавьте подписку для синхронизации внешних календарей.", + emptyState: "Подписки на календари не настроены. Добавьте подписку для синхронизации внешних календарей.", notices: { - addSuccess: - "Новая подписка на календарь добавлена - пожалуйста, настройте детали", + addSuccess: "Новая подписка на календарь добавлена - пожалуйста, настройте детали", addFailure: "Не удалось добавить подписку", serviceUnavailable: "Сервис подписки ICS недоступен", refreshSuccess: "Все подписки на календари успешно обновлены", refreshFailure: "Не удалось обновить некоторые подписки на календари", updateFailure: "Не удалось обновить подписку", - deleteSuccess: 'Удалена подписка "{name}"', + deleteSuccess: "Удалена подписка \"{name}\"", deleteFailure: "Не удалось удалить подписку", enableFirst: "Сначала включите подписку", - refreshSubscriptionSuccess: 'Обновлено "{name}"', + refreshSubscriptionSuccess: "Обновлено \"{name}\"", refreshSubscriptionFailure: "Не удалось обновить подписку", }, labels: { @@ -1344,8 +1293,7 @@ export const ru: TranslationTree = { }, confirmDelete: { title: "Удалить подписку", - message: - 'Вы уверены, что хотите удалить подписку "{name}"? Это действие нельзя отменить.', + message: "Вы уверены, что хотите удалить подписку \"{name}\"? Это действие нельзя отменить.", confirmText: "Удалить", }, }, @@ -1354,8 +1302,7 @@ export const ru: TranslationTree = { description: "Автоматически экспортировать все ваши задачи в файл ICS.", enable: { name: "Включить автоматический экспорт", - description: - "Автоматически поддерживать файл ICS обновленным со всеми вашими задачами", + description: "Автоматически поддерживать файл ICS обновленным со всеми вашими задачами", }, filePath: { name: "Путь к файлу экспорта", @@ -1378,12 +1325,10 @@ export const ru: TranslationTree = { nextExport: "Следующий экспорт: {time}", noExports: "Экспортов еще нет", notScheduled: "Не запланировано", - notInitialized: - "Сервис автоэкспорта не инициализирован - пожалуйста, перезапустите Obsidian", + notInitialized: "Сервис автоэкспорта не инициализирован - пожалуйста, перезапустите Obsidian", }, notices: { - reloadRequired: - "Пожалуйста, перезагрузите Obsidian для применения изменений автоматического экспорта.", + reloadRequired: "Пожалуйста, перезагрузите Obsidian для применения изменений автоматического экспорта.", exportSuccess: "Задачи успешно экспортированы", exportFailure: "Экспорт не удался - проверьте консоль для деталей", serviceUnavailable: "Сервис автоэкспорта недоступен", @@ -1403,8 +1348,7 @@ export const ru: TranslationTree = { }, authToken: { name: "Токен аутентификации API", - description: - "Токен, необходимый для аутентификации API (оставьте пустым для отсутствия аутентификации)", + description: "Токен, необходимый для аутентификации API (оставьте пустым для отсутствия аутентификации)", placeholder: "ваш-секретный-токен", }, endpoints: { @@ -1416,8 +1360,7 @@ export const ru: TranslationTree = { webhooks: { header: "Веб-хуки", description: { - overview: - "Веб-хуки отправляют уведомления в реальном времени внешним сервисам при возникновении событий TaskNotes.", + overview: "Веб-хуки отправляют уведомления в реальном времени внешним сервисам при возникновении событий TaskNotes.", usage: "Настройте веб-хуки для интеграции с инструментами автоматизации, сервисами синхронизации или пользовательскими приложениями.", }, addWebhook: { @@ -1426,8 +1369,7 @@ export const ru: TranslationTree = { buttonText: "Добавить веб-хук", }, emptyState: { - message: - "Веб-хуки не настроены. Добавьте веб-хук для получения уведомлений в реальном времени.", + message: "Веб-хуки не настроены. Добавьте веб-хук для получения уведомлений в реальном времени.", buttonText: "Добавить веб-хук", }, labels: { @@ -1460,8 +1402,7 @@ export const ru: TranslationTree = { }, confirmDelete: { title: "Удалить веб-хук", - message: - "Вы уверены, что хотите удалить этот веб-хук?\n\nURL: {url}\n\nЭто действие нельзя отменить.", + message: "Вы уверены, что хотите удалить этот веб-хук?\n\nURL: {url}\n\nЭто действие нельзя отменить.", confirmText: "Удалить", }, cardHeader: "Веб-хук", @@ -1479,8 +1420,7 @@ export const ru: TranslationTree = { }, secretModal: { title: "Секрет веб-хука сгенерирован", - description: - "Ваш секрет веб-хука был сгенерирован. Сохраните этот секрет, так как вы больше не сможете его увидеть:", + description: "Ваш секрет веб-хука был сгенерирован. Сохраните этот секрет, так как вы больше не сможете его увидеть:", usage: "Используйте этот секрет для проверки данных веб-хука в вашем принимающем приложении.", gotIt: "Понятно", }, @@ -1545,8 +1485,7 @@ export const ru: TranslationTree = { modals: { secretGenerated: { title: "Секрет веб-хука сгенерирован", - description: - "Ваш секрет веб-хука был сгенерирован. Сохраните этот секрет, так как вы больше не сможете его увидеть:", + description: "Ваш секрет веб-хука был сгенерирован. Сохраните этот секрет, так как вы больше не сможете его увидеть:", usage: "Используйте этот секрет для проверки данных веб-хука в вашем принимающем приложении.", buttonText: "Понятно", }, @@ -1557,14 +1496,12 @@ export const ru: TranslationTree = { headersSection: "Конфигурация заголовков", transformFile: { name: "Файл преобразования", - description: - "Путь к файлу .js или .json в вашем хранилище, который преобразует данные веб-хука", + description: "Путь к файлу .js или .json в вашем хранилище, который преобразует данные веб-хука", placeholder: "discord-transform.js", }, customHeaders: { name: "Включить пользовательские заголовки", - description: - "Включить заголовки TaskNotes (тип события, подпись, ID доставки). Отключите для Discord, Slack и других сервисов со строгими политиками CORS.", + description: "Включить заголовки TaskNotes (тип события, подпись, ID доставки). Отключите для Discord, Slack и других сервисов со строгими политиками CORS.", }, buttons: { cancel: "Отмена", @@ -1586,14 +1523,12 @@ export const ru: TranslationTree = { }, transformFile: { name: "Файл преобразования", - description: - "Путь к файлу .js или .json в вашем хранилище, который преобразует данные веб-хука", + description: "Путь к файлу .js или .json в вашем хранилище, который преобразует данные веб-хука", placeholder: "discord-transform.js", }, customHeaders: { name: "Включить пользовательские заголовки", - description: - "Включить заголовки TaskNotes (тип события, подпись, ID доставки). Отключите для Discord, Slack и других сервисов со строгими политиками CORS.", + description: "Включить заголовки TaskNotes (тип события, подпись, ID доставки). Отключите для Discord, Slack и других сервисов со строгими политиками CORS.", }, transformHelp: { title: "Файлы преобразования позволяют настроить данные веб-хука:", @@ -1657,6 +1592,8 @@ export const ru: TranslationTree = { refreshCache: "Обновить кэш", exportAllTasksIcs: "Экспортировать все задачи как файл ICS", viewReleaseNotes: "Посмотреть примечания к выпуску", + startTimeTrackingWithSelector: "Начать отслеживание времени (выбрать задачу)", + editTimeEntries: "Редактировать временные записи (выбрать задачу)", }, modals: { task: { @@ -1733,6 +1670,20 @@ export const ru: TranslationTree = { untilSuffix: "до {date}", ordinal: "{number}{suffix}", }, + organization: { + projects: "Проекты", + subtasks: "Подзадачи", + addToProject: "Добавить в проект", + addToProjectButton: "Добавить в проект", + addSubtasks: "Добавить подзадачи", + addSubtasksButton: "Добавить подзадачу", + addSubtasksTooltip: "Выберите задачи, чтобы сделать их подзадачами этой задачи", + removeSubtaskTooltip: "Удалить подзадачу", + notices: { + noEligibleSubtasks: "Нет доступных задач для назначения в качестве подзадач", + subtaskSelectFailed: "Не удалось открыть селектор подзадач", + }, + }, }, taskCreation: { title: "Создать задачу", @@ -1741,13 +1692,11 @@ export const ru: TranslationTree = { hideDetailedOptions: "Скрыть подробные опции", showDetailedOptions: "Показать подробные опции", }, - nlPlaceholder: - "Купить продукты завтра в 15:00 @дом #поручения\n\nДобавить детали здесь...", + nlPlaceholder: "Купить продукты завтра в 15:00 @дом #поручения\n\nДобавить детали здесь...", notices: { titleRequired: "Пожалуйста, введите название задачи", - success: 'Задача "{title}" успешно создана', - successShortened: - 'Задача "{title}" успешно создана (имя файла сокращено из-за длины)', + success: "Задача \"{title}\" успешно создана", + successShortened: "Задача \"{title}\" успешно создана (имя файла сокращено из-за длины)", failure: "Не удалось создать задачу: {message}", blockingUnresolved: "Не удалось определить: {entries}", }, @@ -1771,7 +1720,7 @@ export const ru: TranslationTree = { notices: { titleRequired: "Пожалуйста, введите название задачи", noChanges: "Нет изменений для сохранения", - updateSuccess: 'Задача "{title}" успешно обновлена', + updateSuccess: "Задача \"{title}\" успешно обновлена", updateFailure: "Не удалось обновить задачу: {message}", dependenciesUpdateSuccess: "Зависимости обновлены", blockingUnresolved: "Не удалось определить: {entries}", @@ -1791,22 +1740,19 @@ export const ru: TranslationTree = { switch: "Переключиться на хранение в ежедневных заметках?", }, message: { - migrate: - "Это перенесет ваши существующие данные сессий помодоро в frontmatter ежедневных заметок. Данные будут сгруппированы по дате и сохранены в каждой ежедневной заметке.", + migrate: "Это перенесет ваши существующие данные сессий помодоро в frontmatter ежедневных заметок. Данные будут сгруппированы по дате и сохранены в каждой ежедневной заметке.", switch: "Данные сессий помодоро будут храниться в frontmatter ежедневных заметок вместо файла данных плагина.", }, whatThisMeans: "Что это означает:", bullets: { - dailyNotesRequired: - "Основной плагин ежедневных заметок должен оставаться включенным", + dailyNotesRequired: "Основной плагин ежедневных заметок должен оставаться включенным", storedInNotes: "Данные будут храниться в frontmatter ваших ежедневных заметок", migrateData: "Существующие данные плагина будут перенесены и затем очищены", futureSessions: "Будущие сессии будут сохраняться в ежедневные заметки", dataLongevity: "Это обеспечивает лучшую долговечность данных с вашими заметками", }, finalNote: { - migrate: - "⚠️ Убедитесь, что у вас есть резервные копии при необходимости. Это изменение нельзя автоматически отменить.", + migrate: "⚠️ Убедитесь, что у вас есть резервные копии при необходимости. Это изменение нельзя автоматически отменить.", switch: "Вы можете переключиться обратно на хранение в плагине в любое время в будущем.", }, buttons: { @@ -1888,6 +1834,57 @@ export const ru: TranslationTree = { updateFailed: "Не удалось обновить запланированную дату. Попробуйте снова.", }, }, + taskSelector: { + title: "Выбрать задачу", + placeholder: "Начните вводить для поиска задач...", + instructions: { + navigate: "для навигации", + select: "для выбора", + dismiss: "для отмены", + }, + notices: { + noteNotFound: "Не удалось найти заметку \"{name}\"", + }, + dueDate: { + overdue: "Срок: {date} (просрочено)", + today: "Срок: Сегодня", + }, + }, + timeEntryEditor: { + title: "Временные записи - {taskTitle}", + addEntry: "Добавить временную запись", + noEntries: "Пока нет временных записей", + deleteEntry: "Удалить запись", + startTime: "Время начала", + endTime: "Время окончания (оставьте пустым, если еще выполняется)", + duration: "Длительность (минуты)", + durationDesc: "Переопределить рассчитанную длительность", + durationPlaceholder: "Введите длительность в минутах", + description: "Описание", + descriptionPlaceholder: "Над чем вы работали?", + calculatedDuration: "Рассчитано: {minutes} минут", + totalTime: "{hours}ч {minutes}м всего", + totalMinutes: "{minutes}м всего", + saved: "Временные записи сохранены", + saveFailed: "Не удалось сохранить временные записи", + openFailed: "Не удалось открыть редактор временных записей", + noTasksWithEntries: "Нет задач с временными записями для редактирования", + validation: { + missingStartTime: "Требуется время начала", + endBeforeStart: "Время окончания должно быть после времени начала", + }, + }, + timeTracking: { + noTasksAvailable: "Нет доступных задач для отслеживания времени", + started: "Начато отслеживание времени для: {taskTitle}", + startFailed: "Не удалось начать отслеживание времени", + }, + timeEntry: { + mustHaveSpecificTime: "Временные записи должны иметь конкретное время. Пожалуйста, выберите временной диапазон в недельном или дневном представлении.", + noTasksAvailable: "Нет доступных задач для создания временных записей", + created: "Временная запись создана для {taskTitle} ({duration} минут)", + createFailed: "Не удалось создать временную запись", + }, }, contextMenus: { task: { @@ -1914,7 +1911,7 @@ export const ru: TranslationTree = { renamePlaceholder: "Введите новое имя", delete: "Удалить", deleteTitle: "Удалить файл", - deleteMessage: 'Вы уверены, что хотите удалить "{name}"?', + deleteMessage: "Вы уверены, что хотите удалить \"{name}\"?", deleteConfirm: "Удалить", copyPath: "Копировать путь", copyUrl: "Копировать URL Obsidian", @@ -1965,23 +1962,40 @@ export const ru: TranslationTree = { oneDay: "За 1 день", }, notices: { - toggleCompletionFailure: - "Не удалось переключить завершение повторяющейся задачи: {message}", + toggleCompletionFailure: "Не удалось переключить завершение повторяющейся задачи: {message}", updateDueDateFailure: "Не удалось обновить срок выполнения задачи: {message}", - updateScheduledFailure: - "Не удалось обновить запланированную дату задачи: {message}", + updateScheduledFailure: "Не удалось обновить запланированную дату задачи: {message}", updateRemindersFailure: "Не удалось обновить напоминания", clearRemindersFailure: "Не удалось очистить напоминания", addReminderFailure: "Не удалось добавить напоминание", archiveFailure: "Не удалось переключить архив задачи: {message}", copyTitleSuccess: "Название задачи скопировано в буфер обмена", copyFailure: "Не удалось скопировать в буфер обмена", - renameSuccess: 'Переименовано в "{name}"', + renameSuccess: "Переименовано в \"{name}\"", renameFailure: "Не удалось переименовать файл", copyPathSuccess: "Путь к файлу скопирован в буфер обмена", copyUrlSuccess: "URL Obsidian скопирован в буфер обмена", updateRecurrenceFailure: "Не удалось обновить повторение задачи: {message}", }, + organization: { + title: "Организация", + projects: "Проекты", + addToProject: "Добавить в проект…", + subtasks: "Подзадачи", + addSubtasks: "Добавить подзадачи…", + notices: { + alreadyInProject: "Задача уже в этом проекте", + alreadySubtask: "Задача уже является подзадачей этой задачи", + addedToProject: "Добавлено в проект: {project}", + addedAsSubtask: "Добавлена {subtask} как подзадача {parent}", + addToProjectFailed: "Не удалось добавить задачу в проект", + addAsSubtaskFailed: "Не удалось добавить задачу как подзадачу", + projectSelectFailed: "Не удалось открыть селектор проектов", + subtaskSelectFailed: "Не удалось открыть селектор подзадач", + noEligibleSubtasks: "Нет доступных задач для назначения в качестве подзадач", + currentTaskNotFound: "Файл текущей задачи не найден", + }, + }, }, ics: { showDetails: "Показать детали", @@ -2003,7 +2017,7 @@ export const ru: TranslationTree = { taskCreateFailure: "Не удалось создать задачу из события", noteCreated: "Заметка успешно создана", creationFailure: "Не удалось открыть модальное окно создания", - linkSuccess: 'Связана заметка "{name}" с событием', + linkSuccess: "Связана заметка \"{name}\" с событием", linkFailure: "Не удалось связать заметку", linkSelectionFailure: "Не удалось открыть выбор заметки", }, @@ -2055,20 +2069,16 @@ export const ru: TranslationTree = { paused: "Помодоро приостановлено", resumed: "Помодоро возобновлено", stoppedAndReset: "Помодоро остановлено и сброшено", - migrationSuccess: - "Успешно перенесено {count} сессий помодоро в ежедневные заметки.", - migrationFailure: - "Не удалось перенести данные помодоро. Пожалуйста, попробуйте снова или проверьте консоль для деталей.", + migrationSuccess: "Успешно перенесено {count} сессий помодоро в ежедневные заметки.", + migrationFailure: "Не удалось перенести данные помодоро. Пожалуйста, попробуйте снова или проверьте консоль для деталей.", }, }, icsSubscription: { notices: { - calendarNotFound: - 'Календарь "{name}" не найден (404). Пожалуйста, проверьте, что URL ICS правильный и календарь общедоступен.', - calendarAccessDenied: - 'Доступ к календарю "{name}" запрещен (500). Это может быть из-за ограничений сервера Microsoft Outlook. Попробуйте перегенерировать URL ICS из настроек календаря.', - fetchRemoteFailed: 'Не удалось получить удаленный календарь "{name}": {error}', - readLocalFailed: 'Не удалось прочитать локальный календарь "{name}": {error}', + calendarNotFound: "Календарь \"{name}\" не найден (404). Пожалуйста, проверьте, что URL ICS правильный и календарь общедоступен.", + calendarAccessDenied: "Доступ к календарю \"{name}\" запрещен (500). Это может быть из-за ограничений сервера Microsoft Outlook. Попробуйте перегенерировать URL ICS из настроек календаря.", + fetchRemoteFailed: "Не удалось получить удаленный календарь \"{name}\": {error}", + readLocalFailed: "Не удалось прочитать локальный календарь \"{name}\": {error}", }, }, calendarExport: { @@ -2114,20 +2124,16 @@ export const ru: TranslationTree = { noCheckboxTasks: "В текущей заметке не найдено задач с чекбоксами.", convertingTasks: "Преобразование {count} задач{plural}...", conversionSuccess: "✅ Успешно преобразовано {count} задач{plural} в TaskNotes!", - partialConversion: - "Преобразовано {successCount} задач{successPlural}. {failureCount} не удалось.", - batchConversionFailed: - "Не удалось выполнить пакетное преобразование. Пожалуйста, попробуйте снова.", + partialConversion: "Преобразовано {successCount} задач{successPlural}. {failureCount} не удалось.", + batchConversionFailed: "Не удалось выполнить пакетное преобразование. Пожалуйста, попробуйте снова.", invalidParameters: "Неверные входные параметры.", emptyLine: "Текущая строка пуста или не содержит допустимого содержимого.", parseError: "Ошибка анализа задачи: {error}", invalidTaskData: "Неверные данные задачи.", replaceLineFailed: "Не удалось заменить строку задачи.", conversionComplete: "Задача преобразована: {title}", - conversionCompleteShortened: - 'Задача преобразована: "{title}" (имя файла сокращено из-за длины)', - fileExists: - "Файл с таким именем уже существует. Пожалуйста, попробуйте снова или переименуйте задачу.", + conversionCompleteShortened: "Задача преобразована: \"{title}\" (имя файла сокращено из-за длины)", + fileExists: "Файл с таким именем уже существует. Пожалуйста, попробуйте снова или переименуйте задачу.", conversionFailed: "Не удалось преобразовать задачу. Пожалуйста, попробуйте снова.", }, }, @@ -2152,8 +2158,6 @@ export const ru: TranslationTree = { }, notification: { notices: { - // NotificationService использует Notice для уведомлений в приложении - // но сообщение приходит из содержимого напоминания, поэтому нет жестко заданных строк для перевода }, }, }, @@ -2201,8 +2205,7 @@ export const ru: TranslationTree = { searchTasksTooltip: "Поиск названий задач", filterUnavailable: "Панель фильтров временно недоступна", toggleFilter: "Переключить фильтр", - activeFiltersTooltip: - "Активные фильтры – Нажмите для изменения, правый клик для очистки", + activeFiltersTooltip: "Активные фильтры – Нажмите для изменения, правый клик для очистки", configureVisibleProperties: "Настроить видимые свойства", sortAndGroupOptions: "Опции сортировки и группировки", sortMenuHeader: "Сортировка", @@ -2237,8 +2240,7 @@ export const ru: TranslationTree = { chooseGroupMethod: "Группировать задачи по общему свойству", toggleViewOption: "Переключить {option}", expandCollapseFilters: "Нажмите для развертывания/свертывания условий фильтра", - expandCollapseSort: - "Нажмите для развертывания/свертывания опций сортировки и группировки", + expandCollapseSort: "Нажмите для развертывания/свертывания опций сортировки и группировки", expandCollapseViewOptions: "Нажмите для развертывания/свертывания опций представления", naturalLanguageDates: "Даты на естественном языке", naturalLanguageExamples: "Показать примеры дат на естественном языке", @@ -2252,7 +2254,7 @@ export const ru: TranslationTree = { loadSavedView: "Загрузить сохраненное представление: {name}", deleteView: "Удалить представление", deleteViewTitle: "Удалить представление", - deleteViewMessage: 'Вы уверены, что хотите удалить представление "{name}"?', + deleteViewMessage: "Вы уверены, что хотите удалить представление \"{name}\"?", manageAllReminders: "Управлять всеми напоминаниями...", clearAllReminders: "Очистить все напоминания", customRecurrence: "Пользовательское повторение...", @@ -2277,6 +2279,7 @@ export const ru: TranslationTree = { dueDate: "Срок выполнения", scheduledDate: "Запланированная дата", tags: "Теги", + completedDate: "Дата завершения", }, notices: { propertiesMenuFailed: "Не удалось показать меню свойств", @@ -2335,8 +2338,7 @@ export const ru: TranslationTree = { startDate: "Дата начала", startDateDesc: "Дата, когда начинается шаблон повторения", startTime: "Время начала", - startTimeDesc: - "Время, когда должны появляться повторяющиеся экземпляры (опционально)", + startTimeDesc: "Время, когда должны появляться повторяющиеся экземпляры (опционально)", frequency: "Частота", interval: "Интервал", intervalDesc: "Каждые X дней/недель/месяцев/лет", diff --git a/src/i18n/resources/zh.ts b/src/i18n/resources/zh.ts index 8004f13b..12c987b5 100644 --- a/src/i18n/resources/zh.ts +++ b/src/i18n/resources/zh.ts @@ -112,14 +112,13 @@ export const zh: TranslationTree = { icsServiceNotAvailable: "ICS订阅服务不可用", calendarRefreshedAll: "所有日历订阅已成功刷新", refreshFailed: "刷新部分日历订阅失败", - timeblockSpecificTime: - "时间块必须有具体时间。请在周视图或日视图中选择时间范围。", - timeblockMoved: '时间块"{title}"已移动到{date}', - timeblockUpdated: '时间块"{title}"的时间已更新', + timeblockSpecificTime: "时间块必须有具体时间。请在周视图或日视图中选择时间范围。", + timeblockMoved: "时间块\"{title}\"已移动到{date}", + timeblockUpdated: "时间块\"{title}\"的时间已更新", timeblockMoveFailed: "移动时间块失败:{message}", - timeblockResized: '时间块"{title}"的持续时间已更新', + timeblockResized: "时间块\"{title}\"的持续时间已更新", timeblockResizeFailed: "调整时间块大小失败:{message}", - taskScheduled: '任务"{title}"已安排到{date}', + taskScheduled: "任务\"{title}\"已安排到{date}", scheduleTaskFailed: "安排任务失败", endTimeAfterStart: "结束时间必须晚于开始时间", timeEntryNotFound: "未找到时间条目", @@ -140,8 +139,7 @@ export const zh: TranslationTree = { openTask: "打开任务", deleteTimeEntry: "删除时间条目", deleteTimeEntryTitle: "删除时间条目", - deleteTimeEntryConfirm: - "确定要删除此时间条目{duration}吗?此操作无法撤销。", + deleteTimeEntryConfirm: "确定要删除此时间条目{duration}吗?此操作无法撤销。", deleteButton: "删除", cancelButton: "取消", }, @@ -156,6 +154,7 @@ export const zh: TranslationTree = { year: "年", list: "列表", customDays: "{count}天", + listDays: "{count}天 列表", }, settings: { groups: { @@ -164,6 +163,8 @@ export const zh: TranslationTree = { layout: "布局", propertyBasedEvents: "基于属性的事件", calendarSubscriptions: "日历订阅", + googleCalendars: "Google 日历", + microsoftCalendars: "Microsoft 日历", }, dateNavigation: { navigateToDate: "导航到日期", @@ -207,6 +208,7 @@ export const zh: TranslationTree = { initialScrollTime: "初始滚动时间", initialScrollTimePlaceholder: "HH:mm:ss(例如:08:00:00)", minimumEventHeight: "最小事件高度(px)", + listDayCount: "列表天数", }, propertyBasedEvents: { startDateProperty: "开始日期属性", @@ -228,7 +230,7 @@ export const zh: TranslationTree = { noTasks: "没有任务", notices: { loadFailed: "看板加载失败", - movedTask: '任务已移动到"{0}"', + movedTask: "任务已移动到\"{0}\"", }, errors: { loadingBoard: "加载看板时出错。", @@ -476,8 +478,7 @@ export const zh: TranslationTree = { }, timeblocking: { header: "时间块", - description: - "配置时间块功能,在日记中进行轻量级调度。在高级日历视图中,按住Shift + 点击并拖拽创建时间块。", + description: "配置时间块功能,在日记中进行轻量级调度。在高级日历视图中,按住Shift + 点击并拖拽创建时间块。", enableName: "启用时间块", enableDesc: "启用时间块功能,在日记中进行轻量级调度", showBlocksName: "显示时间块", @@ -608,8 +609,7 @@ export const zh: TranslationTree = { }, bodyTemplateFile: { name: "正文模板文件", - description: - "任务正文内容的模板文件路径。支持模板变量如{{title}}、{{date}}、{{time}}、{{priority}}、{{status}}等。", + description: "任务正文内容的模板文件路径。支持模板变量如{{title}}、{{date}}、{{time}}、{{priority}}、{{status}}等。", placeholder: "Templates/Task Template.md", ariaLabel: "正文模板文件路径", }, @@ -658,7 +658,7 @@ export const zh: TranslationTree = { }, archiveFolder: { name: "归档文件夹", - description: "归档时移动任务到的文件夹", + description: "归档时将任务移动到的文件夹。支持模板变量,如 {{year}}、{{month}}、{{priority}} 等。", }, }, taskIdentification: { @@ -678,11 +678,15 @@ export const zh: TranslationTree = { }, taskProperty: { name: "任务属性名称", - description: '前置属性名称(例如,"category")', + description: "前置属性名称(例如,\"category\")", }, taskPropertyValue: { name: "任务属性值", - description: '识别笔记为任务的值(例如,"task")', + description: "识别笔记为任务的值(例如,\"task\")", + }, + hideIdentifyingTags: { + name: "在任务卡片中隐藏识别标签", + description: "启用后,与任务识别标签匹配的标签(包括层次匹配,如 'task/project')将在任务卡片显示中隐藏", }, }, folderManagement: { @@ -722,16 +726,23 @@ export const zh: TranslationTree = { buttonText: "查看版本说明", }, }, + frontmatter: { + header: "Frontmatter", + description: "配置 frontmatter 属性中链接的格式。", + useMarkdownLinks: { + name: "在 frontmatter 中使用 markdown 链接", + description: "在 frontmatter 属性中生成 markdown 链接 ([文本](路径)) 而不是 wikilinks ([[链接]])。\\n\\n⚠️ 需要 'obsidian-frontmatter-markdown-links' 插件才能正常工作。", + }, + }, }, taskProperties: { taskStatuses: { header: "任务状态", - description: - "自定义任务可用的状态选项。这些状态控制任务生命周期并确定何时任务被视为完成。", + description: "自定义任务可用的状态选项。这些状态控制任务生命周期并确定何时任务被视为完成。", howTheyWork: { title: "状态如何工作:", - value: '值:存储在任务文件中的内部标识符(例如,"进行中")', - label: '标签:在界面中显示的显示名称(例如,"进行中")', + value: "值:存储在任务文件中的内部标识符(例如,\"进行中\")", + label: "标签:在界面中显示的显示名称(例如,\"进行中\")", color: "颜色:状态点和徽章的视觉指示器颜色", completed: "已完成:选中时,具有此状态的任务被视为已完成,可能以不同方式过滤", autoArchive: "自动归档:启用时,任务将在指定延迟后自动归档(1-1440分钟)", @@ -742,7 +753,7 @@ export const zh: TranslationTree = { description: "为您的任务创建新的状态选项", buttonText: "添加状态", }, - validationNote: '注意:您必须至少有2个状态,并且至少一个状态必须标记为"已完成"。', + validationNote: "注意:您必须至少有2个状态,并且至少一个状态必须标记为\"已完成\"。", emptyState: "未配置自定义状态。添加状态以开始。", emptyStateButton: "添加状态", fields: { @@ -760,20 +771,18 @@ export const zh: TranslationTree = { badges: { completed: "已完成", }, - deleteConfirm: '您确定要删除状态"{label}"吗?', + deleteConfirm: "您确定要删除状态\"{label}\"吗?", }, taskPriorities: { header: "任务优先级", - description: - "自定义任务可用的优先级级别。优先级权重确定任务视图中的排序顺序和视觉层次。", + description: "自定义任务可用的优先级级别。优先级权重确定任务视图中的排序顺序和视觉层次。", howTheyWork: { title: "优先级如何工作:", - value: '值:存储在任务文件中的内部标识符(例如,"高")', - label: '显示标签:在界面中显示的显示名称(例如,"高优先级")', + value: "值:存储在任务文件中的内部标识符(例如,\"高\")", + label: "显示标签:在界面中显示的显示名称(例如,\"高优先级\")", color: "颜色:优先级点和徽章的视觉指示器颜色", weight: "权重:用于排序的数值(权重高的优先出现在列表中)", - weightNote: - "任务按优先级权重降序自动排序(最高权重优先)。权重可以是任何正数。", + weightNote: "任务按优先级权重降序自动排序(最高权重优先)。权重可以是任何正数。", }, addNew: { name: "添加新优先级", @@ -799,8 +808,7 @@ export const zh: TranslationTree = { }, fieldMapping: { header: "字段映射", - warning: - "⚠️ 警告:TaskNotes将使用这些属性名称进行读取和写入。在创建任务后更改这些可能导致不一致。", + warning: "⚠️ 警告:TaskNotes将使用这些属性名称进行读取和写入。在创建任务后更改这些可能导致不一致。", description: "配置TaskNotes应为每个字段使用的前置属性。", resetButton: { name: "重置字段映射", @@ -841,8 +849,7 @@ export const zh: TranslationTree = { }, customUserFields: { header: "自定义用户字段", - description: - "定义自定义前置属性,作为类型感知过滤选项出现在各个视图中。每行:显示名称、属性名称、类型。", + description: "定义自定义前置属性,作为类型感知过滤选项出现在各个视图中。每行:显示名称、属性名称、类型。", addNew: { name: "添加新用户字段", description: "创建将出现在过滤器和视图中的新自定义字段", @@ -871,6 +878,10 @@ export const zh: TranslationTree = { noKey: "无键", }, deleteTooltip: "删除字段", + autosuggestFilters: { + header: "自动建议过滤器(高级)", + description: "过滤在此字段的自动完成建议中显示的文件", + }, }, }, appearance: { @@ -923,11 +934,9 @@ export const zh: TranslationTree = { }, customTemplate: { name: "自定义文件名模板", - description: - "自定义文件名的模板。可用变量:{title}、{titleLower}、{titleUpper}、{titleSnake}、{titleKebab}、{titleCamel}、{titlePascal}、{date}、{shortDate}、{time}、{time12}、{time24}、{timestamp}、{dateTime}、{year}、{month}、{monthName}、{monthNameShort}、{day}、{dayName}、{dayNameShort}、{hour}、{hour12}、{minute}、{second}、{milliseconds}、{ms}、{ampm}、{week}、{quarter}、{unix}、{unixMs}、{timezone}、{timezoneShort}、{utcOffset}、{utcOffsetShort}、{utcZ}、{zettel}、{nano}、{priority}、{priorityShort}、{status}、{statusShort}、{dueDate}、{scheduledDate}", + description: "自定义文件名的模板。可用变量:{title}、{titleLower}、{titleUpper}、{titleSnake}、{titleKebab}、{titleCamel}、{titlePascal}、{date}、{shortDate}、{time}、{time12}、{time24}、{timestamp}、{dateTime}、{year}、{month}、{monthName}、{monthNameShort}、{day}、{dayName}、{dayNameShort}、{hour}、{hour12}、{minute}、{second}、{milliseconds}、{ms}、{ampm}、{week}、{quarter}、{unix}、{unixMs}、{timezone}、{timezoneShort}、{utcOffset}、{utcOffsetShort}、{utcZ}、{zettel}、{nano}、{priority}、{priorityShort}、{status}、{statusShort}、{dueDate}、{scheduledDate}", placeholder: "{date}-{title}-{dueDate}", - helpText: - "注意:{dueDate}和{scheduledDate}格式为YYYY-MM-DD,如果未设置则为空。", + helpText: "注意:{dueDate}和{scheduledDate}格式为YYYY-MM-DD,如果未设置则为空。", }, }, displayFormatting: { @@ -987,15 +996,13 @@ export const zh: TranslationTree = { }, calendarLocale: { name: "日历区域设置", - description: - '日期格式和日历系统的日历区域设置(例如,"en"、"fa"表示波斯语/波斯文、"de"表示德语)。留空以从浏览器自动检测。', + description: "日期格式和日历系统的日历区域设置(例如,\"en\"、\"fa\"表示波斯语/波斯文、\"de\"表示德语)。留空以从浏览器自动检测。", placeholder: "自动检测", }, }, defaultEventVisibility: { header: "默认事件可见性", - description: - "配置打开高级日历时默认可见的事件类型。用户仍可在日历视图中切换这些开/关。", + description: "配置打开高级日历时默认可见的事件类型。用户仍可在日历视图中切换这些开/关。", showScheduledTasks: { name: "显示安排的任务", description: "默认显示有安排日期的任务", @@ -1048,6 +1055,11 @@ export const zh: TranslationTree = { description: "打开时间线视图时滚动到的时间(HH:MM格式)", placeholder: "09:00", }, + eventMinHeight: { + name: "事件最小高度", + description: "时间轴视图中事件的最小高度(像素)", + placeholder: "15", + }, }, uiElements: { header: "界面元素", @@ -1088,6 +1100,10 @@ export const zh: TranslationTree = { right: "右侧", }, }, + showTaskCardInNote: { + name: "在笔记中显示任务卡片", + description: "在任务笔记顶部显示任务卡片小部件,显示任务详情和操作", + }, }, projectAutosuggest: { header: "项目自动建议", @@ -1124,14 +1140,12 @@ export const zh: TranslationTree = { displayRows: { row1: { name: "第1行", - description: - "格式:{property|flags}。属性:title、aliases、file.path、file.parent。标志:n(Label)显示标签,s使其可搜索。示例:{title|n(Title)|s}", + description: "格式:{property|flags}。属性:title、aliases、file.path、file.parent。标志:n(Label)显示标签,s使其可搜索。示例:{title|n(Title)|s}", placeholder: "{title|n(Title)}", }, row2: { name: "第2行(可选)", - description: - "常见模式:{aliases|n(Aliases)}、{file.parent|n(Folder)}、literal:自定义文本", + description: "常见模式:{aliases|n(Aliases)}、{file.parent|n(Folder)}、literal:自定义文本", placeholder: "{aliases|n(Aliases)}", }, row3: { @@ -1143,7 +1157,7 @@ export const zh: TranslationTree = { quickReference: { header: "快速参考", properties: "可用属性:title、aliases、file.path、file.parent或任何前置字段", - labels: '添加标签:{title|n(Title)} → "Title: My Project"', + labels: "添加标签:{title|n(Title)} → \"Title: My Project\"", searchable: "使其可搜索:{description|s}在+搜索中包含描述", staticText: "静态文本:literal:My Custom Label", alwaysSearchable: "文件名、标题和别名默认始终可搜索。", @@ -1178,12 +1192,10 @@ export const zh: TranslationTree = { integrations: { basesIntegration: { header: "Bases集成", - description: - "配置与Obsidian Bases插件的集成。这是一个实验性功能,目前依赖于未记录的Obsidian API。行为可能会改变或中断。", + description: "配置与Obsidian Bases插件的集成。这是一个实验性功能,目前依赖于未记录的Obsidian API。行为可能会改变或中断。", enable: { name: "启用Bases集成", - description: - "启用TaskNotes视图在Obsidian Bases插件中使用。必须启用Bases插件才能工作。", + description: "启用TaskNotes视图在Obsidian Bases插件中使用。必须启用Bases插件才能工作。", }, notices: { enabled: "Bases集成已启用。请重启Obsidian以完成设置。", @@ -1240,10 +1252,10 @@ export const zh: TranslationTree = { refreshSuccess: "所有日历订阅刷新成功", refreshFailure: "刷新某些日历订阅失败", updateFailure: "更新订阅失败", - deleteSuccess: '删除订阅"{name}"', + deleteSuccess: "删除订阅\"{name}\"", deleteFailure: "删除订阅失败", enableFirst: "请先启用订阅", - refreshSubscriptionSuccess: '刷新"{name}"', + refreshSubscriptionSuccess: "刷新\"{name}\"", refreshSubscriptionFailure: "刷新订阅失败", }, labels: { @@ -1281,7 +1293,7 @@ export const zh: TranslationTree = { }, confirmDelete: { title: "删除订阅", - message: '您确定要删除订阅"{name}"吗?此操作无法撤销。', + message: "您确定要删除订阅\"{name}\"吗?此操作无法撤销。", confirmText: "删除", }, }, @@ -1489,8 +1501,7 @@ export const zh: TranslationTree = { }, customHeaders: { name: "包含自定义标头", - description: - "包含TaskNotes标头(事件类型、签名、交付ID)。对于Discord、Slack和其他具有严格CORS策略的服务,请关闭。", + description: "包含TaskNotes标头(事件类型、签名、交付ID)。对于Discord、Slack和其他具有严格CORS策略的服务,请关闭。", }, buttons: { cancel: "取消", @@ -1517,8 +1528,7 @@ export const zh: TranslationTree = { }, customHeaders: { name: "包含自定义标头", - description: - "包含TaskNotes标头(事件类型、签名、交付ID)。对于Discord、Slack和其他具有严格CORS策略的服务,请关闭。", + description: "包含TaskNotes标头(事件类型、签名、交付ID)。对于Discord、Slack和其他具有严格CORS策略的服务,请关闭。", }, transformHelp: { title: "转换文件允许您自定义webhook载荷:", @@ -1582,6 +1592,8 @@ export const zh: TranslationTree = { refreshCache: "刷新缓存", exportAllTasksIcs: "导出所有任务为ICS文件", viewReleaseNotes: "查看版本说明", + startTimeTrackingWithSelector: "开始时间跟踪(选择任务)", + editTimeEntries: "编辑时间条目(选择任务)", }, modals: { task: { @@ -1650,6 +1662,28 @@ export const zh: TranslationTree = { untilSuffix: "直到{date}", ordinal: "{number}{suffix}", }, + dependencies: { + blockedBy: "被阻塞", + blocking: "阻塞中", + placeholder: "[[任务笔记]]", + addTaskButton: "添加任务", + selectTaskTooltip: "使用模糊搜索选择任务笔记", + removeTaskTooltip: "删除任务", + }, + organization: { + projects: "项目", + subtasks: "子任务", + addToProject: "添加到项目", + addToProjectButton: "添加到项目", + addSubtasks: "添加子任务", + addSubtasksButton: "添加子任务", + addSubtasksTooltip: "选择任务将其设为此任务的子任务", + removeSubtaskTooltip: "删除子任务", + notices: { + noEligibleSubtasks: "没有可用的任务可指定为子任务", + subtaskSelectFailed: "无法打开子任务选择器", + }, + }, }, taskCreation: { title: "创建任务", @@ -1661,9 +1695,10 @@ export const zh: TranslationTree = { nlPlaceholder: "明天下午3点@家买杂货 #差事\n\n在这里添加详情...", notices: { titleRequired: "请输入任务标题", - success: '任务"{title}"创建成功', - successShortened: '任务"{title}"创建成功(因长度而缩短文件名)', + success: "任务\"{title}\"创建成功", + successShortened: "任务\"{title}\"创建成功(因长度而缩短文件名)", failure: "创建任务失败:{message}", + blockingUnresolved: "无法解析:{entries}", }, }, taskEdit: { @@ -1685,12 +1720,14 @@ export const zh: TranslationTree = { notices: { titleRequired: "请输入任务标题", noChanges: "没有要保存的更改", - updateSuccess: '任务"{title}"更新成功', + updateSuccess: "任务\"{title}\"更新成功", updateFailure: "更新任务失败:{message}", fileMissing: "找不到任务文件:{path}", openNoteFailure: "打开任务笔记失败", archiveSuccess: "任务{action}成功", archiveFailure: "归档任务失败", + dependenciesUpdateSuccess: "依赖关系已更新", + blockingUnresolved: "无法解析:{entries}", }, archiveAction: { archived: "已归档", @@ -1703,8 +1740,7 @@ export const zh: TranslationTree = { switch: "切换到日记存储?", }, message: { - migrate: - "这将把现有的番茄钟会话数据迁移到日记前置数据。数据将按日期分组并存储在每个日记中。", + migrate: "这将把现有的番茄钟会话数据迁移到日记前置数据。数据将按日期分组并存储在每个日记中。", switch: "番茄钟会话数据将存储在日记前置数据中,而不是插件数据文件中。", }, whatThisMeans: "这意味着:", @@ -1798,6 +1834,57 @@ export const zh: TranslationTree = { updateFailed: "更新安排日期失败。请重试。", }, }, + taskSelector: { + title: "选择任务", + placeholder: "输入以搜索任务...", + instructions: { + navigate: "导航", + select: "选择", + dismiss: "取消", + }, + notices: { + noteNotFound: "找不到笔记 \"{name}\"", + }, + dueDate: { + overdue: "截止日期:{date}(逾期)", + today: "截止日期:今天", + }, + }, + timeEntryEditor: { + title: "时间条目 - {taskTitle}", + addEntry: "添加时间条目", + noEntries: "暂无时间条目", + deleteEntry: "删除条目", + startTime: "开始时间", + endTime: "结束时间(如仍在进行则留空)", + duration: "持续时间(分钟)", + durationDesc: "覆盖计算的持续时间", + durationPlaceholder: "输入持续时间(分钟)", + description: "描述", + descriptionPlaceholder: "你在做什么?", + calculatedDuration: "计算结果:{minutes} 分钟", + totalTime: "总计 {hours}小时 {minutes}分钟", + totalMinutes: "总计 {minutes}分钟", + saved: "时间条目已保存", + saveFailed: "无法保存时间条目", + openFailed: "无法打开时间条目编辑器", + noTasksWithEntries: "没有任务有时间条目可供编辑", + validation: { + missingStartTime: "需要开始时间", + endBeforeStart: "结束时间必须在开始时间之后", + }, + }, + timeTracking: { + noTasksAvailable: "没有可用的任务进行时间跟踪", + started: "开始跟踪时间:{taskTitle}", + startFailed: "无法开始时间跟踪", + }, + timeEntry: { + mustHaveSpecificTime: "时间条目必须有具体时间。请在周视图或日视图中选择时间范围。", + noTasksAvailable: "没有可用的任务创建时间条目", + created: "已为 {taskTitle} 创建时间条目({duration} 分钟)", + createFailed: "无法创建时间条目", + }, }, contextMenus: { task: { @@ -1824,7 +1911,7 @@ export const zh: TranslationTree = { renamePlaceholder: "输入新名称", delete: "删除", deleteTitle: "删除文件", - deleteMessage: '您确定要删除"{name}"吗?', + deleteMessage: "您确定要删除\"{name}\"吗?", deleteConfirm: "删除", copyPath: "复制路径", copyUrl: "复制Obsidian URL", @@ -1864,12 +1951,51 @@ export const zh: TranslationTree = { archiveFailure: "切换任务归档失败:{message}", copyTitleSuccess: "任务标题已复制到剪贴板", copyFailure: "复制到剪贴板失败", - renameSuccess: '重命名为"{name}"', + renameSuccess: "重命名为\"{name}\"", renameFailure: "重命名文件失败", copyPathSuccess: "文件路径已复制到剪贴板", copyUrlSuccess: "Obsidian URL已复制到剪贴板", updateRecurrenceFailure: "更新任务重复失败:{message}", }, + dependencies: { + title: "依赖关系", + addBlockedBy: "添加\"被阻塞\"…", + addBlockedByTitle: "添加此任务依赖的任务", + addBlocking: "添加\"阻塞中\"…", + addBlockingTitle: "添加此任务阻塞的任务", + removeBlockedBy: "删除\"被阻塞\"…", + removeBlocking: "删除\"阻塞中\"…", + inputPlaceholder: "[[任务笔记]]", + notices: { + noEntries: "请至少输入一个任务", + blockedByAdded: "已添加 {count} 个依赖关系", + blockedByRemoved: "已删除依赖关系", + blockingAdded: "已添加 {count} 个被依赖的任务", + blockingRemoved: "已删除被依赖的任务", + unresolved: "无法解析:{entries}", + noEligibleTasks: "没有匹配的可用任务", + updateFailed: "无法更新依赖关系", + }, + }, + organization: { + title: "组织", + projects: "项目", + addToProject: "添加到项目…", + subtasks: "子任务", + addSubtasks: "添加子任务…", + notices: { + alreadyInProject: "任务已在此项目中", + alreadySubtask: "任务已是此任务的子任务", + addedToProject: "已添加到项目:{project}", + addedAsSubtask: "已将 {subtask} 添加为 {parent} 的子任务", + addToProjectFailed: "无法将任务添加到项目", + addAsSubtaskFailed: "无法将任务添加为子任务", + projectSelectFailed: "无法打开项目选择器", + subtaskSelectFailed: "无法打开子任务选择器", + noEligibleSubtasks: "没有可用的任务可指定为子任务", + currentTaskNotFound: "找不到当前任务文件", + }, + }, }, ics: { showDetails: "显示详情", @@ -1891,7 +2017,7 @@ export const zh: TranslationTree = { taskCreateFailure: "从事件创建任务失败", noteCreated: "笔记创建成功", creationFailure: "打开创建模态框失败", - linkSuccess: '已将笔记"{name}"链接到事件', + linkSuccess: "已将笔记\"{name}\"链接到事件", linkFailure: "链接笔记失败", linkSelectionFailure: "打开笔记选择失败", }, @@ -1949,12 +2075,10 @@ export const zh: TranslationTree = { }, icsSubscription: { notices: { - calendarNotFound: - '找不到日历"{name}"(404)。请检查ICS URL是否正确且日历可公开访问。', - calendarAccessDenied: - '日历"{name}"访问被拒绝(500)。这可能是由于Microsoft Outlook服务器限制。尝试从日历设置重新生成ICS URL。', - fetchRemoteFailed: '获取远程日历"{name}"失败:{error}', - readLocalFailed: '读取本地日历"{name}"失败:{error}', + calendarNotFound: "找不到日历\"{name}\"(404)。请检查ICS URL是否正确且日历可公开访问。", + calendarAccessDenied: "日历\"{name}\"访问被拒绝(500)。这可能是由于Microsoft Outlook服务器限制。尝试从日历设置重新生成ICS URL。", + fetchRemoteFailed: "获取远程日历\"{name}\"失败:{error}", + readLocalFailed: "读取本地日历\"{name}\"失败:{error}", }, }, calendarExport: { @@ -2000,8 +2124,7 @@ export const zh: TranslationTree = { noCheckboxTasks: "在当前笔记中未找到复选框任务。", convertingTasks: "正在转换{count}个任务{plural}...", conversionSuccess: "✅ 成功将{count}个任务{plural}转换为TaskNotes!", - partialConversion: - "转换了{successCount}个任务{successPlural}。{failureCount}个失败。", + partialConversion: "转换了{successCount}个任务{successPlural}。{failureCount}个失败。", batchConversionFailed: "批量转换失败。请重试。", invalidParameters: "无效的输入参数。", emptyLine: "当前行为空或不包含有效内容。", @@ -2009,7 +2132,7 @@ export const zh: TranslationTree = { invalidTaskData: "无效的任务数据。", replaceLineFailed: "替换任务行失败。", conversionComplete: "任务已转换:{title}", - conversionCompleteShortened: '任务已转换:"{title}"(因长度而缩短文件名)', + conversionCompleteShortened: "任务已转换:\"{title}\"(因长度而缩短文件名)", fileExists: "此名称的文件已存在。请重试或重命名任务。", conversionFailed: "转换任务失败。请重试。", }, @@ -2035,8 +2158,6 @@ export const zh: TranslationTree = { }, notification: { notices: { - // NotificationService使用Notice进行应用内通知 - // 但消息来自提醒内容,所以没有硬编码字符串需要翻译 }, }, }, @@ -2133,7 +2254,7 @@ export const zh: TranslationTree = { loadSavedView: "加载保存的视图:{name}", deleteView: "删除视图", deleteViewTitle: "删除视图", - deleteViewMessage: '您确定要删除视图"{name}"吗?', + deleteViewMessage: "您确定要删除视图\"{name}\"吗?", manageAllReminders: "管理所有提醒...", clearAllReminders: "清除所有提醒", customRecurrence: "自定义重复...", @@ -2158,6 +2279,7 @@ export const zh: TranslationTree = { dueDate: "到期日期", scheduledDate: "安排日期", tags: "标签", + completedDate: "完成日期", }, notices: { propertiesMenuFailed: "显示属性菜单失败", diff --git a/src/modals/DeviceCodeModal.ts b/src/modals/DeviceCodeModal.ts index de3b49e4..8f83fd12 100644 --- a/src/modals/DeviceCodeModal.ts +++ b/src/modals/DeviceCodeModal.ts @@ -1,4 +1,6 @@ import { Modal, App, setIcon } from "obsidian"; +import TaskNotesPlugin from "../main"; +import { TranslationKey } from "../i18n"; interface DeviceCodeInfo { userCode: string; @@ -11,20 +13,25 @@ interface DeviceCodeInfo { * Modal that displays the OAuth Device Flow code and instructions */ export class DeviceCodeModal extends Modal { + private plugin: TaskNotesPlugin; private deviceCode: DeviceCodeInfo; private onCancel: () => void; private countdownInterval?: NodeJS.Timeout; private expiresAt: number; + private translate: (key: TranslationKey, variables?: Record) => string; constructor( app: App, + plugin: TaskNotesPlugin, deviceCode: DeviceCodeInfo, onCancel: () => void ) { super(app); + this.plugin = plugin; this.deviceCode = deviceCode; this.onCancel = onCancel; this.expiresAt = Date.now() + (deviceCode.expiresIn * 1000); + this.translate = plugin.i18n.translate.bind(plugin.i18n); } onOpen(): void { @@ -36,40 +43,40 @@ export class DeviceCodeModal extends Modal { const header = contentEl.createDiv({ cls: "tasknotes-device-code-header" }); const headerIcon = header.createSpan({ cls: "tasknotes-device-code-icon" }); setIcon(headerIcon, "shield-check"); - header.createEl("h2", { text: "Google Calendar Authorization", cls: "tasknotes-device-code-title" }); + header.createEl("h2", { text: this.translate("modals.deviceCode.title"), cls: "tasknotes-device-code-title" }); // Instructions const instructions = contentEl.createDiv({ cls: "tasknotes-device-code-instructions" }); instructions.createEl("p", { - text: "To connect your Google Calendar, please follow these steps:", + text: this.translate("modals.deviceCode.instructions.intro"), }); // Steps const stepsList = instructions.createEl("ol", { cls: "tasknotes-device-code-steps" }); const step1 = stepsList.createEl("li"); - step1.createSpan({ text: "Open " }); + step1.createSpan({ text: this.translate("modals.deviceCode.steps.open") + " " }); const linkSpan = step1.createEl("a", { text: this.deviceCode.verificationUrl, href: this.deviceCode.verificationUrl, cls: "tasknotes-device-code-link" }); linkSpan.setAttribute("target", "_blank"); - step1.createSpan({ text: " in your browser" }); + step1.createSpan({ text: " " + this.translate("modals.deviceCode.steps.inBrowser") }); const step2 = stepsList.createEl("li"); - step2.createSpan({ text: "Enter this code when prompted:" }); + step2.createSpan({ text: this.translate("modals.deviceCode.steps.enterCode") }); const step3 = stepsList.createEl("li"); - step3.createSpan({ text: "Sign in with your Google account and grant access" }); + step3.createSpan({ text: this.translate("modals.deviceCode.steps.signIn") }); const step4 = stepsList.createEl("li"); - step4.createSpan({ text: "Return to Obsidian (this window will close automatically)" }); + step4.createSpan({ text: this.translate("modals.deviceCode.steps.returnToObsidian") }); // Code display const codeContainer = contentEl.createDiv({ cls: "tasknotes-device-code-container" }); const codeLabel = codeContainer.createEl("div", { - text: "Your Code:", + text: this.translate("modals.deviceCode.codeLabel"), cls: "tasknotes-device-code-label" }); @@ -81,7 +88,7 @@ export class DeviceCodeModal extends Modal { const copyIcon = codeBox.createEl("button", { cls: "tasknotes-device-code-copy", - attr: { "aria-label": "Copy code" } + attr: { "aria-label": this.translate("modals.deviceCode.copyCodeAriaLabel") } }); setIcon(copyIcon, "copy"); copyIcon.addEventListener("click", () => { @@ -120,7 +127,7 @@ export class DeviceCodeModal extends Modal { setIcon(statusIcon, "loader"); statusIcon.addClass("tasknotes-device-code-spinner"); statusContainer.createEl("span", { - text: "Waiting for authorization...", + text: this.translate("modals.deviceCode.waitingForAuthorization"), cls: "tasknotes-device-code-status-text" }); @@ -129,7 +136,7 @@ export class DeviceCodeModal extends Modal { // Open browser button const openButton = buttonContainer.createEl("button", { - text: "Open Browser", + text: this.translate("modals.deviceCode.openBrowserButton"), cls: "mod-cta" }); const openIcon = openButton.createSpan({ cls: "tasknotes-device-code-button-icon" }); @@ -142,7 +149,7 @@ export class DeviceCodeModal extends Modal { // Cancel button const cancelButton = buttonContainer.createEl("button", { - text: "Cancel", + text: this.translate("modals.deviceCode.cancelButton"), cls: "tasknotes-device-code-cancel" }); const cancelIcon = cancelButton.createSpan({ cls: "tasknotes-device-code-button-icon" }); @@ -378,9 +385,9 @@ export class DeviceCodeModal extends Modal { const seconds = Math.floor((remaining % 60000) / 1000); if (minutes > 0) { - return `Code expires in ${minutes}m ${seconds}s`; + return this.translate("modals.deviceCode.expiresMinutesSeconds", { minutes, seconds }); } else { - return `Code expires in ${seconds}s`; + return this.translate("modals.deviceCode.expiresSeconds", { seconds }); } } } diff --git a/src/modals/ICSEventInfoModal.ts b/src/modals/ICSEventInfoModal.ts index 2a0159a7..19c0575f 100644 --- a/src/modals/ICSEventInfoModal.ts +++ b/src/modals/ICSEventInfoModal.ts @@ -5,6 +5,7 @@ import { ICSEvent, TaskInfo, NoteInfo } from "../types"; import { ICSNoteCreationModal } from "./ICSNoteCreationModal"; import { ICSNoteLinkModal } from "./ICSNoteLinkModal"; import { SafeAsync } from "../utils/safeAsync"; +import { TranslationKey } from "../i18n"; /** * Modal for displaying ICS event information with note/task creation capabilities @@ -14,12 +15,14 @@ export class ICSEventInfoModal extends Modal { private icsEvent: ICSEvent; private subscriptionName?: string; private relatedNotes: (TaskInfo | NoteInfo)[] = []; + private translate: (key: TranslationKey, variables?: Record) => string; constructor(app: App, plugin: TaskNotesPlugin, icsEvent: ICSEvent, subscriptionName?: string) { super(app); this.plugin = plugin; this.icsEvent = icsEvent; this.subscriptionName = subscriptionName; + this.translate = plugin.i18n.translate.bind(plugin.i18n); } async onOpen() { @@ -34,14 +37,14 @@ export class ICSEventInfoModal extends Modal { await this.loadRelatedNotes(); // Header - new Setting(contentEl).setName("Calendar Event").setHeading(); + new Setting(contentEl).setName(this.translate("modals.icsEventInfo.calendarEventHeading")).setHeading(); // Event title - new Setting(contentEl).setName("Title").setDesc(this.icsEvent.title || "Untitled Event"); + new Setting(contentEl).setName(this.translate("modals.icsEventInfo.titleLabel")).setDesc(this.icsEvent.title || this.translate("ui.icsCard.untitledEvent")); // Calendar source if (this.subscriptionName) { - new Setting(contentEl).setName("Calendar").setDesc(this.subscriptionName); + new Setting(contentEl).setName(this.translate("modals.icsEventInfo.calendarLabel")).setDesc(this.subscriptionName); } // Date/time @@ -69,21 +72,21 @@ export class ICSEventInfoModal extends Modal { } } - new Setting(contentEl).setName("Date & Time").setDesc(dateText); + new Setting(contentEl).setName(this.translate("modals.icsEventInfo.dateTimeLabel")).setDesc(dateText); // Location if (this.icsEvent.location) { - new Setting(contentEl).setName("Location").setDesc(this.icsEvent.location); + new Setting(contentEl).setName(this.translate("modals.icsEventInfo.locationLabel")).setDesc(this.icsEvent.location); } // Description if (this.icsEvent.description) { - new Setting(contentEl).setName("Description").setDesc(this.icsEvent.description); + new Setting(contentEl).setName(this.translate("modals.icsEventInfo.descriptionLabel")).setDesc(this.icsEvent.description); } // URL if (this.icsEvent.url) { - const urlSetting = new Setting(contentEl).setName("URL"); + const urlSetting = new Setting(contentEl).setName(this.translate("modals.icsEventInfo.urlLabel")); const link = urlSetting.descEl.createEl("a", { cls: "external-link", href: this.icsEvent.url, @@ -93,16 +96,17 @@ export class ICSEventInfoModal extends Modal { } // Related notes section - new Setting(contentEl).setName("Related Notes & Tasks").setHeading(); + new Setting(contentEl).setName(this.translate("modals.icsEventInfo.relatedNotesHeading")).setHeading(); if (this.relatedNotes.length === 0) { - new Setting(contentEl).setDesc("No related notes or tasks found for this event."); + new Setting(contentEl).setDesc(this.translate("modals.icsEventInfo.noRelatedItems")); } else { this.relatedNotes.forEach((note) => { const isTask = this.isTaskNote(note); + const typeLabel = isTask ? this.translate("modals.icsEventInfo.typeTask") : this.translate("modals.icsEventInfo.typeNote"); new Setting(contentEl) .setName(note.title) - .setDesc(`Type: ${isTask ? "Task" : "Note"}`) + .setDesc(`Type: ${typeLabel}`) .addButton((button) => { button.setButtonText("Open").onClick(async () => { await this.safeOpenFile(note.path); @@ -113,11 +117,11 @@ export class ICSEventInfoModal extends Modal { } // Actions section - new Setting(contentEl).setName("Actions").setHeading(); + new Setting(contentEl).setName(this.translate("modals.icsEventInfo.actionsHeading")).setHeading(); new Setting(contentEl) - .setName("Create from Event") - .setDesc("Create a new note or task from this calendar event") + .setName(this.translate("modals.icsEventInfo.createFromEventLabel")) + .setDesc(this.translate("modals.icsEventInfo.createFromEventDesc")) .addButton((button) => { button.setButtonText("Create Note").onClick(() => { console.log("Create Note clicked"); @@ -132,8 +136,8 @@ export class ICSEventInfoModal extends Modal { }); new Setting(contentEl) - .setName("Link Existing") - .setDesc("Link an existing note to this calendar event") + .setName(this.translate("modals.icsEventInfo.linkExistingLabel")) + .setDesc(this.translate("modals.icsEventInfo.linkExistingDesc")) .addButton((button) => { button.setButtonText("Link Note").onClick(() => { console.log("Link Note clicked"); @@ -167,7 +171,7 @@ export class ICSEventInfoModal extends Modal { icsEvent: this.icsEvent, subscriptionName: this.subscriptionName || "Unknown Calendar", onContentCreated: async (file: TFile, info: NoteInfo) => { - new Notice("Note created successfully"); + new Notice(this.translate("notices.icsNoteCreatedSuccess")); this.refreshRelatedNotes(); await this.safeOpenFile(file.path); }, @@ -176,7 +180,7 @@ export class ICSEventInfoModal extends Modal { modal.open(); } catch (error) { console.error("Error opening creation modal:", error); - new Notice("Failed to open creation modal"); + new Notice(this.translate("notices.icsCreationModalOpenFailed")); } } @@ -191,7 +195,7 @@ export class ICSEventInfoModal extends Modal { file.path, this.icsEvent ); - new Notice(`Linked note "${file.name}" to ICS event`); + new Notice(this.translate("notices.icsNoteLinkSuccess", { fileName: file.name })); this.refreshRelatedNotes(); }, { @@ -211,7 +215,7 @@ export class ICSEventInfoModal extends Modal { await SafeAsync.execute( async () => { const result = await this.plugin.icsNoteService.createTaskFromICS(this.icsEvent); - new Notice(`Task created: ${result.taskInfo.title}`); + new Notice(this.translate("notices.icsTaskCreatedSuccess", { taskTitle: result.taskInfo.title })); // Open the created task file await this.safeOpenFile(result.file.path); @@ -230,7 +234,7 @@ export class ICSEventInfoModal extends Modal { async () => { await this.loadRelatedNotes(); await this.renderContent(); - new Notice("Related notes refreshed"); + new Notice(this.translate("notices.icsRelatedItemsRefreshed")); }, { errorMessage: "Failed to refresh related notes", @@ -256,12 +260,12 @@ export class ICSEventInfoModal extends Modal { if (file instanceof TFile) { await this.app.workspace.getLeaf().openFile(file); } else { - new Notice("File not found or invalid"); + new Notice(this.translate("notices.icsFileNotFound")); console.error("Invalid file path or file not found:", filePath); } } catch (error) { console.error("Error opening file:", error); - new Notice("Failed to open file"); + new Notice(this.translate("notices.icsFileOpenFailed")); } } diff --git a/src/modals/ICSNoteCreationModal.ts b/src/modals/ICSNoteCreationModal.ts index 81f0f8bd..8fad3372 100644 --- a/src/modals/ICSNoteCreationModal.ts +++ b/src/modals/ICSNoteCreationModal.ts @@ -4,6 +4,7 @@ import TaskNotesPlugin from "../main"; import { ICSEvent, NoteInfo } from "../types"; import { format } from "date-fns"; import { SafeAsync } from "../utils/safeAsync"; +import { TranslationKey } from "../i18n"; export interface ICSNoteCreationOptions { icsEvent: ICSEvent; @@ -18,6 +19,7 @@ export class ICSNoteCreationModal extends Modal { private folder = ""; private template = ""; private useTemplate = false; + private translate: (key: TranslationKey, variables?: Record) => string; // UI elements private titleInput: HTMLInputElement; @@ -30,6 +32,7 @@ export class ICSNoteCreationModal extends Modal { super(app); this.plugin = plugin; this.options = options; + this.translate = plugin.i18n.translate.bind(plugin.i18n); // Set initial values this.title = this.generateDefaultTitle(); @@ -52,7 +55,7 @@ export class ICSNoteCreationModal extends Modal { // Modal header const header = contentEl.createDiv("modal-header"); - header.createEl("h2", { text: "Create from ICS Event" }); + header.createEl("h2", { text: this.translate("modals.icsNoteCreation.heading") }); // Event info preview const eventPreview = contentEl.createDiv("ics-event-preview"); @@ -62,8 +65,8 @@ export class ICSNoteCreationModal extends Modal { // Title input new Setting(contentEl) - .setName("Title") - .setDesc("Title for the new content") + .setName(this.translate("modals.icsNoteCreation.titleLabel")) + .setDesc(this.translate("modals.icsNoteCreation.titleDesc")) .addText((text) => { this.titleInput = text.inputEl; text.setValue(this.title).onChange((value) => { @@ -74,12 +77,12 @@ export class ICSNoteCreationModal extends Modal { // Folder input new Setting(contentEl) - .setName("Folder") - .setDesc("Destination folder (leave empty for vault root)") + .setName(this.translate("modals.icsNoteCreation.folderLabel")) + .setDesc(this.translate("modals.icsNoteCreation.folderDesc")) .addText((text) => { this.folderInput = text.inputEl; text.setValue(this.folder) - .setPlaceholder("folder/subfolder") + .setPlaceholder(this.translate("modals.icsNoteCreation.folderPlaceholder")) .onChange((value) => { this.folder = value; this.updatePreview(); @@ -98,7 +101,7 @@ export class ICSNoteCreationModal extends Modal { const buttonContainer = contentEl.createDiv("modal-button-container"); const createButton = buttonContainer.createEl("button", { - text: "Create", + text: this.translate("modals.icsNoteCreation.createButton"), cls: "mod-cta", }); createButton.onclick = (e) => { @@ -109,7 +112,7 @@ export class ICSNoteCreationModal extends Modal { }; const cancelButton = buttonContainer.createEl("button", { - text: "Cancel", + text: this.translate("common.cancel"), }); cancelButton.onclick = (e) => { e.preventDefault(); @@ -136,7 +139,7 @@ export class ICSNoteCreationModal extends Modal { : icsEvent.start; const startDate = new Date(startDateStr); const startDiv = details.createDiv(); - startDiv.createEl("strong", { text: "Start: " }); + startDiv.createEl("strong", { text: this.translate("modals.icsNoteCreation.startLabel") }); startDiv.appendText(format(startDate, "PPPp")); } @@ -146,18 +149,18 @@ export class ICSNoteCreationModal extends Modal { : icsEvent.end; const endDate = new Date(endDateStr); const endDiv = details.createDiv(); - endDiv.createEl("strong", { text: "End: " }); + endDiv.createEl("strong", { text: this.translate("modals.icsNoteCreation.endLabel") }); endDiv.appendText(format(endDate, "PPPp")); } if (icsEvent.location) { const locationDiv = details.createDiv(); - locationDiv.createEl("strong", { text: "Location: " }); + locationDiv.createEl("strong", { text: this.translate("modals.icsNoteCreation.locationLabel") }); locationDiv.appendText(icsEvent.location); } const calendarDiv = details.createDiv(); - calendarDiv.createEl("strong", { text: "Calendar: " }); + calendarDiv.createEl("strong", { text: this.translate("modals.icsNoteCreation.calendarLabel") }); calendarDiv.appendText(subscriptionName); } @@ -165,8 +168,8 @@ export class ICSNoteCreationModal extends Modal { this.templateContainer.empty(); new Setting(this.templateContainer) - .setName("Use Template") - .setDesc("Apply a template when creating the content") + .setName(this.translate("modals.icsNoteCreation.useTemplateLabel")) + .setDesc(this.translate("modals.icsNoteCreation.useTemplateDesc")) .addToggle((toggle) => { toggle.setValue(this.useTemplate).onChange((value) => { this.useTemplate = value; @@ -177,12 +180,12 @@ export class ICSNoteCreationModal extends Modal { if (this.useTemplate) { new Setting(this.templateContainer) - .setName("Template Path") - .setDesc("Path to the template file") + .setName(this.translate("modals.icsNoteCreation.templatePathLabel")) + .setDesc(this.translate("modals.icsNoteCreation.templatePathDesc")) .addText((text) => { this.templateInput = text.inputEl; text.setValue(this.template) - .setPlaceholder("templates/ics-note-template.md") + .setPlaceholder(this.translate("modals.icsNoteCreation.templatePathPlaceholder")) .onChange((value) => { this.template = value; this.updatePreview(); diff --git a/src/modals/TimeblockCreationModal.ts b/src/modals/TimeblockCreationModal.ts index f3f70379..df0785e1 100644 --- a/src/modals/TimeblockCreationModal.ts +++ b/src/modals/TimeblockCreationModal.ts @@ -19,6 +19,7 @@ import { getAllDailyNotes, appHasDailyNotesPluginLoaded, } from "obsidian-daily-notes-interface"; +import { TranslationKey } from "../i18n"; export interface TimeblockCreationOptions { date: string; // YYYY-MM-DD format @@ -30,6 +31,7 @@ export interface TimeblockCreationOptions { export class TimeblockCreationModal extends Modal { plugin: TaskNotesPlugin; options: TimeblockCreationOptions; + private translate: (key: TranslationKey, variables?: Record) => string; // Form fields private titleInput: HTMLInputElement; @@ -46,6 +48,7 @@ export class TimeblockCreationModal extends Modal { super(app); this.plugin = plugin; this.options = options; + this.translate = plugin.i18n.translate.bind(plugin.i18n); } onOpen() { @@ -53,22 +56,22 @@ export class TimeblockCreationModal extends Modal { contentEl.empty(); contentEl.addClass("timeblock-creation-modal"); - new Setting(contentEl).setName("Create timeblock").setHeading(); + new Setting(contentEl).setName(this.translate("modals.timeblockCreation.heading")).setHeading(); // Date display (read-only) const dateDisplay = contentEl.createDiv({ cls: "timeblock-date-display" }); - dateDisplay.createEl("strong", { text: "Date: " }); + dateDisplay.createEl("strong", { text: this.translate("modals.timeblockCreation.dateLabel") }); // Parse the date string to get a proper date object for display (using local for UI) const dateObj = parseDateAsLocal(this.options.date); dateDisplay.createSpan({ text: dateObj.toLocaleDateString() }); // Title field new Setting(contentEl) - .setName("Title") - .setDesc("Title for your timeblock") + .setName(this.translate("modals.timeblockCreation.titleLabel")) + .setDesc(this.translate("modals.timeblockCreation.titleDesc")) .addText((text) => { this.titleInput = text.inputEl; - text.setPlaceholder("e.g., Deep work session") + text.setPlaceholder(this.translate("modals.timeblockCreation.titlePlaceholder")) .setValue(this.options.prefilledTitle || "") .onChange(() => this.validateForm()); // Focus on title input @@ -79,22 +82,22 @@ export class TimeblockCreationModal extends Modal { const timeContainer = contentEl.createDiv({ cls: "timeblock-time-container" }); new Setting(timeContainer) - .setName("Start time") - .setDesc("When the timeblock starts") + .setName(this.translate("modals.timeblockCreation.startTimeLabel")) + .setDesc(this.translate("modals.timeblockCreation.startTimeDesc")) .addText((text) => { this.startTimeInput = text.inputEl; - text.setPlaceholder("09:00") + text.setPlaceholder(this.translate("modals.timeblockCreation.startTimePlaceholder")) .setValue(this.options.startTime || "") .onChange(() => this.validateForm()); this.startTimeInput.type = "time"; }); new Setting(timeContainer) - .setName("End time") - .setDesc("When the timeblock ends") + .setName(this.translate("modals.timeblockCreation.endTimeLabel")) + .setDesc(this.translate("modals.timeblockCreation.endTimeDesc")) .addText((text) => { this.endTimeInput = text.inputEl; - text.setPlaceholder("11:00") + text.setPlaceholder(this.translate("modals.timeblockCreation.endTimePlaceholder")) .setValue(this.options.endTime || "") .onChange(() => this.validateForm()); this.endTimeInput.type = "time"; @@ -102,32 +105,32 @@ export class TimeblockCreationModal extends Modal { // Description (optional) new Setting(contentEl) - .setName("Description") - .setDesc("Optional description for the timeblock") + .setName(this.translate("modals.timeblockCreation.descriptionLabel")) + .setDesc(this.translate("modals.timeblockCreation.descriptionDesc")) .addTextArea((text) => { this.descriptionInput = text.inputEl; - text.setPlaceholder("Focus on new features, no interruptions").setValue(""); + text.setPlaceholder(this.translate("modals.timeblockCreation.descriptionPlaceholder")).setValue(""); this.descriptionInput.rows = 3; }); // Color (optional) new Setting(contentEl) - .setName("Color") - .setDesc("Optional color for the timeblock") + .setName(this.translate("modals.timeblockCreation.colorLabel")) + .setDesc(this.translate("modals.timeblockCreation.colorDesc")) .addText((text) => { this.colorInput = text.inputEl; - text.setPlaceholder("#3b82f6").setValue("#6366f1"); // Default indigo color + text.setPlaceholder(this.translate("modals.timeblockCreation.colorPlaceholder")).setValue("#6366f1"); // Default indigo color this.colorInput.type = "color"; }); // Attachments (optional) new Setting(contentEl) - .setName("Attachments") - .setDesc("Files or notes to link to this timeblock") + .setName(this.translate("modals.timeblockCreation.attachmentsLabel")) + .setDesc(this.translate("modals.timeblockCreation.attachmentsDesc")) .addButton((button) => { button - .setButtonText("Add Attachment") - .setTooltip("Select a file or note using fuzzy search") + .setButtonText(this.translate("modals.timeblockCreation.addAttachmentButton")) + .setTooltip(this.translate("modals.timeblockCreation.addAttachmentTooltip")) .onClick(() => { const modal = new AttachmentSelectModal(this.app, this.plugin, (file) => { this.addAttachment(file); @@ -143,11 +146,11 @@ export class TimeblockCreationModal extends Modal { // Buttons const buttonContainer = contentEl.createDiv({ cls: "timeblock-modal-buttons" }); - const cancelButton = buttonContainer.createEl("button", { text: "Cancel" }); + const cancelButton = buttonContainer.createEl("button", { text: this.translate("common.cancel") }); cancelButton.addEventListener("click", () => this.close()); const createButton = buttonContainer.createEl("button", { - text: "Create timeblock", + text: this.translate("modals.timeblockCreation.createButton"), cls: "mod-cta timeblock-create-button", }); createButton.addEventListener("click", () => this.handleSubmit()); @@ -194,7 +197,7 @@ export class TimeblockCreationModal extends Modal { const description = this.descriptionInput.value.trim(); const color = this.colorInput.value; if (!title || !startTime || !endTime) { - new Notice("Please fill in all required fields"); + new Notice(this.translate("notices.timeblockRequiredFieldsMissing")); return; } @@ -308,13 +311,13 @@ export class TimeblockCreationModal extends Modal { private addAttachment(file: TAbstractFile): void { // Avoid duplicates if (this.selectedAttachments.some((existing) => existing.path === file.path)) { - new Notice(`"${file.name}" is already attached`); + new Notice(this.translate("notices.timeblockAttachmentExists", { fileName: file.name })); return; } this.selectedAttachments.push(file); this.renderAttachmentsList(); - new Notice(`Added "${file.name}" as attachment`); + new Notice(this.translate("notices.timeblockAttachmentAdded", { fileName: file.name })); } private removeAttachment(file: TAbstractFile): void { @@ -322,7 +325,7 @@ export class TimeblockCreationModal extends Modal { (existing) => existing.path !== file.path ); this.renderAttachmentsList(); - new Notice(`Removed "${file.name}" from attachments`); + new Notice(this.translate("notices.timeblockAttachmentRemoved", { fileName: file.name })); } private renderAttachmentsList(): void { diff --git a/src/modals/TimeblockInfoModal.ts b/src/modals/TimeblockInfoModal.ts index ce88db63..52dc7f15 100644 --- a/src/modals/TimeblockInfoModal.ts +++ b/src/modals/TimeblockInfoModal.ts @@ -17,6 +17,7 @@ import { appHasDailyNotesPluginLoaded, } from "obsidian-daily-notes-interface"; import { formatDateForStorage } from "../utils/dateUtils"; +import { TranslationKey } from "../i18n"; export interface TimeBlock { title: string; @@ -37,6 +38,7 @@ export class TimeblockInfoModal extends Modal { private timeblockDate: string; private plugin: TaskNotesPlugin; private originalTimeblock: TimeBlock; + private translate: (key: TranslationKey, variables?: Record) => string; // Form fields private titleInput: HTMLInputElement; @@ -60,6 +62,7 @@ export class TimeblockInfoModal extends Modal { this.originalTimeblock = timeblock; // Keep original for comparison this.eventDate = eventDate; this.timeblockDate = timeblockDate || formatDateForStorage(eventDate); + this.translate = plugin.i18n.translate.bind(plugin.i18n); } async onOpen() { @@ -67,32 +70,32 @@ export class TimeblockInfoModal extends Modal { contentEl.empty(); contentEl.addClass("timeblock-info-modal"); - new Setting(contentEl).setName("Edit Timeblock").setHeading(); + new Setting(contentEl).setName(this.translate("modals.timeblockInfo.editHeading")).setHeading(); // Date and time display (read-only) const dateDisplay = contentEl.createDiv({ cls: "timeblock-date-display" }); - dateDisplay.createEl("strong", { text: "Date & Time: " }); + dateDisplay.createEl("strong", { text: this.translate("modals.timeblockInfo.dateTimeLabel") }); const dateText = `${this.eventDate.toLocaleDateString()} from ${this.timeblock.startTime} to ${this.timeblock.endTime}`; dateDisplay.createSpan({ text: dateText }); // Title field (editable) new Setting(contentEl) - .setName("Title") - .setDesc("Title for your timeblock") + .setName(this.translate("modals.timeblockInfo.titleLabel")) + .setDesc(this.translate("modals.timeblockInfo.titleDesc")) .addText((text) => { this.titleInput = text.inputEl; - text.setPlaceholder("e.g., Deep work session") + text.setPlaceholder(this.translate("modals.timeblockInfo.titlePlaceholder")) .setValue(this.timeblock.title || "") .onChange(() => this.validateForm()); }); // Description (editable) new Setting(contentEl) - .setName("Description") - .setDesc("Optional description for the timeblock") + .setName(this.translate("modals.timeblockInfo.descriptionLabel")) + .setDesc(this.translate("modals.timeblockInfo.descriptionDesc")) .addTextArea((text) => { this.descriptionInput = text.inputEl; - text.setPlaceholder("Focus on new features, no interruptions").setValue( + text.setPlaceholder(this.translate("modals.timeblockInfo.descriptionPlaceholder")).setValue( this.timeblock.description || "" ); this.descriptionInput.rows = 3; @@ -100,22 +103,22 @@ export class TimeblockInfoModal extends Modal { // Color (editable) new Setting(contentEl) - .setName("Color") - .setDesc("Optional color for the timeblock") + .setName(this.translate("modals.timeblockInfo.colorLabel")) + .setDesc(this.translate("modals.timeblockInfo.colorDesc")) .addText((text) => { this.colorInput = text.inputEl; - text.setPlaceholder("#3b82f6").setValue(this.timeblock.color || "#6366f1"); + text.setPlaceholder(this.translate("modals.timeblockInfo.colorPlaceholder")).setValue(this.timeblock.color || "#6366f1"); this.colorInput.type = "color"; }); // Attachments (editable) new Setting(contentEl) - .setName("Attachments") - .setDesc("Files or notes linked to this timeblock") + .setName(this.translate("modals.timeblockInfo.attachmentsLabel")) + .setDesc(this.translate("modals.timeblockInfo.attachmentsDesc")) .addButton((button) => { button - .setButtonText("Add Attachment") - .setTooltip("Select a file or note using fuzzy search") + .setButtonText(this.translate("modals.timeblockInfo.addAttachmentButton")) + .setTooltip(this.translate("modals.timeblockInfo.addAttachmentTooltip")) .onClick(() => { const modal = new AttachmentSelectModal(this.app, this.plugin, (file) => { this.addAttachment(file); @@ -140,7 +143,7 @@ export class TimeblockInfoModal extends Modal { // Delete button (left side) const deleteButton = buttonContainer.createEl("button", { - text: "Delete Timeblock", + text: this.translate("modals.timeblockInfo.deleteButton"), cls: "mod-warning timeblock-delete-button", }); deleteButton.addEventListener("click", () => this.handleDelete()); @@ -150,11 +153,11 @@ export class TimeblockInfoModal extends Modal { rightButtons.style.display = "flex"; rightButtons.style.gap = "8px"; - const cancelButton = rightButtons.createEl("button", { text: "Cancel" }); + const cancelButton = rightButtons.createEl("button", { text: this.translate("common.cancel") }); cancelButton.addEventListener("click", () => this.close()); const saveButton = rightButtons.createEl("button", { - text: "Save Changes", + text: this.translate("modals.timeblockInfo.saveButton"), cls: "mod-cta timeblock-save-button", }); saveButton.addEventListener("click", () => this.handleSave()); @@ -196,13 +199,13 @@ export class TimeblockInfoModal extends Modal { private addAttachment(file: TAbstractFile): void { // Avoid duplicates if (this.selectedAttachments.some((existing) => existing.path === file.path)) { - new Notice(`"${file.name}" is already attached`); + new Notice(this.translate("notices.timeblockAttachmentExists", { fileName: file.name })); return; } this.selectedAttachments.push(file); this.renderAttachmentsList(); - new Notice(`Added "${file.name}" as attachment`); + new Notice(this.translate("notices.timeblockAttachmentAdded", { fileName: file.name })); } private removeAttachment(file: TAbstractFile): void { @@ -210,14 +213,14 @@ export class TimeblockInfoModal extends Modal { (existing) => existing.path !== file.path ); this.renderAttachmentsList(); - new Notice(`Removed "${file.name}" from attachments`); + new Notice(this.translate("notices.timeblockAttachmentRemoved", { fileName: file.name })); } private openAttachment(file: TAbstractFile): void { if (file instanceof TFile) { this.app.workspace.getLeaf(false).openFile(file); } else { - new Notice(`Cannot open "${file.name}" - file type not supported`); + new Notice(this.translate("notices.timeblockFileTypeNotSupported", { fileName: file.name })); } } @@ -271,7 +274,7 @@ export class TimeblockInfoModal extends Modal { // Validate inputs const title = this.titleInput.value.trim(); if (!title) { - new Notice("Please enter a title for the timeblock"); + new Notice(this.translate("notices.timeblockTitleRequired")); return; } @@ -292,11 +295,11 @@ export class TimeblockInfoModal extends Modal { // Refresh calendar views this.plugin.emitter.trigger("data-changed"); - new Notice(`Timeblock "${title}" updated successfully`); + new Notice(this.translate("notices.timeblockUpdatedSuccess", { title })); this.close(); } catch (error) { console.error("Error updating timeblock:", error); - new Notice("Failed to update timeblock. Check console for details."); + new Notice(this.translate("notices.timeblockUpdateFailed")); } } @@ -377,18 +380,18 @@ export class TimeblockInfoModal extends Modal { // Refresh calendar views this.plugin.emitter.trigger("data-changed"); - new Notice(`Timeblock "${this.timeblock.title}" deleted successfully`); + new Notice(this.translate("notices.timeblockDeletedSuccess", { title: this.timeblock.title })); this.close(); } catch (error) { console.error("Error deleting timeblock:", error); - new Notice("Failed to delete timeblock. Check console for details."); + new Notice(this.translate("notices.timeblockDeleteFailed")); } } private async showDeleteConfirmation(): Promise { return new Promise((resolve) => { const modal = new Modal(this.app); - modal.titleEl.setText("Delete Timeblock"); + modal.titleEl.setText(this.translate("modals.timeblockInfo.deleteConfirmationTitle")); const content = modal.contentEl; content.createEl("p", { @@ -405,7 +408,7 @@ export class TimeblockInfoModal extends Modal { buttonContainer.style.gap = "8px"; buttonContainer.style.marginTop = "20px"; - const cancelBtn = buttonContainer.createEl("button", { text: "Cancel" }); + const cancelBtn = buttonContainer.createEl("button", { text: this.translate("common.cancel") }); cancelBtn.addEventListener("click", () => { modal.close(); resolve(false); diff --git a/src/services/OAuthService.ts b/src/services/OAuthService.ts index cb019447..c7a6445b 100644 --- a/src/services/OAuthService.ts +++ b/src/services/OAuthService.ts @@ -280,6 +280,7 @@ export class OAuthService { let cancelled = false; const modal = new DeviceCodeModal( this.plugin.app, + this.plugin, { userCode: user_code, verificationUrl: verification_uri, diff --git a/src/ui/FilterBar.ts b/src/ui/FilterBar.ts index 6555c439..a49929d7 100644 --- a/src/ui/FilterBar.ts +++ b/src/ui/FilterBar.ts @@ -2172,7 +2172,8 @@ export class FilterBar extends EventEmitter { (this.currentQuery as any).subgroupKey = key as any; this.emitImmediateQueryChange(); this.updateDisplaySection(); - } + }, + this.plugin ); // Show menu at mouse position diff --git a/src/views/AgendaView.ts b/src/views/AgendaView.ts index e3209131..d65bbcf9 100644 --- a/src/views/AgendaView.ts +++ b/src/views/AgendaView.ts @@ -660,7 +660,7 @@ export class AgendaView extends ItemView implements OptimizedView { { value: "7", text: "7 days" }, { value: "14", text: "14 days" }, { value: "30", text: "30 days" }, - { value: "week", text: "This week" }, + { value: "week", text: this.translate("views.agenda.periods.thisWeek") }, ]; periods.forEach((period) => { @@ -1258,10 +1258,10 @@ export class AgendaView extends ItemView implements OptimizedView { cls: "agenda-view__empty-description", }); const tipMessage = emptyMessage.createEl("p", { cls: "agenda-view__empty-tip" }); - tipMessage.createEl("span", { text: "Tip: " }); + tipMessage.createEl("span", { text: this.translate("views.agenda.tipPrefix") }); tipMessage.appendChild( document.createTextNode( - "Create tasks with due or scheduled dates, or add notes to see them here." + this.translate("views.agenda.empty.helpText") ) ); return; diff --git a/src/views/KanbanView.ts b/src/views/KanbanView.ts index 26130ad6..f6107998 100644 --- a/src/views/KanbanView.ts +++ b/src/views/KanbanView.ts @@ -1158,7 +1158,7 @@ export class KanbanView extends ItemView implements OptimizedView { "no-date", ]; if (sentinelValues.includes(id)) { - return "Uncategorized"; + return this.plugin.i18n.translate("views.kanban.uncategorized"); } return id; } @@ -1169,10 +1169,10 @@ export class KanbanView extends ItemView implements OptimizedView { case "priority": return this.plugin.priorityManager.getPriorityConfig(id)?.label || id; case "context": - return id === "uncategorized" ? "Uncategorized" : `@${id}`; + return id === "uncategorized" ? this.plugin.i18n.translate("views.kanban.uncategorized") : `@${id}`; case "project": if (id === "No Project") { - return "No Project"; + return this.plugin.i18n.translate("views.kanban.noProject"); } // For project paths, display the absolute path return id; diff --git a/src/views/NotesView.ts b/src/views/NotesView.ts index 2cf37d65..2f88f10c 100644 --- a/src/views/NotesView.ts +++ b/src/views/NotesView.ts @@ -126,11 +126,11 @@ export class NotesView extends ItemView { // Add refresh button const refreshButton = actionsContainer.createEl("button", { - text: "Refresh", + text: this.plugin.i18n.translate("views.notes.refreshButton"), cls: "notes-view__refresh-button", attr: { - "aria-label": "Refresh notes list", - title: "Refresh notes list", + "aria-label": this.plugin.i18n.translate("views.notes.refreshButtonAriaLabel"), + title: this.plugin.i18n.translate("views.notes.refreshButtonAriaLabel"), }, }); @@ -141,7 +141,7 @@ export class NotesView extends ItemView { refreshButton.classList.add("is-loading"); refreshButton.disabled = true; const originalText = refreshButton.textContent; - refreshButton.textContent = this.plugin.i18n.translate("views.notes.refreshButton"); + refreshButton.textContent = this.plugin.i18n.translate("views.notes.refreshingButton"); try { // Force refresh through CacheManager @@ -160,7 +160,7 @@ export class NotesView extends ItemView { // Add loading indicator this.loadingIndicator = notesList.createDiv({ cls: "notes-view__loading is-hidden" }); - this.loadingIndicator.createSpan({ text: "Loading notes..." }); + this.loadingIndicator.createSpan({ text: this.plugin.i18n.translate("views.notes.loading") }); // Show loading state this.isNotesLoading = true; @@ -192,7 +192,7 @@ export class NotesView extends ItemView { .setName(this.plugin.i18n.translate("views.notes.empty.noNotesFound")) .setHeading(); emptyState.createEl("p", { - text: "No notes found for the selected date. Try selecting a different date in the Mini Calendar view or create some notes.", + text: this.plugin.i18n.translate("views.notes.empty.helpText"), cls: "notes-view__empty-description", }); } diff --git a/src/views/StatsView.ts b/src/views/StatsView.ts index 379486ca..626cdd5d 100644 --- a/src/views/StatsView.ts +++ b/src/views/StatsView.ts @@ -166,7 +166,7 @@ export class StatsView extends ItemView { // Refresh button const refreshButton = header.createEl("button", { cls: "stats-refresh-button stats-view__refresh-button", - text: "Refresh", + text: this.plugin.i18n.translate("views.stats.refreshButton"), }); this.registerDomEvent(refreshButton, "click", () => { this.refreshStats(); @@ -643,9 +643,10 @@ export class StatsView extends ItemView { } // Sort by total time spent descending, with "No Project" at the end (like FilterService) + const noProjectLabel = this.plugin.i18n.translate("views.stats.noProject"); projectStats.sort((a, b) => { - if (a.projectName === "No Project") return 1; - if (b.projectName === "No Project") return -1; + if (a.projectName === noProjectLabel) return 1; + if (b.projectName === noProjectLabel) return -1; return b.totalTimeSpent - a.totalTimeSpent; }); @@ -672,11 +673,11 @@ export class StatsView extends ItemView { cls: "stats-view__filter-select", }); const dateOptions = [ - { value: "all", text: "All Time" }, - { value: "7days", text: "Last 7 Days" }, - { value: "30days", text: "Last 30 Days" }, - { value: "90days", text: "Last 90 Days" }, - { value: "custom", text: "Custom Range" }, + { value: "all", text: this.plugin.i18n.translate("views.stats.timeRanges.allTime") }, + { value: "7days", text: this.plugin.i18n.translate("views.stats.timeRanges.last7Days") }, + { value: "30days", text: this.plugin.i18n.translate("views.stats.timeRanges.last30Days") }, + { value: "90days", text: this.plugin.i18n.translate("views.stats.timeRanges.last90Days") }, + { value: "custom", text: this.plugin.i18n.translate("views.stats.timeRanges.customRange") }, ]; for (const option of dateOptions) { @@ -723,7 +724,7 @@ export class StatsView extends ItemView { const resetButton = buttonsContainer.createEl("button", { cls: "stats-view__filter-button stats-view__filter-button--reset", - text: "Reset Filters", + text: this.plugin.i18n.translate("views.stats.resetFiltersButton"), }); this.registerDomEvent(resetButton, "click", () => { @@ -752,7 +753,7 @@ export class StatsView extends ItemView { const startDateContainer = customDatesContainer.createDiv({ cls: "stats-view__date-input-container", }); - startDateContainer.createDiv({ cls: "stats-view__date-label", text: "From" }); + startDateContainer.createDiv({ cls: "stats-view__date-label", text: this.plugin.i18n.translate("views.stats.dateRangeFrom") }); const startInput = startDateContainer.createEl("input", { cls: "stats-view__date-input", type: "date", @@ -762,7 +763,7 @@ export class StatsView extends ItemView { const endDateContainer = customDatesContainer.createDiv({ cls: "stats-view__date-input-container", }); - endDateContainer.createDiv({ cls: "stats-view__date-label", text: "To" }); + endDateContainer.createDiv({ cls: "stats-view__date-label", text: this.plugin.i18n.translate("views.stats.dateRangeTo") }); const endInput = endDateContainer.createEl("input", { cls: "stats-view__date-input", type: "date", @@ -817,7 +818,7 @@ export class StatsView extends ItemView { private getTaskProjects(task: TaskInfo): string[] { try { if (!task || !Array.isArray(task.projects)) { - return ["No Project"]; + return [this.plugin.i18n.translate("views.stats.noProject")]; } const filteredProjects = filterEmptyProjects(task.projects); @@ -826,9 +827,9 @@ export class StatsView extends ItemView { .map((project) => this.consolidateProjectName(project)) .filter((project) => typeof project === "string" && project.length > 0); } - return ["No Project"]; + return [this.plugin.i18n.translate("views.stats.noProject")]; } catch (error) { - return ["No Project"]; + return [this.plugin.i18n.translate("views.stats.noProject")]; } } @@ -892,7 +893,7 @@ export class StatsView extends ItemView { totalTimeValue.textContent = `${formatTime(stats.totalTimeSpent)} / ${formatTime(stats.totalTimeEstimate)}`; totalTimeCard.createDiv({ cls: "overview-label stats-view__overview-label", - text: "Time Tracked / Estimated", + text: this.plugin.i18n.translate("views.stats.cards.timeTrackedEstimated"), }); // Total Tasks @@ -905,7 +906,7 @@ export class StatsView extends ItemView { totalTasksValue.textContent = stats.totalTasks.toString(); totalTasksCard.createDiv({ cls: "overview-label stats-view__overview-label", - text: "Total Tasks", + text: this.plugin.i18n.translate("views.stats.cards.totalTasks"), }); // Completion Rate @@ -918,7 +919,7 @@ export class StatsView extends ItemView { completionValue.textContent = `${Math.round(stats.completionRate)}%`; completionCard.createDiv({ cls: "overview-label stats-view__overview-label", - text: "Completion Rate", + text: this.plugin.i18n.translate("views.stats.cards.completionRate"), }); // Active Projects @@ -931,7 +932,7 @@ export class StatsView extends ItemView { projectsValue.textContent = stats.activeProjects.toString(); projectsCard.createDiv({ cls: "overview-label stats-view__overview-label", - text: "Active Projects", + text: this.plugin.i18n.translate("views.stats.cards.activeProjects"), }); // Average Time per Task @@ -944,7 +945,7 @@ export class StatsView extends ItemView { avgTimeValue.textContent = formatTime(stats.avgTimePerTask); avgTimeCard.createDiv({ cls: "overview-label stats-view__overview-label", - text: "Avg Time per Task", + text: this.plugin.i18n.translate("views.stats.cards.avgTimePerTask"), }); } @@ -966,7 +967,7 @@ export class StatsView extends ItemView { }); timeCard.createDiv({ cls: "stat-label stats-view__stat-label", - text: "Time Tracked / Estimated", + text: this.plugin.i18n.translate("views.stats.cards.timeTrackedEstimated"), }); // Tasks @@ -975,7 +976,7 @@ export class StatsView extends ItemView { cls: "stat-value stats-view__stat-value", text: stats.overall.totalTasks.toString(), }); - tasksCard.createDiv({ cls: "stat-label stats-view__stat-label", text: "Tasks" }); + tasksCard.createDiv({ cls: "stat-label stats-view__stat-label", text: this.plugin.i18n.translate("views.stats.labels.tasks") }); // Completed const completedCard = container.createDiv({ cls: "stats-stat-card stats-view__stat-card" }); @@ -983,7 +984,7 @@ export class StatsView extends ItemView { cls: "stat-value stats-view__stat-value", text: stats.overall.completedTasks.toString(), }); - completedCard.createDiv({ cls: "stat-label stats-view__stat-label", text: "Completed" }); + completedCard.createDiv({ cls: "stat-label stats-view__stat-label", text: this.plugin.i18n.translate("views.stats.labels.completed") }); // Projects const projectsCard = container.createDiv({ cls: "stats-stat-card stats-view__stat-card" }); @@ -991,7 +992,7 @@ export class StatsView extends ItemView { cls: "stat-value stats-view__stat-value", text: stats.overall.activeProjects.toString(), }); - projectsCard.createDiv({ cls: "stat-label stats-view__stat-label", text: "Projects" }); + projectsCard.createDiv({ cls: "stat-label stats-view__stat-label", text: this.plugin.i18n.translate("views.stats.labels.projects") }); } private async renderProjectStats(container: HTMLElement, projects: ProjectStats[]) { @@ -1000,7 +1001,7 @@ export class StatsView extends ItemView { if (projects.length === 0) { container.createDiv({ cls: "stats-no-data stats-view__no-data", - text: "No project data available", + text: this.plugin.i18n.translate("views.stats.noProjectData"), }); return; } @@ -1013,12 +1014,12 @@ export class StatsView extends ItemView { }; const formatDate = (dateString?: string): string => { - if (!dateString) return "N/A"; + if (!dateString) return this.plugin.i18n.translate("views.stats.notAvailable"); try { const date = new Date(dateString); return format(date, "MMM d, yyyy"); } catch { - return "N/A"; + return this.plugin.i18n.translate("views.stats.notAvailable"); } }; @@ -1030,7 +1031,7 @@ export class StatsView extends ItemView { ]; // Add special class for "No Project" items - if (project.projectName === "No Project") { + if (project.projectName === this.plugin.i18n.translate("views.stats.noProject")) { projectClasses.push("stats-view__project-item--no-project"); } @@ -1319,7 +1320,7 @@ export class StatsView extends ItemView { // Modal content const content = modal.createDiv({ cls: "stats-view__modal-content" }); - content.textContent = "Loading..."; + content.textContent = this.plugin.i18n.translate("views.stats.loading"); // Event handlers this.registerDomEvent(closeBtn, "click", () => this.closeDrilldownModal()); @@ -1343,7 +1344,7 @@ export class StatsView extends ItemView { this.renderDrilldownContent(content, drilldownData); } catch (error) { console.error("Error loading drill-down data:", error); - content.textContent = "Error loading project details."; + content.textContent = this.plugin.i18n.translate("notices.statsLoadingFailed"); } } @@ -1568,9 +1569,9 @@ export class StatsView extends ItemView { // Add filter controls for tasks const taskFilters = tasksHeaderContainer.createDiv({ cls: "stats-view__task-filters" }); const statusFilter = taskFilters.createEl("select", { cls: "stats-view__filter-select" }); - statusFilter.createEl("option", { value: "all", text: "All Tasks" }); - statusFilter.createEl("option", { value: "active", text: "Active Only" }); - statusFilter.createEl("option", { value: "completed", text: "Completed Only" }); + statusFilter.createEl("option", { value: "all", text: this.plugin.i18n.translate("views.stats.filters.allTasks") }); + statusFilter.createEl("option", { value: "active", text: this.plugin.i18n.translate("views.stats.filters.activeOnly") }); + statusFilter.createEl("option", { value: "completed", text: this.plugin.i18n.translate("views.stats.filters.completedOnly") }); const taskList = tasksSection.createDiv({ cls: "stats-view__task-list" }); @@ -1612,7 +1613,7 @@ export class StatsView extends ItemView { }); if (filteredTasks.length === 0) { - taskList.createDiv({ cls: "stats-view__no-data", text: "No tasks found" }); + taskList.createDiv({ cls: "stats-view__no-data", text: this.plugin.i18n.translate("views.stats.noTasks") }); return; } diff --git a/src/views/TaskListView.ts b/src/views/TaskListView.ts index 1a86c6e2..aecee77e 100644 --- a/src/views/TaskListView.ts +++ b/src/views/TaskListView.ts @@ -754,7 +754,7 @@ export class TaskListView extends ItemView implements OptimizedView { if (totalTasks === 0) { container.empty(); this.taskElements.clear(); - container.createEl("p", { text: "No tasks found for the selected filters." }); + container.createEl("p", { text: this.plugin.i18n.translate("views.taskList.noTasksFound") }); return; }