From 459c22054af64ca000ab6e944369307a4983bd01 Mon Sep 17 00:00:00 2001 From: Chatwoot Bot <92152627+chatwoot-bot@users.noreply.github.com> Date: Wed, 11 Jun 2025 09:12:15 -0700 Subject: [PATCH 1/9] chore: Update translations (#11702) --- app/javascript/dashboard/i18n/locale/am/conversation.json | 1 + app/javascript/dashboard/i18n/locale/am/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ar/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ar/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/az/conversation.json | 1 + app/javascript/dashboard/i18n/locale/az/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/bg/conversation.json | 1 + app/javascript/dashboard/i18n/locale/bg/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ca/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ca/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/cs/conversation.json | 1 + app/javascript/dashboard/i18n/locale/cs/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/da/conversation.json | 1 + app/javascript/dashboard/i18n/locale/da/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/de/conversation.json | 1 + app/javascript/dashboard/i18n/locale/de/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/el/conversation.json | 1 + app/javascript/dashboard/i18n/locale/el/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/es/conversation.json | 1 + app/javascript/dashboard/i18n/locale/es/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/fa/conversation.json | 1 + app/javascript/dashboard/i18n/locale/fa/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/fi/conversation.json | 1 + app/javascript/dashboard/i18n/locale/fi/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/fr/conversation.json | 1 + app/javascript/dashboard/i18n/locale/fr/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/he/conversation.json | 1 + app/javascript/dashboard/i18n/locale/he/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/hi/conversation.json | 1 + app/javascript/dashboard/i18n/locale/hi/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/hr/conversation.json | 1 + app/javascript/dashboard/i18n/locale/hr/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/hu/conversation.json | 1 + app/javascript/dashboard/i18n/locale/hu/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/hy/conversation.json | 1 + app/javascript/dashboard/i18n/locale/hy/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/id/conversation.json | 1 + app/javascript/dashboard/i18n/locale/id/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/is/conversation.json | 1 + app/javascript/dashboard/i18n/locale/is/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/it/conversation.json | 1 + app/javascript/dashboard/i18n/locale/it/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ja/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ja/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ka/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ka/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ko/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ko/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/lt/conversation.json | 1 + app/javascript/dashboard/i18n/locale/lt/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/lv/conversation.json | 1 + app/javascript/dashboard/i18n/locale/lv/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ml/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ml/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ms/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ms/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ne/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ne/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/nl/conversation.json | 1 + app/javascript/dashboard/i18n/locale/nl/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/no/conversation.json | 1 + app/javascript/dashboard/i18n/locale/no/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/pl/conversation.json | 1 + app/javascript/dashboard/i18n/locale/pl/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/pt/conversation.json | 1 + app/javascript/dashboard/i18n/locale/pt/integrations.json | 7 +++++++ .../dashboard/i18n/locale/pt_BR/conversation.json | 1 + .../dashboard/i18n/locale/pt_BR/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ro/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ro/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ru/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ru/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/sh/conversation.json | 1 + app/javascript/dashboard/i18n/locale/sh/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/sk/conversation.json | 1 + app/javascript/dashboard/i18n/locale/sk/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/sl/conversation.json | 1 + app/javascript/dashboard/i18n/locale/sl/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/sq/conversation.json | 1 + app/javascript/dashboard/i18n/locale/sq/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/sr/conversation.json | 1 + app/javascript/dashboard/i18n/locale/sr/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/sv/conversation.json | 1 + app/javascript/dashboard/i18n/locale/sv/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ta/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ta/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/th/conversation.json | 1 + app/javascript/dashboard/i18n/locale/th/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/tl/conversation.json | 1 + app/javascript/dashboard/i18n/locale/tl/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/tr/conversation.json | 1 + app/javascript/dashboard/i18n/locale/tr/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/uk/conversation.json | 1 + app/javascript/dashboard/i18n/locale/uk/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/ur/conversation.json | 1 + app/javascript/dashboard/i18n/locale/ur/integrations.json | 7 +++++++ .../dashboard/i18n/locale/ur_IN/conversation.json | 1 + .../dashboard/i18n/locale/ur_IN/integrations.json | 7 +++++++ app/javascript/dashboard/i18n/locale/vi/conversation.json | 1 + app/javascript/dashboard/i18n/locale/vi/integrations.json | 7 +++++++ .../dashboard/i18n/locale/zh_CN/conversation.json | 1 + .../dashboard/i18n/locale/zh_CN/integrations.json | 7 +++++++ .../dashboard/i18n/locale/zh_TW/conversation.json | 1 + .../dashboard/i18n/locale/zh_TW/integrations.json | 7 +++++++ 104 files changed, 416 insertions(+) diff --git a/app/javascript/dashboard/i18n/locale/am/conversation.json b/app/javascript/dashboard/i18n/locale/am/conversation.json index fdb7fc07a..c047f17ad 100644 --- a/app/javascript/dashboard/i18n/locale/am/conversation.json +++ b/app/javascript/dashboard/i18n/locale/am/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/am/integrations.json b/app/javascript/dashboard/i18n/locale/am/integrations.json index 2d182e0dc..43de9b65d 100644 --- a/app/javascript/dashboard/i18n/locale/am/integrations.json +++ b/app/javascript/dashboard/i18n/locale/am/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Cancel" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ar/conversation.json b/app/javascript/dashboard/i18n/locale/ar/conversation.json index fc0d64c54..fe176f4d9 100644 --- a/app/javascript/dashboard/i18n/locale/ar/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ar/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "سمات جهة الاتصال", "PREVIOUS_CONVERSATION": "المحادثات السابقة", "MACROS": "ماكروس", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ar/integrations.json b/app/javascript/dashboard/i18n/locale/ar/integrations.json index d3e41d20c..ccb74cd98 100644 --- a/app/javascript/dashboard/i18n/locale/ar/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ar/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "تم إلغاء ربط المشكلة بنجاح", "ERROR": "حدث خطأ أثناء إلغاء ربط المشكلة، الرجاء المحاولة مرة أخرى" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "نعم، احذف", "CANCEL": "إلغاء" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/az/conversation.json b/app/javascript/dashboard/i18n/locale/az/conversation.json index fdb7fc07a..c047f17ad 100644 --- a/app/javascript/dashboard/i18n/locale/az/conversation.json +++ b/app/javascript/dashboard/i18n/locale/az/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/az/integrations.json b/app/javascript/dashboard/i18n/locale/az/integrations.json index 2d182e0dc..43de9b65d 100644 --- a/app/javascript/dashboard/i18n/locale/az/integrations.json +++ b/app/javascript/dashboard/i18n/locale/az/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Cancel" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/bg/conversation.json b/app/javascript/dashboard/i18n/locale/bg/conversation.json index b6b0daf15..e19af9bd2 100644 --- a/app/javascript/dashboard/i18n/locale/bg/conversation.json +++ b/app/javascript/dashboard/i18n/locale/bg/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Предишни разговори", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/bg/integrations.json b/app/javascript/dashboard/i18n/locale/bg/integrations.json index 9e836ef47..f5392e1fb 100644 --- a/app/javascript/dashboard/i18n/locale/bg/integrations.json +++ b/app/javascript/dashboard/i18n/locale/bg/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Отмени" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ca/conversation.json b/app/javascript/dashboard/i18n/locale/ca/conversation.json index 55d9d5020..088dc2331 100644 --- a/app/javascript/dashboard/i18n/locale/ca/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ca/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Atributs de contacte", "PREVIOUS_CONVERSATION": "Converses prèvies", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ca/integrations.json b/app/javascript/dashboard/i18n/locale/ca/integrations.json index 48f3cbb47..66be524d4 100644 --- a/app/javascript/dashboard/i18n/locale/ca/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ca/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "S'ha desenllaçat la issue correctament", "ERROR": "S'ha produït un error en desenllaçar la issue, torna-ho a provar" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Sí, esborra", "CANCEL": "Cancel·la" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/cs/conversation.json b/app/javascript/dashboard/i18n/locale/cs/conversation.json index 3567a8821..a158b273f 100644 --- a/app/javascript/dashboard/i18n/locale/cs/conversation.json +++ b/app/javascript/dashboard/i18n/locale/cs/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Atributy kontaktu", "PREVIOUS_CONVERSATION": "Předchozí konverzace", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/cs/integrations.json b/app/javascript/dashboard/i18n/locale/cs/integrations.json index 909d91b95..a7ff9afd9 100644 --- a/app/javascript/dashboard/i18n/locale/cs/integrations.json +++ b/app/javascript/dashboard/i18n/locale/cs/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Zrušit" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/da/conversation.json b/app/javascript/dashboard/i18n/locale/da/conversation.json index cb7f6ce1e..34971059f 100644 --- a/app/javascript/dashboard/i18n/locale/da/conversation.json +++ b/app/javascript/dashboard/i18n/locale/da/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Kontakt Attributter", "PREVIOUS_CONVERSATION": "Tidligere Samtaler", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/da/integrations.json b/app/javascript/dashboard/i18n/locale/da/integrations.json index 72b12a1c4..5fd5643e5 100644 --- a/app/javascript/dashboard/i18n/locale/da/integrations.json +++ b/app/javascript/dashboard/i18n/locale/da/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Annuller" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/de/conversation.json b/app/javascript/dashboard/i18n/locale/de/conversation.json index 72aae4345..85db52360 100644 --- a/app/javascript/dashboard/i18n/locale/de/conversation.json +++ b/app/javascript/dashboard/i18n/locale/de/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Kontakt-Attribute", "PREVIOUS_CONVERSATION": "Vorherige Konversationen", "MACROS": "Makros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/de/integrations.json b/app/javascript/dashboard/i18n/locale/de/integrations.json index 6d900c434..1b1f4df62 100644 --- a/app/javascript/dashboard/i18n/locale/de/integrations.json +++ b/app/javascript/dashboard/i18n/locale/de/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Problem erfolgreich getrennt", "ERROR": "Beim Aufheben der Verknüpfung des Problems ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Sind Sie sicher, dass Sie die Integration löschen möchten?", "MESSAGE": "Sind Sie sicher, dass Sie die Integration löschen möchten?", "CONFIRM": "Ja, löschen", "CANCEL": "Stornieren" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/el/conversation.json b/app/javascript/dashboard/i18n/locale/el/conversation.json index 4186ce945..ecfea2a9b 100644 --- a/app/javascript/dashboard/i18n/locale/el/conversation.json +++ b/app/javascript/dashboard/i18n/locale/el/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Ιδιότητες Επαφής", "PREVIOUS_CONVERSATION": "Προηγούμενες συνομιλίες", "MACROS": "Μακροεντολές", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/el/integrations.json b/app/javascript/dashboard/i18n/locale/el/integrations.json index aec2fdf51..0e48b011a 100644 --- a/app/javascript/dashboard/i18n/locale/el/integrations.json +++ b/app/javascript/dashboard/i18n/locale/el/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Άκυρο" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/es/conversation.json b/app/javascript/dashboard/i18n/locale/es/conversation.json index e36f8bdc0..3733925eb 100644 --- a/app/javascript/dashboard/i18n/locale/es/conversation.json +++ b/app/javascript/dashboard/i18n/locale/es/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Atributos de contacto", "PREVIOUS_CONVERSATION": "Conversaciones anteriores", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/es/integrations.json b/app/javascript/dashboard/i18n/locale/es/integrations.json index a07bde914..d9abe6c63 100644 --- a/app/javascript/dashboard/i18n/locale/es/integrations.json +++ b/app/javascript/dashboard/i18n/locale/es/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Problema desvinculado con éxito", "ERROR": "Se ha producido un error al desvincular el problema, inténtelo de nuevo" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Sí, eliminar", "CANCEL": "Cancelar" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/fa/conversation.json b/app/javascript/dashboard/i18n/locale/fa/conversation.json index 2bedcc8b8..ef92db5b0 100644 --- a/app/javascript/dashboard/i18n/locale/fa/conversation.json +++ b/app/javascript/dashboard/i18n/locale/fa/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "ویژگی‌های تماس", "PREVIOUS_CONVERSATION": "گفتگوهای قبلی", "MACROS": "ماکروها", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/fa/integrations.json b/app/javascript/dashboard/i18n/locale/fa/integrations.json index 4654a09d0..2e1b4d38e 100644 --- a/app/javascript/dashboard/i18n/locale/fa/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fa/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "بله، حذف شود", "CANCEL": "انصراف" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/fi/conversation.json b/app/javascript/dashboard/i18n/locale/fi/conversation.json index 465cb8542..3c91f2c2c 100644 --- a/app/javascript/dashboard/i18n/locale/fi/conversation.json +++ b/app/javascript/dashboard/i18n/locale/fi/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Yhteystiedon määritteet", "PREVIOUS_CONVERSATION": "Edelliset keskustelut", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/fi/integrations.json b/app/javascript/dashboard/i18n/locale/fi/integrations.json index ca681f4fd..491f7c768 100644 --- a/app/javascript/dashboard/i18n/locale/fi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fi/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Peruuta" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/fr/conversation.json b/app/javascript/dashboard/i18n/locale/fr/conversation.json index 78901dd2b..70d9014ac 100644 --- a/app/javascript/dashboard/i18n/locale/fr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/fr/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Attributs du contact", "PREVIOUS_CONVERSATION": "Conversations précédentes", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/fr/integrations.json b/app/javascript/dashboard/i18n/locale/fr/integrations.json index 30e60f298..450d22b9b 100644 --- a/app/javascript/dashboard/i18n/locale/fr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fr/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Oui, supprimer", "CANCEL": "Annuler" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/he/conversation.json b/app/javascript/dashboard/i18n/locale/he/conversation.json index 6676a7dc9..ce1224c3a 100644 --- a/app/javascript/dashboard/i18n/locale/he/conversation.json +++ b/app/javascript/dashboard/i18n/locale/he/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "תכונות יצירת קשר", "PREVIOUS_CONVERSATION": "שיחות קודמות", "MACROS": "מאקרו", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/he/integrations.json b/app/javascript/dashboard/i18n/locale/he/integrations.json index 72b5f4d86..6ec0bef03 100644 --- a/app/javascript/dashboard/i18n/locale/he/integrations.json +++ b/app/javascript/dashboard/i18n/locale/he/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "ביטול" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/hi/conversation.json b/app/javascript/dashboard/i18n/locale/hi/conversation.json index fdb7fc07a..c047f17ad 100644 --- a/app/javascript/dashboard/i18n/locale/hi/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hi/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/hi/integrations.json b/app/javascript/dashboard/i18n/locale/hi/integrations.json index db3186acf..bd79e81f3 100644 --- a/app/javascript/dashboard/i18n/locale/hi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hi/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "रद्द करें" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/hr/conversation.json b/app/javascript/dashboard/i18n/locale/hr/conversation.json index c9fc2271f..ada317045 100644 --- a/app/javascript/dashboard/i18n/locale/hr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hr/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/hr/integrations.json b/app/javascript/dashboard/i18n/locale/hr/integrations.json index 63b3c01d4..89954c4e2 100644 --- a/app/javascript/dashboard/i18n/locale/hr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hr/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Da, izbriši", "CANCEL": "Odustani" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/hu/conversation.json b/app/javascript/dashboard/i18n/locale/hu/conversation.json index 0473e3ac5..6fe483cf3 100644 --- a/app/javascript/dashboard/i18n/locale/hu/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hu/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Kontakt Tulajdonságok", "PREVIOUS_CONVERSATION": "Korábbi beszélgetések", "MACROS": "Makrók", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/hu/integrations.json b/app/javascript/dashboard/i18n/locale/hu/integrations.json index 6d1d5b0b8..098dd1f1a 100644 --- a/app/javascript/dashboard/i18n/locale/hu/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hu/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Igen, törlés", "CANCEL": "Mégse" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/hy/conversation.json b/app/javascript/dashboard/i18n/locale/hy/conversation.json index fdb7fc07a..c047f17ad 100644 --- a/app/javascript/dashboard/i18n/locale/hy/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hy/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/hy/integrations.json b/app/javascript/dashboard/i18n/locale/hy/integrations.json index 84f9b282f..4eb1343cb 100644 --- a/app/javascript/dashboard/i18n/locale/hy/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hy/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Cancel" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/id/conversation.json b/app/javascript/dashboard/i18n/locale/id/conversation.json index 2f06d6b09..d3750a26e 100644 --- a/app/javascript/dashboard/i18n/locale/id/conversation.json +++ b/app/javascript/dashboard/i18n/locale/id/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Atribut Kontak", "PREVIOUS_CONVERSATION": "Percakapan Sebelumnya", "MACROS": "Makro", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/id/integrations.json b/app/javascript/dashboard/i18n/locale/id/integrations.json index 0dd0cd2eb..6a10e7bd2 100644 --- a/app/javascript/dashboard/i18n/locale/id/integrations.json +++ b/app/javascript/dashboard/i18n/locale/id/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Ya, hapus", "CANCEL": "Batalkan" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/is/conversation.json b/app/javascript/dashboard/i18n/locale/is/conversation.json index a0a9b697d..b5968c810 100644 --- a/app/javascript/dashboard/i18n/locale/is/conversation.json +++ b/app/javascript/dashboard/i18n/locale/is/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Fyrri samtöl", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/is/integrations.json b/app/javascript/dashboard/i18n/locale/is/integrations.json index c31764533..90ba47749 100644 --- a/app/javascript/dashboard/i18n/locale/is/integrations.json +++ b/app/javascript/dashboard/i18n/locale/is/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Hætta við" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/it/conversation.json b/app/javascript/dashboard/i18n/locale/it/conversation.json index 0b610b681..594e154d1 100644 --- a/app/javascript/dashboard/i18n/locale/it/conversation.json +++ b/app/javascript/dashboard/i18n/locale/it/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Attributi contatti", "PREVIOUS_CONVERSATION": "Conversazioni precedenti", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/it/integrations.json b/app/javascript/dashboard/i18n/locale/it/integrations.json index 73d0c955f..12b389fa3 100644 --- a/app/javascript/dashboard/i18n/locale/it/integrations.json +++ b/app/javascript/dashboard/i18n/locale/it/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "annulla" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ja/conversation.json b/app/javascript/dashboard/i18n/locale/ja/conversation.json index 42b0c74f6..23d768def 100644 --- a/app/javascript/dashboard/i18n/locale/ja/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ja/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "連絡先属性", "PREVIOUS_CONVERSATION": "以前の会話", "MACROS": "マクロ", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ja/integrations.json b/app/javascript/dashboard/i18n/locale/ja/integrations.json index 7766cdd74..42694429a 100644 --- a/app/javascript/dashboard/i18n/locale/ja/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ja/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "課題のリンクが正常に解除されました", "ERROR": "課題のリンク解除中にエラーが発生しました。もう一度お試しください" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "はい、削除します", "CANCEL": "キャンセル" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ka/conversation.json b/app/javascript/dashboard/i18n/locale/ka/conversation.json index fdb7fc07a..c047f17ad 100644 --- a/app/javascript/dashboard/i18n/locale/ka/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ka/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ka/integrations.json b/app/javascript/dashboard/i18n/locale/ka/integrations.json index 84f9b282f..4eb1343cb 100644 --- a/app/javascript/dashboard/i18n/locale/ka/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ka/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Cancel" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ko/conversation.json b/app/javascript/dashboard/i18n/locale/ko/conversation.json index 918f7587c..e346d0ae8 100644 --- a/app/javascript/dashboard/i18n/locale/ko/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ko/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "이전 대화", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ko/integrations.json b/app/javascript/dashboard/i18n/locale/ko/integrations.json index 18e9c9783..e0b1209ca 100644 --- a/app/javascript/dashboard/i18n/locale/ko/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ko/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "취소" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/lt/conversation.json b/app/javascript/dashboard/i18n/locale/lt/conversation.json index 932f53c91..49dcba6ca 100644 --- a/app/javascript/dashboard/i18n/locale/lt/conversation.json +++ b/app/javascript/dashboard/i18n/locale/lt/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Kontakto Požymiai", "PREVIOUS_CONVERSATION": "Ankstesni pokalbiai", "MACROS": "Makrokomandos", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/lt/integrations.json b/app/javascript/dashboard/i18n/locale/lt/integrations.json index 3abe9d495..00e13c468 100644 --- a/app/javascript/dashboard/i18n/locale/lt/integrations.json +++ b/app/javascript/dashboard/i18n/locale/lt/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Taip, Trinti", "CANCEL": "Atšaukti" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/lv/conversation.json b/app/javascript/dashboard/i18n/locale/lv/conversation.json index 6aecaa89d..b69618141 100644 --- a/app/javascript/dashboard/i18n/locale/lv/conversation.json +++ b/app/javascript/dashboard/i18n/locale/lv/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Kontaktpersonas Īpašības", "PREVIOUS_CONVERSATION": "Iepriekšējās Sarunas", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/lv/integrations.json b/app/javascript/dashboard/i18n/locale/lv/integrations.json index 1f192d33d..c230ded21 100644 --- a/app/javascript/dashboard/i18n/locale/lv/integrations.json +++ b/app/javascript/dashboard/i18n/locale/lv/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Problēma ir veiksmīgi atsaistīta", "ERROR": "Atsaistot jautājumu radās kļūda. Lūdzu, mēģiniet vēlreiz" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Vai tiešām vēlaties dzēst integrāciju?", "MESSAGE": "Vai tiešām vēlaties dzēst integrāciju?", "CONFIRM": "Jā, dzēst", "CANCEL": "Atcelt" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ml/conversation.json b/app/javascript/dashboard/i18n/locale/ml/conversation.json index 2df0b01e2..0ea878528 100644 --- a/app/javascript/dashboard/i18n/locale/ml/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ml/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "മുമ്പത്തെ സംഭാഷണങ്ങൾ", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ml/integrations.json b/app/javascript/dashboard/i18n/locale/ml/integrations.json index 99fb64b55..f048ff9c6 100644 --- a/app/javascript/dashboard/i18n/locale/ml/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ml/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "റദ്ദാക്കുക" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ms/conversation.json b/app/javascript/dashboard/i18n/locale/ms/conversation.json index 510158a2b..f85962a18 100644 --- a/app/javascript/dashboard/i18n/locale/ms/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ms/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ms/integrations.json b/app/javascript/dashboard/i18n/locale/ms/integrations.json index e3a75f0be..316e84f1d 100644 --- a/app/javascript/dashboard/i18n/locale/ms/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ms/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Batalkan" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ne/conversation.json b/app/javascript/dashboard/i18n/locale/ne/conversation.json index 4b8f157b3..94f9f6e6a 100644 --- a/app/javascript/dashboard/i18n/locale/ne/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ne/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ne/integrations.json b/app/javascript/dashboard/i18n/locale/ne/integrations.json index f337ee0dd..5779e973f 100644 --- a/app/javascript/dashboard/i18n/locale/ne/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ne/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Cancel" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/nl/conversation.json b/app/javascript/dashboard/i18n/locale/nl/conversation.json index 392725d8e..1c64164f1 100644 --- a/app/javascript/dashboard/i18n/locale/nl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/nl/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Vorige gesprekken", "MACROS": "Macro's", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/nl/integrations.json b/app/javascript/dashboard/i18n/locale/nl/integrations.json index 7a9419d9e..94cc0034d 100644 --- a/app/javascript/dashboard/i18n/locale/nl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/nl/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Ja, verwijderen", "CANCEL": "Annuleren" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/no/conversation.json b/app/javascript/dashboard/i18n/locale/no/conversation.json index aabb7450a..c83a5833b 100644 --- a/app/javascript/dashboard/i18n/locale/no/conversation.json +++ b/app/javascript/dashboard/i18n/locale/no/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Tidligere samtaler", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/no/integrations.json b/app/javascript/dashboard/i18n/locale/no/integrations.json index 610600001..6d22be801 100644 --- a/app/javascript/dashboard/i18n/locale/no/integrations.json +++ b/app/javascript/dashboard/i18n/locale/no/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Ja, slett", "CANCEL": "Avbryt" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/pl/conversation.json b/app/javascript/dashboard/i18n/locale/pl/conversation.json index 4c17426c8..4c3086088 100644 --- a/app/javascript/dashboard/i18n/locale/pl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/pl/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Atrybuty kontaktu", "PREVIOUS_CONVERSATION": "Poprzednie konwersacje", "MACROS": "Makra", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/pl/integrations.json b/app/javascript/dashboard/i18n/locale/pl/integrations.json index 22392d519..65752a63f 100644 --- a/app/javascript/dashboard/i18n/locale/pl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pl/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Tak, usuń", "CANCEL": "Anuluj" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/pt/conversation.json b/app/javascript/dashboard/i18n/locale/pt/conversation.json index d9eafd263..d2eab7850 100644 --- a/app/javascript/dashboard/i18n/locale/pt/conversation.json +++ b/app/javascript/dashboard/i18n/locale/pt/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Atributos do contacto", "PREVIOUS_CONVERSATION": "Conversas anteriores", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/pt/integrations.json b/app/javascript/dashboard/i18n/locale/pt/integrations.json index c6c9d6c4e..60b69375f 100644 --- a/app/javascript/dashboard/i18n/locale/pt/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pt/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Problema desvinculado com sucesso", "ERROR": "Houve um erro ao desvincular o problema, por favor, tente novamente" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Sim, excluir", "CANCEL": "Cancelar" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json b/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json index fad3b4c54..c426a4cac 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Atributos do contato", "PREVIOUS_CONVERSATION": "Conversas anteriores", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json index 818c64d07..e284ed823 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue desvinculada com sucesso", "ERROR": "Houve um erro ao desvincular o atributo, por favor, tente novamente" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Tem certeza que deseja excluir esta integração?", "MESSAGE": "Tem certeza que deseja excluir esta integração?", "CONFIRM": "Sim, excluir", "CANCEL": "Cancelar" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ro/conversation.json b/app/javascript/dashboard/i18n/locale/ro/conversation.json index e170c7d5f..4cc8d43c9 100644 --- a/app/javascript/dashboard/i18n/locale/ro/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ro/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Atribute Contacte", "PREVIOUS_CONVERSATION": "Conversații anterioare", "MACROS": "Macrocomenzi", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ro/integrations.json b/app/javascript/dashboard/i18n/locale/ro/integrations.json index 87372a0d1..ac6dee5c7 100644 --- a/app/javascript/dashboard/i18n/locale/ro/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ro/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Renunță" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ru/conversation.json b/app/javascript/dashboard/i18n/locale/ru/conversation.json index 0417bc56a..ffc9b90c9 100644 --- a/app/javascript/dashboard/i18n/locale/ru/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ru/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Атрибуты контакта", "PREVIOUS_CONVERSATION": "Предыдущие диалоги", "MACROS": "Макросс", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ru/integrations.json b/app/javascript/dashboard/i18n/locale/ru/integrations.json index fda0454aa..cee7df308 100644 --- a/app/javascript/dashboard/i18n/locale/ru/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ru/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Задача успешно отвязана", "ERROR": "Произошла ошибка при отвязке задачи, пожалуйста, попробуйте ещё раз" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Вы уверены, что хотите удалить интеграцию?", "MESSAGE": "Вы уверены, что хотите удалить интеграцию?", "CONFIRM": "Да, удалить", "CANCEL": "Отменить" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/sh/conversation.json b/app/javascript/dashboard/i18n/locale/sh/conversation.json index fdb7fc07a..c047f17ad 100644 --- a/app/javascript/dashboard/i18n/locale/sh/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sh/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/sh/integrations.json b/app/javascript/dashboard/i18n/locale/sh/integrations.json index 84f9b282f..4eb1343cb 100644 --- a/app/javascript/dashboard/i18n/locale/sh/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sh/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Cancel" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/sk/conversation.json b/app/javascript/dashboard/i18n/locale/sk/conversation.json index e963f9b29..bbda30a36 100644 --- a/app/javascript/dashboard/i18n/locale/sk/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sk/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Atribúty kontaktu", "PREVIOUS_CONVERSATION": "Prechádzajúce konverzácie", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/sk/integrations.json b/app/javascript/dashboard/i18n/locale/sk/integrations.json index 9ea4488b1..5ff7aa6e3 100644 --- a/app/javascript/dashboard/i18n/locale/sk/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sk/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Zrušiť" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/sl/conversation.json b/app/javascript/dashboard/i18n/locale/sl/conversation.json index d110d4425..0b9bad8dd 100644 --- a/app/javascript/dashboard/i18n/locale/sl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sl/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/sl/integrations.json b/app/javascript/dashboard/i18n/locale/sl/integrations.json index 5c072f404..43627d32c 100644 --- a/app/javascript/dashboard/i18n/locale/sl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sl/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Da, izbriši", "CANCEL": "Prekliči" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/sq/conversation.json b/app/javascript/dashboard/i18n/locale/sq/conversation.json index fdb7fc07a..c047f17ad 100644 --- a/app/javascript/dashboard/i18n/locale/sq/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sq/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/sq/integrations.json b/app/javascript/dashboard/i18n/locale/sq/integrations.json index f548b9fcc..59e0f393d 100644 --- a/app/javascript/dashboard/i18n/locale/sq/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sq/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Cancel" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/sr/conversation.json b/app/javascript/dashboard/i18n/locale/sr/conversation.json index bdd0e3f77..2543dbcb9 100644 --- a/app/javascript/dashboard/i18n/locale/sr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sr/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Atributi kontakta", "PREVIOUS_CONVERSATION": "Prethodni razgovor", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/sr/integrations.json b/app/javascript/dashboard/i18n/locale/sr/integrations.json index abc64fb8f..cb72cc150 100644 --- a/app/javascript/dashboard/i18n/locale/sr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sr/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Otkaži" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/sv/conversation.json b/app/javascript/dashboard/i18n/locale/sv/conversation.json index 705352016..234656f95 100644 --- a/app/javascript/dashboard/i18n/locale/sv/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sv/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Tidigare konversationer", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/sv/integrations.json b/app/javascript/dashboard/i18n/locale/sv/integrations.json index 4fd5f436d..11d651b45 100644 --- a/app/javascript/dashboard/i18n/locale/sv/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sv/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Ja, ta bort", "CANCEL": "Avbryt" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ta/conversation.json b/app/javascript/dashboard/i18n/locale/ta/conversation.json index 4d47789c3..1e2028e82 100644 --- a/app/javascript/dashboard/i18n/locale/ta/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ta/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "முந்தைய உரையாடல்கள்", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ta/integrations.json b/app/javascript/dashboard/i18n/locale/ta/integrations.json index 144020ac7..cfad7d30f 100644 --- a/app/javascript/dashboard/i18n/locale/ta/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ta/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "ரத்துசெய்" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/th/conversation.json b/app/javascript/dashboard/i18n/locale/th/conversation.json index 7f42f00cb..8677f18d7 100644 --- a/app/javascript/dashboard/i18n/locale/th/conversation.json +++ b/app/javascript/dashboard/i18n/locale/th/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "แอตทริบิวต์ผู้ติดต่อ", "PREVIOUS_CONVERSATION": "การสนทนาก่อนหน้า", "MACROS": "คีย์ลัด", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/th/integrations.json b/app/javascript/dashboard/i18n/locale/th/integrations.json index 76794d8db..64697d7ea 100644 --- a/app/javascript/dashboard/i18n/locale/th/integrations.json +++ b/app/javascript/dashboard/i18n/locale/th/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "ยกเลิก" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/tl/conversation.json b/app/javascript/dashboard/i18n/locale/tl/conversation.json index fdb7fc07a..c047f17ad 100644 --- a/app/javascript/dashboard/i18n/locale/tl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/tl/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/tl/integrations.json b/app/javascript/dashboard/i18n/locale/tl/integrations.json index 2d182e0dc..43de9b65d 100644 --- a/app/javascript/dashboard/i18n/locale/tl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/tl/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Cancel" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/tr/conversation.json b/app/javascript/dashboard/i18n/locale/tr/conversation.json index 307bed38f..e37ae0362 100644 --- a/app/javascript/dashboard/i18n/locale/tr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/tr/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "İletişim Nitelikleri", "PREVIOUS_CONVERSATION": "Önceki Konuşmalar", "MACROS": "Kısayollar", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/tr/integrations.json b/app/javascript/dashboard/i18n/locale/tr/integrations.json index dd8ae0ba6..12c7fc99c 100644 --- a/app/javascript/dashboard/i18n/locale/tr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/tr/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Evet, sil", "CANCEL": "İptal Et" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/uk/conversation.json b/app/javascript/dashboard/i18n/locale/uk/conversation.json index 0311a477c..192acf812 100644 --- a/app/javascript/dashboard/i18n/locale/uk/conversation.json +++ b/app/javascript/dashboard/i18n/locale/uk/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Атрибути контакту", "PREVIOUS_CONVERSATION": "Попередні бесіди", "MACROS": "Макрос", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/uk/integrations.json b/app/javascript/dashboard/i18n/locale/uk/integrations.json index e905595f0..619a3fff0 100644 --- a/app/javascript/dashboard/i18n/locale/uk/integrations.json +++ b/app/javascript/dashboard/i18n/locale/uk/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Так, видалити", "CANCEL": "Скасувати" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ur/conversation.json b/app/javascript/dashboard/i18n/locale/ur/conversation.json index f7fdca5e5..0078f4b5b 100644 --- a/app/javascript/dashboard/i18n/locale/ur/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ur/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "پچھلی بات چیت", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ur/integrations.json b/app/javascript/dashboard/i18n/locale/ur/integrations.json index 1a73202eb..aa18160a1 100644 --- a/app/javascript/dashboard/i18n/locale/ur/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ur/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "منسوخ کریں۔" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json b/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json index fdb7fc07a..c047f17ad 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Contact Attributes", "PREVIOUS_CONVERSATION": "Previous Conversations", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json index 84f9b282f..4eb1343cb 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Yes, delete", "CANCEL": "Cancel" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/vi/conversation.json b/app/javascript/dashboard/i18n/locale/vi/conversation.json index 72e66e69a..50b5edea3 100644 --- a/app/javascript/dashboard/i18n/locale/vi/conversation.json +++ b/app/javascript/dashboard/i18n/locale/vi/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "Thuộc tính của liên hệ", "PREVIOUS_CONVERSATION": "Cuộc trò chuyện trước đó", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/vi/integrations.json b/app/javascript/dashboard/i18n/locale/vi/integrations.json index b42afd4cd..53a9d6997 100644 --- a/app/javascript/dashboard/i18n/locale/vi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/vi/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "Có, xoá", "CANCEL": "Huỷ" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json b/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json index cd8e8f343..43c46fa3a 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "联系人属性", "PREVIOUS_CONVERSATION": "上一次对话", "MACROS": "宏", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json index 97a049caa..53911f104 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "问题取消链接成功", "ERROR": "取消链接问题时出错,请重试" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "您确定要删除该集成吗?", "MESSAGE": "您确定要删除该集成吗?", "CONFIRM": "是,删除", "CANCEL": "取消" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json b/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json index be8b5e18e..8e8082846 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json @@ -308,6 +308,7 @@ "CONTACT_ATTRIBUTES": "聯絡人屬性", "PREVIOUS_CONVERSATION": "上一次對話", "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", "SHOPIFY_ORDERS": "Shopify Orders" }, "SHOPIFY": { diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json index 9b5860c57..3d6150301 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json @@ -318,11 +318,18 @@ "SUCCESS": "Issue unlinked successfully", "ERROR": "There was an error unlinking the issue, please try again" }, + "NO_LINKED_ISSUES": "No linked issues found", "DELETE": { "TITLE": "Are you sure you want to delete the integration?", "MESSAGE": "Are you sure you want to delete the integration?", "CONFIRM": "是的,刪除", "CANCEL": "取消" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" } } }, From 7a67799f35430397e5c098588007a52986fb8b28 Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Wed, 11 Jun 2025 22:45:32 +0530 Subject: [PATCH 2/9] fix: Send CSAT survey only when agent can reply in conversation (#11637) --- app/listeners/csat_survey_listener.rb | 8 ++ app/services/csat_survey_service.rb | 48 ++++++++++ .../hook_execution_service.rb | 19 ---- config/locales/en.yml | 2 + spec/listeners/csat_survey_listener_spec.rb | 31 +++++++ spec/services/csat_survey_service_spec.rb | 91 +++++++++++++++++++ .../hook_execution_service_spec.rb | 63 ------------- 7 files changed, 180 insertions(+), 82 deletions(-) create mode 100644 app/services/csat_survey_service.rb create mode 100644 spec/services/csat_survey_service_spec.rb diff --git a/app/listeners/csat_survey_listener.rb b/app/listeners/csat_survey_listener.rb index abc366400..82cf09497 100644 --- a/app/listeners/csat_survey_listener.rb +++ b/app/listeners/csat_survey_listener.rb @@ -1,4 +1,12 @@ class CsatSurveyListener < BaseListener + def conversation_status_changed(event) + conversation = extract_conversation_and_account(event)[0] + + return unless conversation.resolved? + + CsatSurveyService.new(conversation: conversation).perform + end + def message_updated(event) message = extract_message_and_account(event)[0] return unless message.input_csat? diff --git a/app/services/csat_survey_service.rb b/app/services/csat_survey_service.rb new file mode 100644 index 000000000..15d63722c --- /dev/null +++ b/app/services/csat_survey_service.rb @@ -0,0 +1,48 @@ +class CsatSurveyService + pattr_initialize [:conversation!] + + def perform + return unless should_send_csat_survey? + + if within_messaging_window? + ::MessageTemplates::Template::CsatSurvey.new(conversation: conversation).perform + else + create_csat_not_sent_activity_message + end + end + + private + + delegate :inbox, :contact, to: :conversation + + def should_send_csat_survey? + conversation_allows_csat? && csat_enabled? && !csat_already_sent? + end + + def conversation_allows_csat? + conversation.resolved? && !conversation.tweet? + end + + def csat_enabled? + inbox.csat_survey_enabled? + end + + def csat_already_sent? + conversation.messages.where(content_type: :input_csat).present? + end + + def within_messaging_window? + conversation.can_reply? + end + + def create_csat_not_sent_activity_message + content = I18n.t('conversations.activity.csat.not_sent_due_to_messaging_window') + activity_message_params = { + account_id: conversation.account_id, + inbox_id: conversation.inbox_id, + message_type: :activity, + content: content + } + ::Conversations::ActivityMessageJob.perform_later(conversation, activity_message_params) if content + end +end diff --git a/app/services/message_templates/hook_execution_service.rb b/app/services/message_templates/hook_execution_service.rb index a8a4c4318..7da475af3 100644 --- a/app/services/message_templates/hook_execution_service.rb +++ b/app/services/message_templates/hook_execution_service.rb @@ -17,7 +17,6 @@ class MessageTemplates::HookExecutionService ::MessageTemplates::Template::OutOfOffice.new(conversation: conversation).perform if should_send_out_of_office_message? ::MessageTemplates::Template::Greeting.new(conversation: conversation).perform if should_send_greeting? ::MessageTemplates::Template::EmailCollect.new(conversation: conversation).perform if inbox.enable_email_collect && should_send_email_collect? - ::MessageTemplates::Template::CsatSurvey.new(conversation: conversation).perform if should_send_csat_survey? end def should_send_out_of_office_message? @@ -55,23 +54,5 @@ class MessageTemplates::HookExecutionService def contact_has_email? contact.email end - - def csat_enabled_conversation? - return false unless conversation.resolved? - # should not sent since the link will be public - return false if conversation.tweet? - return false unless inbox.csat_survey_enabled? - - true - end - - def should_send_csat_survey? - return unless csat_enabled_conversation? - - # only send CSAT once in a conversation - return if conversation.messages.where(content_type: :input_csat).present? - - true - end end MessageTemplates::HookExecutionService.prepend_mod_with('MessageTemplates::HookExecutionService') diff --git a/config/locales/en.yml b/config/locales/en.yml index 74177f7dd..77f2af9b4 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -186,6 +186,8 @@ en: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' diff --git a/spec/listeners/csat_survey_listener_spec.rb b/spec/listeners/csat_survey_listener_spec.rb index 9161c4e71..0f957dcb4 100644 --- a/spec/listeners/csat_survey_listener_spec.rb +++ b/spec/listeners/csat_survey_listener_spec.rb @@ -13,6 +13,8 @@ describe CsatSurveyListener do ) end let!(:event) { Events::Base.new(event_name, Time.zone.now, message: message) } + let!(:csat_enabled_inbox) { create(:inbox, account: account, csat_survey_enabled: true) } + let!(:resolved_conversation) { create(:conversation, account: account, inbox: csat_enabled_inbox, status: :resolved) } describe '#message_updated' do let(:event_name) { 'message.updated' } @@ -33,4 +35,33 @@ describe CsatSurveyListener do end end end + + describe '#conversation_status_changed' do + let(:event_name) { 'conversation.status_changed' } + let(:csat_service) { double } + + before do + allow(resolved_conversation).to receive(:saved_change_to_status?).and_return(true) + end + + context 'when conversation is resolved and CSAT is enabled' do + it 'triggers CSAT survey service' do + event = Events::Base.new(event_name, Time.zone.now, conversation: resolved_conversation) + expect(csat_service).to receive(:perform) + expect(CsatSurveyService).to receive(:new).with(conversation: resolved_conversation).and_return(csat_service) + + listener.conversation_status_changed(event) + end + end + + context 'when conversation is not resolved' do + it 'does not trigger CSAT survey service' do + open_conversation = create(:conversation, account: account, inbox: csat_enabled_inbox, status: :open) + event = Events::Base.new(event_name, Time.zone.now, conversation: open_conversation) + + expect(CsatSurveyService).not_to receive(:new) + listener.conversation_status_changed(event) + end + end + end end diff --git a/spec/services/csat_survey_service_spec.rb b/spec/services/csat_survey_service_spec.rb new file mode 100644 index 000000000..5b3b3279a --- /dev/null +++ b/spec/services/csat_survey_service_spec.rb @@ -0,0 +1,91 @@ +require 'rails_helper' + +describe CsatSurveyService do + let(:account) { create(:account) } + let(:inbox) { create(:inbox, account: account, csat_survey_enabled: true) } + let(:conversation) { create(:conversation, inbox: inbox, account: account, status: :resolved) } + let(:service) { described_class.new(conversation: conversation) } + + describe '#perform' do + let(:csat_template) { instance_double(MessageTemplates::Template::CsatSurvey) } + + before do + allow(MessageTemplates::Template::CsatSurvey).to receive(:new).and_return(csat_template) + allow(csat_template).to receive(:perform) + allow(Conversations::ActivityMessageJob).to receive(:perform_later) + end + + context 'when CSAT survey should be sent' do + before do + allow(conversation).to receive(:can_reply?).and_return(true) + end + + it 'sends CSAT survey when within messaging window' do + service.perform + + expect(MessageTemplates::Template::CsatSurvey).to have_received(:new).with(conversation: conversation) + expect(csat_template).to have_received(:perform) + end + end + + context 'when outside messaging window' do + before do + allow(conversation).to receive(:can_reply?).and_return(false) + end + + it 'creates activity message instead of sending survey' do + service.perform + + expect(Conversations::ActivityMessageJob).to have_received(:perform_later).with( + conversation, + hash_including(content: I18n.t('conversations.activity.csat.not_sent_due_to_messaging_window')) + ) + expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new) + end + end + + context 'when CSAT survey should not be sent' do + it 'does nothing when conversation is not resolved' do + conversation.update(status: :open) + + service.perform + + expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new) + expect(Conversations::ActivityMessageJob).not_to have_received(:perform_later) + end + + it 'does nothing when CSAT survey is not enabled' do + inbox.update(csat_survey_enabled: false) + + service.perform + + expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new) + expect(Conversations::ActivityMessageJob).not_to have_received(:perform_later) + end + + it 'does nothing when CSAT already sent' do + create(:message, conversation: conversation, content_type: :input_csat) + + service.perform + + expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new) + expect(Conversations::ActivityMessageJob).not_to have_received(:perform_later) + end + + it 'does nothing for Twitter conversations' do + twitter_channel = create(:channel_twitter_profile) + twitter_inbox = create(:inbox, channel: twitter_channel, csat_survey_enabled: true) + twitter_conversation = create(:conversation, + inbox: twitter_inbox, + status: :resolved, + additional_attributes: { type: 'tweet' }) + twitter_service = described_class.new(conversation: twitter_conversation) + + twitter_service.perform + + expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new) + expect(Conversations::ActivityMessageJob).not_to have_received(:perform_later) + end + end + end +end \ No newline at end of file diff --git a/spec/services/message_templates/hook_execution_service_spec.rb b/spec/services/message_templates/hook_execution_service_spec.rb index 24e40ea8d..b80c42fd8 100644 --- a/spec/services/message_templates/hook_execution_service_spec.rb +++ b/spec/services/message_templates/hook_execution_service_spec.rb @@ -111,69 +111,6 @@ describe MessageTemplates::HookExecutionService do end end - context 'when CSAT Survey' do - let(:csat_survey) { double } - let(:conversation) { create(:conversation) } - - before do - allow(MessageTemplates::Template::CsatSurvey).to receive(:new).and_return(csat_survey) - allow(csat_survey).to receive(:perform).and_return(true) - create(:message, conversation: conversation, message_type: 'incoming') - end - - it 'calls ::MessageTemplates::Template::CsatSurvey when a conversation is resolved in an inbox with survey enabled' do - conversation.inbox.update(csat_survey_enabled: true) - - conversation.resolved! - Conversations::ActivityMessageJob.perform_now(conversation, - { account_id: conversation.account_id, inbox_id: conversation.inbox_id, message_type: :activity, - content: 'Conversation marked resolved!!' }) - - expect(MessageTemplates::Template::CsatSurvey).to have_received(:new).with(conversation: conversation) - expect(csat_survey).to have_received(:perform) - end - - it 'will not call ::MessageTemplates::Template::CsatSurvey when Csat is not enabled' do - conversation.inbox.update(csat_survey_enabled: false) - - conversation.resolved! - Conversations::ActivityMessageJob.perform_now(conversation, - { account_id: conversation.account_id, inbox_id: conversation.inbox_id, message_type: :activity, - content: 'Conversation marked resolved!!' }) - - expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new).with(conversation: conversation) - expect(csat_survey).not_to have_received(:perform) - end - - it 'will not call ::MessageTemplates::Template::CsatSurvey if its a tweet conversation' do - twitter_channel = create(:channel_twitter_profile) - twitter_inbox = create(:inbox, channel: twitter_channel) - conversation = create(:conversation, inbox: twitter_inbox, additional_attributes: { type: 'tweet' }) - conversation.inbox.update(csat_survey_enabled: true) - - conversation.resolved! - Conversations::ActivityMessageJob.perform_now(conversation, - { account_id: conversation.account_id, inbox_id: conversation.inbox_id, message_type: :activity, - content: 'Conversation marked resolved!!' }) - - expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new).with(conversation: conversation) - expect(csat_survey).not_to have_received(:perform) - end - - it 'will not call ::MessageTemplates::Template::CsatSurvey if another Csat was already sent' do - conversation.inbox.update(csat_survey_enabled: true) - conversation.messages.create!(message_type: 'outgoing', content_type: :input_csat, account: conversation.account, inbox: conversation.inbox) - - conversation.resolved! - Conversations::ActivityMessageJob.perform_now(conversation, - { account_id: conversation.account_id, inbox_id: conversation.inbox_id, message_type: :activity, - content: 'Conversation marked resolved!!' }) - - expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new).with(conversation: conversation) - expect(csat_survey).not_to have_received(:perform) - end - end - context 'when it is after working hours' do it 'calls ::MessageTemplates::Template::OutOfOffice' do contact = create(:contact) From 68bfbc7eb0fa8b7d7a49ed350b6d9fdf243421c3 Mon Sep 17 00:00:00 2001 From: Michael Choi <1226798+choilive@users.noreply.github.com> Date: Wed, 11 Jun 2025 12:16:44 -0500 Subject: [PATCH 3/9] feat: Add liquid processing for SMS campaigns (#10981) Liquid template processing for SMS campaigns fixes: https://github.com/chatwoot/chatwoot/issues/10980 Co-authored-by: Sojan Jose --- .../liquid/campaign_template_service.rb | 26 +++++ .../sms/oneoff_sms_campaign_service.rb | 3 +- .../twilio/oneoff_sms_campaign_service.rb | 3 +- .../liquid/campaign_template_service_spec.rb | 107 ++++++++++++++++++ .../sms/oneoff_sms_campaign_service_spec.rb | 9 ++ .../oneoff_sms_campaign_service_spec.rb | 10 ++ 6 files changed, 156 insertions(+), 2 deletions(-) create mode 100644 app/services/liquid/campaign_template_service.rb create mode 100644 spec/services/liquid/campaign_template_service_spec.rb diff --git a/app/services/liquid/campaign_template_service.rb b/app/services/liquid/campaign_template_service.rb new file mode 100644 index 000000000..db273087d --- /dev/null +++ b/app/services/liquid/campaign_template_service.rb @@ -0,0 +1,26 @@ +class Liquid::CampaignTemplateService + pattr_initialize [:campaign!, :contact!] + + def call(message) + process_liquid_in_content(message_drops, message) + end + + private + + def message_drops + { + 'contact' => ContactDrop.new(contact), + 'agent' => UserDrop.new(campaign.sender), + 'inbox' => InboxDrop.new(campaign.inbox), + 'account' => AccountDrop.new(campaign.account) + } + end + + def process_liquid_in_content(drops, message) + message = message.gsub(/`(.*?)`/m, '{% raw %}`\\1`{% endraw %}') + template = Liquid::Template.parse(message) + template.render(drops) + rescue Liquid::Error + message + end +end diff --git a/app/services/sms/oneoff_sms_campaign_service.rb b/app/services/sms/oneoff_sms_campaign_service.rb index 73a101d24..22d38ac20 100644 --- a/app/services/sms/oneoff_sms_campaign_service.rb +++ b/app/services/sms/oneoff_sms_campaign_service.rb @@ -22,7 +22,8 @@ class Sms::OneoffSmsCampaignService campaign.account.contacts.tagged_with(audience_labels, any: true).each do |contact| next if contact.phone_number.blank? - send_message(to: contact.phone_number, content: campaign.message) + content = Liquid::CampaignTemplateService.new(campaign: campaign, contact: contact).call(campaign.message) + send_message(to: contact.phone_number, content: content) end end diff --git a/app/services/twilio/oneoff_sms_campaign_service.rb b/app/services/twilio/oneoff_sms_campaign_service.rb index c16ec87b9..e99df36cc 100644 --- a/app/services/twilio/oneoff_sms_campaign_service.rb +++ b/app/services/twilio/oneoff_sms_campaign_service.rb @@ -22,7 +22,8 @@ class Twilio::OneoffSmsCampaignService campaign.account.contacts.tagged_with(audience_labels, any: true).each do |contact| next if contact.phone_number.blank? - channel.send_message(to: contact.phone_number, body: campaign.message) + content = Liquid::CampaignTemplateService.new(campaign: campaign, contact: contact).call(campaign.message) + channel.send_message(to: contact.phone_number, body: content) end end end diff --git a/spec/services/liquid/campaign_template_service_spec.rb b/spec/services/liquid/campaign_template_service_spec.rb new file mode 100644 index 000000000..40034e410 --- /dev/null +++ b/spec/services/liquid/campaign_template_service_spec.rb @@ -0,0 +1,107 @@ +require 'rails_helper' + +describe Liquid::CampaignTemplateService do + subject(:template_service) { described_class.new(campaign: campaign, contact: contact) } + + let(:account) { create(:account) } + let(:agent) { create(:user, account: account) } + let(:inbox) { create(:inbox, account: account) } + let(:contact) { create(:contact, account: account, name: 'John Doe', phone_number: '+1234567890') } + let(:campaign) { create(:campaign, account: account, inbox: inbox, sender: agent, message: message_content) } + + describe '#call' do + context 'with liquid template variables' do + let(:message_content) { 'Hello {{contact.name}}, this is {{agent.name}} from {{account.name}}' } + + it 'processes liquid template correctly' do + result = template_service.call(message_content) + agent_drop_name = UserDrop.new(agent).name + contact_drop_name = ContactDrop.new(contact).name + + expect(result).to eq("Hello #{contact_drop_name}, this is #{agent_drop_name} from #{account.name}") + end + end + + context 'with code blocks' do + let(:message_content) { 'Check this code: `const x = {{contact.name}}`' } + + it 'preserves code blocks without processing liquid' do + result = template_service.call(message_content) + + expect(result).to include('`const x = {{contact.name}}`') + expect(result).not_to include(contact.name) + end + end + + context 'with multiline code blocks' do + let(:message_content) do + <<~MESSAGE + Here's some code: + ``` + function greet() { + return "Hello {{contact.name}}"; + } + ``` + MESSAGE + end + + it 'preserves multiline code blocks without processing liquid' do + result = template_service.call(message_content) + + expect(result).to include('{{contact.name}}') + expect(result).not_to include(contact.name) + end + end + + context 'with malformed liquid syntax' do + let(:message_content) { 'Hello {{contact.name missing closing braces' } + + it 'returns original message when liquid parsing fails' do + result = template_service.call(message_content) + + expect(result).to eq(message_content) + end + end + + context 'with invalid liquid tags' do + let(:message_content) { 'Hello {% invalid_tag %} world' } + + it 'returns original message when liquid parsing fails' do + result = template_service.call(message_content) + + expect(result).to eq(message_content) + end + end + + context 'with mixed content' do + let(:message_content) { 'Hi {{contact.name}}, use this code: `{{agent.name}}` to contact {{agent.name}}' } + + it 'processes liquid outside code blocks but preserves code blocks' do + result = template_service.call(message_content) + agent_drop_name = UserDrop.new(agent).name + contact_drop_name = ContactDrop.new(contact).name + + expect(result).to include("Hi #{contact_drop_name}") + expect(result).to include("contact #{agent_drop_name}") + expect(result).to include('`{{agent.name}}`') + end + end + + context 'with all drop types' do + let(:message_content) do + 'Contact: {{contact.name}}, Agent: {{agent.name}}, Inbox: {{inbox.name}}, Account: {{account.name}}' + end + + it 'processes all available drops' do + result = template_service.call(message_content) + agent_drop_name = UserDrop.new(agent).name + contact_drop_name = ContactDrop.new(contact).name + + expect(result).to include("Contact: #{contact_drop_name}") + expect(result).to include("Agent: #{agent_drop_name}") + expect(result).to include("Inbox: #{inbox.name}") + expect(result).to include("Account: #{account.name}") + end + end + end +end diff --git a/spec/services/sms/oneoff_sms_campaign_service_spec.rb b/spec/services/sms/oneoff_sms_campaign_service_spec.rb index 2f7e5bbf4..a5c7d7e58 100644 --- a/spec/services/sms/oneoff_sms_campaign_service_spec.rb +++ b/spec/services/sms/oneoff_sms_campaign_service_spec.rb @@ -43,5 +43,14 @@ describe Sms::OneoffSmsCampaignService do assert_requested(:post, 'https://messaging.bandwidth.com/api/v2/users/1/messages', times: 3) expect(campaign.reload.completed?).to be true end + + it 'uses liquid template service to process campaign message' do + contact = create(:contact, :with_phone_number, account: account) + contact.update_labels([label1.title]) + + expect(Liquid::CampaignTemplateService).to receive(:new).with(campaign: campaign, contact: contact).and_call_original + + sms_campaign_service.perform + end end end diff --git a/spec/services/twilio/oneoff_sms_campaign_service_spec.rb b/spec/services/twilio/oneoff_sms_campaign_service_spec.rb index f8858f174..0e6a993c2 100644 --- a/spec/services/twilio/oneoff_sms_campaign_service_spec.rb +++ b/spec/services/twilio/oneoff_sms_campaign_service_spec.rb @@ -60,5 +60,15 @@ describe Twilio::OneoffSmsCampaignService do sms_campaign_service.perform expect(campaign.reload.completed?).to be true end + + it 'uses liquid template service to process campaign message' do + contact = create(:contact, :with_phone_number, account: account) + contact.update_labels([label1.title]) + + expect(Liquid::CampaignTemplateService).to receive(:new).with(campaign: campaign, contact: contact).and_call_original + expect(twilio_messages).to receive(:create).once + + sms_campaign_service.perform + end end end From 5745a55db5b730a1ae1e82d8d4145bf4e3c1bd9d Mon Sep 17 00:00:00 2001 From: jaedson-correia <48334533+jaedson-correia@users.noreply.github.com> Date: Wed, 11 Jun 2025 14:27:19 -0300 Subject: [PATCH 4/9] fix: Prevent duplicate API calls for contact details when switching conversations (#9268) Fixes #9263 Co-authored-by: Pranav --- .../routes/dashboard/conversation/ContactPanel.vue | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue b/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue index d7f99802c..64191eab5 100644 --- a/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue +++ b/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue @@ -101,14 +101,12 @@ const getContactDetails = () => { } }; -watch(conversationId, (newConversationId, prevConversationId) => { - if (newConversationId && newConversationId !== prevConversationId) { +watch(contactId, (newContactId, prevContactId) => { + if (newContactId && newContactId !== prevContactId) { getContactDetails(); } }); -watch(contactId, getContactDetails); - const onDragEnd = () => { dragging.value = false; updateUISettings({ From f627dbe42d3fbc06433819772078c92a14d4fea0 Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Wed, 11 Jun 2025 23:39:47 +0530 Subject: [PATCH 5/9] feat: hide CSAT survey URLs from agents in dashboard (#11622) --- app/models/channel/sms.rb | 2 +- app/models/channel/telegram.rb | 4 +- app/models/message.rb | 14 +--- app/presenters/message_content_presenter.rb | 20 ++++++ .../facebook/send_on_facebook_service.rb | 2 +- app/services/instagram/base_send_service.rb | 2 +- app/services/line/send_on_line_service.rb | 2 +- app/services/twilio/send_on_twilio_service.rb | 2 +- .../twitter/send_on_twitter_service.rb | 4 +- .../whatsapp/providers/base_service.rb | 4 +- .../providers/whatsapp_360_dialog_service.rb | 4 +- .../providers/whatsapp_cloud_service.rb | 4 +- .../whatsapp/send_on_whatsapp_service.rb | 2 +- spec/models/message_spec.rb | 63 ++++++++++++------ .../message_content_presenter_spec.rb | 65 +++++++++++++++++++ 15 files changed, 148 insertions(+), 46 deletions(-) create mode 100644 app/presenters/message_content_presenter.rb create mode 100644 spec/presenters/message_content_presenter_spec.rb diff --git a/app/models/channel/sms.rb b/app/models/channel/sms.rb index ab04f55f0..db4da3237 100644 --- a/app/models/channel/sms.rb +++ b/app/models/channel/sms.rb @@ -34,7 +34,7 @@ class Channel::Sms < ApplicationRecord end def send_message(contact_number, message) - body = message_body(contact_number, message.content) + body = message_body(contact_number, message.outgoing_content) body['media'] = message.attachments.map(&:download_url) if message.attachments.present? send_to_bandwidth(body, message) diff --git a/app/models/channel/telegram.rb b/app/models/channel/telegram.rb index 7c09fe284..9e4b95c57 100644 --- a/app/models/channel/telegram.rb +++ b/app/models/channel/telegram.rb @@ -33,7 +33,7 @@ class Channel::Telegram < ApplicationRecord end def send_message_on_telegram(message) - message_id = send_message(message) if message.content.present? + message_id = send_message(message) if message.outgoing_content.present? message_id = Telegram::SendAttachmentsService.new(message: message).perform if message.attachments.present? message_id end @@ -95,7 +95,7 @@ class Channel::Telegram < ApplicationRecord end def send_message(message) - response = message_request(chat_id(message), message.content, reply_markup(message), reply_to_message_id(message)) + response = message_request(chat_id(message), message.outgoing_content, reply_markup(message), reply_to_message_id(message)) process_error(message, response) response.parsed_response['result']['message_id'] if response.success? end diff --git a/app/models/message.rb b/app/models/message.rb index 9381c33f6..e7c4e9b6c 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -181,17 +181,9 @@ class Message < ApplicationRecord data end - def content - # move this to a presenter - return self[:content] if !input_csat? || inbox.web_widget? - - survey_link = "#{ENV.fetch('FRONTEND_URL', nil)}/survey/responses/#{conversation.uuid}" - - if inbox.csat_config&.dig('message').present? - "#{inbox.csat_config['message']} #{survey_link}" - else - I18n.t('conversations.survey.response', link: survey_link) - end + # Method to get content with survey URL for outgoing channel delivery + def outgoing_content + MessageContentPresenter.new(self).outgoing_content end def email_notifiable_message? diff --git a/app/presenters/message_content_presenter.rb b/app/presenters/message_content_presenter.rb new file mode 100644 index 000000000..461dc8b88 --- /dev/null +++ b/app/presenters/message_content_presenter.rb @@ -0,0 +1,20 @@ +class MessageContentPresenter < SimpleDelegator + def outgoing_content + return content unless should_append_survey_link? + + survey_link = survey_url(conversation.uuid) + custom_message = inbox.csat_config&.dig('message') + + custom_message.present? ? "#{custom_message} #{survey_link}" : I18n.t('conversations.survey.response', link: survey_link) + end + + private + + def should_append_survey_link? + input_csat? && !inbox.web_widget? + end + + def survey_url(conversation_uuid) + "#{ENV.fetch('FRONTEND_URL', nil)}/survey/responses/#{conversation_uuid}" + end +end \ No newline at end of file diff --git a/app/services/facebook/send_on_facebook_service.rb b/app/services/facebook/send_on_facebook_service.rb index f0b54a733..ed3b7e4ab 100644 --- a/app/services/facebook/send_on_facebook_service.rb +++ b/app/services/facebook/send_on_facebook_service.rb @@ -66,7 +66,7 @@ class Facebook::SendOnFacebookService < Base::SendOnChannelService end } else - { text: message.content } + { text: message.outgoing_content } end end diff --git a/app/services/instagram/base_send_service.rb b/app/services/instagram/base_send_service.rb index ff5f9216e..9b156932c 100644 --- a/app/services/instagram/base_send_service.rb +++ b/app/services/instagram/base_send_service.rb @@ -30,7 +30,7 @@ class Instagram::BaseSendService < Base::SendOnChannelService params = { recipient: { id: contact.get_source_id(inbox.id) }, message: { - text: message.content + text: message.outgoing_content } } diff --git a/app/services/line/send_on_line_service.rb b/app/services/line/send_on_line_service.rb index 057eb09e2..a5467ebbf 100644 --- a/app/services/line/send_on_line_service.rb +++ b/app/services/line/send_on_line_service.rb @@ -56,7 +56,7 @@ class Line::SendOnLineService < Base::SendOnChannelService def text_message { type: 'text', - text: message.content + text: message.outgoing_content } end diff --git a/app/services/twilio/send_on_twilio_service.rb b/app/services/twilio/send_on_twilio_service.rb index 5bd262759..950880f08 100644 --- a/app/services/twilio/send_on_twilio_service.rb +++ b/app/services/twilio/send_on_twilio_service.rb @@ -16,7 +16,7 @@ class Twilio::SendOnTwilioService < Base::SendOnChannelService def message_params { - body: message.content, + body: message.outgoing_content, to: contact_inbox.source_id, media_url: attachments } diff --git a/app/services/twitter/send_on_twitter_service.rb b/app/services/twitter/send_on_twitter_service.rb index 76ee29dbc..83086bd12 100644 --- a/app/services/twitter/send_on_twitter_service.rb +++ b/app/services/twitter/send_on_twitter_service.rb @@ -37,7 +37,7 @@ class Twitter::SendOnTwitterService < Base::SendOnChannelService def send_direct_message twitter_client.send_direct_message( recipient_id: contact_inbox.source_id, - message: message.content + message: message.outgoing_content ) end @@ -52,7 +52,7 @@ class Twitter::SendOnTwitterService < Base::SendOnChannelService def send_tweet_reply response = twitter_client.send_tweet_reply( reply_to_tweet_id: reply_to_message.source_id, - tweet: "#{screen_name} #{message.content}" + tweet: "#{screen_name} #{message.outgoing_content}" ) if response.status == '200' tweet_data = response.body diff --git a/app/services/whatsapp/providers/base_service.rb b/app/services/whatsapp/providers/base_service.rb index 55714ba4d..b60c02369 100644 --- a/app/services/whatsapp/providers/base_service.rb +++ b/app/services/whatsapp/providers/base_service.rb @@ -93,7 +93,7 @@ class Whatsapp::Providers::BaseService def create_button_payload(message) buttons = create_buttons(message.content_attributes['items']) json_hash = { 'buttons' => buttons } - create_payload('button', message.content, JSON.generate(json_hash)) + create_payload('button', message.outgoing_content, JSON.generate(json_hash)) end def create_list_payload(message) @@ -101,6 +101,6 @@ class Whatsapp::Providers::BaseService section1 = { 'rows' => rows } sections = [section1] json_hash = { :button => 'Choose an item', 'sections' => sections } - create_payload('list', message.content, JSON.generate(json_hash)) + create_payload('list', message.outgoing_content, JSON.generate(json_hash)) end end diff --git a/app/services/whatsapp/providers/whatsapp_360_dialog_service.rb b/app/services/whatsapp/providers/whatsapp_360_dialog_service.rb index 61cdeebf1..6e393f9f5 100644 --- a/app/services/whatsapp/providers/whatsapp_360_dialog_service.rb +++ b/app/services/whatsapp/providers/whatsapp_360_dialog_service.rb @@ -63,7 +63,7 @@ class Whatsapp::Providers::Whatsapp360DialogService < Whatsapp::Providers::BaseS headers: api_headers, body: { to: phone_number, - text: { body: message.content }, + text: { body: message.outgoing_content }, type: 'text' }.to_json ) @@ -77,7 +77,7 @@ class Whatsapp::Providers::Whatsapp360DialogService < Whatsapp::Providers::BaseS type_content = { 'link': attachment.download_url } - type_content['caption'] = message.content unless %w[audio sticker].include?(type) + type_content['caption'] = message.outgoing_content unless %w[audio sticker].include?(type) type_content['filename'] = attachment.file.filename if type == 'document' response = HTTParty.post( diff --git a/app/services/whatsapp/providers/whatsapp_cloud_service.rb b/app/services/whatsapp/providers/whatsapp_cloud_service.rb index ec2275920..1620e4e42 100644 --- a/app/services/whatsapp/providers/whatsapp_cloud_service.rb +++ b/app/services/whatsapp/providers/whatsapp_cloud_service.rb @@ -82,7 +82,7 @@ class Whatsapp::Providers::WhatsappCloudService < Whatsapp::Providers::BaseServi messaging_product: 'whatsapp', context: whatsapp_reply_context(message), to: phone_number, - text: { body: message.content }, + text: { body: message.outgoing_content }, type: 'text' }.to_json ) @@ -96,7 +96,7 @@ class Whatsapp::Providers::WhatsappCloudService < Whatsapp::Providers::BaseServi type_content = { 'link': attachment.download_url } - type_content['caption'] = message.content unless %w[audio sticker].include?(type) + type_content['caption'] = message.outgoing_content unless %w[audio sticker].include?(type) type_content['filename'] = attachment.file.filename if type == 'document' response = HTTParty.post( "#{phone_id_path}/messages", diff --git a/app/services/whatsapp/send_on_whatsapp_service.rb b/app/services/whatsapp/send_on_whatsapp_service.rb index 186c8b2ae..61b78f892 100644 --- a/app/services/whatsapp/send_on_whatsapp_service.rb +++ b/app/services/whatsapp/send_on_whatsapp_service.rb @@ -61,7 +61,7 @@ class Whatsapp::SendOnWhatsappService < Base::SendOnChannelService return if body_object.blank? template_match_regex = build_template_match_regex(body_object['text']) - message.content.match(template_match_regex) + message.outgoing_content.match(template_match_regex) end def build_template_match_regex(template_text) diff --git a/spec/models/message_spec.rb b/spec/models/message_spec.rb index b4be3ac5a..3bf64a231 100644 --- a/spec/models/message_spec.rb +++ b/spec/models/message_spec.rb @@ -478,32 +478,57 @@ RSpec.describe Message do describe '#content' do let(:conversation) { create(:conversation) } - let(:message) { create(:message, conversation: conversation, content_type: 'input_csat', content: 'Original content') } - it 'returns original content for web widget inbox' do - allow(message.inbox).to receive(:web_widget?).and_return(true) - expect(message.content).to eq('Original content') + context 'when message is not input_csat' do + let(:message) { create(:message, conversation: conversation, content_type: 'text', content: 'Regular message') } + + it 'returns original content' do + expect(message.content).to eq('Regular message') + end end - context 'when inbox is not a web widget' do - before do - allow(message.inbox).to receive(:web_widget?).and_return(false) - allow(ENV).to receive(:fetch).with('FRONTEND_URL', nil).and_return('https://app.chatwoot.com') + context 'when message is input_csat' do + let(:message) { create(:message, conversation: conversation, content_type: 'input_csat', content: 'Rate your experience') } + + context 'when inbox is web widget' do + before do + allow(message.inbox).to receive(:web_widget?).and_return(true) + end + + it 'returns original content without survey URL' do + expect(message.content).to eq('Rate your experience') + end end - it 'returns custom message with survey link when csat message is configured' do - allow(message.inbox).to receive(:csat_config).and_return({ 'message' => 'Custom survey message:' }) - expected_content = "Custom survey message: https://app.chatwoot.com/survey/responses/#{conversation.uuid}" - expect(message.content).to eq(expected_content) - end + context 'when inbox is not web widget' do + before do + allow(message.inbox).to receive(:web_widget?).and_return(false) + end - it 'returns default message with survey link when no custom csat message' do - allow(message.inbox).to receive(:csat_config).and_return(nil) - allow(I18n).to receive(:t).with('conversations.survey.response', link: "https://app.chatwoot.com/survey/responses/#{conversation.uuid}") - .and_return("Please rate your conversation: https://app.chatwoot.com/survey/responses/#{conversation.uuid}") - expected_content = "Please rate your conversation: https://app.chatwoot.com/survey/responses/#{conversation.uuid}" - expect(message.content).to eq(expected_content) + it 'returns only the stored content (clean for dashboard)' do + expect(message.content).to eq('Rate your experience') + end + + it 'returns only the base content without URL when survey_url stored separately' do + message.content_attributes = { 'survey_url' => 'https://app.chatwoot.com/survey/responses/12345' } + expect(message.content).to eq('Rate your experience') + end end end end + + describe '#outgoing_content' do + let(:conversation) { create(:conversation) } + let(:message) { create(:message, conversation: conversation, content_type: 'text', content: 'Regular message') } + + it 'delegates to MessageContentPresenter' do + presenter = instance_double(MessageContentPresenter) + allow(MessageContentPresenter).to receive(:new).with(message).and_return(presenter) + allow(presenter).to receive(:outgoing_content).and_return('Presented content') + + expect(message.outgoing_content).to eq('Presented content') + expect(MessageContentPresenter).to have_received(:new).with(message) + expect(presenter).to have_received(:outgoing_content) + end + end end diff --git a/spec/presenters/message_content_presenter_spec.rb b/spec/presenters/message_content_presenter_spec.rb new file mode 100644 index 000000000..b1be37ef2 --- /dev/null +++ b/spec/presenters/message_content_presenter_spec.rb @@ -0,0 +1,65 @@ +require 'rails_helper' + +RSpec.describe MessageContentPresenter do + let(:conversation) { create(:conversation) } + let(:message) { create(:message, conversation: conversation, content_type: content_type, content: content) } + let(:presenter) { described_class.new(message) } + + describe '#outgoing_content' do + context 'when message is not input_csat' do + let(:content_type) { 'text' } + let(:content) { 'Regular message' } + + it 'returns regular content' do + expect(presenter.outgoing_content).to eq('Regular message') + end + end + + context 'when message is input_csat and inbox is web widget' do + let(:content_type) { 'input_csat' } + let(:content) { 'Rate your experience' } + + before do + allow(message.inbox).to receive(:web_widget?).and_return(true) + end + + it 'returns regular content without survey URL' do + expect(presenter.outgoing_content).to eq('Rate your experience') + end + end + + context 'when message is input_csat and inbox is not web widget' do + let(:content_type) { 'input_csat' } + let(:content) { 'Rate your experience' } + + before do + allow(message.inbox).to receive(:web_widget?).and_return(false) + allow(ENV).to receive(:fetch).with('FRONTEND_URL', nil).and_return('https://app.chatwoot.com') + end + + it 'returns I18n default message when no CSAT config and dynamically generates survey URL' do + expected_url = "https://app.chatwoot.com/survey/responses/#{conversation.uuid}" + allow(I18n).to receive(:t).with('conversations.survey.response', link: expected_url) + .and_return("Please rate this conversation, #{expected_url}") + expect(presenter.outgoing_content).to eq("Please rate this conversation, #{expected_url}") + end + + it 'returns CSAT config message when config exists and dynamically generates survey URL' do + allow(message.inbox).to receive(:csat_config).and_return({ 'message' => 'Custom CSAT message' }) + expected_url = "https://app.chatwoot.com/survey/responses/#{conversation.uuid}" + expect(presenter.outgoing_content).to eq("Custom CSAT message #{expected_url}") + end + end + end + + describe 'delegation' do + let(:content_type) { 'text' } + let(:content) { 'Test message' } + + it 'delegates model methods to the wrapped message' do + expect(presenter.content).to eq('Test message') + expect(presenter.content_type).to eq('text') + expect(presenter.conversation).to eq(conversation) + end + end +end \ No newline at end of file From bf3b1676dd9e9549b4171bf284ced4ae69c71980 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Thu, 12 Jun 2025 00:37:24 +0530 Subject: [PATCH 6/9] fix: Broken header in public Help Center portal (#11704) Fixes https://linear.app/chatwoot/issue/CW-4473/broken-header-in-help-center-portal --- app/javascript/portal/portalHelpers.js | 14 +- app/javascript/portal/portalThemeHelper.js | 122 ++++++++++-------- app/javascript/portal/specs/portal.spec.js | 19 ++- .../portal/specs/portalTheme.spec.js | 79 +++++++----- app/views/icons/_close.html.erb | 3 + app/views/icons/_hamburger.html.erb | 3 + app/views/layouts/portal.html.erb | 9 +- .../public/api/v1/portals/_header.html.erb | 38 ++++-- .../public/api/v1/portals/_hero.html.erb | 5 +- .../api/v1/portals/_mobile_menu.html.erb | 83 ++++++++++++ config/locales/en.yml | 1 + 11 files changed, 256 insertions(+), 120 deletions(-) create mode 100644 app/views/icons/_close.html.erb create mode 100644 app/views/icons/_hamburger.html.erb create mode 100644 app/views/public/api/v1/portals/_mobile_menu.html.erb diff --git a/app/javascript/portal/portalHelpers.js b/app/javascript/portal/portalHelpers.js index 93b155915..35e54d154 100644 --- a/app/javascript/portal/portalHelpers.js +++ b/app/javascript/portal/portalHelpers.js @@ -59,17 +59,13 @@ export const openExternalLinksInNewTab = () => { export const InitializationHelpers = { navigateToLocalePage: () => { - const allLocaleSwitcher = document.querySelector('.locale-switcher'); + document.addEventListener('change', e => { + const localeSwitcher = e.target.closest('.locale-switcher'); + if (!localeSwitcher) return; - if (!allLocaleSwitcher) { - return false; - } - - const { portalSlug } = allLocaleSwitcher.dataset; - allLocaleSwitcher.addEventListener('change', event => { - window.location = `/hc/${portalSlug}/${event.target.value}/`; + const { portalSlug } = localeSwitcher.dataset; + window.location.href = `/hc/${encodeURIComponent(portalSlug)}/${encodeURIComponent(localeSwitcher.value)}/`; }); - return false; }, initializeSearch: () => { diff --git a/app/javascript/portal/portalThemeHelper.js b/app/javascript/portal/portalThemeHelper.js index b0c9eaca5..497182a83 100644 --- a/app/javascript/portal/portalThemeHelper.js +++ b/app/javascript/portal/portalThemeHelper.js @@ -1,16 +1,20 @@ import { adjustColorForContrast } from '../shared/helpers/colorHelper.js'; +const getResolvedTheme = theme => { + // Helper to get resolved theme (handles 'system' -> 'dark'/'light') + if (theme === 'system') { + return window.matchMedia('(prefers-color-scheme: dark)').matches + ? 'dark' + : 'light'; + } + return theme; +}; + export const setPortalHoverColor = theme => { // This function is to set the hover color for the portal - if (theme === 'system') { - const prefersDarkMode = window.matchMedia( - '(prefers-color-scheme: dark)' - ).matches; - theme = prefersDarkMode ? 'dark' : 'light'; - } - + const resolvedTheme = getResolvedTheme(theme); const portalColor = window.portalConfig.portalColor; - const bgColor = theme === 'dark' ? '#151718' : 'white'; + const bgColor = resolvedTheme === 'dark' ? '#151718' : 'white'; const hoverColor = adjustColorForContrast(portalColor, bgColor); // Set hover color for border and text dynamically @@ -36,67 +40,80 @@ export const removeQueryParamsFromUrl = (queryParam = 'theme') => { export const updateThemeInHeader = theme => { // This function is to update the theme selection in the header in real time const themeToggleButton = document.getElementById('toggle-appearance'); - if (!themeToggleButton) return; - const allElementInButton = - themeToggleButton.querySelectorAll('.theme-button'); - if (!allElementInButton) return; - allElementInButton.forEach(button => { - button.classList.toggle('hidden', button.dataset.theme !== theme); - button.classList.toggle('flex', button.dataset.theme === theme); + const allThemeButtons = themeToggleButton.querySelectorAll('.theme-button'); + if (!allThemeButtons.length) return; + + allThemeButtons.forEach(button => { + const isActive = button.dataset.theme === theme; + button.classList.toggle('hidden', !isActive); + button.classList.toggle('flex', isActive); }); }; export const switchTheme = theme => { + // Update localStorage if (theme === 'system') { localStorage.removeItem('theme'); - const prefersDarkMode = window.matchMedia( - '(prefers-color-scheme: dark)' - ).matches; - // remove this so that the system theme is used - - document.documentElement.classList.remove('dark', 'light'); - document.documentElement.classList.add(prefersDarkMode ? 'dark' : 'light'); } else { localStorage.theme = theme; - - document.documentElement.classList.remove('dark', 'light'); - document.documentElement.classList.add(theme); } + const resolvedTheme = getResolvedTheme(theme); + document.documentElement.classList.remove('dark', 'light'); + document.documentElement.classList.add(resolvedTheme); + setPortalHoverColor(theme); updateThemeInHeader(theme); removeQueryParamsFromUrl(); -}; - -export const initializeThemeSwitchButtons = () => { - const appearanceDropdown = document.getElementById('appearance-dropdown'); - appearanceDropdown.dataset.currentTheme = localStorage.theme || 'system'; - - appearanceDropdown.addEventListener('click', event => { - const target = event.target.closest('button[data-theme]'); - - if (target) { - const { theme } = target.dataset; - // setting this data property will automatically toggle the checkmark using CSS - appearanceDropdown.dataset.currentTheme = theme; - switchTheme(theme); - // wait for a bit before hiding the dropdown - appearanceDropdown.style.display = 'none'; - } + // Update both dropdown data attributes + document.querySelectorAll('.appearance-menu').forEach(menu => { + menu.dataset.currentTheme = theme; }); }; -export const initializeToggleButton = () => { - const themeToggleButton = document.getElementById('toggle-appearance'); +export const initializeThemeHandlers = () => { + const toggle = document.getElementById('toggle-appearance'); + const dropdown = document.getElementById('appearance-dropdown'); + if (!toggle || !dropdown) return; - themeToggleButton?.addEventListener('click', () => { - const appearanceDropdown = document.getElementById('appearance-dropdown'); + // Toggle appearance dropdown + toggle.addEventListener('click', e => { + e.stopPropagation(); + dropdown.dataset.dropdownOpen = String( + dropdown.dataset.dropdownOpen !== 'true' + ); + }); - const isCurrentlyHidden = appearanceDropdown.style.display === 'none'; - // Toggle the appearanceDropdown - appearanceDropdown.style.display = isCurrentlyHidden ? 'flex' : 'none'; + document.addEventListener('click', ({ target }) => { + if (toggle.contains(target)) return; + + const themeBtn = target.closest('.appearance-menu button[data-theme]'); + const menu = themeBtn?.closest('.appearance-menu'); + + if (themeBtn && menu) { + switchTheme(themeBtn.dataset.theme); + menu.dataset.dropdownOpen = 'false'; + + if (menu.id === 'mobile-appearance-dropdown') { + // Set the mobile menu toggle to false after a delay to ensure the transition is completed + setTimeout(() => { + const mobileToggle = document.getElementById('mobile-menu-toggle'); + if (mobileToggle) mobileToggle.checked = false; + }, 300); + } + + return; + } + + // Close the desktop appearance dropdown if clicked outside + if ( + dropdown.dataset.dropdownOpen === 'true' && + !dropdown.contains(target) + ) { + dropdown.dataset.dropdownOpen = 'false'; + } }); }; @@ -114,13 +131,12 @@ export const initializeTheme = () => { if (window.portalConfig.isPlainLayoutEnabled === 'true') return; // start with updating the theme in the header, this will set the current theme on the button // and set the hover color at the start of init, this is set again when the theme is switched - setPortalHoverColor(localStorage.theme || 'system'); + switchTheme(localStorage.theme || 'system'); + window.updateThemeInHeader = updateThemeInHeader; - updateThemeInHeader(localStorage.theme || 'system'); // add the event listeners for the dropdown toggle and theme buttons - initializeToggleButton(); - initializeThemeSwitchButtons(); + initializeThemeHandlers(); // add the media query listener to update the theme when the system theme changes initializeMediaQueryListener(); diff --git a/app/javascript/portal/specs/portal.spec.js b/app/javascript/portal/specs/portal.spec.js index 5205c5d45..c3577ec3b 100644 --- a/app/javascript/portal/specs/portal.spec.js +++ b/app/javascript/portal/specs/portal.spec.js @@ -29,22 +29,21 @@ describe('InitializationHelpers.navigateToLocalePage', () => { delete global.window; }); - it('should return false if .locale-switcher is not found', () => { + it('sets up document event listener regardless of locale-switcher existence', () => { document.querySelector('.locale-switcher').remove(); - const result = InitializationHelpers.navigateToLocalePage(); - expect(result).toBe(false); + const documentSpy = vi.spyOn(document, 'addEventListener'); + InitializationHelpers.navigateToLocalePage(); + expect(documentSpy).toHaveBeenCalledWith('change', expect.any(Function)); + documentSpy.mockRestore(); }); - it('should add change event listener to .locale-switcher', () => { - const localeSwitcher = document.querySelector('.locale-switcher'); - const addEventListenerSpy = vi.spyOn(localeSwitcher, 'addEventListener'); + it('adds document-level event listener to handle locale switching', () => { + const documentSpy = vi.spyOn(document, 'addEventListener'); InitializationHelpers.navigateToLocalePage(); - expect(addEventListenerSpy).toHaveBeenCalledWith( - 'change', - expect.any(Function) - ); + expect(documentSpy).toHaveBeenCalledWith('change', expect.any(Function)); + documentSpy.mockRestore(); }); }); diff --git a/app/javascript/portal/specs/portalTheme.spec.js b/app/javascript/portal/specs/portalTheme.spec.js index e87999242..d936996b5 100644 --- a/app/javascript/portal/specs/portalTheme.spec.js +++ b/app/javascript/portal/specs/portalTheme.spec.js @@ -3,8 +3,7 @@ import { removeQueryParamsFromUrl, updateThemeInHeader, switchTheme, - initializeThemeSwitchButtons, - initializeToggleButton, + initializeThemeHandlers, initializeMediaQueryListener, initializeTheme, } from '../portalThemeHelper.js'; @@ -21,6 +20,7 @@ describe('portalThemeHelper', () => { appearanceDropdown = document.createElement('div'); appearanceDropdown.id = 'appearance-dropdown'; + appearanceDropdown.classList.add('appearance-menu'); document.body.appendChild(appearanceDropdown); window.matchMedia = vi.fn().mockImplementation(query => ({ @@ -142,7 +142,7 @@ describe('portalThemeHelper', () => { }); }); - describe('#initializeThemeSwitchButtons', () => { + describe('#initializeThemeHandlers', () => { beforeEach(() => { appearanceDropdown.innerHTML = ` @@ -153,43 +153,58 @@ describe('portalThemeHelper', () => { it('does nothing if the appearance dropdown is not found', () => { appearanceDropdown.remove(); - expect(appearanceDropdown.dataset.currentTheme).toBeUndefined(); - }); - it('should set current theme to system if no theme in localStorage', () => { - localStorage.removeItem('theme'); - initializeThemeSwitchButtons(); - expect(appearanceDropdown.dataset.currentTheme).toBe('system'); + expect(() => initializeThemeHandlers()).not.toThrow(); }); - it('sets the current theme to the light theme', () => { - localStorage.theme = 'light'; - appearanceDropdown.dataset.currentTheme = 'light'; - initializeThemeSwitchButtons(); + it('should handle theme button clicks', () => { + initializeThemeHandlers(); + + // Simulate clicking a theme button + const lightButton = appearanceDropdown.querySelector( + 'button[data-theme="light"]' + ); + const clickEvent = new Event('click', { bubbles: true }); + Object.defineProperty(clickEvent, 'target', { + value: lightButton, + enumerable: true, + }); + + document.dispatchEvent(clickEvent); + + expect(localStorage.theme).toBe('light'); expect(appearanceDropdown.dataset.currentTheme).toBe('light'); }); - it('sets the current theme to the dark theme', () => { - localStorage.theme = 'dark'; - appearanceDropdown.dataset.currentTheme = 'dark'; - initializeThemeSwitchButtons(); - expect(appearanceDropdown.dataset.currentTheme).toBe('dark'); - }); - }); + it('should toggle dropdown visibility on toggle button click', () => { + initializeThemeHandlers(); - describe('#initializeToggleButton', () => { - it('does nothing if the theme toggle button is not found', () => { - themeToggleButton.remove(); - initializeToggleButton(); - expect(appearanceDropdown.style.display).toBe(''); + // Initially closed + expect(appearanceDropdown.dataset.dropdownOpen).toBeUndefined(); + + // Click to open + themeToggleButton.click(); + expect(appearanceDropdown.dataset.dropdownOpen).toBe('true'); + + // Click to close + themeToggleButton.click(); + expect(appearanceDropdown.dataset.dropdownOpen).toBe('false'); }); - it('toggles the appearance dropdown show/hide', () => { - themeToggleButton.click(); - appearanceDropdown.style.display = 'flex'; - expect(appearanceDropdown.style.display).toBe('flex'); - themeToggleButton.click(); - appearanceDropdown.style.display = 'none'; - expect(appearanceDropdown.style.display).toBe('none'); + it('should close dropdown when clicking outside', () => { + initializeThemeHandlers(); + + // Open dropdown + appearanceDropdown.dataset.dropdownOpen = 'true'; + + // Click outside + const outsideClick = new Event('click', { bubbles: true }); + Object.defineProperty(outsideClick, 'target', { + value: document.body, + enumerable: true, + }); + document.dispatchEvent(outsideClick); + + expect(appearanceDropdown.dataset.dropdownOpen).toBe('false'); }); }); diff --git a/app/views/icons/_close.html.erb b/app/views/icons/_close.html.erb new file mode 100644 index 000000000..43be0c5aa --- /dev/null +++ b/app/views/icons/_close.html.erb @@ -0,0 +1,3 @@ + + + diff --git a/app/views/icons/_hamburger.html.erb b/app/views/icons/_hamburger.html.erb new file mode 100644 index 000000000..e9dbed962 --- /dev/null +++ b/app/views/icons/_hamburger.html.erb @@ -0,0 +1,3 @@ + + + diff --git a/app/views/layouts/portal.html.erb b/app/views/layouts/portal.html.erb index 6ed0c8201..72b086d4b 100644 --- a/app/views/layouts/portal.html.erb +++ b/app/views/layouts/portal.html.erb @@ -24,12 +24,9 @@ By default, it renders: <%= vite_client_tag %> <%= vite_javascript_tag 'portal' %> diff --git a/app/views/public/api/v1/portals/_header.html.erb b/app/views/public/api/v1/portals/_header.html.erb index 1fe097688..694cd240f 100644 --- a/app/views/public/api/v1/portals/_header.html.erb +++ b/app/views/public/api/v1/portals/_header.html.erb @@ -1,11 +1,11 @@
-
\ No newline at end of file + + + diff --git a/app/views/public/api/v1/portals/_hero.html.erb b/app/views/public/api/v1/portals/_hero.html.erb index a245b667f..7c5ba1f2a 100644 --- a/app/views/public/api/v1/portals/_hero.html.erb +++ b/app/views/public/api/v1/portals/_hero.html.erb @@ -1,11 +1,12 @@ <% if !@is_plain_layout_enabled %>
-
+
+ <%= @portal.name %>

<%= portal.header_text %>

-

<%= I18n.t('public_portal.hero.sub_title') %>

+

<%= I18n.t('public_portal.hero.sub_title') %>

diff --git a/app/views/public/api/v1/portals/_mobile_menu.html.erb b/app/views/public/api/v1/portals/_mobile_menu.html.erb new file mode 100644 index 000000000..d4c88da32 --- /dev/null +++ b/app/views/public/api/v1/portals/_mobile_menu.html.erb @@ -0,0 +1,83 @@ + + + + + + diff --git a/config/locales/en.yml b/config/locales/en.yml index 77f2af9b4..59d7b8850 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -288,6 +288,7 @@ en: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light From c8f5633d9dc81bad75ea304e4a5eec4d7bd5d54b Mon Sep 17 00:00:00 2001 From: Chatwoot Bot <92152627+chatwoot-bot@users.noreply.github.com> Date: Wed, 11 Jun 2025 15:43:15 -0700 Subject: [PATCH 7/9] chore: Update translations (#11708) --- app/javascript/dashboard/i18n/locale/am/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ar/report.json | 2 ++ app/javascript/dashboard/i18n/locale/az/report.json | 2 ++ app/javascript/dashboard/i18n/locale/bg/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ca/report.json | 2 ++ app/javascript/dashboard/i18n/locale/cs/report.json | 2 ++ app/javascript/dashboard/i18n/locale/da/report.json | 2 ++ app/javascript/dashboard/i18n/locale/de/report.json | 2 ++ app/javascript/dashboard/i18n/locale/el/report.json | 2 ++ app/javascript/dashboard/i18n/locale/es/report.json | 2 ++ app/javascript/dashboard/i18n/locale/fa/report.json | 2 ++ app/javascript/dashboard/i18n/locale/fi/report.json | 2 ++ app/javascript/dashboard/i18n/locale/fr/report.json | 2 ++ app/javascript/dashboard/i18n/locale/he/report.json | 2 ++ app/javascript/dashboard/i18n/locale/hi/report.json | 2 ++ app/javascript/dashboard/i18n/locale/hr/report.json | 2 ++ app/javascript/dashboard/i18n/locale/hu/report.json | 2 ++ app/javascript/dashboard/i18n/locale/hy/report.json | 2 ++ app/javascript/dashboard/i18n/locale/id/report.json | 2 ++ app/javascript/dashboard/i18n/locale/is/report.json | 2 ++ app/javascript/dashboard/i18n/locale/it/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ja/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ka/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ko/report.json | 2 ++ app/javascript/dashboard/i18n/locale/lt/report.json | 2 ++ app/javascript/dashboard/i18n/locale/lv/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ml/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ms/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ne/report.json | 2 ++ app/javascript/dashboard/i18n/locale/nl/report.json | 2 ++ app/javascript/dashboard/i18n/locale/no/report.json | 2 ++ app/javascript/dashboard/i18n/locale/pl/report.json | 2 ++ .../dashboard/i18n/locale/pt/automation.json | 2 +- app/javascript/dashboard/i18n/locale/pt/macros.json | 2 +- app/javascript/dashboard/i18n/locale/pt/report.json | 2 ++ .../dashboard/i18n/locale/pt_BR/integrations.json | 10 +++++----- app/javascript/dashboard/i18n/locale/pt_BR/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ro/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ru/report.json | 2 ++ app/javascript/dashboard/i18n/locale/sh/report.json | 2 ++ app/javascript/dashboard/i18n/locale/sk/report.json | 2 ++ app/javascript/dashboard/i18n/locale/sl/report.json | 2 ++ app/javascript/dashboard/i18n/locale/sq/report.json | 2 ++ app/javascript/dashboard/i18n/locale/sr/report.json | 2 ++ app/javascript/dashboard/i18n/locale/sv/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ta/report.json | 2 ++ app/javascript/dashboard/i18n/locale/th/report.json | 2 ++ app/javascript/dashboard/i18n/locale/tl/report.json | 2 ++ app/javascript/dashboard/i18n/locale/tr/report.json | 2 ++ app/javascript/dashboard/i18n/locale/uk/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ur/report.json | 2 ++ app/javascript/dashboard/i18n/locale/ur_IN/report.json | 2 ++ app/javascript/dashboard/i18n/locale/vi/report.json | 2 ++ app/javascript/dashboard/i18n/locale/zh_CN/report.json | 2 ++ app/javascript/dashboard/i18n/locale/zh_TW/report.json | 2 ++ config/locales/am.yml | 3 +++ config/locales/ar.yml | 3 +++ config/locales/az.yml | 3 +++ config/locales/bg.yml | 3 +++ config/locales/ca.yml | 3 +++ config/locales/cs.yml | 3 +++ config/locales/da.yml | 3 +++ config/locales/de.yml | 3 +++ config/locales/el.yml | 3 +++ config/locales/es.yml | 3 +++ config/locales/fa.yml | 3 +++ config/locales/fi.yml | 3 +++ config/locales/fr.yml | 3 +++ config/locales/he.yml | 3 +++ config/locales/hi.yml | 3 +++ config/locales/hr.yml | 3 +++ config/locales/hu.yml | 3 +++ config/locales/hy.yml | 3 +++ config/locales/id.yml | 3 +++ config/locales/is.yml | 3 +++ config/locales/it.yml | 3 +++ config/locales/ja.yml | 3 +++ config/locales/ka.yml | 3 +++ config/locales/ko.yml | 3 +++ config/locales/lt.yml | 3 +++ config/locales/lv.yml | 3 +++ config/locales/ml.yml | 3 +++ config/locales/ms.yml | 3 +++ config/locales/ne.yml | 3 +++ config/locales/nl.yml | 3 +++ config/locales/no.yml | 3 +++ config/locales/pl.yml | 3 +++ config/locales/pt.yml | 3 +++ config/locales/pt_BR.yml | 3 +++ config/locales/ro.yml | 3 +++ config/locales/ru.yml | 3 +++ config/locales/sh.yml | 3 +++ config/locales/sk.yml | 3 +++ config/locales/sl.yml | 3 +++ config/locales/sq.yml | 3 +++ config/locales/sr.yml | 3 +++ config/locales/sv.yml | 3 +++ config/locales/ta.yml | 3 +++ config/locales/th.yml | 3 +++ config/locales/tl.yml | 3 +++ config/locales/tr.yml | 3 +++ config/locales/uk.yml | 3 +++ config/locales/ur.yml | 3 +++ config/locales/ur_IN.yml | 3 +++ config/locales/vi.yml | 3 +++ config/locales/zh_CN.yml | 3 +++ config/locales/zh_TW.yml | 3 +++ 107 files changed, 267 insertions(+), 7 deletions(-) diff --git a/app/javascript/dashboard/i18n/locale/am/report.json b/app/javascript/dashboard/i18n/locale/am/report.json index 294ca2e7b..7c42fdfba 100644 --- a/app/javascript/dashboard/i18n/locale/am/report.json +++ b/app/javascript/dashboard/i18n/locale/am/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/ar/report.json b/app/javascript/dashboard/i18n/locale/ar/report.json index 67d5f3366..f773dff80 100644 --- a/app/javascript/dashboard/i18n/locale/ar/report.json +++ b/app/javascript/dashboard/i18n/locale/ar/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "نظرة عامة على التسميات", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "تحميل بيانات الرسم البياني...", "NO_ENOUGH_DATA": "لم يتم جمع بيانات بقدر كافي لإنشاء التقرير، الرجاء المحاولة مرة أخرى لاحقاً.", "DOWNLOAD_LABEL_REPORTS": "تحميل تقارير التسمية", @@ -559,6 +560,7 @@ "INBOX": "صندوق الوارد", "AGENT": "وكيل الدعم", "TEAM": "الفريق", + "LABEL": "الوسم", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/az/report.json b/app/javascript/dashboard/i18n/locale/az/report.json index 294ca2e7b..7c42fdfba 100644 --- a/app/javascript/dashboard/i18n/locale/az/report.json +++ b/app/javascript/dashboard/i18n/locale/az/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/bg/report.json b/app/javascript/dashboard/i18n/locale/bg/report.json index 027a44e78..1b877b0a1 100644 --- a/app/javascript/dashboard/i18n/locale/bg/report.json +++ b/app/javascript/dashboard/i18n/locale/bg/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Входяща кутия", "AGENT": "Агент", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/ca/report.json b/app/javascript/dashboard/i18n/locale/ca/report.json index eca72aa59..de1ce143b 100644 --- a/app/javascript/dashboard/i18n/locale/ca/report.json +++ b/app/javascript/dashboard/i18n/locale/ca/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Visió general de les etiquetes", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "S'estan carregant dades del gràfic...", "NO_ENOUGH_DATA": "No hem rebut suficients punts de dades per generar l'informe. Torneu-ho a provar més endavant.", "DOWNLOAD_LABEL_REPORTS": "Descarregar Informes d'etiquetes", @@ -559,6 +560,7 @@ "INBOX": "Safata d'entrada", "AGENT": "Agent", "TEAM": "Equip", + "LABEL": "Etiqueta", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/cs/report.json b/app/javascript/dashboard/i18n/locale/cs/report.json index f90136fe4..24a2bcbc7 100644 --- a/app/javascript/dashboard/i18n/locale/cs/report.json +++ b/app/javascript/dashboard/i18n/locale/cs/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Načítání dat mapy...", "NO_ENOUGH_DATA": "Pro vytvoření hlášení jsme neobdrželi dostatek dat, zkuste to prosím později.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/da/report.json b/app/javascript/dashboard/i18n/locale/da/report.json index 6036ee068..ca4874c85 100644 --- a/app/javascript/dashboard/i18n/locale/da/report.json +++ b/app/javascript/dashboard/i18n/locale/da/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Oversigt Over Etiketter", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Indlæser diagramdata...", "NO_ENOUGH_DATA": "Vi har ikke modtaget nok datapunkter til at generere rapport. Prøv igen senere.", "DOWNLOAD_LABEL_REPORTS": "Download etiketrapporter", @@ -559,6 +560,7 @@ "INBOX": "Indbakke", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Etiketter", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/de/report.json b/app/javascript/dashboard/i18n/locale/de/report.json index 8292b26c1..4b760328b 100644 --- a/app/javascript/dashboard/i18n/locale/de/report.json +++ b/app/javascript/dashboard/i18n/locale/de/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Label-Übersicht", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Diagrammdaten laden...", "NO_ENOUGH_DATA": "Wir haben nicht genügend Datenpunkte erhalten, um einen Bericht zu erstellen. Bitte versuchen Sie es später erneut.", "DOWNLOAD_LABEL_REPORTS": "Label-Berichte herunterladen", @@ -559,6 +560,7 @@ "INBOX": "Posteingang", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/el/report.json b/app/javascript/dashboard/i18n/locale/el/report.json index 01a21e2ba..e301c95dc 100644 --- a/app/javascript/dashboard/i18n/locale/el/report.json +++ b/app/javascript/dashboard/i18n/locale/el/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Επισκόπηση Ετικετών", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Φόρτωση δεδομένων γραφήματος...", "NO_ENOUGH_DATA": "Δεν έχουν ληφθεί αρκετά σημεία δεδομένων για την δημιουργία της αναφοράς, Παρακαλώ προσπαθήστε αργότερα.", "DOWNLOAD_LABEL_REPORTS": "Λήψη αναφορών ετικέτας", @@ -559,6 +560,7 @@ "INBOX": "Εισερχόμενα", "AGENT": "Πράκτορας", "TEAM": "Ομάδα", + "LABEL": "Ετικέτα", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/es/report.json b/app/javascript/dashboard/i18n/locale/es/report.json index 19a0edfd0..316500a3a 100644 --- a/app/javascript/dashboard/i18n/locale/es/report.json +++ b/app/javascript/dashboard/i18n/locale/es/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Resumen de etiquetas", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Cargando datos del gráfico...", "NO_ENOUGH_DATA": "No hemos recibido suficientes puntos de datos para generar el informe. Inténtalo de nuevo más tarde.", "DOWNLOAD_LABEL_REPORTS": "Descargar reportes de etiquetas", @@ -559,6 +560,7 @@ "INBOX": "Bandeja de entrada", "AGENT": "Agente", "TEAM": "Equipo", + "LABEL": "Etiqueta", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/fa/report.json b/app/javascript/dashboard/i18n/locale/fa/report.json index 61630d9c8..b1a4aa3b7 100644 --- a/app/javascript/dashboard/i18n/locale/fa/report.json +++ b/app/javascript/dashboard/i18n/locale/fa/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "نمای کلی برچسب ها", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "در حال دریافت اطلاعات...", "NO_ENOUGH_DATA": "متاسفانه اطلاعات کافی دریافت نشد، لطفا بعدا دوباره امتحان کنید", "DOWNLOAD_LABEL_REPORTS": "دانلود گزارش برچسب ها", @@ -559,6 +560,7 @@ "INBOX": "صندوق ورودی", "AGENT": "ایجنت", "TEAM": "تیم‌", + "LABEL": "برچسب", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/fi/report.json b/app/javascript/dashboard/i18n/locale/fi/report.json index 5e56fcbd9..6f5f5cf58 100644 --- a/app/javascript/dashboard/i18n/locale/fi/report.json +++ b/app/javascript/dashboard/i18n/locale/fi/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Ladataan kaaviotietoja...", "NO_ENOUGH_DATA": "Emme ole saaneet tarpeeksi dataa raportin luomiseen, yritä myöhemmin uudelleen.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Edustajat", "TEAM": "Tiimi", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/fr/report.json b/app/javascript/dashboard/i18n/locale/fr/report.json index 4215d8417..0cf003018 100644 --- a/app/javascript/dashboard/i18n/locale/fr/report.json +++ b/app/javascript/dashboard/i18n/locale/fr/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Présentation des étiquettes", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Chargement des données du graphique ...", "NO_ENOUGH_DATA": "Nous n'avons pas reçu assez de points de données pour générer un rapport. Veuillez réessayer plus tard.", "DOWNLOAD_LABEL_REPORTS": "Télécharger les rapports d'étiquettes", @@ -559,6 +560,7 @@ "INBOX": "Boîte de réception", "AGENT": "Agent", "TEAM": "Équipes", + "LABEL": "Étiquettes", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/he/report.json b/app/javascript/dashboard/i18n/locale/he/report.json index b9654aceb..f28acf119 100644 --- a/app/javascript/dashboard/i18n/locale/he/report.json +++ b/app/javascript/dashboard/i18n/locale/he/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "סקירת תוויות", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "טוען נתוני תרשים...", "NO_ENOUGH_DATA": "לא קיבלנו מספיק נקודות נתונים כדי להפיק דוח, אנא נסה שוב מאוחר יותר.", "DOWNLOAD_LABEL_REPORTS": "הורד דוחות תווית", @@ -559,6 +560,7 @@ "INBOX": "תיבת הדואר הנכנס", "AGENT": "סוכן", "TEAM": "צוות", + "LABEL": "תווית", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/hi/report.json b/app/javascript/dashboard/i18n/locale/hi/report.json index e176d9147..18f1ed14b 100644 --- a/app/javascript/dashboard/i18n/locale/hi/report.json +++ b/app/javascript/dashboard/i18n/locale/hi/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/hr/report.json b/app/javascript/dashboard/i18n/locale/hr/report.json index eb368ccea..2ca551438 100644 --- a/app/javascript/dashboard/i18n/locale/hr/report.json +++ b/app/javascript/dashboard/i18n/locale/hr/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Tim", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/hu/report.json b/app/javascript/dashboard/i18n/locale/hu/report.json index f2729f217..c34bb6b3b 100644 --- a/app/javascript/dashboard/i18n/locale/hu/report.json +++ b/app/javascript/dashboard/i18n/locale/hu/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Címkék áttekintése", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Táblázat adatok betöltése...", "NO_ENOUGH_DATA": "Nem érkezett elég adat hogy jelentést generáljunk, kérjük próbáld később.", "DOWNLOAD_LABEL_REPORTS": "Címkejelentések letöltése", @@ -559,6 +560,7 @@ "INBOX": "Fiók", "AGENT": "Ügynök", "TEAM": "Csapat", + "LABEL": "Cimke", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/hy/report.json b/app/javascript/dashboard/i18n/locale/hy/report.json index e176d9147..18f1ed14b 100644 --- a/app/javascript/dashboard/i18n/locale/hy/report.json +++ b/app/javascript/dashboard/i18n/locale/hy/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/id/report.json b/app/javascript/dashboard/i18n/locale/id/report.json index 423dc516e..ba8713436 100644 --- a/app/javascript/dashboard/i18n/locale/id/report.json +++ b/app/javascript/dashboard/i18n/locale/id/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Gambaran Label", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Memuat data grafik...", "NO_ENOUGH_DATA": "Kami belum menerima cukup data untuk membuat laporan, Silakan coba lagi nanti.", "DOWNLOAD_LABEL_REPORTS": "Unduh laporan label", @@ -559,6 +560,7 @@ "INBOX": "Kotak masuk", "AGENT": "Agen", "TEAM": "Tim", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/is/report.json b/app/javascript/dashboard/i18n/locale/is/report.json index 7bb9c3f0f..d415c05f1 100644 --- a/app/javascript/dashboard/i18n/locale/is/report.json +++ b/app/javascript/dashboard/i18n/locale/is/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "Við höfum ekki fengið nógu marga gagnapunkta til að búa til skýrslu, vinsamlegast reyndu aftur síðar.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Innhólf", "AGENT": "Þjónustufulltrúi", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/it/report.json b/app/javascript/dashboard/i18n/locale/it/report.json index c944e62e9..d6471a7ff 100644 --- a/app/javascript/dashboard/i18n/locale/it/report.json +++ b/app/javascript/dashboard/i18n/locale/it/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Panoramica etichette", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Caricamento dati del grafico...", "NO_ENOUGH_DATA": "Non abbiamo ricevuto abbastanza punti dati per generare il rapporto, riprova più tardi.", "DOWNLOAD_LABEL_REPORTS": "Scarica report etichette", @@ -559,6 +560,7 @@ "INBOX": "Casella", "AGENT": "Agente", "TEAM": "Team", + "LABEL": "Etichetta", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/ja/report.json b/app/javascript/dashboard/i18n/locale/ja/report.json index d0eb75917..94c82e300 100644 --- a/app/javascript/dashboard/i18n/locale/ja/report.json +++ b/app/javascript/dashboard/i18n/locale/ja/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "過去 1 年", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "グラフデータを読み込んでいます...", "NO_ENOUGH_DATA": "レポートを生成するための十分なデータポイントを受信していません。後でもう一度お試しください。", "DOWNLOAD_LABEL_REPORTS": "ラベルレポートをダウンロード", @@ -559,6 +560,7 @@ "INBOX": "受信トレイ", "AGENT": "担当者", "TEAM": "チーム", + "LABEL": "ラベル", "AVG_RESOLUTION_TIME": "解決までの平均時間", "AVG_FIRST_RESPONSE_TIME": "初回応答の平均時間", "AVG_REPLY_TIME": "お客様の平均待ち時間", diff --git a/app/javascript/dashboard/i18n/locale/ka/report.json b/app/javascript/dashboard/i18n/locale/ka/report.json index e176d9147..18f1ed14b 100644 --- a/app/javascript/dashboard/i18n/locale/ka/report.json +++ b/app/javascript/dashboard/i18n/locale/ka/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/ko/report.json b/app/javascript/dashboard/i18n/locale/ko/report.json index 35458615a..eef965113 100644 --- a/app/javascript/dashboard/i18n/locale/ko/report.json +++ b/app/javascript/dashboard/i18n/locale/ko/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "차트 데이터 불러오는 중...", "NO_ENOUGH_DATA": "보고서를 생성할 수 있는 데이터 포인트가 부족합니다. 나중에 다시 시도하십시오.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "받은 메시지함", "AGENT": "에이전트", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/lt/report.json b/app/javascript/dashboard/i18n/locale/lt/report.json index f26419eed..37c0be59d 100644 --- a/app/javascript/dashboard/i18n/locale/lt/report.json +++ b/app/javascript/dashboard/i18n/locale/lt/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Etikečių Apžvalga", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Įkeliami diagramos duomenys...", "NO_ENOUGH_DATA": "Negavome pakankamai duomenų, kad galėtume sugeneruoti ataskaitą. Bandykite dar kartą vėliau.", "DOWNLOAD_LABEL_REPORTS": "Parsisiųsti etiketės ataskaitas", @@ -559,6 +560,7 @@ "INBOX": "Gautų laiškų aplankas", "AGENT": "Agentas", "TEAM": "Komanda", + "LABEL": "Etiketė", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/lv/report.json b/app/javascript/dashboard/i18n/locale/lv/report.json index d6fa9c9cb..4f98e7974 100644 --- a/app/javascript/dashboard/i18n/locale/lv/report.json +++ b/app/javascript/dashboard/i18n/locale/lv/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Etiķešu Pārskats", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Notiek diagrammas datu ielāde...", "NO_ENOUGH_DATA": "Mēs neesam saņēmuši pietiekami daudz datu punktu, lai izveidotu pārskatu. Lūdzu, vēlāk mēģiniet vēlreiz.", "DOWNLOAD_LABEL_REPORTS": "Lejupielādēt etiķešu pārskatus", @@ -559,6 +560,7 @@ "INBOX": "Iesūtne", "AGENT": "Aģents", "TEAM": "Komanda", + "LABEL": "Etiķete", "AVG_RESOLUTION_TIME": "Vid. Atrisināšanas Laiks", "AVG_FIRST_RESPONSE_TIME": "Vid. Pirmās Atbildes Laiks", "AVG_REPLY_TIME": "Vid. Klientu Gaidīšanas Laiks", diff --git a/app/javascript/dashboard/i18n/locale/ml/report.json b/app/javascript/dashboard/i18n/locale/ml/report.json index 738dae73a..e6d2339ab 100644 --- a/app/javascript/dashboard/i18n/locale/ml/report.json +++ b/app/javascript/dashboard/i18n/locale/ml/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "ലേബലുകൾ അവലോകനം", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "ചാർട്ട് ഡാറ്റ ലോഡു ചെയ്യുകയാണ്...", "NO_ENOUGH_DATA": "റിപ്പോർട്ട് സൃഷ്ടിക്കുന്നതിന് ആവശ്യമായ ഡാറ്റ ഞങ്ങൾക്ക് ലഭിച്ചിട്ടില്ല, ദയവായി പിന്നീട് വീണ്ടും ശ്രമിക്കുക.", "DOWNLOAD_LABEL_REPORTS": "ലേബൽ റിപ്പോർട്ടുകൾ ഡൗൺലോഡ് ചെയ്യുക", @@ -559,6 +560,7 @@ "INBOX": "ഇൻബോക്സ്", "AGENT": "ഏജന്റ്", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/ms/report.json b/app/javascript/dashboard/i18n/locale/ms/report.json index 095587745..0b463ac6c 100644 --- a/app/javascript/dashboard/i18n/locale/ms/report.json +++ b/app/javascript/dashboard/i18n/locale/ms/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Ejen", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/ne/report.json b/app/javascript/dashboard/i18n/locale/ne/report.json index e176d9147..18f1ed14b 100644 --- a/app/javascript/dashboard/i18n/locale/ne/report.json +++ b/app/javascript/dashboard/i18n/locale/ne/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/nl/report.json b/app/javascript/dashboard/i18n/locale/nl/report.json index ddb7807a9..d2c3e8504 100644 --- a/app/javascript/dashboard/i18n/locale/nl/report.json +++ b/app/javascript/dashboard/i18n/locale/nl/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Kaartgegevens laden...", "NO_ENOUGH_DATA": "We hebben niet genoeg datapunten ontvangen om een rapport te genereren, probeer het later opnieuw.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Postvak In", "AGENT": "Medewerker", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/no/report.json b/app/javascript/dashboard/i18n/locale/no/report.json index 4ebf3c85e..106f434bc 100644 --- a/app/javascript/dashboard/i18n/locale/no/report.json +++ b/app/javascript/dashboard/i18n/locale/no/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Laster inn diagramdata...", "NO_ENOUGH_DATA": "Vi har ikke mottatt nok data for å generere rapporten, vennligst prøv igjen senere.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Innboks", "AGENT": "Agent", "TEAM": "Gruppe", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/pl/report.json b/app/javascript/dashboard/i18n/locale/pl/report.json index f319cf5b6..d365d1221 100644 --- a/app/javascript/dashboard/i18n/locale/pl/report.json +++ b/app/javascript/dashboard/i18n/locale/pl/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Przegląd etykiet", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Ładowanie danych wykresów...", "NO_ENOUGH_DATA": "Nie ma wystarczającej ilości danych do wygenerowania raportu. Spróbuj ponownie później.", "DOWNLOAD_LABEL_REPORTS": "Pobierz raporty etykiety", @@ -559,6 +560,7 @@ "INBOX": "Skrzynka odbiorcza", "AGENT": "Agent", "TEAM": "Zespół", + "LABEL": "Etykieta", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/pt/automation.json b/app/javascript/dashboard/i18n/locale/pt/automation.json index 0de08af44..eebc50044 100644 --- a/app/javascript/dashboard/i18n/locale/pt/automation.json +++ b/app/javascript/dashboard/i18n/locale/pt/automation.json @@ -144,7 +144,7 @@ "SNOOZE_CONVERSATION": "Adiar conversa", "RESOLVE_CONVERSATION": "Resolver conversa", "SEND_WEBHOOK_EVENT": "Send Webhook Event", - "SEND_ATTACHMENT": "", + "SEND_ATTACHMENT": "Enviar anexo", "SEND_MESSAGE": "Send a Message", "CHANGE_PRIORITY": "Alterar prioridade", "ADD_SLA": "Adicionar SLA" diff --git a/app/javascript/dashboard/i18n/locale/pt/macros.json b/app/javascript/dashboard/i18n/locale/pt/macros.json index 1f2643bc1..ad427b303 100644 --- a/app/javascript/dashboard/i18n/locale/pt/macros.json +++ b/app/javascript/dashboard/i18n/locale/pt/macros.json @@ -94,7 +94,7 @@ "MUTE_CONVERSATION": "Silenciar Conversa", "SNOOZE_CONVERSATION": "Adiar conversa", "RESOLVE_CONVERSATION": "Resolver conversa", - "SEND_ATTACHMENT": "", + "SEND_ATTACHMENT": "Enviar anexo", "SEND_MESSAGE": "Send a Message", "CHANGE_PRIORITY": "Alterar prioridade", "ADD_PRIVATE_NOTE": "Add a Private Note", diff --git a/app/javascript/dashboard/i18n/locale/pt/report.json b/app/javascript/dashboard/i18n/locale/pt/report.json index adc370f9d..cdd25f66c 100644 --- a/app/javascript/dashboard/i18n/locale/pt/report.json +++ b/app/javascript/dashboard/i18n/locale/pt/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Visão geral de etiquetas", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "A carregar dados...", "NO_ENOUGH_DATA": "Não recebemos pontos de dados suficientes para gerar o relatório. Por favor, tente novamente mais tarde.", "DOWNLOAD_LABEL_REPORTS": "Descarregar relatórios de etiquetas", @@ -559,6 +560,7 @@ "INBOX": "Caixa de entrada", "AGENT": "Agente", "TEAM": "Equipa", + "LABEL": "Etiqueta", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json index e284ed823..c0fbf9888 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json @@ -318,7 +318,7 @@ "SUCCESS": "Issue desvinculada com sucesso", "ERROR": "Houve um erro ao desvincular o atributo, por favor, tente novamente" }, - "NO_LINKED_ISSUES": "No linked issues found", + "NO_LINKED_ISSUES": "Nenhuma tarefa vinculada foi encontrada", "DELETE": { "TITLE": "Tem certeza que deseja excluir esta integração?", "MESSAGE": "Tem certeza que deseja excluir esta integração?", @@ -326,10 +326,10 @@ "CANCEL": "Cancelar" }, "CTA": { - "TITLE": "Connect to Linear", - "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", - "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", - "BUTTON_TEXT": "Connect Linear workspace" + "TITLE": "Conectar ao Linear", + "AGENT_DESCRIPTION": "O espaço de trabalho do Linear não está conectado. Solicite ao seu administrador para conectar um espaço de trabalho para usar essa integração.", + "DESCRIPTION": "O espaço de trabalho do Linear não está conectado. Clique no botão abaixo para conectar seu espaço de trabalho para usar essa integração.", + "BUTTON_TEXT": "Conectar espaço de trabalho do Linear" } } }, diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/report.json b/app/javascript/dashboard/i18n/locale/pt_BR/report.json index cdad1b31f..47f875068 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/report.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Visão Geral das Etiquetas", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Carregando dados do gráfico...", "NO_ENOUGH_DATA": "Não existem dados suficientes para gerar o relatório. Tente novamente mais tarde.", "DOWNLOAD_LABEL_REPORTS": "Baixar relatórios de etiquetas", @@ -559,6 +560,7 @@ "INBOX": "Caixa de Entrada", "AGENT": "Agente", "TEAM": "Time", + "LABEL": "Nome do campo", "AVG_RESOLUTION_TIME": "Tempo Médio de Resolução", "AVG_FIRST_RESPONSE_TIME": "Tempo Médio de Primeira Resposta", "AVG_REPLY_TIME": "Tempo Médio de Rspera do Cliente", diff --git a/app/javascript/dashboard/i18n/locale/ro/report.json b/app/javascript/dashboard/i18n/locale/ro/report.json index fdb722efc..ab4c386af 100644 --- a/app/javascript/dashboard/i18n/locale/ro/report.json +++ b/app/javascript/dashboard/i18n/locale/ro/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Prezentare generală a etichetelor", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Încărcare date grafic...", "NO_ENOUGH_DATA": "Nu am primit suficiente date pentru a genera raportul. Vă rugăm să încercați din nou mai târziu.", "DOWNLOAD_LABEL_REPORTS": "Descărcarea rapoartelor de etichete", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Echipa", + "LABEL": "Etichetă", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/ru/report.json b/app/javascript/dashboard/i18n/locale/ru/report.json index 42802e962..dfcef0a5a 100644 --- a/app/javascript/dashboard/i18n/locale/ru/report.json +++ b/app/javascript/dashboard/i18n/locale/ru/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Обзор меток", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Загрузка данных графика...", "NO_ENOUGH_DATA": "Недостаточно данных для создания отчета, пожалуйста, повторите попытку позже.", "DOWNLOAD_LABEL_REPORTS": "Скачать отчет по меткам", @@ -559,6 +560,7 @@ "INBOX": "Электронная почта", "AGENT": "Оператор", "TEAM": "Команда", + "LABEL": "Метка", "AVG_RESOLUTION_TIME": "Среднее время решения", "AVG_FIRST_RESPONSE_TIME": "Среднее время первого ответа", "AVG_REPLY_TIME": "Среднее время ожидания клиента", diff --git a/app/javascript/dashboard/i18n/locale/sh/report.json b/app/javascript/dashboard/i18n/locale/sh/report.json index e176d9147..18f1ed14b 100644 --- a/app/javascript/dashboard/i18n/locale/sh/report.json +++ b/app/javascript/dashboard/i18n/locale/sh/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/sk/report.json b/app/javascript/dashboard/i18n/locale/sk/report.json index 1cd900ebd..569e4eb9d 100644 --- a/app/javascript/dashboard/i18n/locale/sk/report.json +++ b/app/javascript/dashboard/i18n/locale/sk/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Načítanie grafu...", "NO_ENOUGH_DATA": "Na vygenerovanie reportu sme nedostali dostatok dát, skúste to prosím neskôr.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Schránka", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/sl/report.json b/app/javascript/dashboard/i18n/locale/sl/report.json index 2455635e0..5c5fd0797 100644 --- a/app/javascript/dashboard/i18n/locale/sl/report.json +++ b/app/javascript/dashboard/i18n/locale/sl/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Nabiralnik", "AGENT": "Agent", "TEAM": "Ekipa", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/sq/report.json b/app/javascript/dashboard/i18n/locale/sq/report.json index 294ca2e7b..7c42fdfba 100644 --- a/app/javascript/dashboard/i18n/locale/sq/report.json +++ b/app/javascript/dashboard/i18n/locale/sq/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/sr/report.json b/app/javascript/dashboard/i18n/locale/sr/report.json index bccd46e1c..acf3d941a 100644 --- a/app/javascript/dashboard/i18n/locale/sr/report.json +++ b/app/javascript/dashboard/i18n/locale/sr/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Pregled oznaka", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Učitavanje podataka grafikona...", "NO_ENOUGH_DATA": "Nismo primili dovoljno podataka da bi smo generisali izveštaj, Molim vas pokušajte ponovo.", "DOWNLOAD_LABEL_REPORTS": "Preuzmi izveštaj o oznakama", @@ -559,6 +560,7 @@ "INBOX": "Prijemno sanduče", "AGENT": "Agent", "TEAM": "Tim", + "LABEL": "Oznaka", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/sv/report.json b/app/javascript/dashboard/i18n/locale/sv/report.json index da1446350..87f21fd4f 100644 --- a/app/javascript/dashboard/i18n/locale/sv/report.json +++ b/app/javascript/dashboard/i18n/locale/sv/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Laddar diagramdata...", "NO_ENOUGH_DATA": "Vi har inte fått tillräckligt många datapunkter för att generera en rapport, försök igen senare.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inkorg", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/ta/report.json b/app/javascript/dashboard/i18n/locale/ta/report.json index 332dfc733..813e31142 100644 --- a/app/javascript/dashboard/i18n/locale/ta/report.json +++ b/app/javascript/dashboard/i18n/locale/ta/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "சார்ட்டுக்கான டேட்டாவை பெறுகிறது...", "NO_ENOUGH_DATA": "அறிக்கையை உருவாக்க போதுமான தரவுகளை பெறவில்லை, தயவுசெய்து மீண்டும் முயற்சிக்கவும்.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "ஏஜென்ட்", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/th/report.json b/app/javascript/dashboard/i18n/locale/th/report.json index a43255440..d2f0eacff 100644 --- a/app/javascript/dashboard/i18n/locale/th/report.json +++ b/app/javascript/dashboard/i18n/locale/th/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "ภาพรวมป้ายกำกับ", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "กำลังโหลดแผนภูมิข้อมูล", "NO_ENOUGH_DATA": "ข้อมูลที่เราได้รับไม่เพียงพอต่อการสร้างรายงาน โปรดลองใหม่อีกครั้งในภายหน้า", "DOWNLOAD_LABEL_REPORTS": "ดาวน์โหลดรายงานป้ายกำกับ", @@ -559,6 +560,7 @@ "INBOX": "กล่องข้อความ", "AGENT": "พนักงาน", "TEAM": "ทีม", + "LABEL": "ป้ายกำกับ", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/tl/report.json b/app/javascript/dashboard/i18n/locale/tl/report.json index 294ca2e7b..7c42fdfba 100644 --- a/app/javascript/dashboard/i18n/locale/tl/report.json +++ b/app/javascript/dashboard/i18n/locale/tl/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/tr/report.json b/app/javascript/dashboard/i18n/locale/tr/report.json index 43f21de81..496a82156 100644 --- a/app/javascript/dashboard/i18n/locale/tr/report.json +++ b/app/javascript/dashboard/i18n/locale/tr/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Etiketler Genel Bakış", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Grafik verileri yükleniyor...", "NO_ENOUGH_DATA": "Rapor oluşturmak için yeterli veri yok, Lütfen daha sonra tekrar deneyin.", "DOWNLOAD_LABEL_REPORTS": "Etiket raporlarını indir", @@ -559,6 +560,7 @@ "INBOX": "Gelen Kutusu", "AGENT": "Kullanıcı", "TEAM": "Ekip", + "LABEL": "Etiket", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/uk/report.json b/app/javascript/dashboard/i18n/locale/uk/report.json index bf5978d63..f15f5065b 100644 --- a/app/javascript/dashboard/i18n/locale/uk/report.json +++ b/app/javascript/dashboard/i18n/locale/uk/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Огляд міток", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Завантаження даних діаграми...", "NO_ENOUGH_DATA": "Ми не отримали достатньо даних для генерації звіту. Будь ласка, спробуйте ще раз пізніше.", "DOWNLOAD_LABEL_REPORTS": "Завантажити звіти по міткам", @@ -559,6 +560,7 @@ "INBOX": "Вхідні", "AGENT": "Агент", "TEAM": "Команда", + "LABEL": "Мітка", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/ur/report.json b/app/javascript/dashboard/i18n/locale/ur/report.json index 0e456b5cd..37d8dc796 100644 --- a/app/javascript/dashboard/i18n/locale/ur/report.json +++ b/app/javascript/dashboard/i18n/locale/ur/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "ان باکس", "AGENT": "ایجنٹ", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/report.json b/app/javascript/dashboard/i18n/locale/ur_IN/report.json index e176d9147..18f1ed14b 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/report.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "Inbox", "AGENT": "Agent", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/vi/report.json b/app/javascript/dashboard/i18n/locale/vi/report.json index 3722dacd0..d6f282a3a 100644 --- a/app/javascript/dashboard/i18n/locale/vi/report.json +++ b/app/javascript/dashboard/i18n/locale/vi/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Tổng quan nhãn", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "Đang tải các biểu đồ dữ liệu...", "NO_ENOUGH_DATA": "Chúng tôi không nhận được đủ điểm dữ liệu để tạo báo cáo, Vui lòng thử lại sau.", "DOWNLOAD_LABEL_REPORTS": "Tải xuống báo cáo nhãn", @@ -559,6 +560,7 @@ "INBOX": "Hộp thư đến", "AGENT": "Nhà cung cấp", "TEAM": "Nhóm", + "LABEL": "Nhãn", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/report.json b/app/javascript/dashboard/i18n/locale/zh_CN/report.json index 4b8562e7f..7a77d4b23 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/report.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "标签概览", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "正在载入图表数据...", "NO_ENOUGH_DATA": "我们没有收到足够的数据点来生成报告,请稍后再试。", "DOWNLOAD_LABEL_REPORTS": "下载标签报表", @@ -559,6 +560,7 @@ "INBOX": "收件箱", "AGENT": "客服", "TEAM": "团队", + "LABEL": "标签", "AVG_RESOLUTION_TIME": "平均解决时间", "AVG_FIRST_RESPONSE_TIME": "平均首次响应时间", "AVG_REPLY_TIME": "平均客户等待时间", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/report.json b/app/javascript/dashboard/i18n/locale/zh_TW/report.json index 3837817fa..b1f9032f5 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/report.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/report.json @@ -193,6 +193,7 @@ }, "LABEL_REPORTS": { "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", "LOADING_CHART": "正在載入图表數據...", "NO_ENOUGH_DATA": "我們没有收到足夠的數據來生成報表,請稍後再試。", "DOWNLOAD_LABEL_REPORTS": "Download label reports", @@ -559,6 +560,7 @@ "INBOX": "收件匣", "AGENT": "客服", "TEAM": "Team", + "LABEL": "Label", "AVG_RESOLUTION_TIME": "Avg. Resolution Time", "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", "AVG_REPLY_TIME": "Avg. Customer Waiting Time", diff --git a/config/locales/am.yml b/config/locales/am.yml index 3c756c85f..c773e3081 100644 --- a/config/locales/am.yml +++ b/config/locales/am.yml @@ -172,6 +172,8 @@ am: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ am: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 7c587b0a3..5a6463359 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -172,6 +172,8 @@ ar: sla: added: '%{user_name} أضاف سياسة مستوى الخدمة %{sla_name}' removed: '%{user_name} أزال سياسة مستوى الخدمة %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} كتم صوت المحادثة' unmuted: '%{user_name} قام بإلغاء كتم المحادثة' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ ar: made_with: صنع بـ header: go_to_homepage: الموقع الإلكتروني + visit_website: Visit website appearance: system: النظام light: فاتح diff --git a/config/locales/az.yml b/config/locales/az.yml index cc80814e1..c9d2c1ac9 100644 --- a/config/locales/az.yml +++ b/config/locales/az.yml @@ -172,6 +172,8 @@ az: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ az: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 88dd447b2..2ab74952f 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -172,6 +172,8 @@ bg: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ bg: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/ca.yml b/config/locales/ca.yml index eb2f76d89..7daabbd99 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -172,6 +172,8 @@ ca: sla: added: '%{user_name} ha afegit la política de SLA %{sla_name}' removed: '%{user_name} ha eliminat la política de SLA %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} ha silenciat la conversa' unmuted: '%{user_name} ha desactivat el silenci de la conversa' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ ca: made_with: Fet amb header: go_to_homepage: Lloc web + visit_website: Visit website appearance: system: Sistema light: Clar diff --git a/config/locales/cs.yml b/config/locales/cs.yml index caceea531..75a840336 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -172,6 +172,8 @@ cs: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} ztlumil/a konverzaci' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ cs: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/da.yml b/config/locales/da.yml index d05f4e485..5f4a816da 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -172,6 +172,8 @@ da: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} har slukket for samtalen' unmuted: '%{user_name} har genaktiveret samtalen' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ da: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/de.yml b/config/locales/de.yml index 8a53d4284..29ca84b45 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -172,6 +172,8 @@ de: sla: added: '%{user_name} hat SLA-Richtlinie %{sla_name} hinzugefügt' removed: '%{user_name} hat SLA-Richtlinie %{sla_name} entfernt' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} hat das Gespräch stumm geschaltet' unmuted: '%{user_name} hat das Gespräch laut gestellt' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ de: made_with: Erstellt mit header: go_to_homepage: Webseite + visit_website: Visit website appearance: system: System light: Hell diff --git a/config/locales/el.yml b/config/locales/el.yml index 74b13bdd9..8e15701ae 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -172,6 +172,8 @@ el: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: 'Ο χρήστης %{user_name} σίγασε την συνομιλία' unmuted: 'Ο χρήστης %{user_name} επανάφερε από την σίγαση την συνομιλία' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ el: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/es.yml b/config/locales/es.yml index 85197fc27..82b604ddb 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -172,6 +172,8 @@ es: sla: added: '%{user_name} agregó la política de SLA %{sla_name}' removed: '%{user_name} eliminó la política de SLA %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} ha silenciado la conversación' unmuted: '%{user_name} ha anulado el silenciado de la conversación' auto_resolution_message: 'Resolviendo la conversación, ya que ha estado inactiva durante un tiempo. Por favor, inicia una nueva conversación si necesitas más ayuda.' @@ -272,6 +274,7 @@ es: made_with: Hecho con header: go_to_homepage: Sitio web + visit_website: Visit website appearance: system: Sistema light: Claro diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 1297f75d0..6cdc532a7 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -172,6 +172,8 @@ fa: sla: added: '%{user_name} سیاست SLA %{sla_name} را اضافه کرد' removed: '%{user_name} سیاست SLA %{sla_name} را حذف کرد' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} مکالمه را بی صدا کرد' unmuted: '%{user_name} مکالمه را از حالت بی صدا خراج کرد' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ fa: made_with: ساخته شده با header: go_to_homepage: وب سایت + visit_website: Visit website appearance: system: سیستم light: روشن diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 919570bb7..94ff6cb9c 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -172,6 +172,8 @@ fi: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} mykisti keskustelun' unmuted: '%{user_name} poisti keskustelun mykistyksen' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ fi: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 1cf7220d0..406d69b55 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -172,6 +172,8 @@ fr: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} a mis la conversation en sourdine' unmuted: '%{user_name} a rétabli le son de la conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ fr: made_with: Réalisé avec header: go_to_homepage: Site internet + visit_website: Visit website appearance: system: Système light: Clair diff --git a/config/locales/he.yml b/config/locales/he.yml index d8dd32e10..0945e2f50 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -172,6 +172,8 @@ he: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ he: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/hi.yml b/config/locales/hi.yml index 1523a74c0..76055318c 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -172,6 +172,8 @@ hi: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ hi: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 3b28e8fe0..23aa9555e 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -172,6 +172,8 @@ hr: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ hr: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/hu.yml b/config/locales/hu.yml index f7b484d63..b9bb386a5 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -172,6 +172,8 @@ hu: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} elnémította a beszélgetést' unmuted: '%{user_name} kikapcsolta a beszélgetés elnémítását' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ hu: made_with: 'Ezzel készítve: ' header: go_to_homepage: Honlap + visit_website: Visit website appearance: system: Rendszer light: Világos mód diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 26505f10b..acf78ed4d 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -172,6 +172,8 @@ hy: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ hy: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/id.yml b/config/locales/id.yml index 944262d17..4c039011c 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -172,6 +172,8 @@ id: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} me-mute percakapan' unmuted: '%{user_name} telah un-mute percakapan' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ id: made_with: Dibuat oleh header: go_to_homepage: Website + visit_website: Visit website appearance: system: Sistem light: Light diff --git a/config/locales/is.yml b/config/locales/is.yml index 3cfe3fbff..cf97814e2 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -172,6 +172,8 @@ is: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ is: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/it.yml b/config/locales/it.yml index 047fca00d..e6ab55115 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -172,6 +172,8 @@ it: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} ha silenziato la conversazione' unmuted: '%{user_name} ha riattivato l''audio della conversazione' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ it: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/ja.yml b/config/locales/ja.yml index f1d571634..928ac3e71 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -172,6 +172,8 @@ ja: sla: added: '%{user_name} がSLAポリシー "%{sla_name}" を追加しました' removed: '%{user_name} がSLAポリシー "%{sla_name}" を削除しました' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} が会話をミュートしました' unmuted: '%{user_name} が会話のミュートを解除しました' auto_resolution_message: '会話がしばらく非アクティブのため、解決済みとして処理します。引き続きサポートが必要な場合は、新しい会話を開始してください。' @@ -272,6 +274,7 @@ ja: made_with: 作成 header: go_to_homepage: ウェブサイト + visit_website: Visit website appearance: system: システム light: ライト diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 638963262..4154ddf14 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -172,6 +172,8 @@ ka: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ ka: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 6e249a23c..e76883f44 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -172,6 +172,8 @@ ko: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ ko: made_with: Made with header: go_to_homepage: 홈페이지 + visit_website: Visit website appearance: system: 시스템 light: 밝게 diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 1f9e894e8..dc093901f 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -172,6 +172,8 @@ lt: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} nutildė pokalbį' unmuted: '%{user_name} įjungė pokalbio garsą' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ lt: made_with: Padaryta su header: go_to_homepage: Internetinis puslapis + visit_website: Visit website appearance: system: Sistema light: Šviesus diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 362bf889b..dab14d39f 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -172,6 +172,8 @@ lv: sla: added: '%{user_name} pievienoja SLA politiku %{sla_name}' removed: '%{user_name} noņēma SLA politiku %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} izslēdza sarunu' unmuted: '%{user_name} ieslēdza sarunu' auto_resolution_message: 'Saruna tiek pabeigta, jo tā kādu laiku ir bijusi neaktīva. Ja nepieciešama papildu palīdzība, lūdzu, sāciet jaunu sarunu.' @@ -272,6 +274,7 @@ lv: made_with: Veidots ar header: go_to_homepage: Tīmekļa vietne + visit_website: Visit website appearance: system: Sistēma light: Gaišs diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 3acea5598..df5f3f329 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -172,6 +172,8 @@ ml: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ ml: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/ms.yml b/config/locales/ms.yml index b8a1749d0..536fe8134 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -172,6 +172,8 @@ ms: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ ms: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/ne.yml b/config/locales/ne.yml index 841c574f6..a1e2e478d 100644 --- a/config/locales/ne.yml +++ b/config/locales/ne.yml @@ -172,6 +172,8 @@ ne: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ ne: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 735480328..85ca07291 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -172,6 +172,8 @@ nl: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ nl: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: Systeem light: Light diff --git a/config/locales/no.yml b/config/locales/no.yml index a1f50775d..130c554db 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -172,6 +172,8 @@ sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} har dempet samtalen' unmuted: '%{user_name} har opphevet dempingen av samtalen' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 963051c7b..d589af5c5 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -172,6 +172,8 @@ pl: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} wyciszył/a rozmowę' unmuted: '%{user_name} cofnął wyciszenie rozmowy' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ pl: made_with: Wykonane z header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/pt.yml b/config/locales/pt.yml index 1521bf52e..e725e619a 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -172,6 +172,8 @@ pt: sla: added: '%{user_name} adicionou uma política de SLA %{sla_name}' removed: '%{user_name} removeu a política de SLA de %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} bloqueou a conversa' unmuted: '%{user_name} reativou a conversa' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ pt: made_with: Feito com header: go_to_homepage: Website + visit_website: Visit website appearance: system: Sistema light: Claro diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml index 965982b8f..a46e5b9c4 100644 --- a/config/locales/pt_BR.yml +++ b/config/locales/pt_BR.yml @@ -172,6 +172,8 @@ pt_BR: sla: added: '%{user_name} adicionou política de SLA %{sla_name}' removed: '%{user_name} removeu a política de SLA %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'Pesquisa CSAT não foi enviada devido a restrições de envio de mensagens' muted: '%{user_name} silenciou a conversa' unmuted: '%{user_name} reativou a conversa' auto_resolution_message: 'Resolvendo a conversa dado que está inativa por um tempo. Por favor, inicie uma nova conversa se precisar de mais ajuda.' @@ -272,6 +274,7 @@ pt_BR: made_with: Criado com header: go_to_homepage: Site + visit_website: Visit website appearance: system: Sistema light: Claro diff --git a/config/locales/ro.yml b/config/locales/ro.yml index c284925cd..3b5d6858e 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -172,6 +172,8 @@ ro: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} a dezactivat conversația' unmuted: '%{user_name} a activat conversația' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ ro: made_with: Realizat cu header: go_to_homepage: Website + visit_website: Visit website appearance: system: Sistem light: Light diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 418b6f025..3f6a4bbee 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -172,6 +172,8 @@ ru: sla: added: '%{user_name} добавил политику SLA %{sla_name}' removed: '%{user_name} удалил политику SLA %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} заглушил(а) этот разговор' unmuted: '%{user_name} включил(а) уведомления для разговора' auto_resolution_message: 'Разговор закрывается, поскольку он был неактивен в течение длительного времени. Пожалуйста, начните новый разговор, если потребуется дополнительная помощь.' @@ -272,6 +274,7 @@ ru: made_with: Сделано с header: go_to_homepage: Сайт + visit_website: Visit website appearance: system: Система light: Светлая diff --git a/config/locales/sh.yml b/config/locales/sh.yml index 4f5be6aaa..204a213c0 100644 --- a/config/locales/sh.yml +++ b/config/locales/sh.yml @@ -172,6 +172,8 @@ sh: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ sh: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 26bd825ee..29aec1757 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -172,6 +172,8 @@ sk: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} stlmil konverzáciu' unmuted: '%{user_name} odtlmil konverzáciu' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ sk: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 7c2a00b22..eb3f30350 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -172,6 +172,8 @@ sl: sla: added: '%{user_name} je dodal politiko SLA %{sla_name}' removed: '%{user_name} je odstranil politiko SLA %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} je utišal pogovor' unmuted: '%{user_name} je vklopil sporočila pogovora' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ sl: made_with: Narejeno z header: go_to_homepage: Spletna stran + visit_website: Visit website appearance: system: Sistem light: Svetlo diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 9d3edc96c..8509dc3d0 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -172,6 +172,8 @@ sq: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ sq: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 0dc74a5ae..e8f1006a8 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -172,6 +172,8 @@ sr-Latn: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} je utišao razgovor' unmuted: '%{user_name} je uklonio utišanje razgovora' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ sr-Latn: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 0c4027142..4953c85da 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -172,6 +172,8 @@ sv: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} har tystat konversationen' unmuted: '%{user_name} har avtystat konversationen' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ sv: made_with: Gjord med header: go_to_homepage: Hemsida + visit_website: Visit website appearance: system: System light: Ljus diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 875701bde..a7571007f 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -172,6 +172,8 @@ ta: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ ta: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/th.yml b/config/locales/th.yml index 60c8cecb3..b1b9bd8d7 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -172,6 +172,8 @@ th: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ th: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/tl.yml b/config/locales/tl.yml index 6d4290bad..8c3d209fa 100644 --- a/config/locales/tl.yml +++ b/config/locales/tl.yml @@ -172,6 +172,8 @@ tl: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ tl: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/tr.yml b/config/locales/tr.yml index e99700e45..2f045ad5a 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -172,6 +172,8 @@ tr: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name}, sohbeti sessize aldı' unmuted: '%{user_name} konuşmanın sesini açtı' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ tr: made_with: İle yapılmıştır header: go_to_homepage: Website + visit_website: Visit website appearance: system: Sistem light: Açık Mod diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 736bbecf8..a51af682d 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -172,6 +172,8 @@ uk: sla: added: '%{user_name} додав політику SLA %{sla_name}' removed: '%{user_name} видалив політику SLA %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} включив безвучний режим' unmuted: '%{user_name} виключив безвучний режим' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ uk: made_with: Зроблено з header: go_to_homepage: Вебсайт + visit_website: Visit website appearance: system: Системна light: Світла diff --git a/config/locales/ur.yml b/config/locales/ur.yml index c553bb8ac..2a84171c2 100644 --- a/config/locales/ur.yml +++ b/config/locales/ur.yml @@ -172,6 +172,8 @@ ur: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ ur: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/ur_IN.yml b/config/locales/ur_IN.yml index 884928dbe..4cbeef832 100644 --- a/config/locales/ur_IN.yml +++ b/config/locales/ur_IN.yml @@ -172,6 +172,8 @@ ur: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} has muted the conversation' unmuted: '%{user_name} has unmuted the conversation' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ ur: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 1ad0c8654..c626577e6 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -172,6 +172,8 @@ vi: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} đã tắt tiếng hội thoại' unmuted: '%{user_name} đã bật tiếng cuộc trò chuyện' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ vi: made_with: Tạo bởi header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light diff --git a/config/locales/zh_CN.yml b/config/locales/zh_CN.yml index e7b1d406b..d071daa47 100644 --- a/config/locales/zh_CN.yml +++ b/config/locales/zh_CN.yml @@ -172,6 +172,8 @@ zh_CN: sla: added: '%{user_name} 添加了 SLA 策略 %{sla_name}' removed: '%{user_name} 移除了 SLA 策略 %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} 已将会话静音' unmuted: '%{user_name} 已将会话取消静音' auto_resolution_message: '由于对话长时间未活跃,已将其标记为已解决。如果您需要进一步帮助,请开始新的对话。' @@ -272,6 +274,7 @@ zh_CN: made_with: 制作于 header: go_to_homepage: 网站 + visit_website: Visit website appearance: system: 系统 light: 浅色 diff --git a/config/locales/zh_TW.yml b/config/locales/zh_TW.yml index bf96f23e2..26a4b7e5d 100644 --- a/config/locales/zh_TW.yml +++ b/config/locales/zh_TW.yml @@ -172,6 +172,8 @@ zh_TW: sla: added: '%{user_name} added SLA policy %{sla_name}' removed: '%{user_name} removed SLA policy %{sla_name}' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' muted: '%{user_name} 已將對話靜音' unmuted: '%{user_name} 將對話解除靜音' auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' @@ -272,6 +274,7 @@ zh_TW: made_with: Made with header: go_to_homepage: Website + visit_website: Visit website appearance: system: System light: Light From 0d05a07aa7efd39d72a766bf2325f8d052bf6c08 Mon Sep 17 00:00:00 2001 From: Alex808r <78639180+Alex808r@users.noreply.github.com> Date: Thu, 12 Jun 2025 02:05:30 +0300 Subject: [PATCH 8/9] fix: Prevent display_name reset when updating password (#10374) Fixes #10372 --------- Co-authored-by: Pranav --- app/javascript/dashboard/api/auth.js | 22 +++++++++---------- app/javascript/dashboard/api/endPoints.js | 1 + .../settings/profile/ChangePassword.vue | 6 ++--- .../dashboard/store/modules/auth.js | 10 +++++++++ .../api/v1/profiles_controller_spec.rb | 12 ++++++++++ 5 files changed, 37 insertions(+), 14 deletions(-) diff --git a/app/javascript/dashboard/api/auth.js b/app/javascript/dashboard/api/auth.js index 75e7e2953..a1b15ee79 100644 --- a/app/javascript/dashboard/api/auth.js +++ b/app/javascript/dashboard/api/auth.js @@ -38,13 +38,7 @@ export default { } return false; }, - profileUpdate({ - password, - password_confirmation, - displayName, - avatar, - ...profileAttributes - }) { + profileUpdate({ displayName, avatar, ...profileAttributes }) { const formData = new FormData(); Object.keys(profileAttributes).forEach(key => { const hasValue = profileAttributes[key] === undefined; @@ -53,16 +47,22 @@ export default { } }); formData.append('profile[display_name]', displayName || ''); - if (password && password_confirmation) { - formData.append('profile[password]', password); - formData.append('profile[password_confirmation]', password_confirmation); - } if (avatar) { formData.append('profile[avatar]', avatar); } return axios.put(endPoints('profileUpdate').url, formData); }, + profilePasswordUpdate({ currentPassword, password, passwordConfirmation }) { + return axios.put(endPoints('profileUpdate').url, { + profile: { + current_password: currentPassword, + password, + password_confirmation: passwordConfirmation, + }, + }); + }, + updateUISettings({ uiSettings }) { return axios.put(endPoints('profileUpdate').url, { profile: { ui_settings: uiSettings }, diff --git a/app/javascript/dashboard/api/endPoints.js b/app/javascript/dashboard/api/endPoints.js index 5409aac60..ecd3f0170 100644 --- a/app/javascript/dashboard/api/endPoints.js +++ b/app/javascript/dashboard/api/endPoints.js @@ -51,6 +51,7 @@ const endPoints = { resendConfirmation: { url: '/api/v1/profile/resend_confirmation', }, + resetAccessToken: { url: '/api/v1/profile/reset_access_token', }, diff --git a/app/javascript/dashboard/routes/dashboard/settings/profile/ChangePassword.vue b/app/javascript/dashboard/routes/dashboard/settings/profile/ChangePassword.vue index e224ee5c5..6ee5108ac 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/profile/ChangePassword.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/profile/ChangePassword.vue @@ -62,10 +62,10 @@ export default { } let alertMessage = this.$t('PROFILE_SETTINGS.PASSWORD_UPDATE_SUCCESS'); try { - await this.$store.dispatch('updateProfile', { + await this.$store.dispatch('updatePassword', { password: this.password, - password_confirmation: this.passwordConfirmation, - current_password: this.currentPassword, + passwordConfirmation: this.passwordConfirmation, + currentPassword: this.currentPassword, }); } catch (error) { alertMessage = diff --git a/app/javascript/dashboard/store/modules/auth.js b/app/javascript/dashboard/store/modules/auth.js index f329fb009..91338d938 100644 --- a/app/javascript/dashboard/store/modules/auth.js +++ b/app/javascript/dashboard/store/modules/auth.js @@ -135,6 +135,16 @@ export const actions = { } }, + updatePassword: async ({ commit }, params) => { + // eslint-disable-next-line no-useless-catch + try { + const response = await authAPI.profilePasswordUpdate(params); + commit(types.SET_CURRENT_USER, response.data); + } catch (error) { + throw error; + } + }, + deleteAvatar: async ({ commit }) => { try { const response = await authAPI.deleteAvatar(); diff --git a/spec/controllers/api/v1/profiles_controller_spec.rb b/spec/controllers/api/v1/profiles_controller_spec.rb index 8af9e30c0..30c5b69f4 100644 --- a/spec/controllers/api/v1/profiles_controller_spec.rb +++ b/spec/controllers/api/v1/profiles_controller_spec.rb @@ -94,6 +94,18 @@ RSpec.describe 'Profile API', type: :request do expect(agent.reload.valid_password?('Test1234!')).to be true end + it 'does not reset the display name if updates the password' do + display_name = agent.display_name + + put '/api/v1/profile', + params: { profile: { current_password: 'Test123!', password: 'Test1234!', password_confirmation: 'Test1234!' } }, + headers: agent.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:success) + expect(agent.reload.display_name).to eq(display_name) + end + it 'throws error when current password provided is invalid' do put '/api/v1/profile', params: { profile: { current_password: 'Test', password: 'test123', password_confirmation: 'test123' } }, From d52f4267ba42783273ef183a59e9f56495571aa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Gabriel=20Franco?= Date: Wed, 11 Jun 2025 23:19:36 -0300 Subject: [PATCH 9/9] feat: Add i18n on whatsapp list button (#10852) Fixes #10862 --------- Co-authored-by: Pranav --- .../whatsapp/providers/base_service.rb | 2 +- config/locales/en.yml | 2 ++ config/locales/pt_BR.yml | 6 +++-- .../whatsapp360_dialog_service_spec.rb | 23 +++++++++---------- .../providers/whatsapp_cloud_service_spec.rb | 23 +++++++++---------- 5 files changed, 29 insertions(+), 27 deletions(-) diff --git a/app/services/whatsapp/providers/base_service.rb b/app/services/whatsapp/providers/base_service.rb index b60c02369..97665f7ef 100644 --- a/app/services/whatsapp/providers/base_service.rb +++ b/app/services/whatsapp/providers/base_service.rb @@ -100,7 +100,7 @@ class Whatsapp::Providers::BaseService rows = create_rows(message.content_attributes['items']) section1 = { 'rows' => rows } sections = [section1] - json_hash = { :button => 'Choose an item', 'sections' => sections } + json_hash = { :button => I18n.t('conversations.messages.whatsapp.list_button_label'), 'sections' => sections } create_payload('list', message.outgoing_content, JSON.generate(json_hash)) end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 59d7b8850..463aa713e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -152,6 +152,8 @@ en: instagram_story_content: '%{story_sender} mentioned you in the story: ' instagram_deleted_story_content: This story is no longer available. deleted: This message was deleted + whatsapp: + list_button_label: 'Choose an item' delivery_status: error_code: 'Error code: %{error_code}' activity: diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml index a46e5b9c4..19570ab07 100644 --- a/config/locales/pt_BR.yml +++ b/config/locales/pt_BR.yml @@ -138,6 +138,8 @@ pt_BR: instagram_story_content: '%{story_sender} mencionou você na conversa: ' instagram_deleted_story_content: Este Story não está mais disponível. deleted: Esta mensagem foi excluída + whatsapp: + list_button_label: 'Escolha um item' delivery_status: error_code: 'Código de erro: %{error_code}' activity: @@ -213,7 +215,7 @@ pt_BR: slack: name: 'Slack' short_description: 'Receba notificações e responda as conversas diretamente no Slack.' - description: "Integre Chatwoot com Slack para manter seu time em sincronia. Essa integração permite que você receba notificações de novas conversas e as responda diretamente na interface do Slack." + description: 'Integre Chatwoot com Slack para manter seu time em sincronia. Essa integração permite que você receba notificações de novas conversas e as responda diretamente na interface do Slack.' webhooks: name: 'Webhooks' description: 'Eventos webhook fornecem atualizações sobre atividades em tempo real na sua conta Chatwoot. Você pode se inscrever em seus eventos preferidos, e o Chatwoot enviará as chamadas HTTP com as atualizações.' @@ -224,7 +226,7 @@ pt_BR: google_translate: name: 'Tradutor do Google' short_description: 'Traduzir automaticamente mensagens de clientes para agentes.' - description: "Integre o Google Tradutor para ajudar os agentes a traduzir facilmente as mensagens dos clientes. Esta integração detecta automaticamente o idioma e o converte para o idioma preferido do agente ou do administrador." + description: 'Integre o Google Tradutor para ajudar os agentes a traduzir facilmente as mensagens dos clientes. Esta integração detecta automaticamente o idioma e o converte para o idioma preferido do agente ou do administrador.' openai: name: 'OpenAI' short_description: 'Sugestões, resumos e aprimoramento de mensagem e resposta com IA.' diff --git a/spec/services/whatsapp/providers/whatsapp360_dialog_service_spec.rb b/spec/services/whatsapp/providers/whatsapp360_dialog_service_spec.rb index bba3f5914..572e96685 100644 --- a/spec/services/whatsapp/providers/whatsapp360_dialog_service_spec.rb +++ b/spec/services/whatsapp/providers/whatsapp360_dialog_service_spec.rb @@ -51,16 +51,15 @@ describe Whatsapp::Providers::Whatsapp360DialogService do end it 'calls message endpoints with list payload when number of items is greater than 3' do + items = %w[Burito Pasta Sushi Salad].map { |i| { title: i, value: i } } message = create(:message, message_type: :outgoing, content: 'test', inbox: whatsapp_channel.inbox, - content_type: 'input_select', - content_attributes: { - items: [ - { title: 'Burito', value: 'Burito' }, - { title: 'Pasta', value: 'Pasta' }, - { title: 'Sushi', value: 'Sushi' }, - { title: 'Salad', value: 'Salad' } - ] - }) + content_type: 'input_select', content_attributes: { items: items }) + + expected_action = { + button: I18n.t('conversations.messages.whatsapp.list_button_label'), + sections: [{ rows: %w[Burito Pasta Sushi Salad].map { |i| { id: i, title: i } } }] + }.to_json + stub_request(:post, 'https://waba.360dialog.io/v1/messages') .with( body: { @@ -70,9 +69,9 @@ describe Whatsapp::Providers::Whatsapp360DialogService do body: { text: 'test' }, - action: '{"button":"Choose an item","sections":[{"rows":[{"id":"Burito","title":"Burito"},' \ - '{"id":"Pasta","title":"Pasta"},{"id":"Sushi","title":"Sushi"},{"id":"Salad","title":"Salad"}]}]}' - }, type: 'interactive' + action: expected_action + }, + type: 'interactive' }.to_json ).to_return(status: 200, body: whatsapp_response.to_json, headers: response_headers) expect(service.send_message('+123456789', message)).to eq 'message_id' diff --git a/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb b/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb index 134d69fee..1bef635b3 100644 --- a/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb +++ b/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb @@ -124,16 +124,15 @@ describe Whatsapp::Providers::WhatsappCloudService do end it 'calls message endpoints with list payload when number of items is greater than 3' do + items = %w[Burito Pasta Sushi Salad].map { |i| { title: i, value: i } } message = create(:message, message_type: :outgoing, content: 'test', inbox: whatsapp_channel.inbox, - content_type: 'input_select', - content_attributes: { - items: [ - { title: 'Burito', value: 'Burito' }, - { title: 'Pasta', value: 'Pasta' }, - { title: 'Sushi', value: 'Sushi' }, - { title: 'Salad', value: 'Salad' } - ] - }) + content_type: 'input_select', content_attributes: { items: items }) + + expected_action = { + button: I18n.t('conversations.messages.whatsapp.list_button_label'), + sections: [{ rows: %w[Burito Pasta Sushi Salad].map { |i| { id: i, title: i } } }] + }.to_json + stub_request(:post, 'https://graph.facebook.com/v13.0/123456789/messages') .with( body: { @@ -143,9 +142,9 @@ describe Whatsapp::Providers::WhatsappCloudService do body: { text: 'test' }, - action: '{"button":"Choose an item","sections":[{"rows":[{"id":"Burito","title":"Burito"},' \ - '{"id":"Pasta","title":"Pasta"},{"id":"Sushi","title":"Sushi"},{"id":"Salad","title":"Salad"}]}]}' - }, type: 'interactive' + action: expected_action + }, + type: 'interactive' }.to_json ).to_return(status: 200, body: whatsapp_response.to_json, headers: response_headers) expect(service.send_message('+123456789', message)).to eq 'message_id'