fix(webui): improve automation management

This commit is contained in:
chengyongru
2026-06-14 18:24:59 +08:00
parent 6cf1f8e164
commit 747f0a08c7
15 changed files with 1376 additions and 91 deletions
+59 -4
View File
@@ -469,21 +469,28 @@
"stats": {
"active": "Active",
"paused": "Paused",
"failed": "Failed",
"failed": "Needs attention",
"system": "System"
},
"filters": {
"all": "All",
"active": "Active",
"paused": "Paused",
"failed": "Failed",
"failed": "Needs attention",
"system": "System"
},
"sort": {
"next": "Next run",
"last": "Last run",
"updated": "Updated",
"name": "Name"
},
"search": "Search automation, message, session, or cron expression",
"queue": "Queue",
"loading": "Loading automations...",
"noMatches": "No automations match this view.",
"empty": "No automations yet.",
"emptyHint": "Create one from the chat or channel where it should run so nanobot keeps the right context.",
"oneShot": "One-time",
"systemTask": "System-managed automation",
"labels": {
@@ -495,18 +502,27 @@
"runNow": "Run now",
"pause": "Pause",
"resume": "Resume",
"edit": "Edit",
"delete": "Delete",
"protected": "Protected",
"editTitle": "Edit automation",
"editDescription": "Update the prompt and schedule. The linked chat stays unchanged.",
"save": "Save",
"deleteTitle": "Delete automation",
"deleteDescription": "This removes {{name}} from the cron store. Past chat messages stay in the session.",
"cancel": "Cancel",
"status": {
"system": "System",
"pending": "Pending",
"running": "Running now",
"needsSetup": "Needs setup",
"paused": "Paused",
"failed": "Failed",
"completed": "Completed",
"noSchedule": "No schedule",
"active": "Active"
},
"legacyWarning": "This older automation is missing its target chat. Recreate it from the chat or channel where it should run.",
"origin": {
"system": "System",
"unknown": "No linked chat",
@@ -534,11 +550,16 @@
"every": "Every {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"withTz": "{{summary}} · {{tz}}",
"dailyAt": "Daily at {{time}}",
"weekdaysAt": "Weekdays at {{time}}",
"hourlyAt": "Hourly at :{{minute}}",
"hourlyWindow": "Hourly {{start}}-{{end}} at :{{minute}}",
"custom": "Custom schedule"
},
"next": {
"paused": "Paused",
"pending": "Running soon",
"pending": "Running now",
"none": "No next run"
},
"last": {
@@ -549,7 +570,41 @@
"ok": "Completed",
"error": "Error",
"skipped": "Skipped",
"recent": "Recent runs"
"recent": "Recent runs",
"statusWithDuration": "{{status}} · {{duration}}"
},
"meta": {
"created": "Created {{time}}",
"updated": "Updated {{time}}"
},
"fields": {
"name": "Name",
"message": "Message",
"scheduleType": "Schedule type",
"every": "Every",
"unit": "Unit",
"cronExpression": "Cron expression",
"timezone": "Timezone",
"runAt": "Run at"
},
"scheduleTypes": {
"every": "Interval",
"cron": "Cron",
"at": "Once"
},
"everyUnits": {
"second": "Seconds",
"minute": "Minutes",
"hour": "Hours",
"day": "Days"
},
"validation": {
"nameRequired": "Name is required.",
"messageRequired": "Message is required.",
"intervalRequired": "Interval must be a positive number.",
"cronRequired": "Cron expression is required.",
"timeRequired": "Run time is required.",
"futureRequired": "Run time must be in the future."
},
"duration": {
"lessThanSecond": "< 1 second"
+59 -4
View File
@@ -469,21 +469,28 @@
"stats": {
"active": "Activas",
"paused": "Pausadas",
"failed": "Fallidas",
"failed": "Requieren atención",
"system": "Sistema"
},
"filters": {
"all": "Todas",
"active": "Activas",
"paused": "Pausadas",
"failed": "Fallidas",
"failed": "Requieren atención",
"system": "Sistema"
},
"sort": {
"next": "Próxima ejecución",
"last": "Última ejecución",
"updated": "Actualizada",
"name": "Nombre"
},
"search": "Buscar tarea, mensaje, sesión o expresión cron",
"queue": "Cola",
"loading": "Cargando automatizaciones...",
"noMatches": "No hay automatizaciones que coincidan con esta vista.",
"empty": "Aún no hay automatizaciones.",
"emptyHint": "Crea una desde el chat o canal donde debe ejecutarse para que nanobot conserve el contexto correcto.",
"oneShot": "Una vez",
"systemTask": "Automatización administrada por el sistema",
"labels": {
@@ -495,18 +502,27 @@
"runNow": "Ejecutar ahora",
"pause": "Pausar",
"resume": "Reanudar",
"edit": "Editar",
"delete": "Eliminar",
"protected": "Protegida",
"editTitle": "Editar automatización",
"editDescription": "Actualiza el prompt y la programación. El chat vinculado no cambia.",
"save": "Guardar",
"deleteTitle": "Eliminar automatización",
"deleteDescription": "Esto elimina {{name}} del almacén cron. Los mensajes de chat anteriores permanecen en la sesión.",
"cancel": "Cancelar",
"status": {
"system": "Sistema",
"pending": "Pendiente",
"running": "Ejecutándose ahora",
"needsSetup": "Requiere configuración",
"paused": "Pausada",
"failed": "Fallida",
"completed": "Completada",
"noSchedule": "Sin programación",
"active": "Activa"
},
"legacyWarning": "Esta automatización antigua no tiene chat de destino. Vuelve a crearla desde el chat o canal donde debe ejecutarse.",
"origin": {
"system": "Sistema",
"unknown": "Sin chat vinculado",
@@ -534,11 +550,16 @@
"every": "Cada {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"withTz": "{{summary}} · {{tz}}",
"dailyAt": "Diaria a las {{time}}",
"weekdaysAt": "Días laborables a las {{time}}",
"hourlyAt": "Cada hora en :{{minute}}",
"hourlyWindow": "Cada hora {{start}}-{{end}} en :{{minute}}",
"custom": "Programación personalizada"
},
"next": {
"paused": "Pausada",
"pending": "Se ejecutará pronto",
"pending": "Ejecutándose ahora",
"none": "Sin próxima ejecución"
},
"last": {
@@ -549,7 +570,41 @@
"ok": "Completada",
"error": "Error",
"skipped": "Omitida",
"recent": "Ejecuciones recientes"
"recent": "Ejecuciones recientes",
"statusWithDuration": "{{status}} · {{duration}}"
},
"meta": {
"created": "Creada {{time}}",
"updated": "Actualizada {{time}}"
},
"fields": {
"name": "Nombre",
"message": "Mensaje",
"scheduleType": "Tipo de programación",
"every": "Cada",
"unit": "Unidad",
"cronExpression": "Expresión cron",
"timezone": "Zona horaria",
"runAt": "Ejecutar a las"
},
"scheduleTypes": {
"every": "Intervalo",
"cron": "Cron",
"at": "Una vez"
},
"everyUnits": {
"second": "Segundos",
"minute": "Minutos",
"hour": "Horas",
"day": "Días"
},
"validation": {
"nameRequired": "El nombre es obligatorio.",
"messageRequired": "El mensaje es obligatorio.",
"intervalRequired": "El intervalo debe ser un número positivo.",
"cronRequired": "La expresión cron es obligatoria.",
"timeRequired": "La hora de ejecución es obligatoria.",
"futureRequired": "La hora de ejecución debe estar en el futuro."
},
"duration": {
"lessThanSecond": "menos de 1 segundo"
+59 -4
View File
@@ -469,21 +469,28 @@
"stats": {
"active": "Actives",
"paused": "En pause",
"failed": "Échouées",
"failed": "À traiter",
"system": "Système"
},
"filters": {
"all": "Toutes",
"active": "Actives",
"paused": "En pause",
"failed": "Échouées",
"failed": "À traiter",
"system": "Système"
},
"sort": {
"next": "Prochaine exécution",
"last": "Dernière exécution",
"updated": "Mise à jour",
"name": "Nom"
},
"search": "Rechercher une tâche, un message, une session ou une expression cron",
"queue": "File",
"loading": "Chargement des automatisations...",
"noMatches": "Aucune automatisation ne correspond à cette vue.",
"empty": "Aucune automatisation pour le moment.",
"emptyHint": "Créez-en une depuis la discussion ou le canal où elle doit sexécuter afin que nanobot conserve le bon contexte.",
"oneShot": "Ponctuelle",
"systemTask": "Automatisation gérée par le système",
"labels": {
@@ -495,18 +502,27 @@
"runNow": "Exécuter maintenant",
"pause": "Mettre en pause",
"resume": "Reprendre",
"edit": "Modifier",
"delete": "Supprimer",
"protected": "Protégée",
"editTitle": "Modifier lautomatisation",
"editDescription": "Modifiez le prompt et le planning. La discussion liée ne change pas.",
"save": "Enregistrer",
"deleteTitle": "Supprimer lautomatisation",
"deleteDescription": "Cela supprime {{name}} du stockage cron. Les anciens messages de chat restent dans la session.",
"cancel": "Annuler",
"status": {
"system": "Système",
"pending": "En attente",
"running": "En cours dexécution",
"needsSetup": "Configuration requise",
"paused": "En pause",
"failed": "Échouée",
"completed": "Terminée",
"noSchedule": "Aucun planning",
"active": "En cours"
},
"legacyWarning": "Cette ancienne automatisation na pas de discussion cible. Recréez-la depuis la discussion ou le canal où elle doit sexécuter.",
"origin": {
"system": "Système",
"unknown": "Aucune discussion liée",
@@ -534,11 +550,16 @@
"every": "Toutes les {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"withTz": "{{summary}} · {{tz}}",
"dailyAt": "Chaque jour à {{time}}",
"weekdaysAt": "Jours ouvrés à {{time}}",
"hourlyAt": "Toutes les heures à :{{minute}}",
"hourlyWindow": "Toutes les heures {{start}}-{{end}} à :{{minute}}",
"custom": "Planning personnalisé"
},
"next": {
"paused": "En pause",
"pending": "Exécution prochaine",
"pending": "En cours dexécution",
"none": "Aucune prochaine exécution"
},
"last": {
@@ -549,7 +570,41 @@
"ok": "Terminée",
"error": "Erreur",
"skipped": "Ignorée",
"recent": "Exécutions récentes"
"recent": "Exécutions récentes",
"statusWithDuration": "{{status}} · {{duration}}"
},
"meta": {
"created": "Créée {{time}}",
"updated": "Mise à jour {{time}}"
},
"fields": {
"name": "Nom",
"message": "Message",
"scheduleType": "Type de planning",
"every": "Toutes les",
"unit": "Unité",
"cronExpression": "Expression cron",
"timezone": "Fuseau horaire",
"runAt": "Exécuter à"
},
"scheduleTypes": {
"every": "Intervalle",
"cron": "Cron",
"at": "Une fois"
},
"everyUnits": {
"second": "Secondes",
"minute": "Minutes",
"hour": "Heures",
"day": "Jours"
},
"validation": {
"nameRequired": "Le nom est obligatoire.",
"messageRequired": "Le message est obligatoire.",
"intervalRequired": "Lintervalle doit être un nombre positif.",
"cronRequired": "Lexpression cron est obligatoire.",
"timeRequired": "Lheure dexécution est obligatoire.",
"futureRequired": "Lheure dexécution doit être dans le futur."
},
"duration": {
"lessThanSecond": "moins de 1 seconde"
+59 -4
View File
@@ -469,21 +469,28 @@
"stats": {
"active": "Aktif",
"paused": "Dijeda",
"failed": "Gagal",
"failed": "Perlu ditangani",
"system": "Sistem"
},
"filters": {
"all": "Semua",
"active": "Aktif",
"paused": "Dijeda",
"failed": "Gagal",
"failed": "Perlu ditangani",
"system": "Sistem"
},
"sort": {
"next": "Jalankan berikutnya",
"last": "Jalankan terakhir",
"updated": "Diperbarui",
"name": "Nama"
},
"search": "Cari tugas, pesan, sesi, atau ekspresi cron",
"queue": "Antrean",
"loading": "Memuat otomasi...",
"noMatches": "Tidak ada otomasi yang cocok dengan tampilan ini.",
"empty": "Belum ada otomasi.",
"emptyHint": "Buat dari chat atau channel tempat otomasi akan berjalan agar nanobot menyimpan konteks yang benar.",
"oneShot": "Satu kali",
"systemTask": "Automasi yang dikelola sistem",
"labels": {
@@ -495,18 +502,27 @@
"runNow": "Jalankan sekarang",
"pause": "Jeda",
"resume": "Lanjutkan",
"edit": "Edit",
"delete": "Hapus",
"protected": "Terlindungi",
"editTitle": "Edit otomasi",
"editDescription": "Perbarui prompt dan jadwal. Chat tertaut tidak berubah.",
"save": "Simpan",
"deleteTitle": "Hapus otomasi",
"deleteDescription": "Ini menghapus {{name}} dari penyimpanan cron. Pesan chat sebelumnya tetap ada di sesi.",
"cancel": "Batal",
"status": {
"system": "Sistem",
"pending": "Menunggu",
"running": "Sedang berjalan",
"needsSetup": "Perlu disiapkan",
"paused": "Dijeda",
"failed": "Gagal",
"completed": "Selesai",
"noSchedule": "Tanpa jadwal",
"active": "Aktif"
},
"legacyWarning": "Otomasi lama ini tidak memiliki chat tujuan. Buat ulang dari chat atau channel tempat otomasi akan berjalan.",
"origin": {
"system": "Sistem",
"unknown": "Tidak ada chat tertaut",
@@ -534,11 +550,16 @@
"every": "Setiap {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"withTz": "{{summary}} · {{tz}}",
"dailyAt": "Setiap hari pukul {{time}}",
"weekdaysAt": "Hari kerja pukul {{time}}",
"hourlyAt": "Setiap jam pada :{{minute}}",
"hourlyWindow": "Setiap jam {{start}}-{{end}} pada :{{minute}}",
"custom": "Jadwal khusus"
},
"next": {
"paused": "Dijeda",
"pending": "Segera berjalan",
"pending": "Sedang berjalan",
"none": "Tidak ada jadwal berikutnya"
},
"last": {
@@ -549,7 +570,41 @@
"ok": "Selesai",
"error": "Error",
"skipped": "Dilewati",
"recent": "Eksekusi terbaru"
"recent": "Eksekusi terbaru",
"statusWithDuration": "{{status}} · {{duration}}"
},
"meta": {
"created": "Dibuat {{time}}",
"updated": "Diperbarui {{time}}"
},
"fields": {
"name": "Nama",
"message": "Pesan",
"scheduleType": "Jenis jadwal",
"every": "Setiap",
"unit": "Unit",
"cronExpression": "Ekspresi cron",
"timezone": "Zona waktu",
"runAt": "Jalankan pada"
},
"scheduleTypes": {
"every": "Interval",
"cron": "Cron",
"at": "Sekali"
},
"everyUnits": {
"second": "Detik",
"minute": "Menit",
"hour": "Jam",
"day": "Hari"
},
"validation": {
"nameRequired": "Nama wajib diisi.",
"messageRequired": "Pesan wajib diisi.",
"intervalRequired": "Interval harus berupa angka positif.",
"cronRequired": "Ekspresi cron wajib diisi.",
"timeRequired": "Waktu eksekusi wajib diisi.",
"futureRequired": "Waktu eksekusi harus berada di masa depan."
},
"duration": {
"lessThanSecond": "kurang dari 1 detik"
+59 -4
View File
@@ -469,21 +469,28 @@
"stats": {
"active": "実行中",
"paused": "一時停止",
"failed": "失敗",
"failed": "要対応",
"system": "システム"
},
"filters": {
"all": "すべて",
"active": "実行中",
"paused": "一時停止",
"failed": "失敗",
"failed": "要対応",
"system": "システム"
},
"sort": {
"next": "次回実行",
"last": "前回実行",
"updated": "更新日時",
"name": "名前"
},
"search": "タスク、メッセージ、セッション、cron 式を検索",
"queue": "キュー",
"loading": "自動タスクを読み込み中...",
"noMatches": "この表示に一致する自動タスクはありません。",
"empty": "自動タスクはまだありません。",
"emptyHint": "実行先のチャットまたは外部 channel から作成すると、nanobot が正しいコンテキストを保持できます。",
"oneShot": "一回限り",
"systemTask": "システム管理の自動タスク",
"labels": {
@@ -495,18 +502,27 @@
"runNow": "今すぐ実行",
"pause": "一時停止",
"resume": "再開",
"edit": "編集",
"delete": "削除",
"protected": "保護済み",
"editTitle": "自動タスクを編集",
"editDescription": "プロンプトとスケジュールを更新します。関連チャットは変更されません。",
"save": "保存",
"deleteTitle": "自動タスクを削除",
"deleteDescription": "{{name}} を cron ストアから削除します。過去のチャットメッセージはセッションに残ります。",
"cancel": "キャンセル",
"status": {
"system": "システム",
"pending": "待機中",
"running": "実行中",
"needsSetup": "再設定が必要",
"paused": "一時停止",
"failed": "失敗",
"completed": "完了",
"noSchedule": "スケジュールなし",
"active": "実行中"
},
"legacyWarning": "この古い自動タスクには対象チャットがありません。実行先のチャットまたは外部 channel から作り直してください。",
"origin": {
"system": "システム",
"unknown": "関連チャットなし",
@@ -534,11 +550,16 @@
"every": "{{duration}} ごと",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"withTz": "{{summary}} · {{tz}}",
"dailyAt": "毎日 {{time}}",
"weekdaysAt": "平日 {{time}}",
"hourlyAt": "毎時 :{{minute}}",
"hourlyWindow": "{{start}}-{{end}} の毎時 :{{minute}}",
"custom": "カスタムスケジュール"
},
"next": {
"paused": "一時停止",
"pending": "まもなく実行",
"pending": "実行",
"none": "次回実行なし"
},
"last": {
@@ -549,7 +570,41 @@
"ok": "完了",
"error": "エラー",
"skipped": "スキップ",
"recent": "最近の実行"
"recent": "最近の実行",
"statusWithDuration": "{{status}} · {{duration}}"
},
"meta": {
"created": "{{time}} 作成",
"updated": "{{time}} 更新"
},
"fields": {
"name": "名前",
"message": "メッセージ",
"scheduleType": "スケジュール種別",
"every": "間隔",
"unit": "単位",
"cronExpression": "Cron 式",
"timezone": "タイムゾーン",
"runAt": "実行日時"
},
"scheduleTypes": {
"every": "間隔",
"cron": "Cron",
"at": "一回限り"
},
"everyUnits": {
"second": "秒",
"minute": "分",
"hour": "時間",
"day": "日"
},
"validation": {
"nameRequired": "名前は必須です。",
"messageRequired": "メッセージは必須です。",
"intervalRequired": "間隔は正の数で指定してください。",
"cronRequired": "Cron 式は必須です。",
"timeRequired": "実行日時は必須です。",
"futureRequired": "実行日時は現在より後にしてください。"
},
"duration": {
"lessThanSecond": "1 秒未満"
+59 -4
View File
@@ -469,21 +469,28 @@
"stats": {
"active": "활성",
"paused": "일시 중지",
"failed": "실패",
"failed": "확인 필요",
"system": "시스템"
},
"filters": {
"all": "전체",
"active": "활성",
"paused": "일시 중지",
"failed": "실패",
"failed": "확인 필요",
"system": "시스템"
},
"sort": {
"next": "다음 실행",
"last": "마지막 실행",
"updated": "업데이트",
"name": "이름"
},
"search": "작업, 메시지, 세션 또는 cron 식 검색",
"queue": "대기열",
"loading": "자동화를 불러오는 중...",
"noMatches": "이 보기와 일치하는 자동화가 없습니다.",
"empty": "아직 자동화가 없습니다.",
"emptyHint": "실행되어야 하는 채팅 또는 외부 channel에서 만들면 nanobot이 올바른 컨텍스트를 유지합니다.",
"oneShot": "일회성",
"systemTask": "시스템 관리 자동화",
"labels": {
@@ -495,18 +502,27 @@
"runNow": "지금 실행",
"pause": "일시 중지",
"resume": "재개",
"edit": "편집",
"delete": "삭제",
"protected": "보호됨",
"editTitle": "자동화 편집",
"editDescription": "프롬프트와 일정을 업데이트합니다. 연결된 채팅은 변경되지 않습니다.",
"save": "저장",
"deleteTitle": "자동화 삭제",
"deleteDescription": "{{name}}을 cron 저장소에서 삭제합니다. 이전 채팅 메시지는 세션에 남습니다.",
"cancel": "취소",
"status": {
"system": "시스템",
"pending": "대기 중",
"running": "실행 중",
"needsSetup": "설정 필요",
"paused": "일시 중지",
"failed": "실패",
"completed": "완료",
"noSchedule": "일정 없음",
"active": "활성"
},
"legacyWarning": "이전 자동화에 대상 채팅이 없습니다. 실행되어야 하는 채팅 또는 외부 channel에서 다시 만드세요.",
"origin": {
"system": "시스템",
"unknown": "연결된 채팅 없음",
@@ -534,11 +550,16 @@
"every": "{{duration}}마다",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"withTz": "{{summary}} · {{tz}}",
"dailyAt": "매일 {{time}}",
"weekdaysAt": "평일 {{time}}",
"hourlyAt": "매시간 :{{minute}}",
"hourlyWindow": "{{start}}-{{end}} 사이 매시간 :{{minute}}",
"custom": "사용자 지정 일정"
},
"next": {
"paused": "일시 중지",
"pending": "실행",
"pending": "실행",
"none": "다음 실행 없음"
},
"last": {
@@ -549,7 +570,41 @@
"ok": "완료",
"error": "오류",
"skipped": "건너뜀",
"recent": "최근 실행"
"recent": "최근 실행",
"statusWithDuration": "{{status}} · {{duration}}"
},
"meta": {
"created": "{{time}} 생성",
"updated": "{{time}} 업데이트"
},
"fields": {
"name": "이름",
"message": "메시지",
"scheduleType": "일정 유형",
"every": "간격",
"unit": "단위",
"cronExpression": "Cron 식",
"timezone": "시간대",
"runAt": "실행 시간"
},
"scheduleTypes": {
"every": "간격",
"cron": "Cron",
"at": "일회성"
},
"everyUnits": {
"second": "초",
"minute": "분",
"hour": "시간",
"day": "일"
},
"validation": {
"nameRequired": "이름은 필수입니다.",
"messageRequired": "메시지는 필수입니다.",
"intervalRequired": "간격은 양수여야 합니다.",
"cronRequired": "Cron 식은 필수입니다.",
"timeRequired": "실행 시간은 필수입니다.",
"futureRequired": "실행 시간은 현재보다 이후여야 합니다."
},
"duration": {
"lessThanSecond": "1초 미만"
+59 -4
View File
@@ -469,21 +469,28 @@
"stats": {
"active": "Đang chạy",
"paused": "Đã tạm dừng",
"failed": "Thất bại",
"failed": "Cần xử lý",
"system": "Hệ thống"
},
"filters": {
"all": "Tất cả",
"active": "Đang chạy",
"paused": "Đã tạm dừng",
"failed": "Thất bại",
"failed": "Cần xử lý",
"system": "Hệ thống"
},
"sort": {
"next": "Lần chạy tiếp theo",
"last": "Lần chạy trước",
"updated": "Đã cập nhật",
"name": "Tên"
},
"search": "Tìm tác vụ, tin nhắn, phiên hoặc biểu thức cron",
"queue": "Hàng đợi",
"loading": "Đang tải tự động hóa...",
"noMatches": "Không có tự động hóa phù hợp với chế độ xem này.",
"empty": "Chưa có tự động hóa.",
"emptyHint": "Tạo từ cuộc trò chuyện hoặc channel nơi tự động hóa sẽ chạy để nanobot giữ đúng ngữ cảnh.",
"oneShot": "Một lần",
"systemTask": "Tự động hóa do hệ thống quản lý",
"labels": {
@@ -495,18 +502,27 @@
"runNow": "Chạy ngay",
"pause": "Tạm dừng",
"resume": "Tiếp tục",
"edit": "Sửa",
"delete": "Xóa",
"protected": "Được bảo vệ",
"editTitle": "Sửa tự động hóa",
"editDescription": "Cập nhật prompt và lịch. Cuộc trò chuyện liên kết không thay đổi.",
"save": "Lưu",
"deleteTitle": "Xóa tự động hóa",
"deleteDescription": "Thao tác này xóa {{name}} khỏi kho cron. Tin nhắn chat trước đó vẫn ở trong phiên.",
"cancel": "Hủy",
"status": {
"system": "Hệ thống",
"pending": "Đang chờ",
"running": "Đang chạy",
"needsSetup": "Cần thiết lập",
"paused": "Đã tạm dừng",
"failed": "Thất bại",
"completed": "Hoàn tất",
"noSchedule": "Không có lịch",
"active": "Đang chạy"
},
"legacyWarning": "Tự động hóa cũ này thiếu cuộc trò chuyện đích. Hãy tạo lại từ cuộc trò chuyện hoặc channel nơi nó sẽ chạy.",
"origin": {
"system": "Hệ thống",
"unknown": "Chưa liên kết cuộc trò chuyện",
@@ -534,11 +550,16 @@
"every": "Mỗi {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"withTz": "{{summary}} · {{tz}}",
"dailyAt": "Hằng ngày lúc {{time}}",
"weekdaysAt": "Ngày làm việc lúc {{time}}",
"hourlyAt": "Mỗi giờ tại :{{minute}}",
"hourlyWindow": "Mỗi giờ {{start}}-{{end}} tại :{{minute}}",
"custom": "Lịch tùy chỉnh"
},
"next": {
"paused": "Đã tạm dừng",
"pending": "Sắp chạy",
"pending": "Đang chạy",
"none": "Không có lần chạy tiếp theo"
},
"last": {
@@ -549,7 +570,41 @@
"ok": "Hoàn tất",
"error": "Lỗi",
"skipped": "Đã bỏ qua",
"recent": "Lượt chạy gần đây"
"recent": "Lượt chạy gần đây",
"statusWithDuration": "{{status}} · {{duration}}"
},
"meta": {
"created": "Tạo lúc {{time}}",
"updated": "Cập nhật lúc {{time}}"
},
"fields": {
"name": "Tên",
"message": "Tin nhắn",
"scheduleType": "Loại lịch",
"every": "Mỗi",
"unit": "Đơn vị",
"cronExpression": "Biểu thức cron",
"timezone": "Múi giờ",
"runAt": "Chạy lúc"
},
"scheduleTypes": {
"every": "Khoảng lặp",
"cron": "Cron",
"at": "Một lần"
},
"everyUnits": {
"second": "Giây",
"minute": "Phút",
"hour": "Giờ",
"day": "Ngày"
},
"validation": {
"nameRequired": "Tên là bắt buộc.",
"messageRequired": "Tin nhắn là bắt buộc.",
"intervalRequired": "Khoảng lặp phải là số dương.",
"cronRequired": "Biểu thức cron là bắt buộc.",
"timeRequired": "Thời gian chạy là bắt buộc.",
"futureRequired": "Thời gian chạy phải ở tương lai."
},
"duration": {
"lessThanSecond": "dưới 1 giây"
+59 -4
View File
@@ -469,21 +469,28 @@
"stats": {
"active": "运行中",
"paused": "已暂停",
"failed": "失败",
"failed": "需处理",
"system": "系统"
},
"filters": {
"all": "全部",
"active": "运行中",
"paused": "已暂停",
"failed": "失败",
"failed": "需处理",
"system": "系统"
},
"sort": {
"next": "下次运行",
"last": "上次运行",
"updated": "更新时间",
"name": "名称"
},
"search": "搜索任务、消息、会话或 cron 表达式",
"queue": "任务队列",
"loading": "正在加载自动任务...",
"noMatches": "当前视图没有匹配的自动任务。",
"empty": "暂无自动任务。",
"emptyHint": "请从它应该运行的聊天或外部 channel 中创建,这样 nanobot 才能保留正确上下文。",
"oneShot": "一次性",
"systemTask": "系统管理的自动任务",
"labels": {
@@ -495,18 +502,27 @@
"runNow": "立即运行",
"pause": "暂停",
"resume": "恢复",
"edit": "编辑",
"delete": "删除",
"protected": "受保护",
"editTitle": "编辑自动任务",
"editDescription": "更新提示词和计划;关联会话不会改变。",
"save": "保存",
"deleteTitle": "删除自动任务",
"deleteDescription": "这会从 cron 存储中删除 {{name}},历史聊天消息会保留在会话中。",
"cancel": "取消",
"status": {
"system": "系统",
"pending": "等待中",
"running": "正在运行",
"needsSetup": "需重新设置",
"paused": "已暂停",
"failed": "失败",
"completed": "已完成",
"noSchedule": "无计划",
"active": "运行中"
},
"legacyWarning": "这个旧版自动任务缺少目标会话。请从它应该运行的聊天或外部 channel 中重新创建。",
"origin": {
"system": "系统",
"unknown": "未关联会话",
@@ -534,11 +550,16 @@
"every": "每 {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"withTz": "{{summary}} · {{tz}}",
"dailyAt": "每天 {{time}}",
"weekdaysAt": "工作日 {{time}}",
"hourlyAt": "每小时第 {{minute}} 分钟",
"hourlyWindow": "{{start}}-{{end}} 点每小时第 {{minute}} 分钟",
"custom": "自定义计划"
},
"next": {
"paused": "已暂停",
"pending": "即将运行",
"pending": "正在运行",
"none": "没有下次运行"
},
"last": {
@@ -549,7 +570,41 @@
"ok": "完成",
"error": "错误",
"skipped": "已跳过",
"recent": "最近运行"
"recent": "最近运行",
"statusWithDuration": "{{status}} · {{duration}}"
},
"meta": {
"created": "创建于 {{time}}",
"updated": "更新于 {{time}}"
},
"fields": {
"name": "名称",
"message": "消息",
"scheduleType": "计划类型",
"every": "每隔",
"unit": "单位",
"cronExpression": "Cron 表达式",
"timezone": "时区",
"runAt": "运行时间"
},
"scheduleTypes": {
"every": "间隔",
"cron": "Cron",
"at": "一次性"
},
"everyUnits": {
"second": "秒",
"minute": "分钟",
"hour": "小时",
"day": "天"
},
"validation": {
"nameRequired": "名称不能为空。",
"messageRequired": "消息不能为空。",
"intervalRequired": "间隔必须是正整数。",
"cronRequired": "Cron 表达式不能为空。",
"timeRequired": "运行时间不能为空。",
"futureRequired": "运行时间必须晚于当前时间。"
},
"duration": {
"lessThanSecond": "不到 1 秒"
+59 -4
View File
@@ -469,21 +469,28 @@
"stats": {
"active": "執行中",
"paused": "已暫停",
"failed": "失敗",
"failed": "需處理",
"system": "系統"
},
"filters": {
"all": "全部",
"active": "執行中",
"paused": "已暫停",
"failed": "失敗",
"failed": "需處理",
"system": "系統"
},
"sort": {
"next": "下次執行",
"last": "上次執行",
"updated": "更新時間",
"name": "名稱"
},
"search": "搜尋任務、訊息、會話或 cron 表達式",
"queue": "任務佇列",
"loading": "正在載入自動任務...",
"noMatches": "目前檢視沒有符合的自動任務。",
"empty": "尚無自動任務。",
"emptyHint": "請從它應該執行的聊天或外部 channel 中建立,這樣 nanobot 才能保留正確上下文。",
"oneShot": "一次性",
"systemTask": "系統管理的自動任務",
"labels": {
@@ -495,18 +502,27 @@
"runNow": "立即執行",
"pause": "暫停",
"resume": "恢復",
"edit": "編輯",
"delete": "刪除",
"protected": "受保護",
"editTitle": "編輯自動任務",
"editDescription": "更新提示詞和排程;關聯會話不會改變。",
"save": "儲存",
"deleteTitle": "刪除自動任務",
"deleteDescription": "這會從 cron 儲存中刪除 {{name}},歷史聊天訊息會保留在會話中。",
"cancel": "取消",
"status": {
"system": "系統",
"pending": "等待中",
"running": "正在執行",
"needsSetup": "需重新設定",
"paused": "已暫停",
"failed": "失敗",
"completed": "已完成",
"noSchedule": "無排程",
"active": "執行中"
},
"legacyWarning": "這個舊版自動任務缺少目標會話。請從它應該執行的聊天或外部 channel 中重新建立。",
"origin": {
"system": "系統",
"unknown": "未關聯會話",
@@ -534,11 +550,16 @@
"every": "每 {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"withTz": "{{summary}} · {{tz}}",
"dailyAt": "每天 {{time}}",
"weekdaysAt": "工作日 {{time}}",
"hourlyAt": "每小時第 {{minute}} 分鐘",
"hourlyWindow": "{{start}}-{{end}} 點每小時第 {{minute}} 分鐘",
"custom": "自訂排程"
},
"next": {
"paused": "已暫停",
"pending": "即將執行",
"pending": "正在執行",
"none": "沒有下次執行"
},
"last": {
@@ -549,7 +570,41 @@
"ok": "完成",
"error": "錯誤",
"skipped": "已略過",
"recent": "最近執行"
"recent": "最近執行",
"statusWithDuration": "{{status}} · {{duration}}"
},
"meta": {
"created": "建立於 {{time}}",
"updated": "更新於 {{time}}"
},
"fields": {
"name": "名稱",
"message": "訊息",
"scheduleType": "排程類型",
"every": "每隔",
"unit": "單位",
"cronExpression": "Cron 表達式",
"timezone": "時區",
"runAt": "執行時間"
},
"scheduleTypes": {
"every": "間隔",
"cron": "Cron",
"at": "一次性"
},
"everyUnits": {
"second": "秒",
"minute": "分鐘",
"hour": "小時",
"day": "天"
},
"validation": {
"nameRequired": "名稱不能為空。",
"messageRequired": "訊息不能為空。",
"intervalRequired": "間隔必須是正整數。",
"cronRequired": "Cron 表達式不能為空。",
"timeRequired": "執行時間不能為空。",
"futureRequired": "執行時間必須晚於目前時間。"
},
"duration": {
"lessThanSecond": "不到 1 秒"