@@ -73,3 +64,8 @@ export default {
},
};
+
diff --git a/app/javascript/dashboard/constants.js b/app/javascript/dashboard/constants.js
index 6a0a87a05..2263154bd 100644
--- a/app/javascript/dashboard/constants.js
+++ b/app/javascript/dashboard/constants.js
@@ -23,5 +23,6 @@ export default {
},
DOCS_URL: '//www.chatwoot.com/docs/product/',
TESTIMONIAL_URL: 'https://testimonials.cdn.chatwoot.com/content.json',
+ SMALL_SCREEN_BREAKPOINT: 1024,
};
export const DEFAULT_REDIRECT_URL = '/app/';
diff --git a/app/javascript/dashboard/helper/automationHelper.js b/app/javascript/dashboard/helper/automationHelper.js
index 715a11294..6bafb6b45 100644
--- a/app/javascript/dashboard/helper/automationHelper.js
+++ b/app/javascript/dashboard/helper/automationHelper.js
@@ -97,8 +97,9 @@ export const generateConditionOptions = (options, key = 'id') => {
});
};
-export const getActionOptions = ({ teams, labels, type }) => {
+export const getActionOptions = ({ agents, teams, labels, type }) => {
const actionsMap = {
+ assign_agent: agents,
assign_team: teams,
send_email_to_team: teams,
add_label: generateConditionOptions(labels, 'title'),
@@ -178,7 +179,7 @@ export const getDefaultConditions = eventName => {
export const getDefaultActions = () => {
return [
{
- action_name: 'assign_team',
+ action_name: 'assign_agent',
action_params: [],
},
];
@@ -213,7 +214,7 @@ export const isCustomAttribute = (attrs, key) => {
export const generateCustomAttributes = (
conversationAttributes = [],
- contactAttribtues = [],
+ contactAttributes = [],
conversationlabel,
contactlabel
) => {
@@ -228,14 +229,14 @@ export const generateCustomAttributes = (
...conversationAttributes
);
}
- if (contactAttribtues.length) {
+ if (contactAttributes.length) {
customAttributes.push(
{
key: `contact_custom_attribute`,
name: contactlabel,
disabled: true,
},
- ...contactAttribtues
+ ...contactAttributes
);
}
return customAttributes;
diff --git a/app/javascript/dashboard/i18n/locale/ar/agentBots.json b/app/javascript/dashboard/i18n/locale/ar/agentBots.json
index c5336c9dc..ea983d375 100644
--- a/app/javascript/dashboard/i18n/locale/ar/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ar/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "تحديث",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ar/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ar/attributesMgmt.json
index 33338d3e5..aa1c7f307 100644
--- a/app/javascript/dashboard/i18n/locale/ar/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ar/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "تم إضافة سمة مخصصة بنجاح",
- "ERROR_MESSAGE": "تعذر إنشاء سمة مخصصة، الرجاء المحاولة مرة أخرى لاحقاً"
+ "SUCCESS_MESSAGE": "تم إضافة سمة مخصصة بنجاح!",
+ "ERROR_MESSAGE": "تعذر إنشاء سمة مخصصة، الرجاء المحاولة مرة أخرى لاحقاً."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ar/bulkActions.json b/app/javascript/dashboard/i18n/locale/ar/bulkActions.json
index 8565ca64c..5d164c43d 100644
--- a/app/javascript/dashboard/i18n/locale/ar/bulkActions.json
+++ b/app/javascript/dashboard/i18n/locale/ar/bulkActions.json
@@ -2,8 +2,8 @@
"BULK_ACTION": {
"CONVERSATIONS_SELECTED": "%{conversationCount} المحادثات المحددة",
"AGENT_SELECT_LABEL": "اختر وكيل",
- "ASSIGN_CONFIRMATION_LABEL": "Are you sure to assign %{conversationCount} %{conversationLabel} to",
- "UNASSIGN_CONFIRMATION_LABEL": "Are you sure to unassign %{conversationCount} %{conversationLabel}?",
+ "ASSIGN_CONFIRMATION_LABEL": "هل أنت متأكد من أنك تريد تعيين %{conversationCount} %{conversationLabel} إلى",
+ "UNASSIGN_CONFIRMATION_LABEL": "هل أنت متأكد من إلغاء تعيين %{conversationCount} %{conversationLabel}؟",
"GO_BACK_LABEL": "العودة للخلف",
"ASSIGN_LABEL": "تكليف",
"YES": "نعم",
@@ -31,10 +31,10 @@
"TEAMS": {
"TEAM_SELECT_LABEL": "اختيار فريق",
"NONE": "لا شيء",
- "NO_TEAMS_AVAILABLE": "There are no teams added to this account yet.",
- "ASSIGN_SELECTED_TEAMS": "Assign selected team",
- "ASSIGN_SUCCESFUL": "Teams assiged successfully",
- "ASSIGN_FAILED": "Failed to assign team, please try again"
+ "NO_TEAMS_AVAILABLE": "لا توجد فرق مضافة إلى هذا الحساب حتى الآن.",
+ "ASSIGN_SELECTED_TEAMS": "تعيين فريق محدد",
+ "ASSIGN_SUCCESFUL": "تم تعيين الفرق بنجاح",
+ "ASSIGN_FAILED": "فشل تعيين الفريق، الرجاء المحاولة مرة أخرى"
}
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ar/chatlist.json b/app/javascript/dashboard/i18n/locale/ar/chatlist.json
index 974dc4d8c..5a9ead21b 100644
--- a/app/javascript/dashboard/i18n/locale/ar/chatlist.json
+++ b/app/javascript/dashboard/i18n/locale/ar/chatlist.json
@@ -57,8 +57,8 @@
"REPLY_TO_TWEET": "الرد على هذه التغريدة",
"LINK_TO_STORY": "الذهاب إلى قصة الإنستقرام",
"SENT": "Sent successfully",
- "READ": "Read successfully",
- "DELIVERED": "Delivered successfully",
+ "READ": "تمت القراءة بنجاح",
+ "DELIVERED": "تم الإرسال بنجاح",
"NO_MESSAGES": "لا توجد رسائل",
"NO_CONTENT": "لم يتم العثور على محتوى",
"HIDE_QUOTED_TEXT": "Hide Quoted Text",
diff --git a/app/javascript/dashboard/i18n/locale/ar/conversation.json b/app/javascript/dashboard/i18n/locale/ar/conversation.json
index a4bbe855f..063106636 100644
--- a/app/javascript/dashboard/i18n/locale/ar/conversation.json
+++ b/app/javascript/dashboard/i18n/locale/ar/conversation.json
@@ -214,7 +214,7 @@
"CONVERSATION_INFO": "معلومات المحادثة",
"CONTACT_ATTRIBUTES": "سمات جهة الاتصال",
"PREVIOUS_CONVERSATION": "المحادثات السابقة",
- "MACROS": "Macros"
+ "MACROS": "ماكروس"
}
},
"CONVERSATION_CUSTOM_ATTRIBUTES": {
diff --git a/app/javascript/dashboard/i18n/locale/ar/emoji.json b/app/javascript/dashboard/i18n/locale/ar/emoji.json
index fd81268fb..61be07788 100644
--- a/app/javascript/dashboard/i18n/locale/ar/emoji.json
+++ b/app/javascript/dashboard/i18n/locale/ar/emoji.json
@@ -1,6 +1,6 @@
{
"EMOJI": {
- "PLACEHOLDER": "Search emojis",
- "NOT_FOUND": "No emoji match your search"
+ "PLACEHOLDER": "ابحث في الايموجي",
+ "NOT_FOUND": "لا يوجد إيموجي يطابق بحثك"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ar/generalSettings.json b/app/javascript/dashboard/i18n/locale/ar/generalSettings.json
index 47a516bf5..f72fb052e 100644
--- a/app/javascript/dashboard/i18n/locale/ar/generalSettings.json
+++ b/app/javascript/dashboard/i18n/locale/ar/generalSettings.json
@@ -23,7 +23,7 @@
"ERROR": "الرجاء إدخال اسم حساب صحيح"
},
"LANGUAGE": {
- "LABEL": "Site language",
+ "LABEL": "لغة الموقع",
"PLACEHOLDER": "اسم الحساب الخاص بك",
"ERROR": ""
},
@@ -55,7 +55,7 @@
"ENTER_TO_SELECT": "اضغط على زر الإدخال للاختيار",
"ENTER_TO_REMOVE": "اضغط على زر الإدخال للحذف",
"SELECT_ONE": "اختر واحدا",
- "SELECT": "Select"
+ "SELECT": "اختر"
}
},
"NOTIFICATIONS_PAGE": {
@@ -139,6 +139,6 @@
}
},
"DASHBOARD_APPS": {
- "LOADING_MESSAGE": "Loading Dashboard App..."
+ "LOADING_MESSAGE": "تحميل تطبيق لوحة التحكم..."
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json
index 6a394f09d..d0d2f2701 100644
--- a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "إنشاء محادثات من التغريدات المشار إليها"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "قناة الموقع",
"DESC": "قم بإنشاء قناة تواصل لموقع الويب الخاص بك وابدأ في استقبال الرسائل من عملائك عبر صندوق الدردشة المباشرة.",
@@ -134,7 +138,7 @@
"PHONE_NUMBER": {
"LABEL": "رقم الهاتف",
"PLACEHOLDER": "الرجاء إدخال رقم الهاتف الذي سيتم إرسال الرسائل منه.",
- "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces."
+ "ERROR": "الرجاء تقديم رقم هاتف صالح يبدأ بإشارة '+' ولا يحتوي على أي مسافات."
},
"API_CALLBACK": {
"TITLE": "عنوان Callback URL",
@@ -185,7 +189,7 @@
"PHONE_NUMBER": {
"LABEL": "رقم الهاتف",
"PLACEHOLDER": "الرجاء إدخال رقم الهاتف الذي سيتم إرسال الرسائل منه.",
- "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces."
+ "ERROR": "الرجاء تقديم رقم هاتف صالح يبدأ بإشارة '+' ولا يحتوي على أي مسافات."
},
"SUBMIT_BUTTON": "إنشاء قناة عرض التردد",
"API": {
@@ -214,7 +218,7 @@
"PHONE_NUMBER": {
"LABEL": "رقم الهاتف",
"PLACEHOLDER": "الرجاء إدخال رقم الهاتف الذي سيتم إرسال الرسائل منه.",
- "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces."
+ "ERROR": "الرجاء تقديم رقم هاتف صالح يبدأ بإشارة '+' ولا يحتوي على أي مسافات."
},
"PHONE_NUMBER_ID": {
"LABEL": "رقم الهاتف",
@@ -239,9 +243,9 @@
},
"API_CALLBACK": {
"TITLE": "عنوان Callback URL",
- "SUBTITLE": "You have to configure the webhook URL and the verification token in the Facebook Developer portal with the values shown below.",
+ "SUBTITLE": "يجب عليك تكوين رابط الويب هوك و رمز التحقق في بوابة مطور الفيسبوك مع القيم الموضحة أدناه.",
"WEBHOOK_URL": "رابط Webhook",
- "WEBHOOK_VERIFICATION_TOKEN": "Webhook Verification Token"
+ "WEBHOOK_VERIFICATION_TOKEN": "رمز التحقق من Webhook"
},
"SUBMIT_BUTTON": "إنشاء قناة واتساب",
"API": {
@@ -421,7 +425,7 @@
"PRE_CHAT_FORM": "نموذج ما قبل الدردشة",
"BUSINESS_HOURS": "ساعات العمل",
"WIDGET_BUILDER": "منشئ اللايف شات",
- "BOT_CONFIGURATION": "Bot Configuration"
+ "BOT_CONFIGURATION": "اعدادات البوت"
},
"SETTINGS": "الإعدادات",
"FEATURES": {
@@ -445,8 +449,8 @@
"ENABLE_CSAT_SUB_TEXT": "تمكين/تعطيل تقييم خدمة العملاء بعد إنتهاء المحادثة",
"ENABLE_CONTINUITY_VIA_EMAIL": "تمكين استمرارية المحادثة عبر البريد الإلكتروني",
"ENABLE_CONTINUITY_VIA_EMAIL_SUB_TEXT": "المحادثات ستستمر عبر البريد الإلكتروني إذا كان عنوان البريد الإلكتروني لجهة الاتصال متاحاً.",
- "LOCK_TO_SINGLE_CONVERSATION": "Lock to single conversation",
- "LOCK_TO_SINGLE_CONVERSATION_SUB_TEXT": "Enable or disable multiple conversations for the same contact in this inbox",
+ "LOCK_TO_SINGLE_CONVERSATION": "قفل إلى محادثة واحدة",
+ "LOCK_TO_SINGLE_CONVERSATION_SUB_TEXT": "تمكين أو تعطيل محادثات متعددة لنفس جهة الاتصال في هذا البريد الوارد",
"INBOX_UPDATE_TITLE": "إعدادات قناة التواصل",
"INBOX_UPDATE_SUB_TEXT": "تحديث إعدادات قناة التواصل",
"AUTO_ASSIGNMENT_SUB_TEXT": "تمكين أو تعطيل الإسناد التلقائي للمحادثات الجديدة إلى الموظفين المضافين إلى قناة التواصل هذه.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "تمكين SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "تعيين تفاصيل IMAP الخاصة بك",
diff --git a/app/javascript/dashboard/i18n/locale/ar/integrations.json b/app/javascript/dashboard/i18n/locale/ar/integrations.json
index 299294819..a7fb6e5a7 100644
--- a/app/javascript/dashboard/i18n/locale/ar/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ar/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
ستتم الآن مزامنة جميع المحادثات الواردة إلى محادثة الزبائن داخل مكان العمل الخاص بك.
الرد على موضوع محادثة في محادثة العملاء قناة الركود سوف تقوم بإنشاء رد على العميل من خلال المحادثة.
ابدأ الردود ب ملاحظة: لإنشاء ملاحظات خاصة بدلاً من الردود.
إذا كان للرد على slack ملف تعريف الوكيل في الدردشة تحت نفس البريد الإلكتروني، فسيتم ربط الردود وفقا لذلك.
عندما لا يكون للرد ملف شخصي للوكيل المرتبط، ستتم الردود من ملف بوت الشخصي.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "حذف",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ar/macros.json b/app/javascript/dashboard/i18n/locale/ar/macros.json
index a2fcf109f..f96c0f800 100644
--- a/app/javascript/dashboard/i18n/locale/ar/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ar/macros.json
@@ -1,78 +1,78 @@
{
"MACROS": {
- "HEADER": "Macros",
- "HEADER_BTN_TXT": "Add a new macro",
- "HEADER_BTN_TXT_SAVE": "Save macro",
- "LOADING": "Fetching macros",
- "SIDEBAR_TXT": "
Macros
A macro is a set of saved actions that help customer service agents easily complete tasks. The agents can define a set of actions like tagging a conversation with a label, sending an email transcript, updating a custom attribute, etc., and they can run these actions in a single click. When the agents run the macro, the actions would be performed sequentially in the order they are defined. Macros improve productivity and increase consistency in actions.
A macro can be helpful in 2 ways.
As an agent assist: If an agent performs a set of actions multiple times, they can save it as a macro and execute all the actions together using a single click.
As an option to onboard a team member: Every agent has to perform many different checks/actions during each conversation. Onboarding a new support team member will be easy if pre-defined macros are available on the account. Instead of describing each step in detail, the manager/team lead can point to the macros used in different scenarios.
",
- "ERROR": "Something went wrong. Please try again",
- "ORDER_INFO": "Macros will run in the order you add your actions. You can rearrange them by dragging them by the handle beside each node.",
+ "HEADER": "ماكروس",
+ "HEADER_BTN_TXT": "إضافة ماكرو جديد",
+ "HEADER_BTN_TXT_SAVE": "حفظ الماكرو",
+ "LOADING": "جاري جلب الماكروس",
+ "SIDEBAR_TXT": "
الماكروس
الماكرو هو مجموعة من الإجراءات المحفوظة التي تساعد وكلاء خدمة العملاء على إكمال المهام بسهولة. يمكن للوكلاء تحديد مجموعة من الإجراءات مثل وضع علامة على محادثة مع تسمية، وإرسال نص بريد إلكتروني، وتحديث سمة مخصصة، إلخ. ويمكنهم تنفيذ هذه الإجراءات بنقرة واحدة. وعندما يدير الوكلاء الكلية، يتم تنفيذ الإجراءات بالتسلسل حسب الترتيب الذي تحدده. يحسن الماكرو الإنتاجية ويزيد الاتساق في الإجراءات.
يمكن أن يكون الماكرو مفيداً بطريقتين.
كوكيل يساعد: إذا قام وكيل بمجموعة من الإجراءات عدة مرات، يمكنهم حفظه كماكلي وتنفيذ جميع الإجراءات معاً باستخدام نقرة واحدة.
كخيار للدخول إلى عضوية الفريق: يجب على كل وكيل إجراء العديد من الشيكات والإجراءات المختلفة خلال كل محادثة. سيكون عضو فريق الدعم الجديد من أونبواردينغ سهلا إذا كان الماكرو المحدد مسبقا متاحا على الحساب. وبدلا من وصف كل خطوة بالتفصيل، يمكن للمدير/الفريق أن يشير إلى الكتلة الكلية المستخدمة في سيناريوهات مختلفة.
",
+ "ERROR": "حدث خطأ ما. الرجاء المحاولة مرة أخرى",
+ "ORDER_INFO": "سيتم تشغيل الماكرو بالترتيب الذي تضيفه إجراءاتك. يمكنك إعادة ترتيبهم بسحبهم بواسطة المعالج بجانب كل عقدة.",
"ADD": {
"FORM": {
"NAME": {
- "LABEL": "Macro name",
- "PLACEHOLDER": "Enter a name for your macro",
- "ERROR": "Name is required for creating a macro"
+ "LABEL": "اسم الماكرو",
+ "PLACEHOLDER": "أدخل اسم الماكرو الخاص بك",
+ "ERROR": "الاسم مطلوب لإنشاء الماكرو"
},
"ACTIONS": {
"LABEL": "الإجراءات"
}
},
"API": {
- "SUCCESS_MESSAGE": "Macro added successfully",
- "ERROR_MESSAGE": "Unable to create macro, Please try again later"
+ "SUCCESS_MESSAGE": "تمت إضافة الماكرو بنجاح",
+ "ERROR_MESSAGE": "غير قادر على إنشاء الماكرو ، الرجاء المحاولة مرة أخرى لاحقاً"
}
},
"LIST": {
"TABLE_HEADER": [
"الاسم",
- "Created by",
- "Last updated by",
- "Visibility"
+ "تم إنشاؤها بواسطة",
+ "آخر تحديث بواسطة",
+ "الظهور"
],
- "404": "No macros found"
+ "404": "لم يتم العثور على الماكروس"
},
"DELETE": {
- "TOOLTIP": "Delete macro",
+ "TOOLTIP": "حذف الماكرو",
"CONFIRM": {
"MESSAGE": "هل أنت متأكد من الحذف ",
"YES": "نعم، احذف",
"NO": "لا"
},
"API": {
- "SUCCESS_MESSAGE": "Macro deleted successfully",
- "ERROR_MESSAGE": "There was an error deleting the macro. Please try again later"
+ "SUCCESS_MESSAGE": "تم حذف الماكرو بنجاح",
+ "ERROR_MESSAGE": "حدث خطأ أثناء حذف الماكرو. الرجاء المحاولة مرة أخرى في وقت لاحق"
}
},
"EDIT": {
- "TOOLTIP": "Edit macro",
+ "TOOLTIP": "تعديل الماكرو",
"API": {
- "SUCCESS_MESSAGE": "Macro updated successfully",
- "ERROR_MESSAGE": "Could not update Macro, Please try again later"
+ "SUCCESS_MESSAGE": "تم تحديث الماكرو بنجاح",
+ "ERROR_MESSAGE": "تعذر تحديث الماكرو ، الرجاء المحاولة مرة أخرى لاحقاً"
}
},
"EDITOR": {
- "START_FLOW": "Start Flow",
- "END_FLOW": "End Flow",
- "LOADING": "Fetching macro",
- "ADD_BTN_TOOLTIP": "Add new action",
- "DELETE_BTN_TOOLTIP": "Delete Action",
+ "START_FLOW": "بداية الإجرائات",
+ "END_FLOW": "نهاية الإجرائات",
+ "LOADING": "جاري جلب الماكروس",
+ "ADD_BTN_TOOLTIP": "إضافة إجراء جديد",
+ "DELETE_BTN_TOOLTIP": "حذف الإجراء",
"VISIBILITY": {
- "LABEL": "Macro Visibility",
+ "LABEL": "الرؤية الخاصة بالماكرو",
"GLOBAL": {
- "LABEL": "Public",
- "DESCRIPTION": "This macro is available publicly for all agents in this account."
+ "LABEL": "عامة",
+ "DESCRIPTION": "هذا الماكرو متاح بشكل عام لجميع الوكلاء في هذا الحساب."
},
"PERSONAL": {
- "LABEL": "Private",
- "DESCRIPTION": "This macro will be private to you and not be available to others."
+ "LABEL": "خاص",
+ "DESCRIPTION": "هذا الماكرو سيكون خاصا لك ولن يكون متاحا للآخرين."
}
}
},
"EXECUTE": {
- "BUTTON_TOOLTIP": "Execute",
- "PREVIEW": "Preview Macro",
- "EXECUTED_SUCCESSFULLY": "Macro executed successfully"
+ "BUTTON_TOOLTIP": "تنفيذ",
+ "PREVIEW": "معاينة الماكرو",
+ "EXECUTED_SUCCESSFULLY": "تم تنفيذ الماكرو بنجاح"
}
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ar/settings.json b/app/javascript/dashboard/i18n/locale/ar/settings.json
index 22b922c25..943e46e77 100644
--- a/app/javascript/dashboard/i18n/locale/ar/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ar/settings.json
@@ -59,18 +59,18 @@
"TITLE": "الإشعارات الصوتية",
"NOTE": "تمكين التنبيهات الصوتية في لوحة التحكم للرسائل والمحادثات الجديدة.",
"ALERT_TYPE": {
- "TITLE": "Alert events:",
+ "TITLE": "أحداث التنبيه:",
"NONE": "لا شيء",
"ASSIGNED": "المحادثات المسندة",
"ALL_CONVERSATIONS": "كل المحادثات"
},
"DEFAULT_TONE": {
- "TITLE": "Alert tone:"
+ "TITLE": "نغمة التنبيه:"
},
"CONDITIONS": {
- "TITLE": "Alert conditions:",
- "CONDITION_ONE": "Send audio alerts only if the browser window is not active",
- "CONDITION_TWO": "Send alerts every 30s until all the assigned conversations are read"
+ "TITLE": "شروط التنبيه:",
+ "CONDITION_ONE": "إرسال تنبيهات صوتية فقط إذا كانت نافذة المتصفح غير نشطة",
+ "CONDITION_TWO": "إرسال تنبيهات كل 30 ثانية حتى يتم قراءة جميع المحادثات المعينة"
}
},
"EMAIL_NOTIFICATIONS_SECTION": {
@@ -115,8 +115,8 @@
"مشغول",
"غير متصل"
],
- "SET_AVAILABILITY_SUCCESS": "Availability has been set successfully",
- "SET_AVAILABILITY_ERROR": "Couldn't set availability, please try again"
+ "SET_AVAILABILITY_SUCCESS": "تم تعيين التوافر بنجاح",
+ "SET_AVAILABILITY_ERROR": "تعذر تعيين التوافر، الرجاء المحاولة مرة أخرى"
},
"EMAIL": {
"LABEL": "عنوان البريد الإلكتروني الخاص بك",
@@ -147,7 +147,7 @@
"SELECTOR_SUBTITLE": "اختر حساباً من القائمة التالية",
"PROFILE_SETTINGS": "إعدادات الملف الشخصي",
"KEYBOARD_SHORTCUTS": "اختصارات لوحة المفاتيح",
- "SUPER_ADMIN_CONSOLE": "Super Admin Console",
+ "SUPER_ADMIN_CONSOLE": "وحدة تحكم المدير المتميز",
"LOGOUT": "تسجيل الخروج"
},
"APP_GLOBAL": {
@@ -173,7 +173,7 @@
"UPLOADING": "جاري الرفع..."
},
"LOCATION_BUBBLE": {
- "SEE_ON_MAP": "See on map"
+ "SEE_ON_MAP": "مشاهدة على الخريطة"
},
"FORM_BUBBLE": {
"SUBMIT": "إرسال"
@@ -197,7 +197,7 @@
"CONTACTS": "جهات الاتصال",
"HOME": "الرئيسية",
"AGENTS": "موظف الدعم",
- "AGENT_BOTS": "Bots",
+ "AGENT_BOTS": "البوتات",
"INBOXES": "قنوات التواصل",
"NOTIFICATIONS": "الإشعارات",
"CANNED_RESPONSES": "الردود السريعة",
@@ -208,7 +208,7 @@
"LABELS": "الوسوم",
"CUSTOM_ATTRIBUTES": "سمات مخصصة",
"AUTOMATION": "الأتمتة",
- "MACROS": "Macros",
+ "MACROS": "ماكروس",
"TEAMS": "الفرق",
"BILLING": "الفواتير",
"CUSTOM_VIEWS_FOLDER": "المجلدات",
@@ -241,8 +241,8 @@
"CATEGORY_EMPTY_MESSAGE": "لم يتم العثور على فئات"
},
"SET_AUTO_OFFLINE": {
- "TEXT": "Mark offline automatically",
- "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard."
+ "TEXT": "وضع علامة غير متصل تلقائيا",
+ "INFO_TEXT": "السماح للنظام بوضع علامة غير متصل أوتوماتيكياً عندما لا تستخدم التطبيق أو لوحة التحكم."
},
"DOCS": "قراءة المستندات"
},
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "عرض جميع الاختصارات",
"TITLE": {
"OPEN_CONVERSATION": "فتح المحادثة",
"RESOLVE_AND_NEXT": "حل وانتقل إلى التالي",
diff --git a/app/javascript/dashboard/i18n/locale/ar/signup.json b/app/javascript/dashboard/i18n/locale/ar/signup.json
index 9bb0503d2..7fa5e5c0a 100644
--- a/app/javascript/dashboard/i18n/locale/ar/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ar/signup.json
@@ -2,7 +2,7 @@
"REGISTER": {
"TRY_WOOT": "تسجيل حساب",
"TITLE": "تسجيل",
- "TESTIMONIAL_HEADER": "All it takes is one step to move forward",
+ "TESTIMONIAL_HEADER": "إن كل ما يلزم هو خطوة واحدة للمضي قدما",
"TESTIMONIAL_CONTENT": "You're one step away from engaging your customers, retaining them and finding new ones.",
"TERMS_ACCEPT": "من خلال التسجيل، فإنك توافق على شروط الخدمة و سياسة الخصوصية",
"COMPANY_NAME": {
diff --git a/app/javascript/dashboard/i18n/locale/bg/agentBots.json b/app/javascript/dashboard/i18n/locale/bg/agentBots.json
index ff642b2f0..cf05f9b37 100644
--- a/app/javascript/dashboard/i18n/locale/bg/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/bg/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Обновяване",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/bg/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/bg/attributesMgmt.json
index 4f2789d92..de9fb8b16 100644
--- a/app/javascript/dashboard/i18n/locale/bg/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/bg/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json
index b72ee3471..9963fea13 100644
--- a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website channel",
"DESC": "Create a channel for your website and start supporting your customers via our website widget.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/bg/integrations.json b/app/javascript/dashboard/i18n/locale/bg/integrations.json
index c8966f02e..5e9751a48 100644
--- a/app/javascript/dashboard/i18n/locale/bg/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/bg/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Изтрий",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/bg/settings.json b/app/javascript/dashboard/i18n/locale/bg/settings.json
index bd8134ccf..afebe44b1 100644
--- a/app/javascript/dashboard/i18n/locale/bg/settings.json
+++ b/app/javascript/dashboard/i18n/locale/bg/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/ca/agentBots.json b/app/javascript/dashboard/i18n/locale/ca/agentBots.json
index 0b9ac51bb..c910cae64 100644
--- a/app/javascript/dashboard/i18n/locale/ca/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ca/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Actualitza",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ca/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ca/attributesMgmt.json
index 310a84d3b..142f50c15 100644
--- a/app/javascript/dashboard/i18n/locale/ca/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ca/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json
index 6b7f1addf..a1efc37f4 100644
--- a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Canal Web",
"DESC": "Crea un canal per al vostre lloc web i comença a donar suport als vostres clients mitjançant el teu widget del lloc web.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/ca/integrations.json b/app/javascript/dashboard/i18n/locale/ca/integrations.json
index 4c0255b33..0f4a6baab 100644
--- a/app/javascript/dashboard/i18n/locale/ca/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ca/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Suprimeix",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ca/settings.json b/app/javascript/dashboard/i18n/locale/ca/settings.json
index 143bb3d3c..c3a6eb449 100644
--- a/app/javascript/dashboard/i18n/locale/ca/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ca/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/cs/agentBots.json b/app/javascript/dashboard/i18n/locale/cs/agentBots.json
index cea785b1f..4d1486268 100644
--- a/app/javascript/dashboard/i18n/locale/cs/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/cs/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Aktualizovat",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/cs/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/cs/attributesMgmt.json
index 22ce23b06..3cd8c1c8b 100644
--- a/app/javascript/dashboard/i18n/locale/cs/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/cs/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json
index 1894b2e8c..e28ae2405 100644
--- a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Kanál webové stránky",
"DESC": "Vytvořte si kanál pro vaše webové stránky a začněte podporovat své zákazníky prostřednictvím našeho widgetu.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/cs/integrations.json b/app/javascript/dashboard/i18n/locale/cs/integrations.json
index 9a2bd024a..2af657142 100644
--- a/app/javascript/dashboard/i18n/locale/cs/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/cs/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Vymazat",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/cs/settings.json b/app/javascript/dashboard/i18n/locale/cs/settings.json
index 191482e99..c158dbeea 100644
--- a/app/javascript/dashboard/i18n/locale/cs/settings.json
+++ b/app/javascript/dashboard/i18n/locale/cs/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/da/agentBots.json b/app/javascript/dashboard/i18n/locale/da/agentBots.json
index 93e3329f2..aa977dc8a 100644
--- a/app/javascript/dashboard/i18n/locale/da/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/da/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Opdater",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Vælg bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/da/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/da/attributesMgmt.json
index b6eae9c9e..2bfb67b9f 100644
--- a/app/javascript/dashboard/i18n/locale/da/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/da/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Brugerdefineret attribut blev tilføjet",
- "ERROR_MESSAGE": "Kunne ikke oprette en brugerdefineret attribut. Prøv igen senere"
+ "SUCCESS_MESSAGE": "Brugerdefineret attribut blev tilføjet!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/da/helpCenter.json b/app/javascript/dashboard/i18n/locale/da/helpCenter.json
index a3539dbc7..6313be2b0 100644
--- a/app/javascript/dashboard/i18n/locale/da/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/da/helpCenter.json
@@ -217,14 +217,14 @@
"DOMAIN": {
"LABEL": "Tilpasset Domæne",
"PLACEHOLDER": "Portal brugerdefineret domæne",
- "HELP_TEXT": "Add only If you want to use a custom domain for your portals. Eg: https://example.com",
+ "HELP_TEXT": "Tilføj kun hvis du vil bruge et brugerdefineret domæne, til dine portaler. Eksempelvis https://example.com",
"ERROR": "Indtast et gyldigt domæne URL"
},
"HOME_PAGE_LINK": {
"LABEL": "Link Til Hjemmeside",
"PLACEHOLDER": "Link til portalens hjemmeside",
"HELP_TEXT": "The link used to return from the portal to the home page. Eg: https://example.com",
- "ERROR": "Enter a valid home page URL"
+ "ERROR": "Indtast en gyldig URL til startsiden"
},
"THEME_COLOR": {
"LABEL": "Portal tema farve",
diff --git a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json
index 4299b1083..97d0a12a2 100644
--- a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Opret samtaler fra nævnte Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Hjemmesidekanal",
"DESC": "Opret en kanal til din hjemmeside og begynde at supporte dine kunder via vores hjemmeside widget.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Aktiver SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "Smtp",
"SUBTITLE": "Indstil dine IMAP-oplysninger",
diff --git a/app/javascript/dashboard/i18n/locale/da/integrations.json b/app/javascript/dashboard/i18n/locale/da/integrations.json
index d9ecbfbcd..bdc320172 100644
--- a/app/javascript/dashboard/i18n/locale/da/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/da/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot vil nu synkronisere alle indgående samtaler ind i kundesamtaler kanalen i din slack arbejdsplads.
Svar på en samtaletråd i kunde-samtaler slack kanal vil skabe et svar tilbage til kunden gennem chatwoot.
Start svarene med note: for at oprette private noter i stedet for svar.
Hvis replikatoren på slack har en agentprofil i chatwoot under samme e-mail, vil svarene blive tilknyttet i overensstemmelse hermed.
Når replikatoren ikke har en tilknyttet agentprofil, vil svarene blive fremsat fra bot-profilen.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Slet",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/da/settings.json b/app/javascript/dashboard/i18n/locale/da/settings.json
index 6f422c86d..607f58836 100644
--- a/app/javascript/dashboard/i18n/locale/da/settings.json
+++ b/app/javascript/dashboard/i18n/locale/da/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Åbn samtale",
"RESOLVE_AND_NEXT": "Løs og flyt til næste",
diff --git a/app/javascript/dashboard/i18n/locale/de/agentBots.json b/app/javascript/dashboard/i18n/locale/de/agentBots.json
index 1cf6daa87..3a28cfce1 100644
--- a/app/javascript/dashboard/i18n/locale/de/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/de/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Agenten-Bot auswählen",
"DESC": "Sie können einen Agenten-Bot aus der Liste in diesen Posteingang setzen. Der Bot kann die Unterhaltung anfangs bearbeiten und bei Bedarf an einen Agenten übertragen.",
"SUBMIT": "Aktualisieren",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Agenten-Bot erfolgreich aktualisiert",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Konnte den Agenten-Bot nicht aktualisieren, bitte versuchen Sie es später erneut",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Bot auswählen"
},
"ADD": {
@@ -37,29 +40,29 @@
}
},
"LIST": {
- "404": "No Bots found, you can create a bot by clicking the 'Configure new bot' Button ↗",
- "LOADING": "Fetching Bots...",
- "TYPE": "Bot Type"
+ "404": "Keine Bots gefunden, Sie können einen Bot erstellen, indem Sie auf den 'Neuen Bot konfigurieren' Button klicken ↗",
+ "LOADING": "Bots werden geladen...",
+ "TYPE": "Bot-Typ"
},
"DELETE": {
"BUTTON_TEXT": "Löschen",
- "TITLE": "Delete Bot",
+ "TITLE": "Bot löschen",
"SUBMIT": "Löschen",
"CANCEL_BUTTON_TEXT": "Stornieren",
- "DESCRIPTION": "Are you sure you want to delete this bot? This action is irreversible",
+ "DESCRIPTION": "Sind Sie sicher, dass Sie diesen Bot löschen wollen? Diese Aktion kann nicht rückgängig gemacht werden",
"API": {
- "SUCCESS_MESSAGE": "Bot deleted successfully",
+ "SUCCESS_MESSAGE": "Bot erfolgreich gelöscht",
"ERROR_MESSAGE": "Could not able to delete bot, Please try again later"
}
},
"EDIT": {
"BUTTON_TEXT": "Bearbeiten",
- "LOADING": "Fetching Bots...",
- "TITLE": "Edit Bot",
+ "LOADING": "Bots werden geladen...",
+ "TITLE": "Bot bearbeiten",
"CANCEL_BUTTON_TEXT": "Stornieren",
"API": {
- "SUCCESS_MESSAGE": "Bot updated successfully",
- "ERROR_MESSAGE": "Could not update bot, Please try again later"
+ "SUCCESS_MESSAGE": "Bot erfolgreich aktualisiert",
+ "ERROR_MESSAGE": "Bot konnte nicht aktualisiert werden, bitte versuchen Sie es später erneut"
}
},
"TYPES": {
diff --git a/app/javascript/dashboard/i18n/locale/de/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/de/attributesMgmt.json
index d16090052..cbe7475ed 100644
--- a/app/javascript/dashboard/i18n/locale/de/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/de/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Benutzerdefiniertes Attribut erfolgreich hinzugefügt",
- "ERROR_MESSAGE": "Konnte kein benutzerdefiniertes Attribut erstellen. Bitte versuchen Sie es später erneut"
+ "SUCCESS_MESSAGE": "Benutzerdefiniertes Attribut erfolgreich hinzugefügt!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/de/generalSettings.json b/app/javascript/dashboard/i18n/locale/de/generalSettings.json
index 36470154d..3a9b4f662 100644
--- a/app/javascript/dashboard/i18n/locale/de/generalSettings.json
+++ b/app/javascript/dashboard/i18n/locale/de/generalSettings.json
@@ -23,7 +23,7 @@
"ERROR": "Bitte geben Sie einen gültigen Kontonamen ein"
},
"LANGUAGE": {
- "LABEL": "Site language",
+ "LABEL": "Sprache",
"PLACEHOLDER": "Ihr Kontoname",
"ERROR": ""
},
@@ -55,7 +55,7 @@
"ENTER_TO_SELECT": "Drücken Sie zur Auswahl die Eingabetaste",
"ENTER_TO_REMOVE": "Drücken Sie zum Entfernen die Eingabetaste",
"SELECT_ONE": "Eines wählen",
- "SELECT": "Select"
+ "SELECT": "Auswählen"
}
},
"NOTIFICATIONS_PAGE": {
@@ -139,6 +139,6 @@
}
},
"DASHBOARD_APPS": {
- "LOADING_MESSAGE": "Loading Dashboard App..."
+ "LOADING_MESSAGE": "Dashboard-App wird geladen..."
}
}
diff --git a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json
index 9e5da01dc..24abcfee9 100644
--- a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Konversationen aus erwähnten Tweets erstellen"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website-Kanal",
"DESC": "Erstellen Sie einen Kanal für Ihre Website und unterstützen Sie Ihre Kunden über unser Website-Widget.",
@@ -134,7 +138,7 @@
"PHONE_NUMBER": {
"LABEL": "Telefonnummer",
"PLACEHOLDER": "Bitte geben Sie die Telefonnummer ein, von der die Nachricht gesendet wird.",
- "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces."
+ "ERROR": "Bitte geben Sie eine gültige Telefonnummer an, die mit einem `+` Zeichen beginnt und keine Leerzeichen enthält."
},
"API_CALLBACK": {
"TITLE": "Callback URL",
@@ -185,7 +189,7 @@
"PHONE_NUMBER": {
"LABEL": "Telefonnummer",
"PLACEHOLDER": "Bitte geben Sie die Telefonnummer ein, von der die Nachricht gesendet wird.",
- "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces."
+ "ERROR": "Bitte geben Sie eine gültige Telefonnummer an, die mit einem `+` Zeichen beginnt und keine Leerzeichen enthält."
},
"SUBMIT_BUTTON": "Bitte geben Sie Ihre Bandbreitenanwendungs-ID ein",
"API": {
@@ -214,7 +218,7 @@
"PHONE_NUMBER": {
"LABEL": "Telefonnummer",
"PLACEHOLDER": "Bitte geben Sie die Telefonnummer ein, von der die Nachricht gesendet wird.",
- "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces."
+ "ERROR": "Bitte geben Sie eine gültige Telefonnummer an, die mit einem `+` Zeichen beginnt und keine Leerzeichen enthält."
},
"PHONE_NUMBER_ID": {
"LABEL": "Telefonnummer-ID",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "SSL aktivieren"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Setzen Sie Ihre SMTP-Details",
diff --git a/app/javascript/dashboard/i18n/locale/de/integrations.json b/app/javascript/dashboard/i18n/locale/de/integrations.json
index 767598ef0..776cef26c 100644
--- a/app/javascript/dashboard/i18n/locale/de/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/de/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot wird nun alle eingehenden Konversationen in den Kundengespräche Channel innerhalb Ihres Slack Arbeitsplatzes synchronisieren.
Wenn Sie in Kunden-Konversationen antworten, wird der Slack Kanal eine Antwort an den Kunden durch Chat erzeugen.
Starten Sie die Antworten mit Notiz: um private Notizen anstatt Antworten zu erstellen.
Wenn der Replier auf Slack ein Agentenprofil im Chatwoot unter der gleichen E-Mail hat, werden die Antworten entsprechend assoziiert.
Wenn der Replier kein Agentenprofil hat, werden die Antworten aus dem Bot-Profil getätigt.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Löschen",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/de/settings.json b/app/javascript/dashboard/i18n/locale/de/settings.json
index cb9f27d2e..de73bca8e 100644
--- a/app/javascript/dashboard/i18n/locale/de/settings.json
+++ b/app/javascript/dashboard/i18n/locale/de/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Unterhaltung öffnen",
"RESOLVE_AND_NEXT": "Lösen und zum Nächsten gehen",
diff --git a/app/javascript/dashboard/i18n/locale/el/agentBots.json b/app/javascript/dashboard/i18n/locale/el/agentBots.json
index dd65e9c8b..1c882ab64 100644
--- a/app/javascript/dashboard/i18n/locale/el/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/el/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Επιλέξτε ενός Agent Bot",
"DESC": "Μπορείτε να ορίσετε ένα agent bot από τη λίστα σε αυτά τα εισερχόμενα. Το bot μπορεί αρχικά να χειριστεί τη συνομιλία και να την μεταφέρει σε έναν πράκτορα όταν χρειάζεται.",
"SUBMIT": "Ενημέρωση",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Επιτυχής ενημέρωση του agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Δεν ήταν δυνατή η ενημέρωση του agent bot, δοκιμάστε ξανά αργότερα",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Επιλογή Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/el/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/el/attributesMgmt.json
index 78fdf1d3b..e3850ed07 100644
--- a/app/javascript/dashboard/i18n/locale/el/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/el/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Η ιδιότητα προστέθηκε με επιτυχία",
- "ERROR_MESSAGE": "Δεν ήταν δυνατή η δημιουργία Ιδιότητας, Παρακαλώ δοκιμάστε ξανά αργότερα"
+ "SUCCESS_MESSAGE": "Η ιδιότητα προστέθηκε με επιτυχία!",
+ "ERROR_MESSAGE": "Δεν ήταν δυνατή η δημιουργία Ιδιότητας, Παρακαλώ δοκιμάστε ξανά αργότερα."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json
index 86e490cfd..fe112b393 100644
--- a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Δημιουργία συνομιλιών από τα αναφερόμενα Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Κανάλι Ιστοσελίδας",
"DESC": "Δημιουργήστε ένα κανάλι Ιστοσελίδα για να υποστηρίξετε τους πελάτες σας μέσω του πρόσθετου επικοινωνίας (widget) που θα εγκαταστήσετε στην ιστοσελίδα σας.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Ενεργοποίηση SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Ορισμός λεπτομερειών SMTP",
diff --git a/app/javascript/dashboard/i18n/locale/el/integrations.json b/app/javascript/dashboard/i18n/locale/el/integrations.json
index b4a9e2c3f..ded40c5c9 100644
--- a/app/javascript/dashboard/i18n/locale/el/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/el/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Το Chatwoot θα συγχρονίσει τώρα όλες τις εισερχόμενες συνομιλίες στο κανάλι πελατών-συνομιλιών μέσα στο slack χώρο εργασίας σας.
Απάντηση σε μια συνομιλία από συνομιλίες πελατών το κανάλι slack θα δημιουργήσει μια απάντηση για στον πελάτη μέσω chatwoot.
Ξεκινήστε τις απαντήσεις με το note: για να δημιουργήσετε ιδιωτικές σημειώσεις αντί για απαντήσεις.
Αν ο χρήστης στο slack έχει προφίλ πράκτορα στο chatwoot με το ίδιο email, οι απαντήσεις θα συσχετιστούν ανάλογα.
Εφόσον δεν έχει προφίλ συνδεδεμένου πράκτορα, οι απαντήσεις θα γίνουν από το προφίλ bot.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Κάντε κλικ εδώ για να συμμετάσχετε",
+ "LEAVE_THE_ROOM": "Αποχώρηση",
+ "START_VIDEO_CALL_HELP_TEXT": "Ξεκινήστε μια νέα βιντεοκλήση με τον πελάτη",
+ "JOIN_ERROR": "Παρουσιάστηκε σφάλμα κατά τη σύνδεση της κλήσης, παρακαλώ προσπαθήστε ξανά",
+ "CREATE_ERROR": "Παρουσιάστηκε σφάλμα κατά τη δημιουργία ενός συνδέσμου συνάντησης, παρακαλώ προσπαθήστε ξανά"
+ },
"DELETE": {
"BUTTON_TEXT": "Διαγραφή",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/el/settings.json b/app/javascript/dashboard/i18n/locale/el/settings.json
index 50fce2f22..505ed8e03 100644
--- a/app/javascript/dashboard/i18n/locale/el/settings.json
+++ b/app/javascript/dashboard/i18n/locale/el/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "Εμφάνιση όλων των συντομεύσεων",
"TITLE": {
"OPEN_CONVERSATION": "Άνοιγμα συνομιλίας",
"RESOLVE_AND_NEXT": "Επίλυση και μετακίνηση στην επόμενη",
diff --git a/app/javascript/dashboard/i18n/locale/en/agentBots.json b/app/javascript/dashboard/i18n/locale/en/agentBots.json
index 67ee3ef6f..5403bb18c 100644
--- a/app/javascript/dashboard/i18n/locale/en/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/en/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Update",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/en/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/en/attributesMgmt.json
index 77c81edd3..7cf58059e 100644
--- a/app/javascript/dashboard/i18n/locale/en/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/en/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json
index 58f4e0c14..1ac74ee73 100644
--- a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json
@@ -214,7 +214,7 @@
"PHONE_NUMBER": {
"LABEL": "Phone number",
"PLACEHOLDER": "Please enter the phone number from which message will be sent.",
- "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces."
+ "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces."
},
"PHONE_NUMBER_ID": {
"LABEL": "Phone number ID",
@@ -344,6 +344,17 @@
"FINISH": {
"TITLE": "Nailed It!",
"DESC": "You have successfully finished integrating your Facebook Page with Chatwoot. Next time a customer messages your Page, the conversation will automatically appear on your inbox. We are also providing you with a widget script that you can easily add to your website. Once this is live on your website, customers can message you right from your website without the help of any external tool and the conversation will appear right here, on Chatwoot. Cool, huh? Well, we sure try to be :)"
+ },
+ "EMAIL_PROVIDER": {
+ "TITLE": "Select your email provider",
+ "DESCRIPTION": "Select an email provider from the list below. If you don't see your email provider in the list, you can select the other provider option and provide the IMAP and SMTP Credentials."
+ },
+ "MICROSOFT": {
+ "TITLE": "Microsoft Email",
+ "DESCRIPTION": "Click on the Sign in with Microsoft button to get started. You will redirected to the email sign in page. Once you accept the requested permissions, you would be redirected back to the inbox creation step.",
+ "EMAIL_PLACEHOLDER": "Enter email address",
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
}
},
"DETAILS": {
@@ -548,6 +559,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
@@ -666,6 +681,10 @@
},
"BRANDING_TEXT": "Powered by Chatwoot",
"SCRIPT_SETTINGS": "\n window.chatwootSettings = {options};"
+ },
+ "EMAIL_PROVIDERS": {
+ "MICROSOFT": "Microsoft",
+ "OTHER_PROVIDERS": "Other Providers"
}
}
}
diff --git a/app/javascript/dashboard/i18n/locale/en/integrations.json b/app/javascript/dashboard/i18n/locale/en/integrations.json
index 6c6cecde9..5c7395424 100644
--- a/app/javascript/dashboard/i18n/locale/en/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/en/integrations.json
@@ -35,10 +35,7 @@
"LIST": {
"404": "There are no webhooks configured for this account.",
"TITLE": "Manage webhooks",
- "TABLE_HEADER": [
- "Webhook endpoint",
- "Actions"
- ]
+ "TABLE_HEADER": ["Webhook endpoint", "Actions"]
},
"EDIT": {
"BUTTON_TEXT": "Edit",
@@ -76,6 +73,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Delete",
"API": {
@@ -93,10 +97,7 @@
"LIST": {
"404": "There are no dashboard apps configured on this account yet",
"LOADING": "Fetching dashboard apps...",
- "TABLE_HEADER": [
- "Name",
- "Endpoint"
- ],
+ "TABLE_HEADER": ["Name", "Endpoint"],
"EDIT_TOOLTIP": "Edit app",
"DELETE_TOOLTIP": "Delete app"
},
diff --git a/app/javascript/dashboard/i18n/locale/en/settings.json b/app/javascript/dashboard/i18n/locale/en/settings.json
index 132594a0c..492e8bcef 100644
--- a/app/javascript/dashboard/i18n/locale/en/settings.json
+++ b/app/javascript/dashboard/i18n/locale/en/settings.json
@@ -158,7 +158,7 @@
"COMPONENTS": {
"CODE": {
"BUTTON_TEXT": "Copy",
- "COPY_SUCCESSFUL": "Code copied to clipboard successfully"
+ "COPY_SUCCESSFUL": "Copied to clipboard"
},
"SHOW_MORE_BLOCK": {
"SHOW_MORE": "Show More",
diff --git a/app/javascript/dashboard/i18n/locale/es/agentBots.json b/app/javascript/dashboard/i18n/locale/es/agentBots.json
index a402ed5b5..6228d41c9 100644
--- a/app/javascript/dashboard/i18n/locale/es/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/es/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Seleccione un bot de agente",
"DESC": "Puedes establecer un bot de agente desde la lista a esta bandeja de entrada. El bot puede inicialmente manejar la conversación y transferirla a un agente cuando sea necesario.",
"SUBMIT": "Actualizar",
+ "DISCONNECT": "Desconectar Bot",
"SUCCESS_MESSAGE": "El bot del agente se ha actualizado con éxito",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Desconectado correctamente el bot agente",
"ERROR_MESSAGE": "No se pudo actualizar el bot de agente, por favor inténtalo de nuevo más tarde",
+ "DISCONNECTED_ERROR_MESSAGE": "No se pudo desconectar el bot de agente, por favor inténtalo de nuevo más tarde",
"SELECT_PLACEHOLDER": "Seleccionar bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/es/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/es/attributesMgmt.json
index 3875f6241..1a8723fd0 100644
--- a/app/javascript/dashboard/i18n/locale/es/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/es/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Atributo personalizado añadido correctamente",
- "ERROR_MESSAGE": "No se pudo crear un atributo personalizado, por favor inténtalo de nuevo"
+ "SUCCESS_MESSAGE": "Atributo personalizado añadido correctamente!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json
index 517105e66..c23445bf7 100644
--- a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Crear conversaciones de los Tweets mencionados"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Canal del sitio web",
"DESC": "Cree un canal para su sitio web y comience a apoyar a sus clientes a través de nuestro widget de sitio web.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Activar SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Configura tus detalles de SMTP",
diff --git a/app/javascript/dashboard/i18n/locale/es/integrations.json b/app/javascript/dashboard/i18n/locale/es/integrations.json
index 8d5eed664..01d9ecf5b 100644
--- a/app/javascript/dashboard/i18n/locale/es/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/es/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot ahora sincronizará todas las conversaciones entrantes en el canal de conversaciones del cliente dentro de tu lugar de trabajo slack.
Respondiendo a un tema de conversación en conversaciones de clientes canal de slack creará una respuesta al cliente a través de chatwoot.
Inicie las respuestas con nota: para crear notas privadas en lugar de respuestas.
Si el respondente de slack tiene un perfil de agente en el chatwoot bajo el mismo correo electrónico, las respuestas se asociarán en consecuencia.
Cuando el replicador no tiene un perfil de agente asociado, las respuestas se harán con el perfil del bot.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Eliminar",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/es/settings.json b/app/javascript/dashboard/i18n/locale/es/settings.json
index b74187439..b16df9170 100644
--- a/app/javascript/dashboard/i18n/locale/es/settings.json
+++ b/app/javascript/dashboard/i18n/locale/es/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Abrir conversación",
"RESOLVE_AND_NEXT": "Resolver y pasar al siguiente",
diff --git a/app/javascript/dashboard/i18n/locale/fa/agentBots.json b/app/javascript/dashboard/i18n/locale/fa/agentBots.json
index 5ef1dc056..6e6d0bc15 100644
--- a/app/javascript/dashboard/i18n/locale/fa/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/fa/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "انتخاب یک ربات عامل",
"DESC": "میتوانید یک ربات عامل را از فهرست در این صندوق ورودی تنظیم کنید. ربات در ابتدا میتواند گفتگو را مدیریت کند و در صورت نیاز آن را به یک نماینده منتقل کند.",
"SUBMIT": "اعمال شود",
+ "DISCONNECT": "قطع ربات",
"SUCCESS_MESSAGE": "ربات عامل با موفقیت بهروز شد",
+ "DISCONNECTED_SUCCESS_MESSAGE": "ربات عامل با موفقیت قطع شد",
"ERROR_MESSAGE": "ربات عامل بهروزرسانی نشد، لطفا بعدا دوباره امتحان کنید",
+ "DISCONNECTED_ERROR_MESSAGE": "ربات عامل قطع نشد، لطفا بعدا دوباره امتحان کنید",
"SELECT_PLACEHOLDER": "انتخاب ربات"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/fa/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/fa/attributesMgmt.json
index 3f45ac578..8783a53fe 100644
--- a/app/javascript/dashboard/i18n/locale/fa/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/fa/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "ویژگی سفارشی با موفقیت اضافه شد",
- "ERROR_MESSAGE": "نمیتوان ویژگی سفارشی ایجاد کرد، لطفا بعداً دوباره امتحان کنید"
+ "SUCCESS_MESSAGE": "ویژگی سفارشی با موفقیت اضافه شد!",
+ "ERROR_MESSAGE": "نمیتوان یک ویژگی سفارشی ایجاد کرد. لطفا بعدا دوباره امتحان کنید."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json
index 57cbe76c5..22a23e327 100644
--- a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "ایجاد گفتگوهایی که از توییتهای اشاره شده هستند"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "کانال وبسایت",
"DESC": "یک کانال به وب سایت خود بسازید تا مشتریان بتوانند از طریق ویجت سایت با شما گفتگو کنند.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "فعال کردن SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "جزئیات SMTP خود را تنظیم کنید",
diff --git a/app/javascript/dashboard/i18n/locale/fa/integrations.json b/app/javascript/dashboard/i18n/locale/fa/integrations.json
index 12f72eb4f..d4b38c83e 100644
--- a/app/javascript/dashboard/i18n/locale/fa/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/fa/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
ما اکنون تمام مکالمات ورودی را در کانال گفتگوهای مشتری داخل محل کار شما همگام سازی می کنیم.
پاسخ به یک رشته مکالمه در کانال مکالمه مشتری- مکالمات i> از طریق برنامه پاسخی به مشتری ایجاد می کند. p>
پاسخ ها را با شروع کنید توجه: برای ایجاد یادداشت های خصوصی به جای پاسخ ها.
اگر پاسخ دهنده در slack نمایه نماینده ای در برنامه تحت همان ایمیل داشته باشد ، پاسخ ها به همین ترتیب مرتبط می شوند. p>
وقتی ارسال کننده نمایه نماینده مرتبطی ندارد ، پاسخها از نمایه ربات انجام می شود.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "برای عضویت اینجا را کلیک کنید",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "حذف",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/fa/settings.json b/app/javascript/dashboard/i18n/locale/fa/settings.json
index a97530b3c..aeb2c10e4 100644
--- a/app/javascript/dashboard/i18n/locale/fa/settings.json
+++ b/app/javascript/dashboard/i18n/locale/fa/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "مشاهده همه کلیدهای میانبر",
"TITLE": {
"OPEN_CONVERSATION": "باز کردن گفتگو",
"RESOLVE_AND_NEXT": "حل کنید و به مرحله بعدی بروید",
diff --git a/app/javascript/dashboard/i18n/locale/fi/agentBots.json b/app/javascript/dashboard/i18n/locale/fi/agentBots.json
index 99a95e359..e5c60f26e 100644
--- a/app/javascript/dashboard/i18n/locale/fi/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/fi/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Päivitä",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/fi/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/fi/attributesMgmt.json
index 7f1592e2b..6e6ef580c 100644
--- a/app/javascript/dashboard/i18n/locale/fi/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/fi/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json
index d99e8f4bc..ccc3ed79c 100644
--- a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Sivuston chat",
"DESC": "Luo kanava sivustollesi ja ala tarjoamaan tukea asiakkaillesi chat-widgetin kautta.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/fi/integrations.json b/app/javascript/dashboard/i18n/locale/fi/integrations.json
index f95b0ae4f..a2d8b2ca6 100644
--- a/app/javascript/dashboard/i18n/locale/fi/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/fi/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Poista",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/fi/settings.json b/app/javascript/dashboard/i18n/locale/fi/settings.json
index 1de7497e3..a2325cc69 100644
--- a/app/javascript/dashboard/i18n/locale/fi/settings.json
+++ b/app/javascript/dashboard/i18n/locale/fi/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/fr/agentBots.json b/app/javascript/dashboard/i18n/locale/fr/agentBots.json
index 6064bb2cc..0e2ec07d6 100644
--- a/app/javascript/dashboard/i18n/locale/fr/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/fr/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Mettre à jour",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/fr/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/fr/attributesMgmt.json
index 529a7e2ce..472bc6a22 100644
--- a/app/javascript/dashboard/i18n/locale/fr/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/fr/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json
index d2fbfa74c..a2f58606f 100644
--- a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Créer des conversations à partir de Tweets mentionnés"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Canal site Web",
"DESC": "Créez un canal pour votre site Web et commencez à assister vos clients à l'aide de notre widget de site Web.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Activer SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Définissez vos détails SMTP",
diff --git a/app/javascript/dashboard/i18n/locale/fr/integrations.json b/app/javascript/dashboard/i18n/locale/fr/integrations.json
index 97a21aa66..e37ff95fb 100644
--- a/app/javascript/dashboard/i18n/locale/fr/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/fr/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot va maintenant synchroniser toutes les conversations entrantes dans le canal customer-conversations à l'intérieur de Workspace Sack.
Répondre à un fil de conversation dans le canal Slack customer-conversations créera une réponse au client via chatwoot.
Commencez les réponses avec note : pour créer des notes privées au lieu de réponses.
Si le répondant sur Slack a un profil d'agent dans le chat avec la même adresse email, les réponses seront associées en conséquence.
Lorsque le répondant n'a pas de profil d'agent associé, les réponses seront faites avec le profil du bot.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Supprimer",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/fr/settings.json b/app/javascript/dashboard/i18n/locale/fr/settings.json
index cbcac7537..de80be288 100644
--- a/app/javascript/dashboard/i18n/locale/fr/settings.json
+++ b/app/javascript/dashboard/i18n/locale/fr/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Ouvrir la conversation",
"RESOLVE_AND_NEXT": "Résoudre et passer à la suivante",
diff --git a/app/javascript/dashboard/i18n/locale/he/agentBots.json b/app/javascript/dashboard/i18n/locale/he/agentBots.json
index 0bc6670b3..7299a839e 100644
--- a/app/javascript/dashboard/i18n/locale/he/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/he/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "עדכן",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/he/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/he/attributesMgmt.json
index a60c05396..378001afb 100644
--- a/app/javascript/dashboard/i18n/locale/he/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/he/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json
index 50a2322f5..2bd4bcd4c 100644
--- a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "ערוץ האתר",
"DESC": "צור ערוץ לאתר שלך והתחל לתמוך בלקוחות שלך באמצעות ווידג'ט האתר שלנו.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/he/integrations.json b/app/javascript/dashboard/i18n/locale/he/integrations.json
index c8a395c86..226de4ce8 100644
--- a/app/javascript/dashboard/i18n/locale/he/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/he/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot תסנכרן כעת את כל השיחות הנכנסות לערוץ שיחות-לקוח בתוך מקום העבודה הרפוי שלך.
משיב ל- שרשור שיחה בשיחות לקוח ערוץ רפוי ייצור תגובה חזרה ללקוח באמצעות chatwoot.
התחל את התשובות עם הערה: כדי ליצור הערות פרטיות במקום תשובות.
אם למשיב ב-slack יש פרופיל סוכן ב-chatwoot תחת אותו דוא\"ל, התשובות ישויכו בהתאם. p>
כאשר למשיב אין פרופיל סוכן משויך, התשובות ייעשו מפרופיל הבוט.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "מחק",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/he/settings.json b/app/javascript/dashboard/i18n/locale/he/settings.json
index 762f1ae2c..c6220d9c6 100644
--- a/app/javascript/dashboard/i18n/locale/he/settings.json
+++ b/app/javascript/dashboard/i18n/locale/he/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/hi/agentBots.json b/app/javascript/dashboard/i18n/locale/hi/agentBots.json
index 67ee3ef6f..5403bb18c 100644
--- a/app/javascript/dashboard/i18n/locale/hi/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/hi/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Update",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/hi/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/hi/attributesMgmt.json
index ff4904c34..2a9ea7de3 100644
--- a/app/javascript/dashboard/i18n/locale/hi/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/hi/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json
index 4f332b6d4..5bc4b7a67 100644
--- a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website channel",
"DESC": "Create a channel for your website and start supporting your customers via our website widget.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/hi/integrations.json b/app/javascript/dashboard/i18n/locale/hi/integrations.json
index 6c6cecde9..833b72ed4 100644
--- a/app/javascript/dashboard/i18n/locale/hi/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/hi/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Delete",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/hi/settings.json b/app/javascript/dashboard/i18n/locale/hi/settings.json
index a0de7f856..2f5f8b771 100644
--- a/app/javascript/dashboard/i18n/locale/hi/settings.json
+++ b/app/javascript/dashboard/i18n/locale/hi/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/hu/agentBots.json b/app/javascript/dashboard/i18n/locale/hu/agentBots.json
index a0166194a..ce6ed18c7 100644
--- a/app/javascript/dashboard/i18n/locale/hu/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/hu/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Frissítés",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/hu/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/hu/attributesMgmt.json
index 0d4870c74..e7ab3ef87 100644
--- a/app/javascript/dashboard/i18n/locale/hu/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/hu/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json
index 526610d50..070881c36 100644
--- a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website csatorna",
"DESC": "Hozz létre egy csatornát a websiteodnak és kezdd el az ügyfeleid támogatását a website widgeten keresztül.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/hu/integrations.json b/app/javascript/dashboard/i18n/locale/hu/integrations.json
index e7fa6bffb..e126dcbbb 100644
--- a/app/javascript/dashboard/i18n/locale/hu/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/hu/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Törlés",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/hu/settings.json b/app/javascript/dashboard/i18n/locale/hu/settings.json
index 4ab267115..9c151bff0 100644
--- a/app/javascript/dashboard/i18n/locale/hu/settings.json
+++ b/app/javascript/dashboard/i18n/locale/hu/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/id/agentBots.json b/app/javascript/dashboard/i18n/locale/id/agentBots.json
index f39e1a89f..f44a8b1f7 100644
--- a/app/javascript/dashboard/i18n/locale/id/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/id/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Perbarui",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/id/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/id/attributesMgmt.json
index 066ccba79..963b5f9d2 100644
--- a/app/javascript/dashboard/i18n/locale/id/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/id/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json
index 5188177d6..2c4ab1ba0 100644
--- a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Channel Website",
"DESC": "Buat saluran untuk situs web Anda dan mulai dukung pelanggan Anda melalui widget di website.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/id/integrations.json b/app/javascript/dashboard/i18n/locale/id/integrations.json
index e755b4ab5..b56b18cde 100644
--- a/app/javascript/dashboard/i18n/locale/id/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/id/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Hapus",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/id/settings.json b/app/javascript/dashboard/i18n/locale/id/settings.json
index e29101d63..f811881f4 100644
--- a/app/javascript/dashboard/i18n/locale/id/settings.json
+++ b/app/javascript/dashboard/i18n/locale/id/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Buka percakapan",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/is/agentBots.json b/app/javascript/dashboard/i18n/locale/is/agentBots.json
index aba78be01..7392706a5 100644
--- a/app/javascript/dashboard/i18n/locale/is/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/is/agentBots.json
@@ -23,9 +23,12 @@
"BOT_CONFIGURATION": {
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
- "SUBMIT": "Update",
+ "SUBMIT": "Uppfæra",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/is/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/is/attributesMgmt.json
index 472316ed8..5a7140287 100644
--- a/app/javascript/dashboard/i18n/locale/is/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/is/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Gat ekki búið til sérsniðna eiginleika, vinsamlegast reyndu aftur síðar"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
@@ -62,7 +62,7 @@
},
"EDIT": {
"TITLE": "Edit Custom Attribute",
- "UPDATE_BUTTON_TEXT": "Update",
+ "UPDATE_BUTTON_TEXT": "Uppfæra",
"TYPE": {
"LIST": {
"LABEL": "List Values",
diff --git a/app/javascript/dashboard/i18n/locale/is/automation.json b/app/javascript/dashboard/i18n/locale/is/automation.json
index 9676fd033..49815e07c 100644
--- a/app/javascript/dashboard/i18n/locale/is/automation.json
+++ b/app/javascript/dashboard/i18n/locale/is/automation.json
@@ -64,7 +64,7 @@
},
"EDIT": {
"TITLE": "Edit Automation Rule",
- "SUBMIT": "Update",
+ "SUBMIT": "Uppfæra",
"CANCEL_BUTTON_TEXT": "Hætta við",
"API": {
"SUCCESS_MESSAGE": "Automation rule updated successfully",
@@ -104,8 +104,8 @@
"DEACTIVATION_SUCCESFUL": "Automation Rule Deactivated Successfully",
"ACTIVATION_ERROR": "Gat ekki virkjað sjálfvirkni, vinsamlegast reyndu aftur síðar",
"DEACTIVATION_ERROR": "Gat ekki slökkt á sjálfvirkni, vinsamlegast reyndu aftur síðar",
- "CONFIRMATION_LABEL": "Yes",
- "CANCEL_LABEL": "No"
+ "CONFIRMATION_LABEL": "Já",
+ "CANCEL_LABEL": "Nei"
},
"ATTACHMENT": {
"UPLOAD_ERROR": "Gat ekki hlaðið upp viðhengi, vinsamlegast reyndu aftur",
diff --git a/app/javascript/dashboard/i18n/locale/is/bulkActions.json b/app/javascript/dashboard/i18n/locale/is/bulkActions.json
index e72234506..ef77739c8 100644
--- a/app/javascript/dashboard/i18n/locale/is/bulkActions.json
+++ b/app/javascript/dashboard/i18n/locale/is/bulkActions.json
@@ -6,7 +6,7 @@
"UNASSIGN_CONFIRMATION_LABEL": "Ertu viss um að hætta við úthlutun %{conversationCount} %{conversationLabel}?",
"GO_BACK_LABEL": "Go back",
"ASSIGN_LABEL": "Úthluta",
- "YES": "Yes",
+ "YES": "Já",
"ASSIGN_AGENT_TOOLTIP": "Assign Agent",
"ASSIGN_TEAM_TOOLTIP": "Assign team",
"ASSIGN_SUCCESFUL": "Conversations assigned successfully",
diff --git a/app/javascript/dashboard/i18n/locale/is/campaign.json b/app/javascript/dashboard/i18n/locale/is/campaign.json
index aad2f6f3e..0b683498d 100644
--- a/app/javascript/dashboard/i18n/locale/is/campaign.json
+++ b/app/javascript/dashboard/i18n/locale/is/campaign.json
@@ -77,7 +77,7 @@
},
"EDIT": {
"TITLE": "Edit campaign",
- "UPDATE_BUTTON_TEXT": "Update",
+ "UPDATE_BUTTON_TEXT": "Uppfæra",
"API": {
"SUCCESS_MESSAGE": "Campaign updated successfully",
"ERROR_MESSAGE": "There was an error, please try again"
diff --git a/app/javascript/dashboard/i18n/locale/is/contact.json b/app/javascript/dashboard/i18n/locale/is/contact.json
index cea524c18..f98dd9335 100644
--- a/app/javascript/dashboard/i18n/locale/is/contact.json
+++ b/app/javascript/dashboard/i18n/locale/is/contact.json
@@ -161,7 +161,7 @@
},
"NEW_CONVERSATION": {
"BUTTON_LABEL": "Hefja samtal",
- "TITLE": "New conversation",
+ "TITLE": "Nýtt samtal",
"DESC": "Byrjaðu nýtt samtal með því að senda ný skilaboð.",
"NO_INBOX": "Gat ekki fundið innhólf til að hefja nýtt samtal við þennan tengilið.",
"FORM": {
@@ -203,7 +203,7 @@
"NO_CONTACTS": "There are no available contacts",
"TABLE_HEADER": {
"NAME": "Nafn",
- "PHONE_NUMBER": "Phone Number",
+ "PHONE_NUMBER": "Símanúmer",
"CONVERSATIONS": "Samtöl",
"LAST_ACTIVITY": "Last Activity",
"COUNTRY": "Country",
diff --git a/app/javascript/dashboard/i18n/locale/is/contactFilters.json b/app/javascript/dashboard/i18n/locale/is/contactFilters.json
index e761dd50f..2dc22d6e7 100644
--- a/app/javascript/dashboard/i18n/locale/is/contactFilters.json
+++ b/app/javascript/dashboard/i18n/locale/is/contactFilters.json
@@ -27,7 +27,7 @@
},
"ATTRIBUTES": {
"NAME": "Nafn",
- "EMAIL": "Email",
+ "EMAIL": "Tölvupóstfang",
"PHONE_NUMBER": "Símanúmer",
"IDENTIFIER": "Identifier",
"CITY": "City",
diff --git a/app/javascript/dashboard/i18n/locale/is/generalSettings.json b/app/javascript/dashboard/i18n/locale/is/generalSettings.json
index 43d83facf..016ff0eaa 100644
--- a/app/javascript/dashboard/i18n/locale/is/generalSettings.json
+++ b/app/javascript/dashboard/i18n/locale/is/generalSettings.json
@@ -1,30 +1,30 @@
{
"GENERAL_SETTINGS": {
- "TITLE": "Account settings",
- "SUBMIT": "Update settings",
- "BACK": "Back",
+ "TITLE": "Aðgangs stillingar",
+ "SUBMIT": "Uppfæra stillingar",
+ "BACK": "Til baka",
"UPDATE": {
- "ERROR": "Could not update settings, try again!",
- "SUCCESS": "Successfully updated account settings"
+ "ERROR": "Gat ekki uppfært stillingar, reyndu aftur!",
+ "SUCCESS": "Tókst að uppfæra stillingar"
},
"FORM": {
- "ERROR": "Please fix form errors",
+ "ERROR": "Vinsamlegast lagfærðu villurnar",
"GENERAL_SECTION": {
- "TITLE": "General settings",
+ "TITLE": "Almennar stillingar",
"NOTE": ""
},
"ACCOUNT_ID": {
- "TITLE": "Account ID",
+ "TITLE": "Númer aðgangs",
"NOTE": "Þetta auðkenni er nauðsynlegt ef þú ert að byggja upp API byggða samþættingu"
},
"NAME": {
- "LABEL": "Account name",
- "PLACEHOLDER": "Your account name",
- "ERROR": "Please enter a valid account name"
+ "LABEL": "Aðgangsnafn",
+ "PLACEHOLDER": "Þitt aðgangsnafn",
+ "ERROR": "Vinsamlegast sláðu inn samþykkt aðgangsnafn"
},
"LANGUAGE": {
- "LABEL": "Site language",
- "PLACEHOLDER": "Your account name",
+ "LABEL": "Tungumál síðu",
+ "PLACEHOLDER": "Þitt aðgangsnafn",
"ERROR": ""
},
"DOMAIN": {
@@ -33,8 +33,8 @@
"ERROR": ""
},
"SUPPORT_EMAIL": {
- "LABEL": "Support Email",
- "PLACEHOLDER": "Your company's support email",
+ "LABEL": "Þjónustu tölvupóstur",
+ "PLACEHOLDER": "Þjónustu tölvupóstur fyrirtækisins",
"ERROR": ""
},
"AUTO_RESOLVE_DURATION": {
@@ -48,57 +48,57 @@
}
},
"UPDATE_CHATWOOT": "Uppfærsla %{latestChatwootVersion} fyrir Chatwoot er fáanleg. Vinsamlegast uppfærðu tilvikið þitt.",
- "LEARN_MORE": "Learn more"
+ "LEARN_MORE": "Læra meira"
},
"FORMS": {
"MULTISELECT": {
- "ENTER_TO_SELECT": "Press enter to select",
- "ENTER_TO_REMOVE": "Press enter to remove",
- "SELECT_ONE": "Select one",
- "SELECT": "Select"
+ "ENTER_TO_SELECT": "Enter til þess að velja",
+ "ENTER_TO_REMOVE": "Enter til þess að fjarlægja",
+ "SELECT_ONE": "Veldu eitt",
+ "SELECT": "Velja"
}
},
"NOTIFICATIONS_PAGE": {
- "HEADER": "Notifications",
- "MARK_ALL_DONE": "Mark All Done",
- "DELETE_TITLE": "deleted",
+ "HEADER": "Skilaboð",
+ "MARK_ALL_DONE": "Merkja allt tilbúð",
+ "DELETE_TITLE": "eyða",
"UNREAD_NOTIFICATION": {
- "TITLE": "Unread Notifications",
- "ALL_NOTIFICATIONS": "View all notifications",
- "LOADING_UNREAD_MESSAGE": "Loading unread notifications...",
- "EMPTY_MESSAGE": "You have no unread notifications"
+ "TITLE": "Ólesnar tilkynningar",
+ "ALL_NOTIFICATIONS": "Skoða allar tilkynningar",
+ "LOADING_UNREAD_MESSAGE": "Hleð ólesnum skilaboðum...",
+ "EMPTY_MESSAGE": "Þú átt enginn ólesin skilaboð"
},
"LIST": {
- "LOADING_MESSAGE": "Loading notifications...",
- "404": "No Notifications",
+ "LOADING_MESSAGE": "Hleð skilaboðum...",
+ "404": "Engin skilaboð",
"TABLE_HEADER": [
"Nafn",
- "Phone Number",
+ "Símanúmer",
"Samtöl",
- "Last Contacted"
+ "Síðast samband"
]
},
"TYPE_LABEL": {
- "conversation_creation": "New conversation",
- "conversation_assignment": "Conversation Assigned",
- "assigned_conversation_new_message": "New Message",
- "conversation_mention": "Mention"
+ "conversation_creation": "Nýtt samtal",
+ "conversation_assignment": "Samtali úthlutað",
+ "assigned_conversation_new_message": "Nýtt skilaboð",
+ "conversation_mention": "Nefna"
}
},
"NETWORK": {
"NOTIFICATION": {
- "TEXT": "Disconnected from Chatwoot"
+ "TEXT": "Aftengdur Chatwoot"
},
"BUTTON": {
- "REFRESH": "Refresh"
+ "REFRESH": "Uppfæra"
}
},
"COMMAND_BAR": {
- "SEARCH_PLACEHOLDER": "Search or jump to",
+ "SEARCH_PLACEHOLDER": "Leita eða stökkva til",
"SECTIONS": {
- "GENERAL": "General",
- "REPORTS": "Reports",
- "CONVERSATION": "Conversation",
+ "GENERAL": "Almennar",
+ "REPORTS": "Skýrslur",
+ "CONVERSATION": "Samtal",
"CHANGE_ASSIGNEE": "Breyta úthlutun",
"CHANGE_TEAM": "Breyta Teymi",
"ADD_LABEL": "Merkja samtalið",
diff --git a/app/javascript/dashboard/i18n/locale/is/helpCenter.json b/app/javascript/dashboard/i18n/locale/is/helpCenter.json
index 53e548a5b..73d9e2bdf 100644
--- a/app/javascript/dashboard/i18n/locale/is/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/is/helpCenter.json
@@ -3,7 +3,7 @@
"HEADER": {
"FILTER": "Filter by",
"SORT": "Sort by",
- "SETTINGS_BUTTON": "Settings",
+ "SETTINGS_BUTTON": "Stillingar",
"NEW_BUTTON": "New Article",
"DROPDOWN_OPTIONS": {
"PUBLISHED": "Published",
@@ -86,7 +86,7 @@
"COUNT_LABEL": "articles",
"ADD": "Add locale",
"VISIT": "Visit site",
- "SETTINGS": "Settings",
+ "SETTINGS": "Stillingar",
"DELETE": "Eyða"
},
"PORTAL_CONFIG": {
@@ -181,7 +181,7 @@
}
],
"CREATE_FLOW_PAGE": {
- "BACK_BUTTON": "Back",
+ "BACK_BUTTON": "Til baka",
"BASIC_SETTINGS_PAGE": {
"HEADER": "Create Portal",
"TITLE": "Help center information",
diff --git a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json
index b681e3a78..fffe01f4b 100644
--- a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Búðu til samtöl úr merktum Tweet-um"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Vefsíðu rás",
"DESC": "Búðu til rás fyrir vefsíðuna þína og byrjaðu að aðstoða viðskiptavini þína í gegnum netspjallið okkar.",
@@ -421,11 +425,11 @@
"PRE_CHAT_FORM": "Pre Chat Form",
"BUSINESS_HOURS": "Business Hours",
"WIDGET_BUILDER": "Widget Builder",
- "BOT_CONFIGURATION": "Bot Configuration"
+ "BOT_CONFIGURATION": "Bot stillingar"
},
- "SETTINGS": "Settings",
+ "SETTINGS": "Stillingar",
"FEATURES": {
- "LABEL": "Features",
+ "LABEL": "Fídusar",
"DISPLAY_FILE_PICKER": "Display file picker on the widget",
"DISPLAY_EMOJI_PICKER": "Display emoji picker on the widget",
"ALLOW_END_CONVERSATION": "Leyfa notendum að ljúka samtali úr græjunni"
@@ -437,7 +441,7 @@
"INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment",
"AGENT_ASSIGNMENT_SUB_TEXT": "Update conversation assignment settings",
- "UPDATE": "Update",
+ "UPDATE": "Uppfæra",
"ENABLE_EMAIL_COLLECT_BOX": "Enable email collect box",
"ENABLE_EMAIL_COLLECT_BOX_SUB_TEXT": "Virkja eða slökkva á söfnunarreit tölvupósts í nýju samtali",
"AUTO_ASSIGNMENT": "Enable auto assignment",
@@ -483,13 +487,13 @@
"PLACE_HOLDER": "Placeholder",
"KEY": "Key",
"TYPE": "Type",
- "REQUIRED": "Required"
+ "REQUIRED": "Nauðsynlegt"
},
"ENABLE": {
"LABEL": "Enable pre chat form",
"OPTIONS": {
- "ENABLED": "Yes",
- "DISABLED": "No"
+ "ENABLED": "Já",
+ "DISABLED": "Nei"
}
},
"PRE_CHAT_MESSAGE": {
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Virkja SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Skrá SMTP upplýsingar",
diff --git a/app/javascript/dashboard/i18n/locale/is/integrations.json b/app/javascript/dashboard/i18n/locale/is/integrations.json
index 9b0d0ae2d..ff22d3649 100644
--- a/app/javascript/dashboard/i18n/locale/is/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/is/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot mun nú samstilla öll innkomin samtöl inn á customer-conversations á Slack vinnusvæðinu þínu.
Að svara samtalsþræði í customer-conversations Slack rás mun senda svar til viðskiptavinar í gegnum chatwoot.
Byrjaðu svörin með note: til að búa til einkaglósur í stað svara.
Ef svarandinn á Slack er með skráðann þjónustufulltrúa í chatwoot undir sama netfangi verða svörin tengd í samræmi við það.
Þegar svarandinn er ekki með tengdan þjónustufulltrúa verða svörin gerð úr spjallmanna prófílnum.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Eyða",
"API": {
@@ -117,7 +124,7 @@
},
"UPDATE": {
"HEADER": "Edit dashboard app",
- "FORM_SUBMIT": "Update",
+ "FORM_SUBMIT": "Uppfæra",
"FORM_CANCEL": "Hætta við",
"API_SUCCESS": "Dashboard app updated successfully",
"API_ERROR": "Ekki tókst að uppfæra forrit. Vinsamlegast reyndu aftur síðar"
diff --git a/app/javascript/dashboard/i18n/locale/is/login.json b/app/javascript/dashboard/i18n/locale/is/login.json
index dd8eb1256..8ce5267d8 100644
--- a/app/javascript/dashboard/i18n/locale/is/login.json
+++ b/app/javascript/dashboard/i18n/locale/is/login.json
@@ -2,20 +2,20 @@
"LOGIN": {
"TITLE": "Login to Chatwoot",
"EMAIL": {
- "LABEL": "Email",
- "PLACEHOLDER": "Email eg: someone@example.com"
+ "LABEL": "Tölvupóstfang",
+ "PLACEHOLDER": "Tölvupóstfang t.d. someone@example.com"
},
"PASSWORD": {
- "LABEL": "Password",
- "PLACEHOLDER": "Password"
+ "LABEL": "Lykilorð",
+ "PLACEHOLDER": "Lykilorð"
},
"API": {
- "SUCCESS_MESSAGE": "Login Successful",
+ "SUCCESS_MESSAGE": "Innskráning tókst",
"ERROR_MESSAGE": "Náði ekki að tengjast við netþjóna Woot, vinsamlegast reynið aftur",
"UNAUTH": "Notandanafn / lykilorð rangt. Vinsamlegast reyndu aftur"
},
- "FORGOT_PASSWORD": "Forgot your password?",
- "CREATE_NEW_ACCOUNT": "Create new account",
- "SUBMIT": "Login"
+ "FORGOT_PASSWORD": "Gleymt lykilorð?",
+ "CREATE_NEW_ACCOUNT": "Stofna nýjan aðgang",
+ "SUBMIT": "Innskráning"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/is/macros.json b/app/javascript/dashboard/i18n/locale/is/macros.json
index 913545bfb..6896ea953 100644
--- a/app/javascript/dashboard/i18n/locale/is/macros.json
+++ b/app/javascript/dashboard/i18n/locale/is/macros.json
@@ -37,7 +37,7 @@
"CONFIRM": {
"MESSAGE": "Ertu viss um að þú viljir eyða",
"YES": "Yes, Delete",
- "NO": "No"
+ "NO": "Nei"
},
"API": {
"SUCCESS_MESSAGE": "Macro deleted successfully",
diff --git a/app/javascript/dashboard/i18n/locale/is/resetPassword.json b/app/javascript/dashboard/i18n/locale/is/resetPassword.json
index 7262f70a7..4f3067751 100644
--- a/app/javascript/dashboard/i18n/locale/is/resetPassword.json
+++ b/app/javascript/dashboard/i18n/locale/is/resetPassword.json
@@ -2,7 +2,7 @@
"RESET_PASSWORD": {
"TITLE": "Endurstilla lykilorð",
"EMAIL": {
- "LABEL": "Email",
+ "LABEL": "Tölvupóstfang",
"PLACEHOLDER": "Please enter your email",
"ERROR": "Please enter a valid email"
},
diff --git a/app/javascript/dashboard/i18n/locale/is/setNewPassword.json b/app/javascript/dashboard/i18n/locale/is/setNewPassword.json
index 978ee3448..af28dc081 100644
--- a/app/javascript/dashboard/i18n/locale/is/setNewPassword.json
+++ b/app/javascript/dashboard/i18n/locale/is/setNewPassword.json
@@ -2,8 +2,8 @@
"SET_NEW_PASSWORD": {
"TITLE": "Set New Password",
"PASSWORD": {
- "LABEL": "Password",
- "PLACEHOLDER": "Password",
+ "LABEL": "Lykilorð",
+ "PLACEHOLDER": "Lykilorð",
"ERROR": "Password is too short"
},
"CONFIRM_PASSWORD": {
diff --git a/app/javascript/dashboard/i18n/locale/is/settings.json b/app/javascript/dashboard/i18n/locale/is/settings.json
index 59769b2bf..87ec8c58b 100644
--- a/app/javascript/dashboard/i18n/locale/is/settings.json
+++ b/app/javascript/dashboard/i18n/locale/is/settings.json
@@ -11,7 +11,7 @@
"AFTER_EMAIL_CHANGED": "Prófíllinn þinn hefur verið uppfærður, vinsamlegast skráðu þig inn aftur þar sem innskráningarskilríkjum þínum er breytt",
"FORM": {
"AVATAR": "Profile Image",
- "ERROR": "Please fix form errors",
+ "ERROR": "Vinsamlegast lagfærðu villurnar",
"REMOVE_IMAGE": "Remove",
"UPLOAD_IMAGE": "Upload image",
"UPDATE_IMAGE": "Update image",
@@ -47,7 +47,7 @@
"PLACEHOLDER": "Settu inn persónulegu skilaboðaundirskriftina þína hér."
},
"PASSWORD_SECTION": {
- "TITLE": "Password",
+ "TITLE": "Lykilorð",
"NOTE": "Að uppfæra lykilorðið þitt myndi endurstilla innskráningar þínar í mörgum tækjum.",
"BTN_TEXT": "Change password"
},
@@ -193,13 +193,13 @@
"MENTIONED_CONVERSATIONS": "Mentions",
"UNATTENDED_CONVERSATIONS": "Unattended",
"REPORTS": "Reports",
- "SETTINGS": "Settings",
+ "SETTINGS": "Stillingar",
"CONTACTS": "Contacts",
"HOME": "Home",
"AGENTS": "Þjónustufulltrúar",
"AGENT_BOTS": "Bots",
"INBOXES": "Innhólf",
- "NOTIFICATIONS": "Notifications",
+ "NOTIFICATIONS": "Skilaboð",
"CANNED_RESPONSES": "Stöðluð svör",
"INTEGRATIONS": "Integrations",
"PROFILE_SETTINGS": "Profile Settings",
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/is/teamsSettings.json b/app/javascript/dashboard/i18n/locale/is/teamsSettings.json
index 698c71f54..abc333ac6 100644
--- a/app/javascript/dashboard/i18n/locale/is/teamsSettings.json
+++ b/app/javascript/dashboard/i18n/locale/is/teamsSettings.json
@@ -104,7 +104,7 @@
"NO": "Hætta við"
}
},
- "SETTINGS": "Settings",
+ "SETTINGS": "Stillingar",
"FORM": {
"UPDATE": "Update team",
"CREATE": "Create team",
diff --git a/app/javascript/dashboard/i18n/locale/it/agentBots.json b/app/javascript/dashboard/i18n/locale/it/agentBots.json
index c86aa1cfa..36250c300 100644
--- a/app/javascript/dashboard/i18n/locale/it/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/it/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Aggiorna",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/it/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/it/attributesMgmt.json
index b603fc710..f1f866328 100644
--- a/app/javascript/dashboard/i18n/locale/it/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/it/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Attributo personalizzato aggiunto con successo",
- "ERROR_MESSAGE": "Impossibile creare un attributo personalizzato, riprova più tardi"
+ "SUCCESS_MESSAGE": "Attributo personalizzato aggiunto con successo!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json
index 15c897139..0362cbfe5 100644
--- a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Crea conversazioni dai Tweet menzionati"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Canale sito web",
"DESC": "Crea un canale per il tuo sito web ed inizia a sostenere i tuoi clienti tramite il nostro widget per siti web.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Abilita SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Imposta i dettagli SMTP",
diff --git a/app/javascript/dashboard/i18n/locale/it/integrations.json b/app/javascript/dashboard/i18n/locale/it/integrations.json
index ff2e1a6cb..3d952fdc9 100644
--- a/app/javascript/dashboard/i18n/locale/it/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/it/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot ora sincronizzerà tutte le conversazioni in arrivo nel canale conversazioni dei clienti all'interno del tuo spazio di lavoro Slack.
Rispondendo a un thread di conversazione nel canale Slack conversazioni dei clienti verrà creata una risposta al cliente attraverso chatwoot.
Inizia le risposte con nota: per creare note private invece che risposte.
Se il replicante su slack ha un profilo agente in chatwoot sotto la stessa email, le risposte saranno associate di conseguenza.
Quando il replicante non ha un profilo di agente associato, le risposte saranno fatte dal profilo del bot.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Elimina",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/it/settings.json b/app/javascript/dashboard/i18n/locale/it/settings.json
index 2e19d0038..497177941 100644
--- a/app/javascript/dashboard/i18n/locale/it/settings.json
+++ b/app/javascript/dashboard/i18n/locale/it/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Apri conversazione",
"RESOLVE_AND_NEXT": "Risolvi e vai alla prossima",
diff --git a/app/javascript/dashboard/i18n/locale/ja/agentBots.json b/app/javascript/dashboard/i18n/locale/ja/agentBots.json
index 903e96186..80c3eedfe 100644
--- a/app/javascript/dashboard/i18n/locale/ja/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ja/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "更新",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ja/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ja/attributesMgmt.json
index 94f5ae25c..c44e1428c 100644
--- a/app/javascript/dashboard/i18n/locale/ja/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ja/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json
index b06a6906c..42ef35e0e 100644
--- a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "ウェブサイトのチャンネル",
"DESC": "ウェブサイトのためのチャネルを作成し、ウェブサイトウィジェットを介してあなたの顧客をサポートを開始してください。",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/ja/integrations.json b/app/javascript/dashboard/i18n/locale/ja/integrations.json
index d1e0a3f1d..44aebcf19 100644
--- a/app/javascript/dashboard/i18n/locale/ja/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ja/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "削除",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ja/settings.json b/app/javascript/dashboard/i18n/locale/ja/settings.json
index 352ab73ac..26b83c7f3 100644
--- a/app/javascript/dashboard/i18n/locale/ja/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ja/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/ka/agentBots.json b/app/javascript/dashboard/i18n/locale/ka/agentBots.json
index 67ee3ef6f..5403bb18c 100644
--- a/app/javascript/dashboard/i18n/locale/ka/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ka/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Update",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ka/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ka/attributesMgmt.json
index ff4904c34..2a9ea7de3 100644
--- a/app/javascript/dashboard/i18n/locale/ka/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ka/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json
index 4f332b6d4..5bc4b7a67 100644
--- a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website channel",
"DESC": "Create a channel for your website and start supporting your customers via our website widget.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/ka/integrations.json b/app/javascript/dashboard/i18n/locale/ka/integrations.json
index 6c6cecde9..833b72ed4 100644
--- a/app/javascript/dashboard/i18n/locale/ka/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ka/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Delete",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ka/settings.json b/app/javascript/dashboard/i18n/locale/ka/settings.json
index a0de7f856..2f5f8b771 100644
--- a/app/javascript/dashboard/i18n/locale/ka/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ka/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/ko/agentBots.json b/app/javascript/dashboard/i18n/locale/ko/agentBots.json
index 92029e6ec..5f7a34ed6 100644
--- a/app/javascript/dashboard/i18n/locale/ko/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ko/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "업데이트",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ko/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ko/attributesMgmt.json
index 04902da4f..4885b59d9 100644
--- a/app/javascript/dashboard/i18n/locale/ko/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ko/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json
index ec7d9f2c1..c69472470 100644
--- a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "웹사이트 채널",
"DESC": "웹사이트를 위한 채널을 만들고 웹사이트 위젯을 통해 고객 지원을 시작하십시오.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/ko/integrations.json b/app/javascript/dashboard/i18n/locale/ko/integrations.json
index 2193a4b03..19ff7e086 100644
--- a/app/javascript/dashboard/i18n/locale/ko/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ko/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "삭제",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ko/settings.json b/app/javascript/dashboard/i18n/locale/ko/settings.json
index f8931970f..0a35949f2 100644
--- a/app/javascript/dashboard/i18n/locale/ko/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ko/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/lt/agentBots.json b/app/javascript/dashboard/i18n/locale/lt/agentBots.json
index 67ee3ef6f..5403bb18c 100644
--- a/app/javascript/dashboard/i18n/locale/lt/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/lt/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Update",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/lt/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/lt/attributesMgmt.json
index ff4904c34..2a9ea7de3 100644
--- a/app/javascript/dashboard/i18n/locale/lt/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/lt/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json
index 4f332b6d4..5bc4b7a67 100644
--- a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website channel",
"DESC": "Create a channel for your website and start supporting your customers via our website widget.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/lt/integrations.json b/app/javascript/dashboard/i18n/locale/lt/integrations.json
index 6c6cecde9..833b72ed4 100644
--- a/app/javascript/dashboard/i18n/locale/lt/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/lt/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Delete",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/lt/settings.json b/app/javascript/dashboard/i18n/locale/lt/settings.json
index a0de7f856..2f5f8b771 100644
--- a/app/javascript/dashboard/i18n/locale/lt/settings.json
+++ b/app/javascript/dashboard/i18n/locale/lt/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/lv/agentBots.json b/app/javascript/dashboard/i18n/locale/lv/agentBots.json
index 6782bd22e..299472f3b 100644
--- a/app/javascript/dashboard/i18n/locale/lv/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/lv/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Izvēlieties aģentu robotu",
"DESC": "Jūs varat piesaistīt šai iesūtnei aģentu robotu, no saraksta. Robots sākotnēji var apstrādāt sarunu un nepieciešamības gadījumā pārsūtīt to aģentam.",
"SUBMIT": "Atjaunināt",
+ "DISCONNECT": "Atvienot Robotu",
"SUCCESS_MESSAGE": "Aģents robots ir veiksmīgi atjaunināts",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Aģenta robots ir veiksmīgi atvienots",
"ERROR_MESSAGE": "Nevarēja atjaunināt aģentu robotu. Lūdzu, vēlāk mēģiniet vēlreiz",
+ "DISCONNECTED_ERROR_MESSAGE": "Nevarēja atvienot aģenta robotu. Lūdzu, vēlāk mēģiniet vēlreiz",
"SELECT_PLACEHOLDER": "Izvēlieties Robotu"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/lv/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/lv/attributesMgmt.json
index ef12fa631..f3490c4eb 100644
--- a/app/javascript/dashboard/i18n/locale/lv/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/lv/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Pielāgotā īpašība ir veiksmīgi pievienota",
- "ERROR_MESSAGE": "Nevarēja izveidot pielāgotu īpašību. Lūdzu, vēlāk mēģiniet vēlreiz"
+ "SUCCESS_MESSAGE": "Pielāgotā īpašība ir veiksmīgi pievienota!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json
index f90da4c44..6f21a9196 100644
--- a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Izveidot sarunas no minētajiem Tvītiem"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Tīmekļa vietnes kanāls",
"DESC": "Izveidot savai tīmekļa vietnei kanālu un sākt atbalstīt savus klientus, izmantojot mūsu tīmekļu vietnes logrīku.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Iespējot SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Iestatīt SMTP informāciju",
diff --git a/app/javascript/dashboard/i18n/locale/lv/integrations.json b/app/javascript/dashboard/i18n/locale/lv/integrations.json
index 48752ccce..b4d43956c 100644
--- a/app/javascript/dashboard/i18n/locale/lv/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/lv/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot tagad sinhronizēs visas ienākošās customer-conversations kanāla sarunas, kas atrodas Jūsu slack workplace.
Atbildot uz sarunas vītni, customer-conversations slack kanālā tiks izveidota atbilde klientam, izmantojot chatwoot.
Sāciet atbildes ar note: lai izveidotu individuālas piezīmes, nevis atbildes.
Ja slack atbildētājam ir aģenta profils pakalpojumā chatwoot, ar tādu pašu e-pasta adresi, atbildes tiks attiecīgi sasaistītas.
Kad atbildētājam nebūs piesaistīts aģenta profils, atbildes tiks sniegtas no robotprogrammatūras profila.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Noklikšķiniet šeit, lai pievienotos",
+ "LEAVE_THE_ROOM": "Iziet no istabas",
+ "START_VIDEO_CALL_HELP_TEXT": "Sākt jaunu videozvanu ar klientu",
+ "JOIN_ERROR": "Pievienojoties zvanam, radās kļūda. Lūdzu, mēģiniet vēlreiz",
+ "CREATE_ERROR": "Veidojot sapulces saiti, radās kļūda. Lūdzu, mēģiniet vēlreiz"
+ },
"DELETE": {
"BUTTON_TEXT": "Dzēst",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/lv/settings.json b/app/javascript/dashboard/i18n/locale/lv/settings.json
index a190b0341..019a3da09 100644
--- a/app/javascript/dashboard/i18n/locale/lv/settings.json
+++ b/app/javascript/dashboard/i18n/locale/lv/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "Skatīt visus īsinājumtaustiņus",
"TITLE": {
"OPEN_CONVERSATION": "Atvērt sarunu",
"RESOLVE_AND_NEXT": "Atrisināt un pāriet uz nākamo",
diff --git a/app/javascript/dashboard/i18n/locale/ml/agentBots.json b/app/javascript/dashboard/i18n/locale/ml/agentBots.json
index c46747959..5181b5cd8 100644
--- a/app/javascript/dashboard/i18n/locale/ml/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ml/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "അപ്ഡേറ്റ്",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ml/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ml/attributesMgmt.json
index 5c5bbd49a..4cb7120e7 100644
--- a/app/javascript/dashboard/i18n/locale/ml/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ml/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json
index 410a4fc30..62e443ae0 100644
--- a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "സൂചിപ്പിച്ച ട്വീറ്റുകളിൽ നിന്ന് സംഭാഷണങ്ങൾ സൃഷ്ടിക്കുക"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "വെബ്സൈറ്റ് ചാനൽ",
"DESC": "നിങ്ങളുടെ വെബ്സൈറ്റിനായി ഒരു ചാനൽ സൃഷ്ടിച്ച് ഞങ്ങളുടെ വെബ്സൈറ്റ് വിജറ്റ് വഴി ഉപഭോക്താക്കളെ പിന്തുണയ്ക്കാൻ ആരംഭിക്കുക.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/ml/integrations.json b/app/javascript/dashboard/i18n/locale/ml/integrations.json
index f2352a676..b8ac8b2d0 100644
--- a/app/javascript/dashboard/i18n/locale/ml/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ml/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
ചാറ്റ്വൂട്ട് ഇപ്പോൾ വരുന്ന എല്ലാ സംഭാഷണങ്ങളും ഉപഭോക്തൃ-സംഭാഷണങ്ങൾ നിങ്ങളുടെ മന്ദഗതിയിലുള്ള ജോലിസ്ഥലത്തെ ചാനലിലേക്ക് സമന്വയിപ്പിക്കും.
ഒരു മറുപടി നൽകുന്നു. ഉപഭോക്തൃ-സംഭാഷണങ്ങൾ സ്ലാക്ക് ചാനലിലെ സംഭാഷണ ത്രെഡ്, ചാറ്റ്വൂട്ടിലൂടെ ഉപഭോക്താവിന് ഒരു പ്രതികരണം സൃഷ്ടിക്കും.
എന്നതിൽ മറുപടികൾ ആരംഭിക്കുക കുറിപ്പ്: മറുപടികൾക്ക് പകരം സ്വകാര്യ കുറിപ്പുകൾ സൃഷ്ടിക്കുക.
സ്ലാക്കിലുള്ള റിപ്ലയർക്ക് ചാറ്റ്വൂട്ടിൽ ഒരു ഏജന്റ് പ്രൊഫൈൽ ഉണ്ടെങ്കിൽ അതേ ഇമെയിലിന് കീഴിൽ, മറുപടികൾ അതിനനുസരിച്ച് ബന്ധപ്പെടുത്തും.
p>
റിപ്ലെയർക്ക് അനുബന്ധ ഏജന്റ് പ്രൊഫൈൽ ഇല്ലെങ്കിൽ, മറുപടികൾ ബോട്ട് പ്രൊഫൈലിൽ നിന്നായിരിക്കും.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "ഇല്ലാതാക്കുക",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ml/settings.json b/app/javascript/dashboard/i18n/locale/ml/settings.json
index 3132b2d45..ba0ed6a7d 100644
--- a/app/javascript/dashboard/i18n/locale/ml/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ml/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/ms/agentBots.json b/app/javascript/dashboard/i18n/locale/ms/agentBots.json
index aa9d08cfa..29c6fcff5 100644
--- a/app/javascript/dashboard/i18n/locale/ms/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ms/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Update",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ms/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ms/attributesMgmt.json
index 5f743e38f..97ce785a4 100644
--- a/app/javascript/dashboard/i18n/locale/ms/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ms/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json
index 76a7890f4..aa37cb9cb 100644
--- a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website channel",
"DESC": "Create a channel for your website and start supporting your customers via our website widget.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/ms/integrations.json b/app/javascript/dashboard/i18n/locale/ms/integrations.json
index 1f47f5f51..896a35785 100644
--- a/app/javascript/dashboard/i18n/locale/ms/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ms/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Padamkan",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ms/settings.json b/app/javascript/dashboard/i18n/locale/ms/settings.json
index 2b786c1bc..6766c7cdb 100644
--- a/app/javascript/dashboard/i18n/locale/ms/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ms/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/ne/agentBots.json b/app/javascript/dashboard/i18n/locale/ne/agentBots.json
index 67ee3ef6f..5403bb18c 100644
--- a/app/javascript/dashboard/i18n/locale/ne/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ne/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Update",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ne/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ne/attributesMgmt.json
index ff4904c34..2a9ea7de3 100644
--- a/app/javascript/dashboard/i18n/locale/ne/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ne/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json
index 4c8b30fa8..089bffeb5 100644
--- a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website channel",
"DESC": "Create a channel for your website and start supporting your customers via our website widget.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/ne/integrations.json b/app/javascript/dashboard/i18n/locale/ne/integrations.json
index c8fbacb07..4a39563ad 100644
--- a/app/javascript/dashboard/i18n/locale/ne/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ne/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Delete",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ne/settings.json b/app/javascript/dashboard/i18n/locale/ne/settings.json
index ff0f188a3..c7fb8f5e8 100644
--- a/app/javascript/dashboard/i18n/locale/ne/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ne/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/nl/advancedFilters.json b/app/javascript/dashboard/i18n/locale/nl/advancedFilters.json
index a60ff56c5..b55b5f3e0 100644
--- a/app/javascript/dashboard/i18n/locale/nl/advancedFilters.json
+++ b/app/javascript/dashboard/i18n/locale/nl/advancedFilters.json
@@ -1,91 +1,91 @@
{
"FILTER": {
- "TITLE": "Filter Conversations",
- "SUBTITLE": "Add filters below and hit 'Apply filters' to filter conversations.",
- "ADD_NEW_FILTER": "Add Filter",
- "FILTER_DELETE_ERROR": "You should have atleast one filter to save",
- "SUBMIT_BUTTON_LABEL": "Apply filters",
+ "TITLE": "Conversaties filteren",
+ "SUBTITLE": "Voeg hieronder filters toe en druk op 'Filters toepassen' om te filteren.",
+ "ADD_NEW_FILTER": "Filter toevoegen",
+ "FILTER_DELETE_ERROR": "U moet minstens één filter hebben om op te slaan",
+ "SUBMIT_BUTTON_LABEL": "Filters toepassen",
"CANCEL_BUTTON_LABEL": "Annuleren",
- "CLEAR_BUTTON_LABEL": "Clear Filters",
- "EMPTY_VALUE_ERROR": "Value is required",
- "TOOLTIP_LABEL": "Filter conversations",
+ "CLEAR_BUTTON_LABEL": "Filters wissen",
+ "EMPTY_VALUE_ERROR": "Waarde is vereist",
+ "TOOLTIP_LABEL": "Gesprekken filteren",
"QUERY_DROPDOWN_LABELS": {
- "AND": "AND",
- "OR": "OR"
+ "AND": "EN",
+ "OR": "OF"
},
"OPERATOR_LABELS": {
- "equal_to": "Equal to",
- "not_equal_to": "Not equal to",
- "contains": "Contains",
- "does_not_contain": "Does not contain",
- "is_present": "Is present",
- "is_not_present": "Is not present",
- "is_greater_than": "Is greater than",
- "is_less_than": "Is lesser than",
- "days_before": "Is x days before"
+ "equal_to": "Gelijk aan",
+ "not_equal_to": "Niet gelijk aan",
+ "contains": "Bevat",
+ "does_not_contain": "Bevat niet",
+ "is_present": "Is aanwezig",
+ "is_not_present": "Is niet aanwezig",
+ "is_greater_than": "Is groter dan",
+ "is_less_than": "Is lager dan",
+ "days_before": "Is x dagen vóór"
},
"ATTRIBUTE_LABELS": {
- "TRUE": "True",
- "FALSE": "False"
+ "TRUE": "Waar",
+ "FALSE": "Onwaar"
},
"ATTRIBUTES": {
"STATUS": "Status",
- "ASSIGNEE_NAME": "Assignee Name",
- "INBOX_NAME": "Inbox Name",
- "TEAM_NAME": "Team Name",
- "CONVERSATION_IDENTIFIER": "Conversation Identifier",
- "CAMPAIGN_NAME": "Campaign Name",
+ "ASSIGNEE_NAME": "Verantwoordelijke (naam)",
+ "INBOX_NAME": "Inbox Naam",
+ "TEAM_NAME": "Team Naam",
+ "CONVERSATION_IDENTIFIER": "Conversatie ID",
+ "CAMPAIGN_NAME": "Campagne Naam",
"LABELS": "Labelen",
- "BROWSER_LANGUAGE": "Browser Language",
- "COUNTRY_NAME": "Country Name",
- "REFERER_LINK": "Referer link",
- "CUSTOM_ATTRIBUTE_LIST": "List",
- "CUSTOM_ATTRIBUTE_TEXT": "Text",
- "CUSTOM_ATTRIBUTE_NUMBER": "Number",
+ "BROWSER_LANGUAGE": "Browser Taal",
+ "COUNTRY_NAME": "Land Naam",
+ "REFERER_LINK": "Verwijzende link",
+ "CUSTOM_ATTRIBUTE_LIST": "Lijst",
+ "CUSTOM_ATTRIBUTE_TEXT": "Tekst",
+ "CUSTOM_ATTRIBUTE_NUMBER": "Getal",
"CUSTOM_ATTRIBUTE_LINK": "Link",
- "CUSTOM_ATTRIBUTE_CHECKBOX": "Checkbox",
- "CREATED_AT": "Created At",
- "LAST_ACTIVITY": "Last Activity"
+ "CUSTOM_ATTRIBUTE_CHECKBOX": "Selectievakje",
+ "CREATED_AT": "Aangemaakt op",
+ "LAST_ACTIVITY": "Laatste Activiteit"
},
"GROUPS": {
- "STANDARD_FILTERS": "Standard Filters",
- "ADDITIONAL_FILTERS": "Additional Filters",
+ "STANDARD_FILTERS": "Standaard Filters",
+ "ADDITIONAL_FILTERS": "Aanvullende filters",
"CUSTOM_ATTRIBUTES": "Aanpasbare attributen"
},
"CUSTOM_VIEWS": {
"ADD": {
- "TITLE": "Do you want to save this filter?",
- "LABEL": "Name this filter",
- "PLACEHOLDER": "Enter a name for this filter",
- "ERROR_MESSAGE": "Name is required",
- "SAVE_BUTTON": "Save filter",
+ "TITLE": "Wil je deze filter opslaan?",
+ "LABEL": "Geef deze filter een naam",
+ "PLACEHOLDER": "Voer een naam in voor deze filter",
+ "ERROR_MESSAGE": "Naam is vereist",
+ "SAVE_BUTTON": "Filter opslaan",
"CANCEL_BUTTON": "Annuleren",
"API_FOLDERS": {
- "SUCCESS_MESSAGE": "Folder created successfully",
- "ERROR_MESSAGE": "Error while creating folder"
+ "SUCCESS_MESSAGE": "Map succesvol aangemaakt",
+ "ERROR_MESSAGE": "Fout tijdens het aanmaken van map"
},
"API_SEGMENTS": {
- "SUCCESS_MESSAGE": "Segment created successfully",
- "ERROR_MESSAGE": "Error while creating segment"
+ "SUCCESS_MESSAGE": "Segment succesvol aangemaakt",
+ "ERROR_MESSAGE": "Fout bij het maken van segment"
}
},
"DELETE": {
- "DELETE_BUTTON": "Delete filter",
+ "DELETE_BUTTON": "Filter verwijderen",
"MODAL": {
"CONFIRM": {
"TITLE": "Verwijderen bevestigen",
- "MESSAGE": "Are you sure to delete the filter ",
+ "MESSAGE": "Weet u zeker dat u de filter wilt verwijderen? ",
"YES": "Ja, verwijderen",
"NO": "Nee, Bewaar het"
}
},
"API_FOLDERS": {
- "SUCCESS_MESSAGE": "Folder deleted successfully",
- "ERROR_MESSAGE": "Error while deleting folder"
+ "SUCCESS_MESSAGE": "Map succesvol verwijderd",
+ "ERROR_MESSAGE": "Fout bij verwijderen map"
},
"API_SEGMENTS": {
- "SUCCESS_MESSAGE": "Segment deleted successfully",
- "ERROR_MESSAGE": "Error while deleting segment"
+ "SUCCESS_MESSAGE": "Segment succesvol verwijderd",
+ "ERROR_MESSAGE": "Fout bij verwijderen segment"
}
}
}
diff --git a/app/javascript/dashboard/i18n/locale/nl/agentBots.json b/app/javascript/dashboard/i18n/locale/nl/agentBots.json
index 1b6e45426..71343a69e 100644
--- a/app/javascript/dashboard/i18n/locale/nl/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/nl/agentBots.json
@@ -6,7 +6,7 @@
"SIDEBAR_TXT": "
Agent Bots
Agent bots allows you to automate the conversations
",
"CSML_BOT_EDITOR": {
"NAME": {
- "LABEL": "Bot Name",
+ "LABEL": "Bot Naam",
"PLACEHOLDER": "Give your bot a name",
"ERROR": "Bot name is required"
},
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Vernieuwen",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/nl/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/nl/attributesMgmt.json
index 29a996893..be82d4bf8 100644
--- a/app/javascript/dashboard/i18n/locale/nl/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/nl/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/nl/bulkActions.json b/app/javascript/dashboard/i18n/locale/nl/bulkActions.json
index 1e5b06850..51bc3a1c4 100644
--- a/app/javascript/dashboard/i18n/locale/nl/bulkActions.json
+++ b/app/javascript/dashboard/i18n/locale/nl/bulkActions.json
@@ -1,11 +1,11 @@
{
"BULK_ACTION": {
"CONVERSATIONS_SELECTED": "%{conversationCount} conversations selected",
- "AGENT_SELECT_LABEL": "Select Agent",
+ "AGENT_SELECT_LABEL": "Selecteer medewerker",
"ASSIGN_CONFIRMATION_LABEL": "Are you sure to assign %{conversationCount} %{conversationLabel} to",
"UNASSIGN_CONFIRMATION_LABEL": "Are you sure to unassign %{conversationCount} %{conversationLabel}?",
"GO_BACK_LABEL": "Go back",
- "ASSIGN_LABEL": "Assign",
+ "ASSIGN_LABEL": "Toewijzen",
"YES": "Yes",
"ASSIGN_AGENT_TOOLTIP": "Assign Agent",
"ASSIGN_TEAM_TOOLTIP": "Assign team",
diff --git a/app/javascript/dashboard/i18n/locale/nl/campaign.json b/app/javascript/dashboard/i18n/locale/nl/campaign.json
index b998d4f9a..5fb2ab6d5 100644
--- a/app/javascript/dashboard/i18n/locale/nl/campaign.json
+++ b/app/javascript/dashboard/i18n/locale/nl/campaign.json
@@ -89,7 +89,7 @@
"TABLE_HEADER": {
"TITLE": "Title",
"MESSAGE": "Bericht",
- "INBOX": "Inbox",
+ "INBOX": "Postvak In",
"STATUS": "Status",
"SENDER": "Sender",
"URL": "URL",
@@ -98,7 +98,7 @@
"CREATED_AT": "Created at"
},
"BUTTONS": {
- "ADD": "Add",
+ "ADD": "Toevoegen",
"EDIT": "Bewerken",
"DELETE": "Verwijderen"
},
diff --git a/app/javascript/dashboard/i18n/locale/nl/cannedMgmt.json b/app/javascript/dashboard/i18n/locale/nl/cannedMgmt.json
index c10ba67f5..3b7751160 100644
--- a/app/javascript/dashboard/i18n/locale/nl/cannedMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/nl/cannedMgmt.json
@@ -22,7 +22,7 @@
"FORM": {
"SHORT_CODE": {
"LABEL": "Korte code",
- "PLACEHOLDER": "Please enter a short code",
+ "PLACEHOLDER": "Vul een korte code in",
"ERROR": "Korte code is vereist"
},
"CONTENT": {
diff --git a/app/javascript/dashboard/i18n/locale/nl/chatlist.json b/app/javascript/dashboard/i18n/locale/nl/chatlist.json
index b9c1ca42f..1359521e2 100644
--- a/app/javascript/dashboard/i18n/locale/nl/chatlist.json
+++ b/app/javascript/dashboard/i18n/locale/nl/chatlist.json
@@ -8,7 +8,7 @@
},
"TAB_HEADING": "Gesprekken",
"MENTION_HEADING": "Vermeldingen",
- "UNATTENDED_HEADING": "Unattended",
+ "UNATTENDED_HEADING": "Onbeheer",
"SEARCH": {
"INPUT": "Zoek naar mensen, gesprekken, opgeslagen antwoorden .."
},
@@ -55,14 +55,14 @@
"RECEIVED_VIA_EMAIL": "Ontvangen via e-mail",
"VIEW_TWEET_IN_TWITTER": "Bekijk tweet op Twitter",
"REPLY_TO_TWEET": "Antwoord op deze tweet",
- "LINK_TO_STORY": "Go to instagram story",
+ "LINK_TO_STORY": "Ga naar instagram verhaal",
"SENT": "Succesvol verzonden",
- "READ": "Read successfully",
- "DELIVERED": "Delivered successfully",
+ "READ": "Succesvol gelezen",
+ "DELIVERED": "Succesvol afgeleverd",
"NO_MESSAGES": "Geen berichten",
"NO_CONTENT": "Geen inhoud beschikbaar",
"HIDE_QUOTED_TEXT": "Verberg geciteerde tekst",
"SHOW_QUOTED_TEXT": "Toon geciteerde tekst",
- "MESSAGE_READ": "Read"
+ "MESSAGE_READ": "Lezen"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/nl/contact.json b/app/javascript/dashboard/i18n/locale/nl/contact.json
index 4a1a46471..5ff346232 100644
--- a/app/javascript/dashboard/i18n/locale/nl/contact.json
+++ b/app/javascript/dashboard/i18n/locale/nl/contact.json
@@ -7,7 +7,7 @@
"COPY_SUCCESSFUL": "Succesvol gekopieerd naar klembord",
"COMPANY": "Bedrijfsnaam",
"LOCATION": "Locatie",
- "BROWSER_LANGUAGE": "Browser Language",
+ "BROWSER_LANGUAGE": "Browser Taal",
"CONVERSATION_TITLE": "Gesprekdetails",
"VIEW_PROFILE": "Profiel Bekijken",
"BROWSER": "Browser",
@@ -75,8 +75,8 @@
"DELETE_NOTE": {
"CONFIRM": {
"TITLE": "Verwijderen bevestigen",
- "MESSAGE": "Are you want sure to delete this note?",
- "YES": "Yes, Delete it",
+ "MESSAGE": "Weet je zeker dat je deze notitie wilt verwijderen?",
+ "YES": "Ja, verwijderen",
"NO": "Nee, Bewaar het"
}
},
@@ -153,10 +153,10 @@
"DELETE_AVATAR": {
"API": {
"SUCCESS_MESSAGE": "Contact avatar deleted successfully",
- "ERROR_MESSAGE": "Could not delete the contact avatar. Please try again later."
+ "ERROR_MESSAGE": "Contact avatar kon niet verwijderd worden. Probeer het later opnieuw."
}
},
- "SUCCESS_MESSAGE": "Contact saved successfully",
+ "SUCCESS_MESSAGE": "Contact succesvol opgeslagen",
"ERROR_MESSAGE": "Er is een fout opgetreden, probeer het opnieuw"
},
"NEW_CONVERSATION": {
@@ -166,15 +166,15 @@
"NO_INBOX": "Couldn't find an inbox to initiate a new conversation with this contact.",
"FORM": {
"TO": {
- "LABEL": "To"
+ "LABEL": "Aan"
},
"INBOX": {
- "LABEL": "Inbox",
+ "LABEL": "Postvak In",
"ERROR": "Select an inbox"
},
"SUBJECT": {
- "LABEL": "Subject",
- "PLACEHOLDER": "Subject",
+ "LABEL": "Onderwerp",
+ "PLACEHOLDER": "Onderwerp",
"ERROR": "Subject can't be empty"
},
"MESSAGE": {
@@ -184,44 +184,44 @@
},
"SUBMIT": "Send message",
"CANCEL": "Annuleren",
- "SUCCESS_MESSAGE": "Message sent!",
+ "SUCCESS_MESSAGE": "Bericht verzonden!",
"GO_TO_CONVERSATION": "Bekijken",
"ERROR_MESSAGE": "Couldn't send! try again"
}
},
"CONTACTS_PAGE": {
- "HEADER": "Contacts",
+ "HEADER": "Contacten",
"FIELDS": "Contact fields",
- "SEARCH_BUTTON": "Search",
- "SEARCH_INPUT_PLACEHOLDER": "Search for contacts",
+ "SEARCH_BUTTON": "Zoeken",
+ "SEARCH_INPUT_PLACEHOLDER": "Zoeken naar contacten",
"FILTER_CONTACTS": "Filteren",
- "FILTER_CONTACTS_SAVE": "Save filter",
- "FILTER_CONTACTS_DELETE": "Delete filter",
+ "FILTER_CONTACTS_SAVE": "Filter opslaan",
+ "FILTER_CONTACTS_DELETE": "Filter verwijderen",
"LIST": {
"LOADING_MESSAGE": "Loading contacts...",
- "404": "No contacts matches your search 🔍",
+ "404": "Er zijn geen contacten die overeenkomen met je zoekopdracht 🔍",
"NO_CONTACTS": "There are no available contacts",
"TABLE_HEADER": {
"NAME": "Naam",
- "PHONE_NUMBER": "Phone Number",
+ "PHONE_NUMBER": "Telefoonnummer",
"CONVERSATIONS": "Gesprekken",
- "LAST_ACTIVITY": "Last Activity",
+ "LAST_ACTIVITY": "Laatste Activiteit",
"COUNTRY": "Country",
- "CITY": "City",
+ "CITY": "Woonplaats",
"SOCIAL_PROFILES": "Social Profiles",
"COMPANY": "Bedrijfsnaam",
"EMAIL_ADDRESS": "Uw e-mailadres"
},
- "VIEW_DETAILS": "View details"
+ "VIEW_DETAILS": "Details bekijken"
}
},
"CONTACT_PROFILE": {
- "BACK_BUTTON": "Contacts",
+ "BACK_BUTTON": "Contacten",
"LOADING": "Loading contact profile..."
},
"REMINDER": {
"ADD_BUTTON": {
- "BUTTON": "Add",
+ "BUTTON": "Toevoegen",
"TITLE": "Shift + Enter to create a task"
},
"FOOTER": {
@@ -236,15 +236,15 @@
"TITLE": "Notes"
},
"LIST": {
- "LABEL": "added a note"
+ "LABEL": "heeft een notitie toegevoegd"
},
"ADD": {
- "BUTTON": "Add",
- "PLACEHOLDER": "Add a note",
+ "BUTTON": "Toevoegen",
+ "PLACEHOLDER": "Notitie toevoegen",
"TITLE": "Shift + Enter to create a note"
},
"CONTENT_HEADER": {
- "DELETE": "Delete note"
+ "DELETE": "Notitie verwijderen"
}
},
"EVENTS": {
@@ -297,39 +297,39 @@
"ERROR": "Unable to delete attribute. Please try again later"
},
"ATTRIBUTE_SELECT": {
- "TITLE": "Add attributes",
- "PLACEHOLDER": "Search attributes",
- "NO_RESULT": "No attributes found"
+ "TITLE": "Attributen toevoegen",
+ "PLACEHOLDER": "Attributen zoeken",
+ "NO_RESULT": "Geen attributen gevonden"
},
"ATTRIBUTE_TYPE": {
"LIST": {
- "PLACEHOLDER": "Select value",
- "SEARCH_INPUT_PLACEHOLDER": "Search value",
- "NO_RESULT": "No result found"
+ "PLACEHOLDER": "Selecteer waarde",
+ "SEARCH_INPUT_PLACEHOLDER": "Zoek waarde",
+ "NO_RESULT": "Geen resultaten gevonden"
}
}
},
"VALIDATIONS": {
- "REQUIRED": "Valid value is required",
- "INVALID_URL": "Invalid URL"
+ "REQUIRED": "Geldige waarde is vereist",
+ "INVALID_URL": "Ongeldige URL"
}
},
"MERGE_CONTACTS": {
- "TITLE": "Merge contacts",
+ "TITLE": "Contacten samenvoegen",
"DESCRIPTION": "Merge contacts to combine two profiles into one, including all attributes and conversations. In case of conflict, the Primary contact’ s attributes will take precedence.",
"PRIMARY": {
- "TITLE": "Primary contact",
- "HELP_LABEL": "To be kept"
+ "TITLE": "Primair contact",
+ "HELP_LABEL": "Te behouden"
},
"CHILD": {
- "TITLE": "Contact to merge",
- "PLACEHOLDER": "Search for a contact",
- "HELP_LABEL": "To be deleted"
+ "TITLE": "Contact om samen te voegen",
+ "PLACEHOLDER": "Zoeken naar contacten",
+ "HELP_LABEL": "Nog te verwijderen"
},
"SUMMARY": {
- "TITLE": "Summary",
- "DELETE_WARNING": "Contact of %{childContactName} will be deleted.",
- "ATTRIBUTE_WARNING": "Contact details of %{childContactName} will be copied to %{primaryContactName}."
+ "TITLE": "Samenvatting",
+ "DELETE_WARNING": "Contact van %{childContactName} zal worden verwijderd.",
+ "ATTRIBUTE_WARNING": "Contactgegevens van %{childContactName} worden gekopieerd naar %{primaryContactName}."
},
"SEARCH": {
"ERROR": "ERROR_MESSAGE"
diff --git a/app/javascript/dashboard/i18n/locale/nl/contactFilters.json b/app/javascript/dashboard/i18n/locale/nl/contactFilters.json
index a974c02e3..6c43a6ccd 100644
--- a/app/javascript/dashboard/i18n/locale/nl/contactFilters.json
+++ b/app/javascript/dashboard/i18n/locale/nl/contactFilters.json
@@ -1,49 +1,49 @@
{
"CONTACTS_FILTER": {
- "TITLE": "Filter Contacts",
- "SUBTITLE": "Add filters below and hit 'Submit' to filter contacts.",
- "ADD_NEW_FILTER": "Add Filter",
- "CLEAR_ALL_FILTERS": "Clear All Filters",
- "FILTER_DELETE_ERROR": "You should have atleast one filter to save",
+ "TITLE": "Contacten filteren",
+ "SUBTITLE": "Voeg hieronder filters toe en druk op 'Verzenden' om contacten te filteren.",
+ "ADD_NEW_FILTER": "Filter toevoegen",
+ "CLEAR_ALL_FILTERS": "Alle filters wissen",
+ "FILTER_DELETE_ERROR": "U moet minstens één filter hebben om op te slaan",
"SUBMIT_BUTTON_LABEL": "Bevestigen",
"CANCEL_BUTTON_LABEL": "Annuleren",
- "CLEAR_BUTTON_LABEL": "Clear Filters",
- "EMPTY_VALUE_ERROR": "Value is required",
- "TOOLTIP_LABEL": "Filter contacts",
+ "CLEAR_BUTTON_LABEL": "Filters wissen",
+ "EMPTY_VALUE_ERROR": "Waarde is vereist",
+ "TOOLTIP_LABEL": "Contacten filteren",
"QUERY_DROPDOWN_LABELS": {
- "AND": "AND",
- "OR": "OR"
+ "AND": "EN",
+ "OR": "OF"
},
"OPERATOR_LABELS": {
- "equal_to": "Equal to",
- "not_equal_to": "Not equal to",
- "contains": "Contains",
- "does_not_contain": "Does not contain",
- "is_present": "Is present",
- "is_not_present": "Is not present",
- "is_greater_than": "Is greater than",
- "is_lesser_than": "Is lesser than",
- "days_before": "Is x days before"
+ "equal_to": "Gelijk aan",
+ "not_equal_to": "Niet gelijk aan",
+ "contains": "Bevat",
+ "does_not_contain": "Bevat niet",
+ "is_present": "Is aanwezig",
+ "is_not_present": "Is niet aanwezig",
+ "is_greater_than": "Is groter dan",
+ "is_lesser_than": "Is minder dan",
+ "days_before": "Is x dagen vóór"
},
"ATTRIBUTES": {
"NAME": "Naam",
"EMAIL": "E-mailadres",
"PHONE_NUMBER": "Telefoon nummer",
"IDENTIFIER": "Identifier",
- "CITY": "City",
- "COUNTRY": "Country",
- "CUSTOM_ATTRIBUTE_LIST": "List",
- "CUSTOM_ATTRIBUTE_TEXT": "Text",
- "CUSTOM_ATTRIBUTE_NUMBER": "Number",
+ "CITY": "Woonplaats",
+ "COUNTRY": "Land",
+ "CUSTOM_ATTRIBUTE_LIST": "Lijst",
+ "CUSTOM_ATTRIBUTE_TEXT": "Tekst",
+ "CUSTOM_ATTRIBUTE_NUMBER": "Getal",
"CUSTOM_ATTRIBUTE_LINK": "Link",
- "CUSTOM_ATTRIBUTE_CHECKBOX": "Checkbox",
- "CREATED_AT": "Created At",
- "LAST_ACTIVITY": "Last Activity",
- "REFERER_LINK": "Referrer link"
+ "CUSTOM_ATTRIBUTE_CHECKBOX": "Selectievakje",
+ "CREATED_AT": "Aangemaakt op",
+ "LAST_ACTIVITY": "Laatste Activiteit",
+ "REFERER_LINK": "Verwijzer link"
},
"GROUPS": {
- "STANDARD_FILTERS": "Standard Filters",
- "ADDITIONAL_FILTERS": "Additional Filters",
+ "STANDARD_FILTERS": "Standaard Filters",
+ "ADDITIONAL_FILTERS": "Aanvullende filters",
"CUSTOM_ATTRIBUTES": "Aanpasbare attributen"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/nl/conversation.json b/app/javascript/dashboard/i18n/locale/nl/conversation.json
index 6d92fca81..d92643b8e 100644
--- a/app/javascript/dashboard/i18n/locale/nl/conversation.json
+++ b/app/javascript/dashboard/i18n/locale/nl/conversation.json
@@ -1,7 +1,7 @@
{
"CONVERSATION": {
"SELECT_A_CONVERSATION": "Selecteer een gesprek in het linker paneel",
- "CSAT_REPLY_MESSAGE": "Please rate the conversation",
+ "CSAT_REPLY_MESSAGE": "Beoordeel het gesprek",
"404": "Sorry, we cannot find the conversation. Please try again",
"SWITCH_VIEW_LAYOUT": "Switch the layout",
"DASHBOARD_APP_TAB_MESSAGES": "Messages",
@@ -144,14 +144,14 @@
"CHANGE_TEAM": "Conversation team changed",
"FILE_SIZE_LIMIT": "File exceeds the {MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE} MB attachment limit",
"MESSAGE_ERROR": "Unable to send this message, please try again later",
- "SENT_BY": "Sent by:",
+ "SENT_BY": "Verzonden door:",
"BOT": "Bot",
- "SEND_FAILED": "Couldn't send message! Try again",
- "TRY_AGAIN": "retry",
+ "SEND_FAILED": "Kon bericht niet verzenden! Probeer het opnieuw",
+ "TRY_AGAIN": "opnieuw proberen",
"ASSIGNMENT": {
- "SELECT_AGENT": "Select Agent",
+ "SELECT_AGENT": "Selecteer medewerker",
"REMOVE": "Verwijderen",
- "ASSIGN": "Assign"
+ "ASSIGN": "Toewijzen"
},
"CONTEXT_MENU": {
"COPY": "Kopiëren",
@@ -160,7 +160,7 @@
}
},
"EMAIL_TRANSCRIPT": {
- "TITLE": "Send conversation transcript",
+ "TITLE": "Verstuur conversatie transcript",
"DESC": "Send a copy of the conversation transcript to the specified email address",
"SUBMIT": "Bevestigen",
"CANCEL": "Annuleren",
@@ -224,7 +224,7 @@
"ERROR": "Unable to update attribute. Please try again later"
},
"ADD": {
- "TITLE": "Add",
+ "TITLE": "Toevoegen",
"SUCCESS": "Attribute added successfully",
"ERROR": "Unable to add attribute. Please try again later"
},
@@ -234,13 +234,13 @@
},
"ATTRIBUTE_SELECT": {
"TITLE": "Add attributes",
- "PLACEHOLDER": "Search attributes",
- "NO_RESULT": "No attributes found"
+ "PLACEHOLDER": "Attributen zoeken",
+ "NO_RESULT": "Geen attributen gevonden"
}
},
"EMAIL_HEADER": {
- "FROM": "From",
- "TO": "To",
+ "FROM": "van",
+ "TO": "Aan",
"BCC": "Bcc",
"CC": "Cc",
"SUBJECT": "Subject"
diff --git a/app/javascript/dashboard/i18n/locale/nl/csatMgmt.json b/app/javascript/dashboard/i18n/locale/nl/csatMgmt.json
index d7d2efc2a..c57dfca3d 100644
--- a/app/javascript/dashboard/i18n/locale/nl/csatMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/nl/csatMgmt.json
@@ -1,6 +1,6 @@
{
"CSAT": {
- "TITLE": "Rate your conversation",
- "PLACEHOLDER": "Tell us more..."
+ "TITLE": "Beoordeel uw gesprek",
+ "PLACEHOLDER": "Vertel ons meer..."
}
}
diff --git a/app/javascript/dashboard/i18n/locale/nl/emoji.json b/app/javascript/dashboard/i18n/locale/nl/emoji.json
index fd81268fb..a4d551940 100644
--- a/app/javascript/dashboard/i18n/locale/nl/emoji.json
+++ b/app/javascript/dashboard/i18n/locale/nl/emoji.json
@@ -1,6 +1,6 @@
{
"EMOJI": {
- "PLACEHOLDER": "Search emojis",
- "NOT_FOUND": "No emoji match your search"
+ "PLACEHOLDER": "Zoek emojis",
+ "NOT_FOUND": "Er zijn geen overeenkomende emoji's gevonden"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/nl/helpCenter.json b/app/javascript/dashboard/i18n/locale/nl/helpCenter.json
index d643cf352..5fa24ea85 100644
--- a/app/javascript/dashboard/i18n/locale/nl/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/nl/helpCenter.json
@@ -32,7 +32,7 @@
"TITLE": "Article Settings",
"FORM": {
"CATEGORY": {
- "LABEL": "Category",
+ "LABEL": "Categorie",
"TITLE": "Select category",
"PLACEHOLDER": "Select category",
"NO_RESULT": "No category found",
@@ -286,7 +286,7 @@
"NO_ARTICLES": "There are no available articles",
"HEADERS": {
"TITLE": "Title",
- "CATEGORY": "Category",
+ "CATEGORY": "Categorie",
"READ_COUNT": "Read count",
"STATUS": "Status",
"LAST_EDITED": "Last edited"
diff --git a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json
index 9fae19dbf..74acb5f5c 100644
--- a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website kanaal",
"DESC": "Maak een kanaal voor uw website en begin met het ondersteunen van uw klanten via onze website widget.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
@@ -659,7 +667,7 @@
"BODY": {
"TEAM_AVAILABILITY": {
"ONLINE": "We are Online",
- "OFFLINE": "Op dit moment zijn we niet aanwezig"
+ "OFFLINE": "We zijn momenteel afwezig"
},
"USER_MESSAGE": "Hi",
"AGENT_MESSAGE": "Hello"
diff --git a/app/javascript/dashboard/i18n/locale/nl/integrationApps.json b/app/javascript/dashboard/i18n/locale/nl/integrationApps.json
index 22ca277d6..909d96b7e 100644
--- a/app/javascript/dashboard/i18n/locale/nl/integrationApps.json
+++ b/app/javascript/dashboard/i18n/locale/nl/integrationApps.json
@@ -30,7 +30,7 @@
},
"LIST": {
"FETCHING": "Fetching integration hooks",
- "INBOX": "Inbox",
+ "INBOX": "Postvak In",
"DELETE": {
"BUTTON_TEXT": "Verwijderen"
}
diff --git a/app/javascript/dashboard/i18n/locale/nl/integrations.json b/app/javascript/dashboard/i18n/locale/nl/integrations.json
index 084762439..754c6670f 100644
--- a/app/javascript/dashboard/i18n/locale/nl/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/nl/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Verwijderen",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/nl/labelsMgmt.json b/app/javascript/dashboard/i18n/locale/nl/labelsMgmt.json
index 5d7f6d19c..ef9334a21 100644
--- a/app/javascript/dashboard/i18n/locale/nl/labelsMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/nl/labelsMgmt.json
@@ -19,9 +19,9 @@
"NAME": {
"LABEL": "Label naam",
"PLACEHOLDER": "Label naam",
- "REQUIRED_ERROR": "Label name is required",
- "MINIMUM_LENGTH_ERROR": "Minimum length 2 is required",
- "VALID_ERROR": "Only Alphabets, Numbers, Hyphen and Underscore are allowed"
+ "REQUIRED_ERROR": "Labelnaam is vereist",
+ "MINIMUM_LENGTH_ERROR": "Minimum lengte van 2 is vereist",
+ "VALID_ERROR": "Enkel letters, cijfers, liggend streepje & underscore zijn toegestaan"
},
"DESCRIPTION": {
"LABEL": "Beschrijving",
diff --git a/app/javascript/dashboard/i18n/locale/nl/macros.json b/app/javascript/dashboard/i18n/locale/nl/macros.json
index 760fa4392..67d3e4177 100644
--- a/app/javascript/dashboard/i18n/locale/nl/macros.json
+++ b/app/javascript/dashboard/i18n/locale/nl/macros.json
@@ -26,9 +26,9 @@
"LIST": {
"TABLE_HEADER": [
"Naam",
- "Created by",
+ "Aangemaakt door",
"Last updated by",
- "Visibility"
+ "Zichtbaarheid"
],
"404": "No macros found"
},
@@ -37,7 +37,7 @@
"CONFIRM": {
"MESSAGE": "Weet u zeker dat u wilt verwijderen ",
"YES": "Ja, verwijderen",
- "NO": "No"
+ "NO": "Nee"
},
"API": {
"SUCCESS_MESSAGE": "Macro deleted successfully",
diff --git a/app/javascript/dashboard/i18n/locale/nl/report.json b/app/javascript/dashboard/i18n/locale/nl/report.json
index 1f8337af4..5bd7f3ea0 100644
--- a/app/javascript/dashboard/i18n/locale/nl/report.json
+++ b/app/javascript/dashboard/i18n/locale/nl/report.json
@@ -3,7 +3,7 @@
"HEADER": "Gesprekken",
"LOADING_CHART": "Kaartgegevens laden...",
"NO_ENOUGH_DATA": "We hebben niet genoeg datapunten ontvangen om een rapport te genereren, probeer het later opnieuw.",
- "DOWNLOAD_AGENT_REPORTS": "Download agent reports",
+ "DOWNLOAD_AGENT_REPORTS": "Medewerkerrapporten downloaden",
"METRICS": {
"CONVERSATIONS": {
"NAME": "Gesprekken",
@@ -18,15 +18,15 @@
"DESC": "( Totaal )"
},
"FIRST_RESPONSE_TIME": {
- "NAME": "First Response Time",
+ "NAME": "Eerste reactietijd",
"DESC": "(Gem. )",
- "INFO_TEXT": "Total number of conversations used for computation:",
- "TOOLTIP_TEXT": "First Response Time is %{metricValue} (based on %{conversationCount} conversations)"
+ "INFO_TEXT": "Totaal aantal conversaties gebruikt voor berekening:",
+ "TOOLTIP_TEXT": "Eerste Reactie Tijd is %{metricValue} (gebaseerd op %{conversationCount} gesprekken)"
},
"RESOLUTION_TIME": {
"NAME": "Resolutie Tijd",
"DESC": "(Gem. )",
- "INFO_TEXT": "Total number of conversations used for computation:",
+ "INFO_TEXT": "Totaal aantal conversaties gebruikt voor berekening:",
"TOOLTIP_TEXT": "Resolution Time is %{metricValue} (based on %{conversationCount} conversations)"
},
"RESOLUTION_COUNT": {
@@ -120,8 +120,8 @@
"HEADER": "Agents Overview",
"LOADING_CHART": "Kaartgegevens laden...",
"NO_ENOUGH_DATA": "We hebben niet genoeg datapunten ontvangen om een rapport te genereren, probeer het later opnieuw.",
- "DOWNLOAD_AGENT_REPORTS": "Download agent reports",
- "FILTER_DROPDOWN_LABEL": "Select Agent",
+ "DOWNLOAD_AGENT_REPORTS": "Medewerkerrapporten downloaden",
+ "FILTER_DROPDOWN_LABEL": "Selecteer medewerker",
"METRICS": {
"CONVERSATIONS": {
"NAME": "Gesprekken",
@@ -136,15 +136,15 @@
"DESC": "( Totaal )"
},
"FIRST_RESPONSE_TIME": {
- "NAME": "First Response Time",
+ "NAME": "Eerste reactietijd",
"DESC": "(Gem. )",
- "INFO_TEXT": "Total number of conversations used for computation:",
- "TOOLTIP_TEXT": "First Response Time is %{metricValue} (based on %{conversationCount} conversations)"
+ "INFO_TEXT": "Totaal aantal conversaties gebruikt voor berekening:",
+ "TOOLTIP_TEXT": "Eerste Reactie Tijd is %{metricValue} (gebaseerd op %{conversationCount} gesprekken)"
},
"RESOLUTION_TIME": {
"NAME": "Resolutie Tijd",
"DESC": "(Gem. )",
- "INFO_TEXT": "Total number of conversations used for computation:",
+ "INFO_TEXT": "Totaal aantal conversaties gebruikt voor berekening:",
"TOOLTIP_TEXT": "Resolution Time is %{metricValue} (based on %{conversationCount} conversations)"
},
"RESOLUTION_COUNT": {
@@ -203,15 +203,15 @@
"DESC": "( Totaal )"
},
"FIRST_RESPONSE_TIME": {
- "NAME": "First Response Time",
+ "NAME": "Eerste reactietijd",
"DESC": "(Gem. )",
- "INFO_TEXT": "Total number of conversations used for computation:",
- "TOOLTIP_TEXT": "First Response Time is %{metricValue} (based on %{conversationCount} conversations)"
+ "INFO_TEXT": "Totaal aantal conversaties gebruikt voor berekening:",
+ "TOOLTIP_TEXT": "Eerste Reactie Tijd is %{metricValue} (gebaseerd op %{conversationCount} gesprekken)"
},
"RESOLUTION_TIME": {
"NAME": "Resolutie Tijd",
"DESC": "(Gem. )",
- "INFO_TEXT": "Total number of conversations used for computation:",
+ "INFO_TEXT": "Totaal aantal conversaties gebruikt voor berekening:",
"TOOLTIP_TEXT": "Resolution Time is %{metricValue} (based on %{conversationCount} conversations)"
},
"RESOLUTION_COUNT": {
@@ -270,15 +270,15 @@
"DESC": "( Totaal )"
},
"FIRST_RESPONSE_TIME": {
- "NAME": "First Response Time",
+ "NAME": "Eerste reactietijd",
"DESC": "(Gem. )",
- "INFO_TEXT": "Total number of conversations used for computation:",
- "TOOLTIP_TEXT": "First Response Time is %{metricValue} (based on %{conversationCount} conversations)"
+ "INFO_TEXT": "Totaal aantal conversaties gebruikt voor berekening:",
+ "TOOLTIP_TEXT": "Eerste Reactie Tijd is %{metricValue} (gebaseerd op %{conversationCount} gesprekken)"
},
"RESOLUTION_TIME": {
"NAME": "Resolutie Tijd",
"DESC": "(Gem. )",
- "INFO_TEXT": "Total number of conversations used for computation:",
+ "INFO_TEXT": "Totaal aantal conversaties gebruikt voor berekening:",
"TOOLTIP_TEXT": "Resolution Time is %{metricValue} (based on %{conversationCount} conversations)"
},
"RESOLUTION_COUNT": {
@@ -337,15 +337,15 @@
"DESC": "( Totaal )"
},
"FIRST_RESPONSE_TIME": {
- "NAME": "First Response Time",
+ "NAME": "Eerste reactietijd",
"DESC": "(Gem. )",
- "INFO_TEXT": "Total number of conversations used for computation:",
- "TOOLTIP_TEXT": "First Response Time is %{metricValue} (based on %{conversationCount} conversations)"
+ "INFO_TEXT": "Totaal aantal conversaties gebruikt voor berekening:",
+ "TOOLTIP_TEXT": "Eerste Reactie Tijd is %{metricValue} (gebaseerd op %{conversationCount} gesprekken)"
},
"RESOLUTION_TIME": {
"NAME": "Resolutie Tijd",
"DESC": "(Gem. )",
- "INFO_TEXT": "Total number of conversations used for computation:",
+ "INFO_TEXT": "Totaal aantal conversaties gebruikt voor berekening:",
"TOOLTIP_TEXT": "Resolution Time is %{metricValue} (based on %{conversationCount} conversations)"
},
"RESOLUTION_COUNT": {
diff --git a/app/javascript/dashboard/i18n/locale/nl/setNewPassword.json b/app/javascript/dashboard/i18n/locale/nl/setNewPassword.json
index ba7ed192b..8fe328f4d 100644
--- a/app/javascript/dashboard/i18n/locale/nl/setNewPassword.json
+++ b/app/javascript/dashboard/i18n/locale/nl/setNewPassword.json
@@ -16,7 +16,7 @@
"ERROR_MESSAGE": "Kan geen verbinding maken met Woot Server, probeer het later opnieuw"
},
"CAPTCHA": {
- "ERROR": "Verification expired. Please solve captcha again."
+ "ERROR": "Verificatie verlopen. Los de captcha opnieuw op."
},
"SUBMIT": "Bevestigen"
}
diff --git a/app/javascript/dashboard/i18n/locale/nl/settings.json b/app/javascript/dashboard/i18n/locale/nl/settings.json
index dc9f7c573..edc7a0327 100644
--- a/app/javascript/dashboard/i18n/locale/nl/settings.json
+++ b/app/javascript/dashboard/i18n/locale/nl/settings.json
@@ -22,11 +22,11 @@
"SEND_MESSAGE": {
"TITLE": "Hotkey to send messages",
"NOTE": "You can select a hotkey (either Enter or Cmd/Ctrl+Enter) based on your preference of writing.",
- "UPDATE_SUCCESS": "Your settings have been updated successfully",
+ "UPDATE_SUCCESS": "Uw instellingen zijn met succes bijgewerkt",
"CARD": {
"ENTER_KEY": {
"HEADING": "Enter (↵)",
- "CONTENT": "Send messages by pressing Enter key instead of clicking the send button."
+ "CONTENT": "Verstuur berichten door op Enter te drukken in plaats van op de verzendknop te klikken."
},
"CMD_ENTER_KEY": {
"HEADING": "Cmd/Ctrl + Enter (⌘ + ↵)",
@@ -194,7 +194,7 @@
"UNATTENDED_CONVERSATIONS": "Unattended",
"REPORTS": "Rapporten",
"SETTINGS": "Instellingen",
- "CONTACTS": "Contacts",
+ "CONTACTS": "Contacten",
"HOME": "Startpagina",
"AGENTS": "Medewerkers",
"AGENT_BOTS": "Bots",
@@ -225,7 +225,7 @@
"ONE_OFF": "One off",
"REPORTS_AGENT": "Medewerkers",
"REPORTS_LABEL": "Labelen",
- "REPORTS_INBOX": "Inbox",
+ "REPORTS_INBOX": "Postvak In",
"REPORTS_TEAM": "Team",
"SET_AVAILABILITY_TITLE": "Set yourself as",
"BETA": "Beta",
@@ -237,7 +237,7 @@
"MY_ARTICLES": "My Articles",
"DRAFT": "Draft",
"ARCHIVED": "Archived",
- "CATEGORY": "Category",
+ "CATEGORY": "Categorie",
"CATEGORY_EMPTY_MESSAGE": "No categories found"
},
"SET_AUTO_OFFLINE": {
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json
index bbcf28156..aa5ac5d9c 100644
--- a/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json
+++ b/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json
@@ -2,24 +2,24 @@
"WHATSAPP_TEMPLATES": {
"MODAL": {
"TITLE": "Whatsapp Templates",
- "SUBTITLE": "Select the whatsapp template you want to send",
- "TEMPLATE_SELECTED_SUBTITLE": "Process %{templateName}"
+ "SUBTITLE": "Selecteer de whatsapp template die u wilt verzenden",
+ "TEMPLATE_SELECTED_SUBTITLE": "Verwerk %{templateName}"
},
"PICKER": {
- "SEARCH_PLACEHOLDER": "Search Templates",
- "NO_TEMPLATES_FOUND": "No templates found for",
+ "SEARCH_PLACEHOLDER": "Templates zoeken",
+ "NO_TEMPLATES_FOUND": "Geen templates gevonden voor",
"LABELS": {
- "LANGUAGE": "Language",
- "TEMPLATE_BODY": "Template Body",
- "CATEGORY": "Category"
+ "LANGUAGE": "Taal",
+ "TEMPLATE_BODY": "Template bericht",
+ "CATEGORY": "Categorie"
}
},
"PARSER": {
- "VARIABLES_LABEL": "Variables",
- "VARIABLE_PLACEHOLDER": "Enter %{variable} value",
- "GO_BACK_LABEL": "Go Back",
- "SEND_MESSAGE_LABEL": "Send Message",
- "FORM_ERROR_MESSAGE": "Please fill all variables before sending"
+ "VARIABLES_LABEL": "Variabelen",
+ "VARIABLE_PLACEHOLDER": "Voer %{variable} waarde in",
+ "GO_BACK_LABEL": "Ga terug",
+ "SEND_MESSAGE_LABEL": "Verstuur bericht",
+ "FORM_ERROR_MESSAGE": "Vul alstublieft alle variabelen in voordat u deze verzendt"
}
}
}
diff --git a/app/javascript/dashboard/i18n/locale/no/agentBots.json b/app/javascript/dashboard/i18n/locale/no/agentBots.json
index 1876fe5a0..beb2b8ae1 100644
--- a/app/javascript/dashboard/i18n/locale/no/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/no/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Oppdater",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/no/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/no/attributesMgmt.json
index b26ebc840..d4aa4acd1 100644
--- a/app/javascript/dashboard/i18n/locale/no/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/no/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json
index 0751dfcb6..a9dbc6fa2 100644
--- a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Nettsidekanal",
"DESC": "Opprett en kanal for nettstedet ditt og begynn å hjelpe kundene dine via nettstedswidgeten.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/no/integrations.json b/app/javascript/dashboard/i18n/locale/no/integrations.json
index 7b51269ba..f5b663887 100644
--- a/app/javascript/dashboard/i18n/locale/no/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/no/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Slett",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/no/settings.json b/app/javascript/dashboard/i18n/locale/no/settings.json
index a031f2afb..cf6ef2587 100644
--- a/app/javascript/dashboard/i18n/locale/no/settings.json
+++ b/app/javascript/dashboard/i18n/locale/no/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/pl/agentBots.json b/app/javascript/dashboard/i18n/locale/pl/agentBots.json
index daba1655c..c3311e643 100644
--- a/app/javascript/dashboard/i18n/locale/pl/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/pl/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Aktualizuj",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/pl/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/pl/attributesMgmt.json
index 447f6bc95..3853cea94 100644
--- a/app/javascript/dashboard/i18n/locale/pl/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/pl/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json
index b8e759081..ed2a1b9df 100644
--- a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Utwórz rozmowy ze wspomnianych Tweetów"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Kanał strony internetowej",
"DESC": "Utwórz kanał dla swojej strony internetowej i zacznij wspierać swoich klientów za pomocą naszego widżetu na stronie.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Włącz SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Ustaw szczegóły SMTP",
diff --git a/app/javascript/dashboard/i18n/locale/pl/integrations.json b/app/javascript/dashboard/i18n/locale/pl/integrations.json
index 30fc52fbb..0c05a26f9 100644
--- a/app/javascript/dashboard/i18n/locale/pl/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/pl/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Usuń",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/pl/settings.json b/app/javascript/dashboard/i18n/locale/pl/settings.json
index f49b408b5..50252f10f 100644
--- a/app/javascript/dashboard/i18n/locale/pl/settings.json
+++ b/app/javascript/dashboard/i18n/locale/pl/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/pt/agentBots.json b/app/javascript/dashboard/i18n/locale/pt/agentBots.json
index af18643f2..c2936fc33 100644
--- a/app/javascript/dashboard/i18n/locale/pt/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/pt/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Atualização",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/pt/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/pt/attributesMgmt.json
index dba146efd..7fb98f473 100644
--- a/app/javascript/dashboard/i18n/locale/pt/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/pt/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Atributo Personalizado adicionado com sucesso",
- "ERROR_MESSAGE": "Não foi possível criar um atributo personalizado, por favor tente novamente mais tarde"
+ "SUCCESS_MESSAGE": "Atributo Personalizado adicionado com sucesso!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json
index 27f589d99..f6eeda99a 100644
--- a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Canal do site",
"DESC": "Crie um canal para seu site e comece a oferecer suporte a seus clientes através do nosso widget do site.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Habilitar SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Defina os seus dados IMAP",
diff --git a/app/javascript/dashboard/i18n/locale/pt/integrations.json b/app/javascript/dashboard/i18n/locale/pt/integrations.json
index acd922339..014afdfee 100644
--- a/app/javascript/dashboard/i18n/locale/pt/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/pt/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot irá agora sincronizar todas as mensagens recebidas através do canal de conversas com clientes dentro do seu local de trabalho do Slack.
A resposta a uma mensagem nas conversas com o cliente no seu canal de slack irá criar uma resposta para o cliente através do Chatwoot.
Comece as respostas com nota: para criar notas privadas em vez de respostas.
Se o remetente do slack tiver um perfil de agente no Chatwoot com o mesmo e-mail, as respostas serão associadas de acordo com isso.
Quando a pessoa que responde não tiver um perfil de agente associado, as respostas serão dadas a partir do perfil do bot.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "excluir",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/pt/settings.json b/app/javascript/dashboard/i18n/locale/pt/settings.json
index e5398cab0..78ca84600 100644
--- a/app/javascript/dashboard/i18n/locale/pt/settings.json
+++ b/app/javascript/dashboard/i18n/locale/pt/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Abrir conversa",
"RESOLVE_AND_NEXT": "Resolver e passar para a próxima",
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/agentBots.json b/app/javascript/dashboard/i18n/locale/pt_BR/agentBots.json
index 58052ba3b..949867365 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Selecione um bot de agente",
"DESC": "Você pode definir um bot de agente da lista para esta caixa de entrada. O bot pode inicialmente lidar com a conversa e transferi-la para um agente quando necessário.",
"SUBMIT": "Atualizar",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Agente de bot atualizado com sucesso",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Não foi possível atualizar o bot de agente, por favor tente novamente mais tarde",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Selecionar Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/pt_BR/attributesMgmt.json
index 082c6d190..0975b0790 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/attributesMgmt.json
@@ -1,8 +1,8 @@
{
"ATTRIBUTES_MGMT": {
"HEADER": "Atributos Personalizados",
- "HEADER_BTN_TXT": "Adicionar atributo personalizado",
- "LOADING": "Buscando atributos personalizados",
+ "HEADER_BTN_TXT": "Criar atributo personalizado",
+ "LOADING": "Buscando atributos",
"SIDEBAR_TXT": "
Atributos personalizados
Um atributo customizado rastreia fatos sobre seus contatos/conversa — como o plano de inscrição, ou quando eles compraram o primeiro item, etc.
Para criar um atributo personalizado, basta clicar noAdicionar atributo personalizado. Você também pode editar ou apagar um atributo existente clicando em Editar ou Apagar botão.
",
"ADD": {
"TITLE": "Adicionar atributo personalizado",
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Atributo personalizado adicionado com sucesso",
- "ERROR_MESSAGE": "Não foi possível criar um atributo personalizado, por favor, tente novamente mais tarde"
+ "SUCCESS_MESSAGE": "Atributo personalizado adicionado com sucesso!",
+ "ERROR_MESSAGE": "Não foi possível criar um atributo personalizado. Por favor, tente novamente mais tarde."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json b/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json
index 0bc4b0f2d..17bdb472a 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json
@@ -8,7 +8,7 @@
},
"TAB_HEADING": "Conversas",
"MENTION_HEADING": "Menções",
- "UNATTENDED_HEADING": "Não atendidas",
+ "UNATTENDED_HEADING": "Não Atendidas",
"SEARCH": {
"INPUT": "Pesquisar pessoas, conversas, respostas salvas .."
},
@@ -57,7 +57,7 @@
"REPLY_TO_TWEET": "Responder a este tweet",
"LINK_TO_STORY": "Vá para o Story do Instagram",
"SENT": "Enviado com sucesso",
- "READ": "Leitura com sucesso",
+ "READ": "Lido com sucesso",
"DELIVERED": "Entregue com sucesso",
"NO_MESSAGES": "Nova Mensagem",
"NO_CONTENT": "Nenhum conteúdo disponível",
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/contact.json b/app/javascript/dashboard/i18n/locale/pt_BR/contact.json
index 705d59a5a..faed77d6a 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/contact.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/contact.json
@@ -81,7 +81,7 @@
}
},
"DELETE_CONTACT": {
- "BUTTON_LABEL": "Excluir contato",
+ "BUTTON_LABEL": "Excluir Contato",
"TITLE": "Excluir contato",
"DESC": "Excluir detalhes do contato",
"CONFIRM": {
@@ -152,7 +152,7 @@
},
"DELETE_AVATAR": {
"API": {
- "SUCCESS_MESSAGE": "Avatar de contato excluído com sucesso",
+ "SUCCESS_MESSAGE": "Avatar do contato excluído com sucesso",
"ERROR_MESSAGE": "Não foi possível excluir o avatar do contato. Por favor, tente novamente mais tarde."
}
},
@@ -195,7 +195,7 @@
"SEARCH_BUTTON": "Pesquisar",
"SEARCH_INPUT_PLACEHOLDER": "Procurar contatos",
"FILTER_CONTACTS": "Filtro",
- "FILTER_CONTACTS_SAVE": "Salvar Filtro",
+ "FILTER_CONTACTS_SAVE": "Salvar filtro",
"FILTER_CONTACTS_DELETE": "Excluir filtro",
"LIST": {
"LOADING_MESSAGE": "Carregando contatos...",
@@ -217,7 +217,7 @@
},
"CONTACT_PROFILE": {
"BACK_BUTTON": "Contato",
- "LOADING": "Carregando perfil de contato..."
+ "LOADING": "Carregando o perfil do contato..."
},
"REMINDER": {
"ADD_BUTTON": {
@@ -236,7 +236,7 @@
"TITLE": "Observações"
},
"LIST": {
- "LABEL": "Adicionando uma anotação"
+ "LABEL": "adicionou uma anotação"
},
"ADD": {
"BUTTON": "Adicionar",
@@ -244,7 +244,7 @@
"TITLE": "Shift + Enter para criar uma nota"
},
"CONTENT_HEADER": {
- "DELETE": "Deletar Anotação"
+ "DELETE": "Excluir anotação"
}
},
"EVENTS": {
@@ -258,7 +258,7 @@
}
},
"CUSTOM_ATTRIBUTES": {
- "ADD_BUTTON_TEXT": "Adicionar atributo",
+ "ADD_BUTTON_TEXT": "Adicionar atributos",
"BUTTON": "Criar atributo personalizado",
"NOT_AVAILABLE": "Não há atributos personalizados para este contato.",
"COPY_SUCCESSFUL": "Copiado para área de transferência com sucesso",
@@ -297,7 +297,7 @@
"ERROR": "Não foi possível excluir o atributo. Por favor, tente mais tarde"
},
"ATTRIBUTE_SELECT": {
- "TITLE": "Adicionar atributo",
+ "TITLE": "Adicionar atributos",
"PLACEHOLDER": "Procurar atributos",
"NO_RESULT": "Nenhum atributo encontrado"
},
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json b/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json
index d7c09d677..5a1d157db 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json
@@ -42,8 +42,8 @@
"RATING_TITLE": "Classificação",
"FEEDBACK_TITLE": "Feedback",
"CARD": {
- "SHOW_LABELS": "Show labels",
- "HIDE_LABELS": "Hide labels"
+ "SHOW_LABELS": "Mostrar rótulos",
+ "HIDE_LABELS": "Ocultar os rótulos"
},
"HEADER": {
"RESOLVE_ACTION": "Resolver",
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json
index d6ee3ebd3..c7f7d5d8c 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Criar conversas dos Tweets mencionados"
}
},
+ "MICROSOFT": {
+ "HELP": "Para adicionar sua conta da Microsoft como um canal, você precisa autenticar em sua conta clicando em 'Entrar com a Microsoft' ",
+ "ERROR_MESSAGE": "Ocorreu um erro ao conectar com a Microsoft, por favor, tente novamente"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Canal do website",
"DESC": "Crie um canal para seu site e comece a oferecer suporte a seus clientes através do nosso widget do site.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Habilitar o SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Autorize novamente sua conta MICROSOFT"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Defina seus detalhes do SMTP",
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json
index fe3869878..e63c2d889 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot irá agora sincronizar todas as conversas recebidas no canal de conversas com clientes dentro de seu local de trabalho de slack.
A resposta para uma conversa em conversas ao cliente canal de slack irá criar uma resposta para o cliente através do chatwoot.
Inicie as respostas com nota: para criar notas privadas em vez de respostas.
Se o remetente do slack tiver um perfil de agente no chatwoot sob o mesmo e-mail, as respostas serão associadas de acordo.
Quando o respondente não tiver um perfil de agente associado, as respostas serão dadas a partir do perfil do bot.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Clique aqui para entrar",
+ "LEAVE_THE_ROOM": "Sair da sala",
+ "START_VIDEO_CALL_HELP_TEXT": "Iniciar uma nova chamada de vídeo com o cliente",
+ "JOIN_ERROR": "Houve um erro ao entrar na chamada, por favor tente novamente",
+ "CREATE_ERROR": "Houve um erro ao criar o link da reunião, por favor tente novamente"
+ },
"DELETE": {
"BUTTON_TEXT": "Excluir",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json
index 4357a0688..5ab73e4a7 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json
@@ -59,18 +59,18 @@
"TITLE": "Notificações de Áudio",
"NOTE": "Habilitar notificações de áudio no painel para novas mensagens e conversas.",
"ALERT_TYPE": {
- "TITLE": "Alert events:",
+ "TITLE": "Tipo de Alerta:",
"NONE": "Nenhuma",
"ASSIGNED": "Conversas atribuídas",
"ALL_CONVERSATIONS": "Todas as conversas"
},
"DEFAULT_TONE": {
- "TITLE": "Alert tone:"
+ "TITLE": "Titulo:"
},
"CONDITIONS": {
- "TITLE": "Alert conditions:",
- "CONDITION_ONE": "Send audio alerts only if the browser window is not active",
- "CONDITION_TWO": "Send alerts every 30s until all the assigned conversations are read"
+ "TITLE": "Condições:",
+ "CONDITION_ONE": "Enviar alertas de áudio apenas se a janela do navegador não estiver ativa",
+ "CONDITION_TWO": "Enviar alertas a cada 30 segundos até que todas as conversas atribuídas sejam lidas"
}
},
"EMAIL_NOTIFICATIONS_SECTION": {
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "Alternar Modal",
"TITLE": {
"OPEN_CONVERSATION": "Abrir conversa",
"RESOLVE_AND_NEXT": "Resolver e ir para o próximo",
diff --git a/app/javascript/dashboard/i18n/locale/ro/agentBots.json b/app/javascript/dashboard/i18n/locale/ro/agentBots.json
index fadaea456..000279747 100644
--- a/app/javascript/dashboard/i18n/locale/ro/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ro/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Actualizare",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ro/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ro/attributesMgmt.json
index 67eb28a0a..7e3d61dbb 100644
--- a/app/javascript/dashboard/i18n/locale/ro/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ro/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Atribut personalizat adăugat cu succes",
- "ERROR_MESSAGE": "Nu s-a putut crea un atribut personalizat, încercați din nou mai târziu"
+ "SUCCESS_MESSAGE": "Atribut personalizat adăugat cu succes!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json
index c7c75f172..6ca591740 100644
--- a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Creați conversații din tweet-urile menționate"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Canal web",
"DESC": "Creați un canal pentru site-ul dvs. și începeți să asigurati suportul clienților prin intermediul widget-ului nostru web.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Activare SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Setarea detaliilor SMTP",
diff --git a/app/javascript/dashboard/i18n/locale/ro/integrations.json b/app/javascript/dashboard/i18n/locale/ro/integrations.json
index 05c7f380e..3f8587056 100644
--- a/app/javascript/dashboard/i18n/locale/ro/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ro/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot va sincroniza acum toate conversațiile primite în canalul de conversații cu clienții din interiorul locului de muncă slăbit.
Răspunsul la un fir de conversație în canalul de slăbire a conversațiilor clienților va crea un răspuns înapoi la client prin chatwoot.
Începeți răspunsurile cu notă: pentru a crea note private în loc de răspunsuri.
În cazul în care replier pe slack are un profil de agent în chatwoot sub același e-mail, răspunsurile vor fi asociate în consecință.
Atunci când replierul nu are un profil de agent asociat, răspunsurile vor fi făcute din profilul botului.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Şterge",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ro/settings.json b/app/javascript/dashboard/i18n/locale/ro/settings.json
index 5e5706b72..aa06cd0e6 100644
--- a/app/javascript/dashboard/i18n/locale/ro/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ro/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Deschiderea conversației",
"RESOLVE_AND_NEXT": "Rezolvarea și trecerea la următorul",
diff --git a/app/javascript/dashboard/i18n/locale/ru/agentBots.json b/app/javascript/dashboard/i18n/locale/ru/agentBots.json
index 81ded708e..eb2897ceb 100644
--- a/app/javascript/dashboard/i18n/locale/ru/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ru/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Выберите бота агента",
"DESC": "Вы можете задать бота агента из списка в этот ящик. Бот изначально может обработать разговор и передать его агенту в случае необходимости.",
"SUBMIT": "Обновить",
+ "DISCONNECT": "Отключить бота",
"SUCCESS_MESSAGE": "Оператор успешно обновлен ботом",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Успешное отключение робота агента",
"ERROR_MESSAGE": "Не удалось обновить бота агента, пожалуйста, повторите попытку позже",
+ "DISCONNECTED_ERROR_MESSAGE": "Не удалось отключить бота агента, пожалуйста, повторите попытку позже",
"SELECT_PLACEHOLDER": "Выбрать бота"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ru/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ru/attributesMgmt.json
index d82bd59aa..3632bf9aa 100644
--- a/app/javascript/dashboard/i18n/locale/ru/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ru/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Пользовательский атрибут успешно добавлен",
- "ERROR_MESSAGE": "Невозможно создать пользовательский атрибут, пожалуйста, повторите попытку позже"
+ "SUCCESS_MESSAGE": "Пользовательский атрибут успешно добавлен!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json
index 07c538ba2..bb3b161f6 100644
--- a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Создать беседы из твитов с упоминанем"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Сайт",
"DESC": "Создайте источник для вашего сайта и начните поддерживать клиентов через виджет на сайте.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Включить SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Настроить параметры SMTP",
diff --git a/app/javascript/dashboard/i18n/locale/ru/integrations.json b/app/javascript/dashboard/i18n/locale/ru/integrations.json
index 76f1c8ee8..da00d78f6 100644
--- a/app/javascript/dashboard/i18n/locale/ru/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ru/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot теперь будет синхронизировать все входящие разговоры с каналом разговоров с клиентами внутри вашего рабочего места.
Ответ на цепочку разговоров в канале slack для разговоров с клиентом создаст ответ клиенту через chatwoot.
Начните ответы с примечания: для создания приватных сообщений. примечания вместо ответов.
Если отвечающий в Slack имеет профиль агента в chatwoot под тем же адресом электронной почты, ответы будут связаны соответственно.
Если отвечающий не имеет связанного профиля агента, ответы будут отправляться из профиля бота.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Нажмите, чтобы присоединиться",
+ "LEAVE_THE_ROOM": "Выйти из комнаты",
+ "START_VIDEO_CALL_HELP_TEXT": "Начать новый видеозвонок с клиентом",
+ "JOIN_ERROR": "Произошла ошибка при подключении к вызову, попробуйте еще раз",
+ "CREATE_ERROR": "Произошла ошибка при создании ссылки на встречу, попробуйте еще раз"
+ },
"DELETE": {
"BUTTON_TEXT": "Удалить",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ru/settings.json b/app/javascript/dashboard/i18n/locale/ru/settings.json
index 6297a3420..b5a83b6d4 100644
--- a/app/javascript/dashboard/i18n/locale/ru/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ru/settings.json
@@ -60,7 +60,7 @@
"NOTE": "Включить звуковые уведомления в панели управления для новых сообщений и разговоров.",
"ALERT_TYPE": {
"TITLE": "Alert events:",
- "NONE": "Ничего",
+ "NONE": "Нет",
"ASSIGNED": "Назначенные беседы",
"ALL_CONVERSATIONS": "Диалоги"
},
@@ -69,7 +69,7 @@
},
"CONDITIONS": {
"TITLE": "Alert conditions:",
- "CONDITION_ONE": "Send audio alerts only if the browser window is not active",
+ "CONDITION_ONE": "Отправлять звуковые оповещения только в том случае, если окно браузера не активно",
"CONDITION_TWO": "Send alerts every 30s until all the assigned conversations are read"
}
},
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Открыть беседу",
"RESOLVE_AND_NEXT": "Решить и перейти к следующему",
diff --git a/app/javascript/dashboard/i18n/locale/sk/agentBots.json b/app/javascript/dashboard/i18n/locale/sk/agentBots.json
index 905f46719..067e1fbd1 100644
--- a/app/javascript/dashboard/i18n/locale/sk/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/sk/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Update",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/sk/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/sk/attributesMgmt.json
index f7e030f31..87d409e06 100644
--- a/app/javascript/dashboard/i18n/locale/sk/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sk/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json
index 7ec6b2805..286d570be 100644
--- a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Webový kanál",
"DESC": "Vytvorte si kanál pre svoje webové stránky a začnite podporovať svojich zákazníkov prostredníctvom nášho webového widgetu.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Povoliť SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Nastaviť SMTP detaily",
diff --git a/app/javascript/dashboard/i18n/locale/sk/integrations.json b/app/javascript/dashboard/i18n/locale/sk/integrations.json
index fe1830704..b006ed7ac 100644
--- a/app/javascript/dashboard/i18n/locale/sk/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/sk/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Vymazať",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/sk/settings.json b/app/javascript/dashboard/i18n/locale/sk/settings.json
index 0ede48a01..341171ad4 100644
--- a/app/javascript/dashboard/i18n/locale/sk/settings.json
+++ b/app/javascript/dashboard/i18n/locale/sk/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/sr/agentBots.json b/app/javascript/dashboard/i18n/locale/sr/agentBots.json
index c406f6507..5466a0d14 100644
--- a/app/javascript/dashboard/i18n/locale/sr/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/sr/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Primeni",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/sr/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/sr/attributesMgmt.json
index ac1ed4f7b..476286ce7 100644
--- a/app/javascript/dashboard/i18n/locale/sr/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sr/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Prilagođeni atribut je uspešno dodat",
- "ERROR_MESSAGE": "Nije bilo moguće kreirati prilagođeni atribut. Molim Vas pokušajte kasnije"
+ "SUCCESS_MESSAGE": "Prilagođeni atribut je uspešno dodat!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json
index 1f033a887..9ef7e2cf6 100644
--- a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Napravite razgovore iz tvitova gde ste pomenuti"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Veb sajt kanal",
"DESC": "Napravite kanal za vaš veb sajt i započnite podršku vašim potrošačima sa našim vidžetom za veb sajt.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Omogući SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Podesite vaše SMTP detalje",
diff --git a/app/javascript/dashboard/i18n/locale/sr/integrations.json b/app/javascript/dashboard/i18n/locale/sr/integrations.json
index 0d52b7595..d334fc502 100644
--- a/app/javascript/dashboard/i18n/locale/sr/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/sr/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot će sada sinhronizovati sve dolazne razgovore u kanal customer-conversations unutar vašeg slack radnog mesta.
Odgovaranjem na razgovor u customer-conversations slack kanal će napraviti odgovor potrošaču kroz chatwoot.
Započnite odgovore sa note: da bi ste napravili privatne beleške umesto odgovora.
Ako odgovarač na slack-u ima agentski profil u chatwoot-u pod istom adresom e-pošte, odgovori će biti odgovarajuće povezani.
Kada odgovarač nema povezani agentski profil, odgovori će biti napravljeni od strane bot profila.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Izbriši",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/sr/settings.json b/app/javascript/dashboard/i18n/locale/sr/settings.json
index 751746292..4a31315fb 100644
--- a/app/javascript/dashboard/i18n/locale/sr/settings.json
+++ b/app/javascript/dashboard/i18n/locale/sr/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Otvoren razgovor",
"RESOLVE_AND_NEXT": "Reši i idi na sledeći",
diff --git a/app/javascript/dashboard/i18n/locale/sv/agentBots.json b/app/javascript/dashboard/i18n/locale/sv/agentBots.json
index a592c630a..9c339c0d9 100644
--- a/app/javascript/dashboard/i18n/locale/sv/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/sv/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Uppdatera",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/sv/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/sv/attributesMgmt.json
index fbd488c54..f219c1895 100644
--- a/app/javascript/dashboard/i18n/locale/sv/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sv/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json
index 3fda4105e..b5ab3ab8c 100644
--- a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Webbplatskanal",
"DESC": "Skapa en kanal för din webbplats och börja stödja dina kunder via vår hemsida widget.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/sv/integrations.json b/app/javascript/dashboard/i18n/locale/sv/integrations.json
index 94ba345d9..a45742026 100644
--- a/app/javascript/dashboard/i18n/locale/sv/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/sv/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Radera",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/sv/settings.json b/app/javascript/dashboard/i18n/locale/sv/settings.json
index 5003e8323..d29393f97 100644
--- a/app/javascript/dashboard/i18n/locale/sv/settings.json
+++ b/app/javascript/dashboard/i18n/locale/sv/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/ta/agentBots.json b/app/javascript/dashboard/i18n/locale/ta/agentBots.json
index 84265b9a6..ef50acec4 100644
--- a/app/javascript/dashboard/i18n/locale/ta/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ta/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "புதுப்பிப்பு",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ta/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ta/attributesMgmt.json
index 915d53a59..bba596f6f 100644
--- a/app/javascript/dashboard/i18n/locale/ta/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ta/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json
index 6610dfff5..9208042a6 100644
--- a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "வலைத்தள சேனல்",
"DESC": "உங்கள் வலைத்தளத்திற்கு ஒரு சேனலை உருவாக்கி, எங்கள் வலைத்தள விட்ஜெட் வழியாக உங்கள் வாடிக்கையாளர்களுக்கு சேவையளிக்கத் தொடங்குங்கள்.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/ta/integrations.json b/app/javascript/dashboard/i18n/locale/ta/integrations.json
index ce79469b2..a0d5ff719 100644
--- a/app/javascript/dashboard/i18n/locale/ta/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ta/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Delete",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ta/settings.json b/app/javascript/dashboard/i18n/locale/ta/settings.json
index f08217d85..818b67166 100644
--- a/app/javascript/dashboard/i18n/locale/ta/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ta/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/th/agentBots.json b/app/javascript/dashboard/i18n/locale/th/agentBots.json
index 483c985be..4621a3235 100644
--- a/app/javascript/dashboard/i18n/locale/th/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/th/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "อัพเดท",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/th/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/th/attributesMgmt.json
index 925864ed9..8e52ac44c 100644
--- a/app/javascript/dashboard/i18n/locale/th/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/th/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "เพิ่มแอตทริบิวต์เเบบกำหนดเองสำเร็จแล้ว",
- "ERROR_MESSAGE": "ไม่สามารถสร้างแอตทริบิวต์เเบบกำหนดเอง ได้โปรดลองใหม่อีกครั้ง"
+ "SUCCESS_MESSAGE": "เพิ่มแอตทริบิวต์เเบบกำหนดเองสำเร็จแล้ว!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json
index 7e7972210..98737b381 100644
--- a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "สร้างการสนทนาใหม่จากการกล่าวถึงในทวีต"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "ช่องเว็บไซต์",
"DESC": "สร้างช่องสำหรับเว็บของคุณเเละเริ่มที่จะช่วยเหลือลูกค้าของคุณด้วยวิดเจ็ต",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "เปิดใช้ SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "ตั้งค่า SMTP",
diff --git a/app/javascript/dashboard/i18n/locale/th/integrations.json b/app/javascript/dashboard/i18n/locale/th/integrations.json
index c4e5debcb..ccf190863 100644
--- a/app/javascript/dashboard/i18n/locale/th/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/th/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "ลบ",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/th/settings.json b/app/javascript/dashboard/i18n/locale/th/settings.json
index 863ecb9f1..6309bea35 100644
--- a/app/javascript/dashboard/i18n/locale/th/settings.json
+++ b/app/javascript/dashboard/i18n/locale/th/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "เปิดดูการสนทนา",
"RESOLVE_AND_NEXT": "จบการสนทนานี้และเริ่มการสนทนาถัดไป",
diff --git a/app/javascript/dashboard/i18n/locale/tr/agentBots.json b/app/javascript/dashboard/i18n/locale/tr/agentBots.json
index 371a1d1cd..5e9dabe07 100644
--- a/app/javascript/dashboard/i18n/locale/tr/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/tr/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Güncelleme",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/tr/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/tr/attributesMgmt.json
index 4a4e64d86..df6b2e9c6 100644
--- a/app/javascript/dashboard/i18n/locale/tr/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/tr/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json
index 017cdd761..d729cb3ee 100644
--- a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website channel",
"DESC": "Web siteniz için bir kanal oluşturun ve müşterilerinizi web sitesi widget'ımız aracılığıyla desteklemeye başlayın.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/tr/integrations.json b/app/javascript/dashboard/i18n/locale/tr/integrations.json
index d5beca403..a64d37704 100644
--- a/app/javascript/dashboard/i18n/locale/tr/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/tr/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Sil",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/tr/settings.json b/app/javascript/dashboard/i18n/locale/tr/settings.json
index 5bae8c2bf..fd5090f79 100644
--- a/app/javascript/dashboard/i18n/locale/tr/settings.json
+++ b/app/javascript/dashboard/i18n/locale/tr/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Görüşmeyi aç",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/uk/agentBots.json b/app/javascript/dashboard/i18n/locale/uk/agentBots.json
index d7f00b850..14f33ae29 100644
--- a/app/javascript/dashboard/i18n/locale/uk/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/uk/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Виберіть агента - бота",
"DESC": "Ви можете встановити бота агента з переліку до цієї поштової скриньки. Бот може спочатку обробити розмову та передавати її агенту, коли це необхідно.",
"SUBMIT": "Оновити",
+ "DISCONNECT": "Від'єднати бота",
"SUCCESS_MESSAGE": "Успішно оновлено бота агента",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Бот агента успішно відключений",
"ERROR_MESSAGE": "Не вдалося оновити агента бота, спробуйте ще раз пізніше",
+ "DISCONNECTED_ERROR_MESSAGE": "Не вдалося відключити бота агента, будь ласка, спробуйте ще раз пізніше",
"SELECT_PLACEHOLDER": "Виберіть бота"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/uk/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/uk/attributesMgmt.json
index 2ee9c79a6..c5c188c49 100644
--- a/app/javascript/dashboard/i18n/locale/uk/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/uk/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Користувацький атрибут успішно додано",
- "ERROR_MESSAGE": "Не вдалося створити користувацький атрибут, будь ласка спробуйте пізніше"
+ "SUCCESS_MESSAGE": "Користувацький атрибут успішно додано!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json
index 0102d942c..af51e1f8a 100644
--- a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Створити розмову зі згаданих твітів"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Канал Веб-сайт",
"DESC": "Створіть канал для свого сайту та почніть підтримувати своїх клієнтів за допомогою нашого віджету.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Увімкнути SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Встановити параметри SMTP",
diff --git a/app/javascript/dashboard/i18n/locale/uk/integrations.json b/app/javascript/dashboard/i18n/locale/uk/integrations.json
index 1be4e99a2..9f2df5e5c 100644
--- a/app/javascript/dashboard/i18n/locale/uk/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/uk/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot тепер синхронізує всі вхідні розмови на customer-conversations каналу всередині вашого slack workplace.
Відповідь на тему розмови в customer-conversations slack канал створить відповідь покупцю через chatwoot.
Розпочніть відповіді з нотатки: для створення приватних нотаток замість відповідей.
Якщо автор на slack має профіль агента в chatwoot під тим самим повідомленням, відповіді будуть надані відповідно.
, коли користувач не має пов'язаного агента, відповідь буде виконана з профілю бота.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Видалити",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/uk/settings.json b/app/javascript/dashboard/i18n/locale/uk/settings.json
index e85bd100e..92f64e050 100644
--- a/app/javascript/dashboard/i18n/locale/uk/settings.json
+++ b/app/javascript/dashboard/i18n/locale/uk/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Відкрити розмову",
"RESOLVE_AND_NEXT": "Вирішити і перейти до наступного",
diff --git a/app/javascript/dashboard/i18n/locale/ur/agentBots.json b/app/javascript/dashboard/i18n/locale/ur/agentBots.json
index 6542a7601..dc41389c0 100644
--- a/app/javascript/dashboard/i18n/locale/ur/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ur/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Update",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ur/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ur/attributesMgmt.json
index ffb9af4b0..02fdadd89 100644
--- a/app/javascript/dashboard/i18n/locale/ur/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ur/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json
index 3707e2541..79a26c4e8 100644
--- a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website channel",
"DESC": "Create a channel for your website and start supporting your customers via our website widget.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/ur/integrations.json b/app/javascript/dashboard/i18n/locale/ur/integrations.json
index 27d8ccc2e..06cefeb7d 100644
--- a/app/javascript/dashboard/i18n/locale/ur/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ur/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "حذف کریں۔",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ur/settings.json b/app/javascript/dashboard/i18n/locale/ur/settings.json
index 5de18a331..b2e91380b 100644
--- a/app/javascript/dashboard/i18n/locale/ur/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ur/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/agentBots.json b/app/javascript/dashboard/i18n/locale/ur_IN/agentBots.json
index 67ee3ef6f..5403bb18c 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Update",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/ur_IN/attributesMgmt.json
index ff4904c34..2a9ea7de3 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json
index 4f332b6d4..5bc4b7a67 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Website channel",
"DESC": "Create a channel for your website and start supporting your customers via our website widget.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json
index 6c6cecde9..833b72ed4 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Delete",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/settings.json b/app/javascript/dashboard/i18n/locale/ur_IN/settings.json
index a0de7f856..2f5f8b771 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/vi/agentBots.json b/app/javascript/dashboard/i18n/locale/vi/agentBots.json
index 06809bdeb..6d00f3e78 100644
--- a/app/javascript/dashboard/i18n/locale/vi/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/vi/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Cập nhật",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/vi/agentMgmt.json b/app/javascript/dashboard/i18n/locale/vi/agentMgmt.json
index 589c1063b..0e59f56a1 100644
--- a/app/javascript/dashboard/i18n/locale/vi/agentMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/vi/agentMgmt.json
@@ -95,7 +95,7 @@
"MULTI_SELECTOR": {
"PLACEHOLDER": "Không có",
"TITLE": {
- "AGENT": "Chọn t\bổng đài viên",
+ "AGENT": "Chọn thành viên",
"TEAM": "Chọn nhóm"
},
"SEARCH": {
diff --git a/app/javascript/dashboard/i18n/locale/vi/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/vi/attributesMgmt.json
index 40e68c319..efdf9235a 100644
--- a/app/javascript/dashboard/i18n/locale/vi/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/vi/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Thuộc tính tuỳ chỉnh được thêm thành công",
- "ERROR_MESSAGE": "Không thể tạo thuộc tính tuỳ chỉnh, Vui lòng thử lại sau"
+ "SUCCESS_MESSAGE": "Thuộc tính tuỳ chỉnh được thêm thành công!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/vi/chatlist.json b/app/javascript/dashboard/i18n/locale/vi/chatlist.json
index 726b38fab..a5ec74376 100644
--- a/app/javascript/dashboard/i18n/locale/vi/chatlist.json
+++ b/app/javascript/dashboard/i18n/locale/vi/chatlist.json
@@ -57,8 +57,8 @@
"REPLY_TO_TWEET": "Trả lời cho tweet này",
"LINK_TO_STORY": "Đến xem lịch sử instagram",
"SENT": "Gửi thành công",
- "READ": "Read successfully",
- "DELIVERED": "Delivered successfully",
+ "READ": "Đọc thành công",
+ "DELIVERED": "Đã gửi thành công",
"NO_MESSAGES": "Không có tin nhắn",
"NO_CONTENT": "Không có nội dung",
"HIDE_QUOTED_TEXT": "Ẩn văn bản được trích dẫn",
diff --git a/app/javascript/dashboard/i18n/locale/vi/conversation.json b/app/javascript/dashboard/i18n/locale/vi/conversation.json
index 551782669..1a4a662bb 100644
--- a/app/javascript/dashboard/i18n/locale/vi/conversation.json
+++ b/app/javascript/dashboard/i18n/locale/vi/conversation.json
@@ -42,8 +42,8 @@
"RATING_TITLE": "Đánh giá",
"FEEDBACK_TITLE": "Phản hồi",
"CARD": {
- "SHOW_LABELS": "Show labels",
- "HIDE_LABELS": "Hide labels"
+ "SHOW_LABELS": "Hiển thị nhãn",
+ "HIDE_LABELS": "Ẩn nhãn"
},
"HEADER": {
"RESOLVE_ACTION": "Giải quyết",
@@ -68,7 +68,7 @@
"CARD_CONTEXT_MENU": {
"PENDING": "Đánh dấu chưa giải quyết",
"RESOLVED": "Đánh dấu là đã giải quyết",
- "MARK_AS_UNREAD": "Mark as unread",
+ "MARK_AS_UNREAD": "Đánh dấu là chưa đọc",
"REOPEN": "Mở lại hội thoại",
"SNOOZE": {
"TITLE": "Báo lại",
diff --git a/app/javascript/dashboard/i18n/locale/vi/helpCenter.json b/app/javascript/dashboard/i18n/locale/vi/helpCenter.json
index 612f0eec3..afcbf703d 100644
--- a/app/javascript/dashboard/i18n/locale/vi/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/vi/helpCenter.json
@@ -20,7 +20,7 @@
"EDIT_HEADER": {
"ALL_ARTICLES": "Tất cả các bài",
"PUBLISH_BUTTON": "Phát hành",
- "MOVE_TO_ARCHIVE_BUTTON": "Move to archived",
+ "MOVE_TO_ARCHIVE_BUTTON": "Di chuyển đến lưu trữ",
"PREVIEW": "Xem trước",
"ADD_TRANSLATION": "Thêm bản dịch",
"OPEN_SIDEBAR": "Mở thanh bên",
@@ -114,13 +114,13 @@
}
},
"DELETE_PORTAL": {
- "TITLE": "Delete portal",
- "MESSAGE": "Are you sure you want to delete this portal",
- "YES": "Yes, delete portal",
- "NO": "No, keep portal",
+ "TITLE": "Xóa cổng thông tin",
+ "MESSAGE": "Bạn có chắc chắn muốn xóa cổng thông tin này",
+ "YES": "Có, xóa cổng thông tin",
+ "NO": "Không, giữ cổng thông tin",
"API": {
- "DELETE_SUCCESS": "Portal deleted successfully",
- "DELETE_ERROR": "Error while deleting portal"
+ "DELETE_SUCCESS": "Đã xóa cổng thông tin thành công",
+ "DELETE_ERROR": "Lỗi khi xóa cổng thông tin"
}
}
},
diff --git a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json
index 592b92747..5ff378027 100644
--- a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Tạo cuộc trò chuyện từ các dòng Tweet được nhắn đến"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "Kênh trang web",
"DESC": "Tạo kênh cho trang web của bạn và bắt đầu hỗ trợ khách hàng của bạn thông qua widget trang web của chúng tôi.",
@@ -134,7 +138,7 @@
"PHONE_NUMBER": {
"LABEL": "Số Điện Thoại",
"PLACEHOLDER": "Vui lòng nhập số điện thoại mà tin nhắn sẽ được gửi.",
- "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces."
+ "ERROR": "Vui lòng cung cấp số điện thoại hợp lệ bắt đầu bằng dấu `+` và không chứa bất kỳ dấu cách nào."
},
"API_CALLBACK": {
"TITLE": "URL gọi lại",
@@ -185,7 +189,7 @@
"PHONE_NUMBER": {
"LABEL": "Số Điện Thoại",
"PLACEHOLDER": "Vui lòng nhập số điện thoại mà tin nhắn sẽ được gửi.",
- "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces."
+ "ERROR": "Vui lòng cung cấp số điện thoại hợp lệ bắt đầu bằng dấu `+` và không chứa bất kỳ dấu cách nào."
},
"SUBMIT_BUTTON": "Tạo kênh Bandwidth",
"API": {
@@ -214,7 +218,7 @@
"PHONE_NUMBER": {
"LABEL": "Số Điện Thoại",
"PLACEHOLDER": "Vui lòng nhập số điện thoại mà tin nhắn sẽ được gửi.",
- "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces."
+ "ERROR": "Vui lòng cung cấp số điện thoại hợp lệ bắt đầu bằng dấu `+` và không chứa bất kỳ dấu cách nào."
},
"PHONE_NUMBER_ID": {
"LABEL": "ID số điện thoại",
@@ -239,9 +243,9 @@
},
"API_CALLBACK": {
"TITLE": "URL gọi lại",
- "SUBTITLE": "You have to configure the webhook URL and the verification token in the Facebook Developer portal with the values shown below.",
+ "SUBTITLE": "Bạn phải định cấu hình URL webhook và mã xác minh trong cổng Nhà phát triển của Facebook với các giá trị được hiển thị bên dưới.",
"WEBHOOK_URL": "Webhook URL",
- "WEBHOOK_VERIFICATION_TOKEN": "Webhook Verification Token"
+ "WEBHOOK_VERIFICATION_TOKEN": "Mã xác minh Webhook"
},
"SUBMIT_BUTTON": "Tạo kênh WhatsApp",
"API": {
@@ -421,7 +425,7 @@
"PRE_CHAT_FORM": "Biểu mẫu trước khi trò chuyện",
"BUSINESS_HOURS": "Giờ làm việc",
"WIDGET_BUILDER": "Trình tạo widget",
- "BOT_CONFIGURATION": "Bot Configuration"
+ "BOT_CONFIGURATION": "Cấu hình Bot"
},
"SETTINGS": "Cài đặt",
"FEATURES": {
@@ -445,8 +449,8 @@
"ENABLE_CSAT_SUB_TEXT": "Bật / Tắt khảo sát CSAT (Mức độ hài lòng của khách hàng) sau khi giải quyết cuộc trò chuyện",
"ENABLE_CONTINUITY_VIA_EMAIL": "Bật tiếp tục cuộc trò chuyện qua email",
"ENABLE_CONTINUITY_VIA_EMAIL_SUB_TEXT": "Cuộc trò chuyện sẽ tiếp tục qua email nếu có địa chỉ email liên lạc.",
- "LOCK_TO_SINGLE_CONVERSATION": "Lock to single conversation",
- "LOCK_TO_SINGLE_CONVERSATION_SUB_TEXT": "Enable or disable multiple conversations for the same contact in this inbox",
+ "LOCK_TO_SINGLE_CONVERSATION": "Khóa cuộc trò chuyện duy nhất",
+ "LOCK_TO_SINGLE_CONVERSATION_SUB_TEXT": "Bật hoặc tắt nhiều cuộc trò chuyện cho cùng một liên hệ trong hộp thư đến này",
"INBOX_UPDATE_TITLE": "Cài đặt Hộp thư đến",
"INBOX_UPDATE_SUB_TEXT": "Cập nhật cài đặt hộp thư đến của bạn",
"AUTO_ASSIGNMENT_SUB_TEXT": "Bật hoặc tắt tính năng tự động gán các cuộc hội thoại mới cho các tác nhân được thêm vào hộp thư đến này.",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Kích hoạt SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "STMP",
"SUBTITLE": "Đặt chi tiết SMTP",
diff --git a/app/javascript/dashboard/i18n/locale/vi/integrations.json b/app/javascript/dashboard/i18n/locale/vi/integrations.json
index 903694425..a1a715d19 100644
--- a/app/javascript/dashboard/i18n/locale/vi/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/vi/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot giờ đây sẽ đồng bộ hóa tất cả các cuộc trò chuyện đến vào kênh cuộc trò chuyện với khách hàng bên trong nơi làm việc Slack của bạn.
Trả lời chuỗi hội thoại trong kênh Slack cuộc trò chuyện với khách hàng sẽ tạo phản hồi lại cho khách hàng thông qua chatwoot.
Bắt đầu câu trả lời bằng ghi chú: để tạo ghi chú riêng tư thay vì trả lời.
Nếu người trả lời trên slack có hồ sơ đại lý trong chatwoot dưới cùng một email, thì các câu trả lời sẽ được liên kết theo đó.
Khi người trả lời không có hồ sơ đại lý được liên kết, các câu trả lời sẽ được thực hiện từ hồ sơ bot.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "Xoá",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/vi/settings.json b/app/javascript/dashboard/i18n/locale/vi/settings.json
index b204fa29d..0f0ddbdcf 100644
--- a/app/javascript/dashboard/i18n/locale/vi/settings.json
+++ b/app/javascript/dashboard/i18n/locale/vi/settings.json
@@ -20,17 +20,17 @@
"NOTE": "Địa chỉ email của bạn là danh tính của bạn và được sử dụng để đăng nhập."
},
"SEND_MESSAGE": {
- "TITLE": "Hotkey to send messages",
- "NOTE": "You can select a hotkey (either Enter or Cmd/Ctrl+Enter) based on your preference of writing.",
- "UPDATE_SUCCESS": "Your settings have been updated successfully",
+ "TITLE": "Phím nóng để gửi tin nhắn",
+ "NOTE": "Bạn có thể chọn một phím nóng (Enter hoặc Cmd/Ctrl+Enter) dựa trên sở thích viết của bạn.",
+ "UPDATE_SUCCESS": "Cài đặt của bạn đã được cập nhật thành công",
"CARD": {
"ENTER_KEY": {
"HEADING": "Enter (↵)",
- "CONTENT": "Send messages by pressing Enter key instead of clicking the send button."
+ "CONTENT": "Gửi tin nhắn bằng cách nhấn phím Enter thay vì nhấp vào nút gửi."
},
"CMD_ENTER_KEY": {
"HEADING": "Cmd/Ctrl + Enter (⌘ + ↵)",
- "CONTENT": "Send messages by pressing Cmd/Ctrl + enter key instead of clicking the send button."
+ "CONTENT": "Gửi tin nhắn bằng cách nhấn phím Cmd/Ctrl + enter thay vì nhấp vào nút gửi."
}
}
},
@@ -59,18 +59,18 @@
"TITLE": "Âm thanh Thông báo",
"NOTE": "Bật âm thanh thông báo trong trang tổng quan cho các tin nhắn và cuộc trò chuyện mới.",
"ALERT_TYPE": {
- "TITLE": "Alert events:",
+ "TITLE": "Sự kiện cảnh báo:",
"NONE": "Không có",
"ASSIGNED": "Cuộc trò chuyện được phân công",
"ALL_CONVERSATIONS": "Tất cả cuộc trò chuyện"
},
"DEFAULT_TONE": {
- "TITLE": "Alert tone:"
+ "TITLE": "Âm báo:"
},
"CONDITIONS": {
- "TITLE": "Alert conditions:",
- "CONDITION_ONE": "Send audio alerts only if the browser window is not active",
- "CONDITION_TWO": "Send alerts every 30s until all the assigned conversations are read"
+ "TITLE": "Điều kiện cảnh báo:",
+ "CONDITION_ONE": "Chỉ gửi cảnh báo âm thanh nếu cửa sổ trình duyệt không hoạt động",
+ "CONDITION_TWO": "Gửi thông báo cứ sau 30 giây cho đến khi tất cả các cuộc hội thoại được chỉ định được đọc"
}
},
"EMAIL_NOTIFICATIONS_SECTION": {
@@ -115,8 +115,8 @@
"Bận",
"Không Trực Tuyến"
],
- "SET_AVAILABILITY_SUCCESS": "Availability has been set successfully",
- "SET_AVAILABILITY_ERROR": "Couldn't set availability, please try again"
+ "SET_AVAILABILITY_SUCCESS": "Tính khả dụng đã được thiết lập thành công",
+ "SET_AVAILABILITY_ERROR": "Không thể đặt, vui lòng thử lại"
},
"EMAIL": {
"LABEL": "Địa chỉ email của bạn",
@@ -147,7 +147,7 @@
"SELECTOR_SUBTITLE": "Chọn một tài khoản từ danh sách sau",
"PROFILE_SETTINGS": "Cài Đặt Hồ Sơ Cá Nhân",
"KEYBOARD_SHORTCUTS": "Phím tắt",
- "SUPER_ADMIN_CONSOLE": "Super Admin Console",
+ "SUPER_ADMIN_CONSOLE": "Bảng điều khiển dành cho quản trị viên cấp cao",
"LOGOUT": "Đăng xuất"
},
"APP_GLOBAL": {
@@ -173,7 +173,7 @@
"UPLOADING": "Đang tải lên..."
},
"LOCATION_BUBBLE": {
- "SEE_ON_MAP": "See on map"
+ "SEE_ON_MAP": "Xem trên bản đồ"
},
"FORM_BUBBLE": {
"SUBMIT": "Gửi"
@@ -232,7 +232,7 @@
"REPORTS_OVERVIEW": "Tổng quan",
"FACEBOOK_REAUTHORIZE": "Kết nối Facebook của bạn đã hết hạn, vui lòng kết nối lại trang Facebook của bạn để tiếp tục dịch vụ",
"HELP_CENTER": {
- "TITLE": "Help Center (Beta)",
+ "TITLE": "Trung tâm trợ giúp (Thử nghiệm)",
"ALL_ARTICLES": "Tất cả các bài",
"MY_ARTICLES": "Các bài của tôi",
"DRAFT": "Nháp",
@@ -241,8 +241,8 @@
"CATEGORY_EMPTY_MESSAGE": "Không tìm thấy danh mục nào"
},
"SET_AUTO_OFFLINE": {
- "TEXT": "Mark offline automatically",
- "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard."
+ "TEXT": "Tự động đánh dấu ngoại tuyến",
+ "INFO_TEXT": "Hãy để hệ thống tự động đánh dấu bạn ngoại tuyến khi bạn không sử dụng ứng dụng hoặc trang tổng quan."
},
"DOCS": "Đọc tài liệu"
},
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "Xem tất cả phím tắt",
"TITLE": {
"OPEN_CONVERSATION": "Mở cuộc trò chuyện",
"RESOLVE_AND_NEXT": "Giải quyết và đi đến cái tiếp theo",
diff --git a/app/javascript/dashboard/i18n/locale/vi/signup.json b/app/javascript/dashboard/i18n/locale/vi/signup.json
index b87d713b2..c262f3c47 100644
--- a/app/javascript/dashboard/i18n/locale/vi/signup.json
+++ b/app/javascript/dashboard/i18n/locale/vi/signup.json
@@ -2,13 +2,13 @@
"REGISTER": {
"TRY_WOOT": "Đăng kí tài khoản",
"TITLE": "Đăng kí",
- "TESTIMONIAL_HEADER": "All it takes is one step to move forward",
- "TESTIMONIAL_CONTENT": "You're one step away from engaging your customers, retaining them and finding new ones.",
+ "TESTIMONIAL_HEADER": "Tất cả chỉ cần một bước để tiến về phía trước",
+ "TESTIMONIAL_CONTENT": "Bạn chỉ còn một bước nữa là có thể thu hút khách hàng của mình, giữ chân họ và tìm kiếm những khách hàng mới.",
"TERMS_ACCEPT": "Bằng cách đăng ký, bạn đồng ý với T & C và Chính sách bảo mật",
"COMPANY_NAME": {
- "LABEL": "Company name",
- "PLACEHOLDER": "Enter your company name. eg: Wayne Enterprises",
- "ERROR": "Company name is too short"
+ "LABEL": "Tên công ty",
+ "PLACEHOLDER": "Nhập tên công ty của bạn. ví dụ: Doanh nghiệp Wayne",
+ "ERROR": "Tên công ty quá ngắn"
},
"FULL_NAME": {
"LABEL": "Tên đầy đủ",
@@ -18,7 +18,7 @@
"EMAIL": {
"LABEL": "Email công việc",
"PLACEHOLDER": "Nhập email công việc của bạn. ví dụ: bruce@wayne.enterprises",
- "ERROR": "Please enter a valid work email address"
+ "ERROR": "Vui lòng nhập địa chỉ email công việc hợp lệ"
},
"PASSWORD": {
"LABEL": "Mật khẩu",
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/agentBots.json b/app/javascript/dashboard/i18n/locale/zh_CN/agentBots.json
index 09b504c9d..c18c8ac08 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "更新",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/zh_CN/attributesMgmt.json
index 22b9d13b8..2db45ec24 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "自定义属性添加成功",
- "ERROR_MESSAGE": "无法创建自定义属性,请稍后再试"
+ "SUCCESS_MESSAGE": "自定义属性添加成功!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json
index 8f43f65f4..0d883dd73 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "网站频道",
"DESC": "为您的网站创建一个频道并通过我们的网站小部件开始支持您的客户。",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json
index 51a165de9..65b0eef1e 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
"
}
},
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the room",
+ "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer",
+ "JOIN_ERROR": "There was an error joining the call, please try again",
+ "CREATE_ERROR": "There was an error creating a meeting link, please try again"
+ },
"DELETE": {
"BUTTON_TEXT": "删除",
"API": {
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/settings.json b/app/javascript/dashboard/i18n/locale/zh_CN/settings.json
index 5f493092d..0604b4e0a 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/settings.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/settings.json
@@ -282,6 +282,7 @@
}
},
"KEYBOARD_SHORTCUTS": {
+ "TOGGLE_MODAL": "View all shortcuts",
"TITLE": {
"OPEN_CONVERSATION": "Open conversation",
"RESOLVE_AND_NEXT": "Resolve and move to next",
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/agentBots.json b/app/javascript/dashboard/i18n/locale/zh_TW/agentBots.json
index e66092740..d98494c64 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "更新",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/zh_TW/attributesMgmt.json
index 4e2892d3c..c34eaf48b 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/attributesMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/attributesMgmt.json
@@ -42,8 +42,8 @@
}
},
"API": {
- "SUCCESS_MESSAGE": "Custom Attribute added successfully",
- "ERROR_MESSAGE": "Could not able to create a custom attribute, Please try again later"
+ "SUCCESS_MESSAGE": "Custom Attribute added successfully!",
+ "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later."
}
},
"DELETE": {
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json
index 878502014..ba74bb474 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json
@@ -53,6 +53,10 @@
"ENABLE": "Create conversations from mentioned Tweets"
}
},
+ "MICROSOFT": {
+ "HELP": "To add your Microsoft account as a channel, you need to authenticate your Microsoft account by clicking on 'Sign in with Microsoft' ",
+ "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again"
+ },
"WEBSITE_CHANNEL": {
"TITLE": "網站頻道",
"DESC": "為您的網站建立一個頻道並通過我們的網站小元件開始支持您的客户。",
@@ -548,6 +552,10 @@
},
"ENABLE_SSL": "Enable SSL"
},
+ "MICROSOFT": {
+ "TITLE": "Microsoft",
+ "SUBTITLE": "Reauthorize your MICROSOFT account"
+ },
"SMTP": {
"TITLE": "SMTP",
"SUBTITLE": "Set your SMTP details",
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json
index 2ed343ace..455a3bae1 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json
@@ -76,6 +76,13 @@
"BODY": "
Chatwoot will now sync all the incoming conversations into the customer-conversations channel inside your slack workplace.
Replying to a conversation thread in customer-conversations slack channel will create a response back to the customer through chatwoot.
Start the replies with note: to create private notes instead of replies.
If the replier on slack has an agent profile in chatwoot under the same email, the replies will be associated accordingly.
When the replier doesn't have an associated agent profile, the replies will be made from the bot profile.
@@ -86,6 +99,27 @@ export default {
this.showAlert(this.$t('AGENT_BOTS.BOT_CONFIGURATION.ERROR_MESSAGE'));
}
},
+ async disconnectBot() {
+ try {
+ await this.$store.dispatch('agentBots/disconnectBot', {
+ inboxId: this.inbox.id,
+ });
+ this.showAlert(
+ this.$t('AGENT_BOTS.BOT_CONFIGURATION.DISCONNECTED_SUCCESS_MESSAGE')
+ );
+ } catch (error) {
+ this.showAlert(
+ error?.message ||
+ this.$t('AGENT_BOTS.BOT_CONFIGURATION.DISCONNECTED_ERROR_MESSAGE')
+ );
+ }
+ },
},
};
+
+
diff --git a/app/javascript/dashboard/routes/dashboard/settings/macros/MacroNode.vue b/app/javascript/dashboard/routes/dashboard/settings/macros/MacroNode.vue
index f03667cef..c16e95e67 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/macros/MacroNode.vue
+++ b/app/javascript/dashboard/routes/dashboard/settings/macros/MacroNode.vue
@@ -107,7 +107,7 @@ export default {
diff --git a/app/javascript/widget/i18n/locale/ar.json b/app/javascript/widget/i18n/locale/ar.json
index 6f84c04b8..037a529d0 100644
--- a/app/javascript/widget/i18n/locale/ar.json
+++ b/app/javascript/widget/i18n/locale/ar.json
@@ -74,8 +74,8 @@
}
},
"EMOJI": {
- "PLACEHOLDER": "Search emojis",
- "NOT_FOUND": "No emoji match your search"
+ "PLACEHOLDER": "ابحث في الايموجي",
+ "NOT_FOUND": "لا يوجد إيموجي يطابق بحثك"
},
"CSAT": {
"TITLE": "قيم محادثتك",
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "طلب نسخة محادثة النص",
"SEND_EMAIL_SUCCESS": "تم إرسال نص المحادثة بنجاح",
"SEND_EMAIL_ERROR": "حدث خطأ، الرجاء المحاولة مرة أخرى"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/bg.json b/app/javascript/widget/i18n/locale/bg.json
index 3136aaedf..cbea820c3 100644
--- a/app/javascript/widget/i18n/locale/bg.json
+++ b/app/javascript/widget/i18n/locale/bg.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Поискайте копие от разговора",
"SEND_EMAIL_SUCCESS": "Копието от разговора бе изпратено успешно",
"SEND_EMAIL_ERROR": "Възникна грешка, моля опитайте отново"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ca.json b/app/javascript/widget/i18n/locale/ca.json
index b8f7aae5c..e0b2e9ba5 100644
--- a/app/javascript/widget/i18n/locale/ca.json
+++ b/app/javascript/widget/i18n/locale/ca.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "La transcripció del xat s'ha enviat correctament",
"SEND_EMAIL_ERROR": "S'ha produït un error; tornau-ho a provar"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/cs.json b/app/javascript/widget/i18n/locale/cs.json
index 8ee2c82f3..0fc9279ef 100644
--- a/app/javascript/widget/i18n/locale/cs.json
+++ b/app/javascript/widget/i18n/locale/cs.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Požádat o přepis konverzace",
"SEND_EMAIL_SUCCESS": "Přepis chatu byl úspěšně odeslán",
"SEND_EMAIL_ERROR": "Došlo k chybě, zkuste to prosím znovu"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/da.json b/app/javascript/widget/i18n/locale/da.json
index 74e118d39..298149788 100644
--- a/app/javascript/widget/i18n/locale/da.json
+++ b/app/javascript/widget/i18n/locale/da.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Anmod om en samtaleudskrift",
"SEND_EMAIL_SUCCESS": "Chatudskriften blev sendt med succes",
"SEND_EMAIL_ERROR": "Der opstod en fejl. Prøv venligst igen"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/de.json b/app/javascript/widget/i18n/locale/de.json
index bb4c51855..5c63a6d4d 100644
--- a/app/javascript/widget/i18n/locale/de.json
+++ b/app/javascript/widget/i18n/locale/de.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Chat-Protokoll anfordern",
"SEND_EMAIL_SUCCESS": "Das Chat-Protokoll wurde erfolgreich gesendet",
"SEND_EMAIL_ERROR": "Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/el.json b/app/javascript/widget/i18n/locale/el.json
index d926f9057..10c747d26 100644
--- a/app/javascript/widget/i18n/locale/el.json
+++ b/app/javascript/widget/i18n/locale/el.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Αίτηση μεταγραφής συνομιλίας",
"SEND_EMAIL_SUCCESS": "Η μεταγραφή της συνομιλίας έχει αποσταλεί επιτυχώς",
"SEND_EMAIL_ERROR": "Υπήρξε ένα σφάλμα, παρακαλώ προσπαθήστε ξανά"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Κάντε κλικ εδώ για να συμμετάσχετε",
+ "LEAVE_THE_ROOM": "Έξοδος από την κλήση"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/en.json b/app/javascript/widget/i18n/locale/en.json
index 6329cdeb3..141e9b102 100644
--- a/app/javascript/widget/i18n/locale/en.json
+++ b/app/javascript/widget/i18n/locale/en.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully",
"SEND_EMAIL_ERROR": "There was an error, please try again"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/es.json b/app/javascript/widget/i18n/locale/es.json
index 07ed0c92d..7e8753ded 100644
--- a/app/javascript/widget/i18n/locale/es.json
+++ b/app/javascript/widget/i18n/locale/es.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Enviar transcripción de la conversación",
"SEND_EMAIL_SUCCESS": "La transcripción ha sido enviada",
"SEND_EMAIL_ERROR": "Hubo un error, por favor inténtelo de nuevo"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/fa.json b/app/javascript/widget/i18n/locale/fa.json
index b78b66c08..472135fe9 100644
--- a/app/javascript/widget/i18n/locale/fa.json
+++ b/app/javascript/widget/i18n/locale/fa.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "درخواست رونوشت گفتگو",
"SEND_EMAIL_SUCCESS": "رونوشت گفتگو با موفقیت ارسال شد",
"SEND_EMAIL_ERROR": "خطایی پیش آمد. لطفا دوباره امتحان کنید"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "برای عضویت اینجا را کلیک کنید",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/fi.json b/app/javascript/widget/i18n/locale/fi.json
index e0905bf04..05f917174 100644
--- a/app/javascript/widget/i18n/locale/fi.json
+++ b/app/javascript/widget/i18n/locale/fi.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "Chat-keskustelu on lähetetty onnistuneesti",
"SEND_EMAIL_ERROR": "Tapahtui virhe, yritä uudelleen"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/fr.json b/app/javascript/widget/i18n/locale/fr.json
index 2fde255a3..271c6a1e0 100644
--- a/app/javascript/widget/i18n/locale/fr.json
+++ b/app/javascript/widget/i18n/locale/fr.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Demander une transcription de la conversation",
"SEND_EMAIL_SUCCESS": "La transcription du chat a été envoyée avec succès",
"SEND_EMAIL_ERROR": "Une erreur est survenue, veuillez réessayer"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/he.json b/app/javascript/widget/i18n/locale/he.json
index eab2c3fc9..76c620e1c 100644
--- a/app/javascript/widget/i18n/locale/he.json
+++ b/app/javascript/widget/i18n/locale/he.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "בקש תמליל שיחה",
"SEND_EMAIL_SUCCESS": "תמליל הצ'אט נשלח בהצלחה",
"SEND_EMAIL_ERROR": "היתה שגיאה, בקשה נסה שוב"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/hi.json b/app/javascript/widget/i18n/locale/hi.json
index 6329cdeb3..141e9b102 100644
--- a/app/javascript/widget/i18n/locale/hi.json
+++ b/app/javascript/widget/i18n/locale/hi.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully",
"SEND_EMAIL_ERROR": "There was an error, please try again"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/hu.json b/app/javascript/widget/i18n/locale/hu.json
index 808adb534..4fde2c35d 100644
--- a/app/javascript/widget/i18n/locale/hu.json
+++ b/app/javascript/widget/i18n/locale/hu.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Beszélgetés kivonat igénylése",
"SEND_EMAIL_SUCCESS": "A beszélgetés jegyzet sikeresen elküldve",
"SEND_EMAIL_ERROR": "Hiba történt, kérjük próbáld újra"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/id.json b/app/javascript/widget/i18n/locale/id.json
index cb23ce28e..db6e2b96d 100644
--- a/app/javascript/widget/i18n/locale/id.json
+++ b/app/javascript/widget/i18n/locale/id.json
@@ -22,9 +22,9 @@
"IN_A_DAY": "Biasanya membalas dalam sehari"
},
"START_CONVERSATION": "Mulai Percakapan",
- "END_CONVERSATION": "End Conversation",
- "CONTINUE_CONVERSATION": "Continue conversation",
- "START_NEW_CONVERSATION": "Start a new conversation",
+ "END_CONVERSATION": "Akhiri Percakapan",
+ "CONTINUE_CONVERSATION": "Lanjutkan Percakapan",
+ "START_NEW_CONVERSATION": "Mulai Percakapan",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Lihat pesan baru",
"CLOSE_MESSAGES_BUTTON": "Tutup",
@@ -49,13 +49,13 @@
"EMAIL_ADDRESS": {
"LABEL": "Alamat email",
"PLACEHOLDER": "Harap masukkan alamat email Anda",
- "REQUIRED_ERROR": "Email Address is required",
+ "REQUIRED_ERROR": "Alamat Email dibutuhkan",
"VALID_ERROR": "Harap masukkan alamat email yang valid"
},
"PHONE_NUMBER": {
"LABEL": "Nomor Telpon",
- "PLACEHOLDER": "Please enter your phone number",
- "REQUIRED_ERROR": "Phone Number is required",
+ "PLACEHOLDER": "Masukan Nomor Telepon",
+ "REQUIRED_ERROR": "Nomor Telepon Dibutuhkan",
"VALID_ERROR": "Phone number should be of E.164 format eg: +1415555555"
},
"MESSAGE": {
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "Transkrip percakapan berhasil terkirim",
"SEND_EMAIL_ERROR": "Terjadi kesalahan, harap coba lagi"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/is.json b/app/javascript/widget/i18n/locale/is.json
index bd993874f..cdec64f16 100644
--- a/app/javascript/widget/i18n/locale/is.json
+++ b/app/javascript/widget/i18n/locale/is.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Biðja um afrit af samtalinu",
"SEND_EMAIL_SUCCESS": "Afritið af samtalinu var sent",
"SEND_EMAIL_ERROR": "Það kom upp villa, vinsamlegast reyndur aftur"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/it.json b/app/javascript/widget/i18n/locale/it.json
index 10eeca4b2..6524c0918 100644
--- a/app/javascript/widget/i18n/locale/it.json
+++ b/app/javascript/widget/i18n/locale/it.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Richiedi la trascrizione della conversazione",
"SEND_EMAIL_SUCCESS": "La trascrizione della chat è stata inviata con successo",
"SEND_EMAIL_ERROR": "Si è verificato un errore, riprova"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ja.json b/app/javascript/widget/i18n/locale/ja.json
index 4541254f2..98a57b852 100644
--- a/app/javascript/widget/i18n/locale/ja.json
+++ b/app/javascript/widget/i18n/locale/ja.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "チャットの記録は正常に送信されました",
"SEND_EMAIL_ERROR": "エラーが発生しました。もう一度お試しください。"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ka.json b/app/javascript/widget/i18n/locale/ka.json
index 6329cdeb3..141e9b102 100644
--- a/app/javascript/widget/i18n/locale/ka.json
+++ b/app/javascript/widget/i18n/locale/ka.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully",
"SEND_EMAIL_ERROR": "There was an error, please try again"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ko.json b/app/javascript/widget/i18n/locale/ko.json
index 71a99ea7f..b6f404d9a 100644
--- a/app/javascript/widget/i18n/locale/ko.json
+++ b/app/javascript/widget/i18n/locale/ko.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "대화 내용이 성공적으로 전송됨",
"SEND_EMAIL_ERROR": "오류가 발생했습니다. 다시 시도하십시오."
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/lt.json b/app/javascript/widget/i18n/locale/lt.json
index 6329cdeb3..141e9b102 100644
--- a/app/javascript/widget/i18n/locale/lt.json
+++ b/app/javascript/widget/i18n/locale/lt.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully",
"SEND_EMAIL_ERROR": "There was an error, please try again"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/lv.json b/app/javascript/widget/i18n/locale/lv.json
index 858a063bf..1c3f41f25 100644
--- a/app/javascript/widget/i18n/locale/lv.json
+++ b/app/javascript/widget/i18n/locale/lv.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Pieprasīt sarunas transkriptu",
"SEND_EMAIL_SUCCESS": "Sarunas transkripts tika veiksmīgi nosūtīts",
"SEND_EMAIL_ERROR": "Radās kļūda. Lūdzu, mēģiniet vēlreiz"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Noklikšķiniet šeit, lai pievienotos",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ml.json b/app/javascript/widget/i18n/locale/ml.json
index 577b7e944..db9c22061 100644
--- a/app/javascript/widget/i18n/locale/ml.json
+++ b/app/javascript/widget/i18n/locale/ml.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "ഒരു സംഭാഷണ ട്രാൻസ്ക്രിപ്റ്റ് അഭ്യർത്ഥിക്കുക",
"SEND_EMAIL_SUCCESS": "ചാറ്റ് ട്രാൻസ്ക്രിപ്റ്റ് വിജയകരമായി അയച്ചു",
"SEND_EMAIL_ERROR": "ഒരു പിശക് ഉണ്ടായിരുന്നു, ദയവായി വീണ്ടും ശ്രമിക്കുക"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ms.json b/app/javascript/widget/i18n/locale/ms.json
index 1194a5135..60ca99d51 100644
--- a/app/javascript/widget/i18n/locale/ms.json
+++ b/app/javascript/widget/i18n/locale/ms.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully",
"SEND_EMAIL_ERROR": "There was an error, please try again"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ne.json b/app/javascript/widget/i18n/locale/ne.json
index ddecddd35..b624bafed 100644
--- a/app/javascript/widget/i18n/locale/ne.json
+++ b/app/javascript/widget/i18n/locale/ne.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully",
"SEND_EMAIL_ERROR": "There was an error, please try again"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/nl.json b/app/javascript/widget/i18n/locale/nl.json
index f5f138e6f..86e57b847 100644
--- a/app/javascript/widget/i18n/locale/nl.json
+++ b/app/javascript/widget/i18n/locale/nl.json
@@ -8,13 +8,13 @@
"SUBMIT": "Bevestigen"
},
"MESSAGE_BUBBLE": {
- "RETRY": "Send message again",
- "ERROR_MESSAGE": "Couldn't send, try again"
+ "RETRY": "Bericht opnieuw verzenden",
+ "ERROR_MESSAGE": "Verzenden mislukt, probeer het opnieuw"
}
},
"TEAM_AVAILABILITY": {
"ONLINE": "We zijn online",
- "OFFLINE": "Op dit moment zijn we niet aanwezig"
+ "OFFLINE": "We zijn momenteel afwezig"
},
"REPLY_TIME": {
"IN_A_FEW_MINUTES": "Reageert meestal binnen een paar minuten",
@@ -22,8 +22,8 @@
"IN_A_DAY": "Reageert meestal binnen een dag"
},
"START_CONVERSATION": "Start Chat",
- "END_CONVERSATION": "End Conversation",
- "CONTINUE_CONVERSATION": "Continue conversation",
+ "END_CONVERSATION": "Gesprek beëindigen",
+ "CONTINUE_CONVERSATION": "Verdergaan met gesprek",
"START_NEW_CONVERSATION": "Een nieuw gesprek starten",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Bekijk nieuwe berichten",
@@ -49,14 +49,14 @@
"EMAIL_ADDRESS": {
"LABEL": "Uw e-mailadres",
"PLACEHOLDER": "Voer uw e-mailadres in",
- "REQUIRED_ERROR": "Email Address is required",
+ "REQUIRED_ERROR": "E-mailadres is vereist",
"VALID_ERROR": "Voer een geldig e-mailadres in"
},
"PHONE_NUMBER": {
"LABEL": "Telefoonnummer",
- "PLACEHOLDER": "Please enter your phone number",
- "REQUIRED_ERROR": "Phone Number is required",
- "VALID_ERROR": "Phone number should be of E.164 format eg: +1415555555"
+ "PLACEHOLDER": "Vul je telefoonnummer in",
+ "REQUIRED_ERROR": "Telefoon nummer is vereist",
+ "VALID_ERROR": "Telefoonnummer moet van E.164-formaat zijn: +1415555555"
},
"MESSAGE": {
"LABEL": "Bericht",
@@ -65,7 +65,7 @@
}
},
"CAMPAIGN_HEADER": "Geef uw naam en e-mail voordat u het gesprek begint",
- "IS_REQUIRED": "is required"
+ "IS_REQUIRED": "is vereist"
},
"FILE_SIZE_LIMIT": "Bestand overschrijdt de bijlagelimiet van {MAXIMUM_FILE_UPLOAD_SIZE}",
"CHAT_FORM": {
@@ -74,8 +74,8 @@
}
},
"EMOJI": {
- "PLACEHOLDER": "Search emojis",
- "NOT_FOUND": "No emoji match your search"
+ "PLACEHOLDER": "Zoek emojis",
+ "NOT_FOUND": "Er zijn geen overeenkomende emoji's gevonden"
},
"CSAT": {
"TITLE": "Beoordeel uw gesprek",
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Verzoek een conversatie-transcript",
"SEND_EMAIL_SUCCESS": "Het gesprekstranscript is succesvol verzonden",
"SEND_EMAIL_ERROR": "Er is een fout opgetreden, probeer het opnieuw"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/no.json b/app/javascript/widget/i18n/locale/no.json
index 79c800cc7..7d56815f7 100644
--- a/app/javascript/widget/i18n/locale/no.json
+++ b/app/javascript/widget/i18n/locale/no.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Be om utskrift av samtalen",
"SEND_EMAIL_SUCCESS": "Kopi av samtalen ble sendt",
"SEND_EMAIL_ERROR": "Det oppstod en feil. Prøv igjen"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/pl.json b/app/javascript/widget/i18n/locale/pl.json
index ec10cacc8..9f25c6b3d 100644
--- a/app/javascript/widget/i18n/locale/pl.json
+++ b/app/javascript/widget/i18n/locale/pl.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Poproś o skrypt rozmowy",
"SEND_EMAIL_SUCCESS": "Transkrypcja czatu została wysłana pomyślnie",
"SEND_EMAIL_ERROR": "Wystąpił błąd, spróbuj ponownie"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/pt.json b/app/javascript/widget/i18n/locale/pt.json
index b7227b18e..d2231de0e 100644
--- a/app/javascript/widget/i18n/locale/pt.json
+++ b/app/javascript/widget/i18n/locale/pt.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Pedir a transcrição da conversa",
"SEND_EMAIL_SUCCESS": "A transcrição do chat foi enviada com sucesso",
"SEND_EMAIL_ERROR": "Ocorreu um erro, por favor tente novamente"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/pt_BR.json b/app/javascript/widget/i18n/locale/pt_BR.json
index e029b5b0e..ac5fad213 100644
--- a/app/javascript/widget/i18n/locale/pt_BR.json
+++ b/app/javascript/widget/i18n/locale/pt_BR.json
@@ -23,7 +23,7 @@
},
"START_CONVERSATION": "Iniciar Conversa",
"END_CONVERSATION": "Finalizar Conversa",
- "CONTINUE_CONVERSATION": "Continuar conversa",
+ "CONTINUE_CONVERSATION": "Continuar a conversa",
"START_NEW_CONVERSATION": "Iniciar uma nova conversa",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Ver novas mensagens",
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Solicitar uma transcrição de conversa",
"SEND_EMAIL_SUCCESS": "A transcrição do chat foi enviada com sucesso",
"SEND_EMAIL_ERROR": "Ocorreu um erro, por favor tente novamente"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Clique aqui para entrar",
+ "LEAVE_THE_ROOM": "Sair da ligação"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ro.json b/app/javascript/widget/i18n/locale/ro.json
index a0454fa40..a6b7410d0 100644
--- a/app/javascript/widget/i18n/locale/ro.json
+++ b/app/javascript/widget/i18n/locale/ro.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Solicitați o transcriere a conversației",
"SEND_EMAIL_SUCCESS": "Transscrisul de chat a fost trimis cu succes",
"SEND_EMAIL_ERROR": "A apărut o eroare, încercați din nou"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ru.json b/app/javascript/widget/i18n/locale/ru.json
index 5c67ad106..a0f852d61 100644
--- a/app/javascript/widget/i18n/locale/ru.json
+++ b/app/javascript/widget/i18n/locale/ru.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Запросить историю разговора",
"SEND_EMAIL_SUCCESS": "Субтитры чата успешно отправлены",
"SEND_EMAIL_ERROR": "Произошла ошибка, попробуйте еще раз"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Нажмите, чтобы присоединиться",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/sk.json b/app/javascript/widget/i18n/locale/sk.json
index 5288d96cd..647eb4dac 100644
--- a/app/javascript/widget/i18n/locale/sk.json
+++ b/app/javascript/widget/i18n/locale/sk.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "Prepis chatu bol úspešne odoslaný",
"SEND_EMAIL_ERROR": "There was an error, please try again"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/sr.json b/app/javascript/widget/i18n/locale/sr.json
index e937c81cd..e4391e938 100644
--- a/app/javascript/widget/i18n/locale/sr.json
+++ b/app/javascript/widget/i18n/locale/sr.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Zatražite kopiju razgovora",
"SEND_EMAIL_SUCCESS": "Transkript razgovora je uspešno poslat",
"SEND_EMAIL_ERROR": "Pojavila se greška, molim vas pokušajte ponovo"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/sv.json b/app/javascript/widget/i18n/locale/sv.json
index 86955b2eb..b09684848 100644
--- a/app/javascript/widget/i18n/locale/sv.json
+++ b/app/javascript/widget/i18n/locale/sv.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Skicka konversationstranskribering",
"SEND_EMAIL_SUCCESS": "Chattranskriberingen har skickats",
"SEND_EMAIL_ERROR": "Ett fel uppstod, vänligen försök igen"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ta.json b/app/javascript/widget/i18n/locale/ta.json
index e1eab536d..7a25893d5 100644
--- a/app/javascript/widget/i18n/locale/ta.json
+++ b/app/javascript/widget/i18n/locale/ta.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully",
"SEND_EMAIL_ERROR": "There was an error, please try again"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/th.json b/app/javascript/widget/i18n/locale/th.json
index 7e4faad1a..1b5be63b8 100644
--- a/app/javascript/widget/i18n/locale/th.json
+++ b/app/javascript/widget/i18n/locale/th.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "ต้องการให้ส่งบทสนทนานี้ทางอีเมล์",
"SEND_EMAIL_SUCCESS": "บันทึกการสนทนาได้ถูกส่งเเล้ว",
"SEND_EMAIL_ERROR": "เกิดข้อผิดพลาดกรุณาลองใหม่อีกครั้ง"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/tr.json b/app/javascript/widget/i18n/locale/tr.json
index bfa05ae38..13f97b96f 100644
--- a/app/javascript/widget/i18n/locale/tr.json
+++ b/app/javascript/widget/i18n/locale/tr.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Konuşma transkripti talep et",
"SEND_EMAIL_SUCCESS": "Sohbet metni başarıyla gönderildi",
"SEND_EMAIL_ERROR": "Bir hata oluştu, lütfen tekrar deneyin"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/uk.json b/app/javascript/widget/i18n/locale/uk.json
index 444793ae1..c92d84162 100644
--- a/app/javascript/widget/i18n/locale/uk.json
+++ b/app/javascript/widget/i18n/locale/uk.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Запит на текст розмови",
"SEND_EMAIL_SUCCESS": "Текст розмови надісланий",
"SEND_EMAIL_ERROR": "Сталася помилка, будь ласка, спробуйте ще раз"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ur.json b/app/javascript/widget/i18n/locale/ur.json
index 9b245a03c..6771f4144 100644
--- a/app/javascript/widget/i18n/locale/ur.json
+++ b/app/javascript/widget/i18n/locale/ur.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully",
"SEND_EMAIL_ERROR": "There was an error, please try again"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/ur_IN.json b/app/javascript/widget/i18n/locale/ur_IN.json
index 6329cdeb3..141e9b102 100644
--- a/app/javascript/widget/i18n/locale/ur_IN.json
+++ b/app/javascript/widget/i18n/locale/ur_IN.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Request a conversation transcript",
"SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully",
"SEND_EMAIL_ERROR": "There was an error, please try again"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/vi.json b/app/javascript/widget/i18n/locale/vi.json
index a5944a18b..e15bfe7b4 100644
--- a/app/javascript/widget/i18n/locale/vi.json
+++ b/app/javascript/widget/i18n/locale/vi.json
@@ -74,8 +74,8 @@
}
},
"EMOJI": {
- "PLACEHOLDER": "Search emojis",
- "NOT_FOUND": "No emoji match your search"
+ "PLACEHOLDER": "Tìm kiếm biểu tượng cảm xúc",
+ "NOT_FOUND": "Không có biểu tượng cảm xúc nào phù hợp với tìm kiếm của bạn"
},
"CSAT": {
"TITLE": "Đánh giá hội thoại",
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "Yêu cầu bản ghi hội thoại",
"SEND_EMAIL_SUCCESS": "Bản ghi cuộc trò chuyện đã được gửi thành công",
"SEND_EMAIL_ERROR": "Đã có lỗi, vui lòng thử lại"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/zh_CN.json b/app/javascript/widget/i18n/locale/zh_CN.json
index 57037a508..089cb5449 100644
--- a/app/javascript/widget/i18n/locale/zh_CN.json
+++ b/app/javascript/widget/i18n/locale/zh_CN.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "请求会话抄本",
"SEND_EMAIL_SUCCESS": "已成功发送聊天记录",
"SEND_EMAIL_ERROR": "出现错误,请重试"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/javascript/widget/i18n/locale/zh_TW.json b/app/javascript/widget/i18n/locale/zh_TW.json
index e2170e864..a4749ccf3 100644
--- a/app/javascript/widget/i18n/locale/zh_TW.json
+++ b/app/javascript/widget/i18n/locale/zh_TW.json
@@ -86,5 +86,11 @@
"BUTTON_TEXT": "請求對話記錄",
"SEND_EMAIL_SUCCESS": "對話記錄已成功發送",
"SEND_EMAIL_ERROR": "出現錯誤,請重試"
+ },
+ "INTEGRATIONS": {
+ "DYTE": {
+ "CLICK_HERE_TO_JOIN": "Click here to join",
+ "LEAVE_THE_ROOM": "Leave the call"
+ }
}
}
diff --git a/app/jobs/inboxes/fetch_imap_emails_job.rb b/app/jobs/inboxes/fetch_imap_emails_job.rb
index c4537ca22..b84e79ee6 100644
--- a/app/jobs/inboxes/fetch_imap_emails_job.rb
+++ b/app/jobs/inboxes/fetch_imap_emails_job.rb
@@ -6,9 +6,7 @@ class Inboxes::FetchImapEmailsJob < ApplicationJob
def perform(channel)
return unless should_fetch_email?(channel)
- fetch_mail_for_channel(channel)
- # clearing old failures like timeouts since the mail is now successfully processed
- channel.reauthorized!
+ process_email_for_channel(channel)
rescue *ExceptionList::IMAP_EXCEPTIONS
channel.authorization_error!
rescue EOFError => e
@@ -23,6 +21,17 @@ class Inboxes::FetchImapEmailsJob < ApplicationJob
channel.imap_enabled? && !channel.reauthorization_required?
end
+ def process_email_for_channel(channel)
+ # fetching email for microsoft provider
+ if channel.microsoft?
+ fetch_mail_for_ms_provider(channel)
+ else
+ fetch_mail_for_channel(channel)
+ end
+ # clearing old failures like timeouts since the mail is now successfully processed
+ channel.reauthorized!
+ end
+
def fetch_mail_for_channel(channel)
# TODO: rather than setting this as default method for all mail objects, lets if can do new mail object
# using Mail.retriever_method.new(params)
@@ -41,9 +50,51 @@ class Inboxes::FetchImapEmailsJob < ApplicationJob
end
end
+ def fetch_mail_for_ms_provider(channel)
+ return if channel.provider_config['access_token'].blank?
+
+ access_token = valid_access_token channel
+
+ return unless access_token
+
+ imap = imap_authenticate(channel, access_token)
+
+ process_mails(imap, channel)
+ end
+
+ def process_mails(imap, channel)
+ imap.search(['BEFORE', tomorrow, 'SINCE', yesterday]).each do |message_id|
+ inbound_mail = Mail.read_from_string imap.fetch(message_id, 'RFC822')[0].attr['RFC822']
+
+ next if channel.inbox.messages.find_by(source_id: inbound_mail.message_id).present?
+
+ process_mail(inbound_mail, channel)
+ end
+ end
+
+ def imap_authenticate(channel, access_token)
+ imap = Net::IMAP.new(channel.imap_address, channel.imap_port, true)
+ imap.authenticate('XOAUTH2', channel.imap_login, access_token)
+ imap.select('INBOX')
+ imap
+ end
+
+ def yesterday
+ (Time.zone.today - 1).strftime('%d-%b-%Y')
+ end
+
+ def tomorrow
+ (Time.zone.today + 1).strftime('%d-%b-%Y')
+ end
+
def process_mail(inbound_mail, channel)
Imap::ImapMailbox.new.process(inbound_mail, channel)
rescue StandardError => e
ChatwootExceptionTracker.new(e, account: channel.account).capture_exception
end
+
+ # Making sure the access token is valid for microsoft provider
+ def valid_access_token(channel)
+ Microsoft::RefreshOauthTokenService.new(channel: channel).access_token
+ end
end
diff --git a/app/mailboxes/application_mailbox.rb b/app/mailboxes/application_mailbox.rb
index f5e9abe1b..9af5aa876 100644
--- a/app/mailboxes/application_mailbox.rb
+++ b/app/mailboxes/application_mailbox.rb
@@ -6,80 +6,41 @@ class ApplicationMailbox < ActionMailbox::Base
REPLY_EMAIL_UUID_PATTERN = /^reply\+([0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12})$/i
CONVERSATION_MESSAGE_ID_PATTERN = %r{conversation/([a-zA-Z0-9\-]*?)/messages/(\d+?)@(\w+\.\w+)}
- def self.reply_mail?
- proc do |inbound_mail_obj|
- is_a_reply_email = false
- inbound_mail_obj.mail.to&.each do |email|
- is_a_reply_email = true if reply_uuid_mail?(email)
- end
- is_a_reply_email = true if in_reply_to_mail?(inbound_mail_obj, is_a_reply_email)
-
- is_a_reply_email
- end
- end
-
- def self.support_mail?
- proc do |inbound_mail_obj|
- is_a_support_email = false
-
- is_a_support_email = true if reply_to_mail?(inbound_mail_obj, is_a_support_email)
-
- is_a_support_email
- end
- end
-
- def self.reply_to_mail?(inbound_mail_obj, is_a_support_email)
- return if is_a_support_email
-
- channel = EmailChannelFinder.new(inbound_mail_obj.mail).perform
- channel.present?
- end
-
- def self.catch_all_mail?
- proc { |_mail| true }
- end
-
- # checks if follow this pattern then send it to reply_mailbox
- #
- def self.in_reply_to_mail?(inbound_mail_obj, is_a_reply_email)
- return if is_a_reply_email
-
- in_reply_to = inbound_mail_obj.mail.in_reply_to
-
- return false if in_reply_to.blank?
-
- return true if in_reply_to_matches?(in_reply_to)
-
- message = Message.find_by(source_id: in_reply_to)
- return true if message.present?
-
- false
- end
-
- def self.in_reply_to_matches?(in_reply_to)
- in_reply_to_match = false
- if in_reply_to.is_a?(Array)
- in_reply_to.each do |in_reply_to_mail|
- in_reply_to_match ||= in_reply_to_mail.match(CONVERSATION_MESSAGE_ID_PATTERN)
- end
- else
- in_reply_to_match = in_reply_to.match(CONVERSATION_MESSAGE_ID_PATTERN)
- end
- in_reply_to_match
- end
-
- # checks if follow this pattern send it to reply_mailbox
- # reply+@
- def self.reply_uuid_mail?(email)
- conversation_uuid = email.split('@')[0]
- conversation_uuid.match(REPLY_EMAIL_UUID_PATTERN)
- end
-
- # routing should be defined below the referenced procs
-
# routes as a reply to existing conversations
- routing(reply_mail? => :reply)
+ routing(
+ ->(inbound_mail) { reply_uuid_mail?(inbound_mail) || in_reply_to_mail?(inbound_mail) } => :reply
+ )
+
# routes as a new conversation in email channel
- routing(support_mail? => :support)
- routing(catch_all_mail? => :default)
+ routing(
+ ->(inbound_mail) { EmailChannelFinder.new(inbound_mail.mail).perform.present? } => :support
+ )
+
+ # catchall
+ routing(all: :default)
+
+ class << self
+ # checks if follow this pattern then send it to reply_mailbox
+ #
+ def in_reply_to_mail?(inbound_mail)
+ in_reply_to = inbound_mail.mail.in_reply_to
+
+ in_reply_to.present? && (
+ in_reply_to_matches?(in_reply_to) || Message.exists?(source_id: in_reply_to)
+ )
+ end
+
+ def in_reply_to_matches?(in_reply_to)
+ Array.wrap(in_reply_to).any? { _1.match?(CONVERSATION_MESSAGE_ID_PATTERN) }
+ end
+
+ # checks if follow this pattern send it to reply_mailbox
+ # reply+@
+ def reply_uuid_mail?(inbound_mail)
+ inbound_mail.mail.to&.any? do |email|
+ conversation_uuid = email.split('@')[0]
+ conversation_uuid.match?(REPLY_EMAIL_UUID_PATTERN)
+ end
+ end
+ end
end
diff --git a/app/mailers/conversation_reply_mailer_helper.rb b/app/mailers/conversation_reply_mailer_helper.rb
index 21bc9b939..866fc2c85 100644
--- a/app/mailers/conversation_reply_mailer_helper.rb
+++ b/app/mailers/conversation_reply_mailer_helper.rb
@@ -13,13 +13,33 @@ module ConversationReplyMailerHelper
@options[:cc] = cc_bcc_emails[0]
@options[:bcc] = cc_bcc_emails[1]
end
-
+ ms_smtp_settings
set_delivery_method
+
mail(@options)
end
private
+ def ms_smtp_settings
+ return unless @inbox.email? && @channel.imap_enabled && @inbox.channel.provider == 'microsoft'
+
+ smtp_settings = {
+ address: 'smtp.office365.com',
+ port: 587,
+ user_name: @channel.imap_login,
+ password: @channel.provider_config['access_token'],
+ domain: 'smtp.office365.com',
+ tls: false,
+ enable_starttls_auto: true,
+ openssl_verify_mode: 'none',
+ authentication: 'xoauth2'
+ }
+
+ @options[:delivery_method] = :smtp
+ @options[:delivery_method_options] = smtp_settings
+ end
+
def set_delivery_method
return unless @inbox.inbox_type == 'Email' && @channel.smtp_enabled
@@ -47,8 +67,12 @@ module ConversationReplyMailerHelper
@inbox.inbox_type == 'Email' && @channel.imap_enabled
end
+ def email_microsoft_auth_enabled
+ @inbox.inbox_type == 'Email' && @channel.provider == 'microsoft'
+ end
+
def email_from
- email_smtp_enabled ? @channel.email : from_email_with_name
+ email_microsoft_auth_enabled || email_smtp_enabled ? @channel.email : from_email_with_name
end
def email_reply_to
diff --git a/app/models/channel/email.rb b/app/models/channel/email.rb
index c5a67c676..0d519ec2d 100644
--- a/app/models/channel/email.rb
+++ b/app/models/channel/email.rb
@@ -12,6 +12,8 @@
# imap_login :string default("")
# imap_password :string default("")
# imap_port :integer default(0)
+# provider :string
+# provider_config :jsonb
# smtp_address :string default("")
# smtp_authentication :string default("login")
# smtp_domain :string default("")
@@ -41,7 +43,7 @@ class Channel::Email < ApplicationRecord
self.table_name = 'channel_email'
EDITABLE_ATTRS = [:email, :imap_enabled, :imap_login, :imap_password, :imap_address, :imap_port, :imap_enable_ssl, :imap_inbox_synced_at,
:smtp_enabled, :smtp_login, :smtp_password, :smtp_address, :smtp_port, :smtp_domain, :smtp_enable_starttls_auto,
- :smtp_enable_ssl_tls, :smtp_openssl_verify_mode, :smtp_authentication].freeze
+ :smtp_enable_ssl_tls, :smtp_openssl_verify_mode, :smtp_authentication, :provider].freeze
validates :email, uniqueness: true
validates :forward_to_email, uniqueness: true
@@ -52,6 +54,10 @@ class Channel::Email < ApplicationRecord
'Email'
end
+ def microsoft?
+ provider == 'microsoft'
+ end
+
private
def ensure_forward_to_email
diff --git a/app/models/concerns/activity_message_handler.rb b/app/models/concerns/activity_message_handler.rb
index cdab4e17d..7fc020e3c 100644
--- a/app/models/concerns/activity_message_handler.rb
+++ b/app/models/concerns/activity_message_handler.rb
@@ -104,6 +104,8 @@ module ActivityMessageHandler
end
def create_assignee_change_activity(user_name)
+ user_name = activity_message_ownner(user_name)
+
return unless user_name
content = generate_assignee_change_activity_content(user_name)
diff --git a/app/models/concerns/liquidable.rb b/app/models/concerns/liquidable.rb
new file mode 100644
index 000000000..e3d6cb64d
--- /dev/null
+++ b/app/models/concerns/liquidable.rb
@@ -0,0 +1,38 @@
+module Liquidable
+ extend ActiveSupport::Concern
+
+ included do
+ acts_as_taggable_on :labels
+ before_create :process_liquid_in_content
+ end
+
+ private
+
+ def message_drops
+ {
+ 'contact' => ContactDrop.new(conversation.contact),
+ 'agent' => UserDrop.new(sender),
+ 'conversation' => ConversationDrop.new(conversation),
+ 'inbox' => InboxDrop.new(inbox)
+ }
+ end
+
+ def liquid_processable_message?
+ content.present? && message_type == 'outgoing'
+ end
+
+ def process_liquid_in_content
+ return unless liquid_processable_message?
+
+ template = Liquid::Template.parse(modified_liquid_content)
+ self.content = template.render(message_drops)
+ rescue Liquid::Error
+ # If there is an error in the liquid syntax, we don't want to process it
+ end
+
+ def modified_liquid_content
+ # This regex is used to match the code blocks in the content
+ # We don't want to process liquid in code blocks
+ content.gsub(/`(.*?)`/m, '{% raw %}`\\1`{% endraw %}')
+ end
+end
diff --git a/app/models/message.rb b/app/models/message.rb
index 5ff749f6b..b7ee24a8b 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -32,6 +32,7 @@
class Message < ApplicationRecord
include MessageFilterHelpers
+ include Liquidable
NUMBER_OF_PERMITTED_ATTACHMENTS = 15
before_validation :ensure_content_type
@@ -57,7 +58,8 @@ class Message < ApplicationRecord
form: 6,
article: 7,
incoming_email: 8,
- input_csat: 9
+ input_csat: 9,
+ integrations: 10
}
enum status: { sent: 0, delivered: 1, read: 2, failed: 3 }
# [:submitted_email, :items, :submitted_values] : Used for bot message types
diff --git a/app/services/instagram/message_text.rb b/app/services/instagram/message_text.rb
index 6ce8ec02b..143f6c7f0 100644
--- a/app/services/instagram/message_text.rb
+++ b/app/services/instagram/message_text.rb
@@ -12,14 +12,12 @@ class Instagram::MessageText < Instagram::WebhooksBaseService
def perform
create_test_text
- instagram_id, contact_id = if agent_message_via_echo?
- [@messaging[:sender][:id], @messaging[:recipient][:id]]
- else
- [@messaging[:recipient][:id], @messaging[:sender][:id]]
- end
+ instagram_id, contact_id = instagram_and_contact_ids
inbox_channel(instagram_id)
# person can connect the channel and then delete the inbox
return if @inbox.blank?
+ # This channel might require reauthorization, may be owner might have changed the fb password
+ return if @inbox.channel.reauthorization_required?
return unsend_message if message_is_deleted?
@@ -30,19 +28,26 @@ class Instagram::MessageText < Instagram::WebhooksBaseService
private
+ def instagram_and_contact_ids
+ if agent_message_via_echo?
+ [@messaging[:sender][:id], @messaging[:recipient][:id]]
+ else
+ [@messaging[:recipient][:id], @messaging[:sender][:id]]
+ end
+ end
+
def ensure_contact(ig_scope_id)
begin
k = Koala::Facebook::API.new(@inbox.channel.page_access_token) if @inbox.facebook?
result = k.get_object(ig_scope_id) || {}
- rescue Koala::Facebook::AuthenticationError
+ rescue Koala::Facebook::AuthenticationError => e
@inbox.channel.authorization_error!
- raise
+ ChatwootExceptionTracker.new(e, account: @inbox.account).capture_exception
rescue StandardError, Koala::Facebook::ClientError => e
- result = {}
ChatwootExceptionTracker.new(e, account: @inbox.account).capture_exception
end
- find_or_create_contact(result) if result.present?
+ find_or_create_contact(result) if defined?(result) && result.present?
end
def agent_message_via_echo?
diff --git a/app/services/microsoft/refresh_oauth_token_service.rb b/app/services/microsoft/refresh_oauth_token_service.rb
new file mode 100644
index 000000000..d9ad6aa50
--- /dev/null
+++ b/app/services/microsoft/refresh_oauth_token_service.rb
@@ -0,0 +1,53 @@
+# refer: https://gitlab.com/gitlab-org/ruby/gems/gitlab-mail_room/-/blob/master/lib/mail_room/microsoft_graph/connection.rb
+# refer: https://github.com/microsoftgraph/msgraph-sample-rubyrailsapp/tree/b4a6869fe4a438cde42b161196484a929f1bee46
+# https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-configurable-token-lifetimes
+class Microsoft::RefreshOauthTokenService
+ pattr_initialize [:channel!]
+
+ # if the token is not expired yet then skip the refresh token step
+ def access_token
+ provider_config = channel.provider_config.with_indifferent_access
+ if Time.current.utc >= expires_on(provider_config['expires_on'])
+ # Token expired, refresh
+ new_hash = refresh_tokens
+ new_hash[:access_token]
+ else
+ provider_config[:access_token]
+ end
+ end
+
+ def expires_on(expiry)
+ # we will give it a 5 minute gap for safety
+ expiry.presence ? DateTime.parse(expiry) - 5.minutes : Time.current.utc
+ end
+
+ #
+ def refresh_tokens
+ token_hash = channel.provider_config.with_indifferent_access
+ oauth_strategy = ::MicrosoftGraphAuth.new(
+ nil, ENV.fetch('AZURE_APP_ID', nil), ENV.fetch('AZURE_APP_SECRET', nil)
+ )
+
+ token_service = OAuth2::AccessToken.new(
+ oauth_strategy.client, token_hash['access_token'],
+ refresh_token: token_hash['refresh_token']
+ )
+
+ # Refresh the tokens
+ new_tokens = token_service.refresh!.to_hash.slice(:access_token, :refresh_token, :expires_at)
+
+ update_channel_provider_config(new_tokens)
+ channel.provider_config
+ end
+ #
+
+ def update_channel_provider_config(new_tokens)
+ new_tokens = new_tokens.with_indifferent_access
+ channel.provider_config = {
+ access_token: new_tokens[:access_token],
+ refresh_token: new_tokens[:refresh_token],
+ expires_on: Time.at(new_tokens[:expires_at]).utc.to_s
+ }
+ channel.save!
+ end
+end
diff --git a/app/services/telegram/incoming_message_service.rb b/app/services/telegram/incoming_message_service.rb
index e8ab8a72c..2391921bd 100644
--- a/app/services/telegram/incoming_message_service.rb
+++ b/app/services/telegram/incoming_message_service.rb
@@ -20,6 +20,7 @@ class Telegram::IncomingMessageService
sender: @contact,
source_id: (params[:message][:message_id]).to_s
)
+ attach_location
attach_files
@message.save!
end
@@ -111,10 +112,25 @@ class Telegram::IncomingMessageService
)
end
+ def attach_location
+ return unless location
+
+ @message.attachments.new(
+ account_id: @message.account_id,
+ file_type: :location,
+ coordinates_lat: location['latitude'],
+ coordinates_long: location['longitude']
+ )
+ end
+
def file
@file ||= visual_media_params || params[:message][:voice].presence || params[:message][:audio].presence || params[:message][:document].presence
end
+ def location
+ @location ||= params[:message][:location].presence
+ end
+
def visual_media_params
params[:message][:photo].presence&.last || params.dig(:message, :sticker, :thumb).presence || params[:message][:video].presence
end
diff --git a/app/services/whatsapp/incoming_message_base_service.rb b/app/services/whatsapp/incoming_message_base_service.rb
index df9d433e5..83fceb452 100644
--- a/app/services/whatsapp/incoming_message_base_service.rb
+++ b/app/services/whatsapp/incoming_message_base_service.rb
@@ -7,26 +7,36 @@ class Whatsapp::IncomingMessageBaseService
def perform
processed_params
- perform_statuses
+ if processed_params[:statuses].present?
+ process_statuses
+ elsif processed_params[:messages].present?
+ process_messages
+ end
+ end
+
+ private
+
+ def find_message_by_source_id(source_id)
+ return unless source_id
+
+ @message = Message.find_by(source_id: source_id)
+ end
+
+ def process_messages
+ # message allready exists so we don't need to process
+ return if find_message_by_source_id(@processed_params[:messages].first[:id])
set_contact
return unless @contact
set_conversation
-
- perform_messages
+ create_messages
end
- private
+ def process_statuses
+ return unless find_message_by_source_id(@processed_params[:statuses].first[:id])
- def perform_statuses
- return if @processed_params[:statuses].blank?
-
- status = @processed_params[:statuses].first
- @message = Message.find_by(source_id: status[:id])
- return unless @message
-
- update_message_with_status(@message, status)
+ update_message_with_status(@message, @processed_params[:statuses].first)
end
def update_message_with_status(message, status)
@@ -38,8 +48,8 @@ class Whatsapp::IncomingMessageBaseService
message.save!
end
- def perform_messages
- return if @processed_params[:messages].blank? || unprocessable_message_type?
+ def create_messages
+ return if unprocessable_message_type?
@message = @conversation.messages.build(
content: message_content(@processed_params[:messages].first),
@@ -50,7 +60,7 @@ class Whatsapp::IncomingMessageBaseService
source_id: @processed_params[:messages].first[:id].to_s
)
attach_files
- attach_location
+ attach_location if message_type == 'location'
@message.save!
end
@@ -60,9 +70,7 @@ class Whatsapp::IncomingMessageBaseService
def message_content(message)
# TODO: map interactive messages back to button messages in chatwoot
- message.dig(:text, :body) ||
- message.dig(:button, :text) ||
- message.dig(:interactive, :button_reply, :title) ||
+ message.dig(:text, :body) || message.dig(:button, :text) || message.dig(:interactive, :button_reply, :title) ||
message.dig(:interactive, :list_reply, :title)
end
@@ -142,8 +150,6 @@ class Whatsapp::IncomingMessageBaseService
end
def attach_location
- return unless @processed_params[:messages].first[:type] == 'location'
-
location = @processed_params[:messages].first['location']
location_name = location['name'] ? "#{location['name']}, #{location['address']}" : ''
@message.attachments.new(
diff --git a/app/views/api/v1/models/_inbox.json.jbuilder b/app/views/api/v1/models/_inbox.json.jbuilder
index 0df3ca5a7..c87dadec7 100644
--- a/app/views/api/v1/models/_inbox.json.jbuilder
+++ b/app/views/api/v1/models/_inbox.json.jbuilder
@@ -62,6 +62,7 @@ if resource.email?
json.imap_address resource.channel.try(:imap_address)
json.imap_port resource.channel.try(:imap_port)
json.imap_enabled resource.channel.try(:imap_enabled)
+ json.microsoft_reauthorization resource.channel.try(:microsoft?) && resource.channel.try(:provider_config).empty?
json.imap_enable_ssl resource.channel.try(:imap_enable_ssl)
end
@@ -88,9 +89,10 @@ if resource.api?
json.additional_attributes resource.channel.try(:additional_attributes)
end
+json.provider resource.channel.try(:provider)
+
### WhatsApp Channel
if resource.whatsapp?
- json.provider resource.channel.try(:provider)
json.message_templates resource.channel.try(:message_templates)
json.provider_config resource.channel.try(:provider_config) if Current.account_user&.administrator?
end
diff --git a/app/views/layouts/vueapp.html.erb b/app/views/layouts/vueapp.html.erb
index 32a93f80c..4982f686c 100644
--- a/app/views/layouts/vueapp.html.erb
+++ b/app/views/layouts/vueapp.html.erb
@@ -4,7 +4,7 @@
<%= @global_config['INSTALLATION_NAME'] %>
-
+
<% if @global_config['DISPLAY_MANIFEST'] %>
diff --git a/app/views/public/api/v1/portals/categories/show.html.erb b/app/views/public/api/v1/portals/categories/show.html.erb
index 312f45537..72b0358e3 100644
--- a/app/views/public/api/v1/portals/categories/show.html.erb
+++ b/app/views/public/api/v1/portals/categories/show.html.erb
@@ -26,7 +26,7 @@
<% if @category.articles.published.size == 0 %>
-
+
No articles here
<% else %>
diff --git a/config/app.yml b/config/app.yml
index d3a714af3..9f3fb2ee6 100644
--- a/config/app.yml
+++ b/config/app.yml
@@ -1,5 +1,5 @@
shared: &shared
- version: '2.12.1'
+ version: '2.13.0'
development:
<<: *shared
diff --git a/config/database.yml b/config/database.yml
index b2e012f4d..d7ee67e56 100644
--- a/config/database.yml
+++ b/config/database.yml
@@ -1,9 +1,10 @@
default: &default
adapter: postgresql
encoding: unicode
- pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: <%= ENV.fetch('POSTGRES_HOST', 'localhost') %>
port: <%= ENV.fetch('POSTGRES_PORT', '5432') %>
+ # ref: https://github.com/mperham/sidekiq/issues/2985#issuecomment-531097962
+ pool: <%= Sidekiq.server? ? Sidekiq.options[:concurrency] : ENV.fetch('RAILS_MAX_THREADS', 5) %>
development:
<<: *default
diff --git a/config/initializers/01_redis.rb b/config/initializers/01_redis.rb
index 2595c12bb..ccbf02b4d 100644
--- a/config/initializers/01_redis.rb
+++ b/config/initializers/01_redis.rb
@@ -1,16 +1,14 @@
-Rails.application.reloader.to_prepare do
- # Alfred
- # Add here as you use it for more features
- # Used for Round Robin, Conversation Emails & Online Presence
- $alfred = ConnectionPool.new(size: 5, timeout: 3) do
- redis = Rails.env.test? ? MockRedis.new : Redis.new(Redis::Config.app)
- Redis::Namespace.new('alfred', redis: redis, warning: true)
- end
-
- # Velma : Determined protector
- # used in rack attack
- $velma = ConnectionPool.new(size: 5, timeout: 3) do
- config = Rails.env.test? ? MockRedis.new : Redis.new(Redis::Config.app)
- Redis::Namespace.new('velma', redis: config, warning: true)
- end
+# Alfred
+# Add here as you use it for more features
+# Used for Round Robin, Conversation Emails & Online Presence
+$alfred = ConnectionPool.new(size: 5, timeout: 3) do
+ redis = Rails.env.test? ? MockRedis.new : Redis.new(Redis::Config.app)
+ Redis::Namespace.new('alfred', redis: redis, warning: true)
+end
+
+# Velma : Determined protector
+# used in rack attack
+$velma = ConnectionPool.new(size: 5, timeout: 3) do
+ config = Rails.env.test? ? MockRedis.new : Redis.new(Redis::Config.app)
+ Redis::Namespace.new('velma', redis: config, warning: true)
end
diff --git a/config/integration/apps.yml b/config/integration/apps.yml
index ec462367e..97145e1c1 100644
--- a/config/integration/apps.yml
+++ b/config/integration/apps.yml
@@ -60,20 +60,34 @@ dialogflow:
}
]
visible_properties: ['project_id']
-fullcontact:
- id: fullcontact
- logo: fullcontact.png
- i18n_key: fullcontact
- action: /fullcontact
+dyte:
+ id: dyte
+ logo: dyte.png
+ i18n_key: dyte
+ action: /dyte
hook_type: account
allow_multiple_hooks: false
- settings_json_schema:
+ settings_json_schema: {
+ "type": "object",
+ "properties": {
+ "api_key": { "type": "string" },
+ "organization_id": { "type": "string" },
+ },
+ "required": ["api_key", "organization_id"],
+ "additionalProperties": false,
+ }
+ settings_form_schema: [
{
- 'type': 'object',
- 'properties': { 'api_key': { 'type': 'string' } },
- 'required': ['api_key'],
- 'additionalProperties': false,
- }
- settings_form_schema:
- [{ 'label': 'API Key', 'type': 'text', 'name': 'api_key',"validation": "required", }]
- visible_properties: ['api_key']
+ "label": "Organization ID",
+ "type": "text",
+ "name": "organization_id",
+ "validation": "required",
+ },
+ {
+ "label": "API Key",
+ "type": "text",
+ "name": "api_key",
+ "validation": "required",
+ },
+ ]
+ visible_properties: ["organization_id"]
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 0f5bf966f..389ca75bd 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -44,6 +44,8 @@ ar:
categories:
locale:
unique: يجب أن تكون فريدة من نوعها في الفئة والبوابة
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: الرجاء التحقق من اتصال الشبكة، عنوان IMAP وحاول مرة أخرى.
@@ -137,6 +139,10 @@ ar:
online:
delete: "%{contact_name} متصل، يرجى المحاولة مرة أخرى لاحقاً"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack هي أداة دردشة تجمع كل اتصالاتك معا في مكان واحد. من خلال دمج Slack، يمكنك الحصول على إشعار بجميع المحادثات الجديدة في حسابك مباشرة داخل Slack."
@@ -153,7 +159,7 @@ ar:
search:
search_placeholder: Search for article by title or body...
empty_placeholder: لم يتم العثور على النتائج.
- loading_placeholder: Searching...
+ loading_placeholder: يبحث...
results_title: Search results
hero:
sub_title: Search for the articles here or browse the categories below.
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 949f90373..dac883881 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -44,6 +44,8 @@ bg:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ bg:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index 0c4a0345f..09ef691d3 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -44,6 +44,8 @@ ca:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ ca:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack és una eina de xat que uneix tota la teva comunicació en un sol lloc. Integrant Slack, podràs rebre notificacions de totes les noves conversacions a la teva compte directament a dins l'Slack."
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index c87fd6bb7..d6cd4f1ae 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -44,6 +44,8 @@ cs:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ cs:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 021bbea46..f9f480ce7 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -44,6 +44,8 @@ da:
categories:
locale:
unique: bør være unik i kategorien og portalen
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Tjek venligst netværksforbindelsen, IMAP-adressen og prøv igen.
@@ -137,6 +139,10 @@ da:
online:
delete: "%{contact_name} er online, prøv igen senere"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack er et chatværktøj, der bringer al din kommunikation sammen på ét sted. Ved at integrere Slack, kan du få besked om alle de nye samtaler på din konto lige inde i din Slack."
diff --git a/config/locales/de.yml b/config/locales/de.yml
index d3bddcd19..ba4a6449e 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -44,6 +44,8 @@ de:
categories:
locale:
unique: sollte in der Kategorie und im Portal eindeutig sein
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Bitte überprüfen Sie die Netzwerkverbindung, die IMAP-Adresse und versuchen Sie es erneut.
@@ -137,6 +139,10 @@ de:
online:
delete: "%{contact_name} ist online, bitte versuchen Sie es später erneut"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack ist ein Chat-Tool, das all deine Kommunikation an einem Ort zusammenbringt. Durch die Integration von Slack kannst du über alle neuen Unterhaltungen in deinem Account direkt in deinem Slack benachrichtigt werden."
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 65d67dfac..bc2e87a31 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -44,6 +44,8 @@ el:
categories:
locale:
unique: πρέπει να είναι μοναδικό στην κατηγορία και την πύλη
+ dyte:
+ invalid_message_type: "Μη έγκυρος τύπος μηνύματος. Δεν επιτρέπεται η ενέργεια"
inboxes:
imap:
socket_error: Παρακαλώ ελέγξτε τη σύνδεση δικτύου, τη διεύθυνση IMAP και προσπαθήστε ξανά.
@@ -137,6 +139,10 @@ el:
online:
delete: "%{contact_name} είναι Online, παρακαλώ προσπαθήστε ξανά αργότερα"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Το Dyte είναι εργαλείο που σας βοηθά να προσθέσετε ζωντανό ήχο & βίντεο στην εφαρμογή σας με λίγες μόνο γραμμές κώδικα. Αυτή η ενσωμάτωση σας επιτρέπει να δώσετε μια επιλογή στους πράκτορές σας να έχουν ένα βίντεο ή μια φωνητική κλήση με τους πελάτες σας χωρίς να φύγετε από το Chatwoot."
+ meeting_name: "Ό πράκτορας %{agent_name} ξεκίνησε μια συνάντηση"
slack:
name: "Slack"
description: "Το Slack είναι ένα εργαλείο συνομιλιών (chat) το οποίο ενώνει σε ένα σημείο όλες τις επικοινωνίες. Ενοποιώντας με το Slack, μπορείτε να λαμβάνετε ειδοποιήσεις για όλες τις συνομιλίες στον λογαριασμό σας από το Slack."
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 982a480a2..ea7c24c06 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -51,13 +51,15 @@ en:
contacts:
import:
failed: File is blank
- email:
+ email:
invalid: Invalid email
phone_number:
invalid: should be in e164 format
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -153,6 +155,10 @@ en:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 56c689818..23cd3dbbc 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -44,6 +44,8 @@ es:
categories:
locale:
unique: debe ser único en la categoría y el portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Verifique la conexión de red, la dirección IMAP y vuelva a intentarlo.
@@ -137,6 +139,10 @@ es:
online:
delete: "%{contact_name} está conectado, por favor inténtalo más tarde"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack es una herramienta de chat que reúne toda su comunicación en un solo lugar. Al integrar Slack, puede ser notificado de todas las nuevas conversaciones en su cuenta directamente dentro de su Slack."
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 5d6621c5f..efb93a58c 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -44,6 +44,8 @@ fa:
categories:
locale:
unique: باید منحصر به فرد در دستهبندی و پورتال باشد
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: لطفا اتصال شبکه، آدرس IMAP را بررسی کنید و دوباره امتحان کنید.
@@ -137,6 +139,10 @@ fa:
online:
delete: "%{contact_name} آنلاین است ، لطفاً بعداً دوباره امتحان کنید"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack ابزاری برای گفتگو است که تمام ارتباطات شما را در یک مکان جمع می کند. با ادغام Slack ، می توانید از تمام مکالمات جدید در حساب خود در داخل Slack مطلع شوید."
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index d0e5ab721..ff2c4c386 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -44,6 +44,8 @@ fi:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ fi:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack on chat-työkalu, joka tuo kaiken viestintäsi yhteen paikkaan. Integroimalla Slackin voit saada ilmoituksen kaikista uusista keskusteluista Slackin sisällä."
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 4f6357232..bdca1c819 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -44,6 +44,8 @@ fr:
categories:
locale:
unique: Doit être unique dans la catégorie et le portail
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Veuillez vérifier la connexion, l'adresse IMAP et réessayez.
@@ -137,6 +139,10 @@ fr:
online:
delete: "%{contact_name} est en ligne, veuillez réessayer plus tard"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack est un outil de chat qui regroupe toutes vos communications en un seul endroit. En intégrant Slack, vous pouvez être notifié de toutes les nouvelles conversations de votre compte directement dans votre Slack."
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 3779786c6..50df3fe72 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -44,6 +44,8 @@ he:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ he:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/hi.yml b/config/locales/hi.yml
index d178a1fab..9f108798a 100644
--- a/config/locales/hi.yml
+++ b/config/locales/hi.yml
@@ -44,6 +44,8 @@ hi:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ hi:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index c060076a5..9d15b5425 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -44,6 +44,8 @@ hu:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ hu:
online:
delete: "%{contact_name} elérhető, kérjük, próbálja meg később újra"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "A Slack egy chat eszköz mely minden kommunikációdat összehozza. A Slack integrálásával értesítést kaphasz új beszélgetésekről a Slack fiókodban."
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 70ffc327b..1a61535f2 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -44,6 +44,8 @@ id:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ id:
online:
delete: "%{contact_name} sedang Online, silakan coba lagi nanti"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack adalah alat obrolan yang menyatukan semua komunikasi Anda di satu tempat. Dengan mengintegrasikan Slack, Anda bisa mendapatkan pemberitahuan tentang semua percakapan baru di akun Anda tepat di dalam Slack Anda."
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 41c5959ef..bc474cd07 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -44,6 +44,8 @@ is:
categories:
locale:
unique: ætti að vera einstakt í flokki og gátt
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Athugaðu nettenginguna, IMAP vistfangið og reyndu aftur.
@@ -137,6 +139,10 @@ is:
online:
delete: "%{contact_name} er á tengdur, vinsamlegast reyndu aftur síðar"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack er spjallforrit sem sameinar öll samskipti þín á einum stað. Með því að samþætta Slack geturðu fengið tilkynningu um öll nýju samtölin á reikningnum þínum beint inni í Slackinu þínu."
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 2c965215d..0a68e552a 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -44,6 +44,8 @@ it:
categories:
locale:
unique: dovrebbe essere unico nella categoria e nel portale
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Controlla la connessione di rete, l'indirizzo IMAP e riprova.
@@ -137,6 +139,10 @@ it:
online:
delete: "%{contact_name} è online, riprova più tardi"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack è uno strumento di chat che porta tutta la vostra comunicazione insieme in un unico posto. Integrando Slack, puoi ricevere una notifica di tutte le nuove conversazioni nel tuo account direttamente all'interno di Slack."
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index aebc35cac..710a88560 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -44,6 +44,8 @@ ja:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ ja:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 2c8cfb52c..dffa39bbd 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -44,6 +44,8 @@ ka:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ ka:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 1da5a5aa6..d6c4f0a0b 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -44,6 +44,8 @@ ko:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ ko:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 49f34a7bb..a6b7e7b75 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -44,6 +44,8 @@ lt:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ lt:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index 69a9d9a3e..49d33a211 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -44,6 +44,8 @@ lv:
categories:
locale:
unique: vajadzētu būt unikālai, kategorijā un portālā
+ dyte:
+ invalid_message_type: "Nederīgs ziņojuma veids. Darbība nav atļauta"
inboxes:
imap:
socket_error: Lūdzu, pārbaudiet tīkla savienojumu, IMAP adresi un mēģiniet vēlreiz.
@@ -137,6 +139,10 @@ lv:
online:
delete: "%{contact_name} ir Tiešsaistē, lūdzu, vēlāk mēģiniet vēlreiz"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte ir rīks, kas lietojumprogrammai palīdz pievienot audio un video tiešraidi, izmantojot tikai dažas koda rindiņas. Šī integrācija ļauj piedāvāt iespēju Jūsu aģentiem veikt video vai balss zvanu ar klientiem, neizejot no Chatwoot."
+ meeting_name: "%{agent_name} ir sācis sapulci"
slack:
name: "Slack"
description: "Slack ir tērzēšanas rīks, kas apvieno visu Jūsu saziņu vienuviet. Integrējot Slack, Jūs varat saņemt paziņojumus par visām jaunajām sarunām savā kontā tieši savā Slack."
diff --git a/config/locales/ml.yml b/config/locales/ml.yml
index 15e054a13..3a188cacb 100644
--- a/config/locales/ml.yml
+++ b/config/locales/ml.yml
@@ -44,6 +44,8 @@ ml:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ ml:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/ms.yml b/config/locales/ms.yml
index da06d9679..a5bd86df8 100644
--- a/config/locales/ms.yml
+++ b/config/locales/ms.yml
@@ -44,6 +44,8 @@ ms:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ ms:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/ne.yml b/config/locales/ne.yml
index f5f394277..98ee902db 100644
--- a/config/locales/ne.yml
+++ b/config/locales/ne.yml
@@ -44,6 +44,8 @@ ne:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ ne:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index dbb1185c7..cc43a112e 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -23,9 +23,9 @@ nl:
reset_password_failure: Oh ho! We konden geen gebruiker vinden met het opgegeven e-mailadres.
errors:
validations:
- presence: must not be blank
+ presence: mag niet leeg zijn
webhook:
- invalid: Invalid events
+ invalid: Ongeldige gebeurtenissen
signup:
disposable_email: Wij staan geen verwijderbare e-mails toe
invalid_email: Je hebt een ongeldig e-mailadres ingevoerd
@@ -33,86 +33,88 @@ nl:
failed: Aanmelden mislukt
data_import:
data_type:
- invalid: Invalid data type
+ invalid: Ongeldig datatype
contacts:
import:
- failed: File is blank
+ failed: Bestand is leeg
email:
- invalid: Invalid email
+ invalid: Ongeldig email
phone_number:
- invalid: should be in e164 format
+ invalid: moet in e164-formaat zijn
categories:
locale:
- unique: should be unique in the category and portal
+ unique: moet uniek zijn in de categorie en portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
- socket_error: Please check the network connection, IMAP address and try again.
- no_response_error: Please check the IMAP credentials and try again.
- host_unreachable_error: Host unreachable, Please check the IMAP address, IMAP port and try again.
- connection_timed_out_error: Connection timed out for %{address}:%{port}
- connection_closed_error: Connection closed.
+ socket_error: Controleer de netwerkverbinding, IMAP-adres en probeer het opnieuw.
+ no_response_error: Controleer de IMAP-gegevens en probeer het opnieuw.
+ host_unreachable_error: Host onbereikbaar, controleer het IMAP-adres, IMAP-poort en probeer het opnieuw.
+ connection_timed_out_error: Verbinding time-out voor %{address}:%{port}
+ connection_closed_error: Verbinding verbroken.
validations:
- name: should not start or end with symbols, and it should not have < > / \ @ characters.
+ name: mag niet beginnen of eindigen met symbolen, en mag geen < > / \ @ karakters hebben.
reports:
- period: Reporting period %{since} to %{until}
+ period: Rapportering van %{since} tot %{until}
agent_csv:
- agent_name: Agent name
- conversations_count: Conversations count
- avg_first_response_time: Avg first response time (Minutes)
- avg_resolution_time: Avg resolution time (Minutes)
+ agent_name: Agent naam
+ conversations_count: Aantal gesprekken
+ avg_first_response_time: Gem. eerste reactie (minuten)
+ avg_resolution_time: Gemiddelde tijd tot oplossing (minuten)
inbox_csv:
- inbox_name: Inbox name
+ inbox_name: Naam postvak
inbox_type: Inbox type
- conversations_count: No. of conversations
- avg_first_response_time: Avg first response time (Minutes)
- avg_resolution_time: Avg resolution time (Minutes)
+ conversations_count: Aantal conversaties
+ avg_first_response_time: Gem. eerste reactie (minuten)
+ avg_resolution_time: Gemiddelde tijd tot oplossing (minuten)
label_csv:
label_title: Label
- conversations_count: No. of conversations
- avg_first_response_time: Avg first response time (Minutes)
- avg_resolution_time: Avg resolution time (Minutes)
+ conversations_count: Aantal conversaties
+ avg_first_response_time: Gem. eerste reactie (minuten)
+ avg_resolution_time: Gemiddelde tijd tot oplossing (minuten)
team_csv:
- team_name: Team name
- conversations_count: Conversations count
- avg_first_response_time: Avg first response time (Minutes)
- avg_resolution_time: Avg resolution time (Minutes)
- default_group_by: day
+ team_name: Team Naam
+ conversations_count: Aantal gesprekken
+ avg_first_response_time: Gem. eerste reactie (minuten)
+ avg_resolution_time: Gemiddelde tijd tot oplossing (minuten)
+ default_group_by: dag
csat:
headers:
- contact_name: Contact Name
- contact_email_address: Contact Email Address
- contact_phone_number: Contact Phone Number
- link_to_the_conversation: Link to the conversation
+ contact_name: Contact Naam
+ contact_email_address: Contact e-mailadres
+ contact_phone_number: Contactpersoon telefoonnummer
+ link_to_the_conversation: Link naar gesprek
agent_name: Naam medewerker
- rating: Rating
- feedback: Feedback Comment
- recorded_at: Recorded date
+ rating: Beoordeling
+ feedback: Feedback Opmerking
+ recorded_at: Datum opgenomen
notifications:
notification_title:
- conversation_creation: "[New conversation] - #%{display_id} has been created in %{inbox_name}"
- conversation_assignment: "[Assigned to you] - #%{display_id} has been assigned to you"
- assigned_conversation_new_message: "[New message] - #%{display_id} %{content}"
- conversation_mention: "You have been mentioned in conversation [ID - %{display_id}] by %{name}"
+ conversation_creation: "[New conversation] - #%{display_id} is aangemaakt in %{inbox_name}"
+ conversation_assignment: "[Toegewezen aan jou] - #%{display_id} is aan jou toegewezen"
+ assigned_conversation_new_message: "[Nieuw bericht] - #%{display_id} %{content}"
+ conversation_mention: "Je bent genoemd in gesprek [ID - %{display_id}] door %{name}"
conversations:
messages:
- 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
+ instagram_story_content: "%{story_sender} heeft je genoemd in het verhaal: "
+ instagram_deleted_story_content: Dit verhaal is niet meer beschikbaar.
+ deleted: Dit bericht werd verwijderd
activity:
status:
resolved: "Gesprek werd gemarkeerd door %{user_name}"
- contact_resolved: "Conversation was resolved by %{contact_name}"
+ contact_resolved: "Gesprek werd opgelost door %{contact_name}"
open: "Gesprek werd heropend door %{user_name}"
- pending: "Conversation was marked as pending by %{user_name}"
- snoozed: "Conversation was snoozed by %{user_name}"
- auto_resolved: "Conversation was marked resolved by system due to %{duration} days of inactivity"
+ pending: "Gesprek werd gemarkeerd als in afwachting door %{user_name}"
+ snoozed: "Gesprek werd gesluimerd door %{user_name}"
+ auto_resolved: "Gesprek werd door systeem gemarkeerd als opgelost na %{duration} dagen inactiviteit"
assignee:
- self_assigned: "%{user_name} self-assigned this conversation"
+ self_assigned: "%{user_name} heeft dit gesprek aan zichzelf toegewezen"
assigned: "Toegewezen aan %{assignee_name} door %{user_name}"
removed: "Gesprek niet toegewezen door %{user_name}"
team:
assigned: "Toegewezen aan %{team_name} door %{user_name}"
- assigned_with_assignee: "Assigned to %{assignee_name} via %{team_name} by %{user_name}"
+ assigned_with_assignee: "Toegewezen aan %{assignee_name} via %{team_name} door %{user_name}"
removed: "Unassigned from %{team_name} by %{user_name}"
labels:
added: "%{user_name} added %{labels}"
@@ -132,11 +134,15 @@ nl:
email_subject: "New messages on this conversation"
transcript_subject: "Conversation Transcript"
survey:
- response: "Please rate this conversation, %{link}"
+ response: "Beoordeel het gesprek, %{link}"
contacts:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
@@ -153,7 +159,7 @@ nl:
search:
search_placeholder: Search for article by title or body...
empty_placeholder: Geen resultaten gevonden.
- loading_placeholder: Searching...
- results_title: Search results
+ loading_placeholder: Zoeken...
+ results_title: Zoekresultaten
hero:
sub_title: Search for the articles here or browse the categories below.
diff --git a/config/locales/no.yml b/config/locales/no.yml
index a11b01d9c..be8a83f59 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -44,6 +44,8 @@
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack er et chat-verktøy som bringer all kommunikasjon sammen på ett sted. Ved å integrere Slack, kan du få beskjed om alle nye samtaler i kontoen din."
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index dafd9a609..3860bde9a 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -44,6 +44,8 @@ pl:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ pl:
online:
delete: "%{contact_name} jest online, spróbuj ponownie później"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack to narzędzie czatu, które łączy całą Twoją komunikację w jednym miejscu. Integrując Slack, możesz otrzymywać powiadomienia o wszystkich nowych rozmowach na swoim koncie bezpośrednio wewnątrz Slack."
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index 0384651ec..c769d6e04 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -44,6 +44,8 @@ pt:
categories:
locale:
unique: deve ser único na categoria e no portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ pt:
online:
delete: "%{contact_name} está Online, por favor, tente novamente mais tarde"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack é uma ferramenta de chat que junta num só lugar todas as suas comunicações. Ao integrar o Slack com a sua conta, pode ser notificado de todas as novas conversas diretamente no seu Slack."
diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml
index 1030ff4fa..70f2d9cfe 100644
--- a/config/locales/pt_BR.yml
+++ b/config/locales/pt_BR.yml
@@ -44,6 +44,8 @@ pt_BR:
categories:
locale:
unique: deve ser único na categoria e no portal
+ dyte:
+ invalid_message_type: "Tipo de mensagem inválido. Ação não permitida"
inboxes:
imap:
socket_error: Por favor, verifique a conexão de rede, endereço de IMAP e tente novamente.
@@ -137,6 +139,10 @@ pt_BR:
online:
delete: "%{contact_name} está Online, por favor, tente novamente mais tarde"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte é uma ferramenta que ajuda você a adicionar áudio e vídeo ao vivo em sua aplicação com apenas algumas linhas de código. Essa integração permite dar uma opção aos seus agentes para ter uma chamada de vídeo ou voz com os seus clientes sem sair do Chatwoot."
+ meeting_name: "%{agent_name} começou a reunião"
slack:
name: "Slack"
description: "Slack é uma ferramenta que reúne todas as suas comunicações em um só lugar. Ao integrar o Slack, você pode ser notificado de todas as novas conversas da sua conta diretamente no seu Slack."
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index 02880fa43..985de9f34 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -44,6 +44,8 @@ ro:
categories:
locale:
unique: ar trebui să fie unic în categorie și portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Verificați conexiunea la rețea, adresa IMAP și încercați din nou.
@@ -137,6 +139,10 @@ ro:
online:
delete: "%{contact_name} este online, încercați din nou mai târziu"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack este un instrument de chat care vă reunește toate comunicările într-un singur loc. Prin integrarea Slack, puteți fi notificat cu privire la toate conversațiile noi din cont chiar în interiorul Slack-ului."
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index bcdc10be0..b64a685db 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -44,6 +44,8 @@ ru:
categories:
locale:
unique: Должны быть уникальными в категории и портале
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Пожалуйста, проверьте сетевое подключение, адрес IMAP и повторите попытку.
@@ -137,6 +139,10 @@ ru:
online:
delete: "%{contact_name} в сети, повторите попытку позже"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack это сервис, который позволяет объединить рабочие коммуникации в одном месте. При интеграции с Slack вы будете получать уведомления обо всех новых разговорах прямо в Slack."
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 74307f1d7..74cf8d370 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -44,6 +44,8 @@ sk:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ sk:
online:
delete: "%{contact_name} je online, skúste to prosím neskôr"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack je chatovací nástroj, ktorý spája všetku vašu komunikáciu na jednom mieste. Integráciou služby Slack môžete dostávať upozornenia na všetky nové konverzácie vo vašom účte priamo v službe Slack."
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 55d2ff766..5a17c7c0c 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -44,6 +44,8 @@ sr-Latn:
categories:
locale:
unique: treba biti jedinstvena u kategoriji i portalu
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Molim vas proverite vezu sa mrežom, IMAP adresu i pokušajte ponovo.
@@ -137,6 +139,10 @@ sr-Latn:
online:
delete: "%{contact_name} je dostupan, molim vas pokušajte ponovo"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack je alat za ćaskanje koji objedinjuje sve vaše komunikacije na jedno mesto. Integracijom Slack-a, možete biti obavešteni o svim novim razgovorima na vašem nalogu direktno u Slack-u."
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 2fdcd5e0f..57951284f 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -44,6 +44,8 @@ sv:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ sv:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack är ett chattverktyg som samlar all din kommunikation på ett ställe. Genom att integrera Slack kan du få meddelanden om alla nya konversationer på ditt konto direkt i din Slack."
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
index 05d7ade2f..d60dbcfff 100644
--- a/config/locales/ta.yml
+++ b/config/locales/ta.yml
@@ -44,6 +44,8 @@ ta:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ ta:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 3047a2765..f2eb3bd6f 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -44,6 +44,8 @@ th:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ th:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 27ed413d1..de9264115 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -44,6 +44,8 @@ tr:
categories:
locale:
unique: kategori ve portalde tekil olmalı
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Lütfen ağ bağlantınızı, IMAP adresini kontrol edin ve tekrar deneyin.
@@ -137,6 +139,10 @@ tr:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack, tüm iletişiminizi tek bir yerde bir araya getiren bir sohbet aracıdır. Slack'i entegre ederek, hesabınızdaki tüm yeni konuşmalardan Slack'inizin içinde bildirim alabilirsiniz."
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 2ac099568..eb17b1db6 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -44,6 +44,8 @@ uk:
categories:
locale:
unique: має бути унікальним на категорії і порталі
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Перевірте підключення до мережі, адреса IMAP і повторіть спробу.
@@ -137,6 +139,10 @@ uk:
online:
delete: "%{contact_name} в онлайні, будь ласка, спробуйте ще раз пізніше"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack - це інструмент чату, який об'єднує ваші комунікації разом в одному місці. Інтегруючи Slack, ви можете отримати повідомлення про всі нові діалоги у вашому обліковому записі прямо в Slack."
diff --git a/config/locales/ur.yml b/config/locales/ur.yml
index bb1e4e158..ecdedefc7 100644
--- a/config/locales/ur.yml
+++ b/config/locales/ur.yml
@@ -44,6 +44,8 @@ ur:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ ur:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/ur_IN.yml b/config/locales/ur_IN.yml
index 31101b203..5eb302471 100644
--- a/config/locales/ur_IN.yml
+++ b/config/locales/ur_IN.yml
@@ -44,6 +44,8 @@ ur:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ ur:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index 6e0a94a6c..1217f0132 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -44,6 +44,8 @@ vi:
categories:
locale:
unique: phải là duy nhất trong danh mục và cổng thông tin
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Vui lòng kiểm tra kết nối mạng, địa chỉ IMAP và thử lại.
@@ -137,6 +139,10 @@ vi:
online:
delete: "%{contact_name} đang trực tiếng, vui lòng thử lại sau"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack là một công cụ trò chuyện giúp mang tất cả các cuộc giao tiếp của bạn lại với nhau ở một nơi. Bằng cách tích hợp Slack, bạn có thể nhận được thông báo về tất cả các cuộc trò chuyện mới trong tài khoản của mình ngay bên trong Slack."
diff --git a/config/locales/zh_CN.yml b/config/locales/zh_CN.yml
index 683d345c4..e609b6dcd 100644
--- a/config/locales/zh_CN.yml
+++ b/config/locales/zh_CN.yml
@@ -44,6 +44,8 @@ zh_CN:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ zh_CN:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/locales/zh_TW.yml b/config/locales/zh_TW.yml
index 2c6d8200b..292d7c0ed 100644
--- a/config/locales/zh_TW.yml
+++ b/config/locales/zh_TW.yml
@@ -44,6 +44,8 @@ zh_TW:
categories:
locale:
unique: should be unique in the category and portal
+ dyte:
+ invalid_message_type: "Invalid message type. Action not permitted"
inboxes:
imap:
socket_error: Please check the network connection, IMAP address and try again.
@@ -137,6 +139,10 @@ zh_TW:
online:
delete: "%{contact_name} is Online, please try again later"
integration_apps:
+ dyte:
+ name: "Dyte"
+ description: "Dyte is tool that helps you to add live audio & video to your application with just a few lines of code. This integration allows you to give an option to your agents to have a video or voice call with your customers from without leaving Chatwoot."
+ meeting_name: "%{agent_name} has started a meeting"
slack:
name: "Slack"
description: "Slack is a chat tool that brings all your communication together in one place. By integrating Slack, you can get notified of all the new conversations in your account right inside your Slack."
diff --git a/config/routes.rb b/config/routes.rb
index bd4a57108..912324842 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -17,7 +17,9 @@ Rails.application.routes.draw do
get '/app', to: 'dashboard#index'
get '/app/*params', to: 'dashboard#index'
get '/app/accounts/:account_id/settings/inboxes/new/twitter', to: 'dashboard#index', as: 'app_new_twitter_inbox'
+ get '/app/accounts/:account_id/settings/inboxes/new/microsoft', to: 'dashboard#index', as: 'app_new_microsoft_inbox'
get '/app/accounts/:account_id/settings/inboxes/new/:inbox_id/agents', to: 'dashboard#index', as: 'app_twitter_inbox_agents'
+ get '/app/accounts/:account_id/settings/inboxes/new/:inbox_id/agents', to: 'dashboard#index', as: 'app_microsoft_inbox_agents'
resource :widget, only: [:show]
namespace :survey do
@@ -39,7 +41,6 @@ Rails.application.routes.draw do
namespace :actions do
resource :contact_merge, only: [:create]
end
-
resource :bulk_actions, only: [:create]
resources :agents, only: [:index, :create, :update, :destroy]
resources :agent_bots, only: [:index, :create, :show, :update, :destroy]
@@ -153,11 +154,21 @@ Rails.application.routes.draw do
resource :authorization, only: [:create]
end
+ namespace :microsoft do
+ resource :authorization, only: [:create]
+ end
+
resources :webhooks, only: [:index, :create, :update, :destroy]
namespace :integrations do
resources :apps, only: [:index, :show]
resources :hooks, only: [:create, :update, :destroy]
resource :slack, only: [:create, :update, :destroy], controller: 'slack'
+ resource :dyte, controller: 'dyte', only: [] do
+ collection do
+ post :create_a_meeting
+ post :add_participant_to_meeting
+ end
+ end
end
resources :working_hours, only: [:update]
@@ -211,6 +222,13 @@ Rails.application.routes.draw do
end
resources :inbox_members, only: [:index]
resources :labels, only: [:create, :destroy]
+ namespace :integrations do
+ resource :dyte, controller: 'dyte', only: [] do
+ collection do
+ post :add_participant_to_meeting
+ end
+ end
+ end
end
end
@@ -326,6 +344,8 @@ Rails.application.routes.draw do
resources :callback, only: [:create]
end
+ get 'microsoft/callback', to: 'microsoft/callbacks#show'
+
# ----------------------------------------------------------------------
# Routes for external service verifications
get 'apple-app-site-association' => 'apple_app#site_association'
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
index e83ddf8f0..7ebdc064b 100644
--- a/config/sidekiq.yml
+++ b/config/sidekiq.yml
@@ -4,7 +4,7 @@
# pick it up automatically.
---
:verbose: false
-:concurrency: 5
+:concurrency: <%= ENV.fetch("SIDEKIQ_CONCURRENCY", 5) %>
:timeout: 25
:max_retries: 3
@@ -30,6 +30,6 @@
# you can override concurrency based on environment
production:
- :concurrency: 10
+ :concurrency: <%= ENV.fetch("SIDEKIQ_CONCURRENCY", 10) %>
staging:
- :concurrency: 5
+ :concurrency: <%= ENV.fetch("SIDEKIQ_CONCURRENCY", 5) %>
diff --git a/db/migrate/20200417093432_remove_name_from_channels.rb b/db/migrate/20200417093432_remove_name_from_channels.rb
index 8fe234bdf..1b246801d 100644
--- a/db/migrate/20200417093432_remove_name_from_channels.rb
+++ b/db/migrate/20200417093432_remove_name_from_channels.rb
@@ -3,7 +3,7 @@ class RemoveNameFromChannels < ActiveRecord::Migration[6.0]
remove_column :channel_facebook_pages, :name, :string
remove_column :channel_twitter_profiles, :name, :string
migrate_web_widget_name_to_inbox
- remove_column :channel_web_widgets, :website_name, :string # rubocop:disable Rails/BulkChangeTable
+ remove_column :channel_web_widgets, :website_name, :string
add_column :channel_web_widgets, :welcome_title, :string
add_column :channel_web_widgets, :welcome_tagline, :string
diff --git a/db/migrate/20200418124534_add_sender_to_messages.rb b/db/migrate/20200418124534_add_sender_to_messages.rb
index a28160e1a..79a1a2a03 100644
--- a/db/migrate/20200418124534_add_sender_to_messages.rb
+++ b/db/migrate/20200418124534_add_sender_to_messages.rb
@@ -4,7 +4,7 @@ class AddSenderToMessages < ActiveRecord::Migration[6.0]
add_sender_from_message
remove_index :messages, name: 'index_messages_on_contact_id', column: 'contact_id'
remove_index :messages, name: 'index_messages_on_user_id', column: 'user_id'
- remove_column :messages, :user_id, :integer # rubocop:disable Rails/BulkChangeTable
+ remove_column :messages, :user_id, :integer
remove_column :messages, :contact_id, :integer
end
diff --git a/db/migrate/20200605130625_agent_away_message_to_auto_reply.rb b/db/migrate/20200605130625_agent_away_message_to_auto_reply.rb
index 9bf1d49c6..0cb7fa4a8 100644
--- a/db/migrate/20200605130625_agent_away_message_to_auto_reply.rb
+++ b/db/migrate/20200605130625_agent_away_message_to_auto_reply.rb
@@ -1,6 +1,6 @@
class AgentAwayMessageToAutoReply < ActiveRecord::Migration[6.0]
def change
- add_column :inboxes, :greeting_enabled, :boolean, default: false # rubocop:disable Rails/BulkChangeTable
+ add_column :inboxes, :greeting_enabled, :boolean, default: false
add_column :inboxes, :greeting_message, :string
migrate_agent_away_to_greeting
diff --git a/db/migrate/20221230113108_add_ms_oauth_token_to_channel.rb b/db/migrate/20221230113108_add_ms_oauth_token_to_channel.rb
new file mode 100644
index 000000000..d1a375599
--- /dev/null
+++ b/db/migrate/20221230113108_add_ms_oauth_token_to_channel.rb
@@ -0,0 +1,8 @@
+class AddMsOauthTokenToChannel < ActiveRecord::Migration[6.1]
+ def change
+ change_table :channel_email, bulk: true do |t|
+ t.jsonb :provider_config, default: {}
+ t.string :provider
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 2153451e1..2b279b55a 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2022_12_19_162759) do
+ActiveRecord::Schema.define(version: 2022_12_30_113108) do
# These are extensions that must be enabled in order to support this database
enable_extension "pg_stat_statements"
@@ -252,6 +252,8 @@ ActiveRecord::Schema.define(version: 2022_12_19_162759) do
t.string "smtp_authentication", default: "login"
t.string "smtp_openssl_verify_mode", default: "none"
t.boolean "smtp_enable_ssl_tls", default: false
+ t.jsonb "provider_config", default: {}
+ t.string "provider"
t.index ["email"], name: "index_channel_email_on_email", unique: true
t.index ["forward_to_email"], name: "index_channel_email_on_forward_to_email", unique: true
end
diff --git a/deployment/chatwoot-worker.1.service b/deployment/chatwoot-worker.1.service
index 6e6e113f0..b3f8804ce 100644
--- a/deployment/chatwoot-worker.1.service
+++ b/deployment/chatwoot-worker.1.service
@@ -7,7 +7,7 @@ Type=simple
User=chatwoot
WorkingDirectory=/home/chatwoot/chatwoot
-ExecStart=/bin/bash -lc 'bundle exec sidekiq -C config/sidekiq.yml'
+ExecStart=/bin/bash -lc 'dotenv bundle exec sidekiq -C config/sidekiq.yml'
Restart=always
RestartSec=1
diff --git a/lib/dyte.rb b/lib/dyte.rb
new file mode 100644
index 000000000..e090dbc5e
--- /dev/null
+++ b/lib/dyte.rb
@@ -0,0 +1,58 @@
+class Dyte
+ BASE_URL = 'https://api.cluster.dyte.in/v1'.freeze
+ API_KEY_HEADER = 'Authorization'.freeze
+
+ def initialize(organization_id, api_key)
+ @api_key = api_key
+ @organization_id = organization_id
+
+ raise ArgumentError, 'Missing Credentials' if @api_key.blank? || @organization_id.blank?
+ end
+
+ def create_a_meeting(title)
+ payload = {
+ 'title': title,
+ 'authorization': {
+ 'waitingRoom': false,
+ 'closed': false
+ },
+ 'recordOnStart': false,
+ 'liveStreamOnStart': false
+ }
+ path = "organizations/#{@organization_id}/meeting"
+ response = post(path, payload)
+ process_response(response)
+ end
+
+ def add_participant_to_meeting(meeting_id, client_id, name, avatar_url)
+ raise ArgumentError, 'Missing information' if meeting_id.blank? || client_id.blank? || name.blank? || avatar_url.blank?
+
+ payload = {
+ 'clientSpecificId': client_id.to_s,
+ 'userDetails': {
+ 'name': name,
+ 'picture': avatar_url
+ }
+ }
+ path = "organizations/#{@organization_id}/meetings/#{meeting_id}/participant"
+ response = post(path, payload)
+ process_response(response)
+ end
+
+ private
+
+ def process_response(response)
+ return response.parsed_response['data'].with_indifferent_access if response.success?
+
+ { error: response.parsed_response, error_code: response.code }
+ end
+
+ def post(path, payload)
+ HTTParty.post(
+ "#{BASE_URL}/#{path}", {
+ headers: { API_KEY_HEADER => @api_key, 'Content-Type' => 'application/json' },
+ body: payload.to_json
+ }
+ )
+ end
+end
diff --git a/lib/integrations/dyte/processor_service.rb b/lib/integrations/dyte/processor_service.rb
new file mode 100644
index 000000000..e33731738
--- /dev/null
+++ b/lib/integrations/dyte/processor_service.rb
@@ -0,0 +1,55 @@
+class Integrations::Dyte::ProcessorService
+ pattr_initialize [:account!, :conversation!]
+
+ def create_a_meeting(agent)
+ title = I18n.t('integration_apps.dyte.meeting_name', agent_name: agent.available_name)
+ response = dyte_client.create_a_meeting(title)
+
+ return response if response[:error].present?
+
+ meeting = response['meeting']
+ message = create_a_dyte_integration_message(meeting, title, agent)
+ message.push_event_data
+ end
+
+ def add_participant_to_meeting(meeting_id, user)
+ dyte_client.add_participant_to_meeting(meeting_id, user.id, user.name, avatar_url(user))
+ end
+
+ private
+
+ def create_a_dyte_integration_message(meeting, title, agent)
+ @conversation.messages.create!(
+ {
+ account_id: conversation.account_id,
+ inbox_id: conversation.inbox_id,
+ message_type: :outgoing,
+ content_type: :integrations,
+ content: title,
+ content_attributes: {
+ type: 'dyte',
+ data: {
+ meeting_id: meeting['id'],
+ room_name: meeting['roomName']
+ }
+ },
+ sender: agent
+ }
+ )
+ end
+
+ def avatar_url(user)
+ return user.avatar_url if user.avatar_url.present?
+
+ "#{ENV.fetch('FRONTEND_URL', nil)}/integrations/slack/user.png"
+ end
+
+ def dyte_hook
+ @dyte_hook ||= account.hooks.find_by!(app_id: 'dyte')
+ end
+
+ def dyte_client
+ credentials = dyte_hook.settings
+ @dyte_client ||= Dyte.new(credentials['organization_id'], credentials['api_key'])
+ end
+end
diff --git a/lib/microsoft_graph_auth.rb b/lib/microsoft_graph_auth.rb
new file mode 100644
index 000000000..a1c0bbea0
--- /dev/null
+++ b/lib/microsoft_graph_auth.rb
@@ -0,0 +1,55 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+# frozen_string_literal: true
+
+# Refer: https://github.com/microsoftgraph/msgraph-sample-rubyrailsapp
+
+require 'omniauth-oauth2'
+
+# Implements an OmniAuth strategy to get a Microsoft Graph
+# compatible token from Azure AD
+class MicrosoftGraphAuth < OmniAuth::Strategies::OAuth2
+ option :name, :microsoft_graph_auth
+
+ DEFAULT_SCOPE = 'offline_access https://outlook.office.com/IMAP.AccessAsUser.All https://outlook.office.com/SMTP.Send'
+
+ # Configure the Microsoft identity platform endpoints
+ option :client_options,
+ site: 'https://login.microsoftonline.com',
+ authorize_url: '/common/oauth2/v2.0/authorize',
+ token_url: '/common/oauth2/v2.0/token'
+
+ option :pcke, true
+ # Send the scope parameter during authorize
+ option :authorize_options, [:scope]
+
+ # Unique ID for the user is the id field
+ uid { raw_info['id'] }
+
+ # Get additional information after token is retrieved
+ extra do
+ {
+ 'raw_info' => raw_info
+ }
+ end
+
+ def raw_info
+ # Get user profile information from the /me endpoint
+ @raw_info ||= access_token.get('https://graph.microsoft.com/v1.0/me?$select=displayName').parsed
+ end
+
+ def authorize_params
+ super.tap do |params|
+ params[:scope] = request.params['scope'] if request.params['scope']
+ params[:scope] ||= DEFAULT_SCOPE
+ end
+ end
+
+ # Override callback URL
+ # OmniAuth by default passes the entire URL of the callback, including
+ # query parameters. Azure fails validation because that doesn't match the
+ # registered callback.
+ def callback_url
+ ENV.fetch('FRONTEND_URL', nil) + app_path
+ end
+end
diff --git a/package.json b/package.json
index ee830f12a..971d51f8d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@chatwoot/chatwoot",
- "version": "2.12.1",
+ "version": "2.13.0",
"license": "MIT",
"scripts": {
"eslint": "eslint app/**/*.{js,vue}",
@@ -19,7 +19,7 @@
},
"dependencies": {
"@braid/vue-formulate": "^2.5.2",
- "@chatwoot/prosemirror-schema": "https://github.com/chatwoot/prosemirror-schema.git#7e8acadd10d7b932c0dc0bd0a18f804434f83517",
+ "@chatwoot/prosemirror-schema": "https://github.com/chatwoot/prosemirror-schema.git#beta",
"@chatwoot/utils": "^0.0.10",
"@hcaptcha/vue-hcaptcha": "^0.3.2",
"@june-so/analytics-next": "^1.36.5",
@@ -47,9 +47,6 @@
"md5": "^2.3.0",
"ninja-keys": "^1.1.9",
"opus-recorder": "^8.0.5",
- "prosemirror-markdown": "1.5.1",
- "prosemirror-state": "1.3.4",
- "prosemirror-view": "1.18.4",
"semver": "7.3.5",
"spinkit": "~1.2.5",
"tailwindcss": "^1.9.6",
diff --git a/app/javascript/dashboard/assets/images/channels/api.png b/public/assets/images/dashboard/channels/api.png
similarity index 100%
rename from app/javascript/dashboard/assets/images/channels/api.png
rename to public/assets/images/dashboard/channels/api.png
diff --git a/app/javascript/dashboard/assets/images/channels/email.png b/public/assets/images/dashboard/channels/email.png
similarity index 100%
rename from app/javascript/dashboard/assets/images/channels/email.png
rename to public/assets/images/dashboard/channels/email.png
diff --git a/app/javascript/dashboard/assets/images/channels/messenger.png b/public/assets/images/dashboard/channels/facebook.png
similarity index 100%
rename from app/javascript/dashboard/assets/images/channels/messenger.png
rename to public/assets/images/dashboard/channels/facebook.png
diff --git a/app/javascript/dashboard/assets/images/channels/line.png b/public/assets/images/dashboard/channels/line.png
similarity index 100%
rename from app/javascript/dashboard/assets/images/channels/line.png
rename to public/assets/images/dashboard/channels/line.png
diff --git a/public/assets/images/dashboard/channels/microsoft.png b/public/assets/images/dashboard/channels/microsoft.png
new file mode 100644
index 000000000..1f2cb2e0d
Binary files /dev/null and b/public/assets/images/dashboard/channels/microsoft.png differ
diff --git a/app/javascript/dashboard/assets/images/channels/sms.png b/public/assets/images/dashboard/channels/sms.png
similarity index 100%
rename from app/javascript/dashboard/assets/images/channels/sms.png
rename to public/assets/images/dashboard/channels/sms.png
diff --git a/app/javascript/dashboard/assets/images/channels/telegram.png b/public/assets/images/dashboard/channels/telegram.png
similarity index 100%
rename from app/javascript/dashboard/assets/images/channels/telegram.png
rename to public/assets/images/dashboard/channels/telegram.png
diff --git a/app/javascript/dashboard/assets/images/channels/twilio.png b/public/assets/images/dashboard/channels/twilio.png
similarity index 100%
rename from app/javascript/dashboard/assets/images/channels/twilio.png
rename to public/assets/images/dashboard/channels/twilio.png
diff --git a/app/javascript/dashboard/assets/images/channels/twitter.png b/public/assets/images/dashboard/channels/twitter.png
similarity index 100%
rename from app/javascript/dashboard/assets/images/channels/twitter.png
rename to public/assets/images/dashboard/channels/twitter.png
diff --git a/app/javascript/dashboard/assets/images/channels/website.png b/public/assets/images/dashboard/channels/website.png
similarity index 100%
rename from app/javascript/dashboard/assets/images/channels/website.png
rename to public/assets/images/dashboard/channels/website.png
diff --git a/app/javascript/dashboard/assets/images/channels/whatsapp.png b/public/assets/images/dashboard/channels/whatsapp.png
similarity index 100%
rename from app/javascript/dashboard/assets/images/channels/whatsapp.png
rename to public/assets/images/dashboard/channels/whatsapp.png
diff --git a/public/dashboard/images/integrations/dyte.png b/public/dashboard/images/integrations/dyte.png
new file mode 100644
index 000000000..8a4efab2b
Binary files /dev/null and b/public/dashboard/images/integrations/dyte.png differ
diff --git a/spec/builders/v2/report_builder_spec.rb b/spec/builders/v2/report_builder_spec.rb
index 5f63ccac2..714e5fda1 100644
--- a/spec/builders/v2/report_builder_spec.rb
+++ b/spec/builders/v2/report_builder_spec.rb
@@ -2,15 +2,16 @@ require 'rails_helper'
describe ::V2::ReportBuilder do
include ActiveJob::TestHelper
- let!(:account) { create(:account) }
- let!(:user) { create(:user, account: account) }
- let!(:inbox) { create(:inbox, account: account) }
- let(:inbox_member) { create(:inbox_member, user: user, inbox: inbox) }
- let!(:label_1) { create(:label, title: 'Label_1', account: account) }
- let!(:label_2) { create(:label, title: 'Label_2', account: account) }
+ let_it_be(:account) { create(:account) }
+ let_it_be(:label_1) { create(:label, title: 'Label_1', account: account) }
+ let_it_be(:label_2) { create(:label, title: 'Label_2', account: account) }
describe '#timeseries' do
- before do
+ before_all do
+ user = create(:user, account: account)
+ inbox = create(:inbox, account: account)
+ create(:inbox_member, user: user, inbox: inbox)
+
gravatar_url = 'https://www.gravatar.com'
stub_request(:get, /#{gravatar_url}.*/).to_return(status: 404)
diff --git a/spec/controllers/api/v1/accounts/integrations/dyte_controller_spec.rb b/spec/controllers/api/v1/accounts/integrations/dyte_controller_spec.rb
new file mode 100644
index 000000000..092e467b8
--- /dev/null
+++ b/spec/controllers/api/v1/accounts/integrations/dyte_controller_spec.rb
@@ -0,0 +1,138 @@
+require 'rails_helper'
+
+RSpec.describe 'Dyte Integration API', type: :request do
+ let(:headers) { { 'Content-Type' => 'application/json' } }
+ let(:account) { create(:account) }
+ let(:inbox) { create(:inbox, account: account) }
+ let(:conversation) { create(:conversation, account: account, status: :pending) }
+ let(:message) { create(:message, conversation: conversation, account: account, inbox: conversation.inbox) }
+ let(:integration_message) do
+ create(:message, content_type: 'integrations',
+ content_attributes: { type: 'dyte', data: { meeting_id: 'm_id' } },
+ conversation: conversation, account: account, inbox: conversation.inbox)
+ end
+ let(:agent) { create(:user, account: account, role: :agent) }
+ let(:unauthorized_agent) { create(:user, account: account, role: :agent) }
+
+ before do
+ create(:integrations_hook, :dyte, account: account)
+ create(:inbox_member, user: agent, inbox: conversation.inbox)
+ end
+
+ describe 'POST /api/v1/accounts/:account_id/integrations/dyte/create_a_meeting' do
+ context 'when it is an unauthenticated user' do
+ it 'returns unauthorized' do
+ post create_a_meeting_api_v1_account_integrations_dyte_url(account)
+ expect(response).to have_http_status(:unauthorized)
+ end
+ end
+
+ context 'when the agent does not have access to the inbox' do
+ it 'returns unauthorized' do
+ post create_a_meeting_api_v1_account_integrations_dyte_url(account),
+ params: { conversation_id: conversation.display_id },
+ headers: unauthorized_agent.create_new_auth_token,
+ as: :json
+ expect(response).to have_http_status(:unauthorized)
+ end
+ end
+
+ context 'when it is an agent with inbox access and the Dyte API is a success' do
+ before do
+ stub_request(:post, 'https://api.cluster.dyte.in/v1/organizations/org_id/meeting')
+ .to_return(
+ status: 200,
+ body: { success: true, data: { meeting: { id: 'meeting_id', roomName: 'room_name' } } }.to_json,
+ headers: headers
+ )
+ end
+
+ it 'returns valid message payload' do
+ post create_a_meeting_api_v1_account_integrations_dyte_url(account),
+ params: { conversation_id: conversation.display_id },
+ headers: agent.create_new_auth_token,
+ as: :json
+ expect(response).to have_http_status(:success)
+ response_body = JSON.parse(response.body)
+ last_message = conversation.reload.messages.last
+ expect(conversation.display_id).to eq(response_body['conversation_id'])
+ expect(last_message.id).to eq(response_body['id'])
+ end
+ end
+
+ context 'when it is an agent with inbox access and the Dyte API is errored' do
+ before do
+ stub_request(:post, 'https://api.cluster.dyte.in/v1/organizations/org_id/meeting')
+ .to_return(
+ status: 422,
+ body: { success: false, data: { message: 'Title is required' } }.to_json,
+ headers: headers
+ )
+ end
+
+ it 'returns error payload' do
+ post create_a_meeting_api_v1_account_integrations_dyte_url(account),
+ params: { conversation_id: conversation.display_id },
+ headers: agent.create_new_auth_token,
+ as: :json
+ expect(response).to have_http_status(:unprocessable_entity)
+ response_body = JSON.parse(response.body)
+ expect(response_body['error']).to eq({ 'data' => { 'message' => 'Title is required' }, 'success' => false })
+ end
+ end
+ end
+
+ describe 'POST /api/v1/accounts/:account_id/integrations/dyte/add_participant_to_meeting' do
+ context 'when it is an unauthenticated user' do
+ it 'returns unauthorized' do
+ post add_participant_to_meeting_api_v1_account_integrations_dyte_url(account)
+ expect(response).to have_http_status(:unauthorized)
+ end
+ end
+
+ context 'when the agent does not have access to the inbox' do
+ it 'returns unauthorized' do
+ post add_participant_to_meeting_api_v1_account_integrations_dyte_url(account),
+ params: { message_id: message.id },
+ headers: unauthorized_agent.create_new_auth_token,
+ as: :json
+ expect(response).to have_http_status(:unauthorized)
+ end
+ end
+
+ context 'when it is an agent with inbox access and message_type is not integrations' do
+ it 'returns error' do
+ post add_participant_to_meeting_api_v1_account_integrations_dyte_url(account),
+ params: { message_id: message.id },
+ headers: agent.create_new_auth_token,
+ as: :json
+ expect(response).to have_http_status(:unprocessable_entity)
+ end
+ end
+
+ context 'when it is an agent with inbox access and message_type is integrations' do
+ before do
+ stub_request(:post, 'https://api.cluster.dyte.in/v1/organizations/org_id/meetings/m_id/participant')
+ .to_return(
+ status: 200,
+ body: { success: true, data: { authResponse: { userAdded: true, id: 'random_uuid', auth_token: 'json-web-token' } } }.to_json,
+ headers: headers
+ )
+ end
+
+ it 'returns authResponse' do
+ post add_participant_to_meeting_api_v1_account_integrations_dyte_url(account),
+ params: { message_id: integration_message.id },
+ headers: agent.create_new_auth_token,
+ as: :json
+ expect(response).to have_http_status(:success)
+ response_body = JSON.parse(response.body)
+ expect(response_body['authResponse']).to eq(
+ {
+ 'userAdded' => true, 'id' => 'random_uuid', 'auth_token' => 'json-web-token'
+ }
+ )
+ end
+ end
+ end
+end
diff --git a/spec/controllers/api/v1/accounts/microsoft/authorization_controller_spec.rb b/spec/controllers/api/v1/accounts/microsoft/authorization_controller_spec.rb
new file mode 100644
index 000000000..b65ea160d
--- /dev/null
+++ b/spec/controllers/api/v1/accounts/microsoft/authorization_controller_spec.rb
@@ -0,0 +1,48 @@
+require 'rails_helper'
+
+RSpec.describe 'Microsoft Authorization API', type: :request do
+ let(:account) { create(:account) }
+
+ describe 'POST /api/v1/accounts/{account.id}/microsoft/authorization' do
+ context 'when it is an unauthenticated user' do
+ it 'returns unauthorized' do
+ post "/api/v1/accounts/#{account.id}/microsoft/authorization"
+
+ expect(response).to have_http_status(:unauthorized)
+ end
+ end
+
+ context 'when it is an authenticated user' do
+ let(:agent) { create(:user, account: account, role: :agent) }
+ let(:administrator) { create(:user, account: account, role: :administrator) }
+
+ it 'returns unathorized for agent' do
+ post "/api/v1/accounts/#{account.id}/microsoft/authorization",
+ headers: agent.create_new_auth_token,
+ params: { email: administrator.email },
+ as: :json
+
+ expect(response).to have_http_status(:unauthorized)
+ end
+
+ it 'creates a new authorization and returns the redirect url' do
+ post "/api/v1/accounts/#{account.id}/microsoft/authorization",
+ headers: administrator.create_new_auth_token,
+ params: { email: administrator.email },
+ as: :json
+
+ expect(response).to have_http_status(:success)
+ microsoft_service = Class.new { extend MicrosoftConcern }
+ response_url = microsoft_service.microsoft_client.auth_code.authorize_url(
+ {
+ redirect_uri: "#{ENV.fetch('FRONTEND_URL', 'http://localhost:3000')}/microsoft/callback",
+ scope: 'offline_access https://outlook.office.com/IMAP.AccessAsUser.All https://outlook.office.com/SMTP.Send openid',
+ prompt: 'consent'
+ }
+ )
+ expect(JSON.parse(response.body)['url']).to eq response_url
+ expect(::Redis::Alfred.get(administrator.email)).to eq(account.id.to_s)
+ end
+ end
+ end
+end
diff --git a/spec/controllers/api/v1/widget/integrations/dyte_controller_spec.rb b/spec/controllers/api/v1/widget/integrations/dyte_controller_spec.rb
new file mode 100644
index 000000000..5d5ace90b
--- /dev/null
+++ b/spec/controllers/api/v1/widget/integrations/dyte_controller_spec.rb
@@ -0,0 +1,74 @@
+require 'rails_helper'
+
+RSpec.describe '/api/v1/widget/integrations/dyte', type: :request do
+ let(:account) { create(:account) }
+ let(:web_widget) { create(:channel_widget, account: account) }
+ let(:contact) { create(:contact, account: account, email: nil) }
+ let(:contact_inbox) { create(:contact_inbox, contact: contact, inbox: web_widget.inbox) }
+ let(:conversation) { create(:conversation, contact: contact, account: account, inbox: web_widget.inbox, contact_inbox: contact_inbox) }
+ let(:payload) { { source_id: contact_inbox.source_id, inbox_id: web_widget.inbox.id } }
+ let(:token) { ::Widget::TokenService.new(payload: payload).generate_token }
+ let(:message) { create(:message, conversation: conversation, account: account, inbox: conversation.inbox) }
+ let!(:integration_message) do
+ create(:message, content_type: 'integrations',
+ content_attributes: { type: 'dyte', data: { meeting_id: 'm_id' } },
+ conversation: conversation, account: account, inbox: conversation.inbox)
+ end
+
+ before do
+ create(:integrations_hook, :dyte, account: account)
+ end
+
+ describe 'POST /api/v1/widget/integrations/dyte/add_participant_to_meeting' do
+ context 'when token is invalid' do
+ it 'returns error' do
+ post add_participant_to_meeting_api_v1_widget_integrations_dyte_url,
+ params: { website_token: web_widget.website_token },
+ as: :json
+
+ expect(response).to have_http_status(:not_found)
+ end
+ end
+
+ context 'when token is valid' do
+ context 'when message is not an integration message' do
+ it 'returns error' do
+ post add_participant_to_meeting_api_v1_widget_integrations_dyte_url,
+ headers: { 'X-Auth-Token' => token },
+ params: { website_token: web_widget.website_token, message_id: message.id },
+ as: :json
+
+ expect(response).to have_http_status(:unprocessable_entity)
+ response_body = JSON.parse(response.body)
+ expect(response_body['error']).to eq('Invalid message type. Action not permitted')
+ end
+ end
+
+ context 'when message is an integration message' do
+ before do
+ stub_request(:post, 'https://api.cluster.dyte.in/v1/organizations/org_id/meetings/m_id/participant')
+ .to_return(
+ status: 200,
+ body: { success: true, data: { authResponse: { userAdded: true, id: 'random_uuid', auth_token: 'json-web-token' } } }.to_json,
+ headers: { 'Content-Type' => 'application/json' }
+ )
+ end
+
+ it 'returns authResponse' do
+ post add_participant_to_meeting_api_v1_widget_integrations_dyte_url,
+ headers: { 'X-Auth-Token' => token },
+ params: { website_token: web_widget.website_token, message_id: integration_message.id },
+ as: :json
+
+ expect(response).to have_http_status(:success)
+ response_body = JSON.parse(response.body)
+ expect(response_body['authResponse']).to eq(
+ {
+ 'userAdded' => true, 'id' => 'random_uuid', 'auth_token' => 'json-web-token'
+ }
+ )
+ end
+ end
+ end
+ end
+end
diff --git a/spec/controllers/microsoft/callbacks_controller_spec.rb b/spec/controllers/microsoft/callbacks_controller_spec.rb
new file mode 100644
index 000000000..7a647da6c
--- /dev/null
+++ b/spec/controllers/microsoft/callbacks_controller_spec.rb
@@ -0,0 +1,67 @@
+require 'rails_helper'
+
+RSpec.describe 'Microsoft::CallbacksController', type: :request do
+ let(:account) { create(:account) }
+ let(:code) { SecureRandom.hex(10) }
+ let(:email) { Faker::Internet.email }
+
+ before do
+ Redis::Alfred.set(email, account.id)
+ end
+
+ describe 'GET /microsoft/callback' do
+ let(:response_body_success) do
+ { id_token: JWT.encode({ email: email, name: 'test' }, false), access_token: SecureRandom.hex(10), token_type: 'Bearer',
+ refresh_token: SecureRandom.hex(10) }
+ end
+
+ it 'creates inboxes if authentication is successful' do
+ stub_request(:post, 'https://login.microsoftonline.com/common/oauth2/v2.0/token')
+ .with(body: { 'code' => code, 'grant_type' => 'authorization_code',
+ 'redirect_uri' => "#{ENV.fetch('FRONTEND_URL', 'http://localhost:3000')}/microsoft/callback" })
+ .to_return(status: 200, body: response_body_success.to_json, headers: { 'Content-Type' => 'application/json' })
+
+ get microsoft_callback_url, params: { code: code }
+
+ expect(response).to redirect_to app_microsoft_inbox_agents_url(account_id: account.id, inbox_id: account.inboxes.last.id)
+ expect(account.inboxes.count).to be 1
+ inbox = account.inboxes.last
+ expect(inbox.name).to eq 'test'
+ expect(inbox.channel.reload.provider_config.keys).to include('access_token', 'refresh_token', 'expires_on')
+ expect(inbox.channel.reload.provider_config['access_token']).to eq response_body_success[:access_token]
+ expect(inbox.channel.imap_address).to eq 'outlook.office365.com'
+ expect(Redis::Alfred.get(email)).to be_nil
+ end
+
+ it 'creates updates inbox channel config if inbox exists and authentication is successful' do
+ inbox = create(:channel_email, account: account, email: email)&.inbox
+ expect(inbox.channel.provider_config).to eq({})
+
+ stub_request(:post, 'https://login.microsoftonline.com/common/oauth2/v2.0/token')
+ .with(body: { 'code' => code, 'grant_type' => 'authorization_code',
+ 'redirect_uri' => "#{ENV.fetch('FRONTEND_URL', 'http://localhost:3000')}/microsoft/callback" })
+ .to_return(status: 200, body: response_body_success.to_json, headers: { 'Content-Type' => 'application/json' })
+
+ get microsoft_callback_url, params: { code: code }
+
+ expect(response).to redirect_to app_microsoft_inbox_agents_url(account_id: account.id, inbox_id: account.inboxes.last.id)
+ expect(account.inboxes.count).to be 1
+ expect(inbox.channel.reload.provider_config.keys).to include('access_token', 'refresh_token', 'expires_on')
+ expect(inbox.channel.reload.provider_config['access_token']).to eq response_body_success[:access_token]
+ expect(inbox.channel.imap_address).to eq 'outlook.office365.com'
+ expect(Redis::Alfred.get(email)).to be_nil
+ end
+
+ it 'redirects to microsoft app in case of error' do
+ stub_request(:post, 'https://login.microsoftonline.com/common/oauth2/v2.0/token')
+ .with(body: { 'code' => code, 'grant_type' => 'authorization_code',
+ 'redirect_uri' => "#{ENV.fetch('FRONTEND_URL', 'http://localhost:3000')}/microsoft/callback" })
+ .to_return(status: 401)
+
+ get microsoft_callback_url, params: { code: code }
+
+ expect(response).to redirect_to '/'
+ expect(Redis::Alfred.get(email).to_i).to eq account.id
+ end
+ end
+end
diff --git a/spec/drops/contact_drop_spec.rb b/spec/drops/contact_drop_spec.rb
new file mode 100644
index 000000000..c87eb4e2a
--- /dev/null
+++ b/spec/drops/contact_drop_spec.rb
@@ -0,0 +1,26 @@
+require 'rails_helper'
+
+describe ::ContactDrop do
+ subject(:contact_drop) { described_class.new(contact) }
+
+ let!(:contact) { create(:contact) }
+
+ context 'when first name' do
+ it 'returns first name' do
+ contact.update!(name: 'John Doe')
+ expect(subject.first_name).to eq 'John'
+ end
+ end
+
+ context 'when last name' do
+ it 'returns the last name' do
+ contact.update!(name: 'John Doe')
+ expect(subject.last_name).to eq 'Doe'
+ end
+
+ it 'returns empty when last name not present' do
+ contact.update!(name: 'John')
+ expect(subject.last_name).to be_nil
+ end
+ end
+end
diff --git a/spec/drops/user_drop_spec.rb b/spec/drops/user_drop_spec.rb
new file mode 100644
index 000000000..1af9f3014
--- /dev/null
+++ b/spec/drops/user_drop_spec.rb
@@ -0,0 +1,26 @@
+require 'rails_helper'
+
+describe ::UserDrop do
+ subject(:user_drop) { described_class.new(user) }
+
+ let!(:user) { create(:user) }
+
+ context 'when first name' do
+ it 'returns first name' do
+ user.update!(name: 'John Doe')
+ expect(subject.first_name).to eq 'John'
+ end
+ end
+
+ context 'when last name' do
+ it 'returns the last name' do
+ user.update!(name: 'John Doe')
+ expect(subject.last_name).to eq 'Doe'
+ end
+
+ it 'returns empty when last name not present' do
+ user.update!(name: 'John')
+ expect(subject.last_name).to be_nil
+ end
+ end
+end
diff --git a/spec/factories/integrations/hooks.rb b/spec/factories/integrations/hooks.rb
index 2d635015a..21d8a84be 100644
--- a/spec/factories/integrations/hooks.rb
+++ b/spec/factories/integrations/hooks.rb
@@ -11,5 +11,10 @@ FactoryBot.define do
app_id { 'dialogflow' }
settings { { project_id: 'test', credentials: {} } }
end
+
+ trait :dyte do
+ app_id { 'dyte' }
+ settings { { api_key: 'api_key', organization_id: 'org_id' } }
+ end
end
end
diff --git a/spec/jobs/inboxes/fetch_imap_emails_job_spec.rb b/spec/jobs/inboxes/fetch_imap_emails_job_spec.rb
index dfdf1783a..329574535 100644
--- a/spec/jobs/inboxes/fetch_imap_emails_job_spec.rb
+++ b/spec/jobs/inboxes/fetch_imap_emails_job_spec.rb
@@ -1,12 +1,21 @@
require 'rails_helper'
RSpec.describe Inboxes::FetchImapEmailsJob, type: :job do
+ include ActionMailbox::TestHelper
+
let(:account) { create(:account) }
let(:imap_email_channel) do
create(:channel_email, imap_enabled: true, imap_address: 'imap.gmail.com', imap_port: 993, imap_login: 'imap@gmail.com',
imap_password: 'password', imap_inbox_synced_at: Time.now.utc, account: account)
end
+ let(:microsoft_imap_email_channel) do
+ create(:channel_email, provider: 'microsoft', imap_enabled: true, imap_address: 'outlook.office365.com',
+ imap_port: 993, imap_login: 'imap@outlook.com', imap_password: 'password', account: account,
+ provider_config: { access_token: 'access_token' })
+ end
+ let(:ms_email_inbox) { create(:inbox, channel: microsoft_imap_email_channel, account: account) }
let!(:conversation) { create(:conversation, inbox: imap_email_channel.inbox, account: account) }
+ let(:inbound_mail) { create_inbound_email_from_mail(from: 'testemail@gmail.com', to: 'imap@outlook.com', subject: 'Hello!') }
it 'enqueues the job' do
expect { described_class.perform_later }.to have_enqueued_job(described_class)
@@ -31,6 +40,35 @@ RSpec.describe Inboxes::FetchImapEmailsJob, type: :job do
end
end
+ context 'when imap fetch new emails for microsoft mailer' do
+ it 'fetch and process all emails' do
+ email = Mail.new do
+ to 'test@outlook.com'
+ from 'test@gmail.com'
+ subject :test.to_s
+ body 'hello'
+ end
+ imap_fetch_mail = Net::IMAP::FetchData.new
+ imap_fetch_mail.attr = { RFC822: email }.with_indifferent_access
+
+ ms_imap = double
+
+ allow(Net::IMAP).to receive(:new).and_return(ms_imap)
+ allow(ms_imap).to receive(:authenticate)
+ allow(ms_imap).to receive(:select)
+ allow(ms_imap).to receive(:search).and_return([1])
+ allow(ms_imap).to receive(:fetch).and_return([imap_fetch_mail])
+ allow(Mail).to receive(:read_from_string).and_return(inbound_mail)
+
+ ms_imap_email_inbox = double
+
+ allow(Imap::ImapMailbox).to receive(:new).and_return(ms_imap_email_inbox)
+ expect(ms_imap_email_inbox).to receive(:process).with(inbound_mail, microsoft_imap_email_channel).once
+
+ described_class.perform_now(microsoft_imap_email_channel)
+ end
+ end
+
context 'when imap fetch existing emails' do
it 'does not process the email' do
email = Mail.new do
diff --git a/spec/lib/dyte_spec.rb b/spec/lib/dyte_spec.rb
new file mode 100644
index 000000000..56b29b133
--- /dev/null
+++ b/spec/lib/dyte_spec.rb
@@ -0,0 +1,76 @@
+require 'rails_helper'
+
+describe Dyte do
+ let(:dyte_client) { described_class.new('org_id', 'api_key') }
+ let(:headers) { { 'Content-Type' => 'application/json' } }
+
+ it 'raises an exception if api_key or organization ID is absent' do
+ expect { described_class.new }.to raise_error(StandardError)
+ end
+
+ context 'when create_a_meeting is called' do
+ context 'when API response is success' do
+ before do
+ stub_request(:post, 'https://api.cluster.dyte.in/v1/organizations/org_id/meeting')
+ .to_return(
+ status: 200,
+ body: { success: true, data: { meeting: { id: 'meeting_id' } } }.to_json,
+ headers: headers
+ )
+ end
+
+ it 'returns api response' do
+ response = dyte_client.create_a_meeting('title_of_the_meeting')
+ expect(response).to eq({ 'meeting' => { 'id' => 'meeting_id' } })
+ end
+ end
+
+ context 'when API response is invalid' do
+ before do
+ stub_request(:post, 'https://api.cluster.dyte.in/v1/organizations/org_id/meeting')
+ .to_return(status: 422, body: { message: 'Title is required' }.to_json, headers: headers)
+ end
+
+ it 'returns error code with data' do
+ response = dyte_client.create_a_meeting('')
+ expect(response).to eq({ error: { 'message' => 'Title is required' }, error_code: 422 })
+ end
+ end
+ end
+
+ context 'when add_participant_to_meeting is called' do
+ context 'when API parameters are missing' do
+ it 'raises an exception' do
+ expect { dyte_client.add_participant_to_meeting }.to raise_error(StandardError)
+ end
+ end
+
+ context 'when API response is success' do
+ before do
+ stub_request(:post, 'https://api.cluster.dyte.in/v1/organizations/org_id/meetings/m_id/participant')
+ .to_return(
+ status: 200,
+ body: { success: true, data: { authResponse: { userAdded: true, id: 'random_uuid', auth_token: 'json-web-token' } } }.to_json,
+ headers: headers
+ )
+ end
+
+ it 'returns api response' do
+ response = dyte_client.add_participant_to_meeting('m_id', 'c_id', 'name', 'https://avatar.url')
+ expect(response).to eq({ 'authResponse' => { 'userAdded' => true, 'id' => 'random_uuid', 'auth_token' => 'json-web-token' } })
+ end
+ end
+
+ context 'when API response is invalid' do
+ before do
+ stub_request(:post, 'https://api.cluster.dyte.in/v1/organizations/org_id/meetings/m_id/participant')
+ .to_return(status: 422, body: { message: 'Meeting ID is invalid' }.to_json, headers: headers)
+ end
+
+ it 'returns error code with data' do
+ response = dyte_client.add_participant_to_meeting('m_id', 'c_id', 'name', 'https://avatar.url')
+ expect(response).to eq({ error: { 'message' => 'Meeting ID is invalid' }, error_code: 422 })
+ end
+ end
+ end
+end
diff --git a/spec/lib/integrations/dyte/processor_service_spec.rb b/spec/lib/integrations/dyte/processor_service_spec.rb
new file mode 100644
index 000000000..bdfe615c1
--- /dev/null
+++ b/spec/lib/integrations/dyte/processor_service_spec.rb
@@ -0,0 +1,68 @@
+require 'rails_helper'
+
+describe Integrations::Dyte::ProcessorService do
+ let(:headers) { { 'Content-Type' => 'application/json' } }
+ let(:account) { create(:account) }
+ let(:inbox) { create(:inbox, account: account) }
+ let(:conversation) { create(:conversation, account: account, status: :pending) }
+ let(:processor) { described_class.new(account: account, conversation: conversation) }
+ let(:agent) { create(:user, account: account, role: :agent) }
+
+ before do
+ create(:integrations_hook, :dyte, account: account)
+ end
+
+ describe '#create_a_meeting' do
+ context 'when the API response is success' do
+ before do
+ stub_request(:post, 'https://api.cluster.dyte.in/v1/organizations/org_id/meeting')
+ .to_return(
+ status: 200,
+ body: { success: true, data: { meeting: { id: 'meeting_id', roomName: 'room_name' } } }.to_json,
+ headers: headers
+ )
+ end
+
+ it 'creates an integration message in the conversation' do
+ response = processor.create_a_meeting(agent)
+ expect(response['content']).to eq("#{agent.available_name} has started a meeting")
+ expect(conversation.reload.messages.last.content_type).to eq('integrations')
+ end
+ end
+
+ context 'when the API response is errored' do
+ before do
+ stub_request(:post, 'https://api.cluster.dyte.in/v1/organizations/org_id/meeting')
+ .to_return(
+ status: 422,
+ body: { success: false, data: { message: 'Title is required' } }.to_json,
+ headers: headers
+ )
+ end
+
+ it 'does not create an integration message in the conversation' do
+ response = processor.create_a_meeting(agent)
+ expect(response).to eq({ error: { 'data' => { 'message' => 'Title is required' }, 'success' => false }, error_code: 422 })
+ expect(conversation.reload.messages.count).to eq(0)
+ end
+ end
+ end
+
+ describe '#add_participant_to_meeting' do
+ context 'when the API response is success' do
+ before do
+ stub_request(:post, 'https://api.cluster.dyte.in/v1/organizations/org_id/meetings/m_id/participant')
+ .to_return(
+ status: 200,
+ body: { success: true, data: { authResponse: { userAdded: true, id: 'random_uuid', auth_token: 'json-web-token' } } }.to_json,
+ headers: headers
+ )
+ end
+
+ it 'return the authResponse' do
+ response = processor.add_participant_to_meeting('m_id', agent)
+ expect(response[:authResponse]).not_to be_nil
+ end
+ end
+ end
+end
diff --git a/spec/mailers/conversation_reply_mailer_spec.rb b/spec/mailers/conversation_reply_mailer_spec.rb
index 67645e101..bc89a0aa7 100644
--- a/spec/mailers/conversation_reply_mailer_spec.rb
+++ b/spec/mailers/conversation_reply_mailer_spec.rb
@@ -170,6 +170,22 @@ RSpec.describe ConversationReplyMailer, type: :mailer do
end
end
+ context 'when smtp enabled for microsoft email channel' do
+ let(:ms_smtp_email_channel) do
+ create(:channel_email, imap_login: 'smtp@outlook.com',
+ imap_enabled: true, account: account, provider: 'microsoft', provider_config: { access_token: 'access_token' })
+ end
+ let(:conversation) { create(:conversation, assignee: agent, inbox: ms_smtp_email_channel.inbox, account: account).reload }
+ let(:message) { create(:message, conversation: conversation, account: account, message_type: 'outgoing', content: 'Outgoing Message 2') }
+
+ it 'use smtp mail server' do
+ mail = described_class.email_reply(message)
+ expect(mail.delivery_method.settings.empty?).to be false
+ expect(mail.delivery_method.settings[:address]).to eq 'smtp.office365.com'
+ expect(mail.delivery_method.settings[:port]).to eq 587
+ end
+ end
+
context 'when smtp disabled for email channel', :test do
let(:conversation) { create(:conversation, assignee: agent, inbox: email_channel.inbox, account: account).reload }
let(:message) { create(:message, conversation: conversation, account: account, message_type: 'outgoing', content: 'Outgoing Message 2') }
diff --git a/spec/models/channel/email_spec.rb b/spec/models/channel/email_spec.rb
index af3a978f4..732be2e20 100644
--- a/spec/models/channel/email_spec.rb
+++ b/spec/models/channel/email_spec.rb
@@ -24,4 +24,15 @@ RSpec.describe Channel::Email do
it 'has a valid name' do
expect(channel.name).to eq('Email')
end
+
+ context 'when microsoft?' do
+ it 'returns false' do
+ expect(channel.microsoft?).to be(false)
+ end
+
+ it 'returns true' do
+ channel.provider = 'microsoft'
+ expect(channel.microsoft?).to be(true)
+ end
+ end
end
diff --git a/spec/models/concerns/liquidable_shared.rb b/spec/models/concerns/liquidable_shared.rb
new file mode 100644
index 000000000..e488e6e4e
--- /dev/null
+++ b/spec/models/concerns/liquidable_shared.rb
@@ -0,0 +1,64 @@
+require 'rails_helper'
+
+shared_examples_for 'liqudable' do
+ context 'when liquid is present in content' do
+ let(:contact) { create(:contact, name: 'john', phone_number: '+912883') }
+ let(:conversation) { create(:conversation, id: 1, contact: contact) }
+
+ context 'when message is incoming' do
+ let(:message) { build(:message, conversation: conversation, message_type: 'incoming') }
+
+ it 'will not process liquid in content' do
+ message.content = 'hey {{contact.name}} how are you?'
+ message.save!
+ expect(message.content).to eq 'hey {{contact.name}} how are you?'
+ end
+ end
+
+ context 'when message is outgoing' do
+ let(:message) { build(:message, conversation: conversation, message_type: 'outgoing') }
+
+ it 'set replaces liquid variables in message' do
+ message.content = 'hey {{contact.name}} how are you?'
+ message.save!
+ expect(message.content).to eq 'hey john how are you?'
+ end
+
+ it 'process liquid operators like default value' do
+ message.content = 'Can we send you an email at {{ contact.email | default: "default" }} ?'
+ message.save!
+ expect(message.content).to eq 'Can we send you an email at default ?'
+ end
+
+ it 'return empty string when value is not available' do
+ message.content = 'Can we send you an email at {{contact.email}}?'
+ message.save!
+ expect(message.content).to eq 'Can we send you an email at ?'
+ end
+
+ it 'will skip processing broken liquid tags' do
+ message.content = 'Can we send you an email at {{contact.email} {{hi}} ?'
+ message.save!
+ expect(message.content).to eq 'Can we send you an email at {{contact.email} {{hi}} ?'
+ end
+
+ it 'will not process liquid tags in multiple code blocks' do
+ message.content = 'hey {{contact.name}} how are you? ```code: {{contact.name}}``` ``` code: {{contact.name}} ``` test `{{contact.name}}`'
+ message.save!
+ expect(message.content).to eq 'hey john how are you? ```code: {{contact.name}}``` ``` code: {{contact.name}} ``` test `{{contact.name}}`'
+ end
+
+ it 'will not process liquid tags in single ticks' do
+ message.content = 'hey {{contact.name}} how are you? ` code: {{contact.name}} ` ` code: {{contact.name}} ` test'
+ message.save!
+ expect(message.content).to eq 'hey john how are you? ` code: {{contact.name}} ` ` code: {{contact.name}} ` test'
+ end
+
+ it 'will not throw error for broken quotes' do
+ message.content = 'hey {{contact.name}} how are you? ` code: {{contact.name}} ` ` code: {{contact.name}} test'
+ message.save!
+ expect(message.content).to eq 'hey john how are you? ` code: {{contact.name}} ` ` code: john test'
+ end
+ end
+ end
+end
diff --git a/spec/models/message_spec.rb b/spec/models/message_spec.rb
index de237415f..f88214fbe 100644
--- a/spec/models/message_spec.rb
+++ b/spec/models/message_spec.rb
@@ -1,6 +1,7 @@
# frozen_string_literal: true
require 'rails_helper'
+require Rails.root.join 'spec/models/concerns/liquidable_shared.rb'
RSpec.describe Message, type: :model do
context 'with validations' do
@@ -9,6 +10,10 @@ RSpec.describe Message, type: :model do
it { is_expected.to validate_presence_of(:account_id) }
end
+ describe 'concerns' do
+ it_behaves_like 'liqudable'
+ end
+
describe '#reopen_conversation' do
let(:conversation) { create(:conversation) }
let(:message) { build(:message, message_type: :incoming, conversation: conversation) }
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index 3b42c77ff..2e34ab601 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -7,6 +7,10 @@ require 'rspec/rails'
require 'pundit/rspec'
require 'sidekiq/testing'
+# test-prof helpers for tests optimization
+require 'test_prof/recipes/rspec/before_all'
+require 'test_prof/recipes/rspec/let_it_be'
+
# Add additional requires below this line. Rails is not loaded until this point!
# Requires supporting ruby files with custom matchers and macros, etc, in
diff --git a/spec/services/microsoft/refresh_oauth_token_service_spec.rb b/spec/services/microsoft/refresh_oauth_token_service_spec.rb
new file mode 100644
index 000000000..5218d388b
--- /dev/null
+++ b/spec/services/microsoft/refresh_oauth_token_service_spec.rb
@@ -0,0 +1,53 @@
+require 'rails_helper'
+
+RSpec.describe Microsoft::RefreshOauthTokenService do
+ let(:access_token) { SecureRandom.hex }
+ let(:refresh_token) { SecureRandom.hex }
+ let(:expires_on) { Time.zone.now + 3600 }
+
+ let!(:microsoft_email_channel) do
+ create(:channel_email, provider_config: { access_token: access_token, refresh_token: refresh_token, expires_on: expires_on })
+ end
+ let(:new_tokens) { { access_token: access_token, refresh_token: refresh_token, expires_at: expires_on.to_i, token_type: 'bearer' } }
+
+ describe '#access_token' do
+ context 'when token is not expired' do
+ it 'returns the existing access token' do
+ expect(described_class.new(channel: microsoft_email_channel).access_token).to eq(access_token)
+ expect(microsoft_email_channel.reload.provider_config['refresh_token']).to eq(refresh_token)
+ end
+ end
+
+ context 'when token is expired' do
+ let(:expires_on) { 1.minute.from_now }
+
+ before do
+ stub_request(:post, 'https://login.microsoftonline.com/common/oauth2/v2.0/token').with(
+ body: { 'grant_type' => 'refresh_token', 'refresh_token' => refresh_token }
+ ).to_return(status: 200, body: new_tokens.to_json, headers: { 'Content-Type' => 'application/json' })
+ end
+
+ it 'fetches new access token and refresh tokens' do
+ microsoft_email_channel.provider_config['expires_on'] = Time.zone.now - 3600
+ microsoft_email_channel.save!
+
+ expect(described_class.new(channel: microsoft_email_channel).access_token).not_to eq(access_token)
+ expect(microsoft_email_channel.reload.provider_config['access_token']).to eq(new_tokens[:access_token])
+ expect(microsoft_email_channel.reload.provider_config['refresh_token']).to eq(new_tokens[:refresh_token])
+ expect(microsoft_email_channel.reload.provider_config['expires_on']).to eq(Time.at(new_tokens[:expires_at]).utc.to_s)
+ end
+ end
+
+ context 'when refresh token is not present in provider config and access token is expired' do
+ it 'throws an error' do
+ microsoft_email_channel.update(provider_config: {
+ access_token: access_token,
+ expires_on: expires_on - 3600
+ })
+ expect do
+ described_class.new(channel: microsoft_email_channel).access_token
+ end.to raise_error(RuntimeError, 'A refresh_token is not available')
+ end
+ end
+ end
+end
diff --git a/spec/services/telegram/incoming_message_service_spec.rb b/spec/services/telegram/incoming_message_service_spec.rb
index 766330605..b651e6fc4 100644
--- a/spec/services/telegram/incoming_message_service_spec.rb
+++ b/spec/services/telegram/incoming_message_service_spec.rb
@@ -214,5 +214,23 @@ describe Telegram::IncomingMessageService do
expect(telegram_channel.inbox.messages.first.attachments.first.file_type).to eq('file')
end
end
+
+ context 'when valid location message params' do
+ it 'creates appropriate conversations, message and contacts' do
+ params = {
+ 'update_id' => 2_342_342_343_242,
+ 'message' => {
+ 'location': {
+ 'latitude': 37.7893768,
+ 'longitude': -122.3895553
+ }
+ }.merge(message_params)
+ }.with_indifferent_access
+ described_class.new(inbox: telegram_channel.inbox, params: params).perform
+ expect(telegram_channel.inbox.conversations.count).not_to eq(0)
+ expect(Contact.all.first.name).to eq('Sojan Jose')
+ expect(telegram_channel.inbox.messages.first.attachments.first.file_type).to eq('location')
+ end
+ end
end
end
diff --git a/spec/services/whatsapp/incoming_message_service_spec.rb b/spec/services/whatsapp/incoming_message_service_spec.rb
index 8978dbcad..3721d48cd 100644
--- a/spec/services/whatsapp/incoming_message_service_spec.rb
+++ b/spec/services/whatsapp/incoming_message_service_spec.rb
@@ -7,14 +7,16 @@ describe Whatsapp::IncomingMessageService do
end
let!(:whatsapp_channel) { create(:channel_whatsapp, sync_templates: false) }
+ let!(:params) do
+ {
+ 'contacts' => [{ 'profile' => { 'name' => 'Sojan Jose' }, 'wa_id' => '2423423243' }],
+ 'messages' => [{ 'from' => '2423423243', 'id' => 'SDFADSf23sfasdafasdfa', 'text' => { 'body' => 'Test' },
+ 'timestamp' => '1633034394', 'type' => 'text' }]
+ }.with_indifferent_access
+ end
context 'when valid text message params' do
it 'creates appropriate conversations, message and contacts' do
- params = {
- 'contacts' => [{ 'profile' => { 'name' => 'Sojan Jose' }, 'wa_id' => '2423423243' }],
- 'messages' => [{ 'from' => '2423423243', 'id' => 'SDFADSf23sfasdafasdfa', 'text' => { 'body' => 'Test' },
- 'timestamp' => '1633034394', 'type' => 'text' }]
- }.with_indifferent_access
described_class.new(inbox: whatsapp_channel.inbox, params: params).perform
expect(whatsapp_channel.inbox.conversations.count).not_to eq(0)
expect(Contact.all.first.name).to eq('Sojan Jose')
@@ -22,12 +24,6 @@ describe Whatsapp::IncomingMessageService do
end
it 'appends to last conversation when if conversation already exisits' do
- params = {
- 'contacts' => [{ 'profile' => { 'name' => 'Sojan Jose' }, 'wa_id' => '2423423243' }],
- 'messages' => [{ 'from' => '2423423243', 'id' => 'SDFADSf23sfasdafasdfa', 'text' => { 'body' => 'Test' },
- 'timestamp' => '1633034394', 'type' => 'text' }]
- }.with_indifferent_access
-
contact_inbox = create(:contact_inbox, inbox: whatsapp_channel.inbox, source_id: params[:messages].first[:from])
2.times.each { create(:conversation, inbox: whatsapp_channel.inbox, contact_inbox: contact_inbox) }
last_conversation = create(:conversation, inbox: whatsapp_channel.inbox, contact_inbox: contact_inbox)
@@ -37,6 +33,15 @@ describe Whatsapp::IncomingMessageService do
# message appended to the last conversation
expect(last_conversation.messages.last.content).to eq(params[:messages].first[:text][:body])
end
+
+ it 'will not create duplicate messages when same message is received' do
+ described_class.new(inbox: whatsapp_channel.inbox, params: params).perform
+ expect(whatsapp_channel.inbox.messages.count).to eq(1)
+
+ # this shouldn't create a duplicate message
+ described_class.new(inbox: whatsapp_channel.inbox, params: params).perform
+ expect(whatsapp_channel.inbox.messages.count).to eq(1)
+ end
end
context 'when unsupported message types' do
diff --git a/yarn.lock b/yarn.lock
index 2615cdb42..ee23124a5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1391,9 +1391,9 @@
is-url "^1.2.4"
nanoid "^2.1.11"
-"@chatwoot/prosemirror-schema@https://github.com/chatwoot/prosemirror-schema.git#7e8acadd10d7b932c0dc0bd0a18f804434f83517":
+"@chatwoot/prosemirror-schema@https://github.com/chatwoot/prosemirror-schema.git#beta":
version "1.0.0"
- resolved "https://github.com/chatwoot/prosemirror-schema.git#7e8acadd10d7b932c0dc0bd0a18f804434f83517"
+ resolved "https://github.com/chatwoot/prosemirror-schema.git#e74e54cca4acaa4d87f3e0e48d47ffaea283ec88"
dependencies:
prosemirror-commands "^1.1.4"
prosemirror-dropcursor "^1.3.2"
@@ -1401,9 +1401,13 @@
prosemirror-history "^1.1.3"
prosemirror-inputrules "^1.1.3"
prosemirror-keymap "^1.1.4"
+ prosemirror-markdown "1.5.1"
prosemirror-menu "^1.1.4"
+ prosemirror-model "^1.1.0"
prosemirror-schema-list "^1.1.4"
prosemirror-state "^1.3.3"
+ prosemirror-tables "^1.3.0"
+ prosemirror-utils "^0.9.6"
prosemirror-view "^1.17.2"
"@chatwoot/utils@^0.0.10":
@@ -4540,13 +4544,13 @@ abbrev@1:
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
- version "1.3.7"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
- integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
+accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
+ integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
dependencies:
- mime-types "~2.1.24"
- negotiator "0.6.2"
+ mime-types "~2.1.34"
+ negotiator "0.6.3"
acorn-globals@^6.0.0:
version "6.0.0"
@@ -4855,7 +4859,7 @@ array-find@^1.0.0:
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
- integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
+ integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
array-flatten@^2.1.0:
version "2.1.2"
@@ -5435,21 +5439,23 @@ bn.js@^5.0.0, bn.js@^5.1.1:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
-body-parser@1.19.0:
- version "1.19.0"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
- integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
+body-parser@1.20.1:
+ version "1.20.1"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
+ integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
dependencies:
- bytes "3.1.0"
+ bytes "3.1.2"
content-type "~1.0.4"
debug "2.6.9"
- depd "~1.1.2"
- http-errors "1.7.2"
+ depd "2.0.0"
+ destroy "1.2.0"
+ http-errors "2.0.0"
iconv-lite "0.4.24"
- on-finished "~2.3.0"
- qs "6.7.0"
- raw-body "2.4.0"
- type-is "~1.6.17"
+ on-finished "2.4.1"
+ qs "6.11.0"
+ raw-body "2.5.1"
+ type-is "~1.6.18"
+ unpipe "1.0.0"
bonjour@^3.5.0:
version "3.5.0"
@@ -5648,7 +5654,12 @@ bytes@3.0.0:
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
-bytes@3.1.0, bytes@^3.0.0:
+bytes@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+
+bytes@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
@@ -6379,12 +6390,12 @@ contains-path@^0.1.0:
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
-content-disposition@0.5.3:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
- integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
+content-disposition@0.5.4:
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
+ integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
dependencies:
- safe-buffer "5.1.2"
+ safe-buffer "5.2.1"
content-type@~1.0.4:
version "1.0.4"
@@ -6401,12 +6412,12 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
cookie-signature@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
- integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
+ integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
-cookie@0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
- integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
+cookie@0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
+ integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
copy-concurrently@^1.0.0:
version "1.0.5"
@@ -6920,14 +6931,7 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6:
dependencies:
ms "^2.1.1"
-debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
- integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
- dependencies:
- ms "2.1.2"
-
-debug@^4.3.4:
+debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -7055,6 +7059,11 @@ delegates@^1.0.0:
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+depd@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
depd@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
@@ -7068,10 +7077,10 @@ des.js@^1.0.0:
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
-destroy@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
- integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+destroy@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
+ integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
detab@2.0.4:
version "2.0.4"
@@ -7355,7 +7364,7 @@ editorconfig@^0.15.3:
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
- integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+ integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
electron-to-chromium@^1.3.719:
version "1.3.723"
@@ -7418,7 +7427,7 @@ emojis-list@^3.0.0:
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+ integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
encoding@^0.1.13:
version "0.1.13"
@@ -7569,7 +7578,7 @@ escalade@^3.1.1:
escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
- integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
version "1.0.5"
@@ -7868,7 +7877,7 @@ esutils@^2.0.2:
etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
- integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+ integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
eventemitter2@^6.4.2:
version "6.4.4"
@@ -8012,37 +8021,38 @@ expect@^26.6.2:
jest-regex-util "^26.0.0"
express@^4.17.1:
- version "4.17.1"
- resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
- integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
+ version "4.18.2"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
+ integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
dependencies:
- accepts "~1.3.7"
+ accepts "~1.3.8"
array-flatten "1.1.1"
- body-parser "1.19.0"
- content-disposition "0.5.3"
+ body-parser "1.20.1"
+ content-disposition "0.5.4"
content-type "~1.0.4"
- cookie "0.4.0"
+ cookie "0.5.0"
cookie-signature "1.0.6"
debug "2.6.9"
- depd "~1.1.2"
+ depd "2.0.0"
encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
- finalhandler "~1.1.2"
+ finalhandler "1.2.0"
fresh "0.5.2"
+ http-errors "2.0.0"
merge-descriptors "1.0.1"
methods "~1.1.2"
- on-finished "~2.3.0"
+ on-finished "2.4.1"
parseurl "~1.3.3"
path-to-regexp "0.1.7"
- proxy-addr "~2.0.5"
- qs "6.7.0"
+ proxy-addr "~2.0.7"
+ qs "6.11.0"
range-parser "~1.2.1"
- safe-buffer "5.1.2"
- send "0.17.1"
- serve-static "1.14.1"
- setprototypeof "1.1.1"
- statuses "~1.5.0"
+ safe-buffer "5.2.1"
+ send "0.18.0"
+ serve-static "1.15.0"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
type-is "~1.6.18"
utils-merge "1.0.1"
vary "~1.1.2"
@@ -8273,17 +8283,17 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
-finalhandler@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
- integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
+finalhandler@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
+ integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
dependencies:
debug "2.6.9"
encodeurl "~1.0.2"
escape-html "~1.0.3"
- on-finished "~2.3.0"
+ on-finished "2.4.1"
parseurl "~1.3.3"
- statuses "~1.5.0"
+ statuses "2.0.1"
unpipe "~1.0.0"
find-cache-dir@^2.0.0, find-cache-dir@^2.1.0:
@@ -8463,10 +8473,10 @@ format@^0.2.0:
resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=
-forwarded@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
- integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
+forwarded@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
+ integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
foundation-sites@~6.5.3:
version "6.5.3"
@@ -8483,7 +8493,7 @@ fragment-cache@^0.2.1:
fresh@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
- integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+ integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
from2@^2.1.0:
version "2.3.0"
@@ -8613,7 +8623,16 @@ get-caller-file@^2.0.1:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
+get-intrinsic@^1.0.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
+ integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.3"
+
+get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
@@ -8917,6 +8936,11 @@ has-symbols@^1.0.1, has-symbols@^1.0.2:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
+has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
has-unicode@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -9213,16 +9237,16 @@ http-deceiver@^1.2.7:
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
-http-errors@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
- integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
+http-errors@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.1"
- statuses ">= 1.5.0 < 2"
- toidentifier "1.0.0"
+ depd "2.0.0"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ toidentifier "1.0.1"
http-errors@~1.6.2:
version "1.6.3"
@@ -9234,17 +9258,6 @@ http-errors@~1.6.2:
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
-http-errors@~1.7.2:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
- integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
- dependencies:
- depd "~1.1.2"
- inherits "2.0.4"
- setprototypeof "1.1.1"
- statuses ">= 1.5.0 < 2"
- toidentifier "1.0.0"
-
http-parser-js@>=0.5.1:
version "0.5.3"
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9"
@@ -10725,9 +10738,9 @@ json3@^3.3.3:
integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
json5@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
- integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
+ integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
dependencies:
minimist "^1.2.0"
@@ -11399,12 +11412,12 @@ mdn-data@2.0.4:
mdurl@^1.0.0, mdurl@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
- integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
+ integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
- integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+ integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
memfs@^3.1.2:
version "3.2.2"
@@ -11460,7 +11473,7 @@ meow@^3.1.0:
merge-descriptors@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
- integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
+ integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
merge-source-map@^1.1.0:
version "1.1.0"
@@ -11482,7 +11495,7 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1:
methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
- integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
+ integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
microevent.ts@~0.1.1:
version "0.1.1"
@@ -11537,13 +11550,25 @@ mime-db@1.47.0, "mime-db@>= 1.43.0 < 2":
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c"
integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==
-mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19:
version "2.1.30"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d"
integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==
dependencies:
mime-db "1.47.0"
+mime-types@~2.1.24, mime-types@~2.1.34:
+ version "2.1.35"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
mime@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
@@ -11598,12 +11623,7 @@ minimatch@^3.0.2, minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
-minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.5:
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
- integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
-
-minimist@^1.2.0:
+minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
version "1.2.7"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
@@ -11710,7 +11730,7 @@ mpd-parser@0.21.0:
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
ms@2.1.1:
version "2.1.1"
@@ -11722,7 +11742,7 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-ms@^2.1.1:
+ms@2.1.3, ms@^2.1.1:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
@@ -11795,10 +11815,10 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-negotiator@0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
- integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
+negotiator@0.6.3:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
+ integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2:
version "2.6.2"
@@ -12051,9 +12071,9 @@ object-hash@^2.0.3:
integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==
object-inspect@^1.9.0:
- version "1.10.2"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30"
- integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
+ integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
object-is@^1.0.1:
version "1.1.5"
@@ -12136,10 +12156,10 @@ obuf@^1.0.0, obuf@^1.1.2:
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-on-finished@~2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
- integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+on-finished@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
+ integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
dependencies:
ee-first "1.1.1"
@@ -12228,6 +12248,11 @@ orderedmap@^1.1.0:
resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-1.1.1.tgz#c618e77611b3b21d0fe3edc92586265e0059c789"
integrity sha512-3Ux8um0zXbVacKUkcytc0u3HgC0b0bBLT+I60r2J/En72cI0nZffqrA7Xtf2Hqs27j1g82llR5Mhbd0Z1XW4AQ==
+orderedmap@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.0.tgz#819457082fa3a06abd316d83a281a1ca467437cd"
+ integrity sha512-/pIFexOm6S70EPdznemIz3BQZoJ4VTFrhqzu0ACBqBgeLsLxq8e6Jim63ImIfwW/zAD1AlXpRMlOv3aghmo4dA==
+
original@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
@@ -12543,7 +12568,7 @@ path-parse@^1.0.6:
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
- integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+ integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
path-type@^1.0.0:
version "1.1.0"
@@ -13645,6 +13670,14 @@ prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.4:
prosemirror-state "^1.0.0"
w3c-keyname "^2.2.0"
+prosemirror-keymap@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.2.0.tgz#d5cc9da9b712020690a994b50b92a0e448a60bf5"
+ integrity sha512-TdSfu+YyLDd54ufN/ZeD1VtBRYpgZnTPnnbY+4R08DDgs84KrIPEPbJL8t1Lm2dkljFx6xeBE26YWH3aIzkPKg==
+ dependencies:
+ prosemirror-state "^1.0.0"
+ w3c-keyname "^2.2.0"
+
prosemirror-markdown@1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.5.1.tgz#877c7faea2225d3c52e988599bbe4457bcb3190f"
@@ -13670,6 +13703,13 @@ prosemirror-model@^1.0.0, prosemirror-model@^1.1.0:
dependencies:
orderedmap "^1.1.0"
+prosemirror-model@^1.16.0, prosemirror-model@^1.8.1:
+ version "1.18.3"
+ resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.18.3.tgz#d1026a78cff928fd600e90d87cf7d162e0a4e3fd"
+ integrity sha512-yUVejauEY3F1r7PDy4UJKEGeIU+KFc71JQl5sNvG66CLVdKXRjhWpBW6KMeduGsmGOsw85f6EGrs6QxIKOVILA==
+ dependencies:
+ orderedmap "^2.0.0"
+
prosemirror-schema-list@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.1.4.tgz#471f9caf2d2bed93641d2e490434c0d2d4330df1"
@@ -13678,7 +13718,7 @@ prosemirror-schema-list@^1.1.4:
prosemirror-model "^1.0.0"
prosemirror-transform "^1.0.0"
-prosemirror-state@1.3.4, prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.3:
+prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.3:
version "1.3.4"
resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.3.4.tgz#4c6b52628216e753fc901c6d2bfd84ce109e8952"
integrity sha512-Xkkrpd1y/TQ6HKzN3agsQIGRcLckUMA9u3j207L04mt8ToRgpGeyhbVv0HI7omDORIBHjR29b7AwlATFFf2GLA==
@@ -13686,6 +13726,26 @@ prosemirror-state@1.3.4, prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, pro
prosemirror-model "^1.0.0"
prosemirror-transform "^1.0.0"
+prosemirror-state@^1.3.1:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.2.tgz#f93bd8a33a4454efab917ba9b738259d828db7e5"
+ integrity sha512-puuzLD2mz/oTdfgd8msFbe0A42j5eNudKAAPDB0+QJRw8cO1ygjLmhLrg9RvDpf87Dkd6D4t93qdef00KKNacQ==
+ dependencies:
+ prosemirror-model "^1.0.0"
+ prosemirror-transform "^1.0.0"
+ prosemirror-view "^1.27.0"
+
+prosemirror-tables@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.3.0.tgz#262fa7d030f7bebef7b5fd9a045bce9a786c198c"
+ integrity sha512-ujzOb37O2ahmqI626Y0N0V/SZxuA9OGNYnsIMWdfecwkc8S8OShOqeD4kKUxpD0JcP81Z8qy/ulrXQuKhS4WUg==
+ dependencies:
+ prosemirror-keymap "^1.1.2"
+ prosemirror-model "^1.8.1"
+ prosemirror-state "^1.3.1"
+ prosemirror-transform "^1.2.1"
+ prosemirror-view "^1.13.3"
+
prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.3.2.tgz#5620ebe7379e6fae4f34ecc881886cb22ce96579"
@@ -13693,7 +13753,19 @@ prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0:
dependencies:
prosemirror-model "^1.0.0"
-prosemirror-view@1.18.4, prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.17.2:
+prosemirror-transform@^1.2.1:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.7.0.tgz#a8a0768f3ee6418d26ebef435beda9d43c65e472"
+ integrity sha512-O4T697Cqilw06Zvc3Wm+e237R6eZtJL/xGMliCi+Uo8VL6qHk6afz1qq0zNjT3eZMuYwnP8ZS0+YxX/tfcE9TQ==
+ dependencies:
+ prosemirror-model "^1.0.0"
+
+prosemirror-utils@^0.9.6:
+ version "0.9.6"
+ resolved "https://registry.yarnpkg.com/prosemirror-utils/-/prosemirror-utils-0.9.6.tgz#3d97bd85897e3b535555867dc95a51399116a973"
+ integrity sha512-UC+j9hQQ1POYfMc5p7UFxBTptRiGPR7Kkmbl3jVvU8VgQbkI89tR/GK+3QYC8n+VvBZrtAoCrJItNhWSxX3slA==
+
+prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.17.2:
version "1.18.4"
resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.18.4.tgz#179141df117cf414434ade08115f2e233d135f6d"
integrity sha512-6oi62XRK5WxhMX1Amjk5uMsWILUEcFbFF75i09BzpAdI+5glhs7heCaRvKOj4v3YRJ7LJVkOXS9xvjetlE3+pA==
@@ -13702,17 +13774,26 @@ prosemirror-view@1.18.4, prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prose
prosemirror-state "^1.0.0"
prosemirror-transform "^1.1.0"
+prosemirror-view@^1.13.3, prosemirror-view@^1.27.0:
+ version "1.29.1"
+ resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.29.1.tgz#9a4938d1a863ca76e23c6573d30e3ece2b17d9a0"
+ integrity sha512-OhujVZSDsh0l0PyHNdfaBj6DBkbhYaCfbaxmTeFrMKd/eWS+G6IC+OAbmR9IsLC8Se1HSbphMaXnsXjupHL3UQ==
+ dependencies:
+ prosemirror-model "^1.16.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.1.0"
+
proto-list@~1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
-proxy-addr@~2.0.5:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
- integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
+proxy-addr@~2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
+ integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
dependencies:
- forwarded "~0.1.2"
+ forwarded "0.2.0"
ipaddr.js "1.9.1"
prr@~1.0.1:
@@ -13900,15 +13981,10 @@ q@^1.1.2:
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
-qs@6.7.0:
- version "6.7.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
- integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
-
-qs@^6.10.0:
- version "6.10.1"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a"
- integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==
+qs@6.11.0, qs@^6.10.0:
+ version "6.11.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
+ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
dependencies:
side-channel "^1.0.4"
@@ -13980,13 +14056,13 @@ range-parser@^1.2.1, range-parser@~1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-raw-body@2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
- integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
+raw-body@2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
+ integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
dependencies:
- bytes "3.1.0"
- http-errors "1.7.2"
+ bytes "3.1.2"
+ http-errors "2.0.0"
iconv-lite "0.4.24"
unpipe "1.0.0"
@@ -14632,7 +14708,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
+safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@@ -14805,24 +14881,24 @@ semver@^7.3.7:
dependencies:
lru-cache "^6.0.0"
-send@0.17.1:
- version "0.17.1"
- resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
- integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
+send@0.18.0:
+ version "0.18.0"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
+ integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
dependencies:
debug "2.6.9"
- depd "~1.1.2"
- destroy "~1.0.4"
+ depd "2.0.0"
+ destroy "1.2.0"
encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
- http-errors "~1.7.2"
+ http-errors "2.0.0"
mime "1.6.0"
- ms "2.1.1"
- on-finished "~2.3.0"
+ ms "2.1.3"
+ on-finished "2.4.1"
range-parser "~1.2.1"
- statuses "~1.5.0"
+ statuses "2.0.1"
serialize-javascript@^4.0.0:
version "4.0.0"
@@ -14869,15 +14945,15 @@ serve-index@^1.9.1:
mime-types "~2.1.17"
parseurl "~1.3.2"
-serve-static@1.14.1:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
- integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
+serve-static@1.15.0:
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
+ integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
dependencies:
encodeurl "~1.0.2"
escape-html "~1.0.3"
parseurl "~1.3.3"
- send "0.17.1"
+ send "0.18.0"
set-blocking@^2.0.0:
version "2.0.0"
@@ -14904,10 +14980,10 @@ setprototypeof@1.1.0:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
-setprototypeof@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
- integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.11"
@@ -15278,7 +15354,12 @@ static-extend@^0.1.1:
define-property "^0.2.5"
object-copy "^0.1.0"
-"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
+"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
@@ -15924,10 +16005,10 @@ to-regex@^3.0.1, to-regex@^3.0.2:
regex-not "^1.0.2"
safe-regex "^1.1.0"
-toidentifier@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
- integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
token-stream@1.0.0:
version "1.0.0"
@@ -16100,7 +16181,7 @@ type-fest@^0.8.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
-type-is@~1.6.17, type-is@~1.6.18:
+type-is@~1.6.18:
version "1.6.18"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
@@ -16298,7 +16379,7 @@ universalify@^2.0.0:
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
- integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
unquote@~1.1.1:
version "1.1.1"
@@ -16438,7 +16519,7 @@ utila@~0.4:
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
- integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+ integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
uuid-browser@^3.1.0:
version "3.1.0"
@@ -16490,7 +16571,7 @@ validate-npm-package-license@^3.0.1:
vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
- integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+ integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
vendors@^1.0.0:
version "1.0.4"