From bc7b3a5ffb7fde1ff9a9ed6367c403426a82697f Mon Sep 17 00:00:00 2001 From: gorkem-bwl Date: Thu, 14 May 2026 07:36:37 -0400 Subject: [PATCH] fix(i18n): close translation gaps across 16 locales ## Changes - Add 59 missing keys to every non-en locale (DNS monitor strings, status-page themes, monitor status labels, network error messages, email sender display name) - Catalan: add 12 bulk-monitor selection keys that were introduced after ca.json was first added - Fill 188 empty string values across ar, cs, fi, fr, ja, pt-BR, tr, uk and vi - Remove 10 orphan keys from es.json that were not referenced anywhere in the client code ## Benefits - All 16 locales now report 100% structural coverage against en.json - Status page theme picker, DNS monitor type, and bulk monitor actions are fully translated - No more empty strings rendered as blank labels in production UI - es.json no longer carries dead keys diverging from the reference ## Notes - Placeholders ({{count}}, {{value}}, {{name}}) verified intact in every locale - Brand terms (DNS, A, AAAA, CNAME, MX, NS, TXT, 8.8.8.8) intentionally kept untranslated - Build, prettier format-check and JSON validity all pass --- client/src/locales/ar.json | 183 ++++++++++++++++++++++++++-------- client/src/locales/ca.json | 67 +++++++++++-- client/src/locales/cs.json | 159 +++++++++++++++++++++++------ client/src/locales/de.json | 109 ++++++++++++++++++-- client/src/locales/es.json | 123 +++++++++++++++++++---- client/src/locales/fi.json | 183 ++++++++++++++++++++++++++-------- client/src/locales/fr.json | 115 +++++++++++++++++++-- client/src/locales/ja.json | 131 ++++++++++++++++++++---- client/src/locales/pt-BR.json | 123 ++++++++++++++++++++--- client/src/locales/ru.json | 109 ++++++++++++++++++-- client/src/locales/th.json | 109 ++++++++++++++++++-- client/src/locales/tr.json | 145 ++++++++++++++++++++++----- client/src/locales/uk.json | 159 +++++++++++++++++++++++------ client/src/locales/vi.json | 159 +++++++++++++++++++++++------ client/src/locales/zh-CN.json | 109 ++++++++++++++++++-- client/src/locales/zh-TW.json | 109 ++++++++++++++++++-- 16 files changed, 1794 insertions(+), 298 deletions(-) diff --git a/client/src/locales/ar.json b/client/src/locales/ar.json index 880667e86..9df395661 100644 --- a/client/src/locales/ar.json +++ b/client/src/locales/ar.json @@ -73,7 +73,9 @@ "paused": "متوقف مؤقتاً", "na": "غير متوفر", "resolved": "تم الحل", - "responseTime": "وقت الاستجابة" + "responseTime": "وقت الاستجابة", + "idle": "خامل", + "running": "قيد التشغيل" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "نشط", "responseTime": "وقت الاستجابة" } + }, + "statusCode": { + "down": "متوقف", + "networkError": { + "dns": "تعذر تحليل اسم المضيف (فشل بحث DNS).", + "refused": "رفض الخادم الاتصال (المنفذ مغلق أو الخدمة لا تستمع).", + "reset": "تمت إعادة تعيين الاتصال قبل تلقي استجابة.", + "timeout": "لم يستجب الخادم في الوقت المحدد (انتهت مهلة الطلب).", + "tls": "فشل تأكيد اتصال TLS أو SSL (مشكلة في الشهادة أو التشفير).", + "unknown": "لم يتم تلقي أي استجابة HTTP من الهدف." + } } }, "components": { @@ -306,28 +319,28 @@ "common": { "passwordRules": { "length": { - "beginning": "", - "highlighted": "" + "beginning": "يجب أن يكون على الأقل", + "highlighted": "8 أحرف" }, "lowercase": { - "beginning": "", - "highlighted": "" + "beginning": "يجب أن يحتوي على الأقل على", + "highlighted": "حرف صغير واحد" }, "match": { - "beginning": "", - "highlighted": "" + "beginning": "كلمات المرور", + "highlighted": "يجب أن تتطابق" }, "number": { - "beginning": "", - "highlighted": "" + "beginning": "يجب أن يحتوي على الأقل على", + "highlighted": "رقم واحد" }, "special": { - "beginning": "", - "highlighted": "" + "beginning": "يجب أن يحتوي على الأقل على", + "highlighted": "حرف خاص واحد (!?@#$%^&*()-_=+[]{}|;:'\",./\\~`)" }, "uppercase": { - "beginning": "", - "highlighted": "" + "beginning": "يجب أن يحتوي على الأقل على", + "highlighted": "حرف كبير واحد" } }, "form": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "البنية التحتية", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "تم إيقاف {{count}} شاشة مؤقتاً", @@ -483,9 +497,9 @@ }, "matchMethod": { "label": "طريقة المطابقة", - "equal": "", - "include": "", - "regex": "" + "equal": "يساوي", + "include": "يحتوي", + "regex": "تعبير عادي" } }, "title": "إعدادات متقدمة" @@ -497,15 +511,15 @@ "label": "تكرار الفحص", "value": { "fifteenMinutes": "15 دقيقة", - "fifteenSeconds": "", + "fifteenSeconds": "15 ثانية", "fiveMinutes": "5 دقائق", - "fourMinutes": "", - "oneMinute": "", + "fourMinutes": "4 دقائق", + "oneMinute": "دقيقة واحدة", "tenMinutes": "10 دقائق", "thirtyMinutes": "30 دقيقة", - "thirtySeconds": "", - "threeMinutes": "", - "twoMinutes": "" + "thirtySeconds": "30 ثانية", + "threeMinutes": "3 دقائق", + "twoMinutes": "دقيقتان" } } }, @@ -534,8 +548,8 @@ "placeholder": "https://www.google.com" }, "game": { - "label": "", - "placeholder": "" + "label": "اختر اللعبة", + "placeholder": "حدد لعبة" }, "port": { "label": "المنفذ المراد مراقبته", @@ -552,19 +566,40 @@ "captureUrl": { "label": "نقطة نهاية Capture", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "نوع سجل DNS", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "خادم DNS", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "سطح المكتب", + "label": "الاستراتيجية", + "mobile": "الجوال" } }, "title": "الإعدادات العامة", "description": { "http": "أدخل الرابط أو عنوان IP للمراقبة (مثال: https://example.com/ أو 192.168.1.100) وأضف اسم عرض واضح يظهر في لوحة التحكم.", - "ping": "", - "port": "", - "docker": "", + "ping": "أدخل عنوان IP أو اسم المضيف للاتصال (على سبيل المثال، 192.168.1.100 أو example.com) وأضف اسماً واضحاً يظهر في لوحة المعلومات.", + "port": "أدخل عنوان URL أو IP للخادم ورقم المنفذ واسماً واضحاً يظهر في لوحة المعلومات.", + "docker": "أدخل اسم حاوية Docker أو المعرف. يمكنك استخدام اسم الحاوية (مثل my-app) أو معرف الحاوية (معرف كامل 64 حرف أو معرف قصير).", "game": "أدخل عنوان IP أو اسم المضيف ورقم المنفذ للاختبار (مثل 192.168.1.100 أو example.com) واختر نوع اللعبة. تتطلب بعض الألعاب تفعيل استعلامات الخادم في ملف الإعدادات الخاص بها — يُرجى مراجعة وثائق خادم اللعبة. اطّلع على قائمة الألعاب المدعومة لمعرفة تفاصيل البروتوكول.", "pagespeed": "تتبع أداء تحميل الصفحة ومؤشرات Core Web Vitals ودرجات التحسين لموقعك.", "grpc": "أدخل اسم المضيف ومنفذ خادم gRPC، وحدد اختيارياً اسم خدمة لفحص الصحة، وأضف اسم عرض.", "websocket": "أدخل رابط WebSocket للمراقبة (مثال: wss://example.com/socket) وأضف اسم عرض.", - "hardware": "راقب استخدام وحدة المعالجة المركزية والذاكرة والقرص ودرجة الحرارة لبنيتك التحتية. يجب أن يتضمن عنوان URL لنقطة نهاية Capture المسار الكامل ‎/api/v1/metrics‎ (مثال: ‎http://192.168.1.10:5001/api/v1/metrics‎). بالنسبة لمفتاح التفويض، الصق سلسلة الرمز فقط — لا تُضمّن كلمة 'Bearer'." + "hardware": "راقب استخدام وحدة المعالجة المركزية والذاكرة والقرص ودرجة الحرارة لبنيتك التحتية. يجب أن يتضمن عنوان URL لنقطة نهاية Capture المسار الكامل ‎/api/v1/metrics‎ (مثال: ‎http://192.168.1.10:5001/api/v1/metrics‎). بالنسبة لمفتاح التفويض، الصق سلسلة الرمز فقط — لا تُضمّن كلمة 'Bearer'.", + "dns": "راقب ما إذا كان خادم DNS محدد يستجيب." } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "استخدم HTTP(S) لمراقبة موقعك الإلكتروني أو نقطة نهاية API.", "optionPingDescription": "استخدم ICMP Ping لمراقبة ما إذا كان الخادم متصلاً.", "optionPortDescription": "مراقبة ما إذا كان منفذ معين على الخادم مفتوحاً.", - "title": "النوع" + "title": "النوع", + "optionDnsDescription": "راقب ما إذا كان خادم DNS محدد يستجيب." }, "thresholds": { "title": "حدود التنبيه", @@ -765,7 +801,7 @@ "headers": { "endTime": "وقت الانتهاء", "resolutionType": "نوع الحل", - "startTime": "", + "startTime": "وقت البدء", "statusCode": "رمز الحالة" }, "resolvedIncidents": "الحوادث المحلولة", @@ -809,13 +845,13 @@ } }, "statBoxes": { - "avgCpuTemperature": "", - "cpuFrequency": "", - "cpuLogical": "", - "cpuPhysical": "", + "avgCpuTemperature": "متوسط درجة حرارة المعالج", + "cpuFrequency": "تردد المعالج", + "cpuLogical": "المعالج (المنطقي)", + "cpuPhysical": "المعالج (الفعلي)", "disk": "القرص", "memory": "الذاكرة", - "os": "" + "os": "نظام التشغيل" }, "table": { "headers": { @@ -826,7 +862,7 @@ }, "tabs": { "labels": { - "network": "", + "network": "الشبكة", "overview": "نظرة عامة" } }, @@ -909,7 +945,8 @@ "lastFinishedAt": "آخر انتهاء في", "lastRunTook": "مدة آخر تشغيل", "lastFailedAt": "آخر فشل في", - "failReason": "سبب الفشل" + "failReason": "سبب الفشل", + "state": "الحالة" } }, "queueFallback": { @@ -929,8 +966,8 @@ }, "table": { "headers": { - "nextWindow": "", - "repeat": "" + "nextWindow": "النافذة التالية", + "repeat": "تكرار" } }, "form": { @@ -1032,7 +1069,7 @@ }, "telegram": { "title": "تهيئة Telegram", - "description": "", + "description": "قم بتكوين بوت Telegram الخاص بك لإرسال الإشعارات.", "optionBotToken": "رمز البوت", "placeholderBotToken": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "optionChatId": "معرّف المحادثة", @@ -1099,6 +1136,10 @@ "header": { "title": "مراقبات PageSpeed", "description": "تابع Core Web Vitals ودرجات Lighthouse عبر الزمن لاكتشاف التراجع قبل أن يلاحظه المستخدمون." + }, + "strategy": { + "desktop": "سطح المكتب", + "mobile": "الجوال" } }, "settings": { @@ -1201,7 +1242,7 @@ "email": { "title": "إعدادات البريد الإلكتروني", "description": "تهيئة إعدادات البريد الإلكتروني لنظامك. يُستخدم لإرسال الإشعارات والتنبيهات.", - "descriptionTransport": "", + "descriptionTransport": "هذا يبني نقل SMTP لـ NodeMailer", "descriptionTransportLink": "اطلع على المواصفات هنا", "option": { "host": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "رفض الشهادات غير الصالحة: رفض الاتصالات ذات الشهادات الموقعة ذاتياً أو غير الموثوقة" + }, + "displayName": { + "label": "اسم المرسل (اختياري) - الاسم الودي المعروض في حقل المرسل", + "placeholder": "إشعارات Checkmate" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "وقت التشغيل", "responseTime": "وقت الاستجابة" + }, + "chart": { + "avg": "متوسط {{value}} مللي ثانية", + "downTooltip": "متوقف", + "heatmapAria": "خريطة حرارية لزمن الاستجابة", + "max": "أقصى {{value}} مللي ثانية" + }, + "status": { + "breached": "تم تجاوز الحد", + "down": "متوقف", + "initializing": "قيد التهيئة", + "maintenance": "صيانة", + "paused": "متوقف مؤقتاً", + "up": "قيد التشغيل" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "بعض الأنظمة قيد الصيانة", "partiallyPaused": "بعض الأنظمة متوقفة مؤقتًا", "initializing": "بعض الأنظمة قيد التهيئة", - "noMonitors": "لم يتم تكوين أي شاشة" + "noMonitors": "لم يتم تكوين أي شاشة", + "monitoringSummary": "مراقبة {{count}} خدمة · يتم التحديث كل 10 ثوانٍ", + "monitoringSummary_other": "مراقبة {{count}} خدمات · يتم التحديث كل 10 ثوانٍ" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "إظهار مقاييس البنية التحتية" } } + }, + "theme": { + "description": "اختر النمط المرئي لصفحة الحالة العامة الخاصة بك.", + "label": "السمة", + "options": { + "bold": { + "description": "خط كبير ومسافات واثقة. رائعة للصفحات التي تركز على العلامة التجارية.", + "name": "غامق" + }, + "editorial": { + "description": "عناوين بخط مسرف وفواصل دقيقة. مميز وهادئ.", + "name": "تحريري" + }, + "modern": { + "description": "بجودة SaaS مع نقطة حالة نابضة وبطاقات تتلاشى بنعومة.", + "name": "حديث" + }, + "refined": { + "description": "نظيف واحترافي وقريب من مظهر Checkmate الكلاسيكي.", + "name": "مكرر" + } + }, + "title": "سمة الصفحة" + }, + "themeMode": { + "auto": "تلقائي (اتبع جهاز الزائر)", + "dark": "داكن فقط", + "label": "وضع السمة", + "light": "فاتح فقط" } }, "header": { "title": "صفحات الحالة", "description": "انشر صفحات عامة تُظهر للعملاء وأصحاب المصلحة وقت التشغيل الفعلي وتاريخ الحوادث." + }, + "editorial": { + "allUp": "جميع الأنظمة تعمل بشكل طبيعي.", + "reportTitle": "تقرير الخدمة" + }, + "footer": { + "poweredBy": "مشغل بواسطة" } }, "uptime": { diff --git a/client/src/locales/ca.json b/client/src/locales/ca.json index fe80cf9c4..259acf0ab 100644 --- a/client/src/locales/ca.json +++ b/client/src/locales/ca.json @@ -73,7 +73,9 @@ "paused": "pausat", "na": "N/D", "resolved": "Resolt", - "responseTime": "Temps de resposta" + "responseTime": "Temps de resposta", + "idle": "Inactiu", + "running": "En execució" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "Actiu", "responseTime": "Temps de resposta" } + }, + "statusCode": { + "down": "Inactiu", + "networkError": { + "dns": "No s'ha pogut resoldre el nom d'amfitrió (la cerca DNS ha fallat).", + "refused": "El servidor ha rebutjat la connexió (port tancat o servei no actiu).", + "reset": "La connexió s'ha reiniciat abans de rebre una resposta.", + "timeout": "El servidor no ha respost a temps (s'ha esgotat el temps d'espera).", + "tls": "Ha fallat la negociació TLS o SSL (problema de certificat o xifratge).", + "unknown": "No s'ha rebut cap resposta HTTP de l'objectiu." + } } }, "components": { @@ -421,7 +434,11 @@ "inviteMember": "Convidar membre", "openSite": "Obrir lloc", "pause": "Pausar", - "resume": "Reprendre" + "resume": "Reprendre", + "bulkSelected_one": "{{count}} monitor seleccionat", + "bulkSelected_other": "{{count}} monitors seleccionats", + "selectAll": "Selecciona tots els monitors", + "selectMonitor": "Selecciona {{name}}" }, "statBoxes": { "activeFor": "Actiu des de", @@ -448,7 +465,18 @@ "optionPagespeed": "PageSpeed", "optionHardware": "Infraestructura", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" + }, + "bulkPause": { + "alreadyPaused_one": "El monitor seleccionat ja està pausat", + "alreadyPaused_other": "Tots els monitors seleccionats ja estan pausats", + "alreadyRunning_one": "El monitor seleccionat ja s'està executant", + "alreadyRunning_other": "Tots els monitors seleccionats ja s'estan executant", + "paused_one": "{{count}} monitor pausat", + "paused_other": "{{count}} monitors pausats", + "resumed_one": "{{count}} monitor reprès", + "resumed_other": "{{count}} monitors represos" } } }, @@ -538,6 +566,26 @@ "captureUrl": { "label": "Endpoint de captura", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "Tipus de registre DNS", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "Servidor DNS", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "Escriptori", + "label": "Estratègia", + "mobile": "Mòbil" } }, "title": "Configuració general", @@ -550,7 +598,8 @@ "pagespeed": "Fes un seguiment del rendiment de càrrega de pàgina, Core Web Vitals i puntuacions d'optimització del teu lloc web.", "grpc": "Introdueix el nom d'host i el port del servidor gRPC, opcionalment especifica un nom de servei per a la comprovació de salut, i afegeix un nom de visualització.", "websocket": "Introdueix la URL de WebSocket a monitorar (p. ex., wss://example.com/socket) i afegeix un nom de visualització.", - "hardware": "Monitoritza l'ús de CPU, memòria, disc i temperatura per a la teva infraestructura. La URL de l'endpoint de captura ha d'incloure la ruta completa /api/v1/metrics (p. ex., http://192.168.1.10:5001/api/v1/metrics). Per al secret d'autorització, enganxa només la cadena del token — no incloguis 'Bearer'." + "hardware": "Monitoritza l'ús de CPU, memòria, disc i temperatura per a la teva infraestructura. La URL de l'endpoint de captura ha d'incloure la ruta completa /api/v1/metrics (p. ex., http://192.168.1.10:5001/api/v1/metrics). Per al secret d'autorització, enganxa només la cadena del token — no incloguis 'Bearer'.", + "dns": "Monitoritza si un servidor DNS específic respon." } }, "ignoreTls": { @@ -587,7 +636,8 @@ "optionHttpDescription": "Usa HTTP(S) per monitorar el teu lloc web o endpoint d'API.", "optionPingDescription": "Usa ICMP Ping per monitorar si un servidor és en línia.", "optionPortDescription": "Monitoritza si un port específic d'un servidor és obert.", - "title": "Tipus" + "title": "Tipus", + "optionDnsDescription": "Monitoritza si un servidor DNS específic respon." }, "thresholds": { "title": "Llindars d'alerta", @@ -899,7 +949,8 @@ "lastFinishedAt": "Darrera finalització", "lastRunTook": "Durada de la darrera execució", "lastFailedAt": "Darrera fallada", - "failReason": "Motiu de la fallada" + "failReason": "Motiu de la fallada", + "state": "Estat" } }, "header": { @@ -1085,6 +1136,10 @@ "header": { "title": "Monitors de PageSpeed", "description": "Fes un seguiment de les Core Web Vitals i les puntuacions de Lighthouse al llarg del temps per detectar regressions abans que els usuaris ho facin." + }, + "strategy": { + "desktop": "Escriptori", + "mobile": "Mòbil" } }, "settings": { diff --git a/client/src/locales/cs.json b/client/src/locales/cs.json index 19d506399..79969899c 100644 --- a/client/src/locales/cs.json +++ b/client/src/locales/cs.json @@ -73,7 +73,9 @@ "paused": "pozastaveno", "na": "N/A", "resolved": "Vyřešeno", - "responseTime": "Doba odezvy" + "responseTime": "Doba odezvy", + "idle": "Nečinný", + "running": "Spuštěno" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "Aktivní", "responseTime": "Doba odezvy" } + }, + "statusCode": { + "down": "Mimo provoz", + "networkError": { + "dns": "Nepodařilo se přeložit název hostitele (vyhledávání DNS selhalo).", + "refused": "Server odmítl spojení (port je uzavřený nebo služba neposlouchá).", + "reset": "Spojení bylo resetováno před přijetím odpovědi.", + "timeout": "Server neodpověděl včas (vypršel časový limit požadavku).", + "tls": "Selhal handshake TLS nebo SSL (problém s certifikátem nebo šifrováním).", + "unknown": "Z cíle nebyla obdržena žádná odpověď HTTP." + } } }, "components": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "Infrastruktura", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "{{count}} monitor pozastaven", @@ -483,9 +497,9 @@ }, "matchMethod": { "label": "Metoda porovnání", - "equal": "", - "include": "", - "regex": "" + "equal": "Rovná se", + "include": "Obsahuje", + "regex": "Regulární výraz" } }, "title": "Pokročilá nastavení" @@ -497,15 +511,15 @@ "label": "Frekvence kontroly", "value": { "fifteenMinutes": "15 minut", - "fifteenSeconds": "", + "fifteenSeconds": "15 sekund", "fiveMinutes": "5 minut", - "fourMinutes": "", - "oneMinute": "", + "fourMinutes": "4 minuty", + "oneMinute": "1 minuta", "tenMinutes": "10 minut", "thirtyMinutes": "30 minut", - "thirtySeconds": "", - "threeMinutes": "", - "twoMinutes": "" + "thirtySeconds": "30 sekund", + "threeMinutes": "3 minuty", + "twoMinutes": "2 minuty" } } }, @@ -534,8 +548,8 @@ "placeholder": "https://www.google.com" }, "game": { - "label": "", - "placeholder": "" + "label": "Vybrat hru", + "placeholder": "Vyberte hru" }, "port": { "label": "Port ke sledování", @@ -552,19 +566,40 @@ "captureUrl": { "label": "Endpoint Capture", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "Typ záznamu DNS", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "DNS server", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "Stolní počítač", + "label": "Strategie", + "mobile": "Mobil" } }, "title": "Obecná nastavení", "description": { "http": "Zadejte URL nebo IP adresu ke sledování (např. https://example.com/ nebo 192.168.1.100) a přidejte jasný zobrazovaný název, který se zobrazí na přehledu.", - "ping": "", - "port": "", - "docker": "", + "ping": "Zadejte IP adresu nebo název hostitele pro ping (např. 192.168.1.100 nebo example.com) a přidejte přehledný název, který se zobrazí na dashboardu.", + "port": "Zadejte URL nebo IP serveru, číslo portu a přehledný název, který se zobrazí na dashboardu.", + "docker": "Zadejte název nebo ID Docker kontejneru. Můžete použít buď název kontejneru (např. my-app) nebo ID kontejneru (úplné 64znakové ID nebo krátké ID).", "game": "Zadejte IP adresu nebo název hostitele a číslo portu pro ping (např. 192.168.1.100 nebo example.com) a vyberte typ hry. Některé hry vyžadují povolení dotazů na server v jejich konfiguračním souboru — viz dokumentace vašeho herního serveru. Podrobnosti o protokolu najdete v seznamu podporovaných her.", "pagespeed": "Sledujte výkon načítání stránky, metriky Core Web Vitals a hodnocení optimalizace vašeho webu.", "grpc": "Zadejte název hostitele a port gRPC serveru, volitelně zadejte název služby pro kontrolu stavu a přidejte zobrazovaný název.", "websocket": "Zadejte WebSocket URL ke sledování (např. wss://example.com/socket) a přidejte zobrazovaný název.", - "hardware": "Sledujte využití CPU, paměti, disku a teplotu vaší infrastruktury. URL endpointu Capture musí obsahovat celou cestu /api/v1/metrics (např. http://192.168.1.10:5001/api/v1/metrics). Do autorizačního klíče vložte pouze řetězec tokenu — nezahrnujte 'Bearer'." + "hardware": "Sledujte využití CPU, paměti, disku a teplotu vaší infrastruktury. URL endpointu Capture musí obsahovat celou cestu /api/v1/metrics (např. http://192.168.1.10:5001/api/v1/metrics). Do autorizačního klíče vložte pouze řetězec tokenu — nezahrnujte 'Bearer'.", + "dns": "Sledujte, zda konkrétní DNS server odpovídá." } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "Použijte HTTP(S) ke sledování vašeho webu nebo API koncového bodu.", "optionPingDescription": "Použijte ICMP Ping ke sledování, zda je server online.", "optionPortDescription": "Sledujte, zda je konkrétní port na serveru otevřen.", - "title": "Typ" + "title": "Typ", + "optionDnsDescription": "Sledujte, zda konkrétní DNS server odpovídá." }, "thresholds": { "title": "Prahové hodnoty upozornění", @@ -765,7 +801,7 @@ "headers": { "endTime": "Čas ukončení", "resolutionType": "Typ řešení", - "startTime": "", + "startTime": "Čas zahájení", "statusCode": "Stavový kód" }, "resolvedIncidents": "Vyřešené incidenty", @@ -809,13 +845,13 @@ } }, "statBoxes": { - "avgCpuTemperature": "", - "cpuFrequency": "", - "cpuLogical": "", - "cpuPhysical": "", + "avgCpuTemperature": "Průměrná teplota CPU", + "cpuFrequency": "Frekvence CPU", + "cpuLogical": "CPU (logický)", + "cpuPhysical": "CPU (fyzický)", "disk": "Disk", "memory": "Paměť", - "os": "" + "os": "OS" }, "table": { "headers": { @@ -826,7 +862,7 @@ }, "tabs": { "labels": { - "network": "", + "network": "Síť", "overview": "Přehled" } }, @@ -909,7 +945,8 @@ "lastFinishedAt": "Naposledy dokončeno", "lastRunTook": "Poslední běh trval", "lastFailedAt": "Poslední selhání", - "failReason": "Důvod selhání" + "failReason": "Důvod selhání", + "state": "Stav" } }, "queueFallback": { @@ -929,8 +966,8 @@ }, "table": { "headers": { - "nextWindow": "", - "repeat": "" + "nextWindow": "Další okno", + "repeat": "Opakovat" } }, "form": { @@ -1032,7 +1069,7 @@ }, "telegram": { "title": "Konfigurace Telegramu", - "description": "", + "description": "Nakonfigurujte svého Telegram bota pro odesílání oznámení.", "optionBotToken": "Token bota", "placeholderBotToken": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "optionChatId": "ID chatu", @@ -1099,6 +1136,10 @@ "header": { "title": "Monitory PageSpeed", "description": "Sledujte Core Web Vitals a skóre Lighthouse v čase a zachyťte regrese dříve než vaši uživatelé." + }, + "strategy": { + "desktop": "Stolní počítač", + "mobile": "Mobil" } }, "settings": { @@ -1201,7 +1242,7 @@ "email": { "title": "Nastavení emailu", "description": "Nastavte emailovou konfiguraci pro váš systém. Používá se k odesílání oznámení a upozornění.", - "descriptionTransport": "", + "descriptionTransport": "Toto vytvoří SMTP transport pro NodeMailer", "descriptionTransportLink": "Zobrazit specifikace zde", "option": { "host": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "Odmítnout neplatné certifikáty: Odmítnout připojení se sebou podepsanými nebo nedůvěryhodnými certifikáty" + }, + "displayName": { + "label": "Jméno odesílatele (nepovinné) - Přátelské jméno zobrazené v poli Od", + "placeholder": "Oznámení Checkmate" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "Dostupnost", "responseTime": "Doba odezvy" + }, + "chart": { + "avg": "průměr {{value}}ms", + "downTooltip": "Mimo provoz", + "heatmapAria": "Tepelná mapa doby odezvy", + "max": "max {{value}}ms" + }, + "status": { + "breached": "Překročen limit", + "down": "Mimo provoz", + "initializing": "Inicializace", + "maintenance": "Údržba", + "paused": "Pozastaveno", + "up": "V provozu" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "Některé systémy jsou v údržbě", "partiallyPaused": "Některé systémy jsou pozastavené", "initializing": "Některé systémy se inicializují", - "noMonitors": "Nebyly nakonfigurovány žádné monitory" + "noMonitors": "Nebyly nakonfigurovány žádné monitory", + "monitoringSummary": "Sledování {{count}} služby · Aktualizace každých 10 sekund", + "monitoringSummary_other": "Sledování {{count}} služeb · Aktualizace každých 10 sekund" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "Zobrazit metriky infrastruktury" } } + }, + "theme": { + "description": "Vyberte vizuální styl pro veřejnou stavovou stránku.", + "label": "Motiv", + "options": { + "bold": { + "description": "Velké písmo a sebevědomé rozložení. Vhodné pro stránky zaměřené na značku.", + "name": "Tučný" + }, + "editorial": { + "description": "Patkové nadpisy a tenké oddělovače. Odlišný a klidný.", + "name": "Redakční" + }, + "modern": { + "description": "Úroveň SaaS s pulzující stavovou tečkou a jemně mizejícími kartami.", + "name": "Moderní" + }, + "refined": { + "description": "Čistý, profesionální, blízký klasickému vzhledu Checkmate.", + "name": "Vytříbený" + } + }, + "title": "Motiv stránky" + }, + "themeMode": { + "auto": "Automaticky (podle zařízení návštěvníka)", + "dark": "Pouze tmavý", + "label": "Režim motivu", + "light": "Pouze světlý" } }, "header": { "title": "Stavové stránky", "description": "Publikujte veřejné stránky, které zákazníkům a zúčastněným stranám zobrazují dostupnost v reálném čase a historii incidentů." + }, + "editorial": { + "allUp": "Všechny systémy fungují normálně.", + "reportTitle": "Zpráva o službě" + }, + "footer": { + "poweredBy": "Provozováno službou" } }, "uptime": { diff --git a/client/src/locales/de.json b/client/src/locales/de.json index 0d0808135..09f644cd2 100644 --- a/client/src/locales/de.json +++ b/client/src/locales/de.json @@ -73,7 +73,9 @@ "paused": "pausiert", "na": "N/A", "resolved": "Gelöst", - "responseTime": "Antwortzeit" + "responseTime": "Antwortzeit", + "idle": "Untätig", + "running": "Läuft" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "Aktiv", "responseTime": "Antwortzeit" } + }, + "statusCode": { + "down": "Ausgefallen", + "networkError": { + "dns": "Hostname konnte nicht aufgelöst werden (DNS-Auflösung fehlgeschlagen).", + "refused": "Der Server hat die Verbindung abgelehnt (Port geschlossen oder Dienst lauscht nicht).", + "reset": "Die Verbindung wurde zurückgesetzt, bevor eine Antwort empfangen wurde.", + "timeout": "Der Server hat nicht rechtzeitig geantwortet (Zeitüberschreitung der Anfrage).", + "tls": "TLS- oder SSL-Handshake fehlgeschlagen (Zertifikats- oder Verschlüsselungsproblem).", + "unknown": "Es wurde keine HTTP-Antwort vom Ziel empfangen." + } } }, "components": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "Infrastruktur", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "{{count}} Monitor pausiert", @@ -552,6 +566,26 @@ "captureUrl": { "label": "Capture-Endpunkt", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "DNS-Eintragstyp", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "DNS-Server", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "Desktop", + "label": "Strategie", + "mobile": "Mobil" } }, "title": "Allgemeine Einstellungen", @@ -564,7 +598,8 @@ "pagespeed": "Verfolgen Sie die Ladezeit, Core Web Vitals und Optimierungswerte Ihrer Website.", "grpc": "Geben Sie den Hostnamen und Port des gRPC-Servers ein, optional einen Dienstnamen für den Health-Check, und fügen Sie einen Anzeigenamen hinzu.", "websocket": "Geben Sie die zu überwachende WebSocket-URL ein (z. B. wss://example.com/socket) und fügen Sie einen Anzeigenamen hinzu.", - "hardware": "Überwachen Sie CPU-, Speicher-, Festplattenauslastung und Temperatur Ihrer Infrastruktur. Die URL des Capture-Endpunkts muss den vollständigen Pfad /api/v1/metrics enthalten (z. B. http://192.168.1.10:5001/api/v1/metrics). Fügen Sie für das Autorisierungsgeheimnis nur den Token-String ein — geben Sie 'Bearer' nicht mit an." + "hardware": "Überwachen Sie CPU-, Speicher-, Festplattenauslastung und Temperatur Ihrer Infrastruktur. Die URL des Capture-Endpunkts muss den vollständigen Pfad /api/v1/metrics enthalten (z. B. http://192.168.1.10:5001/api/v1/metrics). Fügen Sie für das Autorisierungsgeheimnis nur den Token-String ein — geben Sie 'Bearer' nicht mit an.", + "dns": "Überwachen Sie, ob ein bestimmter DNS-Server antwortet." } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "HTTP(S) verwenden, um Ihre Website oder Ihren API-Endpunkt zu überwachen.", "optionPingDescription": "ICMP-Ping verwenden, um zu überwachen, ob ein Server online ist.", "optionPortDescription": "Überwachen, ob ein bestimmter Port auf einem Server geöffnet ist.", - "title": "Typ" + "title": "Typ", + "optionDnsDescription": "Überwachen Sie, ob ein bestimmter DNS-Server antwortet." }, "thresholds": { "title": "Alarmschwellenwerte", @@ -909,7 +945,8 @@ "lastFinishedAt": "Zuletzt abgeschlossen am", "lastRunTook": "Letzter Lauf dauerte", "lastFailedAt": "Letzter Fehler am", - "failReason": "Fehlergrund" + "failReason": "Fehlergrund", + "state": "Status" } }, "queueFallback": { @@ -1099,6 +1136,10 @@ "header": { "title": "PageSpeed-Monitore", "description": "Verfolgen Sie Core Web Vitals und Lighthouse-Werte im Zeitverlauf, um Regressionen zu erkennen, bevor Nutzer es tun." + }, + "strategy": { + "desktop": "Desktop", + "mobile": "Mobil" } }, "settings": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "Ungültige Zertifikate ablehnen: Verbindungen mit selbstsignierten oder nicht vertrauenswürdigen Zertifikaten ablehnen" + }, + "displayName": { + "label": "Absendername (optional) - Anzeigename im Absenderfeld", + "placeholder": "Checkmate-Benachrichtigungen" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "Verfügbarkeit", "responseTime": "Antwortzeit" + }, + "chart": { + "avg": "Ø {{value}}ms", + "downTooltip": "Ausgefallen", + "heatmapAria": "Heatmap der Antwortzeit", + "max": "max. {{value}}ms" + }, + "status": { + "breached": "Schwellenwert überschritten", + "down": "Ausgefallen", + "initializing": "Initialisierung", + "maintenance": "Wartung", + "paused": "Pausiert", + "up": "Betriebsbereit" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "Einige Systeme befinden sich in Wartung", "partiallyPaused": "Einige Systeme sind pausiert", "initializing": "Einige Systeme werden initialisiert", - "noMonitors": "Es wurden keine Monitore konfiguriert" + "noMonitors": "Es wurden keine Monitore konfiguriert", + "monitoringSummary": "Überwachung von {{count}} Dienst · Aktualisierung alle 10 Sekunden", + "monitoringSummary_other": "Überwachung von {{count}} Diensten · Aktualisierung alle 10 Sekunden" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "Infrastruktur-Metriken anzeigen" } } + }, + "theme": { + "description": "Wählen Sie den visuellen Stil für Ihre öffentliche Statusseite.", + "label": "Theme", + "options": { + "bold": { + "description": "Große Schrift und großzügige Abstände. Ideal für markenorientierte Seiten.", + "name": "Fett" + }, + "editorial": { + "description": "Serifenüberschriften und feine Trennlinien. Markant und ruhig.", + "name": "Redaktionell" + }, + "modern": { + "description": "SaaS-Niveau mit pulsierendem Statuspunkt und sanft verblassenden Karten.", + "name": "Modern" + }, + "refined": { + "description": "Sauber, professionell, nah am klassischen Checkmate-Look.", + "name": "Verfeinert" + } + }, + "title": "Seiten-Theme" + }, + "themeMode": { + "auto": "Automatisch (Gerät des Besuchers folgen)", + "dark": "Nur dunkel", + "label": "Theme-Modus", + "light": "Nur hell" } }, "header": { "title": "Statusseiten", "description": "Veröffentlichen Sie öffentliche Seiten, die Kunden und Stakeholdern Echtzeit-Verfügbarkeit und Vorfallsverlauf zeigen." + }, + "editorial": { + "allUp": "Alle Systeme funktionieren normal.", + "reportTitle": "Servicebericht" + }, + "footer": { + "poweredBy": "Bereitgestellt von" } }, "uptime": { diff --git a/client/src/locales/es.json b/client/src/locales/es.json index be2f6531c..67e2b0dcd 100644 --- a/client/src/locales/es.json +++ b/client/src/locales/es.json @@ -47,14 +47,7 @@ "exportToJSON": "Exportar a JSON", "importFromJSON": "Importar desde JSON", "clearFilters": "Limpiar filtros", - "removeUser": "Eliminar usuario", - "testNotification": "Probar notificación", - "invite": "Invitar", - "copyLink": "Copiar enlace", - "regenerateToken": "Regenerar token", - "copyToken": "Copiar token", - "exportLogs": "Exportar registros", - "refresh": "Actualizar" + "removeUser": "Eliminar usuario" }, "charts": { "labels": { @@ -80,7 +73,9 @@ "paused": "pausado", "na": "N/D", "resolved": "Resuelto", - "responseTime": "Tiempo de respuesta" + "responseTime": "Tiempo de respuesta", + "idle": "Inactivo", + "running": "En ejecución" }, "form": { "role": { @@ -127,6 +122,17 @@ "active": "Activo", "responseTime": "Tiempo de respuesta" } + }, + "statusCode": { + "down": "Caído", + "networkError": { + "dns": "No se pudo resolver el nombre de host (la búsqueda DNS falló).", + "refused": "El servidor rechazó la conexión (puerto cerrado o servicio inactivo).", + "reset": "La conexión se restableció antes de recibir una respuesta.", + "timeout": "El servidor no respondió a tiempo (tiempo de espera agotado).", + "tls": "Falló el protocolo TLS o SSL (problema de certificado o cifrado).", + "unknown": "No se recibió ninguna respuesta HTTP del destino." + } } }, "components": { @@ -459,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "Infraestructura", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "{{count}} monitor pausado", @@ -559,6 +566,26 @@ "captureUrl": { "label": "Endpoint de Capture", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "Tipo de registro DNS", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "Servidor DNS", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "Escritorio", + "label": "Estrategia", + "mobile": "Móvil" } }, "title": "Configuración general", @@ -571,7 +598,8 @@ "pagespeed": "Rastree el rendimiento de carga de página, Core Web Vitals y puntuaciones de optimización de su sitio web.", "grpc": "Ingrese el nombre de host y puerto del servidor gRPC, opcionalmente especifique un nombre de servicio para la verificación de salud, y agregue un nombre para mostrar.", "websocket": "Ingrese la URL de WebSocket a monitorear (p. ej., wss://example.com/socket) y agregue un nombre para mostrar.", - "hardware": "Supervisa el uso de CPU, memoria, disco y temperatura de tu infraestructura. La URL del endpoint de Capture debe incluir la ruta completa /api/v1/metrics (p. ej., http://192.168.1.10:5001/api/v1/metrics). Para el secreto de autorización, pega solo la cadena del token — no incluyas 'Bearer'." + "hardware": "Supervisa el uso de CPU, memoria, disco y temperatura de tu infraestructura. La URL del endpoint de Capture debe incluir la ruta completa /api/v1/metrics (p. ej., http://192.168.1.10:5001/api/v1/metrics). Para el secreto de autorización, pega solo la cadena del token — no incluyas 'Bearer'.", + "dns": "Monitorea si un servidor DNS específico responde." } }, "ignoreTls": { @@ -608,7 +636,8 @@ "optionHttpDescription": "Use HTTP(S) para monitorear su sitio web o endpoint de API.", "optionPingDescription": "Use ICMP Ping para monitorear si un servidor está en línea.", "optionPortDescription": "Monitoree si un puerto específico de un servidor está abierto.", - "title": "Tipo" + "title": "Tipo", + "optionDnsDescription": "Monitorea si un servidor DNS específico responde." }, "thresholds": { "title": "Umbrales de alerta", @@ -916,7 +945,8 @@ "lastFinishedAt": "Última finalización", "lastRunTook": "Última ejecución tomó", "lastFailedAt": "Última falla", - "failReason": "Razón de falla" + "failReason": "Razón de falla", + "state": "Estado" } }, "queueFallback": { @@ -1106,6 +1136,10 @@ "header": { "title": "Monitores de PageSpeed", "description": "Sigue las Core Web Vitals y las puntuaciones de Lighthouse a lo largo del tiempo para detectar regresiones antes que tus usuarios." + }, + "strategy": { + "desktop": "Escritorio", + "mobile": "Móvil" } }, "settings": { @@ -1254,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "Rechazar certificados inválidos: Rechazar conexiones con certificados autofirmados o no confiables" + }, + "displayName": { + "label": "Nombre del remitente (opcional) - Nombre amigable mostrado en el campo De", + "placeholder": "Notificaciones de Checkmate" } } }, @@ -1314,6 +1352,20 @@ "uptime": { "title": "Tiempo de actividad", "responseTime": "Tiempo de respuesta" + }, + "chart": { + "avg": "prom {{value}}ms", + "downTooltip": "Caído", + "heatmapAria": "Mapa de calor del tiempo de respuesta", + "max": "máx {{value}}ms" + }, + "status": { + "breached": "Umbral superado", + "down": "Caído", + "initializing": "Inicializando", + "maintenance": "Mantenimiento", + "paused": "Pausado", + "up": "Operativo" } }, "statusBar": { @@ -1331,7 +1383,9 @@ "maintenance": "Algunos sistemas están en mantenimiento", "partiallyPaused": "Algunos sistemas están en pausa", "initializing": "Algunos sistemas se están inicializando", - "noMonitors": "No se ha configurado ningún monitor" + "noMonitors": "No se ha configurado ningún monitor", + "monitoringSummary": "Monitoreando {{count}} servicio · Actualizaciones cada 10 segundos", + "monitoringSummary_other": "Monitoreando {{count}} servicios · Actualizaciones cada 10 segundos" }, "table": { "headers": { @@ -1422,18 +1476,47 @@ "label": "Mostrar métricas de infraestructura" } } + }, + "theme": { + "description": "Elige el estilo visual para tu página de estado pública.", + "label": "Tema", + "options": { + "bold": { + "description": "Tipografía grande y espaciado confiado. Ideal para páginas centradas en la marca.", + "name": "Audaz" + }, + "editorial": { + "description": "Encabezados con serifa y divisores finos. Distintivo y tranquilo.", + "name": "Editorial" + }, + "modern": { + "description": "Calidad SaaS con un punto de estado pulsante y tarjetas que se desvanecen suavemente.", + "name": "Moderno" + }, + "refined": { + "description": "Limpio, profesional, cercano al aspecto clásico de Checkmate.", + "name": "Refinado" + } + }, + "title": "Tema de la página" + }, + "themeMode": { + "auto": "Automático (seguir dispositivo del visitante)", + "dark": "Solo oscuro", + "label": "Modo de tema", + "light": "Solo claro" } }, "header": { "title": "Páginas de estado", "description": "Publica páginas públicas que muestren a tus clientes y partes interesadas la disponibilidad en tiempo real y el historial de incidentes." }, - "publicPage": { - "maintenance": { - "upcoming": "Mantenimiento programado", - "inProgress": "Mantenimiento en curso", - "completed": "Mantenimiento completado" - } + "editorial": { + "allUp": "Todos los sistemas funcionan con normalidad.", + "reportTitle": "Informe de servicio" + }, + "footer": { + "poweredBy": "Desarrollado por" } }, "uptime": { diff --git a/client/src/locales/fi.json b/client/src/locales/fi.json index 0fcf71906..f7e69775b 100644 --- a/client/src/locales/fi.json +++ b/client/src/locales/fi.json @@ -73,7 +73,9 @@ "paused": "keskeytetty", "na": "Ei saatavilla", "resolved": "Ratkaistu", - "responseTime": "Vasteaika" + "responseTime": "Vasteaika", + "idle": "Toimeton", + "running": "Käynnissä" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "Aktiivinen", "responseTime": "Vasteaika" } + }, + "statusCode": { + "down": "Alhaalla", + "networkError": { + "dns": "Isäntänimeä ei voitu selvittää (DNS-haku epäonnistui).", + "refused": "Palvelin hylkäsi yhteyden (portti suljettu tai palvelu ei kuuntele).", + "reset": "Yhteys nollattiin ennen vastauksen vastaanottamista.", + "timeout": "Palvelin ei vastannut ajoissa (pyynnön aikakatkaisu).", + "tls": "TLS- tai SSL-kättely epäonnistui (sertifikaatti- tai salausongelma).", + "unknown": "Kohteesta ei vastaanotettu HTTP-vastausta." + } } }, "components": { @@ -306,28 +319,28 @@ "common": { "passwordRules": { "length": { - "beginning": "", - "highlighted": "" + "beginning": "Vähintään", + "highlighted": "8 merkkiä pitkä" }, "lowercase": { - "beginning": "", - "highlighted": "" + "beginning": "Sisällettävä vähintään", + "highlighted": "yksi pieni kirjain" }, "match": { - "beginning": "", - "highlighted": "" + "beginning": "Salasanat", + "highlighted": "täytyy täsmätä" }, "number": { - "beginning": "", - "highlighted": "" + "beginning": "Sisällettävä vähintään", + "highlighted": "yksi numero" }, "special": { - "beginning": "", - "highlighted": "" + "beginning": "Sisällettävä vähintään", + "highlighted": "yksi erikoismerkki (!?@#$%^&*()-_=+[]{}|;:'\",./\\~`)" }, "uppercase": { - "beginning": "", - "highlighted": "" + "beginning": "Sisällettävä vähintään", + "highlighted": "yksi iso kirjain" } }, "form": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "Infrastruktuuri", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "{{count}} näyttö keskeytetty", @@ -483,9 +497,9 @@ }, "matchMethod": { "label": "Vertailutapa", - "equal": "", - "include": "", - "regex": "" + "equal": "Yhtä suuri", + "include": "Sisältää", + "regex": "Säännöllinen lauseke" } }, "title": "Lisäasetukset" @@ -497,15 +511,15 @@ "label": "Tarkistusväli", "value": { "fifteenMinutes": "15 minuuttia", - "fifteenSeconds": "", + "fifteenSeconds": "15 sekuntia", "fiveMinutes": "5 minuuttia", - "fourMinutes": "", - "oneMinute": "", + "fourMinutes": "4 minuuttia", + "oneMinute": "1 minuutti", "tenMinutes": "10 minuuttia", "thirtyMinutes": "30 minuuttia", - "thirtySeconds": "", - "threeMinutes": "", - "twoMinutes": "" + "thirtySeconds": "30 sekuntia", + "threeMinutes": "3 minuuttia", + "twoMinutes": "2 minuuttia" } } }, @@ -534,8 +548,8 @@ "placeholder": "https://www.google.com" }, "game": { - "label": "", - "placeholder": "" + "label": "Valitse peli", + "placeholder": "Valitse peli" }, "port": { "label": "Monitoroitava portti", @@ -552,19 +566,40 @@ "captureUrl": { "label": "Capture-päätepiste", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "DNS-tietuetyyppi", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "DNS-palvelin", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "Työpöytä", + "label": "Strategia", + "mobile": "Mobiili" } }, "title": "Yleiset asetukset", "description": { "http": "Syötä monitoroitava URL tai IP (esim. https://example.com/ tai 192.168.1.100) ja lisää selkeä näyttönimi, joka näkyy hallintapaneelissa.", - "ping": "", - "port": "", - "docker": "", + "ping": "Anna pingattava IP-osoite tai isäntänimi (esim. 192.168.1.100 tai example.com) ja lisää selkeä näyttönimi, joka näkyy hallintapaneelissa.", + "port": "Anna palvelimen URL tai IP, portin numero ja selkeä näyttönimi, joka näkyy hallintapaneelissa.", + "docker": "Anna Docker-kontin nimi tai tunnus. Voit käyttää joko kontin nimeä (esim. my-app) tai kontin tunnusta (täysi 64-merkkinen tunnus tai lyhyt tunnus).", "game": "Anna IP-osoite tai isäntänimi ja portin numero pingausta varten (esim. 192.168.1.100 tai example.com) ja valitse pelityyppi. Jotkin pelit vaativat palvelinkyselyiden käyttöönoton asetustiedostossaan — tarkista pelipalvelimesi dokumentaatio. Katso protokollatiedot tuettujen pelien luettelosta.", "pagespeed": "Seuraa sivun latausnopeutta, Core Web Vitals -arvoja ja optimointipisteitä verkkosivustollasi.", "grpc": "Syötä gRPC-palvelimen isäntänimi ja portti, määritä halutessasi palvelun nimi terveystarkistusta varten ja lisää näyttönimi.", "websocket": "Syötä monitoroitava WebSocket URL (esim. wss://example.com/socket) ja lisää näyttönimi.", - "hardware": "Seuraa infrastruktuurisi suorittimen, muistin, levyn käyttöä ja lämpötilaa. Capture-päätepisteen URL-osoitteen on sisällettävä koko polku /api/v1/metrics (esim. http://192.168.1.10:5001/api/v1/metrics). Liitä valtuutusavaimeen vain tokenin merkkijono — älä sisällytä sanaa 'Bearer'." + "hardware": "Seuraa infrastruktuurisi suorittimen, muistin, levyn käyttöä ja lämpötilaa. Capture-päätepisteen URL-osoitteen on sisällettävä koko polku /api/v1/metrics (esim. http://192.168.1.10:5001/api/v1/metrics). Liitä valtuutusavaimeen vain tokenin merkkijono — älä sisällytä sanaa 'Bearer'.", + "dns": "Tarkkaile, vastaako tietty DNS-palvelin." } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "Käytä HTTP(S)-protokollaa verkkosivustosi tai API-päätepisteen monitorointiin.", "optionPingDescription": "Käytä ICMP Ping -komentoa monitoroimaan, onko palvelin verkossa.", "optionPortDescription": "Monitoroi, onko tietty palvelimen portti auki.", - "title": "Tyyppi" + "title": "Tyyppi", + "optionDnsDescription": "Tarkkaile, vastaako tietty DNS-palvelin." }, "thresholds": { "title": "Hälytysrajat", @@ -765,7 +801,7 @@ "headers": { "endTime": "Päättymisaika", "resolutionType": "Ratkaisun tyyppi", - "startTime": "", + "startTime": "Aloitusaika", "statusCode": "Tilakoodi" }, "resolvedIncidents": "Ratkaistut häiriöt", @@ -809,13 +845,13 @@ } }, "statBoxes": { - "avgCpuTemperature": "", - "cpuFrequency": "", - "cpuLogical": "", - "cpuPhysical": "", + "avgCpuTemperature": "Keskimääräinen CPU-lämpötila", + "cpuFrequency": "CPU-taajuus", + "cpuLogical": "CPU (looginen)", + "cpuPhysical": "CPU (fyysinen)", "disk": "Levy", "memory": "Muisti", - "os": "" + "os": "Käyttöjärjestelmä" }, "table": { "headers": { @@ -826,7 +862,7 @@ }, "tabs": { "labels": { - "network": "", + "network": "Verkko", "overview": "Yleiskatsaus" } }, @@ -909,7 +945,8 @@ "lastFinishedAt": "Viimeisin valmistuminen", "lastRunTook": "Viimeisin suoritus kesti", "lastFailedAt": "Viimeisin epäonnistuminen", - "failReason": "Epäonnistumisen syy" + "failReason": "Epäonnistumisen syy", + "state": "Tila" } }, "queueFallback": { @@ -929,8 +966,8 @@ }, "table": { "headers": { - "nextWindow": "", - "repeat": "" + "nextWindow": "Seuraava ikkuna", + "repeat": "Toista" } }, "form": { @@ -1032,7 +1069,7 @@ }, "telegram": { "title": "Telegram-määritykset", - "description": "", + "description": "Määritä Telegram-bottisi lähettämään ilmoituksia.", "optionBotToken": "Bottitunniste", "placeholderBotToken": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "optionChatId": "Chat-tunnus", @@ -1099,6 +1136,10 @@ "header": { "title": "PageSpeed-monitorit", "description": "Seuraa Core Web Vitals -mittareita ja Lighthouse-pisteitä ajan mittaan ja huomaa heikennykset ennen käyttäjiä." + }, + "strategy": { + "desktop": "Työpöytä", + "mobile": "Mobiili" } }, "settings": { @@ -1201,7 +1242,7 @@ "email": { "title": "Sähköpostiasetukset", "description": "Määritä järjestelmäsi sähköpostiasetukset. Niitä käytetään ilmoitusten ja hälytysten lähettämiseen.", - "descriptionTransport": "", + "descriptionTransport": "Tämä rakentaa SMTP-kuljetuksen NodeMailerille", "descriptionTransportLink": "Katso tekniset tiedot täältä", "option": { "host": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "Hylkää virheelliset varmenteet: Hylkää yhteydet itseallekirjoitetuilla tai ei-luotetuilla varmenteilla" + }, + "displayName": { + "label": "Lähettäjän nimi (valinnainen) - Lähettäjäkentässä näkyvä ystävällinen nimi", + "placeholder": "Checkmate-ilmoitukset" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "Käytettävyys", "responseTime": "Vasteaika" + }, + "chart": { + "avg": "ka {{value}}ms", + "downTooltip": "Alhaalla", + "heatmapAria": "Vasteajan lämpökartta", + "max": "max {{value}}ms" + }, + "status": { + "breached": "Kynnys ylittyi", + "down": "Alhaalla", + "initializing": "Alustetaan", + "maintenance": "Huolto", + "paused": "Keskeytetty", + "up": "Toiminnassa" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "Jotkin järjestelmät ovat huollossa", "partiallyPaused": "Jotkin järjestelmät on keskeytetty", "initializing": "Jotkin järjestelmät alustuvat", - "noMonitors": "Yhtään monitoria ei ole määritetty" + "noMonitors": "Yhtään monitoria ei ole määritetty", + "monitoringSummary": "Tarkkaillaan {{count}} palvelua · Päivitykset 10 sekunnin välein", + "monitoringSummary_other": "Tarkkaillaan {{count}} palvelua · Päivitykset 10 sekunnin välein" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "Näytä infrastruktuurin mittarit" } } + }, + "theme": { + "description": "Valitse julkisen tilasivusi visuaalinen tyyli.", + "label": "Teema", + "options": { + "bold": { + "description": "Suuri typografia ja itsevarma välistys. Sopii brändilähtöisille sivuille.", + "name": "Rohkea" + }, + "editorial": { + "description": "Antiikvaotsikot ja ohuet erottimet. Erottuva ja rauhallinen.", + "name": "Toimituksellinen" + }, + "modern": { + "description": "SaaS-tasoa sykkivällä tilapisteellä ja pehmeästi haalistuvilla korteilla.", + "name": "Moderni" + }, + "refined": { + "description": "Siisti, ammattimainen, lähellä klassista Checkmate-ilmettä.", + "name": "Hienostunut" + } + }, + "title": "Sivun teema" + }, + "themeMode": { + "auto": "Automaattinen (seuraa vierailijan laitetta)", + "dark": "Vain tumma", + "label": "Teematila", + "light": "Vain vaalea" } }, "header": { "title": "Tilasivut", "description": "Julkaise julkisia sivuja, jotka näyttävät asiakkaille ja sidosryhmille reaaliaikaisen käytettävyyden ja tapaushistorian." + }, + "editorial": { + "allUp": "Kaikki järjestelmät toimivat normaalisti.", + "reportTitle": "Palveluraportti" + }, + "footer": { + "poweredBy": "Tarjoaa" } }, "uptime": { diff --git a/client/src/locales/fr.json b/client/src/locales/fr.json index c35956b46..d398864e2 100644 --- a/client/src/locales/fr.json +++ b/client/src/locales/fr.json @@ -73,7 +73,9 @@ "paused": "en pause", "na": "N/A", "resolved": "Résolu", - "responseTime": "Temps de réponse" + "responseTime": "Temps de réponse", + "idle": "Inactif", + "running": "En cours d'exécution" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "Actif", "responseTime": "Temps de réponse" } + }, + "statusCode": { + "down": "Hors service", + "networkError": { + "dns": "Impossible de résoudre le nom d'hôte (échec de la recherche DNS).", + "refused": "Le serveur a refusé la connexion (port fermé ou service non à l'écoute).", + "reset": "La connexion a été réinitialisée avant la réception d'une réponse.", + "timeout": "Le serveur n'a pas répondu à temps (délai d'attente dépassé).", + "tls": "Échec de la négociation TLS ou SSL (problème de certificat ou de chiffrement).", + "unknown": "Aucune réponse HTTP reçue de la cible." + } } }, "components": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "Infrastructure", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "{{count}} moniteur en pause", @@ -534,8 +548,8 @@ "placeholder": "https://www.google.com" }, "game": { - "label": "", - "placeholder": "" + "label": "Choisir un jeu", + "placeholder": "Sélectionner un jeu" }, "port": { "label": "Port à surveiller", @@ -552,6 +566,26 @@ "captureUrl": { "label": "Point de terminaison Capture", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "Type d'enregistrement DNS", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "Serveur DNS", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "Bureau", + "label": "Stratégie", + "mobile": "Mobile" } }, "title": "Paramètres généraux", @@ -564,7 +598,8 @@ "pagespeed": "Suivez les performances de chargement, les Core Web Vitals et les scores d'optimisation de votre site web.", "grpc": "Saisissez le nom d'hôte et le port du serveur gRPC, spécifiez éventuellement un nom de service pour le bilan de santé, et ajoutez un nom d'affichage.", "websocket": "Saisissez l'URL WebSocket à surveiller (ex. wss://example.com/socket) et ajoutez un nom d'affichage.", - "hardware": "Surveillez l'utilisation du processeur, de la mémoire, du disque et la température de votre infrastructure. L'URL du point de terminaison Capture doit inclure le chemin complet /api/v1/metrics (par ex. http://192.168.1.10:5001/api/v1/metrics). Pour le secret d'autorisation, collez uniquement la chaîne du jeton — n'incluez pas 'Bearer'." + "hardware": "Surveillez l'utilisation du processeur, de la mémoire, du disque et la température de votre infrastructure. L'URL du point de terminaison Capture doit inclure le chemin complet /api/v1/metrics (par ex. http://192.168.1.10:5001/api/v1/metrics). Pour le secret d'autorisation, collez uniquement la chaîne du jeton — n'incluez pas 'Bearer'.", + "dns": "Surveillez si un serveur DNS spécifique répond." } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "Utilisez HTTP(S) pour surveiller votre site web ou point de terminaison API.", "optionPingDescription": "Utilisez le Ping ICMP pour surveiller si un serveur est en ligne.", "optionPortDescription": "Surveillez si un port spécifique sur un serveur est ouvert.", - "title": "Type" + "title": "Type", + "optionDnsDescription": "Surveillez si un serveur DNS spécifique répond." }, "thresholds": { "title": "Seuils d'alerte", @@ -826,7 +862,7 @@ }, "tabs": { "labels": { - "network": "", + "network": "Réseau", "overview": "Aperçu" } }, @@ -909,7 +945,8 @@ "lastFinishedAt": "Dernière fin", "lastRunTook": "Durée dernière exécution", "lastFailedAt": "Dernier échec", - "failReason": "Raison de l'échec" + "failReason": "Raison de l'échec", + "state": "État" } }, "queueFallback": { @@ -1099,6 +1136,10 @@ "header": { "title": "Moniteurs PageSpeed", "description": "Suivez les Core Web Vitals et les scores Lighthouse au fil du temps pour détecter les régressions avant vos utilisateurs." + }, + "strategy": { + "desktop": "Bureau", + "mobile": "Mobile" } }, "settings": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "Rejeter les certificats invalides : refuser les connexions avec des certificats auto-signés ou non fiables" + }, + "displayName": { + "label": "Nom de l'expéditeur (facultatif) - Nom convivial affiché dans le champ De", + "placeholder": "Notifications Checkmate" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "Disponibilité", "responseTime": "Temps de réponse" + }, + "chart": { + "avg": "moy {{value}}ms", + "downTooltip": "Hors service", + "heatmapAria": "Carte thermique des temps de réponse", + "max": "max {{value}}ms" + }, + "status": { + "breached": "Seuil dépassé", + "down": "Hors service", + "initializing": "Initialisation", + "maintenance": "Maintenance", + "paused": "En pause", + "up": "Opérationnel" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "Certains systèmes sont en maintenance", "partiallyPaused": "Certains systèmes sont en pause", "initializing": "Certains systèmes sont en cours d'initialisation", - "noMonitors": "Aucun moniteur n'a été configuré" + "noMonitors": "Aucun moniteur n'a été configuré", + "monitoringSummary": "Surveillance de {{count}} service · Mises à jour toutes les 10 secondes", + "monitoringSummary_other": "Surveillance de {{count}} services · Mises à jour toutes les 10 secondes" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "Afficher les métriques d'infrastructure" } } + }, + "theme": { + "description": "Choisissez le style visuel de votre page de statut publique.", + "label": "Thème", + "options": { + "bold": { + "description": "Grande typographie et espacement assuré. Idéal pour les pages axées sur la marque.", + "name": "Audacieux" + }, + "editorial": { + "description": "Titres avec serif et séparateurs fins. Distinctif et calme.", + "name": "Éditorial" + }, + "modern": { + "description": "Qualité SaaS avec un point de statut pulsant et des cartes qui s'estompent doucement.", + "name": "Moderne" + }, + "refined": { + "description": "Propre, professionnel, proche du look classique de Checkmate.", + "name": "Raffiné" + } + }, + "title": "Thème de la page" + }, + "themeMode": { + "auto": "Automatique (selon l'appareil du visiteur)", + "dark": "Sombre uniquement", + "label": "Mode de thème", + "light": "Clair uniquement" } }, "header": { "title": "Pages de statut", "description": "Publiez des pages publiques montrant à vos clients et parties prenantes la disponibilité en temps réel et l'historique des incidents." + }, + "editorial": { + "allUp": "Tous les systèmes fonctionnent normalement.", + "reportTitle": "Rapport de service" + }, + "footer": { + "poweredBy": "Propulsé par" } }, "uptime": { diff --git a/client/src/locales/ja.json b/client/src/locales/ja.json index ecd1b7e87..af53ce232 100644 --- a/client/src/locales/ja.json +++ b/client/src/locales/ja.json @@ -73,7 +73,9 @@ "paused": "一時停止中", "na": "N/A", "resolved": "解決済み", - "responseTime": "応答時間" + "responseTime": "応答時間", + "idle": "アイドル", + "running": "実行中" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "アクティブ", "responseTime": "応答時間" } + }, + "statusCode": { + "down": "ダウン", + "networkError": { + "dns": "ホスト名を解決できませんでした(DNSルックアップに失敗)。", + "refused": "サーバーが接続を拒否しました(ポートが閉じているか、サービスがリッスンしていません)。", + "reset": "応答を受信する前に接続がリセットされました。", + "timeout": "サーバーがタイムアウト内に応答しませんでした(リクエストタイムアウト)。", + "tls": "TLSまたはSSLハンドシェイクに失敗しました(証明書または暗号化の問題)。", + "unknown": "ターゲットからのHTTP応答がありませんでした。" + } } }, "components": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "インフラストラクチャ", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "{{count}} 個のモニターを一時停止しました", @@ -483,9 +497,9 @@ }, "matchMethod": { "label": "マッチ方法", - "equal": "", - "include": "", - "regex": "" + "equal": "等しい", + "include": "含む", + "regex": "正規表現" } }, "title": "詳細設定" @@ -497,15 +511,15 @@ "label": "チェック頻度", "value": { "fifteenMinutes": "15分", - "fifteenSeconds": "", + "fifteenSeconds": "15秒", "fiveMinutes": "5分", - "fourMinutes": "", - "oneMinute": "", + "fourMinutes": "4分", + "oneMinute": "1分", "tenMinutes": "10分", "thirtyMinutes": "30分", - "thirtySeconds": "", + "thirtySeconds": "30秒", "threeMinutes": "3分", - "twoMinutes": "" + "twoMinutes": "2分" } } }, @@ -534,8 +548,8 @@ "placeholder": "https://www.google.com" }, "game": { - "label": "", - "placeholder": "" + "label": "ゲームを選択", + "placeholder": "ゲームを選択" }, "port": { "label": "監視するポート", @@ -552,6 +566,26 @@ "captureUrl": { "label": "Capture エンドポイント", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "DNSレコードタイプ", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "DNSサーバー", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "デスクトップ", + "label": "ストラテジー", + "mobile": "モバイル" } }, "title": "一般設定", @@ -564,7 +598,8 @@ "pagespeed": "Webサイトのページ読み込みパフォーマンス、Core Web Vitals、最適化スコアを追跡します。", "grpc": "gRPCサーバーのホスト名とポートを入力し、必要に応じてヘルスチェック用のサービス名を指定し、表示名を追加してください。", "websocket": "監視するWebSocket URLを入力し(例: wss://example.com/socket)、表示名を追加してください。", - "hardware": "インフラの CPU、メモリ、ディスク使用率、温度を監視します。Capture エンドポイント URL には完全なパス /api/v1/metrics を含める必要があります (例: http://192.168.1.10:5001/api/v1/metrics)。認証シークレットにはトークン文字列のみを貼り付けてください — 'Bearer' は含めないでください。" + "hardware": "インフラの CPU、メモリ、ディスク使用率、温度を監視します。Capture エンドポイント URL には完全なパス /api/v1/metrics を含める必要があります (例: http://192.168.1.10:5001/api/v1/metrics)。認証シークレットにはトークン文字列のみを貼り付けてください — 'Bearer' は含めないでください。", + "dns": "特定のDNSサーバーが応答しているかを監視します。" } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "HTTP(S)を使用してWebサイトまたはAPIエンドポイントを監視します。", "optionPingDescription": "ICMP Pingを使用してサーバーがオンラインかどうかを監視します。", "optionPortDescription": "サーバーの特定のポートが開いているかどうかを監視します。", - "title": "タイプ" + "title": "タイプ", + "optionDnsDescription": "特定のDNSサーバーが応答しているかを監視します。" }, "thresholds": { "title": "アラートしきい値", @@ -826,7 +862,7 @@ }, "tabs": { "labels": { - "network": "", + "network": "ネットワーク", "overview": "概要" } }, @@ -909,7 +945,8 @@ "lastFinishedAt": "最終完了日時", "lastRunTook": "最終実行時間", "lastFailedAt": "最終失敗日時", - "failReason": "失敗理由" + "failReason": "失敗理由", + "state": "状態" } }, "queueFallback": { @@ -1099,6 +1136,10 @@ "header": { "title": "PageSpeed監視", "description": "Core Web VitalsとLighthouseスコアを継続的に追跡し、ユーザーが気付く前に劣化を発見します。" + }, + "strategy": { + "desktop": "デスクトップ", + "mobile": "モバイル" } }, "settings": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "無効な証明書を拒否: 自己署名または信頼されていない証明書の接続を拒否" + }, + "displayName": { + "label": "送信者名(任意)- 差出人フィールドに表示されるわかりやすい名前", + "placeholder": "Checkmate通知" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "稼働時間", "responseTime": "応答時間" + }, + "chart": { + "avg": "平均 {{value}}ms", + "downTooltip": "ダウン", + "heatmapAria": "応答時間のヒートマップ", + "max": "最大 {{value}}ms" + }, + "status": { + "breached": "しきい値超過", + "down": "ダウン", + "initializing": "初期化中", + "maintenance": "メンテナンス", + "paused": "一時停止中", + "up": "稼働中" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "一部のシステムがメンテナンス中です", "partiallyPaused": "一部のシステムが一時停止中です", "initializing": "一部のシステムが初期化中です", - "noMonitors": "モニターが設定されていません" + "noMonitors": "モニターが設定されていません", + "monitoringSummary": "{{count}}サービスを監視中 · 10秒ごとに更新", + "monitoringSummary_other": "{{count}}サービスを監視中 · 10秒ごとに更新" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "インフラストラクチャメトリクスを表示" } } + }, + "theme": { + "description": "公開ステータスページの視覚スタイルを選択します。", + "label": "テーマ", + "options": { + "bold": { + "description": "大きな書体と自信のある間隔。ブランド中心のページに最適です。", + "name": "ボールド" + }, + "editorial": { + "description": "セリフ見出しと細い区切り線。独特で落ち着いています。", + "name": "エディトリアル" + }, + "modern": { + "description": "脈動するステータスドットと柔らかくフェードするカードを備えたSaaS品質。", + "name": "モダン" + }, + "refined": { + "description": "クリーンでプロフェッショナル、Checkmateのクラシックな外観に近い。", + "name": "リファインド" + } + }, + "title": "ページテーマ" + }, + "themeMode": { + "auto": "自動(訪問者のデバイスに従う)", + "dark": "ダークのみ", + "label": "テーマモード", + "light": "ライトのみ" } }, "header": { "title": "ステータスページ", "description": "顧客と関係者にリアルタイムの稼働状況とインシデント履歴を表示する公開ページを公開します。" + }, + "editorial": { + "allUp": "すべてのシステムは正常に動作しています。", + "reportTitle": "サービスレポート" + }, + "footer": { + "poweredBy": "提供元" } }, "uptime": { diff --git a/client/src/locales/pt-BR.json b/client/src/locales/pt-BR.json index 072239a49..1ab833c0c 100644 --- a/client/src/locales/pt-BR.json +++ b/client/src/locales/pt-BR.json @@ -73,7 +73,9 @@ "paused": "pausado", "na": "N/D", "resolved": "Resolvido", - "responseTime": "Tempo de resposta" + "responseTime": "Tempo de resposta", + "idle": "Inativo", + "running": "Em execução" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "Ativo", "responseTime": "Tempo de resposta" } + }, + "statusCode": { + "down": "Fora do ar", + "networkError": { + "dns": "Não foi possível resolver o nome do host (a busca DNS falhou).", + "refused": "O servidor recusou a conexão (porta fechada ou serviço não escutando).", + "reset": "A conexão foi redefinida antes que uma resposta fosse recebida.", + "timeout": "O servidor não respondeu a tempo (tempo limite da solicitação esgotado).", + "tls": "Falha no handshake TLS ou SSL (problema de certificado ou criptografia).", + "unknown": "Nenhuma resposta HTTP recebida do destino." + } } }, "components": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "Infraestrutura", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "{{count}} monitor pausado", @@ -483,8 +497,8 @@ }, "matchMethod": { "label": "Método de correspondência", - "equal": "", - "include": "", + "equal": "Igual", + "include": "Inclui", "regex": "Regex" } }, @@ -497,13 +511,13 @@ "label": "Frequência de verificação", "value": { "fifteenMinutes": "15 minutos", - "fifteenSeconds": "", + "fifteenSeconds": "15 segundos", "fiveMinutes": "5 minutos", "fourMinutes": "4 minutos", "oneMinute": "1 minuto", "tenMinutes": "10 minutos", "thirtyMinutes": "30 minutos", - "thirtySeconds": "", + "thirtySeconds": "30 segundos", "threeMinutes": "3 minutos", "twoMinutes": "2 minutos" } @@ -534,8 +548,8 @@ "placeholder": "https://www.google.com" }, "game": { - "label": "", - "placeholder": "" + "label": "Escolher jogo", + "placeholder": "Selecione um jogo" }, "port": { "label": "Porta para monitorar", @@ -552,6 +566,26 @@ "captureUrl": { "label": "Endpoint do Capture", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "Tipo de registro DNS", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "Servidor DNS", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "Desktop", + "label": "Estratégia", + "mobile": "Mobile" } }, "title": "Configurações gerais", @@ -564,7 +598,8 @@ "pagespeed": "Acompanhe o desempenho de carregamento da página, Core Web Vitals e pontuações de otimização do seu site.", "grpc": "Digite o hostname e a porta do servidor gRPC, opcionalmente especifique um nome de serviço para a verificação de saúde e adicione um nome de exibição.", "websocket": "Digite a URL do WebSocket para monitorar (ex.: wss://exemplo.com/socket) e adicione um nome de exibição.", - "hardware": "Monitore o uso de CPU, memória, disco e temperatura da sua infraestrutura. A URL do endpoint do Capture deve incluir o caminho completo /api/v1/metrics (por exemplo, http://192.168.1.10:5001/api/v1/metrics). Para a chave de autorização, cole apenas a string do token — não inclua 'Bearer'." + "hardware": "Monitore o uso de CPU, memória, disco e temperatura da sua infraestrutura. A URL do endpoint do Capture deve incluir o caminho completo /api/v1/metrics (por exemplo, http://192.168.1.10:5001/api/v1/metrics). Para a chave de autorização, cole apenas a string do token — não inclua 'Bearer'.", + "dns": "Monitore se um servidor DNS específico está respondendo." } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "Use HTTP(S) para monitorar seu site ou endpoint de API.", "optionPingDescription": "Use ICMP Ping para monitorar se um servidor está online.", "optionPortDescription": "Monitore se uma porta específica em um servidor está aberta.", - "title": "Tipo" + "title": "Tipo", + "optionDnsDescription": "Monitore se um servidor DNS específico está respondendo." }, "thresholds": { "title": "Limites de alerta", @@ -826,7 +862,7 @@ }, "tabs": { "labels": { - "network": "", + "network": "Rede", "overview": "Visão geral" } }, @@ -909,7 +945,8 @@ "lastFinishedAt": "Última conclusão em", "lastRunTook": "Última execução durou", "lastFailedAt": "Última falha em", - "failReason": "Motivo da falha" + "failReason": "Motivo da falha", + "state": "Estado" } }, "queueFallback": { @@ -1099,6 +1136,10 @@ "header": { "title": "Monitores PageSpeed", "description": "Acompanhe Core Web Vitals e pontuações do Lighthouse ao longo do tempo para detectar regressões antes dos seus usuários." + }, + "strategy": { + "desktop": "Desktop", + "mobile": "Mobile" } }, "settings": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "Rejeitar certificados inválidos: Rejeitar conexões com certificados autoassinados ou não confiáveis" + }, + "displayName": { + "label": "Nome do remetente (opcional) - Nome amigável exibido no campo De", + "placeholder": "Notificações do Checkmate" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "Uptime", "responseTime": "Tempo de resposta" + }, + "chart": { + "avg": "méd {{value}}ms", + "downTooltip": "Fora do ar", + "heatmapAria": "Mapa de calor do tempo de resposta", + "max": "máx {{value}}ms" + }, + "status": { + "breached": "Limite excedido", + "down": "Fora do ar", + "initializing": "Inicializando", + "maintenance": "Manutenção", + "paused": "Pausado", + "up": "Operacional" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "Alguns sistemas estão em manutenção", "partiallyPaused": "Alguns sistemas estão pausados", "initializing": "Alguns sistemas estão inicializando", - "noMonitors": "Nenhum monitor foi configurado" + "noMonitors": "Nenhum monitor foi configurado", + "monitoringSummary": "Monitorando {{count}} serviço · Atualizações a cada 10 segundos", + "monitoringSummary_other": "Monitorando {{count}} serviços · Atualizações a cada 10 segundos" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "Mostrar métricas de infraestrutura" } } + }, + "theme": { + "description": "Escolha o estilo visual da sua página de status pública.", + "label": "Tema", + "options": { + "bold": { + "description": "Tipografia grande e espaçamento confiante. Ótimo para páginas voltadas à marca.", + "name": "Negrito" + }, + "editorial": { + "description": "Títulos com serifa e divisores finos. Distinto e calmo.", + "name": "Editorial" + }, + "modern": { + "description": "Qualidade SaaS com um ponto de status pulsante e cartões que desaparecem suavemente.", + "name": "Moderno" + }, + "refined": { + "description": "Limpo, profissional, próximo ao visual clássico do Checkmate.", + "name": "Refinado" + } + }, + "title": "Tema da página" + }, + "themeMode": { + "auto": "Automático (seguir dispositivo do visitante)", + "dark": "Apenas escuro", + "label": "Modo de tema", + "light": "Apenas claro" } }, "header": { "title": "Páginas de status", "description": "Publique páginas públicas que mostram aos seus clientes e partes interessadas o tempo de atividade em tempo real e o histórico de incidentes." + }, + "editorial": { + "allUp": "Todos os sistemas estão operando normalmente.", + "reportTitle": "Relatório de serviço" + }, + "footer": { + "poweredBy": "Desenvolvido por" } }, "uptime": { diff --git a/client/src/locales/ru.json b/client/src/locales/ru.json index c6282e75a..c6f247ba8 100644 --- a/client/src/locales/ru.json +++ b/client/src/locales/ru.json @@ -73,7 +73,9 @@ "paused": "приостановлен", "na": "Н/Д", "resolved": "Решён", - "responseTime": "Время ответа" + "responseTime": "Время ответа", + "idle": "Бездействие", + "running": "Выполняется" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "Активный", "responseTime": "Время ответа" } + }, + "statusCode": { + "down": "Не работает", + "networkError": { + "dns": "Не удалось разрешить имя хоста (поиск DNS не удался).", + "refused": "Сервер отказал в соединении (порт закрыт или служба не прослушивает).", + "reset": "Соединение было сброшено до получения ответа.", + "timeout": "Сервер не ответил вовремя (тайм-аут запроса).", + "tls": "Сбой рукопожатия TLS или SSL (проблема с сертификатом или шифрованием).", + "unknown": "HTTP-ответ от цели не получен." + } } }, "components": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "Инфраструктура", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "{{count}} монитор приостановлен", @@ -552,6 +566,26 @@ "captureUrl": { "label": "Эндпоинт Capture", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "Тип записи DNS", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "DNS-сервер", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "Десктоп", + "label": "Стратегия", + "mobile": "Мобильный" } }, "title": "Основные настройки", @@ -564,7 +598,8 @@ "pagespeed": "Отслеживайте производительность загрузки, Core Web Vitals и показатели оптимизации для Вашего сайта.", "grpc": "Введите имя хоста и порт gRPC-сервера, при необходимости укажите имя сервиса для проверки состояния и добавьте отображаемое имя.", "websocket": "Введите WebSocket URL для мониторинга (напр., wss://example.com/socket) и добавьте отображаемое имя.", - "hardware": "Отслеживайте использование ЦП, памяти, диска и температуру вашей инфраструктуры. URL эндпоинта Capture должен включать полный путь /api/v1/metrics (например, http://192.168.1.10:5001/api/v1/metrics). В секрете авторизации укажите только строку токена — не включайте 'Bearer'." + "hardware": "Отслеживайте использование ЦП, памяти, диска и температуру вашей инфраструктуры. URL эндпоинта Capture должен включать полный путь /api/v1/metrics (например, http://192.168.1.10:5001/api/v1/metrics). В секрете авторизации укажите только строку токена — не включайте 'Bearer'.", + "dns": "Отслеживайте, отвечает ли конкретный DNS-сервер." } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "Используйте HTTP(S) для мониторинга Вашего сайта или API-эндпоинта.", "optionPingDescription": "Используйте ICMP Ping для проверки доступности сервера.", "optionPortDescription": "Мониторинг доступности определённого порта на сервере.", - "title": "Тип" + "title": "Тип", + "optionDnsDescription": "Отслеживайте, отвечает ли конкретный DNS-сервер." }, "thresholds": { "title": "Пороги оповещений", @@ -909,7 +945,8 @@ "lastFinishedAt": "Последнее завершение", "lastRunTook": "Последний запуск занял", "lastFailedAt": "Последняя ошибка", - "failReason": "Причина ошибки" + "failReason": "Причина ошибки", + "state": "Состояние" } }, "queueFallback": { @@ -1099,6 +1136,10 @@ "header": { "title": "Мониторы PageSpeed", "description": "Отслеживайте Core Web Vitals и оценки Lighthouse во времени, чтобы заметить регрессии раньше пользователей." + }, + "strategy": { + "desktop": "Десктоп", + "mobile": "Мобильный" } }, "settings": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "Отклонять недействительные сертификаты: отклонять соединения с самоподписанными или ненадёжными сертификатами" + }, + "displayName": { + "label": "Имя отправителя (необязательно) - Понятное имя в поле От", + "placeholder": "Уведомления Checkmate" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "Аптайм", "responseTime": "Время ответа" + }, + "chart": { + "avg": "ср {{value}}мс", + "downTooltip": "Не работает", + "heatmapAria": "Тепловая карта времени отклика", + "max": "макс {{value}}мс" + }, + "status": { + "breached": "Превышен порог", + "down": "Не работает", + "initializing": "Инициализация", + "maintenance": "Обслуживание", + "paused": "Приостановлено", + "up": "Работает" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "Некоторые системы на техобслуживании", "partiallyPaused": "Некоторые системы приостановлены", "initializing": "Некоторые системы инициализируются", - "noMonitors": "Мониторы не настроены" + "noMonitors": "Мониторы не настроены", + "monitoringSummary": "Отслеживается {{count}} сервис · Обновление каждые 10 секунд", + "monitoringSummary_other": "Отслеживается {{count}} сервисов · Обновление каждые 10 секунд" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "Показывать метрики инфраструктуры" } } + }, + "theme": { + "description": "Выберите визуальный стиль для вашей публичной страницы состояния.", + "label": "Тема", + "options": { + "bold": { + "description": "Крупная типографика и уверенные отступы. Отлично подходит для брендовых страниц.", + "name": "Жирный" + }, + "editorial": { + "description": "Заголовки с засечками и тонкие разделители. Отличительный и спокойный.", + "name": "Редакционный" + }, + "modern": { + "description": "Уровень SaaS с пульсирующей точкой состояния и плавно исчезающими карточками.", + "name": "Современный" + }, + "refined": { + "description": "Чистый, профессиональный, близкий к классическому виду Checkmate.", + "name": "Утонченный" + } + }, + "title": "Тема страницы" + }, + "themeMode": { + "auto": "Авто (по устройству посетителя)", + "dark": "Только темная", + "label": "Режим темы", + "light": "Только светлая" } }, "header": { "title": "Страницы состояния", "description": "Публикуйте публичные страницы со временем работы и историей инцидентов для клиентов и заинтересованных сторон." + }, + "editorial": { + "allUp": "Все системы работают в нормальном режиме.", + "reportTitle": "Отчет о сервисе" + }, + "footer": { + "poweredBy": "Работает на" } }, "uptime": { diff --git a/client/src/locales/th.json b/client/src/locales/th.json index 14e7d5947..34a0755fc 100644 --- a/client/src/locales/th.json +++ b/client/src/locales/th.json @@ -73,7 +73,9 @@ "paused": "หยุดชั่วคราว", "na": "ไม่มีข้อมูล", "resolved": "แก้ไขแล้ว", - "responseTime": "เวลาตอบสนอง" + "responseTime": "เวลาตอบสนอง", + "idle": "ไม่ทำงาน", + "running": "กำลังทำงาน" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "ใช้งานอยู่", "responseTime": "เวลาตอบสนอง" } + }, + "statusCode": { + "down": "ไม่พร้อมใช้งาน", + "networkError": { + "dns": "ไม่สามารถแก้ไขชื่อโฮสต์ได้ (การค้นหา DNS ล้มเหลว)", + "refused": "เซิร์ฟเวอร์ปฏิเสธการเชื่อมต่อ (พอร์ตปิดอยู่หรือบริการไม่ได้รับฟัง)", + "reset": "การเชื่อมต่อถูกรีเซ็ตก่อนที่จะได้รับการตอบกลับ", + "timeout": "เซิร์ฟเวอร์ไม่ตอบกลับทันเวลา (คำขอหมดเวลา)", + "tls": "การจับมือ TLS หรือ SSL ล้มเหลว (ปัญหาใบรับรองหรือการเข้ารหัส)", + "unknown": "ไม่ได้รับการตอบกลับ HTTP จากเป้าหมาย" + } } }, "components": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "โครงสร้างพื้นฐาน", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "หยุดจอภาพชั่วคราว {{count}} จอ", @@ -552,6 +566,26 @@ "captureUrl": { "label": "ปลายทาง Capture", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "ประเภทเรกคอร์ด DNS", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "เซิร์ฟเวอร์ DNS", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "เดสก์ท็อป", + "label": "กลยุทธ์", + "mobile": "มือถือ" } }, "title": "ตั้งค่าทั่วไป", @@ -564,7 +598,8 @@ "pagespeed": "ติดตามประสิทธิภาพการโหลดหน้า Core Web Vitals และคะแนนการเพิ่มประสิทธิภาพของเว็บไซต์", "grpc": "กรอกชื่อโฮสต์และพอร์ตของเซิร์ฟเวอร์ gRPC ระบุชื่อบริการสำหรับ health check (ไม่บังคับ) และตั้งชื่อที่แสดง", "websocket": "กรอก URL ของ WebSocket ที่ต้องการตรวจสอบ (เช่น wss://example.com/socket) และตั้งชื่อที่แสดง", - "hardware": "ตรวจสอบการใช้ CPU หน่วยความจำ ดิสก์ และอุณหภูมิของโครงสร้างพื้นฐานของคุณ URL ของปลายทาง Capture ต้องรวมเส้นทางแบบเต็ม /api/v1/metrics (ตัวอย่าง: http://192.168.1.10:5001/api/v1/metrics) สำหรับรหัสลับสำหรับยืนยันตัวตน ให้วางเฉพาะสตริงโทเค็น — อย่ารวมคำว่า 'Bearer'" + "hardware": "ตรวจสอบการใช้ CPU หน่วยความจำ ดิสก์ และอุณหภูมิของโครงสร้างพื้นฐานของคุณ URL ของปลายทาง Capture ต้องรวมเส้นทางแบบเต็ม /api/v1/metrics (ตัวอย่าง: http://192.168.1.10:5001/api/v1/metrics) สำหรับรหัสลับสำหรับยืนยันตัวตน ให้วางเฉพาะสตริงโทเค็น — อย่ารวมคำว่า 'Bearer'", + "dns": "ติดตามว่าเซิร์ฟเวอร์ DNS เฉพาะตอบกลับหรือไม่" } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "ใช้ HTTP(S) เพื่อตรวจสอบเว็บไซต์หรือ API endpoint", "optionPingDescription": "ใช้ ICMP Ping เพื่อตรวจสอบว่าเซิร์ฟเวอร์ออนไลน์อยู่หรือไม่", "optionPortDescription": "ตรวจสอบว่าพอร์ตเฉพาะบนเซิร์ฟเวอร์เปิดอยู่หรือไม่", - "title": "ประเภท" + "title": "ประเภท", + "optionDnsDescription": "ติดตามว่าเซิร์ฟเวอร์ DNS เฉพาะตอบกลับหรือไม่" }, "thresholds": { "title": "เกณฑ์การแจ้งเตือน", @@ -909,7 +945,8 @@ "lastFinishedAt": "เสร็จสิ้นล่าสุดเมื่อ", "lastRunTook": "รันล่าสุดใช้เวลา", "lastFailedAt": "ล้มเหลวล่าสุดเมื่อ", - "failReason": "สาเหตุที่ล้มเหลว" + "failReason": "สาเหตุที่ล้มเหลว", + "state": "สถานะ" } }, "queueFallback": { @@ -1099,6 +1136,10 @@ "header": { "title": "ตัวตรวจสอบ PageSpeed", "description": "ติดตาม Core Web Vitals และคะแนน Lighthouse เพื่อจับความถดถอยก่อนที่ผู้ใช้จะสังเกตเห็น" + }, + "strategy": { + "desktop": "เดสก์ท็อป", + "mobile": "มือถือ" } }, "settings": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "ปฏิเสธใบรับรองที่ไม่ถูกต้อง: ปฏิเสธการเชื่อมต่อด้วยใบรับรอง self-signed หรือไม่น่าเชื่อถือ" + }, + "displayName": { + "label": "ชื่อผู้ส่ง (ไม่บังคับ) - ชื่อที่เป็นมิตรซึ่งแสดงในช่องจาก", + "placeholder": "การแจ้งเตือน Checkmate" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "อัปไทม์", "responseTime": "เวลาตอบสนอง" + }, + "chart": { + "avg": "เฉลี่ย {{value}}ms", + "downTooltip": "ไม่พร้อมใช้งาน", + "heatmapAria": "แผนที่ความร้อนของเวลาตอบสนอง", + "max": "สูงสุด {{value}}ms" + }, + "status": { + "breached": "เกินขีดจำกัด", + "down": "ไม่พร้อมใช้งาน", + "initializing": "กำลังเริ่มต้น", + "maintenance": "การบำรุงรักษา", + "paused": "หยุดชั่วคราว", + "up": "ใช้งานได้" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "บางระบบอยู่ระหว่างการบำรุงรักษา", "partiallyPaused": "บางระบบถูกหยุดชั่วคราว", "initializing": "บางระบบกำลังเริ่มต้น", - "noMonitors": "ยังไม่มีการกำหนดค่ามอนิเตอร์" + "noMonitors": "ยังไม่มีการกำหนดค่ามอนิเตอร์", + "monitoringSummary": "กำลังตรวจสอบ {{count}} บริการ · อัปเดตทุก 10 วินาที", + "monitoringSummary_other": "กำลังตรวจสอบ {{count}} บริการ · อัปเดตทุก 10 วินาที" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "แสดงเมตริกโครงสร้างพื้นฐาน" } } + }, + "theme": { + "description": "เลือกรูปแบบภาพสำหรับหน้าสถานะสาธารณะของคุณ", + "label": "ธีม", + "options": { + "bold": { + "description": "ตัวอักษรขนาดใหญ่และการเว้นระยะที่มั่นใจ เหมาะสำหรับหน้าที่เน้นแบรนด์", + "name": "ตัวหนา" + }, + "editorial": { + "description": "หัวเรื่องแบบเซริฟและตัวคั่นบาง โดดเด่นและสงบ", + "name": "บรรณาธิการ" + }, + "modern": { + "description": "ระดับ SaaS พร้อมจุดสถานะที่เต้นและการ์ดที่จางหายอย่างนุ่มนวล", + "name": "ทันสมัย" + }, + "refined": { + "description": "สะอาด เป็นมืออาชีพ ใกล้เคียงกับรูปลักษณ์คลาสสิกของ Checkmate", + "name": "ละเอียดอ่อน" + } + }, + "title": "ธีมของหน้า" + }, + "themeMode": { + "auto": "อัตโนมัติ (ตามอุปกรณ์ของผู้เข้าชม)", + "dark": "มืดเท่านั้น", + "label": "โหมดธีม", + "light": "สว่างเท่านั้น" } }, "header": { "title": "หน้าสถานะ", "description": "เผยแพร่หน้าสาธารณะที่แสดง uptime แบบเรียลไทม์และประวัติเหตุการณ์ให้กับลูกค้าและผู้มีส่วนได้ส่วนเสีย" + }, + "editorial": { + "allUp": "ทุกระบบทำงานเป็นปกติ", + "reportTitle": "รายงานบริการ" + }, + "footer": { + "poweredBy": "ขับเคลื่อนโดย" } }, "uptime": { diff --git a/client/src/locales/tr.json b/client/src/locales/tr.json index c2ef7b2a7..fdb9506e2 100644 --- a/client/src/locales/tr.json +++ b/client/src/locales/tr.json @@ -73,7 +73,9 @@ "paused": "duraklatıldı", "na": "N/A", "resolved": "Çözüldü", - "responseTime": "Yanıt süresi" + "responseTime": "Yanıt süresi", + "idle": "Boşta", + "running": "Çalışıyor" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "Aktif", "responseTime": "Yanıt süresi" } + }, + "statusCode": { + "down": "Çalışmıyor", + "networkError": { + "dns": "Ana bilgisayar adı çözümlenemedi (DNS araması başarısız oldu).", + "refused": "Sunucu bağlantıyı reddetti (bağlantı noktası kapalı veya hizmet dinlemiyor).", + "reset": "Yanıt alınmadan bağlantı sıfırlandı.", + "timeout": "Sunucu zamanında yanıt vermedi (istek zaman aşımına uğradı).", + "tls": "TLS veya SSL el sıkışması başarısız (sertifika veya şifreleme sorunu).", + "unknown": "Hedeften HTTP yanıtı alınamadı." + } } }, "components": { @@ -306,7 +319,7 @@ "common": { "passwordRules": { "length": { - "beginning": "", + "beginning": "En az", "highlighted": "8 karakter uzunluğunda" }, "lowercase": { @@ -314,7 +327,7 @@ "highlighted": "Bir küçük harf" }, "match": { - "beginning": "", + "beginning": "Parolalar", "highlighted": "eşleşmelidir" }, "number": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "Altyapı", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "{{count}} monitör duraklatıldı", @@ -483,9 +497,9 @@ }, "matchMethod": { "label": "Eşleştirme yöntemi", - "equal": "", - "include": "", - "regex": "" + "equal": "Eşit", + "include": "İçerir", + "regex": "Regex" } }, "title": "Gelişmiş ayarlar" @@ -497,15 +511,15 @@ "label": "Kontrol sıklığı", "value": { "fifteenMinutes": "15 dakika", - "fifteenSeconds": "", + "fifteenSeconds": "15 saniye", "fiveMinutes": "5 dakika", - "fourMinutes": "", - "oneMinute": "", + "fourMinutes": "4 dakika", + "oneMinute": "1 dakika", "tenMinutes": "10 dakika", "thirtyMinutes": "30 dakika", - "thirtySeconds": "", - "threeMinutes": "", - "twoMinutes": "" + "thirtySeconds": "30 saniye", + "threeMinutes": "3 dakika", + "twoMinutes": "2 dakika" } } }, @@ -534,8 +548,8 @@ "placeholder": "https://www.google.com" }, "game": { - "label": "", - "placeholder": "" + "label": "Oyun seç", + "placeholder": "Bir oyun seçin" }, "port": { "label": "İzlenecek port", @@ -552,19 +566,40 @@ "captureUrl": { "label": "Capture uç noktası", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "DNS kayıt türü", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "DNS sunucusu", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "Masaüstü", + "label": "Strateji", + "mobile": "Mobil" } }, "title": "Genel ayarlar", "description": { "http": "İzlenecek URL veya IP adresini girin (örn. https://example.com/ veya 192.168.1.100) ve panoda görünecek açık bir ad ekleyin.", - "ping": "", - "port": "", - "docker": "", + "ping": "Ping atılacak IP adresini veya ana bilgisayar adını girin (ör. 192.168.1.100 veya example.com) ve panoda görünen net bir görünen ad ekleyin.", + "port": "Sunucunun URL veya IP adresini, port numarasını ve panoda görünen net bir görünen ad girin.", + "docker": "Docker kapsayıcı adını veya kimliğini girin. Kapsayıcı adını (ör. my-app) veya kapsayıcı kimliğini (tam 64 karakterli kimlik veya kısa kimlik) kullanabilirsiniz.", "game": "Ping atılacak IP adresini veya ana bilgisayar adını ve port numarasını girin (ör. 192.168.1.100 veya example.com) ve oyun türünü seçin. Bazı oyunlar yapılandırma dosyasında sunucu sorgularının etkinleştirilmesini gerektirir — oyun sunucunuzun belgelerine bakın. Protokol ayrıntıları için desteklenen oyunlar listesine bakın.", "pagespeed": "Web sitenizin sayfa yükleme performansını, Core Web Vitals metriklerini ve optimizasyon puanlarını takip edin.", "grpc": "gRPC sunucusunun ana bilgisayar adını ve portunu girin, isteğe bağlı olarak sağlık kontrolü için bir servis adı belirtin ve bir görünen ad ekleyin.", "websocket": "İzlenecek WebSocket URL'sini girin (örn. wss://example.com/socket) ve bir görünen ad ekleyin.", - "hardware": "Altyapınızın CPU, bellek, disk kullanımını ve sıcaklığını izleyin. Capture uç nokta URL'si tam yolu /api/v1/metrics içermelidir (ör. http://192.168.1.10:5001/api/v1/metrics). Yetkilendirme anahtarına yalnızca token dizesini yapıştırın — 'Bearer' eklemeyin." + "hardware": "Altyapınızın CPU, bellek, disk kullanımını ve sıcaklığını izleyin. Capture uç nokta URL'si tam yolu /api/v1/metrics içermelidir (ör. http://192.168.1.10:5001/api/v1/metrics). Yetkilendirme anahtarına yalnızca token dizesini yapıştırın — 'Bearer' eklemeyin.", + "dns": "Belirli bir DNS sunucusunun yanıt verip vermediğini izleyin." } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "Web sitenizi veya API uç noktanızı izlemek için HTTP(S) kullanın.", "optionPingDescription": "Bir sunucunun çevrimiçi olup olmadığını izlemek için ICMP Ping kullanın.", "optionPortDescription": "Bir sunucuda belirli bir portun açık olup olmadığını izleyin.", - "title": "Tür" + "title": "Tür", + "optionDnsDescription": "Belirli bir DNS sunucusunun yanıt verip vermediğini izleyin." }, "thresholds": { "title": "Uyarı eşikleri", @@ -826,7 +862,7 @@ }, "tabs": { "labels": { - "network": "", + "network": "Ağ", "overview": "Genel bakış" } }, @@ -909,7 +945,8 @@ "lastFinishedAt": "Son tamamlanma zamanı", "lastRunTook": "Son çalışma süresi", "lastFailedAt": "Son başarısızlık zamanı", - "failReason": "Başarısızlık nedeni" + "failReason": "Başarısızlık nedeni", + "state": "Durum" } }, "queueFallback": { @@ -1099,6 +1136,10 @@ "header": { "title": "PageSpeed izleyicileri", "description": "Core Web Vitals ve Lighthouse puanlarını zaman içinde izleyerek kullanıcılarınız fark etmeden gerilemeleri yakalayın." + }, + "strategy": { + "desktop": "Masaüstü", + "mobile": "Mobil" } }, "settings": { @@ -1201,7 +1242,7 @@ "email": { "title": "E-posta ayarları", "description": "Sisteminiz için e-posta ayarlarını yapılandırın. Bu, bildirim ve uyarı göndermek için kullanılır.", - "descriptionTransport": "", + "descriptionTransport": "Bu, NodeMailer için SMTP aktarımı oluşturur", "descriptionTransportLink": "Özellikleri burada görün", "option": { "host": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "Geçersiz sertifikaları reddet: Kendinden imzalı veya güvenilmeyen sertifikalı bağlantıları reddet" + }, + "displayName": { + "label": "Gönderen adı (isteğe bağlı) - Gönderen alanında gösterilen kullanıcı dostu ad", + "placeholder": "Checkmate bildirimleri" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "Çalışma süresi", "responseTime": "Yanıt süresi" + }, + "chart": { + "avg": "ort {{value}}ms", + "downTooltip": "Çalışmıyor", + "heatmapAria": "Yanıt süresi ısı haritası", + "max": "maks {{value}}ms" + }, + "status": { + "breached": "Eşik aşıldı", + "down": "Çalışmıyor", + "initializing": "Başlatılıyor", + "maintenance": "Bakım", + "paused": "Duraklatıldı", + "up": "Çalışıyor" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "Bazı sistemler bakımda", "partiallyPaused": "Bazı sistemler duraklatıldı", "initializing": "Bazı sistemler başlatılıyor", - "noMonitors": "Hiç monitör yapılandırılmadı" + "noMonitors": "Hiç monitör yapılandırılmadı", + "monitoringSummary": "{{count}} hizmet izleniyor · 10 saniyede bir güncellenir", + "monitoringSummary_other": "{{count}} hizmet izleniyor · 10 saniyede bir güncellenir" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "Altyapı metriklerini göster" } } + }, + "theme": { + "description": "Genel durum sayfanız için görsel stili seçin.", + "label": "Tema", + "options": { + "bold": { + "description": "Büyük tipografi ve kendinden emin aralıklar. Marka odaklı sayfalar için harika.", + "name": "Kalın" + }, + "editorial": { + "description": "Serifli başlıklar ve ince ayraçlar. Belirgin ve sakin.", + "name": "Editöryal" + }, + "modern": { + "description": "Atan bir durum noktası ve yumuşakça solan kartlarla SaaS kalitesinde.", + "name": "Modern" + }, + "refined": { + "description": "Temiz, profesyonel, klasik Checkmate görünümüne yakın.", + "name": "Zarif" + } + }, + "title": "Sayfa teması" + }, + "themeMode": { + "auto": "Otomatik (ziyaretçinin cihazına göre)", + "dark": "Yalnızca koyu", + "label": "Tema modu", + "light": "Yalnızca açık" } }, "header": { "title": "Durum sayfaları", "description": "Müşterilerinize ve paydaşlarınıza gerçek zamanlı çalışma süresi ve olay geçmişini gösteren herkese açık sayfalar yayınlayın." + }, + "editorial": { + "allUp": "Tüm sistemler normal şekilde çalışıyor.", + "reportTitle": "Hizmet raporu" + }, + "footer": { + "poweredBy": "Sağlayan" } }, "uptime": { diff --git a/client/src/locales/uk.json b/client/src/locales/uk.json index 2ab0a837f..c036318b7 100644 --- a/client/src/locales/uk.json +++ b/client/src/locales/uk.json @@ -73,7 +73,9 @@ "paused": "призупинено", "na": "Н/Д", "resolved": "Вирішено", - "responseTime": "Час відповіді" + "responseTime": "Час відповіді", + "idle": "Очікування", + "running": "Виконується" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "Активний", "responseTime": "Час відповіді" } + }, + "statusCode": { + "down": "Не працює", + "networkError": { + "dns": "Не вдалося розв'язати ім'я хоста (пошук DNS не вдався).", + "refused": "Сервер відхилив з'єднання (порт закрито або служба не слухає).", + "reset": "З'єднання було скинуто до отримання відповіді.", + "timeout": "Сервер не відповів вчасно (час очікування запиту вичерпано).", + "tls": "Збій рукостискання TLS або SSL (проблема з сертифікатом або шифруванням).", + "unknown": "HTTP-відповідь від цілі не отримана." + } } }, "components": { @@ -306,28 +319,28 @@ "common": { "passwordRules": { "length": { - "beginning": "", - "highlighted": "" + "beginning": "Має бути щонайменше", + "highlighted": "8 символів" }, "lowercase": { - "beginning": "", - "highlighted": "" + "beginning": "Має містити щонайменше", + "highlighted": "одну малу літеру" }, "match": { - "beginning": "", - "highlighted": "" + "beginning": "Паролі", + "highlighted": "мають збігатися" }, "number": { - "beginning": "", - "highlighted": "" + "beginning": "Має містити щонайменше", + "highlighted": "одну цифру" }, "special": { - "beginning": "", - "highlighted": "" + "beginning": "Має містити щонайменше", + "highlighted": "один спеціальний символ (!?@#$%^&*()-_=+[]{}|;:'\",./\\~`)" }, "uppercase": { - "beginning": "", - "highlighted": "" + "beginning": "Має містити щонайменше", + "highlighted": "одну велику літеру" } }, "form": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "Інфраструктура", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "{{count}} монітор призупинено", @@ -552,19 +566,40 @@ "captureUrl": { "label": "Точка доступу Capture", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "Тип запису DNS", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "DNS-сервер", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "Десктоп", + "label": "Стратегія", + "mobile": "Мобільний" } }, "title": "Загальні налаштування", "description": { "http": "Введіть URL або IP для моніторингу (напр., https://example.com/ або 192.168.1.100) та додайте зрозуміле ім'я для відображення на панелі.", - "ping": "", - "port": "", - "docker": "", + "ping": "Введіть IP-адресу або ім'я хоста для пінгу (наприклад, 192.168.1.100 або example.com) і додайте чітку відображувану назву, що з'явиться на дашборді.", + "port": "Введіть URL або IP сервера, номер порту та чітку відображувану назву, що з'явиться на дашборді.", + "docker": "Введіть назву або ідентифікатор Docker-контейнера. Можна використовувати назву контейнера (наприклад, my-app) або ідентифікатор (повний 64-символьний або скорочений).", "game": "Введіть IP-адресу або ім'я хоста та номер порту для пінгу (наприклад, 192.168.1.100 або example.com) і виберіть тип гри. Деяким іграм потрібно ввімкнути серверні запити у файлі конфігурації — перевірте документацію вашого ігрового сервера. Деталі протоколу див. у списку підтримуваних ігор.", "pagespeed": "Відстежуйте швидкість завантаження сторінки, показники Core Web Vitals та оцінки оптимізації Вашого сайту.", "grpc": "Введіть ім'я хоста та порт gRPC-сервера, за бажанням вкажіть назву сервісу для перевірки стану та додайте відображуване ім'я.", "websocket": "Введіть WebSocket URL для моніторингу (напр., wss://example.com/socket) та додайте відображуване ім'я.", - "hardware": "Відстежуйте використання ЦП, пам'яті, диска та температуру вашої інфраструктури. URL точки доступу Capture має містити повний шлях /api/v1/metrics (наприклад, http://192.168.1.10:5001/api/v1/metrics). У секрет авторизації вставте лише рядок токена — не додавайте 'Bearer'." + "hardware": "Відстежуйте використання ЦП, пам'яті, диска та температуру вашої інфраструктури. URL точки доступу Capture має містити повний шлях /api/v1/metrics (наприклад, http://192.168.1.10:5001/api/v1/metrics). У секрет авторизації вставте лише рядок токена — не додавайте 'Bearer'.", + "dns": "Стежте, чи відповідає певний DNS-сервер." } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "Використовуйте HTTP(S) для моніторингу Вашого сайту або API-ендпоінту.", "optionPingDescription": "Використовуйте ICMP Ping для моніторингу доступності сервера.", "optionPortDescription": "Моніторинг відкритості конкретного порту на сервері.", - "title": "Тип" + "title": "Тип", + "optionDnsDescription": "Стежте, чи відповідає певний DNS-сервер." }, "thresholds": { "title": "Порогові значення сповіщень", @@ -765,7 +801,7 @@ "headers": { "endTime": "Час завершення", "resolutionType": "Тип вирішення", - "startTime": "", + "startTime": "Час початку", "statusCode": "Код статусу" }, "resolvedIncidents": "Вирішені інциденти", @@ -809,13 +845,13 @@ } }, "statBoxes": { - "avgCpuTemperature": "", - "cpuFrequency": "", - "cpuLogical": "", - "cpuPhysical": "", + "avgCpuTemperature": "Середня температура CPU", + "cpuFrequency": "Частота CPU", + "cpuLogical": "CPU (логічний)", + "cpuPhysical": "CPU (фізичний)", "disk": "Диск", "memory": "Пам'ять", - "os": "" + "os": "ОС" }, "table": { "headers": { @@ -909,7 +945,8 @@ "lastFinishedAt": "Останнє завершення", "lastRunTook": "Останній запуск тривав", "lastFailedAt": "Остання помилка", - "failReason": "Причина помилки" + "failReason": "Причина помилки", + "state": "Стан" } }, "queueFallback": { @@ -929,8 +966,8 @@ }, "table": { "headers": { - "nextWindow": "", - "repeat": "" + "nextWindow": "Наступне вікно", + "repeat": "Повторити" } }, "form": { @@ -1032,7 +1069,7 @@ }, "telegram": { "title": "Налаштування Telegram", - "description": "", + "description": "Налаштуйте свого Telegram-бота для надсилання сповіщень.", "optionBotToken": "Токен бота", "placeholderBotToken": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "optionChatId": "ID чату", @@ -1099,6 +1136,10 @@ "header": { "title": "Монітори PageSpeed", "description": "Відстежуйте Core Web Vitals і оцінки Lighthouse у часі, щоб помітити регресії раніше за користувачів." + }, + "strategy": { + "desktop": "Десктоп", + "mobile": "Мобільний" } }, "settings": { @@ -1201,7 +1242,7 @@ "email": { "title": "Налаштування пошти", "description": "Налаштуйте параметри електронної пошти для Вашої системи. Використовується для надсилання сповіщень та попереджень.", - "descriptionTransport": "", + "descriptionTransport": "Це створює SMTP-транспорт для NodeMailer", "descriptionTransportLink": "Дивіться специфікації тут", "option": { "host": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "Відхиляти недійсні сертифікати: відхиляти з'єднання із самопідписаними або ненадійними сертифікатами" + }, + "displayName": { + "label": "Ім'я відправника (необов'язково) - Дружнє ім'я, що відображається в полі Від", + "placeholder": "Сповіщення Checkmate" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "Час роботи", "responseTime": "Час відповіді" + }, + "chart": { + "avg": "сер {{value}}мс", + "downTooltip": "Не працює", + "heatmapAria": "Теплова карта часу відгуку", + "max": "макс {{value}}мс" + }, + "status": { + "breached": "Перевищено поріг", + "down": "Не працює", + "initializing": "Ініціалізація", + "maintenance": "Обслуговування", + "paused": "Призупинено", + "up": "Працює" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "Деякі системи на техобслуговуванні", "partiallyPaused": "Деякі системи призупинено", "initializing": "Деякі системи ініціалізуються", - "noMonitors": "Не налаштовано жодного монітора" + "noMonitors": "Не налаштовано жодного монітора", + "monitoringSummary": "Відстежується {{count}} сервіс · Оновлення кожні 10 секунд", + "monitoringSummary_other": "Відстежується {{count}} сервісів · Оновлення кожні 10 секунд" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "Показувати метрики інфраструктури" } } + }, + "theme": { + "description": "Виберіть візуальний стиль для вашої публічної сторінки стану.", + "label": "Тема", + "options": { + "bold": { + "description": "Велика типографіка та впевнені відступи. Чудово для брендових сторінок.", + "name": "Жирний" + }, + "editorial": { + "description": "Заголовки з засічками та тонкі роздільники. Відмінний і спокійний.", + "name": "Редакційний" + }, + "modern": { + "description": "Рівень SaaS з пульсуючою крапкою стану та м'яко зникаючими картками.", + "name": "Сучасний" + }, + "refined": { + "description": "Чистий, професійний, близький до класичного вигляду Checkmate.", + "name": "Витончений" + } + }, + "title": "Тема сторінки" + }, + "themeMode": { + "auto": "Авто (за пристроєм відвідувача)", + "dark": "Тільки темна", + "label": "Режим теми", + "light": "Тільки світла" } }, "header": { "title": "Сторінки статусу", "description": "Публікуйте публічні сторінки з часом роботи в реальному часі та історією інцидентів для клієнтів і зацікавлених сторін." + }, + "editorial": { + "allUp": "Усі системи працюють у нормальному режимі.", + "reportTitle": "Звіт про обслуговування" + }, + "footer": { + "poweredBy": "Працює на" } }, "uptime": { diff --git a/client/src/locales/vi.json b/client/src/locales/vi.json index 92372dec6..15665bb91 100644 --- a/client/src/locales/vi.json +++ b/client/src/locales/vi.json @@ -73,7 +73,9 @@ "paused": "tạm dừng", "na": "N/A", "resolved": "Đã giải quyết", - "responseTime": "Thời gian phản hồi" + "responseTime": "Thời gian phản hồi", + "idle": "Không hoạt động", + "running": "Đang chạy" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "Đang hoạt động", "responseTime": "Thời gian phản hồi" } + }, + "statusCode": { + "down": "Ngừng hoạt động", + "networkError": { + "dns": "Không thể phân giải tên máy chủ (tra cứu DNS thất bại).", + "refused": "Máy chủ từ chối kết nối (cổng đã đóng hoặc dịch vụ không lắng nghe).", + "reset": "Kết nối đã được đặt lại trước khi nhận được phản hồi.", + "timeout": "Máy chủ không phản hồi kịp thời (yêu cầu hết thời gian chờ).", + "tls": "Bắt tay TLS hoặc SSL thất bại (vấn đề chứng chỉ hoặc mã hóa).", + "unknown": "Không nhận được phản hồi HTTP từ mục tiêu." + } } }, "components": { @@ -306,28 +319,28 @@ "common": { "passwordRules": { "length": { - "beginning": "", - "highlighted": "" + "beginning": "Phải có ít nhất", + "highlighted": "8 ký tự" }, "lowercase": { - "beginning": "", - "highlighted": "" + "beginning": "Phải chứa ít nhất", + "highlighted": "một chữ thường" }, "match": { - "beginning": "", - "highlighted": "" + "beginning": "Mật khẩu", + "highlighted": "phải khớp" }, "number": { - "beginning": "", - "highlighted": "" + "beginning": "Phải chứa ít nhất", + "highlighted": "một chữ số" }, "special": { - "beginning": "", - "highlighted": "" + "beginning": "Phải chứa ít nhất", + "highlighted": "một ký tự đặc biệt (!?@#$%^&*()-_=+[]{}|;:'\",./\\~`)" }, "uppercase": { - "beginning": "", - "highlighted": "" + "beginning": "Phải chứa ít nhất", + "highlighted": "một chữ hoa" } }, "form": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "Hạ tầng", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "Đã tạm dừng {{count}} màn hình", @@ -552,19 +566,40 @@ "captureUrl": { "label": "Điểm cuối Capture", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "Loại bản ghi DNS", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "Máy chủ DNS", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "Máy tính để bàn", + "label": "Chiến lược", + "mobile": "Di động" } }, "title": "Cài đặt chung", "description": { "http": "Nhập URL hoặc IP cần giám sát (vd: https://example.com/ hoặc 192.168.1.100) và thêm tên hiển thị rõ ràng trên bảng điều khiển.", - "ping": "", - "port": "", - "docker": "", + "ping": "Nhập địa chỉ IP hoặc tên máy chủ để ping (ví dụ: 192.168.1.100 hoặc example.com) và thêm tên hiển thị rõ ràng xuất hiện trên bảng điều khiển.", + "port": "Nhập URL hoặc IP của máy chủ, số cổng và tên hiển thị rõ ràng xuất hiện trên bảng điều khiển.", + "docker": "Nhập tên hoặc ID của container Docker. Bạn có thể sử dụng tên container (ví dụ: my-app) hoặc ID container (ID đầy đủ 64 ký tự hoặc ID ngắn).", "game": "Nhập địa chỉ IP hoặc tên máy chủ và số cổng để ping (ví dụ: 192.168.1.100 hoặc example.com) và chọn loại trò chơi. Một số trò chơi yêu cầu bật truy vấn máy chủ trong tệp cấu hình của chúng — hãy xem tài liệu của máy chủ trò chơi. Xem danh sách các trò chơi được hỗ trợ để biết chi tiết giao thức.", "pagespeed": "Theo dõi hiệu suất tải trang, Core Web Vitals và điểm tối ưu hóa cho trang web của bạn.", "grpc": "Nhập tên máy chủ và cổng của máy chủ gRPC, tùy chọn chỉ định tên dịch vụ cho kiểm tra sức khỏe và thêm tên hiển thị.", "websocket": "Nhập URL WebSocket cần giám sát (vd: wss://example.com/socket) và thêm tên hiển thị.", - "hardware": "Giám sát mức sử dụng CPU, bộ nhớ, ổ đĩa và nhiệt độ của hạ tầng. URL điểm cuối Capture phải bao gồm đường dẫn đầy đủ /api/v1/metrics (ví dụ: http://192.168.1.10:5001/api/v1/metrics). Đối với khóa xác thực, chỉ dán chuỗi token — không bao gồm 'Bearer'." + "hardware": "Giám sát mức sử dụng CPU, bộ nhớ, ổ đĩa và nhiệt độ của hạ tầng. URL điểm cuối Capture phải bao gồm đường dẫn đầy đủ /api/v1/metrics (ví dụ: http://192.168.1.10:5001/api/v1/metrics). Đối với khóa xác thực, chỉ dán chuỗi token — không bao gồm 'Bearer'.", + "dns": "Giám sát xem một máy chủ DNS cụ thể có phản hồi hay không." } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "Sử dụng HTTP(S) để giám sát trang web hoặc điểm cuối API của bạn.", "optionPingDescription": "Sử dụng ICMP Ping để giám sát xem máy chủ có trực tuyến không.", "optionPortDescription": "Giám sát xem một cổng cụ thể trên máy chủ có mở không.", - "title": "Loại" + "title": "Loại", + "optionDnsDescription": "Giám sát xem một máy chủ DNS cụ thể có phản hồi hay không." }, "thresholds": { "title": "Ngưỡng cảnh báo", @@ -765,7 +801,7 @@ "headers": { "endTime": "Thời gian kết thúc", "resolutionType": "Loại giải quyết", - "startTime": "", + "startTime": "Thời gian bắt đầu", "statusCode": "Mã trạng thái" }, "resolvedIncidents": "Sự cố đã giải quyết", @@ -809,13 +845,13 @@ } }, "statBoxes": { - "avgCpuTemperature": "", - "cpuFrequency": "", - "cpuLogical": "", - "cpuPhysical": "", + "avgCpuTemperature": "Nhiệt độ CPU trung bình", + "cpuFrequency": "Tần số CPU", + "cpuLogical": "CPU (logic)", + "cpuPhysical": "CPU (vật lý)", "disk": "Ổ đĩa", "memory": "Bộ nhớ", - "os": "" + "os": "Hệ điều hành" }, "table": { "headers": { @@ -909,7 +945,8 @@ "lastFinishedAt": "Hoàn thành lần cuối lúc", "lastRunTook": "Lần chạy cuối mất", "lastFailedAt": "Lỗi lần cuối lúc", - "failReason": "Lý do lỗi" + "failReason": "Lý do lỗi", + "state": "Trạng thái" } }, "queueFallback": { @@ -929,8 +966,8 @@ }, "table": { "headers": { - "nextWindow": "", - "repeat": "" + "nextWindow": "Cửa sổ tiếp theo", + "repeat": "Lặp lại" } }, "form": { @@ -1032,7 +1069,7 @@ }, "telegram": { "title": "Cấu hình Telegram", - "description": "", + "description": "Cấu hình bot Telegram của bạn để gửi thông báo.", "optionBotToken": "Token bot", "placeholderBotToken": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "optionChatId": "ID cuộc trò chuyện", @@ -1099,6 +1136,10 @@ "header": { "title": "Trình giám sát PageSpeed", "description": "Theo dõi Core Web Vitals và điểm Lighthouse theo thời gian để phát hiện sự suy giảm trước khi người dùng nhận ra." + }, + "strategy": { + "desktop": "Máy tính để bàn", + "mobile": "Di động" } }, "settings": { @@ -1201,7 +1242,7 @@ "email": { "title": "Cài đặt email", "description": "Cấu hình cài đặt email cho hệ thống. Được sử dụng để gửi thông báo và cảnh báo.", - "descriptionTransport": "", + "descriptionTransport": "Điều này xây dựng một SMTP transport cho NodeMailer", "descriptionTransportLink": "Xem thông số kỹ thuật tại đây", "option": { "host": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "Từ chối chứng chỉ không hợp lệ: Từ chối kết nối với chứng chỉ tự ký hoặc không đáng tin cậy" + }, + "displayName": { + "label": "Tên người gửi (tùy chọn) - Tên thân thiện hiển thị trong trường Từ", + "placeholder": "Thông báo Checkmate" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "Thời gian hoạt động", "responseTime": "Thời gian phản hồi" + }, + "chart": { + "avg": "TB {{value}}ms", + "downTooltip": "Ngừng hoạt động", + "heatmapAria": "Bản đồ nhiệt thời gian phản hồi", + "max": "tối đa {{value}}ms" + }, + "status": { + "breached": "Vượt ngưỡng", + "down": "Ngừng hoạt động", + "initializing": "Đang khởi tạo", + "maintenance": "Bảo trì", + "paused": "Tạm dừng", + "up": "Hoạt động" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "Một số hệ thống đang bảo trì", "partiallyPaused": "Một số hệ thống đã tạm dừng", "initializing": "Một số hệ thống đang khởi tạo", - "noMonitors": "Chưa cấu hình màn hình giám sát nào" + "noMonitors": "Chưa cấu hình màn hình giám sát nào", + "monitoringSummary": "Đang giám sát {{count}} dịch vụ · Cập nhật mỗi 10 giây", + "monitoringSummary_other": "Đang giám sát {{count}} dịch vụ · Cập nhật mỗi 10 giây" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "Hiển thị số liệu hạ tầng" } } + }, + "theme": { + "description": "Chọn kiểu hiển thị cho trang trạng thái công khai của bạn.", + "label": "Chủ đề", + "options": { + "bold": { + "description": "Kiểu chữ lớn và khoảng cách tự tin. Tuyệt vời cho các trang tập trung vào thương hiệu.", + "name": "Đậm" + }, + "editorial": { + "description": "Tiêu đề serif và dải phân cách mỏng. Đặc biệt và tĩnh lặng.", + "name": "Biên tập" + }, + "modern": { + "description": "Chất lượng SaaS với chấm trạng thái nhấp nháy và thẻ mờ dần nhẹ nhàng.", + "name": "Hiện đại" + }, + "refined": { + "description": "Sạch sẽ, chuyên nghiệp, gần với giao diện Checkmate cổ điển.", + "name": "Tinh tế" + } + }, + "title": "Chủ đề trang" + }, + "themeMode": { + "auto": "Tự động (theo thiết bị của khách)", + "dark": "Chỉ tối", + "label": "Chế độ chủ đề", + "light": "Chỉ sáng" } }, "header": { "title": "Trang trạng thái", "description": "Công bố các trang công khai cho khách hàng và các bên liên quan thấy thời gian hoạt động theo thời gian thực và lịch sử sự cố." + }, + "editorial": { + "allUp": "Tất cả các hệ thống đang hoạt động bình thường.", + "reportTitle": "Báo cáo dịch vụ" + }, + "footer": { + "poweredBy": "Được cung cấp bởi" } }, "uptime": { diff --git a/client/src/locales/zh-CN.json b/client/src/locales/zh-CN.json index 7b369e9b8..08259e06f 100644 --- a/client/src/locales/zh-CN.json +++ b/client/src/locales/zh-CN.json @@ -73,7 +73,9 @@ "paused": "已暂停", "na": "不适用", "resolved": "已解决", - "responseTime": "响应时间" + "responseTime": "响应时间", + "idle": "空闲", + "running": "运行中" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "活跃", "responseTime": "响应时间" } + }, + "statusCode": { + "down": "宕机", + "networkError": { + "dns": "无法解析主机名(DNS查找失败)。", + "refused": "服务器拒绝连接(端口关闭或服务未监听)。", + "reset": "在收到响应之前连接被重置。", + "timeout": "服务器未及时响应(请求超时)。", + "tls": "TLS或SSL握手失败(证书或加密问题)。", + "unknown": "未从目标接收HTTP响应。" + } } }, "components": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "基础设施", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "已暂停 {{count}} 个监视器", @@ -552,6 +566,26 @@ "captureUrl": { "label": "Capture 端点", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "DNS记录类型", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "DNS服务器", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "桌面", + "label": "策略", + "mobile": "移动端" } }, "title": "常规设置", @@ -564,7 +598,8 @@ "pagespeed": "跟踪网站的页面加载性能、Core Web Vitals 和优化评分。", "grpc": "输入 gRPC 服务器的主机名和端口,可选指定健康检查的服务名称,并添加显示名称。", "websocket": "输入要监控的 WebSocket URL(例如 wss://example.com/socket),并添加显示名称。", - "hardware": "监控基础设施的 CPU、内存、磁盘使用情况和温度。Capture 端点 URL 必须包含完整路径 /api/v1/metrics(例如 http://192.168.1.10:5001/api/v1/metrics)。授权密钥只需粘贴令牌字符串——请勿包含 'Bearer'。" + "hardware": "监控基础设施的 CPU、内存、磁盘使用情况和温度。Capture 端点 URL 必须包含完整路径 /api/v1/metrics(例如 http://192.168.1.10:5001/api/v1/metrics)。授权密钥只需粘贴令牌字符串——请勿包含 'Bearer'。", + "dns": "监控特定DNS服务器是否响应。" } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "使用 HTTP(S) 监控您的网站或 API 端点。", "optionPingDescription": "使用 ICMP Ping 监控服务器是否在线。", "optionPortDescription": "监控服务器上的特定端口是否开放。", - "title": "类型" + "title": "类型", + "optionDnsDescription": "监控特定DNS服务器是否响应。" }, "thresholds": { "title": "告警阈值", @@ -909,7 +945,8 @@ "lastFinishedAt": "上次完成于", "lastRunTook": "上次运行耗时", "lastFailedAt": "上次失败于", - "failReason": "失败原因" + "failReason": "失败原因", + "state": "状态" } }, "queueFallback": { @@ -1099,6 +1136,10 @@ "header": { "title": "PageSpeed 监控器", "description": "持续追踪 Core Web Vitals 和 Lighthouse 评分,在用户察觉之前发现性能回退。" + }, + "strategy": { + "desktop": "桌面", + "mobile": "移动端" } }, "settings": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "拒绝无效证书:拒绝自签名或不受信任证书的连接" + }, + "displayName": { + "label": "发件人姓名(可选)- 显示在发件人字段中的友好名称", + "placeholder": "Checkmate通知" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "正常运行时间", "responseTime": "响应时间" + }, + "chart": { + "avg": "平均 {{value}}ms", + "downTooltip": "宕机", + "heatmapAria": "响应时间热图", + "max": "最大 {{value}}ms" + }, + "status": { + "breached": "超出阈值", + "down": "宕机", + "initializing": "初始化中", + "maintenance": "维护中", + "paused": "已暂停", + "up": "运行中" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "部分系统正在维护", "partiallyPaused": "部分系统已暂停", "initializing": "部分系统正在初始化", - "noMonitors": "尚未配置任何监控器" + "noMonitors": "尚未配置任何监控器", + "monitoringSummary": "正在监控{{count}}个服务 · 每10秒更新一次", + "monitoringSummary_other": "正在监控{{count}}个服务 · 每10秒更新一次" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "显示基础设施指标" } } + }, + "theme": { + "description": "为您的公共状态页面选择视觉样式。", + "label": "主题", + "options": { + "bold": { + "description": "大字体和自信的间距。非常适合品牌导向的页面。", + "name": "粗体" + }, + "editorial": { + "description": "衬线标题和细分隔线。独特而平静。", + "name": "编辑风格" + }, + "modern": { + "description": "SaaS级品质,带有脉动状态点和柔和褪色卡片。", + "name": "现代" + }, + "refined": { + "description": "干净、专业,接近经典Checkmate外观。", + "name": "精致" + } + }, + "title": "页面主题" + }, + "themeMode": { + "auto": "自动(跟随访客设备)", + "dark": "仅深色", + "label": "主题模式", + "light": "仅浅色" } }, "header": { "title": "状态页面", "description": "发布公开页面,向客户和利益相关者展示实时运行情况和事件历史。" + }, + "editorial": { + "allUp": "所有系统运行正常。", + "reportTitle": "服务报告" + }, + "footer": { + "poweredBy": "技术支持" } }, "uptime": { diff --git a/client/src/locales/zh-TW.json b/client/src/locales/zh-TW.json index a15f7ab7d..b05ef5deb 100644 --- a/client/src/locales/zh-TW.json +++ b/client/src/locales/zh-TW.json @@ -73,7 +73,9 @@ "paused": "已暫停", "na": "N/A", "resolved": "已解決", - "responseTime": "回應時間" + "responseTime": "回應時間", + "idle": "閒置", + "running": "執行中" }, "form": { "role": { @@ -120,6 +122,17 @@ "active": "啟用中", "responseTime": "回應時間" } + }, + "statusCode": { + "down": "停機", + "networkError": { + "dns": "無法解析主機名稱(DNS查詢失敗)。", + "refused": "伺服器拒絕連線(連接埠關閉或服務未監聽)。", + "reset": "在收到回應之前連線被重設。", + "timeout": "伺服器未及時回應(請求逾時)。", + "tls": "TLS或SSL交握失敗(憑證或加密問題)。", + "unknown": "未從目標接收HTTP回應。" + } } }, "components": { @@ -452,7 +465,8 @@ "optionPagespeed": "PageSpeed", "optionHardware": "基礎架構", "optionGrpc": "gRPC", - "optionWebSocket": "WebSocket" + "optionWebSocket": "WebSocket", + "optionDns": "DNS" }, "bulkPause": { "paused_one": "已暫停 {{count}} 個監視器", @@ -552,6 +566,26 @@ "captureUrl": { "label": "Capture 端點", "placeholder": "http://192.168.1.10:5001/api/v1/metrics" + }, + "dnsRecordType": { + "label": "DNS記錄類型", + "value": { + "A": "A", + "AAAA": "AAAA", + "CNAME": "CNAME", + "MX": "MX", + "NS": "NS", + "TXT": "TXT" + } + }, + "dnsServer": { + "label": "DNS伺服器", + "placeholder": "8.8.8.8" + }, + "strategy": { + "desktop": "桌面", + "label": "策略", + "mobile": "行動裝置" } }, "title": "一般設定", @@ -564,7 +598,8 @@ "pagespeed": "追蹤您網站的頁面載入效能、Core Web Vitals 和最佳化分數。", "grpc": "輸入 gRPC 伺服器的主機名稱和連接埠,可選擇指定健康檢查的服務名稱,並新增一個顯示名稱。", "websocket": "輸入要監控的 WebSocket URL(例如 wss://example.com/socket),並新增一個顯示名稱。", - "hardware": "監控基礎架構的 CPU、記憶體、磁碟使用情況和溫度。Capture 端點 URL 必須包含完整路徑 /api/v1/metrics(例如 http://192.168.1.10:5001/api/v1/metrics)。授權密鑰僅貼上權杖字串——請勿包含 'Bearer'。" + "hardware": "監控基礎架構的 CPU、記憶體、磁碟使用情況和溫度。Capture 端點 URL 必須包含完整路徑 /api/v1/metrics(例如 http://192.168.1.10:5001/api/v1/metrics)。授權密鑰僅貼上權杖字串——請勿包含 'Bearer'。", + "dns": "監控特定DNS伺服器是否回應。" } }, "ignoreTls": { @@ -601,7 +636,8 @@ "optionHttpDescription": "使用 HTTP(S) 監控您的網站或 API 端點。", "optionPingDescription": "使用 ICMP Ping 監控伺服器是否上線。", "optionPortDescription": "監控伺服器上的特定連接埠是否開啟。", - "title": "類型" + "title": "類型", + "optionDnsDescription": "監控特定DNS伺服器是否回應。" }, "thresholds": { "title": "警報閾值", @@ -909,7 +945,8 @@ "lastFinishedAt": "最後完成於", "lastRunTook": "最後執行耗時", "lastFailedAt": "最後失敗於", - "failReason": "失敗原因" + "failReason": "失敗原因", + "state": "狀態" } }, "queueFallback": { @@ -1099,6 +1136,10 @@ "header": { "title": "PageSpeed 監視器", "description": "持續追蹤 Core Web Vitals 與 Lighthouse 評分,在使用者察覺前發現效能退化。" + }, + "strategy": { + "desktop": "桌面", + "mobile": "行動裝置" } }, "settings": { @@ -1247,6 +1288,10 @@ }, "rejectUnauthorized": { "label": "拒絕無效憑證:拒絕使用自簽或不受信任憑證的連線" + }, + "displayName": { + "label": "寄件者名稱(選填)- 顯示在寄件者欄位的友善名稱", + "placeholder": "Checkmate通知" } } }, @@ -1307,6 +1352,20 @@ "uptime": { "title": "正常運行時間", "responseTime": "回應時間" + }, + "chart": { + "avg": "平均 {{value}}ms", + "downTooltip": "停機", + "heatmapAria": "回應時間熱圖", + "max": "最大 {{value}}ms" + }, + "status": { + "breached": "超過閾值", + "down": "停機", + "initializing": "初始化中", + "maintenance": "維護中", + "paused": "已暫停", + "up": "運行中" } }, "statusBar": { @@ -1324,7 +1383,9 @@ "maintenance": "部分系統正在維護", "partiallyPaused": "部分系統已暫停", "initializing": "部分系統正在初始化", - "noMonitors": "尚未設定任何監視器" + "noMonitors": "尚未設定任何監視器", + "monitoringSummary": "正在監控{{count}}個服務 · 每10秒更新一次", + "monitoringSummary_other": "正在監控{{count}}個服務 · 每10秒更新一次" }, "table": { "headers": { @@ -1415,11 +1476,47 @@ "label": "顯示基礎架構指標" } } + }, + "theme": { + "description": "為您的公開狀態頁面選擇視覺樣式。", + "label": "主題", + "options": { + "bold": { + "description": "大字體和自信的間距。非常適合品牌導向的頁面。", + "name": "粗體" + }, + "editorial": { + "description": "襯線標題和細分隔線。獨特而平靜。", + "name": "編輯風格" + }, + "modern": { + "description": "SaaS級品質,帶有脈動狀態點和柔和淡出的卡片。", + "name": "現代" + }, + "refined": { + "description": "乾淨、專業,接近經典Checkmate外觀。", + "name": "精緻" + } + }, + "title": "頁面主題" + }, + "themeMode": { + "auto": "自動(依照訪客裝置)", + "dark": "僅深色", + "label": "主題模式", + "light": "僅淺色" } }, "header": { "title": "狀態頁面", "description": "發佈公開頁面,向客戶和利害關係人顯示即時的運行狀態與事件歷史。" + }, + "editorial": { + "allUp": "所有系統運作正常。", + "reportTitle": "服務報告" + }, + "footer": { + "poweredBy": "技術支援" } }, "uptime": {