Compare commits

..
Author SHA1 Message Date
Muhsin KelothandGitHub 9b32748c8b Merge branch 'develop' into fix/error_reporting 2025-09-25 13:46:34 +05:30
Muhsin KelothandGitHub 0403361a36 Merge branch 'develop' into fix/error_reporting 2025-03-26 09:30:29 +05:30
Vishnu Narayanan 9bd93f970c fix: specs 2025-03-25 17:19:00 +05:30
Vishnu Narayanan 2e6142c4c3 fix: refactor 2025-03-25 01:13:17 +05:30
Vishnu Narayanan f32daa96ab fix: improve apm error reporting
Previously, errors were only being logged with logger.info and rendered
as JSON responses, but weren't being properly reported to APM services.
This meant that critical errors like 500s were only visible in application
logs but not in our monitoring systems, making it harder to track and debug
issues in production.

This commit ensures that all errors are properly reported to configured
APM services by:
1. Adding explicit APM error reporting alongside logging
2. Using proper APM reporting methods for each service
3. Maintaining consistent error handling across all APM integrations

These changes ensure that errors are properly captured in our monitoring
systems,improving our ability to track and debug production issues.
2025-03-25 00:36:40 +05:30
173 changed files with 243 additions and 841 deletions
@@ -23,24 +23,29 @@ module RequestExceptionHandler
Current.reset Current.reset
end end
def render_error(message, status, error = nil)
log_handled_error(error) if error
render json: { error: message }, status: status
end
def render_unauthorized(message) def render_unauthorized(message)
render json: { error: message }, status: :unauthorized render_error(message, :unauthorized)
end end
def render_not_found_error(message) def render_not_found_error(message)
render json: { error: message }, status: :not_found render_error(message, :not_found)
end end
def render_could_not_create_error(message) def render_could_not_create_error(message)
render json: { error: message }, status: :unprocessable_entity render_error(message, :unprocessable_entity)
end end
def render_payment_required(message) def render_payment_required(message)
render json: { error: message }, status: :payment_required render_error(message, :payment_required)
end end
def render_internal_server_error(message) def render_internal_server_error(message)
render json: { error: message }, status: :internal_server_error render_error(message, :internal_server_error)
end end
def render_record_invalid(exception) def render_record_invalid(exception)
@@ -57,6 +62,23 @@ module RequestExceptionHandler
end end
def log_handled_error(exception) def log_handled_error(exception)
return unless exception
logger.info("Handled error: #{exception.inspect}") logger.info("Handled error: #{exception.inspect}")
report_to_apms(exception)
end
def report_to_apms(exception)
apm_reporters = {
'NewRelic::Agent' => -> { ::NewRelic::Agent.notice_error(exception) },
'Datadog::Tracing' => -> { ::Datadog::Tracing.active_trace&.set_error(exception) },
'ElasticAPM' => -> { ::ElasticAPM.report(exception) },
'ScoutApm::Error' => -> { ::ScoutApm::Error.capture(exception) },
'Sentry' => -> { ::Sentry.capture_exception(exception) }
}
apm_reporters.each do |module_name, reporter|
reporter.call if Object.const_defined?(module_name)
end
end end
end end
@@ -1,58 +0,0 @@
<script setup>
import { useFunctionGetter, useMapGetter } from 'dashboard/composables/store';
import { useI18n } from 'vue-i18n';
import { computed } from 'vue';
const { t } = useI18n();
const getTypingUsersText = (users = []) => {
const count = users.length;
const [firstUser, secondUser] = users;
if (count === 1) {
return t('TYPING.ONE', { user: firstUser.name });
}
if (count === 2) {
return t('TYPING.TWO', {
user: firstUser.name,
secondUser: secondUser.name,
});
}
return t('TYPING.MULTIPLE', { user: firstUser.name, count: count - 1 });
};
const currentChat = useMapGetter('getSelectedChat');
const typingUsersList = useFunctionGetter(
'conversationTypingStatus/getUserList',
currentChat.value.id
);
const isAnyoneTyping = computed(() => {
return typingUsersList.value.length !== 0;
});
const typingUserNames = computed(() => {
if (typingUsersList.value.length) {
return getTypingUsersText(typingUsersList.value);
}
return '';
});
</script>
<template>
<div v-show="isAnyoneTyping">
<div
v-if="isAnyoneTyping"
class="flex py-1.5 ltr:pr-2 ltr:pl-3 rtl:pl-2 rtl:pr-3 rounded-full shadow-sm border border-n-weak bg-n-solid-2 text-xs font-semibold my-2.5 mx-auto"
>
{{ typingUserNames }}
<img
class="w-6 ltr:ml-2 rtl:mr-2"
src="assets/images/typing.gif"
alt="Someone is typing"
/>
</div>
</div>
</template>
@@ -1,44 +0,0 @@
<script setup>
import { vIntersectionObserver } from '@vueuse/components';
import { computed } from 'vue';
const props = defineProps({
label: {
type: String,
required: true,
},
variant: {
type: String,
default: 'primary',
validator: value => ['primary', 'secondary'].includes(value),
},
});
const emit = defineEmits(['click', 'intersect']);
function onIntersectionObserver([entry]) {
const isVisible = entry?.isIntersecting || false;
emit('intersect', isVisible);
}
const classToApply = computed(() => {
return {
'bg-n-solid-blue text-n-blue-text': props.variant === 'primary',
'shadow-sm border border-n-weak bg-n-solid-2 text-n-slate-11':
props.variant === 'secondary',
};
});
</script>
<template>
<div>
<div
v-intersection-observer="onIntersectionObserver"
:class="classToApply"
class="flex py-1.5 px-3 rounded-full text-xs font-semibold my-2.5 mx-auto"
@click="emit('click')"
>
{{ label }}
</div>
</div>
</template>
@@ -1,75 +0,0 @@
import { mount } from '@vue/test-utils';
import { createStore } from 'vuex';
import { nextTick } from 'vue';
import TypingIndicator from '../TypingIndicator.vue';
const createComponent = ({ typingUsers = [] } = {}) => {
const store = createStore({
modules: {
conversations: {
getters: {
getSelectedChat: () => ({ id: 1 }),
},
},
conversationTypingStatus: {
namespaced: true,
getters: {
getUserList: () => chatId => {
// Ensure we're returning the typing users for the correct chat
if (chatId === 1) {
return typingUsers;
}
return [];
},
},
},
},
});
return mount(TypingIndicator, {
global: {
plugins: [store],
},
});
};
describe('TypingIndicator', () => {
it('should not be visible when no one is typing', () => {
const wrapper = createComponent();
expect(wrapper.isVisible()).toBe(false);
});
it('should display the correct message when one user is typing', async () => {
const wrapper = createComponent({
typingUsers: [{ id: 1, name: 'John' }],
});
await nextTick();
expect(wrapper.isVisible()).toBe(true);
expect(wrapper.text()).toContain('John is typing');
});
it('should display the correct message when two users are typing', async () => {
const wrapper = createComponent({
typingUsers: [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
],
});
await nextTick();
expect(wrapper.isVisible()).toBe(true);
expect(wrapper.text()).toContain('John and Jane are typing');
});
it('should display the correct message when more than two users are typing', async () => {
const wrapper = createComponent({
typingUsers: [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 3, name: 'Bob' },
],
});
await nextTick();
expect(wrapper.isVisible()).toBe(true);
expect(wrapper.text()).toContain('John and 2 others are typing');
});
});
@@ -148,21 +148,10 @@ const isAnyDropdownActive = computed(() => {
const handleContactSearch = value => { const handleContactSearch = value => {
showContactsDropdown.value = true; showContactsDropdown.value = true;
const query = typeof value === 'string' ? value.trim() : ''; emit('searchContacts', {
const hasAlphabet = Array.from(query).some(char => { keys: ['email', 'phone_number', 'name'],
const lower = char.toLowerCase(); query: value,
const upper = char.toUpperCase();
return lower !== upper;
}); });
const isEmailLike = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(query);
const keys = ['email', 'phone_number', 'name'].filter(key => {
if (key === 'phone_number' && hasAlphabet) return false;
if (key === 'name' && isEmailLike) return false;
return true;
});
emit('searchContacts', { keys, query: value });
}; };
const handleDropdownUpdate = (type, value) => { const handleDropdownUpdate = (type, value) => {
@@ -1,7 +1,6 @@
<script> <script>
import { ref, provide } from 'vue'; import { ref, provide } from 'vue';
// composable // composable
import { useMapGetter } from 'dashboard/composables/store.js';
import { useConfig } from 'dashboard/composables/useConfig'; import { useConfig } from 'dashboard/composables/useConfig';
import { useKeyboardEvents } from 'dashboard/composables/useKeyboardEvents'; import { useKeyboardEvents } from 'dashboard/composables/useKeyboardEvents';
import { useAI } from 'dashboard/composables/useAI'; import { useAI } from 'dashboard/composables/useAI';
@@ -9,8 +8,6 @@ import { useSnakeCase } from 'dashboard/composables/useTransformKeys';
// components // components
import ReplyBox from './ReplyBox.vue'; import ReplyBox from './ReplyBox.vue';
import TypingIndicator from 'next/Conversation/Chips/TypingIndicator.vue';
import UnreadIndicator from 'next/Conversation/Chips/UnreadIndicator.vue';
import MessageList from 'next/message/MessageList.vue'; import MessageList from 'next/message/MessageList.vue';
import ConversationLabelSuggestion from './conversation/LabelSuggestion.vue'; import ConversationLabelSuggestion from './conversation/LabelSuggestion.vue';
import Banner from 'dashboard/components/ui/Banner.vue'; import Banner from 'dashboard/components/ui/Banner.vue';
@@ -24,6 +21,7 @@ import inboxMixin, { INBOX_FEATURES } from 'shared/mixins/inboxMixin';
// utils // utils
import { emitter } from 'shared/helpers/mitt'; import { emitter } from 'shared/helpers/mitt';
import { getTypingUsersText } from '../../../helper/commons';
import { calculateScrollTop } from './helpers/scrollTopCalculationHelper'; import { calculateScrollTop } from './helpers/scrollTopCalculationHelper';
import { LocalStorage } from 'shared/helpers/localStorage'; import { LocalStorage } from 'shared/helpers/localStorage';
import { import {
@@ -31,7 +29,6 @@ import {
getReadMessages, getReadMessages,
getUnreadMessages, getUnreadMessages,
} from 'dashboard/helper/conversationHelper'; } from 'dashboard/helper/conversationHelper';
import { debounce } from '@chatwoot/utils';
// constants // constants
import { BUS_EVENTS } from 'shared/constants/busEvents'; import { BUS_EVENTS } from 'shared/constants/busEvents';
@@ -39,14 +36,11 @@ import { REPLY_POLICY } from 'shared/constants/links';
import wootConstants from 'dashboard/constants/globals'; import wootConstants from 'dashboard/constants/globals';
import { LOCAL_STORAGE_KEYS } from 'dashboard/constants/localStorage'; import { LOCAL_STORAGE_KEYS } from 'dashboard/constants/localStorage';
import { INBOX_TYPES } from 'dashboard/helper/inbox'; import { INBOX_TYPES } from 'dashboard/helper/inbox';
import { FEATURE_FLAGS } from 'dashboard/featureFlags';
export default { export default {
components: { components: {
MessageList, MessageList,
ReplyBox, ReplyBox,
TypingIndicator,
UnreadIndicator,
Banner, Banner,
ConversationLabelSuggestion, ConversationLabelSuggestion,
Spinner, Spinner,
@@ -74,16 +68,6 @@ export default {
fetchLabelSuggestions, fetchLabelSuggestions,
} = useAI(); } = useAI();
const currentAccountId = useMapGetter('getCurrentAccountId');
const isFeatureEnabledonAccount = useMapGetter(
'accounts/isFeatureEnabledonAccount'
);
const useNewScrollBehavior = isFeatureEnabledonAccount.value(
currentAccountId.value,
FEATURE_FLAGS.CHAT_PRESERVE_USER_SCROLL
);
provide('contextMenuElementTarget', conversationPanelRef); provide('contextMenuElementTarget', conversationPanelRef);
return { return {
@@ -93,16 +77,12 @@ export default {
isLabelSuggestionFeatureEnabled, isLabelSuggestionFeatureEnabled,
fetchIntegrationsIfRequired, fetchIntegrationsIfRequired,
fetchLabelSuggestions, fetchLabelSuggestions,
useNewScrollBehavior,
conversationPanelRef, conversationPanelRef,
}; };
}, },
data() { data() {
return { return {
isLoadingPrevious: true, isLoadingPrevious: true,
// this is only used to show a chip if the user has scrolled far enough
// we will hide this the moment the user reaches the start of the unread messages
showFloatingUnreadIndicator: false,
heightBeforeLoad: null, heightBeforeLoad: null,
conversationPanel: null, conversationPanel: null,
hasUserScrolled: false, hasUserScrolled: false,
@@ -136,6 +116,25 @@ export default {
inbox() { inbox() {
return this.$store.getters['inboxes/getInbox'](this.inboxId); return this.$store.getters['inboxes/getInbox'](this.inboxId);
}, },
typingUsersList() {
const userList = this.$store.getters[
'conversationTypingStatus/getUserList'
](this.currentChat.id);
return userList;
},
isAnyoneTyping() {
const userList = this.typingUsersList;
return userList.length !== 0;
},
typingUserNames() {
const userList = this.typingUsersList;
if (this.isAnyoneTyping) {
const [i18nKey, params] = getTypingUsersText(userList);
return this.$t(i18nKey, params);
}
return '';
},
getMessages() { getMessages() {
const messages = this.currentChat.messages || []; const messages = this.currentChat.messages || [];
if (this.isAWhatsAppChannel) { if (this.isAWhatsAppChannel) {
@@ -228,19 +227,13 @@ export default {
return this.currentChat.unread_count || 0; return this.currentChat.unread_count || 0;
}, },
unreadMessageLabel() { unreadMessageLabel() {
if (this.unreadMessageCount <= 1) { const count =
return this.$t('CONVERSATION.SINGLE_UNREAD_MESSAGE'); this.unreadMessageCount > 9 ? '9+' : this.unreadMessageCount;
} const label =
this.unreadMessageCount > 1
if (this.unreadMessageCount > 9) { ? 'CONVERSATION.UNREAD_MESSAGES'
return this.$t('CONVERSATION.UNREAD_COUNT_OVERFLOW'); : 'CONVERSATION.UNREAD_MESSAGE';
} return `${count} ${this.$t(label)}`;
const formatter = new Intl.NumberFormat(navigator.language);
return this.$t('CONVERSATION.UNREAD_COUNT', {
count: formatter.format(this.unreadMessageCount),
});
}, },
inboxSupportsReplyTo() { inboxSupportsReplyTo() {
const incoming = this.inboxHasFeature(INBOX_FEATURES.REPLY_TO); const incoming = this.inboxHasFeature(INBOX_FEATURES.REPLY_TO);
@@ -278,7 +271,6 @@ export default {
this.addScrollListener(); this.addScrollListener();
this.fetchAllAttachmentsFromCurrentChat(); this.fetchAllAttachmentsFromCurrentChat();
this.fetchSuggestions(); this.fetchSuggestions();
this.debouncedMarkReadIfRequired = debounce(this.markReadIfRequired, 100);
}, },
unmounted() { unmounted() {
@@ -347,20 +339,10 @@ export default {
messageElement.scrollIntoView({ behavior: 'smooth' }); messageElement.scrollIntoView({ behavior: 'smooth' });
this.fetchPreviousMessages(); this.fetchPreviousMessages();
} else { } else {
// if there is not message id, that means, we are meant to scroll to bottom this.scrollToBottom();
// this is done when we get a new unread message
// however if the user has scrolled away to a certain degree
// we should preserve the scroll position
this.scrollToBottomIfNotScrolled();
} }
}); });
this.makeMessagesRead();
// when new scroll behavior is activated
// we don't mark the message as read automatically
// since we preserve the user scroll position
if (!this.useNewScrollBehavior) {
this.makeMessagesRead();
}
}, },
addScrollListener() { addScrollListener() {
this.conversationPanel = this.$el.querySelector('.conversation-panel'); this.conversationPanel = this.$el.querySelector('.conversation-panel');
@@ -372,39 +354,7 @@ export default {
removeScrollListener() { removeScrollListener() {
this.conversationPanel.removeEventListener('scroll', this.handleScroll); this.conversationPanel.removeEventListener('scroll', this.handleScroll);
}, },
isNearBottom(offset = 200) {
// In case the user has already scrolled to a point in the message, we should
// not scroll to the bottom against the intent of the user.
const clientHeight = this.conversationPanel.clientHeight;
const scrollHeight = this.conversationPanel.scrollHeight;
const scrollTop = this.conversationPanel.scrollTop;
// when scrolled at the bottom completely for any element
// scrollHeight = clientHeight + scrollTop
// so if we wanna see if the user has scrolled but not significantly
// we need to see if scrollTop > scrollHeight - clientHeight
// if the user is at the bottom or close to the bottom, we can skip scrolling
// we add a 200px margin, this has enough space to accomodate new messages
// while also resetting position to the bottom if the user has scrolled but not significantly
return scrollTop > scrollHeight - clientHeight - offset;
},
scrollToBottomIfNotScrolled() {
// we disable this behavior with a feature flag
// once the feature has been stable for a while, we can remove this guard
if (this.useNewScrollBehavior) {
const isNearBottom = this.isNearBottom();
if (this.hasUserScrolled && !isNearBottom) {
this.showFloatingUnreadIndicator = true;
return;
}
}
this.scrollToBottom();
},
scrollToBottom() { scrollToBottom() {
this.showFloatingUnreadIndicator = false;
this.isProgrammaticScroll = true; this.isProgrammaticScroll = true;
let relevantMessages = []; let relevantMessages = [];
@@ -431,10 +381,6 @@ export default {
).slice(-1); ).slice(-1);
} }
if (this.unreadMessageCount !== 0 && this.useNewScrollBehavior) {
this.makeMessagesRead();
}
this.conversationPanel.scrollTop = calculateScrollTop( this.conversationPanel.scrollTop = calculateScrollTop(
this.conversationPanel.scrollHeight, this.conversationPanel.scrollHeight,
this.$el.scrollHeight, this.$el.scrollHeight,
@@ -485,50 +431,13 @@ export default {
} else { } else {
this.hasUserScrolled = true; this.hasUserScrolled = true;
} }
// in case the user has scrolled to the bottom manually
// we trigger the makeMessagesRead method if there are unread messages
//
// for now this is activated by a feature flag only
if (this.useNewScrollBehavior) {
this.debouncedMarkReadIfRequired();
}
emitter.emit(BUS_EVENTS.ON_MESSAGE_LIST_SCROLL); emitter.emit(BUS_EVENTS.ON_MESSAGE_LIST_SCROLL);
this.fetchPreviousMessages(e.target.scrollTop); this.fetchPreviousMessages(e.target.scrollTop);
}, },
markReadIfRequired() {
if (this.isNearBottom(50) && this.unreadMessageCount !== 0) {
this.makeMessagesRead();
}
},
makeMessagesRead() { makeMessagesRead() {
this.$store.dispatch('markMessagesRead', { id: this.currentChat.id }); this.$store.dispatch('markMessagesRead', { id: this.currentChat.id });
}, },
onUnreadBadgeIntersect(visible) {
if (!this.useNewScrollBehavior) return;
if (visible) {
// when the fixed unread badge is visible
// we trigger the makeMessagesRead method
this.showFloatingUnreadIndicator = false;
this.makeMessagesRead();
}
},
getInReplyToMessage(parentMessage) {
if (!parentMessage) return {};
const inReplyToMessageId = parentMessage.content_attributes?.in_reply_to;
if (!inReplyToMessageId) return {};
return this.currentChat?.messages.find(message => {
if (message.id === inReplyToMessageId) {
return true;
}
return false;
});
},
async handleMessageRetry(message) { async handleMessageRetry(message) {
if (!message) return; if (!message) return;
const payload = useSnakeCase(message); const payload = useSnakeCase(message);
@@ -577,13 +486,13 @@ export default {
<template #unreadBadge> <template #unreadBadge>
<li <li
v-show="unreadMessageCount != 0" v-show="unreadMessageCount != 0"
class="list-none flex justify-center" class="list-none flex justify-center items-center"
> >
<UnreadIndicator <span
:label="unreadMessageLabel" class="shadow-lg rounded-full bg-n-brand text-white text-xs font-medium my-2.5 mx-auto px-2.5 py-1.5"
variant="primary" >
@intersect="onUnreadBadgeIntersect" {{ unreadMessageLabel }}
/> </span>
</li> </li>
</template> </template>
<template #after> <template #after>
@@ -603,16 +512,19 @@ export default {
}" }"
> >
<div <div
class="flex items-center justify-center gap-1 absolute w-full -top-7 h-0" v-if="isAnyoneTyping"
class="absolute flex items-center w-full h-0 -top-7"
> >
<TypingIndicator /> <div
<UnreadIndicator class="flex py-2 pr-4 pl-5 shadow-md rounded-full bg-white dark:bg-n-solid-3 text-n-slate-11 text-xs font-semibold my-2.5 mx-auto"
v-if="showFloatingUnreadIndicator && unreadMessageCount > 0" >
variant="secondary" {{ typingUserNames }}
class="cursor-pointer" <img
:label="unreadMessageLabel" class="w-6 ltr:ml-2 rtl:mr-2"
@click="scrollToBottom" src="assets/images/typing.gif"
/> alt="Someone is typing"
/>
</div>
</div> </div>
<ReplyBox <ReplyBox
:pop-out-reply-box="isPopOutReplyBox" :pop-out-reply-box="isPopOutReplyBox"
-1
View File
@@ -39,7 +39,6 @@ export const FEATURE_FLAGS = {
CHANNEL_INSTAGRAM: 'channel_instagram', CHANNEL_INSTAGRAM: 'channel_instagram',
CONTACT_CHATWOOT_SUPPORT_TEAM: 'contact_chatwoot_support_team', CONTACT_CHATWOOT_SUPPORT_TEAM: 'contact_chatwoot_support_team',
CAPTAIN_V2: 'captain_integration_v2', CAPTAIN_V2: 'captain_integration_v2',
CHAT_PRESERVE_USER_SCROLL: 'chat_preserve_user_scroll',
SAML: 'saml', SAML: 'saml',
}; };
@@ -25,6 +25,24 @@ export const isJSONValid = value => {
return true; return true;
}; };
export const getTypingUsersText = (users = []) => {
const count = users.length;
const [firstUser, secondUser] = users;
if (count === 1) {
return ['TYPING.ONE', { user: firstUser.name }];
}
if (count === 2) {
return [
'TYPING.TWO',
{ user: firstUser.name, secondUser: secondUser.name },
];
}
return ['TYPING.MULTIPLE', { user: firstUser.name, count: count - 1 }];
};
export const createPendingMessage = data => { export const createPendingMessage = data => {
const timestamp = Math.floor(new Date().getTime() / 1000); const timestamp = Math.floor(new Date().getTime() / 1000);
const tempMessageId = getUuid(); const tempMessageId = getUuid();
@@ -1,4 +1,5 @@
import { import {
getTypingUsersText,
createPendingMessage, createPendingMessage,
convertToAttributeSlug, convertToAttributeSlug,
convertToCategorySlug, convertToCategorySlug,
@@ -7,6 +8,32 @@ import {
formatToTitleCase, formatToTitleCase,
} from '../commons'; } from '../commons';
describe('#getTypingUsersText', () => {
it('returns the correct text is there is only one typing user', () => {
expect(getTypingUsersText([{ name: 'Pranav' }])).toEqual([
'TYPING.ONE',
{ user: 'Pranav' },
]);
});
it('returns the correct text is there are two typing users', () => {
expect(
getTypingUsersText([{ name: 'Pranav' }, { name: 'Nithin' }])
).toEqual(['TYPING.TWO', { user: 'Pranav', secondUser: 'Nithin' }]);
});
it('returns the correct text is there are more than two users are typing', () => {
expect(
getTypingUsersText([
{ name: 'Pranav' },
{ name: 'Nithin' },
{ name: 'Subin' },
{ name: 'Sojan' },
])
).toEqual(['TYPING.MULTIPLE', { user: 'Pranav', count: 3 }]);
});
});
describe('#createPendingMessage', () => { describe('#createPendingMessage', () => {
const message = { const message = {
message: 'hi', message: 'hi',
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Search", "PLACEHOLDER": "Search",
"EMPTY_STATE": "No results found" "EMPTY_STATE": "No results found"
}, },
"CLOSE": "Close", "CLOSE": "Close"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Place this button inside your body tag", "MESSENGER_SUB_HEAD": "Place this button inside your body tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agents", "INBOX_AGENTS": "Agents",
"INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox", "INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "بحث", "PLACEHOLDER": "بحث",
"EMPTY_STATE": "لم يتم العثور على النتائج" "EMPTY_STATE": "لم يتم العثور على النتائج"
}, },
"CLOSE": "أغلق", "CLOSE": "أغلق"
"BETA": "تجريبي",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "كود \"الماسنجر\"", "MESSENGER_HEADING": "كود \"الماسنجر\"",
"MESSENGER_SUB_HEAD": "ضع هذا الكود داخل وسم الـ body في موقعك", "MESSENGER_SUB_HEAD": "ضع هذا الكود داخل وسم الـ body في موقعك",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "وكيل الدعم", "INBOX_AGENTS": "وكيل الدعم",
"INBOX_AGENTS_SUB_TEXT": "إضافة أو إزالة وكلاء من صندوق الوارد هذا", "INBOX_AGENTS_SUB_TEXT": "إضافة أو إزالة وكلاء من صندوق الوارد هذا",
"AGENT_ASSIGNMENT": "تعيين المحادثة", "AGENT_ASSIGNMENT": "تعيين المحادثة",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Search", "PLACEHOLDER": "Search",
"EMPTY_STATE": "No results found" "EMPTY_STATE": "No results found"
}, },
"CLOSE": "Close", "CLOSE": "Close"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Place this button inside your body tag", "MESSENGER_SUB_HEAD": "Place this button inside your body tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agents", "INBOX_AGENTS": "Agents",
"INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox", "INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Търсене", "PLACEHOLDER": "Търсене",
"EMPTY_STATE": "Няма намерени резултати" "EMPTY_STATE": "Няма намерени резултати"
}, },
"CLOSE": "Close", "CLOSE": "Close"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Place this button inside your body tag", "MESSENGER_SUB_HEAD": "Place this button inside your body tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Агенти", "INBOX_AGENTS": "Агенти",
"INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox", "INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Cercar", "PLACEHOLDER": "Cercar",
"EMPTY_STATE": "No s'ha trobat agents" "EMPTY_STATE": "No s'ha trobat agents"
}, },
"CLOSE": "Tanca", "CLOSE": "Tanca"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Script del missatger", "MESSENGER_HEADING": "Script del missatger",
"MESSENGER_SUB_HEAD": "Col·loca aquest botó dins de l'etiqueta body", "MESSENGER_SUB_HEAD": "Col·loca aquest botó dins de l'etiqueta body",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agents", "INBOX_AGENTS": "Agents",
"INBOX_AGENTS_SUB_TEXT": "Afegir o eliminar agents d'aquesta safata d'entrada", "INBOX_AGENTS_SUB_TEXT": "Afegir o eliminar agents d'aquesta safata d'entrada",
"AGENT_ASSIGNMENT": "Conversació Assignada", "AGENT_ASSIGNMENT": "Conversació Assignada",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Hledat", "PLACEHOLDER": "Hledat",
"EMPTY_STATE": "Žádné výsledky" "EMPTY_STATE": "Žádné výsledky"
}, },
"CLOSE": "Zavřít", "CLOSE": "Zavřít"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger skript", "MESSENGER_HEADING": "Messenger skript",
"MESSENGER_SUB_HEAD": "Umístěte toto tlačítko dovnitř vašeho tělesného štítku", "MESSENGER_SUB_HEAD": "Umístěte toto tlačítko dovnitř vašeho tělesného štítku",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agenti", "INBOX_AGENTS": "Agenti",
"INBOX_AGENTS_SUB_TEXT": "Přidat nebo odebrat agenty z této složky doručené pošty", "INBOX_AGENTS_SUB_TEXT": "Přidat nebo odebrat agenty z této složky doručené pošty",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Søg", "PLACEHOLDER": "Søg",
"EMPTY_STATE": "Ingen resultater fundet" "EMPTY_STATE": "Ingen resultater fundet"
}, },
"CLOSE": "Luk", "CLOSE": "Luk"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger- Script", "MESSENGER_HEADING": "Messenger- Script",
"MESSENGER_SUB_HEAD": "Placer denne knap inde i din body tag", "MESSENGER_SUB_HEAD": "Placer denne knap inde i din body tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agenter", "INBOX_AGENTS": "Agenter",
"INBOX_AGENTS_SUB_TEXT": "Tilføj eller fjern agenter fra denne indbakke", "INBOX_AGENTS_SUB_TEXT": "Tilføj eller fjern agenter fra denne indbakke",
"AGENT_ASSIGNMENT": "Samtale Tildeling", "AGENT_ASSIGNMENT": "Samtale Tildeling",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Suchen", "PLACEHOLDER": "Suchen",
"EMPTY_STATE": "Keine Ergebnisse gefunden" "EMPTY_STATE": "Keine Ergebnisse gefunden"
}, },
"CLOSE": "Schließen", "CLOSE": "Schließen"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger-Skript", "MESSENGER_HEADING": "Messenger-Skript",
"MESSENGER_SUB_HEAD": "Platzieren Sie diese Schaltfläche in Ihrem Body-Tag", "MESSENGER_SUB_HEAD": "Platzieren Sie diese Schaltfläche in Ihrem Body-Tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agenten", "INBOX_AGENTS": "Agenten",
"INBOX_AGENTS_SUB_TEXT": "Hinzufügen oder Entfernen von Agenten zu diesem Posteingang", "INBOX_AGENTS_SUB_TEXT": "Hinzufügen oder Entfernen von Agenten zu diesem Posteingang",
"AGENT_ASSIGNMENT": "Konversationssauftrag", "AGENT_ASSIGNMENT": "Konversationssauftrag",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Αναζήτηση", "PLACEHOLDER": "Αναζήτηση",
"EMPTY_STATE": "Δεν βρέθηκαν αποτελέσματα" "EMPTY_STATE": "Δεν βρέθηκαν αποτελέσματα"
}, },
"CLOSE": "Κλείσιμο", "CLOSE": "Κλείσιμο"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Κώδικας (Script)", "MESSENGER_HEADING": "Κώδικας (Script)",
"MESSENGER_SUB_HEAD": "Τοποθετήσετε αυτόν τον κώδικα μέσα στο body tag της ιστοσελίδας σας", "MESSENGER_SUB_HEAD": "Τοποθετήσετε αυτόν τον κώδικα μέσα στο body tag της ιστοσελίδας σας",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Πράκτορες", "INBOX_AGENTS": "Πράκτορες",
"INBOX_AGENTS_SUB_TEXT": "Προσθέστε ή αφαιρέστε πράκτορες σε αυτό το κιβώτιο", "INBOX_AGENTS_SUB_TEXT": "Προσθέστε ή αφαιρέστε πράκτορες σε αυτό το κιβώτιο",
"AGENT_ASSIGNMENT": "Ανάθεση Συνομιλίας", "AGENT_ASSIGNMENT": "Ανάθεση Συνομιλίας",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -25,9 +25,8 @@
"PLACEHOLDER": "Type any text to search messages", "PLACEHOLDER": "Type any text to search messages",
"NO_MATCHING_RESULTS": "No results found." "NO_MATCHING_RESULTS": "No results found."
}, },
"UNREAD_COUNT": "{count} Unread Messages", "UNREAD_MESSAGES": "Unread Messages",
"UNREAD_COUNT_OVERFLOW": "9+ Unread Messages", "UNREAD_MESSAGE": "Unread Message",
"SINGLE_UNREAD_MESSAGE": "1 Unread Message",
"CLICK_HERE": "Click here", "CLICK_HERE": "Click here",
"LOADING_INBOXES": "Loading inboxes", "LOADING_INBOXES": "Loading inboxes",
"LOADING_CONVERSATIONS": "Loading Conversations", "LOADING_CONVERSATIONS": "Loading Conversations",
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Buscar", "PLACEHOLDER": "Buscar",
"EMPTY_STATE": "No se encontraron resultados" "EMPTY_STATE": "No se encontraron resultados"
}, },
"CLOSE": "Cerrar", "CLOSE": "Cerrar"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Script de Messenger", "MESSENGER_HEADING": "Script de Messenger",
"MESSENGER_SUB_HEAD": "Coloca este botón dentro de tu etiqueta cuerpo", "MESSENGER_SUB_HEAD": "Coloca este botón dentro de tu etiqueta cuerpo",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agentes", "INBOX_AGENTS": "Agentes",
"INBOX_AGENTS_SUB_TEXT": "Añadir o quitar agentes de esta bandeja de entrada", "INBOX_AGENTS_SUB_TEXT": "Añadir o quitar agentes de esta bandeja de entrada",
"AGENT_ASSIGNMENT": "Asignación de conversación", "AGENT_ASSIGNMENT": "Asignación de conversación",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "جستجو", "PLACEHOLDER": "جستجو",
"EMPTY_STATE": "نتیجه‌ای یافت نشد" "EMPTY_STATE": "نتیجه‌ای یافت نشد"
}, },
"CLOSE": "بستن", "CLOSE": "بستن"
"BETA": "آزمایشی",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "اسکریپت ویجت", "MESSENGER_HEADING": "اسکریپت ویجت",
"MESSENGER_SUB_HEAD": "این دکمه را در تگ body قرار دهید", "MESSENGER_SUB_HEAD": "این دکمه را در تگ body قرار دهید",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "ایجنت ها", "INBOX_AGENTS": "ایجنت ها",
"INBOX_AGENTS_SUB_TEXT": "اضافه کردن یا حذف کردن دسترسی ایجنت به صندوق ورودی", "INBOX_AGENTS_SUB_TEXT": "اضافه کردن یا حذف کردن دسترسی ایجنت به صندوق ورودی",
"AGENT_ASSIGNMENT": "اختصاص گفتگو", "AGENT_ASSIGNMENT": "اختصاص گفتگو",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Etsi", "PLACEHOLDER": "Etsi",
"EMPTY_STATE": "Tuloksia ei löytynyt" "EMPTY_STATE": "Tuloksia ei löytynyt"
}, },
"CLOSE": "Sulje", "CLOSE": "Sulje"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger-skripti", "MESSENGER_HEADING": "Messenger-skripti",
"MESSENGER_SUB_HEAD": "Aseta tämä painike body-tagiisi", "MESSENGER_SUB_HEAD": "Aseta tämä painike body-tagiisi",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Edustajat", "INBOX_AGENTS": "Edustajat",
"INBOX_AGENTS_SUB_TEXT": "Lisää tai poista edustajia tästä saapuneet-kansiosta", "INBOX_AGENTS_SUB_TEXT": "Lisää tai poista edustajia tästä saapuneet-kansiosta",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Rechercher", "PLACEHOLDER": "Rechercher",
"EMPTY_STATE": "Aucun résultat trouvé" "EMPTY_STATE": "Aucun résultat trouvé"
}, },
"CLOSE": "Fermer", "CLOSE": "Fermer"
"BETA": "Bêta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Script du Widget Web", "MESSENGER_HEADING": "Script du Widget Web",
"MESSENGER_SUB_HEAD": "Placez ce code avant la fermeture de votre balise body", "MESSENGER_SUB_HEAD": "Placez ce code avant la fermeture de votre balise body",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agents", "INBOX_AGENTS": "Agents",
"INBOX_AGENTS_SUB_TEXT": "Ajouter ou supprimer des agents de cette boîte de réception", "INBOX_AGENTS_SUB_TEXT": "Ajouter ou supprimer des agents de cette boîte de réception",
"AGENT_ASSIGNMENT": "Konversationsauftrag", "AGENT_ASSIGNMENT": "Konversationsauftrag",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "חפש", "PLACEHOLDER": "חפש",
"EMPTY_STATE": "לא נמצאו תוצאות" "EMPTY_STATE": "לא נמצאו תוצאות"
}, },
"CLOSE": "סגור", "CLOSE": "סגור"
"BETA": "בטא",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "סקריפט מסנג'ר", "MESSENGER_HEADING": "סקריפט מסנג'ר",
"MESSENGER_SUB_HEAD": "מקם את הכפתור הזה בתוך תג הגוף שלך", "MESSENGER_SUB_HEAD": "מקם את הכפתור הזה בתוך תג הגוף שלך",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "סוכנים", "INBOX_AGENTS": "סוכנים",
"INBOX_AGENTS_SUB_TEXT": "הוסף או הסר נציגים מתיבת הדואר הנכנס הזו", "INBOX_AGENTS_SUB_TEXT": "הוסף או הסר נציגים מתיבת הדואר הנכנס הזו",
"AGENT_ASSIGNMENT": "שיוך שיחה", "AGENT_ASSIGNMENT": "שיוך שיחה",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Search", "PLACEHOLDER": "Search",
"EMPTY_STATE": "No results found" "EMPTY_STATE": "No results found"
}, },
"CLOSE": "Close", "CLOSE": "Close"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Place this button inside your body tag", "MESSENGER_SUB_HEAD": "Place this button inside your body tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agents", "INBOX_AGENTS": "Agents",
"INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox", "INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Search", "PLACEHOLDER": "Search",
"EMPTY_STATE": "Nisu pronađeni rezultati" "EMPTY_STATE": "Nisu pronađeni rezultati"
}, },
"CLOSE": "Close", "CLOSE": "Close"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Place this button inside your body tag", "MESSENGER_SUB_HEAD": "Place this button inside your body tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agenti", "INBOX_AGENTS": "Agenti",
"INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox", "INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Keresés", "PLACEHOLDER": "Keresés",
"EMPTY_STATE": "Nincs találat" "EMPTY_STATE": "Nincs találat"
}, },
"CLOSE": "Bezárás", "CLOSE": "Bezárás"
"BETA": "Béta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger szkript", "MESSENGER_HEADING": "Messenger szkript",
"MESSENGER_SUB_HEAD": "Ezt a gombot a body tag-en belül helyezd el", "MESSENGER_SUB_HEAD": "Ezt a gombot a body tag-en belül helyezd el",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Ügynökök", "INBOX_AGENTS": "Ügynökök",
"INBOX_AGENTS_SUB_TEXT": "Ügynökök hosszáadása vagy eltávolítása az inboxból", "INBOX_AGENTS_SUB_TEXT": "Ügynökök hosszáadása vagy eltávolítása az inboxból",
"AGENT_ASSIGNMENT": "Beszélgetés hozzárendelés", "AGENT_ASSIGNMENT": "Beszélgetés hozzárendelés",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Search", "PLACEHOLDER": "Search",
"EMPTY_STATE": "No results found" "EMPTY_STATE": "No results found"
}, },
"CLOSE": "Close", "CLOSE": "Close"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Place this button inside your body tag", "MESSENGER_SUB_HEAD": "Place this button inside your body tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agents", "INBOX_AGENTS": "Agents",
"INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox", "INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Cari", "PLACEHOLDER": "Cari",
"EMPTY_STATE": "Tidak ada hasil ditemukan" "EMPTY_STATE": "Tidak ada hasil ditemukan"
}, },
"CLOSE": "Tutup", "CLOSE": "Tutup"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Tempatkan tombol ini di dalam tag <body> Anda", "MESSENGER_SUB_HEAD": "Tempatkan tombol ini di dalam tag <body> Anda",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agen", "INBOX_AGENTS": "Agen",
"INBOX_AGENTS_SUB_TEXT": "Tambahkan atau hapus agen dari kotak masuk ini", "INBOX_AGENTS_SUB_TEXT": "Tambahkan atau hapus agen dari kotak masuk ini",
"AGENT_ASSIGNMENT": "Tugas Percakapan", "AGENT_ASSIGNMENT": "Tugas Percakapan",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Leit", "PLACEHOLDER": "Leit",
"EMPTY_STATE": "Engar niðurstöður fundust" "EMPTY_STATE": "Engar niðurstöður fundust"
}, },
"CLOSE": "Close", "CLOSE": "Close"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Place this button inside your body tag", "MESSENGER_SUB_HEAD": "Place this button inside your body tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Þjónustufulltrúar", "INBOX_AGENTS": "Þjónustufulltrúar",
"INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox", "INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Cerca", "PLACEHOLDER": "Cerca",
"EMPTY_STATE": "Nessun risultato trovato" "EMPTY_STATE": "Nessun risultato trovato"
}, },
"CLOSE": "Chiudi", "CLOSE": "Chiudi"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Script Messenger", "MESSENGER_HEADING": "Script Messenger",
"MESSENGER_SUB_HEAD": "Posiziona questo pulsante all'interno del tuo tag body", "MESSENGER_SUB_HEAD": "Posiziona questo pulsante all'interno del tuo tag body",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agenti", "INBOX_AGENTS": "Agenti",
"INBOX_AGENTS_SUB_TEXT": "Aggiungi o rimuovi agenti da questa casella", "INBOX_AGENTS_SUB_TEXT": "Aggiungi o rimuovi agenti da questa casella",
"AGENT_ASSIGNMENT": "Assegnazione conversazione", "AGENT_ASSIGNMENT": "Assegnazione conversazione",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "検索", "PLACEHOLDER": "検索",
"EMPTY_STATE": "結果が見つかりませんでした。" "EMPTY_STATE": "結果が見つかりませんでした。"
}, },
"CLOSE": "閉じる", "CLOSE": "閉じる"
"BETA": "ベータ版",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messengerスクリプト", "MESSENGER_HEADING": "Messengerスクリプト",
"MESSENGER_SUB_HEAD": "このボタンをbodyタグの中に配置してください。", "MESSENGER_SUB_HEAD": "このボタンをbodyタグの中に配置してください。",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "担当者", "INBOX_AGENTS": "担当者",
"INBOX_AGENTS_SUB_TEXT": "この受信トレイから担当者を追加または削除する", "INBOX_AGENTS_SUB_TEXT": "この受信トレイから担当者を追加または削除する",
"AGENT_ASSIGNMENT": "会話の割り当て", "AGENT_ASSIGNMENT": "会話の割り当て",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Search", "PLACEHOLDER": "Search",
"EMPTY_STATE": "No results found" "EMPTY_STATE": "No results found"
}, },
"CLOSE": "Close", "CLOSE": "Close"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Place this button inside your body tag", "MESSENGER_SUB_HEAD": "Place this button inside your body tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agents", "INBOX_AGENTS": "Agents",
"INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox", "INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "검색", "PLACEHOLDER": "검색",
"EMPTY_STATE": "검색 결과가 없습니다" "EMPTY_STATE": "검색 결과가 없습니다"
}, },
"CLOSE": "닫기", "CLOSE": "닫기"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "메신저 스크립트", "MESSENGER_HEADING": "메신저 스크립트",
"MESSENGER_SUB_HEAD": "이 버튼을 당신의 body 태그 안에 넣으세요.", "MESSENGER_SUB_HEAD": "이 버튼을 당신의 body 태그 안에 넣으세요.",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "에이전트", "INBOX_AGENTS": "에이전트",
"INBOX_AGENTS_SUB_TEXT": "받은 메시지함에서 에이전트 추가 또는 제거", "INBOX_AGENTS_SUB_TEXT": "받은 메시지함에서 에이전트 추가 또는 제거",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Ieškoti", "PLACEHOLDER": "Ieškoti",
"EMPTY_STATE": "Nieko nerasta" "EMPTY_STATE": "Nieko nerasta"
}, },
"CLOSE": "Uždaryti", "CLOSE": "Uždaryti"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger scenarijus", "MESSENGER_HEADING": "Messenger scenarijus",
"MESSENGER_SUB_HEAD": "Įdėkite šį mygtuką savo <body> žymos viduje", "MESSENGER_SUB_HEAD": "Įdėkite šį mygtuką savo <body> žymos viduje",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agentai", "INBOX_AGENTS": "Agentai",
"INBOX_AGENTS_SUB_TEXT": "Pridėti ar pašalinti agentus iš gautų laiškų aplanko", "INBOX_AGENTS_SUB_TEXT": "Pridėti ar pašalinti agentus iš gautų laiškų aplanko",
"AGENT_ASSIGNMENT": "Pokalbio paskirstymas", "AGENT_ASSIGNMENT": "Pokalbio paskirstymas",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Meklēt", "PLACEHOLDER": "Meklēt",
"EMPTY_STATE": "Nav atrasts" "EMPTY_STATE": "Nav atrasts"
}, },
"CLOSE": "Aizvērt", "CLOSE": "Aizvērt"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Skripts", "MESSENGER_HEADING": "Messenger Skripts",
"MESSENGER_SUB_HEAD": "Ievietojiet šo pogu savā body tagā", "MESSENGER_SUB_HEAD": "Ievietojiet šo pogu savā body tagā",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Aģenti", "INBOX_AGENTS": "Aģenti",
"INBOX_AGENTS_SUB_TEXT": "Pievienot vai noņemt aģentus no šīs iesūtnes", "INBOX_AGENTS_SUB_TEXT": "Pievienot vai noņemt aģentus no šīs iesūtnes",
"AGENT_ASSIGNMENT": "Sarunas Piešķiršana", "AGENT_ASSIGNMENT": "Sarunas Piešķiršana",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "തിരയുക", "PLACEHOLDER": "തിരയുക",
"EMPTY_STATE": "ഒരു ഫലവും കണ്ടെത്താനായില്ല" "EMPTY_STATE": "ഒരു ഫലവും കണ്ടെത്താനായില്ല"
}, },
"CLOSE": "അടയ്ക്കുക", "CLOSE": "അടയ്ക്കുക"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "മെസഞ്ചർ സ്ക്രിപ്റ്റ്", "MESSENGER_HEADING": "മെസഞ്ചർ സ്ക്രിപ്റ്റ്",
"MESSENGER_SUB_HEAD": "ഈ ബട്ടൺ നിങ്ങളുടെ ബോഡി ടാഗിനുള്ളിൽ സ്ഥാപിക്കുക", "MESSENGER_SUB_HEAD": "ഈ ബട്ടൺ നിങ്ങളുടെ ബോഡി ടാഗിനുള്ളിൽ സ്ഥാപിക്കുക",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "ഏജന്റുമാർ", "INBOX_AGENTS": "ഏജന്റുമാർ",
"INBOX_AGENTS_SUB_TEXT": "ഈ ഇൻ‌ബോക്സിൽ നിന്ന് ഏജന്റുമാരെ ചേർക്കുക അല്ലെങ്കിൽ നീക്കംചെയ്യുക", "INBOX_AGENTS_SUB_TEXT": "ഈ ഇൻ‌ബോക്സിൽ നിന്ന് ഏജന്റുമാരെ ചേർക്കുക അല്ലെങ്കിൽ നീക്കംചെയ്യുക",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Search", "PLACEHOLDER": "Search",
"EMPTY_STATE": "Tiada dijumpa" "EMPTY_STATE": "Tiada dijumpa"
}, },
"CLOSE": "Close", "CLOSE": "Close"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Place this button inside your body tag", "MESSENGER_SUB_HEAD": "Place this button inside your body tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Ejen", "INBOX_AGENTS": "Ejen",
"INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox", "INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Search", "PLACEHOLDER": "Search",
"EMPTY_STATE": "No results found" "EMPTY_STATE": "No results found"
}, },
"CLOSE": "बन्दा गार्नुहोस्", "CLOSE": "बन्दा गार्नुहोस्"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Place this button inside your body tag", "MESSENGER_SUB_HEAD": "Place this button inside your body tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agents", "INBOX_AGENTS": "Agents",
"INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox", "INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }
@@ -5,8 +5,6 @@
"PLACEHOLDER": "Zoeken", "PLACEHOLDER": "Zoeken",
"EMPTY_STATE": "Geen resultaten gevonden" "EMPTY_STATE": "Geen resultaten gevonden"
}, },
"CLOSE": "Sluiten", "CLOSE": "Sluiten"
"BETA": "Beta",
"BETA_DESCRIPTION": "This feature is in beta and may change as we improve it."
} }
} }
@@ -618,11 +618,6 @@
"SETTINGS_POPUP": { "SETTINGS_POPUP": {
"MESSENGER_HEADING": "Messenger Script", "MESSENGER_HEADING": "Messenger Script",
"MESSENGER_SUB_HEAD": "Plaats deze knop in je lichaam tag", "MESSENGER_SUB_HEAD": "Plaats deze knop in je lichaam tag",
"ALLOWED_DOMAINS": {
"TITLE": "Allowed Domains",
"SUBTITLE": "Add wildcard or regular domains separated by commas (leave blank to allow all), e.g. *.chatwoot.dev, chatwoot.com.",
"PLACEHOLDER": "Enter domains separated by commas (eg: *.chatwoot.dev, chatwoot.com)"
},
"INBOX_AGENTS": "Agenten", "INBOX_AGENTS": "Agenten",
"INBOX_AGENTS_SUB_TEXT": "Voeg agenten toe of verwijder ze uit deze inbox", "INBOX_AGENTS_SUB_TEXT": "Voeg agenten toe of verwijder ze uit deze inbox",
"AGENT_ASSIGNMENT": "Conversation Assignment", "AGENT_ASSIGNMENT": "Conversation Assignment",
@@ -34,7 +34,7 @@
}, },
"SUBMIT": "Continue with SSO", "SUBMIT": "Continue with SSO",
"API": { "API": {
"ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." "ERROR_MESSAGE": "SSO authentication failed"
} }
} }
} }

Some files were not shown because too many files have changed in this diff Show More