mirror of
https://github.com/callumalpass/tasknotes.git
synced 2026-07-22 12:50:26 +00:00
feat: add translations for Bases Calendar features in all languages
Add translations for the new Bases Calendar features in all supported languages: - French (fr): Complete translations for calendar views, timeblocks, and context menus - Spanish (es): Complete translations for calendar views, timeblocks, and context menus - German (de): Complete translations for calendar views, timeblocks, and context menus - Japanese (ja): Complete translations for calendar views, timeblocks, and context menus - Russian (ru): Complete translations for calendar views, timeblocks, and context menus - Chinese (zh): Complete translations for calendar views, timeblocks, and context menus All translations include: - Bases Calendar view labels and buttons - Advanced Calendar filters and view options - Timeblock operations (create, move, resize) - Time entry management - Context menu items - Error messages and notices - Property event card labels Updated i18n.state.json to reflect all translations are current.
This commit is contained in:
parent
39d682383c
commit
808e5a31fb
7 changed files with 1662 additions and 306 deletions
1530
i18n.state.json
1530
i18n.state.json
File diff suppressed because it is too large
Load diff
|
|
@ -90,6 +90,76 @@ export const de: TranslationTree = {
|
|||
},
|
||||
advancedCalendar: {
|
||||
title: "Erweiterter Kalender",
|
||||
filters: {
|
||||
showFilters: "Filter anzeigen",
|
||||
hideFilters: "Filter ausblenden",
|
||||
},
|
||||
viewOptions: {
|
||||
calendarSubscriptions: "Kalenderabonnements",
|
||||
timeEntries: "Zeiteinträge",
|
||||
timeblocks: "Zeitblöcke",
|
||||
scheduledDates: "Geplante Termine",
|
||||
dueDates: "Fälligkeitstermine",
|
||||
allDaySlot: "Ganztägiger Slot",
|
||||
scheduledTasks: "Geplante Aufgaben",
|
||||
recurringTasks: "Wiederkehrende Aufgaben",
|
||||
},
|
||||
buttons: {
|
||||
refresh: "Aktualisieren",
|
||||
refreshHint: "Kalenderabonnements aktualisieren",
|
||||
},
|
||||
notices: {
|
||||
icsServiceNotAvailable: "ICS-Abonnementdienst nicht verfügbar",
|
||||
calendarRefreshedAll: "Alle Kalenderabonnements wurden erfolgreich aktualisiert",
|
||||
refreshFailed: "Einige Kalenderabonnements konnten nicht aktualisiert werden",
|
||||
timeblockSpecificTime:
|
||||
"Zeitblöcke müssen spezifische Zeiten haben. Bitte wählen Sie einen Zeitbereich in der Wochen- oder Tagesansicht.",
|
||||
timeblockMoved: 'Zeitblock "{title}" wurde nach {date} verschoben',
|
||||
timeblockUpdated: 'Zeit des Zeitblocks "{title}" aktualisiert',
|
||||
timeblockMoveFailed: "Fehler beim Verschieben des Zeitblocks: {message}",
|
||||
timeblockResized: 'Dauer des Zeitblocks "{title}" aktualisiert',
|
||||
timeblockResizeFailed: "Fehler beim Ändern der Zeitblockgröße: {message}",
|
||||
taskScheduled: 'Aufgabe "{title}" für {date} geplant',
|
||||
scheduleTaskFailed: "Fehler beim Planen der Aufgabe",
|
||||
endTimeAfterStart: "Endzeit muss nach der Startzeit liegen",
|
||||
timeEntryNotFound: "Zeiteintrag nicht gefunden",
|
||||
timeEntryDeleted: "Zeiteintrag gelöscht",
|
||||
deleteTimeEntryFailed: "Fehler beim Löschen des Zeiteintrags",
|
||||
},
|
||||
timeEntry: {
|
||||
estimatedSuffix: "geschätzt",
|
||||
trackedSuffix: "erfasst",
|
||||
recurringPrefix: "Wiederkehrend: ",
|
||||
completedPrefix: "Abgeschlossen: ",
|
||||
createdPrefix: "Erstellt: ",
|
||||
modifiedPrefix: "Geändert: ",
|
||||
duePrefix: "Fällig: ",
|
||||
scheduledPrefix: "Geplant: ",
|
||||
},
|
||||
contextMenus: {
|
||||
openTask: "Aufgabe öffnen",
|
||||
deleteTimeEntry: "Zeiteintrag löschen",
|
||||
deleteTimeEntryTitle: "Zeiteintrag löschen",
|
||||
deleteTimeEntryConfirm:
|
||||
"Möchten Sie diesen Zeiteintrag{duration} wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.",
|
||||
deleteButton: "Löschen",
|
||||
cancelButton: "Abbrechen",
|
||||
},
|
||||
},
|
||||
basesCalendar: {
|
||||
title: "Bases-Kalender",
|
||||
today: "Heute",
|
||||
buttonText: {
|
||||
month: "M",
|
||||
week: "W",
|
||||
day: "T",
|
||||
year: "J",
|
||||
list: "L",
|
||||
customDays: "{count}T",
|
||||
},
|
||||
errors: {
|
||||
failedToInitialize: "Fehler beim Initialisieren des Kalenders",
|
||||
},
|
||||
},
|
||||
kanban: {
|
||||
title: "Kanban",
|
||||
|
|
@ -2097,6 +2167,9 @@ export const de: TranslationTree = {
|
|||
blockingEmpty: "Keine abhängigen Aufgaben",
|
||||
blockingLoadError: "Abhängigkeiten konnten nicht geladen werden",
|
||||
},
|
||||
propertyEventCard: {
|
||||
unknownFile: "Unbekannte Datei",
|
||||
},
|
||||
filterHeading: {
|
||||
allViewName: "Alle",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -90,6 +90,76 @@ export const es: TranslationTree = {
|
|||
},
|
||||
advancedCalendar: {
|
||||
title: "Calendario Avanzado",
|
||||
filters: {
|
||||
showFilters: "Mostrar filtros",
|
||||
hideFilters: "Ocultar filtros",
|
||||
},
|
||||
viewOptions: {
|
||||
calendarSubscriptions: "Suscripciones de calendario",
|
||||
timeEntries: "Entradas de tiempo",
|
||||
timeblocks: "Bloques de tiempo",
|
||||
scheduledDates: "Fechas programadas",
|
||||
dueDates: "Fechas de vencimiento",
|
||||
allDaySlot: "Espacio de día completo",
|
||||
scheduledTasks: "Tareas programadas",
|
||||
recurringTasks: "Tareas recurrentes",
|
||||
},
|
||||
buttons: {
|
||||
refresh: "Actualizar",
|
||||
refreshHint: "Actualizar suscripciones de calendario",
|
||||
},
|
||||
notices: {
|
||||
icsServiceNotAvailable: "Servicio de suscripción ICS no disponible",
|
||||
calendarRefreshedAll: "Todas las suscripciones de calendario se actualizaron correctamente",
|
||||
refreshFailed: "Error al actualizar algunas suscripciones de calendario",
|
||||
timeblockSpecificTime:
|
||||
"Los bloques de tiempo deben tener horas específicas. Seleccione un rango de tiempo en la vista de semana o día.",
|
||||
timeblockMoved: 'Bloque de tiempo "{title}" movido a {date}',
|
||||
timeblockUpdated: 'Hora del bloque de tiempo "{title}" actualizada',
|
||||
timeblockMoveFailed: "Error al mover el bloque de tiempo: {message}",
|
||||
timeblockResized: 'Duración del bloque de tiempo "{title}" actualizada',
|
||||
timeblockResizeFailed: "Error al redimensionar el bloque de tiempo: {message}",
|
||||
taskScheduled: 'Tarea "{title}" programada para {date}',
|
||||
scheduleTaskFailed: "Error al programar la tarea",
|
||||
endTimeAfterStart: "La hora de fin debe ser posterior a la hora de inicio",
|
||||
timeEntryNotFound: "Entrada de tiempo no encontrada",
|
||||
timeEntryDeleted: "Entrada de tiempo eliminada",
|
||||
deleteTimeEntryFailed: "Error al eliminar la entrada de tiempo",
|
||||
},
|
||||
timeEntry: {
|
||||
estimatedSuffix: "estimado",
|
||||
trackedSuffix: "registrado",
|
||||
recurringPrefix: "Recurrente: ",
|
||||
completedPrefix: "Completado: ",
|
||||
createdPrefix: "Creado: ",
|
||||
modifiedPrefix: "Modificado: ",
|
||||
duePrefix: "Vence: ",
|
||||
scheduledPrefix: "Programado: ",
|
||||
},
|
||||
contextMenus: {
|
||||
openTask: "Abrir tarea",
|
||||
deleteTimeEntry: "Eliminar entrada de tiempo",
|
||||
deleteTimeEntryTitle: "Eliminar Entrada de Tiempo",
|
||||
deleteTimeEntryConfirm:
|
||||
"¿Estás seguro de que deseas eliminar esta entrada de tiempo{duration}? Esta acción no se puede deshacer.",
|
||||
deleteButton: "Eliminar",
|
||||
cancelButton: "Cancelar",
|
||||
},
|
||||
},
|
||||
basesCalendar: {
|
||||
title: "Calendario Bases",
|
||||
today: "Hoy",
|
||||
buttonText: {
|
||||
month: "M",
|
||||
week: "S",
|
||||
day: "D",
|
||||
year: "A",
|
||||
list: "L",
|
||||
customDays: "{count}D",
|
||||
},
|
||||
errors: {
|
||||
failedToInitialize: "Error al inicializar el calendario",
|
||||
},
|
||||
},
|
||||
kanban: {
|
||||
title: "Kanban",
|
||||
|
|
@ -2100,6 +2170,9 @@ export const es: TranslationTree = {
|
|||
blockingEmpty: "Sin tareas dependientes",
|
||||
blockingLoadError: "No se pudieron cargar las dependencias",
|
||||
},
|
||||
propertyEventCard: {
|
||||
unknownFile: "Archivo desconocido",
|
||||
},
|
||||
filterHeading: {
|
||||
allViewName: "Todos",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -90,6 +90,76 @@ export const fr: TranslationTree = {
|
|||
},
|
||||
advancedCalendar: {
|
||||
title: "Calendrier avancé",
|
||||
filters: {
|
||||
showFilters: "Afficher les filtres",
|
||||
hideFilters: "Masquer les filtres",
|
||||
},
|
||||
viewOptions: {
|
||||
calendarSubscriptions: "Abonnements aux calendriers",
|
||||
timeEntries: "Entrées de temps",
|
||||
timeblocks: "Blocs de temps",
|
||||
scheduledDates: "Dates planifiées",
|
||||
dueDates: "Dates d'échéance",
|
||||
allDaySlot: "Créneau toute la journée",
|
||||
scheduledTasks: "Tâches planifiées",
|
||||
recurringTasks: "Tâches récurrentes",
|
||||
},
|
||||
buttons: {
|
||||
refresh: "Actualiser",
|
||||
refreshHint: "Actualiser les abonnements aux calendriers",
|
||||
},
|
||||
notices: {
|
||||
icsServiceNotAvailable: "Service d'abonnement ICS non disponible",
|
||||
calendarRefreshedAll: "Tous les abonnements aux calendriers ont été actualisés avec succès",
|
||||
refreshFailed: "Échec de l'actualisation de certains abonnements aux calendriers",
|
||||
timeblockSpecificTime:
|
||||
"Les blocs de temps doivent avoir des heures spécifiques. Veuillez sélectionner une plage horaire dans la vue semaine ou jour.",
|
||||
timeblockMoved: 'Bloc de temps "{title}" déplacé vers {date}',
|
||||
timeblockUpdated: 'Horaire du bloc de temps "{title}" mis à jour',
|
||||
timeblockMoveFailed: "Échec du déplacement du bloc de temps : {message}",
|
||||
timeblockResized: 'Durée du bloc de temps "{title}" mise à jour',
|
||||
timeblockResizeFailed: "Échec du redimensionnement du bloc de temps : {message}",
|
||||
taskScheduled: 'Tâche "{title}" planifiée pour {date}',
|
||||
scheduleTaskFailed: "Échec de la planification de la tâche",
|
||||
endTimeAfterStart: "L'heure de fin doit être après l'heure de début",
|
||||
timeEntryNotFound: "Entrée de temps introuvable",
|
||||
timeEntryDeleted: "Entrée de temps supprimée",
|
||||
deleteTimeEntryFailed: "Échec de la suppression de l'entrée de temps",
|
||||
},
|
||||
timeEntry: {
|
||||
estimatedSuffix: "estimé",
|
||||
trackedSuffix: "suivi",
|
||||
recurringPrefix: "Récurrent : ",
|
||||
completedPrefix: "Terminé : ",
|
||||
createdPrefix: "Créé : ",
|
||||
modifiedPrefix: "Modifié : ",
|
||||
duePrefix: "Échéance : ",
|
||||
scheduledPrefix: "Planifié : ",
|
||||
},
|
||||
contextMenus: {
|
||||
openTask: "Ouvrir la tâche",
|
||||
deleteTimeEntry: "Supprimer l'entrée de temps",
|
||||
deleteTimeEntryTitle: "Supprimer l'entrée de temps",
|
||||
deleteTimeEntryConfirm:
|
||||
"Êtes-vous sûr de vouloir supprimer cette entrée de temps{duration} ? Cette action ne peut pas être annulée.",
|
||||
deleteButton: "Supprimer",
|
||||
cancelButton: "Annuler",
|
||||
},
|
||||
},
|
||||
basesCalendar: {
|
||||
title: "Calendrier Bases",
|
||||
today: "Aujourd'hui",
|
||||
buttonText: {
|
||||
month: "M",
|
||||
week: "S",
|
||||
day: "J",
|
||||
year: "A",
|
||||
list: "L",
|
||||
customDays: "{count}J",
|
||||
},
|
||||
errors: {
|
||||
failedToInitialize: "Échec de l'initialisation du calendrier",
|
||||
},
|
||||
},
|
||||
kanban: {
|
||||
title: "Tableau Kanban",
|
||||
|
|
@ -2071,6 +2141,9 @@ export const fr: TranslationTree = {
|
|||
blockingEmpty: "Aucune tâche dépendante",
|
||||
blockingLoadError: "Échec du chargement des dépendances",
|
||||
},
|
||||
propertyEventCard: {
|
||||
unknownFile: "Fichier inconnu",
|
||||
},
|
||||
filterHeading: {
|
||||
allViewName: "Toutes",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -90,6 +90,76 @@ export const ja: TranslationTree = {
|
|||
},
|
||||
advancedCalendar: {
|
||||
title: "高度なカレンダー",
|
||||
filters: {
|
||||
showFilters: "フィルターを表示",
|
||||
hideFilters: "フィルターを非表示",
|
||||
},
|
||||
viewOptions: {
|
||||
calendarSubscriptions: "カレンダー購読",
|
||||
timeEntries: "時間エントリ",
|
||||
timeblocks: "タイムブロック",
|
||||
scheduledDates: "予定日",
|
||||
dueDates: "期限日",
|
||||
allDaySlot: "終日スロット",
|
||||
scheduledTasks: "予定タスク",
|
||||
recurringTasks: "繰り返しタスク",
|
||||
},
|
||||
buttons: {
|
||||
refresh: "更新",
|
||||
refreshHint: "カレンダー購読を更新",
|
||||
},
|
||||
notices: {
|
||||
icsServiceNotAvailable: "ICS購読サービスが利用できません",
|
||||
calendarRefreshedAll: "すべてのカレンダー購読が正常に更新されました",
|
||||
refreshFailed: "一部のカレンダー購読の更新に失敗しました",
|
||||
timeblockSpecificTime:
|
||||
"タイムブロックには具体的な時間が必要です。週表示または日表示で時間範囲を選択してください。",
|
||||
timeblockMoved: 'タイムブロック「{title}」を{date}に移動しました',
|
||||
timeblockUpdated: 'タイムブロック「{title}」の時間を更新しました',
|
||||
timeblockMoveFailed: "タイムブロックの移動に失敗しました:{message}",
|
||||
timeblockResized: 'タイムブロック「{title}」の期間を更新しました',
|
||||
timeblockResizeFailed: "タイムブロックのサイズ変更に失敗しました:{message}",
|
||||
taskScheduled: 'タスク「{title}」を{date}に予定しました',
|
||||
scheduleTaskFailed: "タスクの予定に失敗しました",
|
||||
endTimeAfterStart: "終了時刻は開始時刻より後である必要があります",
|
||||
timeEntryNotFound: "時間エントリが見つかりません",
|
||||
timeEntryDeleted: "時間エントリを削除しました",
|
||||
deleteTimeEntryFailed: "時間エントリの削除に失敗しました",
|
||||
},
|
||||
timeEntry: {
|
||||
estimatedSuffix: "見積",
|
||||
trackedSuffix: "記録",
|
||||
recurringPrefix: "繰り返し:",
|
||||
completedPrefix: "完了:",
|
||||
createdPrefix: "作成:",
|
||||
modifiedPrefix: "変更:",
|
||||
duePrefix: "期限:",
|
||||
scheduledPrefix: "予定:",
|
||||
},
|
||||
contextMenus: {
|
||||
openTask: "タスクを開く",
|
||||
deleteTimeEntry: "時間エントリを削除",
|
||||
deleteTimeEntryTitle: "時間エントリを削除",
|
||||
deleteTimeEntryConfirm:
|
||||
"この時間エントリ{duration}を削除してもよろしいですか?この操作は元に戻せません。",
|
||||
deleteButton: "削除",
|
||||
cancelButton: "キャンセル",
|
||||
},
|
||||
},
|
||||
basesCalendar: {
|
||||
title: "ベースカレンダー",
|
||||
today: "今日",
|
||||
buttonText: {
|
||||
month: "月",
|
||||
week: "週",
|
||||
day: "日",
|
||||
year: "年",
|
||||
list: "一覧",
|
||||
customDays: "{count}日",
|
||||
},
|
||||
errors: {
|
||||
failedToInitialize: "カレンダーの初期化に失敗しました",
|
||||
},
|
||||
},
|
||||
kanban: {
|
||||
title: "かんばん",
|
||||
|
|
@ -1982,6 +2052,9 @@ export const ja: TranslationTree = {
|
|||
blockingEmpty: "依存タスクはありません",
|
||||
blockingLoadError: "依存関係の読み込みに失敗しました",
|
||||
},
|
||||
propertyEventCard: {
|
||||
unknownFile: "不明なファイル",
|
||||
},
|
||||
filterHeading: {
|
||||
allViewName: "すべて",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -90,6 +90,76 @@ export const ru: TranslationTree = {
|
|||
},
|
||||
advancedCalendar: {
|
||||
title: "Расширенный календарь",
|
||||
filters: {
|
||||
showFilters: "Показать фильтры",
|
||||
hideFilters: "Скрыть фильтры",
|
||||
},
|
||||
viewOptions: {
|
||||
calendarSubscriptions: "Подписки на календари",
|
||||
timeEntries: "Временные записи",
|
||||
timeblocks: "Временные блоки",
|
||||
scheduledDates: "Запланированные даты",
|
||||
dueDates: "Сроки выполнения",
|
||||
allDaySlot: "Слот на весь день",
|
||||
scheduledTasks: "Запланированные задачи",
|
||||
recurringTasks: "Повторяющиеся задачи",
|
||||
},
|
||||
buttons: {
|
||||
refresh: "Обновить",
|
||||
refreshHint: "Обновить подписки на календари",
|
||||
},
|
||||
notices: {
|
||||
icsServiceNotAvailable: "Сервис подписки ICS недоступен",
|
||||
calendarRefreshedAll: "Все подписки на календари успешно обновлены",
|
||||
refreshFailed: "Не удалось обновить некоторые подписки на календари",
|
||||
timeblockSpecificTime:
|
||||
"Временные блоки должны иметь конкретное время. Выберите временной диапазон в недельном или дневном виде.",
|
||||
timeblockMoved: 'Временной блок "{title}" перемещен на {date}',
|
||||
timeblockUpdated: 'Время временного блока "{title}" обновлено',
|
||||
timeblockMoveFailed: "Не удалось переместить временной блок: {message}",
|
||||
timeblockResized: 'Длительность временного блока "{title}" обновлена',
|
||||
timeblockResizeFailed: "Не удалось изменить размер временного блока: {message}",
|
||||
taskScheduled: 'Задача "{title}" запланирована на {date}',
|
||||
scheduleTaskFailed: "Не удалось запланировать задачу",
|
||||
endTimeAfterStart: "Время окончания должно быть после времени начала",
|
||||
timeEntryNotFound: "Временная запись не найдена",
|
||||
timeEntryDeleted: "Временная запись удалена",
|
||||
deleteTimeEntryFailed: "Не удалось удалить временную запись",
|
||||
},
|
||||
timeEntry: {
|
||||
estimatedSuffix: "оценка",
|
||||
trackedSuffix: "отслежено",
|
||||
recurringPrefix: "Повторяющаяся: ",
|
||||
completedPrefix: "Завершено: ",
|
||||
createdPrefix: "Создано: ",
|
||||
modifiedPrefix: "Изменено: ",
|
||||
duePrefix: "Срок: ",
|
||||
scheduledPrefix: "Запланировано: ",
|
||||
},
|
||||
contextMenus: {
|
||||
openTask: "Открыть задачу",
|
||||
deleteTimeEntry: "Удалить временную запись",
|
||||
deleteTimeEntryTitle: "Удалить временную запись",
|
||||
deleteTimeEntryConfirm:
|
||||
"Вы уверены, что хотите удалить эту временную запись{duration}? Это действие нельзя отменить.",
|
||||
deleteButton: "Удалить",
|
||||
cancelButton: "Отмена",
|
||||
},
|
||||
},
|
||||
basesCalendar: {
|
||||
title: "Календарь Bases",
|
||||
today: "Сегодня",
|
||||
buttonText: {
|
||||
month: "М",
|
||||
week: "Н",
|
||||
day: "Д",
|
||||
year: "Г",
|
||||
list: "С",
|
||||
customDays: "{count}Д",
|
||||
},
|
||||
errors: {
|
||||
failedToInitialize: "Не удалось инициализировать календарь",
|
||||
},
|
||||
},
|
||||
kanban: {
|
||||
title: "Канбан",
|
||||
|
|
@ -2036,6 +2106,9 @@ export const ru: TranslationTree = {
|
|||
blockingEmpty: "Нет зависимых задач",
|
||||
blockingLoadError: "Не удалось загрузить зависимости",
|
||||
},
|
||||
propertyEventCard: {
|
||||
unknownFile: "Неизвестный файл",
|
||||
},
|
||||
filterHeading: {
|
||||
allViewName: "Все",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -90,6 +90,76 @@ export const zh: TranslationTree = {
|
|||
},
|
||||
advancedCalendar: {
|
||||
title: "高级日历",
|
||||
filters: {
|
||||
showFilters: "显示筛选器",
|
||||
hideFilters: "隐藏筛选器",
|
||||
},
|
||||
viewOptions: {
|
||||
calendarSubscriptions: "日历订阅",
|
||||
timeEntries: "时间条目",
|
||||
timeblocks: "时间块",
|
||||
scheduledDates: "计划日期",
|
||||
dueDates: "截止日期",
|
||||
allDaySlot: "全天时段",
|
||||
scheduledTasks: "计划任务",
|
||||
recurringTasks: "重复任务",
|
||||
},
|
||||
buttons: {
|
||||
refresh: "刷新",
|
||||
refreshHint: "刷新日历订阅",
|
||||
},
|
||||
notices: {
|
||||
icsServiceNotAvailable: "ICS订阅服务不可用",
|
||||
calendarRefreshedAll: "所有日历订阅已成功刷新",
|
||||
refreshFailed: "刷新部分日历订阅失败",
|
||||
timeblockSpecificTime:
|
||||
"时间块必须有具体时间。请在周视图或日视图中选择时间范围。",
|
||||
timeblockMoved: '时间块"{title}"已移动到{date}',
|
||||
timeblockUpdated: '时间块"{title}"的时间已更新',
|
||||
timeblockMoveFailed: "移动时间块失败:{message}",
|
||||
timeblockResized: '时间块"{title}"的持续时间已更新',
|
||||
timeblockResizeFailed: "调整时间块大小失败:{message}",
|
||||
taskScheduled: '任务"{title}"已安排到{date}',
|
||||
scheduleTaskFailed: "安排任务失败",
|
||||
endTimeAfterStart: "结束时间必须晚于开始时间",
|
||||
timeEntryNotFound: "未找到时间条目",
|
||||
timeEntryDeleted: "时间条目已删除",
|
||||
deleteTimeEntryFailed: "删除时间条目失败",
|
||||
},
|
||||
timeEntry: {
|
||||
estimatedSuffix: "预估",
|
||||
trackedSuffix: "已记录",
|
||||
recurringPrefix: "重复:",
|
||||
completedPrefix: "已完成:",
|
||||
createdPrefix: "创建:",
|
||||
modifiedPrefix: "修改:",
|
||||
duePrefix: "截止:",
|
||||
scheduledPrefix: "计划:",
|
||||
},
|
||||
contextMenus: {
|
||||
openTask: "打开任务",
|
||||
deleteTimeEntry: "删除时间条目",
|
||||
deleteTimeEntryTitle: "删除时间条目",
|
||||
deleteTimeEntryConfirm:
|
||||
"确定要删除此时间条目{duration}吗?此操作无法撤销。",
|
||||
deleteButton: "删除",
|
||||
cancelButton: "取消",
|
||||
},
|
||||
},
|
||||
basesCalendar: {
|
||||
title: "Bases日历",
|
||||
today: "今天",
|
||||
buttonText: {
|
||||
month: "月",
|
||||
week: "周",
|
||||
day: "日",
|
||||
year: "年",
|
||||
list: "列表",
|
||||
customDays: "{count}天",
|
||||
},
|
||||
errors: {
|
||||
failedToInitialize: "初始化日历失败",
|
||||
},
|
||||
},
|
||||
kanban: {
|
||||
title: "看板",
|
||||
|
|
@ -1919,6 +1989,9 @@ export const zh: TranslationTree = {
|
|||
blockingEmpty: "没有依赖的任务",
|
||||
blockingLoadError: "无法加载依赖",
|
||||
},
|
||||
propertyEventCard: {
|
||||
unknownFile: "未知文件",
|
||||
},
|
||||
filterHeading: {
|
||||
allViewName: "全部",
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in a new issue