feat(dashboard): Notifications & sound settings panel (fa/en/ar)
CI/CD / CI · API (dotnet build + test) (push) Successful in 1m5s
CI/CD / CI · Admin API (dotnet build) (push) Successful in 30s
CI/CD / CI · Dashboard (tsc) (push) Successful in 1m9s
CI/CD / CI · Admin Web (tsc) (push) Successful in 39s
CI/CD / CI · Website (tsc) (push) Successful in 46s
CI/CD / CI · Koja (tsc) (push) Successful in 50s
CI/CD / Deploy · all services (push) Successful in 3m46s

New Settings → "Notifications & sound" leaf to make the alert channels
changeable: toggle sound (+ picker with live preview + volume slider),
enable desktop notifications (permission flow + test button), toggle the
tab unread badge and in-app toasts. Strings added for fa/en/ar.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-21 05:08:39 +03:30
parent 149a4d88cd
commit 170a9aa7ac
6 changed files with 337 additions and 0 deletions
+34
View File
@@ -1200,6 +1200,7 @@
"shop": "المقهى والمتجر",
"shopGeneral": "الملف والتكاملات",
"shopAppearance": "المظهر والألوان",
"shopNotifications": "الإشعارات والصوت",
"printer": "الطابعة",
"printerSettings": "إعدادات الطابعة",
"printTest": "صفحة اختبار الطباعة",
@@ -1207,6 +1208,39 @@
"team": "الفريق والموظفون",
"customRoles": "الأدوار المخصصة"
},
"notifPrefs": {
"soundSection": "الصوت",
"soundEnabled": "تشغيل صوت للإشعارات الجديدة",
"soundEnabledHint": "يصدر صوتًا عند وصول طلب جديد أو نداء نادل أو تنبيه.",
"soundChoice": "صوت الإشعار",
"preview": "معاينة",
"volume": "مستوى الصوت",
"soundClassic": "كلاسيكي",
"soundDing": "رنين",
"soundBell": "جرس",
"soundChime": "أجراس",
"soundMarimba": "ماريمبا",
"soundAlert": "تنبيه",
"desktopSection": "إشعارات سطح المكتب",
"desktopHint": "إظهار نافذة منبثقة على ويندوز/سطح المكتب حتى عندما تكون لوحة التحكم في تبويب آخر أو مصغّرة.",
"enableDesktop": "تفعيل إشعارات سطح المكتب",
"desktopEnabled": "نوافذ سطح المكتب",
"desktopEnabledHint": "تظهر فقط عندما لا يكون هذا التبويب نشطًا.",
"desktopGranted": "تم تفعيل إشعارات سطح المكتب",
"desktopDenied": "تم رفض الإذن من المتصفح",
"desktopBlocked": "الإشعارات محظورة لهذا الموقع. اسمح بها من إعدادات الموقع في المتصفح ثم أعد التحميل.",
"desktopUnsupported": "هذا المتصفح لا يدعم إشعارات سطح المكتب.",
"desktopFocusNote": "تظهر النافذة التجريبية فقط إذا انتقلت إلى نافذة أخرى أولًا.",
"sendTest": "إرسال إشعار تجريبي",
"testTitle": "ميزي",
"testBody": "هذا إشعار تجريبي.",
"testToast": "تم إرسال الإشعار التجريبي",
"inAppSection": "داخل التطبيق",
"tabBadge": "عدد غير المقروء على تبويب المتصفح",
"tabBadgeHint": "يعرض عدد الإشعارات غير المقروءة في عنوان التبويب والأيقونة المفضلة.",
"toast": "تنبيه داخل التطبيق",
"toastHint": "إظهار شريط صغير داخل لوحة التحكم للإشعارات الجديدة."
},
"customRoles": {
"title": "الأدوار المخصصة",
"subtitle": "حدّد أدواراً بصلاحيات مخصصة لموظفيك",
+34
View File
@@ -1272,6 +1272,7 @@
"shop": "Shop & café",
"shopGeneral": "Profile & integrations",
"shopAppearance": "Appearance & colors",
"shopNotifications": "Notifications & sound",
"printer": "Printer",
"printerSettings": "Printer settings",
"printTest": "Print test page",
@@ -1279,6 +1280,39 @@
"team": "Team & Staff",
"customRoles": "Custom Roles"
},
"notifPrefs": {
"soundSection": "Sound",
"soundEnabled": "Play a sound for new notifications",
"soundEnabledHint": "Chimes when a new order, waiter call, or alert arrives.",
"soundChoice": "Notification sound",
"preview": "Preview",
"volume": "Volume",
"soundClassic": "Classic",
"soundDing": "Ding",
"soundBell": "Bell",
"soundChime": "Chime",
"soundMarimba": "Marimba",
"soundAlert": "Alert",
"desktopSection": "Desktop notifications",
"desktopHint": "Show a Windows/desktop popup even when the dashboard is in another tab or minimized.",
"enableDesktop": "Enable desktop notifications",
"desktopEnabled": "Desktop popups",
"desktopEnabledHint": "Pop up only when this tab is not focused.",
"desktopGranted": "Desktop notifications enabled",
"desktopDenied": "Permission denied by the browser",
"desktopBlocked": "Notifications are blocked for this site. Allow them in your browser's site settings, then reload.",
"desktopUnsupported": "This browser does not support desktop notifications.",
"desktopFocusNote": "A test popup only appears if you switch to another window first.",
"sendTest": "Send a test notification",
"testTitle": "Meezi",
"testBody": "This is a test notification.",
"testToast": "Test sent",
"inAppSection": "In-app",
"tabBadge": "Unread count on the browser tab",
"tabBadgeHint": "Shows the number of unread notifications in the tab title and favicon.",
"toast": "In-app toast",
"toastHint": "Show a small banner inside the dashboard for new notifications."
},
"customRoles": {
"title": "Custom Roles",
"subtitle": "Define roles with tailored permissions for your staff",
+34
View File
@@ -1273,6 +1273,7 @@
"shop": "کافه و فروشگاه",
"shopGeneral": "پروفایل و اتصال‌ها",
"shopAppearance": "ظاهر و رنگ‌بندی",
"shopNotifications": "اعلان‌ها و صدا",
"printer": "پرینتر",
"printerSettings": "تنظیمات پرینتر",
"printTest": "صفحه تست چاپ",
@@ -1280,6 +1281,39 @@
"team": "تیم و کارمندان",
"customRoles": "نقش‌های سفارشی"
},
"notifPrefs": {
"soundSection": "صدا",
"soundEnabled": "پخش صدا برای اعلان‌های جدید",
"soundEnabledHint": "هنگام رسیدن سفارش جدید، درخواست میز یا هشدار، صدا پخش می‌شود.",
"soundChoice": "صدای اعلان",
"preview": "پیش‌نمایش",
"volume": "بلندی صدا",
"soundClassic": "کلاسیک",
"soundDing": "دینگ",
"soundBell": "زنگ",
"soundChime": "ناقوس",
"soundMarimba": "ماریمبا",
"soundAlert": "هشدار",
"desktopSection": "اعلان‌های دسکتاپ",
"desktopHint": "نمایش پاپ‌آپ ویندوز/دسکتاپ حتی وقتی داشبورد در تب دیگری باز است یا کوچک شده.",
"enableDesktop": "فعال‌سازی اعلان‌های دسکتاپ",
"desktopEnabled": "پاپ‌آپ دسکتاپ",
"desktopEnabledHint": "فقط وقتی این تب فعال نیست نمایش داده می‌شود.",
"desktopGranted": "اعلان‌های دسکتاپ فعال شد",
"desktopDenied": "دسترسی توسط مرورگر رد شد",
"desktopBlocked": "اعلان‌ها برای این سایت مسدود شده‌اند. از تنظیمات سایت در مرورگر اجازه دهید و سپس صفحه را دوباره بارگذاری کنید.",
"desktopUnsupported": "این مرورگر از اعلان‌های دسکتاپ پشتیبانی نمی‌کند.",
"desktopFocusNote": "پاپ‌آپ آزمایشی فقط زمانی نمایش داده می‌شود که ابتدا به پنجره دیگری بروید.",
"sendTest": "ارسال اعلان آزمایشی",
"testTitle": "میزی",
"testBody": "این یک اعلان آزمایشی است.",
"testToast": "اعلان آزمایشی ارسال شد",
"inAppSection": "درون‌برنامه",
"tabBadge": "شمارش خوانده‌نشده روی تب مرورگر",
"tabBadgeHint": "تعداد اعلان‌های خوانده‌نشده را در عنوان تب و فاویکون نشان می‌دهد.",
"toast": "نوتیف درون‌برنامه",
"toastHint": "نمایش یک بنر کوچک داخل داشبورد برای اعلان‌های جدید."
},
"customRoles": {
"title": "نقش‌های سفارشی",
"subtitle": "نقش‌هایی با دسترسی دلخواه برای کارمندان تعریف کنید",