Merge branch 'develop' into feat/voice-channel: resolve App.vue and pnpm-lock.yaml conflicts

This commit is contained in:
Sojan Jose
2025-09-14 09:10:49 +05:30
296 changed files with 22610 additions and 438 deletions

4
.gitignore vendored
View File

@@ -95,3 +95,7 @@ yarn-debug.log*
.claude/settings.local.json
.cursor
CLAUDE.local.md
# Histoire deployment
.netlify
.histoire

View File

@@ -81,6 +81,7 @@ gem 'devise_token_auth', '>= 1.2.3'
# authorization
gem 'jwt'
gem 'pundit'
# super admin
gem 'administrate', '>= 0.20.1'
gem 'administrate-field-active_storage', '>= 1.0.3'
@@ -171,6 +172,7 @@ gem 'audited', '~> 5.4', '>= 5.4.1'
# need for google auth
gem 'omniauth', '>= 2.1.2'
gem 'omniauth-saml'
gem 'omniauth-google-oauth2', '>= 1.1.3'
gem 'omniauth-rails_csrf_protection', '~> 1.0', '>= 1.0.2'

View File

@@ -589,8 +589,9 @@ GEM
oj (3.16.10)
bigdecimal (>= 3.0)
ostruct (>= 0.2)
omniauth (2.1.2)
omniauth (2.1.3)
hashie (>= 3.4.6)
logger
rack (>= 2.2.3)
rack-protection
omniauth-google-oauth2 (1.1.3)
@@ -604,6 +605,9 @@ GEM
omniauth-rails_csrf_protection (1.0.2)
actionpack (>= 4.2)
omniauth (~> 2.0)
omniauth-saml (2.2.4)
omniauth (~> 2.1)
ruby-saml (~> 1.18)
opensearch-ruby (3.4.0)
faraday (>= 1.0, < 3)
multi_json (>= 1.0)
@@ -773,6 +777,9 @@ GEM
faraday (>= 1)
faraday-multipart (>= 1)
ruby-progressbar (1.13.0)
ruby-saml (1.18.1)
nokogiri (>= 1.13.10)
rexml
ruby-vips (2.1.4)
ffi (~> 1.12)
ruby2_keywords (0.0.5)
@@ -1047,6 +1054,7 @@ DEPENDENCIES
omniauth-google-oauth2 (>= 1.1.3)
omniauth-oauth2
omniauth-rails_csrf_protection (~> 1.0, >= 1.0.2)
omniauth-saml
opensearch-ruby
pg
pg_search

View File

@@ -4,17 +4,28 @@ module SwitchLocale
private
def switch_locale(&)
# priority is for locale set in query string (mostly for widget/from js sdk)
# Priority is for locale set in query string (mostly for widget/from js sdk)
locale ||= params[:locale]
# Use the user's locale if available
locale ||= locale_from_user
# Use the locale from a custom domain if applicable
locale ||= locale_from_custom_domain
# if locale is not set in account, let's use DEFAULT_LOCALE env variable
locale ||= ENV.fetch('DEFAULT_LOCALE', nil)
set_locale(locale, &)
end
def switch_locale_using_account_locale(&)
locale = locale_from_account(@current_account)
# Get the locale from the user first
locale = locale_from_user
# Fallback to the account's locale if the user's locale is not set
locale ||= locale_from_account(@current_account)
set_locale(locale, &)
end
@@ -32,6 +43,12 @@ module SwitchLocale
@portal.default_locale
end
def locale_from_user
return unless @user
@user.ui_settings&.dig('locale')
end
def set_locale(locale, &)
safe_locale = validate_and_get_locale(locale)
# Ensure locale won't bleed into other requests

View File

@@ -47,10 +47,8 @@ class DeviseOverrides::OmniauthCallbacksController < DeviseTokenAuth::OmniauthCa
end
def get_resource_from_auth_hash # rubocop:disable Naming/AccessorMethodName
# find the user with their email instead of UID and token
@resource = resource_class.where(
email: auth_hash['info']['email']
).first
email = auth_hash.dig('info', 'email')
@resource = resource_class.from_email(email)
end
def validate_signup_email_is_business_domain?
@@ -75,3 +73,5 @@ class DeviseOverrides::OmniauthCallbacksController < DeviseTokenAuth::OmniauthCa
'user'
end
end
DeviseOverrides::OmniauthCallbacksController.prepend_mod_with('DeviseOverrides::OmniauthCallbacksController')

View File

@@ -44,3 +44,5 @@ class DeviseOverrides::PasswordsController < Devise::PasswordsController
}, status: status
end
end
DeviseOverrides::PasswordsController.prepend_mod_with('DeviseOverrides::PasswordsController')

View File

@@ -1,4 +1,5 @@
module PortalHelper
include UrlHelper
def set_og_image_url(portal_name, title)
cdn_url = GlobalConfig.get('OG_IMAGE_CDN_URL')['OG_IMAGE_CDN_URL']
return if cdn_url.blank?
@@ -79,7 +80,7 @@ module PortalHelper
query_params = Rack::Utils.parse_query(url.query)
query_params['utm_medium'] = 'helpcenter'
query_params['utm_campaign'] = 'branding'
query_params['utm_source'] = URI.parse(referer).host if referer.present? && referer.match?(URI::DEFAULT_PARSER.make_regexp)
query_params['utm_source'] = URI.parse(referer).host if url_valid?(referer)
url.query = query_params.to_query
url.to_s

View File

@@ -20,7 +20,11 @@ import {
verifyServiceWorkerExistence,
} from './helper/pushHelper';
import ReconnectService from 'dashboard/helper/ReconnectService';
import { getAlertAudio, initOnEvents } from 'shared/helpers/AudioNotificationHelper';
import {
getAlertAudio,
initOnEvents,
} from 'shared/helpers/AudioNotificationHelper';
import { useUISettings } from 'dashboard/composables/useUISettings';
export default {
name: 'App',
@@ -41,12 +45,14 @@ export default {
const { accountId } = useAccount();
// Use the font size composable (it automatically sets up the watcher)
const { currentFontSize } = useFontSize();
const { uiSettings } = useUISettings();
return {
router,
store,
currentAccountId: accountId,
currentFontSize,
uiSettings,
};
},
data() {
@@ -93,8 +99,10 @@ export default {
mounted() {
this.initializeColorTheme();
this.listenToThemeChanges();
this.setLocale(window.chatwootConfig.selectedLocale);
// If user locale is set, use it; otherwise use account locale
this.setLocale(
this.uiSettings?.locale || window.chatwootConfig.selectedLocale
);
// Prepare dashboard ringtone; requires a user gesture once to unlock AudioContext
window.playAudioAlert = () => {};
@@ -136,7 +144,8 @@ export default {
const { locale, latest_chatwoot_version: latestChatwootVersion } =
this.getAccount(this.currentAccountId);
const { pubsub_token: pubsubToken } = this.currentUser || {};
this.setLocale(locale);
// If user locale is set, use it; otherwise use account locale
this.setLocale(this.uiSettings?.locale || locale);
this.latestChatwootVersion = latestChatwootVersion;
vueActionCable.init(this.store, pubsubToken);
this.reconnectService = new ReconnectService(this.store, this.router);

View File

@@ -0,0 +1,43 @@
/* global axios */
import ApiClient from './ApiClient';
class AgentCapacityPolicies extends ApiClient {
constructor() {
super('agent_capacity_policies', { accountScoped: true });
}
getUsers(policyId) {
return axios.get(`${this.url}/${policyId}/users`);
}
addUser(policyId, userData) {
return axios.post(`${this.url}/${policyId}/users`, {
user_id: userData.id,
capacity: userData.capacity,
});
}
removeUser(policyId, userId) {
return axios.delete(`${this.url}/${policyId}/users/${userId}`);
}
createInboxLimit(policyId, limitData) {
return axios.post(`${this.url}/${policyId}/inbox_limits`, {
inbox_id: limitData.inboxId,
conversation_limit: limitData.conversationLimit,
});
}
updateInboxLimit(policyId, limitId, limitData) {
return axios.put(`${this.url}/${policyId}/inbox_limits/${limitId}`, {
conversation_limit: limitData.conversationLimit,
});
}
deleteInboxLimit(policyId, limitId) {
return axios.delete(`${this.url}/${policyId}/inbox_limits/${limitId}`);
}
}
export default new AgentCapacityPolicies();

View File

@@ -0,0 +1,36 @@
/* global axios */
import ApiClient from './ApiClient';
class AssignmentPolicies extends ApiClient {
constructor() {
super('assignment_policies', { accountScoped: true });
}
getInboxes(policyId) {
return axios.get(`${this.url}/${policyId}/inboxes`);
}
setInboxPolicy(inboxId, policyId) {
return axios.post(
`/api/v1/accounts/${this.accountIdFromRoute}/inboxes/${inboxId}/assignment_policy`,
{
assignment_policy_id: policyId,
}
);
}
getInboxPolicy(inboxId) {
return axios.get(
`/api/v1/accounts/${this.accountIdFromRoute}/inboxes/${inboxId}/assignment_policy`
);
}
removeInboxPolicy(inboxId) {
return axios.delete(
`/api/v1/accounts/${this.accountIdFromRoute}/inboxes/${inboxId}/assignment_policy`
);
}
}
export default new AssignmentPolicies();

View File

@@ -0,0 +1,98 @@
import agentCapacityPolicies from '../agentCapacityPolicies';
import ApiClient from '../ApiClient';
describe('#AgentCapacityPoliciesAPI', () => {
it('creates correct instance', () => {
expect(agentCapacityPolicies).toBeInstanceOf(ApiClient);
expect(agentCapacityPolicies).toHaveProperty('get');
expect(agentCapacityPolicies).toHaveProperty('show');
expect(agentCapacityPolicies).toHaveProperty('create');
expect(agentCapacityPolicies).toHaveProperty('update');
expect(agentCapacityPolicies).toHaveProperty('delete');
expect(agentCapacityPolicies).toHaveProperty('getUsers');
expect(agentCapacityPolicies).toHaveProperty('addUser');
expect(agentCapacityPolicies).toHaveProperty('removeUser');
expect(agentCapacityPolicies).toHaveProperty('createInboxLimit');
expect(agentCapacityPolicies).toHaveProperty('updateInboxLimit');
expect(agentCapacityPolicies).toHaveProperty('deleteInboxLimit');
});
describe('API calls', () => {
const originalAxios = window.axios;
const axiosMock = {
get: vi.fn(() => Promise.resolve()),
post: vi.fn(() => Promise.resolve()),
put: vi.fn(() => Promise.resolve()),
delete: vi.fn(() => Promise.resolve()),
};
beforeEach(() => {
window.axios = axiosMock;
// Mock accountIdFromRoute
Object.defineProperty(agentCapacityPolicies, 'accountIdFromRoute', {
get: () => '1',
configurable: true,
});
});
afterEach(() => {
window.axios = originalAxios;
});
it('#getUsers', () => {
agentCapacityPolicies.getUsers(123);
expect(axiosMock.get).toHaveBeenCalledWith(
'/api/v1/accounts/1/agent_capacity_policies/123/users'
);
});
it('#addUser', () => {
const userData = { id: 456, capacity: 20 };
agentCapacityPolicies.addUser(123, userData);
expect(axiosMock.post).toHaveBeenCalledWith(
'/api/v1/accounts/1/agent_capacity_policies/123/users',
{
user_id: 456,
capacity: 20,
}
);
});
it('#removeUser', () => {
agentCapacityPolicies.removeUser(123, 456);
expect(axiosMock.delete).toHaveBeenCalledWith(
'/api/v1/accounts/1/agent_capacity_policies/123/users/456'
);
});
it('#createInboxLimit', () => {
const limitData = { inboxId: 1, conversationLimit: 10 };
agentCapacityPolicies.createInboxLimit(123, limitData);
expect(axiosMock.post).toHaveBeenCalledWith(
'/api/v1/accounts/1/agent_capacity_policies/123/inbox_limits',
{
inbox_id: 1,
conversation_limit: 10,
}
);
});
it('#updateInboxLimit', () => {
const limitData = { conversationLimit: 15 };
agentCapacityPolicies.updateInboxLimit(123, 789, limitData);
expect(axiosMock.put).toHaveBeenCalledWith(
'/api/v1/accounts/1/agent_capacity_policies/123/inbox_limits/789',
{
conversation_limit: 15,
}
);
});
it('#deleteInboxLimit', () => {
agentCapacityPolicies.deleteInboxLimit(123, 789);
expect(axiosMock.delete).toHaveBeenCalledWith(
'/api/v1/accounts/1/agent_capacity_policies/123/inbox_limits/789'
);
});
});
});

View File

@@ -0,0 +1,70 @@
import assignmentPolicies from '../assignmentPolicies';
import ApiClient from '../ApiClient';
describe('#AssignmentPoliciesAPI', () => {
it('creates correct instance', () => {
expect(assignmentPolicies).toBeInstanceOf(ApiClient);
expect(assignmentPolicies).toHaveProperty('get');
expect(assignmentPolicies).toHaveProperty('show');
expect(assignmentPolicies).toHaveProperty('create');
expect(assignmentPolicies).toHaveProperty('update');
expect(assignmentPolicies).toHaveProperty('delete');
expect(assignmentPolicies).toHaveProperty('getInboxes');
expect(assignmentPolicies).toHaveProperty('setInboxPolicy');
expect(assignmentPolicies).toHaveProperty('getInboxPolicy');
expect(assignmentPolicies).toHaveProperty('removeInboxPolicy');
});
describe('API calls', () => {
const originalAxios = window.axios;
const axiosMock = {
get: vi.fn(() => Promise.resolve()),
post: vi.fn(() => Promise.resolve()),
delete: vi.fn(() => Promise.resolve()),
};
beforeEach(() => {
window.axios = axiosMock;
// Mock accountIdFromRoute
Object.defineProperty(assignmentPolicies, 'accountIdFromRoute', {
get: () => '1',
configurable: true,
});
});
afterEach(() => {
window.axios = originalAxios;
});
it('#getInboxes', () => {
assignmentPolicies.getInboxes(123);
expect(axiosMock.get).toHaveBeenCalledWith(
'/api/v1/accounts/1/assignment_policies/123/inboxes'
);
});
it('#setInboxPolicy', () => {
assignmentPolicies.setInboxPolicy(456, 123);
expect(axiosMock.post).toHaveBeenCalledWith(
'/api/v1/accounts/1/inboxes/456/assignment_policy',
{
assignment_policy_id: 123,
}
);
});
it('#getInboxPolicy', () => {
assignmentPolicies.getInboxPolicy(456);
expect(axiosMock.get).toHaveBeenCalledWith(
'/api/v1/accounts/1/inboxes/456/assignment_policy'
);
});
it('#removeInboxPolicy', () => {
assignmentPolicies.removeInboxPolicy(456);
expect(axiosMock.delete).toHaveBeenCalledWith(
'/api/v1/accounts/1/inboxes/456/assignment_policy'
);
});
});
});

View File

@@ -0,0 +1,116 @@
<script setup>
import AgentCapacityPolicyCard from './AgentCapacityPolicyCard.vue';
const mockUsers = [
{
id: 1,
name: 'John Smith',
email: 'john.smith@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=1',
},
{
id: 2,
name: 'Sarah Johnson',
email: 'sarah.johnson@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=2',
},
{
id: 3,
name: 'Mike Chen',
email: 'mike.chen@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=3',
},
{
id: 4,
name: 'Emily Davis',
email: 'emily.davis@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=4',
},
{
id: 5,
name: 'Alex Rodriguez',
email: 'alex.rodriguez@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=5',
},
];
const withCount = policy => ({
...policy,
assignedAgentCount: policy.users.length,
});
const policyA = withCount({
id: 1,
name: 'High Volume Support',
description:
'Capacity-based policy for handling high conversation volumes with experienced agents',
users: [mockUsers[0], mockUsers[1], mockUsers[2]],
isFetchingUsers: false,
});
const policyB = withCount({
id: 2,
name: 'Specialized Team',
description: 'Custom capacity limits for specialized support team members',
users: [mockUsers[3], mockUsers[4]],
isFetchingUsers: false,
});
const emptyPolicy = withCount({
id: 3,
name: 'New Policy',
description: 'Recently created policy with no assigned agents yet',
users: [],
isFetchingUsers: false,
});
const loadingPolicy = withCount({
id: 4,
name: 'Loading Policy',
description: 'Policy currently loading agent information',
users: [],
isFetchingUsers: true,
});
const onEdit = id => console.log('Edit policy:', id);
const onDelete = id => console.log('Delete policy:', id);
const onFetchUsers = id => console.log('Fetch users for policy:', id);
</script>
<template>
<Story
title="Components/AgentManagementPolicy/AgentCapacityPolicyCard"
:layout="{ type: 'grid', width: '1200px' }"
>
<Variant title="Multiple Cards (Various States)">
<div class="p-4 bg-n-background">
<div class="grid grid-cols-1 gap-4">
<AgentCapacityPolicyCard
v-bind="policyA"
@edit="onEdit"
@delete="onDelete"
@fetch-users="onFetchUsers"
/>
<AgentCapacityPolicyCard
v-bind="policyB"
@edit="onEdit"
@delete="onDelete"
@fetch-users="onFetchUsers"
/>
<AgentCapacityPolicyCard
v-bind="emptyPolicy"
@edit="onEdit"
@delete="onDelete"
@fetch-users="onFetchUsers"
/>
<AgentCapacityPolicyCard
v-bind="loadingPolicy"
@edit="onEdit"
@delete="onDelete"
@fetch-users="onFetchUsers"
/>
</div>
</div>
</Variant>
</Story>
</template>

View File

@@ -0,0 +1,86 @@
<script setup>
import { computed } from 'vue';
import { useI18n } from 'vue-i18n';
import Button from 'dashboard/components-next/button/Button.vue';
import CardLayout from 'dashboard/components-next/CardLayout.vue';
import CardPopover from '../components/CardPopover.vue';
const props = defineProps({
id: { type: Number, required: true },
name: { type: String, default: '' },
description: { type: String, default: '' },
assignedAgentCount: { type: Number, default: 0 },
users: { type: Array, default: () => [] },
isFetchingUsers: { type: Boolean, default: false },
});
const emit = defineEmits(['edit', 'delete', 'fetchUsers']);
const { t } = useI18n();
const users = computed(() => {
return props.users.map(user => {
return {
name: user.name,
key: user.id,
email: user.email,
avatarUrl: user.avatarUrl,
};
});
});
const handleEdit = () => {
emit('edit', props.id);
};
const handleDelete = () => {
emit('delete', props.id);
};
const handleFetchUsers = () => {
if (props.users?.length > 0) return;
emit('fetchUsers', props.id);
};
</script>
<template>
<CardLayout class="[&>div]:px-5">
<div class="flex flex-col gap-2 relative justify-between w-full">
<div class="flex items-center gap-3 justify-between w-full">
<div class="flex items-center gap-3">
<h3 class="text-base font-medium text-n-slate-12 line-clamp-1">
{{ name }}
</h3>
<CardPopover
:title="
t('ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.INDEX.CARD.POPOVER')
"
icon="i-lucide-users-round"
:count="assignedAgentCount"
:items="users"
:is-fetching="isFetchingUsers"
@fetch="handleFetchUsers"
/>
</div>
<div class="flex items-center gap-2">
<Button
:label="
t('ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.INDEX.CARD.EDIT')
"
sm
slate
link
class="px-2"
@click="handleEdit"
/>
<div class="w-px h-2.5 bg-n-slate-5" />
<Button icon="i-lucide-trash" sm slate ghost @click="handleDelete" />
</div>
</div>
<p class="text-n-slate-11 text-sm line-clamp-1 mb-0 py-1">
{{ description }}
</p>
</div>
</CardLayout>
</template>

View File

@@ -0,0 +1,104 @@
<script setup>
import AssignmentPolicyCard from './AssignmentPolicyCard.vue';
const mockInboxes = [
{
id: 1,
name: 'Website Support',
channel_type: 'Channel::WebWidget',
inbox_type: 'Website',
},
{
id: 2,
name: 'Email Support',
channel_type: 'Channel::Email',
inbox_type: 'Email',
},
{
id: 3,
name: 'WhatsApp Business',
channel_type: 'Channel::Whatsapp',
inbox_type: 'WhatsApp',
},
{
id: 4,
name: 'Facebook Messenger',
channel_type: 'Channel::FacebookPage',
inbox_type: 'Messenger',
},
];
const withCount = policy => ({
...policy,
assignedInboxCount: policy.inboxes.length,
});
const policyA = withCount({
id: 1,
name: 'Website & Email',
description: 'Distributes conversations evenly among available agents',
assignmentOrder: 'round_robin',
conversationPriority: 'high',
enabled: true,
inboxes: [mockInboxes[0], mockInboxes[1]],
isFetchingInboxes: false,
});
const policyB = withCount({
id: 2,
name: 'WhatsApp & Messenger',
description: 'Assigns based on capacity and workload',
assignmentOrder: 'capacity_based',
conversationPriority: 'medium',
enabled: true,
inboxes: [mockInboxes[2], mockInboxes[3]],
isFetchingInboxes: false,
});
const emptyPolicy = withCount({
id: 3,
name: 'No Inboxes Yet',
description: 'Policy with no assigned inboxes',
assignmentOrder: 'manual',
conversationPriority: 'low',
enabled: false,
inboxes: [],
isFetchingInboxes: false,
});
const onEdit = id => console.log('Edit policy:', id);
const onDelete = id => console.log('Delete policy:', id);
const onFetch = () => console.log('Fetch inboxes');
</script>
<template>
<Story
title="Components/AgentManagementPolicy/AssignmentPolicyCard"
:layout="{ type: 'grid', width: '1200px' }"
>
<Variant title="Three Cards (Two with inboxes, One empty)">
<div class="p-4 bg-n-background">
<div class="grid grid-cols-1 gap-4">
<AssignmentPolicyCard
v-bind="policyA"
@edit="onEdit"
@delete="onDelete"
@fetch-inboxes="onFetch"
/>
<AssignmentPolicyCard
v-bind="policyB"
@edit="onEdit"
@delete="onDelete"
@fetch-inboxes="onFetch"
/>
<AssignmentPolicyCard
v-bind="emptyPolicy"
@edit="onEdit"
@delete="onDelete"
@fetch-inboxes="onFetch"
/>
</div>
</div>
</Variant>
</Story>
</template>

View File

@@ -0,0 +1,133 @@
<script setup>
import { computed } from 'vue';
import { useI18n } from 'vue-i18n';
import { getInboxIconByType } from 'dashboard/helper/inbox';
import { formatToTitleCase } from 'dashboard/helper/commons';
import Button from 'dashboard/components-next/button/Button.vue';
import CardLayout from 'dashboard/components-next/CardLayout.vue';
import CardPopover from '../components/CardPopover.vue';
const props = defineProps({
id: { type: Number, required: true },
name: { type: String, default: '' },
description: { type: String, default: '' },
assignmentOrder: { type: String, default: '' },
conversationPriority: { type: String, default: '' },
assignedInboxCount: { type: Number, default: 0 },
enabled: { type: Boolean, default: false },
inboxes: { type: Array, default: () => [] },
isFetchingInboxes: { type: Boolean, default: false },
});
const emit = defineEmits(['edit', 'delete', 'fetchInboxes']);
const { t } = useI18n();
const inboxes = computed(() => {
return props.inboxes.map(inbox => {
return {
name: inbox.name,
id: inbox.id,
icon: getInboxIconByType(inbox.channelType, inbox.medium, 'line'),
};
});
});
const order = computed(() => {
return formatToTitleCase(props.assignmentOrder);
});
const priority = computed(() => {
return formatToTitleCase(props.conversationPriority);
});
const handleEdit = () => {
emit('edit', props.id);
};
const handleDelete = () => {
emit('delete', props.id);
};
const handleFetchInboxes = () => {
if (props.inboxes?.length > 0) return;
emit('fetchInboxes', props.id);
};
</script>
<template>
<CardLayout class="[&>div]:px-5">
<div class="flex flex-col gap-2 relative justify-between w-full">
<div class="flex items-center gap-3 justify-between w-full">
<div class="flex items-center gap-3">
<h3 class="text-base font-medium text-n-slate-12 line-clamp-1">
{{ name }}
</h3>
<div class="flex items-center gap-2">
<div class="flex items-center rounded-md bg-n-alpha-2 h-6 px-2">
<span
class="text-xs"
:class="enabled ? 'text-n-teal-11' : 'text-n-slate-12'"
>
{{
enabled
? t(
'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.ACTIVE'
)
: t(
'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.INACTIVE'
)
}}
</span>
</div>
<CardPopover
:title="
t(
'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.POPOVER'
)
"
icon="i-lucide-inbox"
:count="assignedInboxCount"
:items="inboxes"
:is-fetching="isFetchingInboxes"
@fetch="handleFetchInboxes"
/>
</div>
</div>
<div class="flex items-center gap-2">
<Button
:label="
t('ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.EDIT')
"
sm
slate
link
class="px-2"
@click="handleEdit"
/>
<div v-if="order" class="w-px h-2.5 bg-n-slate-5" />
<Button icon="i-lucide-trash" sm slate ghost @click="handleDelete" />
</div>
</div>
<p class="text-n-slate-11 text-sm line-clamp-1 mb-0 py-1">
{{ description }}
</p>
<div class="flex items-center gap-3 py-1.5">
<span v-if="order" class="text-n-slate-11 text-sm">
{{
`${t('ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.ORDER')}:`
}}
<span class="text-n-slate-12">{{ order }}</span>
</span>
<div v-if="order" class="w-px h-3 bg-n-strong" />
<span v-if="priority" class="text-n-slate-11 text-sm">
{{
`${t('ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.PRIORITY')}:`
}}
<span class="text-n-slate-12">{{ priority }}</span>
</span>
</div>
</div>
</CardLayout>
</template>

View File

@@ -0,0 +1,134 @@
<script setup>
import { computed, ref } from 'vue';
import { useToggle } from '@vueuse/core';
import { vOnClickOutside } from '@vueuse/components';
import { picoSearch } from '@scmmishra/pico-search';
import Avatar from 'next/avatar/Avatar.vue';
import Icon from 'dashboard/components-next/icon/Icon.vue';
import Button from 'dashboard/components-next/button/Button.vue';
import Input from 'dashboard/components-next/input/Input.vue';
const props = defineProps({
label: {
type: String,
default: '',
},
searchPlaceholder: {
type: String,
default: '',
},
items: {
type: Array,
default: () => [],
},
});
const emit = defineEmits(['add']);
const [showPopover, togglePopover] = useToggle();
const searchValue = ref('');
const filteredItems = computed(() => {
if (!searchValue.value) return props.items;
const query = searchValue.value.toLowerCase();
return picoSearch(props.items, query, ['name']);
});
const handleAdd = item => {
emit('add', item);
togglePopover(false);
};
const handleClickOutside = () => {
if (showPopover.value) {
togglePopover(false);
}
};
</script>
<template>
<div
v-on-click-outside="handleClickOutside"
class="relative flex items-center group"
>
<Button
slate
type="button"
icon="i-lucide-plus"
sm
:label="label"
@click="togglePopover(!showPopover)"
/>
<div
v-if="showPopover"
class="top-full mt-2 ltr:right-0 rtl:left-0 xl:ltr:left-0 xl:rtl:right-0 z-50 flex flex-col items-start absolute bg-n-alpha-3 backdrop-blur-[50px] border-0 gap-4 outline outline-1 outline-n-weak rounded-xl max-w-96 min-w-80 max-h-[20rem] overflow-y-auto py-2"
>
<div class="flex flex-col divide-y divide-n-slate-4 w-full">
<Input
v-model="searchValue"
:placeholder="searchPlaceholder"
custom-input-class="bg-transparent !outline-none w-full ltr:!pl-10 rtl:!pr-10 h-10"
>
<template #prefix>
<Icon
icon="i-lucide-search"
class="absolute -translate-y-1/2 text-n-slate-11 size-4 top-1/2 ltr:left-3 rtl:right-3"
/>
</template>
</Input>
<div
v-for="item in filteredItems"
:key="item.id"
class="flex gap-3 min-w-0 w-full py-4 px-3 hover:bg-n-alpha-2 cursor-pointer"
:class="{ 'items-center': item.color, 'items-start': !item.color }"
@click="handleAdd(item)"
>
<Icon
v-if="item.icon"
:icon="item.icon"
class="size-2 text-n-slate-12 flex-shrink-0 mt-0.5"
/>
<span
v-else-if="item.color"
:style="{ backgroundColor: item.color }"
class="size-3 rounded-sm"
/>
<Avatar
v-else
:title="item.name"
:src="item.avatarUrl"
:name="item.name"
:size="20"
rounded-full
/>
<div class="flex flex-col items-start gap-2 min-w-0">
<div class="flex items-center gap-1 min-w-0">
<span
:title="item.name || item.title"
class="text-sm text-n-slate-12 truncate min-w-0"
>
{{ item.name || item.title }}
</span>
<span
v-if="item.id"
class="text-xs text-n-slate-11 flex-shrink-0"
>
{{ `#${item.id}` }}
</span>
</div>
<span
v-if="item.email || item.phoneNumber"
class="text-sm text-n-slate-11 truncate min-w-0"
>
{{ item.email || item.phoneNumber }}
</span>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@@ -0,0 +1,127 @@
<script setup>
import { computed, watch } from 'vue';
import { useVuelidate } from '@vuelidate/core';
import { required, minLength } from '@vuelidate/validators';
import WithLabel from 'v3/components/Form/WithLabel.vue';
import Input from 'dashboard/components-next/input/Input.vue';
import Switch from 'dashboard/components-next/switch/Switch.vue';
defineProps({
nameLabel: {
type: String,
default: '',
},
namePlaceholder: {
type: String,
default: '',
},
descriptionLabel: {
type: String,
default: '',
},
descriptionPlaceholder: {
type: String,
default: '',
},
statusLabel: {
type: String,
default: '',
},
statusPlaceholder: {
type: String,
default: '',
},
});
const emit = defineEmits(['validationChange']);
const policyName = defineModel('policyName', {
type: String,
default: '',
});
const description = defineModel('description', {
type: String,
default: '',
});
const enabled = defineModel('enabled', {
type: Boolean,
default: true,
});
const validationRules = {
policyName: { required, minLength: minLength(1) },
description: { required, minLength: minLength(1) },
};
const v$ = useVuelidate(validationRules, { policyName, description });
const isValid = computed(() => !v$.value.$invalid);
watch(
isValid,
() => {
emit('validationChange', {
isValid: isValid.value,
section: 'baseInfo',
});
},
{ immediate: true }
);
</script>
<template>
<div class="flex flex-col gap-4 pb-4">
<!-- Policy Name Field -->
<div class="flex items-center gap-6">
<WithLabel
:label="nameLabel"
name="policyName"
class="flex items-center w-full [&>label]:min-w-[120px]"
>
<div class="flex-1">
<Input
v-model="policyName"
type="text"
:placeholder="namePlaceholder"
/>
</div>
</WithLabel>
</div>
<!-- Description Field -->
<div class="flex items-center gap-6">
<WithLabel
:label="descriptionLabel"
name="description"
class="flex items-center w-full [&>label]:min-w-[120px]"
>
<div class="flex-1">
<Input
v-model="description"
type="text"
:placeholder="descriptionPlaceholder"
/>
</div>
</WithLabel>
</div>
<!-- Status Field -->
<div v-if="statusLabel" class="flex items-center gap-6">
<WithLabel
:label="statusLabel"
name="enabled"
class="flex items-center w-full [&>label]:min-w-[120px]"
>
<div class="flex items-center gap-2">
<Switch v-model="enabled" />
<span class="text-sm text-n-slate-11">
{{ statusPlaceholder }}
</span>
</div>
</WithLabel>
</div>
</div>
</template>

View File

@@ -0,0 +1,121 @@
<script setup>
import { useToggle } from '@vueuse/core';
import { vOnClickOutside } from '@vueuse/components';
import Avatar from 'next/avatar/Avatar.vue';
import Icon from 'dashboard/components-next/icon/Icon.vue';
import Spinner from 'dashboard/components-next/spinner/Spinner.vue';
defineProps({
count: {
type: Number,
default: 0,
},
title: {
type: String,
default: '',
},
icon: {
type: String,
default: '',
},
items: {
type: Array,
default: () => [],
},
isFetching: {
type: Boolean,
default: false,
},
});
const emit = defineEmits(['fetch']);
const [showPopover, togglePopover] = useToggle();
const handleButtonClick = () => {
emit('fetch');
togglePopover(!showPopover.value);
};
const handleClickOutside = () => {
if (showPopover.value) {
togglePopover(false);
}
};
</script>
<template>
<div
v-on-click-outside="handleClickOutside"
class="relative flex items-center group"
>
<button
v-if="count"
class="h-6 px-2 rounded-md bg-n-alpha-2 gap-1.5 flex items-center"
@click="handleButtonClick()"
>
<Icon :icon="icon" class="size-3.5 text-n-slate-12" />
<span class="text-n-slate-12 text-sm">
{{ count }}
</span>
</button>
<div
v-if="showPopover"
class="top-full mt-1 ltr:left-0 rtl:right-0 z-50 flex flex-col items-start absolute bg-n-alpha-3 backdrop-blur-[50px] border-0 gap-4 outline outline-1 outline-n-weak p-3 rounded-xl max-w-96 min-w-80 max-h-[20rem] overflow-y-auto"
>
<div class="flex items-center gap-2.5 pb-2">
<Icon :icon="icon" class="size-3.5" />
<span class="text-sm text-n-slate-12 font-medium">{{ title }}</span>
</div>
<div
v-if="isFetching"
class="flex items-center justify-center py-3 w-full text-n-slate-11"
>
<Spinner />
</div>
<div v-else class="flex flex-col gap-4 w-full">
<div
v-for="item in items"
:key="item.id"
class="flex items-center justify-between gap-2 min-w-0 w-full"
>
<div class="flex items-center gap-2 min-w-0 w-full">
<Icon
v-if="item.icon"
:icon="item.icon"
class="size-4 text-n-slate-12 flex-shrink-0"
/>
<Avatar
v-else
:title="item.name"
:src="item.avatarUrl"
:name="item.name"
:size="20"
rounded-full
/>
<div class="flex items-center gap-1 min-w-0 flex-1">
<span
:title="item.name"
class="text-sm text-n-slate-12 truncate min-w-0"
>
{{ item.name }}
</span>
<span
v-if="item.id"
class="text-sm text-n-slate-11 flex-shrink-0"
>
{{ `#${item.id}` }}
</span>
</div>
</div>
<span v-if="item.email" class="text-sm text-n-slate-11 flex-shrink-0">
{{ item.email }}
</span>
</div>
</div>
</div>
</div>
</template>

View File

@@ -0,0 +1,90 @@
<script setup>
import Avatar from 'next/avatar/Avatar.vue';
import Icon from 'dashboard/components-next/icon/Icon.vue';
import Button from 'dashboard/components-next/button/Button.vue';
import Spinner from 'dashboard/components-next/spinner/Spinner.vue';
defineProps({
items: {
type: Array,
default: () => [],
},
isFetching: {
type: Boolean,
default: false,
},
emptyStateMessage: {
type: String,
default: '',
},
});
const emit = defineEmits(['delete']);
const handleDelete = itemId => {
emit('delete', itemId);
};
</script>
<template>
<div
v-if="isFetching"
class="flex items-center justify-center py-3 w-full text-n-slate-11"
>
<Spinner />
</div>
<div
v-else-if="items.length === 0 && emptyStateMessage"
class="custom-dashed-border flex items-center justify-center py-6 w-full"
>
<span class="text-sm text-n-slate-11">
{{ emptyStateMessage }}
</span>
</div>
<div v-else class="flex flex-col divide-y divide-n-weak">
<div
v-for="item in items"
:key="item.id"
class="grid grid-cols-4 items-center gap-3 min-w-0 w-full justify-between h-[3.25rem] ltr:pr-2 rtl:pl-2"
>
<div class="flex items-center gap-2 col-span-2">
<Icon
v-if="item.icon"
:icon="item.icon"
class="size-4 text-n-slate-12 flex-shrink-0"
/>
<Avatar
v-else
:title="item.name"
:src="item.avatarUrl"
:name="item.name"
:size="20"
rounded-full
/>
<span class="text-sm text-n-slate-12 truncate min-w-0">
{{ item.name }}
</span>
</div>
<div class="flex items-start gap-2 col-span-1">
<span
:title="item.email || item.phoneNumber"
class="text-sm text-n-slate-12 truncate min-w-0"
>
{{ item.email || item.phoneNumber }}
</span>
</div>
<div class="col-span-1 justify-end flex items-center">
<Button
icon="i-lucide-trash"
slate
ghost
sm
type="button"
@click="handleDelete(item.id)"
/>
</div>
</div>
</div>
</template>

View File

@@ -0,0 +1,149 @@
<script setup>
import { computed, ref, onMounted } from 'vue';
import { useI18n } from 'vue-i18n';
import AddDataDropdown from 'dashboard/components-next/AssignmentPolicy/components/AddDataDropdown.vue';
import LabelItem from 'dashboard/components-next/Label/LabelItem.vue';
import DurationInput from 'dashboard/components-next/input/DurationInput.vue';
import { DURATION_UNITS } from 'dashboard/components-next/input/constants';
const props = defineProps({
tagsList: {
type: Array,
default: () => [],
},
});
const excludedLabels = defineModel('excludedLabels', {
type: Array,
default: () => [],
});
const excludeOlderThanMinutes = defineModel('excludeOlderThanMinutes', {
type: Number,
default: 10,
});
// Duration limits: 10 minutes to 999 days (in minutes)
const MIN_DURATION_MINUTES = 10;
const MAX_DURATION_MINUTES = 1438560; // 999 days * 24 hours * 60 minutes
const { t } = useI18n();
const hoveredLabel = ref(null);
const windowUnit = ref(DURATION_UNITS.MINUTES);
const addedTags = computed(() =>
props.tagsList
.filter(label => excludedLabels.value.includes(label.name))
.map(label => ({ id: label.id, title: label.name, ...label }))
);
const filteredTags = computed(() =>
props.tagsList.filter(
label => !addedTags.value.some(tag => tag.id === label.id)
)
);
const detectUnit = minutes => {
const m = Number(minutes) || 0;
if (m === 0) return DURATION_UNITS.MINUTES;
if (m % (24 * 60) === 0) return DURATION_UNITS.DAYS;
if (m % 60 === 0) return DURATION_UNITS.HOURS;
return DURATION_UNITS.MINUTES;
};
const onClickAddTag = tag => {
excludedLabels.value = [...excludedLabels.value, tag.name];
};
const onClickRemoveTag = tag => {
excludedLabels.value = excludedLabels.value.filter(
name => name !== tag.title
);
};
onMounted(() => {
windowUnit.value = detectUnit(excludeOlderThanMinutes.value);
});
</script>
<template>
<div class="py-4 flex-col flex gap-6">
<div class="flex flex-col items-start gap-1 py-1">
<label class="text-sm font-medium text-n-slate-12 py-1">
{{
t(
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.LABEL'
)
}}
</label>
<p class="mb-0 text-n-slate-11 text-sm">
{{
t(
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.DESCRIPTION'
)
}}
</p>
</div>
<div class="flex flex-col items-start gap-4">
<label class="text-sm font-medium text-n-slate-12 py-1">
{{
t(
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.TAGS.LABEL'
)
}}
</label>
<div
class="flex items-start gap-2 flex-wrap"
@mouseleave="hoveredLabel = null"
>
<LabelItem
v-for="tag in addedTags"
:key="tag.id"
:label="tag"
:is-hovered="hoveredLabel === tag.id"
class="h-8"
@remove="onClickRemoveTag"
@hover="hoveredLabel = tag.id"
/>
<AddDataDropdown
:label="
t(
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.TAGS.ADD_TAG'
)
"
:search-placeholder="
t(
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.TAGS.DROPDOWN.SEARCH_PLACEHOLDER'
)
"
:items="filteredTags"
class="[&>button]:!text-n-blue-text"
@add="onClickAddTag"
/>
</div>
</div>
<div class="flex flex-col items-start gap-4">
<label class="text-sm font-medium text-n-slate-12 py-1">
{{
t(
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.DURATION.LABEL'
)
}}
</label>
<div
class="flex items-center gap-2 flex-1 [&>select]:!bg-n-alpha-2 [&>select]:!outline-none [&>select]:hover:brightness-110"
>
<!-- allow 10 mins to 999 days -->
<DurationInput
v-model:unit="windowUnit"
v-model:model-value="excludeOlderThanMinutes"
:min="MIN_DURATION_MINUTES"
:max="MAX_DURATION_MINUTES"
/>
</div>
</div>
</div>
</template>

View File

@@ -0,0 +1,86 @@
<script setup>
import { ref, onMounted } from 'vue';
import { useI18n } from 'vue-i18n';
import Input from 'dashboard/components-next/input/Input.vue';
import DurationInput from 'dashboard/components-next/input/DurationInput.vue';
import { DURATION_UNITS } from 'dashboard/components-next/input/constants';
const { t } = useI18n();
const fairDistributionLimit = defineModel('fairDistributionLimit', {
type: Number,
default: 100,
set(value) {
return Number(value) || 0;
},
});
const fairDistributionWindow = defineModel('fairDistributionWindow', {
type: Number,
default: 3600,
set(value) {
return Number(value) || 0;
},
});
const windowUnit = ref(DURATION_UNITS.MINUTES);
const detectUnit = minutes => {
const m = Number(minutes) || 0;
if (m === 0) return DURATION_UNITS.MINUTES;
if (m % (24 * 60) === 0) return DURATION_UNITS.DAYS;
if (m % 60 === 0) return DURATION_UNITS.HOURS;
return DURATION_UNITS.MINUTES;
};
onMounted(() => {
windowUnit.value = detectUnit(fairDistributionWindow.value);
});
</script>
<template>
<div
class="flex items-start xl:items-center flex-col md:flex-row gap-4 lg:gap-3 bg-n-solid-1 p-4 outline outline-1 outline-n-weak rounded-xl"
>
<div class="flex items-center gap-3">
<label class="text-sm font-medium text-n-slate-12">
{{
t(
'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.FORM.FAIR_DISTRIBUTION.INPUT_MAX'
)
}}
</label>
<div class="flex-1">
<Input
v-model="fairDistributionLimit"
type="number"
placeholder="100"
max="100000"
class="w-full"
/>
</div>
</div>
<div class="flex sm:flex-row flex-col items-start sm:items-center gap-4">
<label class="text-sm font-medium text-n-slate-12">
{{
t(
'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.FORM.FAIR_DISTRIBUTION.DURATION'
)
}}
</label>
<div
class="flex items-center gap-2 flex-1 [&>select]:!bg-n-alpha-2 [&>select]:!outline-none [&>select]:hover:brightness-110"
>
<!-- allow 10 mins to 999 days -->
<DurationInput
v-model:model-value="fairDistributionWindow"
v-model:unit="windowUnit"
:min="10"
:max="1438560"
/>
</div>
</div>
</div>
</template>

View File

@@ -0,0 +1,163 @@
<script setup>
import { computed } from 'vue';
import { useI18n } from 'vue-i18n';
import Button from 'dashboard/components-next/button/Button.vue';
import Spinner from 'dashboard/components-next/spinner/Spinner.vue';
import AddDataDropdown from 'dashboard/components-next/AssignmentPolicy/components/AddDataDropdown.vue';
const props = defineProps({
inboxList: {
type: Array,
default: () => [],
},
isFetching: {
type: Boolean,
default: false,
},
});
const emit = defineEmits(['delete', 'add', 'update']);
const inboxCapacityLimits = defineModel('inboxCapacityLimits', {
type: Array,
default: () => [],
});
const { t } = useI18n();
const BASE_KEY = 'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY';
const DEFAULT_CONVERSATION_LIMIT = 10;
const MIN_CONVERSATION_LIMIT = 1;
const MAX_CONVERSATION_LIMIT = 100000;
const selectedInboxIds = computed(
() => new Set(inboxCapacityLimits.value.map(limit => limit.inboxId))
);
const availableInboxes = computed(() =>
props.inboxList.filter(
inbox => inbox && !selectedInboxIds.value.has(inbox.id)
)
);
const isLimitValid = limit => {
return (
limit.conversationLimit >= MIN_CONVERSATION_LIMIT &&
limit.conversationLimit <= MAX_CONVERSATION_LIMIT
);
};
const inboxMap = computed(
() => new Map(props.inboxList.map(inbox => [inbox.id, inbox]))
);
const handleAddInbox = inbox => {
emit('add', {
inboxId: inbox.id,
conversationLimit: DEFAULT_CONVERSATION_LIMIT,
});
};
const handleRemoveLimit = limitId => {
emit('delete', limitId);
};
const handleLimitChange = limit => {
if (isLimitValid(limit)) {
emit('update', limit);
}
};
const getInboxName = inboxId => {
return inboxMap.value.get(inboxId)?.name || '';
};
</script>
<template>
<div class="py-4 flex-col flex gap-3">
<div class="flex items-center w-full gap-8 justify-between pt-1 pb-3">
<label class="text-sm font-medium text-n-slate-12">
{{ t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.LABEL`) }}
</label>
<AddDataDropdown
:label="t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.ADD_BUTTON`)"
:search-placeholder="
t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.SELECT_INBOX`)
"
:items="availableInboxes"
@add="handleAddInbox"
/>
</div>
<div
v-if="isFetching"
class="flex items-center justify-center py-3 w-full text-n-slate-11"
>
<Spinner />
</div>
<div
v-else-if="!inboxCapacityLimits.length"
class="custom-dashed-border flex items-center justify-center py-6 w-full"
>
<span class="text-sm text-n-slate-11">
{{ t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.EMPTY_STATE`) }}
</span>
</div>
<div v-else class="flex-col flex gap-3">
<div
v-for="(limit, index) in inboxCapacityLimits"
:key="limit.id || `temp-${index}`"
class="flex items-center gap-3"
>
<div
class="flex items-start rounded-lg outline-1 outline cursor-not-allowed text-n-slate-11 outline-n-weak py-2.5 px-3 text-sm w-full"
>
{{ getInboxName(limit.inboxId) }}
</div>
<div
class="py-2.5 px-3 rounded-lg gap-2 outline outline-1 flex-shrink-0 flex items-center"
:class="[
!isLimitValid(limit) ? 'outline-n-ruby-8' : 'outline-n-weak',
]"
>
<label class="text-sm text-n-slate-12 ltr:pr-2 rtl:pl-2">
{{
t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.MAX_CONVERSATIONS`)
}}
</label>
<div class="h-5 w-px bg-n-weak" />
<input
v-model.number="limit.conversationLimit"
type="number"
:min="MIN_CONVERSATION_LIMIT"
:max="MAX_CONVERSATION_LIMIT"
class="reset-base bg-transparent focus:outline-none max-w-20 text-sm"
:class="[
!isLimitValid(limit)
? 'placeholder:text-n-ruby-9 !text-n-ruby-9'
: 'placeholder:text-n-slate-10 text-n-slate-12',
]"
:placeholder="
t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.SET_LIMIT`)
"
@blur="handleLimitChange(limit)"
/>
</div>
<Button
type="button"
slate
icon="i-lucide-trash"
class="flex-shrink-0"
@click="handleRemoveLimit(limit.id)"
/>
</div>
</div>
</div>
</template>

View File

@@ -0,0 +1,60 @@
<script setup>
const props = defineProps({
id: {
type: String,
required: true,
},
label: {
type: String,
required: true,
},
description: {
type: String,
required: true,
},
isActive: {
type: Boolean,
default: false,
},
});
const emit = defineEmits(['select']);
const handleChange = () => {
if (!props.isActive) {
emit('select', props.id);
}
};
</script>
<template>
<div
class="relative cursor-pointer rounded-xl outline outline-1 p-4 transition-all duration-200 bg-n-solid-1 py-4 ltr:pl-4 rtl:pr-4 ltr:pr-6 rtl:pl-6"
:class="[
isActive ? 'outline-n-blue-9' : 'outline-n-weak hover:outline-n-strong',
]"
@click="handleChange"
>
<div class="absolute top-4 right-4">
<input
:id="`${id}`"
:checked="isActive"
:value="id"
:name="id"
type="radio"
class="h-4 w-4 border-n-slate-6 text-n-brand focus:ring-n-brand focus:ring-offset-0"
@change="handleChange"
/>
</div>
<!-- Content -->
<div class="flex flex-col gap-3 items-start">
<h3 class="text-sm font-medium text-n-slate-12">
{{ label }}
</h3>
<p class="text-sm text-n-slate-11">
{{ description }}
</p>
</div>
</div>
</template>

View File

@@ -0,0 +1,92 @@
<script setup>
import AddDataDropdown from '../AddDataDropdown.vue';
const mockInboxes = [
{
id: 1,
name: 'Website Support',
email: 'support@company.com',
icon: 'i-lucide-globe',
},
{
id: 2,
name: 'Email Support',
email: 'help@company.com',
icon: 'i-lucide-mail',
},
{
id: 3,
name: 'WhatsApp Business',
phoneNumber: '+1 555-0123',
icon: 'i-lucide-message-circle',
},
{
id: 4,
name: 'Facebook Messenger',
email: 'messenger@company.com',
icon: 'i-lucide-facebook',
},
{
id: 5,
name: 'Twitter DM',
email: 'twitter@company.com',
icon: 'i-lucide-twitter',
},
];
const mockTags = [
{
id: 1,
name: 'urgent',
color: '#ff4757',
},
{
id: 2,
name: 'bug',
color: '#ff6b6b',
},
{
id: 3,
name: 'feature-request',
color: '#4834d4',
},
{
id: 4,
name: 'documentation',
color: '#26de81',
},
];
const handleAdd = item => {
console.log('Add item:', item);
};
</script>
<template>
<Story
title="Components/AgentManagementPolicy/AddDataDropdown"
:layout="{ type: 'grid', width: '500px' }"
>
<Variant title="Basic Usage - Inboxes">
<div class="p-8 bg-n-background flex gap-4 h-[400px] items-start">
<AddDataDropdown
label="Add Inbox"
search-placeholder="Search inboxes..."
:items="mockInboxes"
@add="handleAdd"
/>
</div>
</Variant>
<Variant title="Basic Usage - Tags">
<div class="p-8 bg-n-background flex gap-4 h-[400px] items-start">
<AddDataDropdown
label="Add Tag"
search-placeholder="Search tags..."
:items="mockTags"
@add="handleAdd"
/>
</div>
</Variant>
</Story>
</template>

View File

@@ -0,0 +1,33 @@
<script setup>
import { ref } from 'vue';
import BaseInfo from '../BaseInfo.vue';
const policyName = ref('Round Robin Policy');
const description = ref(
'Distributes conversations evenly among available agents'
);
const enabled = ref(true);
</script>
<template>
<Story
title="Components/AgentManagementPolicy/BaseInfo"
:layout="{ type: 'grid', width: '600px' }"
>
<Variant title="Basic Usage">
<div class="p-8 bg-n-background">
<BaseInfo
v-model:policy-name="policyName"
v-model:description="description"
v-model:enabled="enabled"
name-label="Policy Name"
name-placeholder="Enter policy name"
description-label="Description"
description-placeholder="Enter policy description"
status-label="Status"
status-placeholder="Active"
/>
</div>
</Variant>
</Story>
</template>

View File

@@ -0,0 +1,89 @@
<script setup>
import CardPopover from '../CardPopover.vue';
const mockItems = [
{
id: 1,
name: 'Website Support',
icon: 'i-lucide-globe',
},
{
id: 2,
name: 'Email Support',
icon: 'i-lucide-mail',
},
{
id: 3,
name: 'WhatsApp Business',
icon: 'i-lucide-message-circle',
},
{
id: 4,
name: 'Facebook Messenger',
icon: 'i-lucide-facebook',
},
];
const mockUsers = [
{
id: 1,
name: 'John Smith',
email: 'john.smith@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=1',
},
{
id: 2,
name: 'Sarah Johnson',
email: 'sarah.johnson@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=2',
},
{
id: 3,
name: 'Mike Chen',
email: 'mike.chen@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=3',
},
{
id: 4,
name: 'Emily Davis',
email: 'emily.davis@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=4',
},
{
id: 5,
name: 'Alex Rodriguez',
email: 'alex.rodriguez@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=5',
},
];
</script>
<template>
<Story
title="Components/AgentManagementPolicy/CardPopover"
:layout="{ type: 'grid', width: '800px' }"
>
<Variant title="Basic Usage">
<div class="p-8 bg-n-background flex gap-4 h-96 items-start">
<CardPopover
:count="3"
title="Added Inboxes"
icon="i-lucide-inbox"
:items="mockItems.slice(0, 3)"
@fetch="() => console.log('Fetch triggered')"
/>
</div>
</Variant>
<Variant title="Basic Usage">
<div class="p-8 bg-n-background flex gap-4 h-96 items-start">
<CardPopover
:count="3"
title="Added Agents"
icon="i-lucide-users-round"
:items="mockUsers.slice(0, 3)"
@fetch="() => console.log('Fetch triggered')"
/>
</div>
</Variant>
</Story>
</template>

View File

@@ -0,0 +1,87 @@
<script setup>
import DataTable from '../DataTable.vue';
const mockItems = [
{
id: 1,
name: 'Website Support',
email: 'support@company.com',
icon: 'i-lucide-globe',
},
{
id: 2,
name: 'Email Support',
email: 'help@company.com',
icon: 'i-lucide-mail',
},
{
id: 3,
name: 'WhatsApp Business',
phoneNumber: '+1 555-0123',
icon: 'i-lucide-message-circle',
},
];
const mockAgentList = [
{
id: 1,
name: 'John Doe',
email: 'john.doe@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=1',
},
{
id: 2,
name: 'Jane Smith',
email: 'jane.smith@example.com',
avatarUrl: 'https://i.pravatar.cc/150?img=2',
},
];
const handleDelete = itemId => {
console.log('Delete item:', itemId);
};
</script>
<template>
<Story
title="Components/AgentManagementPolicy/DataTable"
:layout="{ type: 'grid', width: '800px' }"
>
<Variant title="With Data">
<div class="p-8 bg-n-background">
<DataTable
:items="mockItems"
:is-fetching="false"
@delete="handleDelete"
/>
</div>
</Variant>
<Variant title="With Agents">
<div class="p-8 bg-n-background">
<DataTable
:items="mockAgentList"
:is-fetching="false"
@delete="handleDelete"
/>
</div>
</Variant>
<Variant title="Loading State">
<div class="p-8 bg-n-background">
<DataTable :items="[]" is-fetching @delete="handleDelete" />
</div>
</Variant>
<Variant title="Empty State">
<div class="p-8 bg-n-background">
<DataTable
:items="[]"
:is-fetching="false"
empty-state-message="No items found"
@delete="handleDelete"
/>
</div>
</Variant>
</Story>
</template>

View File

@@ -0,0 +1,67 @@
<script setup>
import ExclusionRules from '../ExclusionRules.vue';
import { ref } from 'vue';
const mockTagsList = [
{
id: 1,
name: 'urgent',
color: '#ff4757',
},
{
id: 2,
name: 'bug',
color: '#ff6b6b',
},
{
id: 3,
name: 'feature-request',
color: '#4834d4',
},
{
id: 4,
name: 'documentation',
color: '#26de81',
},
{
id: 5,
name: 'enhancement',
color: '#2ed573',
},
{
id: 6,
name: 'question',
color: '#ffa502',
},
{
id: 7,
name: 'duplicate',
color: '#747d8c',
},
{
id: 8,
name: 'wontfix',
color: '#57606f',
},
];
const excludedLabelsBasic = ref([]);
const excludeOlderThanHoursBasic = ref(10);
</script>
<template>
<Story
title="Components/AgentManagementPolicy/ExclusionRules"
:layout="{ type: 'grid', width: '1200px' }"
>
<Variant title="Basic Usage">
<div class="p-8 bg-n-background h-[600px]">
<ExclusionRules
v-model:excluded-labels="excludedLabelsBasic"
v-model:exclude-older-than-minutes="excludeOlderThanHoursBasic"
:tags-list="mockTagsList"
/>
</div>
</Variant>
</Story>
</template>

View File

@@ -0,0 +1,25 @@
<script setup>
import { ref } from 'vue';
import FairDistribution from '../FairDistribution.vue';
const fairDistributionLimit = ref(100);
const fairDistributionWindow = ref(3600);
const windowUnit = ref('minutes');
</script>
<template>
<Story
title="Components/AgentManagementPolicy/FairDistribution"
:layout="{ type: 'grid', width: '800px' }"
>
<Variant title="Basic Usage">
<div class="p-8 bg-n-background">
<FairDistribution
v-model:fair-distribution-limit="fairDistributionLimit"
v-model:fair-distribution-window="fairDistributionWindow"
v-model:window-unit="windowUnit"
/>
</div>
</Variant>
</Story>
</template>

View File

@@ -0,0 +1,108 @@
<script setup>
import InboxCapacityLimits from '../InboxCapacityLimits.vue';
import { ref } from 'vue';
const mockInboxList = [
{
value: 1,
label: 'Website Support',
icon: 'i-lucide-globe',
},
{
value: 2,
label: 'Email Support',
icon: 'i-lucide-mail',
},
{
value: 3,
label: 'WhatsApp Business',
icon: 'i-lucide-message-circle',
},
{
value: 4,
label: 'Facebook Messenger',
icon: 'i-lucide-facebook',
},
{
value: 5,
label: 'Twitter DM',
icon: 'i-lucide-twitter',
},
{
value: 6,
label: 'Telegram',
icon: 'i-lucide-send',
},
];
const inboxCapacityLimitsEmpty = ref([]);
const inboxCapacityLimitsNew = ref([
{ id: 1, inboxId: 1, conversationLimit: 5 },
{ inboxId: null, conversationLimit: null },
]);
const handleDelete = id => {
console.log('Delete capacity limit:', id);
};
</script>
<template>
<Story
title="Components/AgentManagementPolicy/InboxCapacityLimits"
:layout="{ type: 'grid', width: '900px' }"
>
<Variant title="Empty State">
<div class="p-8 bg-n-background">
<InboxCapacityLimits
v-model:inbox-capacity-limits="inboxCapacityLimitsEmpty"
:inbox-list="mockInboxList"
:is-fetching="false"
:is-updating="false"
@delete="handleDelete"
/>
</div>
</Variant>
<Variant title="Loading State">
<div class="p-8 bg-n-background">
<InboxCapacityLimits
v-model:inbox-capacity-limits="inboxCapacityLimitsEmpty"
:inbox-list="mockInboxList"
is-fetching
:is-updating="false"
@delete="handleDelete"
/>
</div>
</Variant>
<Variant title="With New Row and existing data">
<div class="p-8 bg-n-background">
<InboxCapacityLimits
v-model:inbox-capacity-limits="inboxCapacityLimitsNew"
:inbox-list="mockInboxList"
:is-fetching="false"
:is-updating="false"
@delete="handleDelete"
/>
</div>
</Variant>
<Variant title="Interactive Demo">
<div class="p-8 bg-n-background">
<InboxCapacityLimits
v-model:inbox-capacity-limits="inboxCapacityLimitsEmpty"
:inbox-list="mockInboxList"
:is-fetching="false"
:is-updating="false"
@delete="handleDelete"
/>
<div class="mt-4 p-4 bg-n-alpha-2 rounded-lg">
<h4 class="text-sm font-medium mb-2">Current Limits:</h4>
<pre class="text-xs">{{
JSON.stringify(inboxCapacityLimitsEmpty, null, 2)
}}</pre>
</div>
</div>
</Variant>
</Story>
</template>

View File

@@ -0,0 +1,61 @@
<script setup>
import { ref } from 'vue';
import RadioCard from '../RadioCard.vue';
const selectedOption = ref('round_robin');
const handleSelect = value => {
selectedOption.value = value;
console.log('Selected:', value);
};
</script>
<template>
<Story
title="Components/AgentManagementPolicy/RadioCard"
:layout="{ type: 'grid', width: '600px' }"
>
<Variant title="Basic Usage">
<div class="p-8 bg-n-background space-y-4">
<RadioCard
id="round_robin"
label="Round Robin"
description="Distributes conversations evenly among all available agents in a rotating manner"
:is-active="selectedOption === 'round_robin'"
@select="handleSelect"
/>
<RadioCard
id="balanced"
label="Balanced Assignment"
description="Assigns conversations based on agent workload to maintain balance"
:is-active="selectedOption === 'balanced'"
@select="handleSelect"
/>
</div>
</Variant>
<Variant title="Active State">
<div class="p-8 bg-n-background">
<RadioCard
id="active_option"
label="Active Option"
description="This option is currently selected and active"
is-active
@select="handleSelect"
/>
</div>
</Variant>
<Variant title="Inactive State">
<div class="p-8 bg-n-background">
<RadioCard
id="inactive_option"
label="Inactive Option"
description="This option is not selected and can be clicked to activate"
is-active
@select="handleSelect"
/>
</div>
</Variant>
</Story>
</template>

View File

@@ -86,8 +86,8 @@ const handleLabelAction = async ({ value }) => {
}
};
const handleRemoveLabel = labelId => {
return handleLabelAction({ value: labelId });
const handleRemoveLabel = label => {
return handleLabelAction({ value: label.id });
};
watch(

View File

@@ -15,7 +15,7 @@ const props = defineProps({
const emit = defineEmits(['remove', 'hover']);
const handleRemoveLabel = () => {
emit('remove', props.label?.id);
emit('remove', props.label);
};
const handleMouseEnter = () => {
@@ -45,6 +45,7 @@ const handleMouseEnter = () => {
<Button
class="transition-opacity duration-200 !h-7 ltr:rounded-r-md rtl:rounded-l-md ltr:rounded-l-none rtl:rounded-r-none w-6 bg-transparent"
:class="{ 'opacity-0': !isHovered, 'opacity-100': isHovered }"
type="button"
slate
xs
faded

View File

@@ -103,6 +103,12 @@ const validationError = computed(() => {
);
});
const inputFieldType = computed(() => {
if (inputType.value === 'date') return 'date';
if (inputType.value === 'number') return 'number';
return 'text';
});
const resetModelOnAttributeKeyChange = newAttributeKey => {
/**
* Resets the filter values and operator when the attribute key changes. This ensures that
@@ -182,7 +188,7 @@ defineExpose({ validate });
<Input
v-else
v-model="values"
:type="inputType === 'date' ? 'date' : 'text'"
:type="inputFieldType"
class="[&>input]:h-8 [&>input]:py-1.5 [&>input]:outline-offset-0"
:placeholder="t('FILTER.INPUT_PLACEHOLDER')"
/>

View File

@@ -164,8 +164,8 @@ export function useConversationFilterContext() {
value: CONVERSATION_ATTRIBUTES.DISPLAY_ID,
attributeName: t('FILTER.ATTRIBUTES.CONVERSATION_IDENTIFIER'),
label: t('FILTER.ATTRIBUTES.CONVERSATION_IDENTIFIER'),
inputType: 'plainText',
datatype: 'number',
inputType: 'number',
dataType: 'number',
filterOperators: containmentOperators.value,
attributeModel: 'standard',
},
@@ -179,7 +179,7 @@ export function useConversationFilterContext() {
id: campaign.id,
name: campaign.title,
})),
datatype: 'number',
dataType: 'number',
filterOperators: presenceOperators.value,
attributeModel: 'standard',
},

View File

@@ -78,6 +78,8 @@ watch(unit, () => {
<option :value="DURATION_UNITS.HOURS">
{{ t('DURATION_INPUT.HOURS') }}
</option>
<option :value="DURATION_UNITS.DAYS">{{ t('DURATION_INPUT.DAYS') }}</option>
<option :value="DURATION_UNITS.DAYS">
{{ t('DURATION_INPUT.DAYS') }}
</option>
</select>
</template>

View File

@@ -15,6 +15,7 @@ const props = defineProps({
validator: value => ['info', 'error', 'success'].includes(value),
},
min: { type: String, default: '' },
max: { type: String, default: '' },
autofocus: { type: Boolean, default: false },
});
@@ -54,7 +55,12 @@ const inputOutlineClass = computed(() => {
});
const handleInput = event => {
emit('update:modelValue', event.target.value);
let value = event.target.value;
// Convert to number if type is number and value is not empty
if (props.type === 'number' && value !== '') {
value = Number(value);
}
emit('update:modelValue', value);
emit('input', event);
};
@@ -108,7 +114,12 @@ onMounted(() => {
:placeholder="placeholder"
:disabled="disabled"
:min="['date', 'datetime-local', 'time'].includes(type) ? min : undefined"
class="block w-full reset-base text-sm h-10 !px-3 !py-2.5 !mb-0 outline outline-1 border-none border-0 outline-offset-[-1px] rounded-lg bg-n-alpha-black2 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-n-slate-10 dark:placeholder:text-n-slate-10 disabled:cursor-not-allowed disabled:opacity-50 text-n-slate-12 transition-all duration-500 ease-in-out"
:max="
['date', 'datetime-local', 'time', 'number'].includes(type)
? max
: undefined
"
class="block w-full reset-base text-sm h-10 !px-3 !py-2.5 !mb-0 outline outline-1 border-none border-0 outline-offset-[-1px] rounded-lg bg-n-alpha-black2 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-n-slate-10 dark:placeholder:text-n-slate-10 disabled:cursor-not-allowed disabled:opacity-50 text-n-slate-12 transition-all duration-500 ease-in-out [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"
@input="handleInput"
@focus="handleFocus"
@blur="handleBlur"

View File

@@ -8,6 +8,10 @@ const props = defineProps({
type: String,
default: REPLY_EDITOR_MODES.REPLY,
},
disabled: {
type: Boolean,
default: false,
},
});
defineEmits(['toggleMode']);
@@ -20,9 +24,12 @@ const privateModeSize = useElementSize(wootEditorPrivateMode);
/**
* Computed boolean indicating if the editor is in private note mode
* When disabled, always show NOTE mode regardless of actual mode prop
* @type {ComputedRef<boolean>}
*/
const isPrivate = computed(() => props.mode === REPLY_EDITOR_MODES.NOTE);
const isPrivate = computed(() => {
return props.disabled || props.mode === REPLY_EDITOR_MODES.NOTE;
});
/**
* Computes the width of the sliding background chip in pixels
@@ -53,6 +60,10 @@ const translateValue = computed(() => {
<template>
<button
class="flex items-center w-auto h-8 p-1 transition-all border rounded-full bg-n-alpha-2 group relative duration-300 ease-in-out z-0"
:disabled="disabled"
:class="{
'cursor-not-allowed': disabled,
}"
@click="$emit('toggleMode')"
>
<div ref="wootEditorReplyMode" class="flex items-center gap-1 px-2 z-20">
@@ -62,7 +73,10 @@ const translateValue = computed(() => {
{{ $t('CONVERSATION.REPLYBOX.PRIVATE_NOTE') }}
</div>
<div
class="absolute shadow-sm rounded-full h-6 w-[var(--chip-width)] transition-all duration-300 ease-in-out translate-x-[var(--translate-x)] rtl:translate-x-[var(--rtl-translate-x)] bg-n-solid-1"
class="absolute shadow-sm rounded-full h-6 w-[var(--chip-width)] ease-in-out translate-x-[var(--translate-x)] rtl:translate-x-[var(--rtl-translate-x)] bg-n-solid-1"
:class="{
'transition-all duration-300': !disabled,
}"
:style="{
'--chip-width': width,
'--translate-x': translateValue,

View File

@@ -10,7 +10,6 @@ import { getAllowedFileTypesByChannel } from '@chatwoot/utils';
import { ALLOWED_FILE_TYPES } from 'shared/constants/messages';
import VideoCallButton from '../VideoCallButton.vue';
import AIAssistanceButton from '../AIAssistanceButton.vue';
import { REPLY_EDITOR_MODES } from './constants';
import { INBOX_TYPES } from 'dashboard/helper/inbox';
import { mapGetters } from 'vuex';
import NextButton from 'dashboard/components-next/button/Button.vue';
@@ -20,9 +19,9 @@ export default {
components: { NextButton, FileUpload, VideoCallButton, AIAssistanceButton },
mixins: [inboxMixin],
props: {
mode: {
type: String,
default: REPLY_EDITOR_MODES.REPLY,
isNote: {
type: Boolean,
default: false,
},
onSend: {
type: Function,
@@ -168,9 +167,6 @@ export default {
isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',
uiFlags: 'integrations/getUIFlags',
}),
isNote() {
return this.mode === REPLY_EDITOR_MODES.NOTE;
},
wrapClass() {
return {
'is-note-mode': this.isNote,

View File

@@ -15,6 +15,10 @@ export default {
type: String,
default: REPLY_EDITOR_MODES.REPLY,
},
isReplyRestricted: {
type: Boolean,
default: false,
},
isMessageLengthReachingThreshold: {
type: Boolean,
default: () => false,
@@ -30,6 +34,7 @@ export default {
emit('setReplyMode', mode);
};
const handleReplyClick = () => {
if (props.isReplyRestricted) return;
setReplyMode(REPLY_EDITOR_MODES.REPLY);
};
const handleNoteClick = () => {
@@ -88,6 +93,7 @@ export default {
<div class="flex justify-between h-[3.25rem] gap-2 ltr:pl-3 rtl:pr-3">
<EditorModeToggle
:mode="mode"
:disabled="isReplyRestricted"
class="mt-3"
@toggle-mode="handleModeToggle"
/>

View File

@@ -170,6 +170,9 @@ export default {
}
return true;
},
isReplyRestricted() {
return !this.currentChat?.can_reply && !this.isAWhatsAppChannel;
},
inboxId() {
return this.currentChat.inbox_id;
},
@@ -1078,6 +1081,7 @@ export default {
<div ref="replyEditor" class="reply-box" :class="replyBoxClass">
<ReplyTopPanel
:mode="replyType"
:is-reply-restricted="isReplyRestricted"
:is-message-length-reaching-threshold="isMessageLengthReachingThreshold"
:characters-remaining="charactersRemaining"
:popout-reply-box="popOutReplyBox"
@@ -1188,7 +1192,7 @@ export default {
:is-on-private-note="isOnPrivateNote"
:is-recording-audio="isRecordingAudio"
:is-send-disabled="isReplyButtonDisabled"
:mode="replyType"
:is-note="isPrivate"
:on-file-upload="onFileUpload"
:on-send="onSendReply"
:conversation-type="conversationType"

View File

@@ -43,18 +43,22 @@ describe('useFontSize', () => {
it('returns fontSizeOptions with correct structure', () => {
const { fontSizeOptions } = useFontSize();
expect(fontSizeOptions).toHaveLength(5);
expect(fontSizeOptions[0]).toHaveProperty('value');
expect(fontSizeOptions[0]).toHaveProperty('label');
expect(fontSizeOptions.value).toHaveLength(5);
expect(fontSizeOptions.value[0]).toHaveProperty('value');
expect(fontSizeOptions.value[0]).toHaveProperty('label');
// Check specific options
expect(fontSizeOptions.find(option => option.value === '16px')).toEqual({
expect(
fontSizeOptions.value.find(option => option.value === '16px')
).toEqual({
value: '16px',
label:
'PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.OPTIONS.DEFAULT',
});
expect(fontSizeOptions.find(option => option.value === '14px')).toEqual({
expect(
fontSizeOptions.value.find(option => option.value === '14px')
).toEqual({
value: '14px',
label:
'PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.OPTIONS.SMALLER',
@@ -143,12 +147,12 @@ describe('useFontSize', () => {
const { fontSizeOptions } = useFontSize();
// Check that translation is applied
expect(fontSizeOptions.find(option => option.value === '14px').label).toBe(
'Smaller'
);
expect(fontSizeOptions.find(option => option.value === '16px').label).toBe(
'Default'
);
expect(
fontSizeOptions.value.find(option => option.value === '14px').label
).toBe('Smaller');
expect(
fontSizeOptions.value.find(option => option.value === '16px').label
).toBe('Default');
// Verify translation function was called with correct keys
expect(mockTranslate).toHaveBeenCalledWith(

View File

@@ -77,8 +77,8 @@ export const useFontSize = () => {
* Font size options for select dropdown
* @type {Array<{value: string, label: string}>}
*/
const fontSizeOptions = FONT_SIZE_NAMES.map(name =>
createFontSizeOption(t, name)
const fontSizeOptions = computed(() =>
FONT_SIZE_NAMES.map(name => createFontSizeOption(t, name))
);
/**

View File

@@ -96,3 +96,18 @@ export const sanitizeVariableSearchKey = (searchKey = '') => {
.replace(/,/g, '') // remove commas
.trim();
};
/**
* Convert underscore-separated string to title case.
* Eg. "round_robin" => "Round Robin"
* @param {string} str
* @returns {string}
*/
export const formatToTitleCase = str => {
return (
str
?.replace(/_/g, ' ')
.replace(/\b\w/g, l => l.toUpperCase())
.trim() || ''
);
};

View File

@@ -5,6 +5,7 @@ import {
convertToCategorySlug,
convertToPortalSlug,
sanitizeVariableSearchKey,
formatToTitleCase,
} from '../commons';
describe('#getTypingUsersText', () => {
@@ -142,3 +143,51 @@ describe('sanitizeVariableSearchKey', () => {
expect(sanitizeVariableSearchKey()).toBe('');
});
});
describe('formatToTitleCase', () => {
it('converts underscore-separated string to title case', () => {
expect(formatToTitleCase('round_robin')).toBe('Round Robin');
});
it('converts single word to title case', () => {
expect(formatToTitleCase('priority')).toBe('Priority');
});
it('converts multiple underscores to title case', () => {
expect(formatToTitleCase('auto_assignment_policy')).toBe(
'Auto Assignment Policy'
);
});
it('handles already capitalized words', () => {
expect(formatToTitleCase('HIGH_PRIORITY')).toBe('HIGH PRIORITY');
});
it('handles mixed case with underscores', () => {
expect(formatToTitleCase('first_Name_last')).toBe('First Name Last');
});
it('handles empty string', () => {
expect(formatToTitleCase('')).toBe('');
});
it('handles null input', () => {
expect(formatToTitleCase(null)).toBe('');
});
it('handles undefined input', () => {
expect(formatToTitleCase(undefined)).toBe('');
});
it('handles string without underscores', () => {
expect(formatToTitleCase('hello')).toBe('Hello');
});
it('handles string with numbers', () => {
expect(formatToTitleCase('priority_1_high')).toBe('Priority 1 High');
});
it('handles leading and trailing underscores', () => {
expect(formatToTitleCase('_leading_trailing_')).toBe('Leading Trailing');
});
});

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Show labels",
"HIDE_LABELS": "Hide labels"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Resolve",
"REOPEN_ACTION": "Reopen",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Labels",
"REPORTS_INBOX": "Inbox",
"REPORTS_TEAM": "Team",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Set yourself as",
"SET_YOUR_AVAILABILITY": "Set your availability",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Switch to Reply",
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "Active",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Status:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Delete",
"CANCEL_BUTTON_LABEL": "Cancel"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "إظهار السمات",
"HIDE_LABELS": "إخفاء السمات"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "حل المحادثة",
"REOPEN_ACTION": "إعادة فتح",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "الوسوم",
"REPORTS_INBOX": "صندوق الوارد",
"REPORTS_TEAM": "الفريق",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "تعيين نفسك كـ",
"SET_YOUR_AVAILABILITY": "قم بتعيين توافرك",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "التبديل إلى الرد",
"TOGGLE_SNOOZE_DROPDOWN": "تبديل القائمة المنسدلة"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "الأولوية",
"ACTIVE": "مفعل",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "تعديل"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "إلغاء"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "الوصف:",
"PLACEHOLDER": "أدخل الوصف"
},
"STATUS": {
"LABEL": "الحالة:",
"PLACEHOLDER": "اختر الحالة",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "إضافة"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "تعديل"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "إلغاء"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "الوصف:",
"PLACEHOLDER": "أدخل الوصف"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "إضافة"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "حذف",
"CANCEL_BUTTON_LABEL": "إلغاء"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Show labels",
"HIDE_LABELS": "Hide labels"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Resolve",
"REOPEN_ACTION": "Reopen",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Labels",
"REPORTS_INBOX": "Inbox",
"REPORTS_TEAM": "Team",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Set yourself as",
"SET_YOUR_AVAILABILITY": "Set your availability",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Switch to Reply",
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "Active",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Status:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Delete",
"CANCEL_BUTTON_LABEL": "Cancel"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Show labels",
"HIDE_LABELS": "Hide labels"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Resolve",
"REOPEN_ACTION": "Reopen",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Labels",
"REPORTS_INBOX": "Входяща кутия",
"REPORTS_TEAM": "Team",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Set yourself as",
"SET_YOUR_AVAILABILITY": "Set your availability",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Switch to Reply",
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "Активен",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Редактирай"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Отмени"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Описание:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Статус:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Добавяне"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Редактирай"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Отмени"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Описание:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Добавяне"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Изтрий",
"CANCEL_BUTTON_LABEL": "Отмени"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Mostra etiquetes",
"HIDE_LABELS": "Amaga etiquetes"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Resoldre",
"REOPEN_ACTION": "Tornar a obrir",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Etiquetes",
"REPORTS_INBOX": "Safata d'entrada",
"REPORTS_TEAM": "Equip",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Posa't com",
"SET_YOUR_AVAILABILITY": "Estableix la vostra disponibilitat",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Canvia a Respon",
"TOGGLE_SNOOZE_DROPDOWN": "Commuta el menú desplegable de posposar"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Prioritat",
"ACTIVE": "Actiu",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Edita"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel·la"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Descripció:",
"PLACEHOLDER": "Introdueix la descripció"
},
"STATUS": {
"LABEL": "Estat:",
"PLACEHOLDER": "Selecciona l'estat",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Afegir"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Edita"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel·la"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Descripció:",
"PLACEHOLDER": "Introdueix la descripció"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Afegir"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Esborrar",
"CANCEL_BUTTON_LABEL": "Cancel·la"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Show labels",
"HIDE_LABELS": "Hide labels"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Vyřešit",
"REOPEN_ACTION": "Znovu otevřít",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Štítky",
"REPORTS_INBOX": "Inbox",
"REPORTS_TEAM": "Team",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Set yourself as",
"SET_YOUR_AVAILABILITY": "Nastavte svou dostupnost",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Switch to Reply",
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "Active",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Upravit"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Zrušit"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Stav:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Přidat"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Upravit"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Zrušit"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Přidat"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Vymazat",
"CANCEL_BUTTON_LABEL": "Zrušit"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Vis etiketter",
"HIDE_LABELS": "Skjul etiketter"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Løs",
"REOPEN_ACTION": "Genåben",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Etiketter",
"REPORTS_INBOX": "Indbakke",
"REPORTS_TEAM": "Team",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Sæt dig selv som",
"SET_YOUR_AVAILABILITY": "Indstil din tilgængelighed",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Skift til svar",
"TOGGLE_SNOOZE_DROPDOWN": "Skift snooze dropdown"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "Aktiv",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Rediger"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Annuller"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Beskrivelse:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Status:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Tilføj"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Rediger"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Annuller"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Beskrivelse:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Tilføj"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Slet",
"CANCEL_BUTTON_LABEL": "Annuller"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Labels anzeigen",
"HIDE_LABELS": "Labels ausblenden"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Fall schließen",
"REOPEN_ACTION": "Wieder öffnen",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Labels",
"REPORTS_INBOX": "Posteingang",
"REPORTS_TEAM": "Team",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Setzen Sie sich als",
"SET_YOUR_AVAILABILITY": "Legen Sie Ihre Verfügbarkeit fest",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Zur Antwort wechseln",
"TOGGLE_SNOOZE_DROPDOWN": "Schlummer-Dropdown ein-/ausblenden"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priorität",
"ACTIVE": "Aktiv",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Bearbeiten"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Stornieren"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Beschreibung:",
"PLACEHOLDER": "Beschreibung eingeben"
},
"STATUS": {
"LABEL": "Status:",
"PLACEHOLDER": "Status auswählen",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Hinzufügen"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Bearbeiten"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Stornieren"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Beschreibung:",
"PLACEHOLDER": "Beschreibung eingeben"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Hinzufügen"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Löschen",
"CANCEL_BUTTON_LABEL": "Stornieren"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Προβολή ετικετών",
"HIDE_LABELS": "Απόκρυψη ετικετών"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Επίλυση",
"REOPEN_ACTION": "Επαναφορά",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Ετικέτες",
"REPORTS_INBOX": "Εισερχόμενα",
"REPORTS_TEAM": "Ομάδα",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Ορίστε τον εαυτό σας ως",
"SET_YOUR_AVAILABILITY": "Ορίστε τη διαθεσιμότητά σας",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Εναλλαγή σε απάντηση",
"TOGGLE_SNOOZE_DROPDOWN": "Εναλλαγή αναβολής dropdown"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "Ενεργή",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Επεξεργασία"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Άκυρο"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Περιγραφή:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Κατάσταση:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Προσθήκη"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Επεξεργασία"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Άκυρο"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Περιγραφή:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Προσθήκη"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Διαγραφή",
"CANCEL_BUTTON_LABEL": "Άκυρο"
}
}
}

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -444,6 +451,230 @@
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "Active",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Status:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Delete",
"CANCEL_BUTTON_LABEL": "Cancel"
}
}
}

View File

@@ -142,7 +142,7 @@
"NEW_CAMPAIGN": "Crear campaña",
"EMPTY_STATE": {
"TITLE": "No WhatsApp campaigns are available",
"SUBTITLE": "Launch a WhatsApp campaign to reach your customers directly. Send offers or make announcements with ease. Click 'Create campaign' to get started."
"SUBTITLE": "Lanza una campaña de WhatsApp para conectar con tus clientes directamente. Envía ofertas o has anuncios fácilmente. Haz clic en 'Crear campaña' para comenzar."
},
"CARD": {
"STATUS": {
@@ -155,7 +155,7 @@
}
},
"CREATE": {
"TITLE": "Create WhatsApp campaign",
"TITLE": "Crear campaña de WhatsApp",
"CANCEL_BUTTON_TEXT": "Cancelar",
"CREATE_BUTTON_TEXT": "Crear",
"FORM": {

View File

@@ -40,7 +40,7 @@
"SEND_MESSAGE_LABEL": "Enviar mensaje",
"FORM_ERROR_MESSAGE": "Por favor, rellene todas las variables antes de enviar",
"MEDIA_HEADER_LABEL": "{type} Header",
"MEDIA_URL_LABEL": "Enter full media URL",
"MEDIA_URL_LABEL": "Ingrese la URL completa",
"MEDIA_URL_PLACEHOLDER": "https://example.com/image.jpg"
},
"FORM": {

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Mostrar etiquetas",
"HIDE_LABELS": "Ocultar etiquetas"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Resolver",
"REOPEN_ACTION": "Reabrir",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -226,7 +233,7 @@
"APPEARANCE": "Cambiar apariencia",
"SUPER_ADMIN_CONSOLE": "Consola SuperAdmin",
"DOCS": "Leer la documentación",
"CHANGELOG": "Changelog",
"CHANGELOG": "Notas de versión",
"LOGOUT": "Cerrar sesión"
},
"APP_GLOBAL": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Etiquetas",
"REPORTS_INBOX": "Bandeja de entrada",
"REPORTS_TEAM": "Equipo",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Ponte como",
"SET_YOUR_AVAILABILITY": "Establecer su disponibilidad",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Cambiar a respuesta",
"TOGGLE_SNOOZE_DROPDOWN": "Cambiar el menú desplegable"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Prioridad",
"ACTIVE": "Activo",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Editar"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancelar"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Descripción:",
"PLACEHOLDER": "Introducir descripción"
},
"STATUS": {
"LABEL": "Estado:",
"PLACEHOLDER": "Seleccionar estado",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Añadir"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Editar"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancelar"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Descripción:",
"PLACEHOLDER": "Introducir descripción"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Añadir"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Eliminar",
"CANCEL_BUTTON_LABEL": "Cancelar"
}
}
}

View File

@@ -17,7 +17,7 @@
"IP_ADDRESS": "آدرس آی‌پی",
"CREATED_AT_LABEL": "ایجاد شده",
"NEW_MESSAGE": "پیام جدید",
"CALL": "Call",
"CALL": "تماس",
"CALL_UNDER_DEVELOPMENT": "Calling is under development",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "مشاهده کردن برچسب‌ها",
"HIDE_LABELS": "پنهان کردن برچسب‌ها"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "حل شد",
"REOPEN_ACTION": "دوباره باز کنید",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "برچسب‌ها",
"REPORTS_INBOX": "صندوق ورودی",
"REPORTS_TEAM": "تیم‌",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "خود را به عنوان",
"SET_YOUR_AVAILABILITY": "در دسترس بودن خود را تنظیم کنید",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "رفتن به پاسخ",
"TOGGLE_SNOOZE_DROPDOWN": "تغییر حالت بازکردن تعویق"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "اولویت",
"ACTIVE": "فعال",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "ویرایش"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "انصراف"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "توضیحات:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "وضعیت:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "افزودن"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "ویرایش"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "انصراف"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "توضیحات:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "افزودن"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "حذف",
"CANCEL_BUTTON_LABEL": "انصراف"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Show labels",
"HIDE_LABELS": "Hide labels"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Ratkaise",
"REOPEN_ACTION": "Uudelleenavaa",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Tunnisteet",
"REPORTS_INBOX": "Inbox",
"REPORTS_TEAM": "Team",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Set yourself as",
"SET_YOUR_AVAILABILITY": "Set your availability",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Switch to Reply",
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "Active",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Muokkaa"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Peruuta"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Kuvaus:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Tila:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Muokkaa"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Peruuta"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Kuvaus:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Poista",
"CANCEL_BUTTON_LABEL": "Peruuta"
}
}
}

View File

@@ -71,7 +71,7 @@
"EDIT": "{agentName} updated the account configuration (#{id})"
},
"CONVERSATION": {
"DELETE": "{agentName} deleted conversation #{id}"
"DELETE": "{agentName} a supprimé la conversation #{id}"
}
}
}

View File

@@ -131,7 +131,7 @@
"CONVERSATION_CREATED": "Conversation créée",
"CONVERSATION_UPDATED": "Conversation mise à jour",
"MESSAGE_CREATED": "Message créé",
"CONVERSATION_RESOLVED": "Conversation Resolved",
"CONVERSATION_RESOLVED": "Conversation terminée",
"CONVERSATION_OPENED": "Conversation ouverte"
},
"ACTIONS": {
@@ -153,8 +153,8 @@
"OPEN_CONVERSATION": "Ouvrir la conversation"
},
"MESSAGE_TYPES": {
"INCOMING": "Incoming Message",
"OUTGOING": "Outgoing Message"
"INCOMING": "Boite de réception",
"OUTGOING": "Message envoyé"
},
"PRIORITY_TYPES": {
"NONE": "Aucun",

View File

@@ -138,11 +138,11 @@
}
},
"WHATSAPP": {
"HEADER_TITLE": "WhatsApp campaigns",
"HEADER_TITLE": "Campagnes WhatsApp",
"NEW_CAMPAIGN": "Create campaign",
"EMPTY_STATE": {
"TITLE": "No WhatsApp campaigns are available",
"SUBTITLE": "Launch a WhatsApp campaign to reach your customers directly. Send offers or make announcements with ease. Click 'Create campaign' to get started."
"TITLE": "Aucune campagne WhatsApp nest disponible",
"SUBTITLE": "Lancez une campagne WhatsApp pour toucher directement vos clients. Envoyez des offres ou faites des annonces en toute simplicité. Cliquez sur “Créer une campagne” pour commencer."
},
"CARD": {
"STATUS": {
@@ -155,7 +155,7 @@
}
},
"CREATE": {
"TITLE": "Create WhatsApp campaign",
"TITLE": "Créer une campagne WhatsApp",
"CANCEL_BUTTON_TEXT": "Annuler",
"CREATE_BUTTON_TEXT": "Créer",
"FORM": {
@@ -170,15 +170,15 @@
"ERROR": "La boîte de réception est requise"
},
"TEMPLATE": {
"LABEL": "WhatsApp Template",
"PLACEHOLDER": "Select a template",
"INFO": "Select a template to use for this campaign.",
"ERROR": "Template is required",
"LABEL": "Modèle WhatsApp",
"PLACEHOLDER": "Sélectionner un modèle",
"INFO": "Sélectionnez un modèle pour cette campagne.",
"ERROR": "Un modèle est requis",
"PREVIEW_TITLE": "Traiter {templateName}",
"LANGUAGE": "Langue",
"CATEGORY": "Catégorie",
"VARIABLES_LABEL": "Variables",
"VARIABLE_PLACEHOLDER": "Enter value for {variable}"
"VARIABLE_PLACEHOLDER": "Entrez une valeur pour {variable}"
},
"AUDIENCE": {
"LABEL": "Audience",
@@ -195,7 +195,7 @@
"CANCEL": "Annuler"
},
"API": {
"SUCCESS_MESSAGE": "WhatsApp campaign created successfully",
"SUCCESS_MESSAGE": "Campagne WhatsApp créée avec succès",
"ERROR_MESSAGE": "Une erreur est survenue, veuillez réessayer."
}
}

View File

@@ -51,6 +51,6 @@
"PLACEHOLDER": "Entrez la durée"
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
"COMING_SOON": "Bientôt disponible !"
}
}

View File

@@ -17,10 +17,10 @@
"IP_ADDRESS": "Adresse IP",
"CREATED_AT_LABEL": "Créé",
"NEW_MESSAGE": "Nouveau message",
"CALL": "Call",
"CALL_UNDER_DEVELOPMENT": "Calling is under development",
"CALL": "Appel",
"CALL_UNDER_DEVELOPMENT": "Appel en cours de développement",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
"TITLE": "Choisir une boîte de réception vocale"
},
"CONVERSATIONS": {
"NO_RECORDS_FOUND": "Il n'y a aucune conversation précédente associée à ce contact.",
@@ -290,7 +290,7 @@
"HEADER": {
"TITLE": "Contacts",
"SEARCH_TITLE": "Search contacts",
"ACTIVE_TITLE": "Active contacts",
"ACTIVE_TITLE": "Contacts actifs",
"SEARCH_PLACEHOLDER": "Search...",
"MESSAGE_BUTTON": "Message",
"SEND_MESSAGE": "Envoyer un message",
@@ -465,8 +465,8 @@
}
},
"DELETE_CONTACT": {
"MESSAGE": "This action is permanent and irreversible.",
"BUTTON": "Delete now"
"MESSAGE": "Cette action est permanente et irréversible.",
"BUTTON": "Supprimer maintenant"
}
},
"DETAILS": {
@@ -476,7 +476,7 @@
"DELETE_CONTACT": "Supprimer le contact",
"DELETE_DIALOG": {
"TITLE": "Confirmer la suppression",
"DESCRIPTION": "Are you sure you want to delete this contact?",
"DESCRIPTION": "Êtes-vous sûr de vouloir supprimer ce contact ?",
"CONFIRM": "Oui, supprimer",
"API": {
"SUCCESS_MESSAGE": "Contact supprimé avec succès",
@@ -566,7 +566,7 @@
"BUTTON_LABEL": "Add contact",
"SEARCH_EMPTY_STATE_TITLE": "Aucun contact ne correspond à votre recherche 🔍",
"LIST_EMPTY_STATE_TITLE": "No contacts available in this view 📋",
"ACTIVE_EMPTY_STATE_TITLE": "No contacts are active at the moment 🌙"
"ACTIVE_EMPTY_STATE_TITLE": "Aucun contact n'est actif pour le moment 🌙"
}
},
"COMPOSE_NEW_CONVERSATION": {

View File

@@ -1,33 +1,33 @@
{
"CONTENT_TEMPLATES": {
"MODAL": {
"TITLE": "Twilio Templates",
"SUBTITLE": "Select the Twilio template you want to send",
"TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}"
"TITLE": "Modèles Twilio",
"SUBTITLE": "Sélectionnez le modèle Twilio que vous souhaitez envoyer",
"TEMPLATE_SELECTED_SUBTITLE": "Configurer le modèle : {templateName}"
},
"PICKER": {
"SEARCH_PLACEHOLDER": "Rechercher des modèles",
"NO_TEMPLATES_FOUND": "Aucun modèle trouvé pour",
"NO_CONTENT": "No content",
"HEADER": "Header",
"BODY": "Body",
"FOOTER": "Footer",
"BUTTONS": "Buttons",
"HEADER": "En-tête",
"BODY": "Corps",
"FOOTER": "Pied de page",
"BUTTONS": "Boutons",
"CATEGORY": "Catégorie",
"MEDIA_CONTENT": "Media Content",
"MEDIA_CONTENT_FALLBACK": "media content",
"NO_TEMPLATES_AVAILABLE": "No Twilio templates available. Click refresh to sync templates from Twilio.",
"REFRESH_BUTTON": "Refresh templates",
"REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.",
"REFRESH_ERROR": "Failed to refresh templates. Please try again.",
"MEDIA_CONTENT": "Contenu média",
"MEDIA_CONTENT_FALLBACK": "contenu multimédia",
"NO_TEMPLATES_AVAILABLE": "Aucun modèle Twilio disponible. Cliquez sur Actualiser pour synchroniser les modèles de Twilio.",
"REFRESH_BUTTON": "Rafraîchir les modèles",
"REFRESH_SUCCESS": "Mise à jour des modèles. La mise à jour peut prendre quelques minutes.",
"REFRESH_ERROR": "Échec de la mise à jour des modèles. Veuillez réessayer.",
"LABELS": {
"LANGUAGE": "Langue",
"TEMPLATE_BODY": "Corps du modèle",
"CATEGORY": "Catégorie"
},
"TYPES": {
"MEDIA": "Media",
"QUICK_REPLY": "Quick Reply",
"MEDIA": "Média",
"QUICK_REPLY": "Réponse rapide",
"TEXT": "Texte"
}
},
@@ -39,8 +39,8 @@
"GO_BACK_LABEL": "Retour",
"SEND_MESSAGE_LABEL": "Envoyer un message",
"FORM_ERROR_MESSAGE": "Veuillez remplir toutes les variables avant d'envoyer",
"MEDIA_HEADER_LABEL": "{type} Header",
"MEDIA_URL_LABEL": "Enter full media URL",
"MEDIA_HEADER_LABEL": "En-tête {type}",
"MEDIA_URL_LABEL": "Saisissez l'URL complète du média",
"MEDIA_URL_PLACEHOLDER": "https://example.com/image.jpg"
},
"FORM": {

View File

@@ -35,11 +35,11 @@
"API_HOURS_WINDOW": "Vous ne pouvez répondre à cette conversation que dans un délai de {hours} heures",
"NOT_ASSIGNED_TO_YOU": "Cette conversation ne vous est pas assignée. Voulez-vous vous assigner cette conversation ?",
"ASSIGN_TO_ME": "Massigner la conversation",
"BOT_HANDOFF_MESSAGE": "You are responding to a conversation which is currently handled by an assistant or a bot.",
"BOT_HANDOFF_ACTION": "Mark open and assign to you",
"BOT_HANDOFF_REOPEN_ACTION": "Mark conversation open",
"BOT_HANDOFF_SUCCESS": "Conversation has been handed over to you",
"BOT_HANDOFF_ERROR": "Failed to take over the conversation. Please try again.",
"BOT_HANDOFF_MESSAGE": "Vous répondez à une conversation actuellement gérée par un assistant ou un bot.",
"BOT_HANDOFF_ACTION": "Ouvrir et mattribuer",
"BOT_HANDOFF_REOPEN_ACTION": "Marquer la conversation comme ouverte",
"BOT_HANDOFF_SUCCESS": "La conversation vous a été attribuée",
"BOT_HANDOFF_ERROR": "Impossible de reprendre la conversation. Veuillez réessayer.",
"TWILIO_WHATSAPP_CAN_REPLY": "Vous pouvez seulement répondre à cette conversation en utilisant un modèle de message en raison de",
"TWILIO_WHATSAPP_24_HOURS_WINDOW": "Restriction de fenêtre de message de 24 heures",
"OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Ce compte Instagram a été migré vers la nouvelle boîte de réception du canal Instagram. Tous les nouveaux messages y apparaîtront. Vous ne pourrez plus envoyer de messages depuis cette conversation.",
@@ -71,11 +71,22 @@
"SHOW_LABELS": "Afficher les étiquettes",
"HIDE_LABELS": "Masquer les étiquettes"
},
"VOICE_CALL": {
"INCOMING_CALL": "Appel entrant",
"OUTGOING_CALL": "Appel sortant",
"CALL_IN_PROGRESS": "Appel en cours",
"NO_ANSWER": "Pas de réponse",
"MISSED_CALL": "Appel manqué",
"CALL_ENDED": "Appel terminé",
"NOT_ANSWERED_YET": "Pas encore répondu",
"THEY_ANSWERED": "Il a répondu",
"YOU_ANSWERED": "Vous avez répondu"
},
"HEADER": {
"RESOLVE_ACTION": "Résoudre",
"REOPEN_ACTION": "Ré-ouvrir",
"OPEN_ACTION": "Ouvert",
"MORE_ACTIONS": "More actions",
"MORE_ACTIONS": "Plus d'actions",
"OPEN": "Plus",
"CLOSE": "Fermer",
"DETAILS": "détails",
@@ -128,8 +139,8 @@
}
},
"DELETE_CONVERSATION": {
"TITLE": "Delete conversation #{conversationId}",
"DESCRIPTION": "Are you sure you want to delete this conversation?",
"TITLE": "Supprimer la conversation #{conversationId}",
"DESCRIPTION": "Êtes-vous sûr de vouloir supprimer cette conversation ?",
"CONFIRM": "Supprimer"
},
"CARD_CONTEXT_MENU": {
@@ -148,10 +159,10 @@
"ASSIGN_LABEL": "Assigner une étiquette",
"AGENTS_LOADING": "Chargement des agents...",
"ASSIGN_TEAM": "Assigner une équipe",
"DELETE": "Delete conversation",
"OPEN_IN_NEW_TAB": "Open in new tab",
"COPY_LINK": "Copy conversation link",
"COPY_LINK_SUCCESS": "Conversation link copied to clipboard",
"DELETE": "Supprimer la conversation",
"OPEN_IN_NEW_TAB": "Ouvrir dans un nouvel onglet",
"COPY_LINK": "Copier le lien de la conversation",
"COPY_LINK_SUCCESS": "Le lien de conversation a été copié dans le presse-papiers",
"API": {
"AGENT_ASSIGNMENT": {
"SUCCESFUL": "Conversation id {conversationId} assignée à \"{agentName}\"",
@@ -226,8 +237,8 @@
"ASSIGN_LABEL_SUCCESFUL": "Étiquette attribuée avec succès",
"ASSIGN_LABEL_FAILED": "Échec de l'attribution de l'étiquette",
"CHANGE_TEAM": "L'équipe de conversation a été modifiée",
"SUCCESS_DELETE_CONVERSATION": "Conversation deleted successfully",
"FAIL_DELETE_CONVERSATION": "Couldn't delete conversation! Try again",
"SUCCESS_DELETE_CONVERSATION": "Conversation supprimée avec succès",
"FAIL_DELETE_CONVERSATION": "Impossible de supprimer la conversation ! Veuillez réessayer",
"FILE_SIZE_LIMIT": "Le fichier dépasse la limite de {MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE} pour les pièces jointes",
"MESSAGE_ERROR": "Impossible d'envoyer ce message, veuillez réessayer plus tard",
"SENT_BY": "Envoyé par:",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Étiquettes",
"REPORTS_INBOX": "Boîte de réception",
"REPORTS_TEAM": "Équipes",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Se définir comme",
"SET_YOUR_AVAILABILITY": "Définissez votre disponibilité",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Basculer vers la réponse",
"TOGGLE_SNOOZE_DROPDOWN": "Activer/désactiver la liste déroulante de répétition"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priorité",
"ACTIVE": "Actif",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Modifier"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Annuler"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "État:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Ajouter"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Modifier"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Annuler"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Ajouter"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Supprimer",
"CANCEL_BUTTON_LABEL": "Annuler"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "הצג תויות",
"HIDE_LABELS": "הסתר תוויות"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "פתרון",
"REOPEN_ACTION": "פתח מחדש",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "תוויות",
"REPORTS_INBOX": "תיבת הדואר הנכנס",
"REPORTS_TEAM": "צוות",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "הגדר את עצמך בתור",
"SET_YOUR_AVAILABILITY": "הגדר את הזמינות שלך",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "עבור לתשובה",
"TOGGLE_SNOOZE_DROPDOWN": "החלפת תפריט נודניק"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "פעיל",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "ערוך"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "ביטול"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "תיאור:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "מצב:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "הוסף"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "ערוך"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "ביטול"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "תיאור:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "הוסף"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "מחק",
"CANCEL_BUTTON_LABEL": "ביטול"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Show labels",
"HIDE_LABELS": "Hide labels"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Resolve",
"REOPEN_ACTION": "Reopen",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Labels",
"REPORTS_INBOX": "Inbox",
"REPORTS_TEAM": "Team",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Set yourself as",
"SET_YOUR_AVAILABILITY": "Set your availability",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Switch to Reply",
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "Active",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Status:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Delete",
"CANCEL_BUTTON_LABEL": "Cancel"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Show labels",
"HIDE_LABELS": "Hide labels"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Resolve",
"REOPEN_ACTION": "Reopen",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Labels",
"REPORTS_INBOX": "Inbox",
"REPORTS_TEAM": "Tim",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Postavi sebe kao",
"SET_YOUR_AVAILABILITY": "Set your availability",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Switch to Reply",
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Prioritet",
"ACTIVE": "Active",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Uredi"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Odustani"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Status:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Uredi"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Odustani"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Izbriši",
"CANCEL_BUTTON_LABEL": "Odustani"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Cimkék mutatása",
"HIDE_LABELS": "Cimkék elrejtése"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Megoldva",
"REOPEN_ACTION": "Újranyitás",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Cimkék",
"REPORTS_INBOX": "Fiók",
"REPORTS_TEAM": "Csapat",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Ugrás a Beszélgetések Irányítópultjához",
"SET_YOUR_AVAILABILITY": "Elérhetőség beállítása",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Válts a válasz fülre",
"TOGGLE_SNOOZE_DROPDOWN": "Alvómód bekapcsolása a legördülő menüben"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Prioritás",
"ACTIVE": "Aktív",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Szerkesztés"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Mégse"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Leírás:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Státusz:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Hozzáadás"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Szerkesztés"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Mégse"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Leírás:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Hozzáadás"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Törlés",
"CANCEL_BUTTON_LABEL": "Mégse"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Show labels",
"HIDE_LABELS": "Hide labels"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Resolve",
"REOPEN_ACTION": "Reopen",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Labels",
"REPORTS_INBOX": "Inbox",
"REPORTS_TEAM": "Team",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Set yourself as",
"SET_YOUR_AVAILABILITY": "Set your availability",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Switch to Reply",
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "Active",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Status:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Cancel"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Add"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Delete",
"CANCEL_BUTTON_LABEL": "Cancel"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Tampilkan label",
"HIDE_LABELS": "Sembunyikan label"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Menyelesaikan",
"REOPEN_ACTION": "Buka Kembali",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Label",
"REPORTS_INBOX": "Kotak Masuk",
"REPORTS_TEAM": "Tim",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Atur diri anda sebagai",
"SET_YOUR_AVAILABILITY": "Atur ketersediaan Anda",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Beralih ke Balasan",
"TOGGLE_SNOOZE_DROPDOWN": "Buka/Tutup dropdown penundaan"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Prioritas",
"ACTIVE": "Aktif",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Batalkan"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Deskripsi:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Status:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Tambahkan"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Edit"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Batalkan"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Deskripsi:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Tambahkan"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Hapus",
"CANCEL_BUTTON_LABEL": "Batalkan"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Show labels",
"HIDE_LABELS": "Hide labels"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Resolve",
"REOPEN_ACTION": "Reopen",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Labels",
"REPORTS_INBOX": "Innhólf",
"REPORTS_TEAM": "Team",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Set yourself as",
"SET_YOUR_AVAILABILITY": "Set your availability",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Switch to Reply",
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priority",
"ACTIVE": "Active",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Breyta"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Hætta við"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Staða:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Bæta við"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Breyta"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "Hætta við"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Description:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Bæta við"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Eyða",
"CANCEL_BUTTON_LABEL": "Hætta við"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "Show labels",
"HIDE_LABELS": "Hide labels"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "Risolvi",
"REOPEN_ACTION": "Riapri",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "Etichette",
"REPORTS_INBOX": "Posta",
"REPORTS_TEAM": "Team",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "Imposta te stesso come",
"SET_YOUR_AVAILABILITY": "Imposta la tua disponibilità",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "Passa a Risposta",
"TOGGLE_SNOOZE_DROPDOWN": "Attiva/Disattiva sospensione a discesa"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "Priorità",
"ACTIVE": "Attivo",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "Modifica"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "annulla"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Descrizione:",
"PLACEHOLDER": "Enter description"
},
"STATUS": {
"LABEL": "Stato:",
"PLACEHOLDER": "Select status",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "Aggiungi"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "Modifica"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "annulla"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "Descrizione:",
"PLACEHOLDER": "Enter description"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "Aggiungi"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "Elimina",
"CANCEL_BUTTON_LABEL": "annulla"
}
}
}

View File

@@ -71,6 +71,17 @@
"SHOW_LABELS": "ラベルを表示",
"HIDE_LABELS": "ラベルを隠す"
},
"VOICE_CALL": {
"INCOMING_CALL": "Incoming call",
"OUTGOING_CALL": "Outgoing call",
"CALL_IN_PROGRESS": "Call in progress",
"NO_ANSWER": "No answer",
"MISSED_CALL": "Missed call",
"CALL_ENDED": "Call ended",
"NOT_ANSWERED_YET": "Not answered yet",
"THEY_ANSWERED": "They answered",
"YOU_ANSWERED": "You answered"
},
"HEADER": {
"RESOLVE_ACTION": "解決する",
"REOPEN_ACTION": "再開する",

View File

@@ -51,6 +51,13 @@
"LARGER": "Larger",
"EXTRA_LARGE": "Extra Large"
}
},
"LANGUAGE": {
"TITLE": "Preferred Language",
"NOTE": "Choose the language you want to use.",
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
"USE_ACCOUNT_DEFAULT": "Use account default"
}
},
"MESSAGE_SIGNATURE_SECTION": {
@@ -330,6 +337,7 @@
"REPORTS_LABEL": "ラベル",
"REPORTS_INBOX": "受信トレイ",
"REPORTS_TEAM": "チーム",
"AGENT_ASSIGNMENT": "Agent Assignment",
"SET_AVAILABILITY_TITLE": "ステータスを設定",
"SET_YOUR_AVAILABILITY": "利用可能ステータスを設定",
"SLA": "SLA",
@@ -418,5 +426,255 @@
"SWITCH_TO_REPLY": "返信に切り替え",
"TOGGLE_SNOOZE_DROPDOWN": "スヌーズドロップダウンを切り替え"
}
},
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
},
"CARD": {
"ORDER": "Order",
"PRIORITY": "優先度",
"ACTIVE": "有効",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"EDIT": "編集"
},
"NO_RECORDS_FOUND": "No assignment policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "キャンセル"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "説明:",
"PLACEHOLDER": "説明を入力"
},
"STATUS": {
"LABEL": "ステータス:",
"PLACEHOLDER": "状況を選択",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity."
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"ADD_BUTTON": "追加"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
},
"CARD": {
"POPOVER": "Added agents",
"EDIT": "編集"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
},
"CREATE_BUTTON": "Create policy",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
},
"EDIT_BUTTON": "Update policy",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"CANCEL_BUTTON_LABEL": "キャンセル"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
},
"DESCRIPTION": {
"LABEL": "説明:",
"PLACEHOLDER": "説明を入力"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
},
"EMPTY_STATE": "No inbox limit set"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"ADD_TAG": "add tag",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
},
"EMPTY_STATE": "No tags added to this policy."
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"ADD_BUTTON": "追加"
},
"EMPTY_STATE": "No agents added",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"CONFIRM_BUTTON_LABEL": "削除",
"CANCEL_BUTTON_LABEL": "キャンセル"
}
}
}

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