diff --git a/.codeclimate.yml b/.codeclimate.yml index 6365ca706..bc58a4029 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -30,3 +30,6 @@ exclude_patterns: - "**/*.md" - "**/*.yml" - "app/javascript/dashboard/i18n/locale" + - "stories/**/*" + - "**/*.stories.js" + - "**/stories/" diff --git a/.prettierrc b/.prettierrc index 11d9d42b2..366415e24 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { "printWidth": 80, "singleQuote": true, - "trailingComma": "es5" + "trailingComma": "es5", + "arrowParens": "avoid" } diff --git a/.rubocop.yml b/.rubocop.yml index 0fca6f54b..668951de2 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -101,6 +101,7 @@ Rails/BulkChangeTable: - 'db/migrate/20170511134418_latlong.rb' - 'db/migrate/20191027054756_create_contact_inboxes.rb' - 'db/migrate/20191130164019_add_template_type_to_messages.rb' + - 'db/migrate/20210425093724_convert_integration_hook_settings_field.rb' Rails/UniqueValidationWithoutIndex: Exclude: - 'app/models/channel/twitter_profile.rb' diff --git a/.storybook/main.js b/.storybook/main.js new file mode 100644 index 000000000..b749e262d --- /dev/null +++ b/.storybook/main.js @@ -0,0 +1,44 @@ +const path = require('path'); +const resolve = require('../config/webpack/resolve'); + +// Chatwoot's webpack.config.js +process.env.NODE_ENV = 'development'; +const custom = require('../config/webpack/environment'); + +module.exports = { + stories: [ + '../stories/**/*.stories.mdx', + '../app/javascript/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: [ + { + name: '@storybook/addon-docs', + options: { + vueDocgenOptions: { + alias: { + '@': path.resolve(__dirname, '../'), + }, + }, + }, + }, + '@storybook/addon-links', + '@storybook/addon-essentials', + ], + webpackFinal: config => { + const newConfig = { + ...config, + resolve: { + ...config.resolve, + modules: custom.resolvedModules.map(i => i.value), + }, + }; + + newConfig.module.rules.push({ + test: /\.scss$/, + use: ['style-loader', 'css-loader', 'sass-loader'], + include: path.resolve(__dirname, '../app/javascript'), + }); + + return newConfig; + }, +}; diff --git a/.storybook/preview.js b/.storybook/preview.js new file mode 100644 index 000000000..40a2ce3ea --- /dev/null +++ b/.storybook/preview.js @@ -0,0 +1,38 @@ +import { addDecorator } from '@storybook/vue'; +import Vue from 'vue'; +import Vuex from 'vuex'; +import VueI18n from 'vue-i18n'; + +import WootUiKit from '../app/javascript/dashboard/components'; +import i18n from '../app/javascript/dashboard/i18n'; + +import '../app/javascript/dashboard/assets/scss/storybook.scss'; + +Vue.use(VueI18n); +Vue.use(WootUiKit); +Vue.use(Vuex); + +const store = new Vuex.Store({}); +const i18nConfig = new VueI18n({ + locale: 'en', + messages: i18n, +}); + +addDecorator(() => ({ + template: '', + i18n: i18nConfig, + store, + beforeCreate: function() { + this.$root._i18n = this.$i18n; + }, +})); + +export const parameters = { + actions: { argTypesRegex: '^on[A-Z].*' }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, +}; diff --git a/Gemfile b/Gemfile index d1c6c6534..4e430a7c8 100644 --- a/Gemfile +++ b/Gemfile @@ -31,6 +31,8 @@ gem 'haikunator' gem 'liquid' # Parse Markdown to HTML gem 'commonmarker' +# Validate Data against JSON Schema +gem 'json_schemer' ##-- for active storage --## gem 'aws-sdk-s3', require: false @@ -80,6 +82,8 @@ gem 'twitty' gem 'koala' # slack client gem 'slack-ruby-client' +# for dialogflow integrations +gem 'google-cloud-dialogflow' ##--- gems for debugging and error reporting ---## # static analysis @@ -105,6 +109,8 @@ gem 'maxminddb' # to create db triggers gem 'hairtrigger' +gem 'procore-sift' + group :development do gem 'annotate' gem 'bullet' @@ -112,7 +118,7 @@ group :development do gem 'web-console' # used in swagger build - gem 'json_refs', git: 'https://github.com/tzmfreedom/json_refs', ref: 'e32deb0' + gem 'json_refs', git: 'https://github.com/tzmfreedom/json_refs', ref: '131b11294fd6af9c428171f38516e6222a58c874' # When we want to squash migrations gem 'squasher' diff --git a/Gemfile.lock b/Gemfile.lock index e4a43ad6e..e3061c705 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,10 +7,10 @@ GIT GIT remote: https://github.com/tzmfreedom/json_refs - revision: e32deb073ce9aef39bdd63556bffd7fe7c2a803d - ref: e32deb0 + revision: 131b11294fd6af9c428171f38516e6222a58c874 + ref: 131b11294fd6af9c428171f38516e6222a58c874 specs: - json_refs (0.1.2) + json_refs (0.1.6) hana GEM @@ -18,58 +18,58 @@ GEM specs: action-cable-testing (0.6.1) actioncable (>= 5.0) - actioncable (6.0.3.6) - actionpack (= 6.0.3.6) + actioncable (6.0.3.7) + actionpack (= 6.0.3.7) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.0.3.6) - actionpack (= 6.0.3.6) - activejob (= 6.0.3.6) - activerecord (= 6.0.3.6) - activestorage (= 6.0.3.6) - activesupport (= 6.0.3.6) + actionmailbox (6.0.3.7) + actionpack (= 6.0.3.7) + activejob (= 6.0.3.7) + activerecord (= 6.0.3.7) + activestorage (= 6.0.3.7) + activesupport (= 6.0.3.7) mail (>= 2.7.1) - actionmailer (6.0.3.6) - actionpack (= 6.0.3.6) - actionview (= 6.0.3.6) - activejob (= 6.0.3.6) + actionmailer (6.0.3.7) + actionpack (= 6.0.3.7) + actionview (= 6.0.3.7) + activejob (= 6.0.3.7) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.0.3.6) - actionview (= 6.0.3.6) - activesupport (= 6.0.3.6) + actionpack (6.0.3.7) + actionview (= 6.0.3.7) + activesupport (= 6.0.3.7) rack (~> 2.0, >= 2.0.8) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.0.3.6) - actionpack (= 6.0.3.6) - activerecord (= 6.0.3.6) - activestorage (= 6.0.3.6) - activesupport (= 6.0.3.6) + actiontext (6.0.3.7) + actionpack (= 6.0.3.7) + activerecord (= 6.0.3.7) + activestorage (= 6.0.3.7) + activesupport (= 6.0.3.7) nokogiri (>= 1.8.5) - actionview (6.0.3.6) - activesupport (= 6.0.3.6) + actionview (6.0.3.7) + activesupport (= 6.0.3.7) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.1, >= 1.2.0) - activejob (6.0.3.6) - activesupport (= 6.0.3.6) + activejob (6.0.3.7) + activesupport (= 6.0.3.7) globalid (>= 0.3.6) - activemodel (6.0.3.6) - activesupport (= 6.0.3.6) - activerecord (6.0.3.6) - activemodel (= 6.0.3.6) - activesupport (= 6.0.3.6) + activemodel (6.0.3.7) + activesupport (= 6.0.3.7) + activerecord (6.0.3.7) + activemodel (= 6.0.3.7) + activesupport (= 6.0.3.7) activerecord-import (1.0.7) activerecord (>= 3.2) - activestorage (6.0.3.6) - actionpack (= 6.0.3.6) - activejob (= 6.0.3.6) - activerecord (= 6.0.3.6) + activestorage (6.0.3.7) + actionpack (= 6.0.3.7) + activejob (= 6.0.3.7) + activerecord (= 6.0.3.7) marcel (~> 1.0.0) - activesupport (6.0.3.6) + activesupport (6.0.3.7) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) minitest (~> 5.1) @@ -79,11 +79,10 @@ GEM activerecord (>= 5.0, < 6.1) addressable (2.7.0) public_suffix (>= 2.0.2, < 5.0) - administrate (0.14.0) - actionpack (>= 4.2) - actionview (>= 4.2) - activerecord (>= 4.2) - autoprefixer-rails (>= 6.0) + administrate (0.16.0) + actionpack (>= 5.0) + actionview (>= 5.0) + activerecord (>= 5.0) datetime_picker_rails (~> 0.0.7) jquery-rails (>= 4.0) kaminari (>= 1.0) @@ -95,8 +94,6 @@ GEM rake (>= 10.4, < 14.0) ast (2.4.1) attr_extras (6.2.4) - autoprefixer-rails (9.8.6.3) - execjs aws-eventstream (1.1.0) aws-partitions (1.360.0) aws-sdk-core (3.105.0) @@ -184,6 +181,8 @@ GEM dotenv-rails (2.7.6) dotenv (= 2.7.6) railties (>= 3.2) + ecma-re-validator (0.2.1) + regexp_parser (~> 1.2) equalizer (0.0.11) erubi (1.10.0) et-orbi (1.2.4) @@ -205,12 +204,18 @@ GEM faraday (~> 1.0) fcm (1.0.2) faraday (~> 1.0.0) - ffi (1.14.2) + ffi (1.15.0) flag_shih_tzu (0.3.23) foreman (0.87.2) fugit (1.4.1) et-orbi (~> 1.1, >= 1.1.8) raabro (~> 1.4) + gapic-common (0.3.4) + google-protobuf (~> 3.12, >= 3.12.2) + googleapis-common-protos (>= 1.3.9, < 2.0) + googleapis-common-protos-types (>= 1.0.4, < 2.0) + googleauth (~> 0.9) + grpc (~> 1.25) geocoder (1.6.3) gli (2.19.2) globalid (0.4.2) @@ -223,12 +228,18 @@ GEM representable (~> 3.0) retriable (>= 2.0, < 4.0) signet (~> 0.12) - google-cloud-core (1.5.0) + google-cloud-core (1.6.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) - google-cloud-env (1.3.3) + google-cloud-dialogflow (1.2.0) + google-cloud-core (~> 1.5) + google-cloud-dialogflow-v2 (~> 0.1) + google-cloud-dialogflow-v2 (0.6.4) + gapic-common (~> 0.3) + google-cloud-errors (~> 1.0) + google-cloud-env (1.5.0) faraday (>= 0.17.3, < 2.0) - google-cloud-errors (1.0.1) + google-cloud-errors (1.1.0) google-cloud-storage (1.28.0) addressable (~> 2.5) digest-crc (~> 0.4) @@ -236,7 +247,14 @@ GEM google-cloud-core (~> 1.2) googleauth (~> 0.9) mini_mime (~> 1.0) - googleauth (0.13.1) + google-protobuf (3.15.8) + googleapis-common-protos (1.3.11) + google-protobuf (~> 3.14) + googleapis-common-protos-types (>= 1.0.6, < 2.0) + grpc (~> 1.27) + googleapis-common-protos-types (1.0.6) + google-protobuf (~> 3.14) + googleauth (0.16.2) faraday (>= 0.17.3, < 2.0) jwt (>= 1.4, < 3.0) memoist (~> 0.16) @@ -245,12 +263,15 @@ GEM signet (~> 0.14) groupdate (5.1.0) activesupport (>= 5) + grpc (1.37.1) + google-protobuf (~> 3.15) + googleapis-common-protos-types (~> 1.0) haikunator (1.1.0) hairtrigger (0.2.23) activerecord (>= 5.0, < 7) ruby2ruby (~> 2.4) ruby_parser (~> 3.10) - hana (1.3.6) + hana (1.3.7) hashdiff (1.0.1) hashie (4.1.0) hkdf (0.3.0) @@ -261,7 +282,7 @@ GEM mime-types (~> 3.0) multi_xml (>= 0.5.2) httpclient (2.8.3) - i18n (1.8.9) + i18n (1.8.10) concurrent-ruby (~> 1.0) ice_nine (0.11.2) inflecto (0.0.2) @@ -273,7 +294,12 @@ GEM railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (2.3.1) - jwt (2.2.2) + json_schemer (0.2.16) + ecma-re-validator (~> 0.2) + hana (~> 1.3) + regexp_parser (~> 1.5) + uri_template (~> 0.7) + jwt (2.2.3) kaminari (1.2.1) activesupport (>= 4.1.0) kaminari-actionview (= 1.2.1) @@ -298,12 +324,12 @@ GEM listen (3.3.3) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - loofah (2.9.0) + loofah (2.9.1) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.1) mini_mime (>= 0.1.1) - marcel (1.0.0) + marcel (1.0.1) maxminddb (0.1.22) memoist (0.16.2) method_source (1.0.0) @@ -311,8 +337,8 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2020.0512) mini_magick (4.10.1) - mini_mime (1.0.3) - mini_portile2 (2.5.0) + mini_mime (1.1.0) + mini_portile2 (2.5.1) minitest (5.14.4) momentjs-rails (2.20.1) railties (>= 3.1) @@ -324,22 +350,24 @@ GEM connection_pool (~> 2.2) netrc (0.11.0) nio4r (2.5.7) - nokogiri (1.11.2) + nokogiri (1.11.3) mini_portile2 (~> 2.5.0) racc (~> 1.4) - oauth (0.5.4) + oauth (0.5.6) orm_adapter (0.5.0) os (1.1.1) parallel (1.19.2) parser (2.7.1.4) ast (~> 2.4.1) pg (1.2.3) + procore-sift (0.15.0) + rails (> 4.2.0) pry (0.13.1) coderay (~> 1.1) method_source (~> 1.0) pry-rails (0.3.9) pry (>= 0.10.4) - public_suffix (4.0.5) + public_suffix (4.0.6) puma (4.3.6) nio4r (~> 2.0) pundit (2.1.0) @@ -355,29 +383,29 @@ GEM rack rack-test (1.1.0) rack (>= 1.0, < 3) - rails (6.0.3.6) - actioncable (= 6.0.3.6) - actionmailbox (= 6.0.3.6) - actionmailer (= 6.0.3.6) - actionpack (= 6.0.3.6) - actiontext (= 6.0.3.6) - actionview (= 6.0.3.6) - activejob (= 6.0.3.6) - activemodel (= 6.0.3.6) - activerecord (= 6.0.3.6) - activestorage (= 6.0.3.6) - activesupport (= 6.0.3.6) + rails (6.0.3.7) + actioncable (= 6.0.3.7) + actionmailbox (= 6.0.3.7) + actionmailer (= 6.0.3.7) + actionpack (= 6.0.3.7) + actiontext (= 6.0.3.7) + actionview (= 6.0.3.7) + activejob (= 6.0.3.7) + activemodel (= 6.0.3.7) + activerecord (= 6.0.3.7) + activestorage (= 6.0.3.7) + activesupport (= 6.0.3.7) bundler (>= 1.3.0) - railties (= 6.0.3.6) + railties (= 6.0.3.7) sprockets-rails (>= 2.0.0) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) rails-html-sanitizer (1.3.0) loofah (~> 2.3) - railties (6.0.3.6) - actionpack (= 6.0.3.6) - activesupport (= 6.0.3.6) + railties (6.0.3.7) + actionpack (= 6.0.3.7) + activesupport (= 6.0.3.7) method_source rake (>= 0.8.7) thor (>= 0.20.3, < 2.0) @@ -408,7 +436,7 @@ GEM mime-types (>= 1.16, < 4.0) netrc (~> 0.8) retriable (3.1.2) - rexml (3.2.4) + rexml (3.2.5) rspec-core (3.9.2) rspec-support (~> 3.9.3) rspec-expectations (3.9.2) @@ -489,7 +517,7 @@ GEM sidekiq-cron (1.2.0) fugit (~> 1.1) sidekiq (>= 4.2.1) - signet (0.14.0) + signet (0.15.0) addressable (~> 2.3) faraday (>= 0.17.3, < 2.0) jwt (>= 1.5, < 3.0) @@ -547,6 +575,7 @@ GEM unf_ext (0.0.7.7) unicode-display_width (1.7.0) uniform_notifier (1.13.0) + uri_template (0.7.0) valid_email2 (3.3.1) activemodel (>= 3.2) mail (~> 2.5) @@ -612,6 +641,7 @@ DEPENDENCIES flag_shih_tzu foreman geocoder + google-cloud-dialogflow google-cloud-storage groupdate haikunator @@ -619,6 +649,7 @@ DEPENDENCIES hashie jbuilder json_refs! + json_schemer jwt kaminari koala @@ -629,6 +660,7 @@ DEPENDENCIES mini_magick mock_redis! pg + procore-sift pry-rails puma pundit diff --git a/app/builders/campaigns/campaign_conversation_builder.rb b/app/builders/campaigns/campaign_conversation_builder.rb new file mode 100644 index 000000000..48a3cebd4 --- /dev/null +++ b/app/builders/campaigns/campaign_conversation_builder.rb @@ -0,0 +1,38 @@ +class Campaigns::CampaignConversationBuilder + pattr_initialize [:contact_inbox_id!, :campaign_display_id!, :conversation_additional_attributes] + + def perform + @contact_inbox = ContactInbox.find(@contact_inbox_id) + @campaign = @contact_inbox.inbox.campaigns.find_by!(display_id: campaign_display_id) + + ActiveRecord::Base.transaction do + @contact_inbox.lock! + + # We won't send campaigns if a conversation is already present + return if @contact_inbox.reload.conversations.present? + + @conversation = ::Conversation.create!(conversation_params) + Messages::MessageBuilder.new(@campaign.sender, @conversation, message_params).perform + end + @conversation + end + + private + + def message_params + ActionController::Parameters.new({ + content: @campaign.message + }) + end + + def conversation_params + { + account_id: @campaign.account_id, + inbox_id: @contact_inbox.inbox_id, + contact_id: @contact_inbox.contact_id, + contact_inbox_id: @contact_inbox.id, + campaign_id: @campaign.id, + additional_attributes: conversation_additional_attributes + } + end +end diff --git a/app/controllers/api/v1/accounts/campaigns_controller.rb b/app/controllers/api/v1/accounts/campaigns_controller.rb new file mode 100644 index 000000000..c4555017d --- /dev/null +++ b/app/controllers/api/v1/accounts/campaigns_controller.rb @@ -0,0 +1,28 @@ +class Api::V1::Accounts::CampaignsController < Api::V1::Accounts::BaseController + before_action :campaign, except: [:index, :create] + before_action :check_authorization + + def index + @campaigns = Current.account.campaigns + end + + def create + @campaign = Current.account.campaigns.create!(campaign_params) + end + + def show; end + + def update + @campaign.update(campaign_params) + end + + private + + def campaign + @campaign ||= Current.account.campaigns.find_by(display_id: params[:id]) + end + + def campaign_params + params.require(:campaign).permit(:title, :description, :message, :enabled, :inbox_id, :sender_id, trigger_rules: {}) + end +end diff --git a/app/controllers/api/v1/accounts/contacts_controller.rb b/app/controllers/api/v1/accounts/contacts_controller.rb index 375eb9313..ac27314fc 100644 --- a/app/controllers/api/v1/accounts/contacts_controller.rb +++ b/app/controllers/api/v1/accounts/contacts_controller.rb @@ -1,4 +1,11 @@ class Api::V1::Accounts::ContactsController < Api::V1::Accounts::BaseController + include Sift + + sort_on :email, type: :string + sort_on :name, type: :string + sort_on :phone_number, type: :string + sort_on :last_activity_at, type: :datetime + RESULTS_PER_PAGE = 15 protect_from_forgery with: :null_session @@ -68,7 +75,6 @@ class Api::V1::Accounts::ContactsController < Api::V1::Accounts::BaseController @resolved_contacts ||= Current.account.contacts .where.not(email: [nil, '']) .or(Current.account.contacts.where.not(phone_number: [nil, ''])) - .order('LOWER(name)') end def set_current_page @@ -76,11 +82,11 @@ class Api::V1::Accounts::ContactsController < Api::V1::Accounts::BaseController end def fetch_contact_last_seen_at(contacts) - contacts.left_outer_joins(:conversations) - .select('contacts.*, COUNT(conversations.id) as conversations_count, MAX(conversations.contact_last_seen_at) as last_seen_at') - .group('contacts.id') - .includes([{ avatar_attachment: [:blob] }, { contact_inboxes: [:inbox] }]) - .page(@current_page).per(RESULTS_PER_PAGE) + filtrate(contacts).left_outer_joins(:conversations) + .select('contacts.*, COUNT(conversations.id) as conversations_count') + .group('contacts.id') + .includes([{ avatar_attachment: [:blob] }, { contact_inboxes: [:inbox] }]) + .page(@current_page).per(RESULTS_PER_PAGE) end def build_contact_inbox diff --git a/app/controllers/api/v1/accounts/inboxes_controller.rb b/app/controllers/api/v1/accounts/inboxes_controller.rb index c8d01a1c7..014e213d4 100644 --- a/app/controllers/api/v1/accounts/inboxes_controller.rb +++ b/app/controllers/api/v1/accounts/inboxes_controller.rb @@ -11,6 +11,10 @@ class Api::V1::Accounts::InboxesController < Api::V1::Accounts::BaseController @assignable_agents = (Current.account.users.where(id: @inbox.members.select(:user_id)) + Current.account.administrators).uniq end + def campaigns + @campaigns = @inbox.campaigns + end + def create ActiveRecord::Base.transaction do channel = create_channel diff --git a/app/controllers/api/v1/accounts/integrations/hooks_controller.rb b/app/controllers/api/v1/accounts/integrations/hooks_controller.rb new file mode 100644 index 000000000..18a16a30d --- /dev/null +++ b/app/controllers/api/v1/accounts/integrations/hooks_controller.rb @@ -0,0 +1,31 @@ +class Api::V1::Accounts::Integrations::HooksController < Api::V1::Accounts::BaseController + before_action :fetch_hook, only: [:update, :destroy] + before_action :check_authorization + + def create + @hook = Current.account.hooks.create!(permitted_params) + end + + def update + @hook.update!(permitted_params.slice(:status, :settings)) + end + + def destroy + @hook.destroy + head :ok + end + + private + + def fetch_hook + @hook = Current.account.hooks.find(params[:id]) + end + + def check_authorization + authorize(:hook) + end + + def permitted_params + params.require(:hook).permit(:app_id, :inbox_id, :status, settings: {}) + end +end diff --git a/app/controllers/api/v1/widget/campaigns_controller.rb b/app/controllers/api/v1/widget/campaigns_controller.rb new file mode 100644 index 000000000..fc26b18c8 --- /dev/null +++ b/app/controllers/api/v1/widget/campaigns_controller.rb @@ -0,0 +1,13 @@ +class Api::V1::Widget::CampaignsController < Api::V1::Widget::BaseController + skip_before_action :set_contact + + def index + @campaigns = @web_widget.inbox.campaigns.where(enabled: true) + end + + private + + def permitted_params + params.permit(:website_token) + end +end diff --git a/app/controllers/api/v1/widget/events_controller.rb b/app/controllers/api/v1/widget/events_controller.rb index 374541a10..2cf17c964 100644 --- a/app/controllers/api/v1/widget/events_controller.rb +++ b/app/controllers/api/v1/widget/events_controller.rb @@ -2,7 +2,8 @@ class Api::V1::Widget::EventsController < Api::V1::Widget::BaseController include Events::Types def create - Rails.configuration.dispatcher.dispatch(permitted_params[:name], Time.zone.now, contact_inbox: @contact_inbox, event_info: event_info) + Rails.configuration.dispatcher.dispatch(permitted_params[:name], Time.zone.now, contact_inbox: @contact_inbox, + event_info: permitted_params[:event_info].to_h.merge(event_info)) head :no_content end @@ -17,6 +18,6 @@ class Api::V1::Widget::EventsController < Api::V1::Widget::BaseController end def permitted_params - params.permit(:name, :website_token) + params.permit(:name, :website_token, event_info: {}) end end diff --git a/app/dispatchers/async_dispatcher.rb b/app/dispatchers/async_dispatcher.rb index e5fbdd7f7..0e238e3a0 100644 --- a/app/dispatchers/async_dispatcher.rb +++ b/app/dispatchers/async_dispatcher.rb @@ -12,7 +12,8 @@ class AsyncDispatcher < BaseDispatcher [ EventListener.instance, WebhookListener.instance, - InstallationWebhookListener.instance, HookListener.instance + InstallationWebhookListener.instance, HookListener.instance, + CampaignListener.instance ] end end diff --git a/app/javascript/dashboard/api/campaigns.js b/app/javascript/dashboard/api/campaigns.js new file mode 100644 index 000000000..1c73a3360 --- /dev/null +++ b/app/javascript/dashboard/api/campaigns.js @@ -0,0 +1,9 @@ +import ApiClient from './ApiClient'; + +class CampaignsAPI extends ApiClient { + constructor() { + super('campaigns', { accountScoped: true }); + } +} + +export default new CampaignsAPI(); diff --git a/app/javascript/dashboard/api/contacts.js b/app/javascript/dashboard/api/contacts.js index 5dd0bcc57..1a66db0e1 100644 --- a/app/javascript/dashboard/api/contacts.js +++ b/app/javascript/dashboard/api/contacts.js @@ -6,8 +6,8 @@ class ContactAPI extends ApiClient { super('contacts', { accountScoped: true }); } - get(page) { - return axios.get(`${this.url}?page=${page}`); + get(page, sortAttr = 'name') { + return axios.get(`${this.url}?page=${page}&sort=${sortAttr}`); } getConversations(contactId) { @@ -18,8 +18,10 @@ class ContactAPI extends ApiClient { return axios.get(`${this.url}/${contactId}/contactable_inboxes`); } - search(search = '', page = 1) { - return axios.get(`${this.url}/search?q=${search}&page=${page}`); + search(search = '', page = 1, sortAttr = 'name') { + return axios.get( + `${this.url}/search?q=${search}&page=${page}&sort=${sortAttr}` + ); } } diff --git a/app/javascript/dashboard/api/inboxes.js b/app/javascript/dashboard/api/inboxes.js index b5cea1d01..b6d8ab860 100644 --- a/app/javascript/dashboard/api/inboxes.js +++ b/app/javascript/dashboard/api/inboxes.js @@ -1,9 +1,18 @@ +/* global axios */ import ApiClient from './ApiClient'; class Inboxes extends ApiClient { constructor() { super('inboxes', { accountScoped: true }); } + + getAssignableAgents(inboxId) { + return axios.get(`${this.url}/${inboxId}/assignable_agents`); + } + + getCampaigns(inboxId) { + return axios.get(`${this.url}/${inboxId}/campaigns`); + } } export default new Inboxes(); diff --git a/app/javascript/dashboard/api/specs/campaign.spec.js b/app/javascript/dashboard/api/specs/campaign.spec.js new file mode 100644 index 000000000..b94b6da5d --- /dev/null +++ b/app/javascript/dashboard/api/specs/campaign.spec.js @@ -0,0 +1,13 @@ +import campaigns from '../campaigns'; +import ApiClient from '../ApiClient'; + +describe('#CampaignAPI', () => { + it('creates correct instance', () => { + expect(campaigns).toBeInstanceOf(ApiClient); + expect(campaigns).toHaveProperty('get'); + expect(campaigns).toHaveProperty('show'); + expect(campaigns).toHaveProperty('create'); + expect(campaigns).toHaveProperty('update'); + expect(campaigns).toHaveProperty('delete'); + }); +}); diff --git a/app/javascript/dashboard/assets/scss/_foundation-custom.scss b/app/javascript/dashboard/assets/scss/_foundation-custom.scss index d93c60aa4..9c398e078 100644 --- a/app/javascript/dashboard/assets/scss/_foundation-custom.scss +++ b/app/javascript/dashboard/assets/scss/_foundation-custom.scss @@ -15,10 +15,6 @@ } } -.label { - font-weight: $font-weight-bold; -} - .tooltip { border-radius: $space-smaller; font-size: $font-size-mini; diff --git a/app/javascript/dashboard/assets/scss/_foundation-settings.scss b/app/javascript/dashboard/assets/scss/_foundation-settings.scss index 8d6e63df9..dbdb630c0 100644 --- a/app/javascript/dashboard/assets/scss/_foundation-settings.scss +++ b/app/javascript/dashboard/assets/scss/_foundation-settings.scss @@ -358,7 +358,7 @@ $form-label-font-weight: $font-weight-medium; $form-label-line-height: 1.8; $select-background: $white; $select-triangle-color: $dark-gray; -$select-radius: $global-radius; +$select-radius: var(--border-radius-normal); $input-color: $header-color; $input-placeholder-color: $light-gray; $input-font-family: inherit; @@ -374,19 +374,19 @@ $input-shadow-focus: 0; $input-cursor-disabled: not-allowed; $input-transition: border-color 0.25s ease-in-out; $input-number-spinners: true; -$input-radius: $global-radius; -$form-button-radius: $global-radius; +$input-radius: var(--border-radius-normal); +$form-button-radius: var(--border-radius-normal); // 20. Label // --------- -$label-background: lighten($primary-color, 40%); -$label-color: $primary-color; +$label-background: $primary-color; +$label-color: $white; $label-color-alt: $black; $label-palette: $foundation-palette; -$label-font-size: $font-size-micro; +$label-font-size: $font-size-mini; $label-padding: $space-smaller $space-small; -$label-radius: $space-micro; +$label-radius: var(--border-radius-small); // 21. Media Object // ---------------- diff --git a/app/javascript/dashboard/assets/scss/_helper-classes.scss b/app/javascript/dashboard/assets/scss/_helper-classes.scss index a1bfa1462..416ec0185 100644 --- a/app/javascript/dashboard/assets/scss/_helper-classes.scss +++ b/app/javascript/dashboard/assets/scss/_helper-classes.scss @@ -51,25 +51,6 @@ } } - -input, -textarea, -select { - border-radius: var(--space-smaller) !important; -} - -.input-group { - .input-group-label:first-child { - border-bottom-left-radius: var(--space-smaller); - border-top-left-radius: var(--space-smaller); - } - - .input-group-field { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important; - } -} - .justify-space-between { justify-content: space-between; } diff --git a/app/javascript/dashboard/assets/scss/_mixins.scss b/app/javascript/dashboard/assets/scss/_mixins.scss index a20a32ffe..41ba95276 100644 --- a/app/javascript/dashboard/assets/scss/_mixins.scss +++ b/app/javascript/dashboard/assets/scss/_mixins.scss @@ -236,3 +236,11 @@ $spinner-before-border-color: rgba(255, 255, 255, 0.7); text-overflow: ellipsis; white-space: nowrap; } + +@mixin three-column-grid($column-one-width: 25.6rem, + $column-three-width: 25.6rem) { + width: 100%; + height: 100%; + display: grid; + grid-template-columns: minmax($column-one-width, 6fr) 10fr minmax($column-three-width, 6fr); +} diff --git a/app/javascript/dashboard/assets/scss/storybook.scss b/app/javascript/dashboard/assets/scss/storybook.scss new file mode 100644 index 000000000..fbe88bc3f --- /dev/null +++ b/app/javascript/dashboard/assets/scss/storybook.scss @@ -0,0 +1,27 @@ +@import 'shared/assets/fonts/inter'; +@import 'shared/assets/stylesheets/colors'; +@import 'shared/assets/stylesheets/spacing'; +@import 'shared/assets/stylesheets/font-size'; +@import 'shared/assets/stylesheets/font-weights'; +@import 'shared/assets/stylesheets/shadows'; +@import 'shared/assets/stylesheets/border-radius'; +@import 'variables'; + +@import '~spinkit/scss/spinners/7-three-bounce'; +@import '~shared/assets/stylesheets/ionicons'; + +@import 'mixins'; +@import 'foundation-settings'; +@import 'helper-classes'; +@import 'foundation-sites/scss/foundation'; +@import '~bourbon/core/bourbon'; + +@include foundation-everything($flex: true); + +@import 'typography'; +@import 'layout'; +@import 'animations'; + +@import 'foundation-custom'; +@import 'widgets/buttons'; +@import 'widgets/forms'; diff --git a/app/javascript/dashboard/assets/scss/widgets/_conv-header.scss b/app/javascript/dashboard/assets/scss/widgets/_conv-header.scss index ce29e226e..1c081c089 100644 --- a/app/javascript/dashboard/assets/scss/widgets/_conv-header.scss +++ b/app/javascript/dashboard/assets/scss/widgets/_conv-header.scss @@ -39,20 +39,25 @@ $resolve-button-width: 13.2rem; .user { @include flex; @include flex-align($x: center, $y: middle); + margin-right: var(--space-normal); + min-width: 0; .user--name { @include margin(0); + display: inline-block; font-size: $font-size-medium; line-height: 1.3; text-transform: capitalize; + width: 100%; } .user--profile__meta { align-items: flex-start; display: flex; flex-direction: column; - justify-content: center; + justify-content: flex-start; margin-left: $space-slab; + min-width: 0; } .user--profile__button { diff --git a/app/javascript/dashboard/assets/scss/widgets/_conversation-view.scss b/app/javascript/dashboard/assets/scss/widgets/_conversation-view.scss index 56f75ab76..bc3e20254 100644 --- a/app/javascript/dashboard/assets/scss/widgets/_conversation-view.scss +++ b/app/javascript/dashboard/assets/scss/widgets/_conversation-view.scss @@ -132,7 +132,6 @@ .bubble { @include bubble-with-types; - max-width: 50rem; text-align: left; word-wrap: break-word; @@ -236,7 +235,9 @@ .wrap { @include margin($zero $space-normal); - max-width: 69%; + + --bubble-max-width: 49.6rem; + max-width: Min(var(--bubble-max-width), 85%); .sender--name { font-size: $font-size-mini; diff --git a/app/javascript/dashboard/assets/scss/widgets/_forms.scss b/app/javascript/dashboard/assets/scss/widgets/_forms.scss index 231f4c535..17a7acaa8 100644 --- a/app/javascript/dashboard/assets/scss/widgets/_forms.scss +++ b/app/javascript/dashboard/assets/scss/widgets/_forms.scss @@ -1,7 +1,8 @@ .error { + #{$all-text-inputs}, select, - .multiselect > .multiselect__tags { + .multiselect>.multiselect__tags { @include thin-border(var(--r-400)); } @@ -33,3 +34,10 @@ input { .help-text { font-weight: $font-weight-normal; } + +.input-group.small { + input { + font-size: var(--font-size-small); + height: var(--space-large); + } +} diff --git a/app/javascript/dashboard/components/ChatList.vue b/app/javascript/dashboard/components/ChatList.vue index 392b0a7a4..3b7fe0b8c 100644 --- a/app/javascript/dashboard/components/ChatList.vue +++ b/app/javascript/dashboard/components/ChatList.vue @@ -116,7 +116,7 @@ export default { return this.$store.getters['inboxes/getInbox'](this.activeInbox); }, currentPage() { - return this.$store.getters['conversationPage/getCurrentPage']( + return this.$store.getters['conversationPage/getCurrentPageFilter']( this.activeAssigneeTab ); }, @@ -199,6 +199,7 @@ export default { }, updateAssigneeTab(selectedTab) { if (this.activeAssigneeTab !== selectedTab) { + bus.$emit('clearSearchInput'); this.activeAssigneeTab = selectedTab; if (!this.currentPage) { this.fetchConversations(); diff --git a/app/javascript/dashboard/components/index.js b/app/javascript/dashboard/components/index.js index 239fbd809..cc2a70a2c 100644 --- a/app/javascript/dashboard/components/index.js +++ b/app/javascript/dashboard/components/index.js @@ -6,8 +6,10 @@ import Button from './ui/WootButton'; import Code from './Code'; import ColorPicker from './widgets/ColorPicker'; import DeleteModal from './widgets/modal/DeleteModal.vue'; +import DropdownItem from 'shared/components/ui/dropdown/DropdownItem'; +import DropdownMenu from 'shared/components/ui/dropdown/DropdownMenu'; import Input from './widgets/forms/Input.vue'; -import Label from './widgets/Label.vue'; +import Label from './ui/Label'; import LoadingState from './widgets/LoadingState'; import Modal from './Modal'; import ModalHeader from './ModalHeader'; @@ -26,6 +28,8 @@ const WootUIKit = { Code, ColorPicker, DeleteModal, + DropdownItem, + DropdownMenu, Input, LoadingState, Label, diff --git a/app/javascript/dashboard/components/layout/AvailabilityStatus.vue b/app/javascript/dashboard/components/layout/AvailabilityStatus.vue index 0be471a46..72488b82e 100644 --- a/app/javascript/dashboard/components/layout/AvailabilityStatus.vue +++ b/app/javascript/dashboard/components/layout/AvailabilityStatus.vue @@ -1,10 +1,7 @@ @@ -48,6 +51,7 @@ import { mapGetters } from 'vuex'; import { mixin as clickaway } from 'vue-clickaway'; import WootDropdownItem from 'shared/components/ui/dropdown/DropdownItem.vue'; import WootDropdownMenu from 'shared/components/ui/dropdown/DropdownMenu.vue'; +import AvailabilityStatusBadge from '../widgets/conversation/AvailabilityStatusBadge'; const AVAILABILITY_STATUS_KEYS = ['online', 'busy', 'offline']; @@ -55,6 +59,7 @@ export default { components: { WootDropdownMenu, WootDropdownItem, + AvailabilityStatusBadge, }, mixins: [clickaway], @@ -147,26 +152,6 @@ export default { } } -.status-badge { - width: var(--space-one); - height: var(--space-one); - margin-right: var(--space-micro); - display: inline-block; - border-radius: 50%; - - &__online { - background: var(--g-400); - } - - &__offline { - background: var(--b-600); - } - - &__busy { - background: var(--y-700); - } -} - .status-change { .dropdown-pane { top: -132px; @@ -177,15 +162,5 @@ export default { display: flex; align-items: baseline; } - & &--change-button { - color: var(--b-600); - font-size: var(--font-size-small); - cursor: pointer; - outline: none; - - &:hover { - color: var(--w-600); - } - } } diff --git a/app/javascript/dashboard/components/layout/Sidebar.vue b/app/javascript/dashboard/components/layout/Sidebar.vue index 509c34696..79bef628a 100644 --- a/app/javascript/dashboard/components/layout/Sidebar.vue +++ b/app/javascript/dashboard/components/layout/Sidebar.vue @@ -144,6 +144,7 @@ export default { cssClass: 'menu-title align-justify', toState: frontendURL(`accounts/${this.accountId}/settings/inboxes`), toStateName: 'settings_inbox_list', + newLinkRouteName: 'settings_inbox_new', children: this.inboxes.map(inbox => ({ id: inbox.id, label: inbox.name, @@ -158,10 +159,13 @@ export default { icon: 'ion-pound', label: 'LABELS', hasSubMenu: true, + newLink: true, key: 'label', cssClass: 'menu-title align-justify', toState: frontendURL(`accounts/${this.accountId}/settings/labels`), toStateName: 'labels_list', + showModalForNewItem: true, + modalName: 'AddLabel', children: this.accountLabels.map(label => ({ id: label.id, label: label.title, @@ -178,10 +182,12 @@ export default { icon: 'ion-ios-people', label: 'TEAMS', hasSubMenu: true, + newLink: true, key: 'team', cssClass: 'menu-title align-justify teams-sidebar-menu', toState: frontendURL(`accounts/${this.accountId}/settings/teams`), toStateName: 'teams_list', + newLinkRouteName: 'settings_teams_new', children: this.teams.map(team => ({ id: team.id, label: team.name, diff --git a/app/javascript/dashboard/components/layout/SidebarItem.vue b/app/javascript/dashboard/components/layout/SidebarItem.vue index f00753497..810155bef 100644 --- a/app/javascript/dashboard/components/layout/SidebarItem.vue +++ b/app/javascript/dashboard/components/layout/SidebarItem.vue @@ -19,7 +19,7 @@ + @@ -61,8 +66,17 @@ import { mapGetters } from 'vuex'; import router from '../../routes'; import adminMixin from '../../mixins/isAdmin'; import { getInboxClassByType } from 'dashboard/helper/inbox'; +import AddLabelModal from '../../routes/dashboard/settings/labels/AddLabel'; export default { + components: { + AddLabelModal, + }, mixins: [adminMixin], + data() { + return { + showAddLabel: false, + }; + }, props: { menuItem: { type: Object, @@ -108,12 +122,24 @@ export default { if (!child.truncateLabel) return false; return child.label; }, - newLinkClick() { - router.push({ name: 'settings_inbox_new', params: { page: 'new' } }); + newLinkClick(item) { + if (item.newLinkRouteName) { + router.push({ name: item.newLinkRouteName, params: { page: 'new' } }); + } else if (item.showModalForNewItem) { + if (item.modalName === 'AddLabel') { + this.showAddLabelPopup(); + } + } }, showItem(item) { return this.isAdmin && item.newLink !== undefined; }, + showAddLabelPopup() { + this.showAddLabel = true; + }, + hideAddLabelPopup() { + this.showAddLabel = false; + }, }, }; diff --git a/app/javascript/dashboard/components/layout/specs/AvailabilityStatus.spec.js b/app/javascript/dashboard/components/layout/specs/AvailabilityStatus.spec.js index 9f631dd09..d96f9761d 100644 --- a/app/javascript/dashboard/components/layout/specs/AvailabilityStatus.spec.js +++ b/app/javascript/dashboard/components/layout/specs/AvailabilityStatus.spec.js @@ -3,11 +3,13 @@ import { createLocalVue, mount } from '@vue/test-utils'; import Vuex from 'vuex'; import VueI18n from 'vue-i18n'; +import WootButton from 'dashboard/components/ui/WootButton'; import i18n from 'dashboard/i18n'; const localVue = createLocalVue(); localVue.use(Vuex); localVue.use(VueI18n); +localVue.component('woot-button', WootButton); const i18nConfig = new VueI18n({ locale: 'en', diff --git a/app/javascript/dashboard/components/specs/SidemenuIcon.spec.js b/app/javascript/dashboard/components/specs/SidemenuIcon.spec.js index a4ef517b1..3efc75a02 100644 --- a/app/javascript/dashboard/components/specs/SidemenuIcon.spec.js +++ b/app/javascript/dashboard/components/specs/SidemenuIcon.spec.js @@ -4,7 +4,7 @@ import SidemenuIcon from '../SidemenuIcon'; describe('SidemenuIcon', () => { test('matches snapshot', () => { const wrapper = mount(SidemenuIcon); - expect(wrapper.isVueInstance()).toBeTruthy(); + expect(wrapper.vm).toBeTruthy(); expect(wrapper.element).toMatchSnapshot(); }); }); diff --git a/app/javascript/dashboard/components/ui/Label.vue b/app/javascript/dashboard/components/ui/Label.vue new file mode 100644 index 000000000..a6c09e562 --- /dev/null +++ b/app/javascript/dashboard/components/ui/Label.vue @@ -0,0 +1,149 @@ + + + + diff --git a/app/javascript/dashboard/components/ui/stories/Button.stories.js b/app/javascript/dashboard/components/ui/stories/Button.stories.js new file mode 100644 index 000000000..a4c0b4294 --- /dev/null +++ b/app/javascript/dashboard/components/ui/stories/Button.stories.js @@ -0,0 +1,50 @@ +import { action } from '@storybook/addon-actions'; +import WootButton from '../WootButton.vue'; + +export default { + title: 'Components/Button', + component: WootButton, + argTypes: { + colorScheme: { + control: { + type: 'select', + options: ['primary', 'secondary', 'success', 'alert', 'warning'], + }, + }, + size: { + control: { + type: 'select', + options: ['tiny', 'small', 'medium', 'large', 'expanded'], + }, + }, + variant: { + control: { + type: 'select', + options: ['hollow', 'clear'], + }, + }, + isLoading: { + control: { + type: 'boolean', + }, + }, + isDisabled: { + control: { + type: 'boolean', + }, + }, + }, +}; + +const Template = (args, { argTypes }) => ({ + props: Object.keys(argTypes), + components: { WootButton }, + template: + '{{label}}', +}); + +export const Primary = Template.bind({}); +Primary.args = { + label: 'New message', + onClick: action('Hello'), +}; diff --git a/app/javascript/dashboard/components/ui/stories/Label.stories.js b/app/javascript/dashboard/components/ui/stories/Label.stories.js new file mode 100644 index 000000000..38acc6258 --- /dev/null +++ b/app/javascript/dashboard/components/ui/stories/Label.stories.js @@ -0,0 +1,64 @@ +import { action } from '@storybook/addon-actions'; + +export default { + title: 'Components/Label', + argTypes: { + title: { + defaultValue: 'sales', + control: { + type: 'text', + }, + }, + colorScheme: { + control: { + type: 'select', + options: ['primary', 'secondary', 'success', 'alert', 'warning'], + }, + }, + description: { + defaultValue: 'label', + control: { + type: 'text', + }, + }, + href: { + control: { + type: 'text', + }, + }, + bgColor: { + defaultValue: '#a83262', + control: { + type: 'text', + }, + }, + small: { + defaultValue: false, + control: { + type: 'boolean', + }, + }, + showClose: { + defaultValue: false, + control: { + type: 'boolean', + }, + }, + icon: { + defaultValue: 'ion-close', + control: { + type: 'text', + }, + }, + }, +}; + +const Template = (args, { argTypes }) => ({ + props: Object.keys(argTypes), + template: '', +}); + +export const DefaultLabel = Template.bind({}); +DefaultLabel.args = { + onClick: action('clicked'), +}; diff --git a/app/javascript/dashboard/components/widgets/Label.vue b/app/javascript/dashboard/components/widgets/Label.vue deleted file mode 100644 index a272601d2..000000000 --- a/app/javascript/dashboard/components/widgets/Label.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - - diff --git a/app/javascript/dashboard/components/widgets/TableFooter.vue b/app/javascript/dashboard/components/widgets/TableFooter.vue index b4123f433..c951aad60 100644 --- a/app/javascript/dashboard/components/widgets/TableFooter.vue +++ b/app/javascript/dashboard/components/widgets/TableFooter.vue @@ -12,39 +12,41 @@ v-if="totalCount" class="primary button-group pagination-button-group" > - - - - - + @@ -91,35 +93,19 @@ export default { this.currentPage === Math.ceil(this.totalCount / this.pageSize); return isDisabled; }, - lastPageButtonClass() { - const className = this.hasLastPage ? 'disabled' : ''; - return className; - }, hasFirstPage() { const isDisabled = this.currentPage === 1; return isDisabled; }, - firstPageButtonClass() { - const className = this.hasFirstPage ? 'disabled' : ''; - return className; - }, hasNextPage() { const isDisabled = this.currentPage === Math.ceil(this.totalCount / this.pageSize); return isDisabled; }, - nextPageButtonClass() { - const className = this.hasNextPage ? 'disabled' : ''; - return className; - }, hasPrevPage() { const isDisabled = this.currentPage === 1; return isDisabled; }, - prevPageButtonClass() { - const className = this.hasPrevPage ? 'disabled' : ''; - return className; - }, }, methods: { onNextPage() { diff --git a/app/javascript/dashboard/components/widgets/chart/BarChart.js b/app/javascript/dashboard/components/widgets/chart/BarChart.js index f401a2a1b..fbe42bc5c 100644 --- a/app/javascript/dashboard/components/widgets/chart/BarChart.js +++ b/app/javascript/dashboard/components/widgets/chart/BarChart.js @@ -14,12 +14,12 @@ const chartOptions = { scales: { xAxes: [ { - barPercentage: 1.26, + barPercentage: 1.1, ticks: { fontFamily, }, gridLines: { - display: false, + drawOnChartArea: false, }, }, ], @@ -30,7 +30,7 @@ const chartOptions = { beginAtZero: true, }, gridLines: { - display: false, + drawOnChartArea: false, }, }, ], diff --git a/app/javascript/dashboard/components/widgets/conversation/AvailabilityStatusBadge.vue b/app/javascript/dashboard/components/widgets/conversation/AvailabilityStatusBadge.vue new file mode 100644 index 000000000..0be6d91e6 --- /dev/null +++ b/app/javascript/dashboard/components/widgets/conversation/AvailabilityStatusBadge.vue @@ -0,0 +1,29 @@ + + + diff --git a/app/javascript/dashboard/components/widgets/conversation/ConversationBox.vue b/app/javascript/dashboard/components/widgets/conversation/ConversationBox.vue index bb700a86c..0174076ba 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ConversationBox.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ConversationBox.vue @@ -63,7 +63,7 @@ export default { watch: { 'currentChat.inbox_id'(inboxId) { if (inboxId) { - this.$store.dispatch('inboxMembers/fetch', { inboxId }); + this.$store.dispatch('inboxAssignableAgents/fetch', { inboxId }); } }, }, @@ -80,6 +80,7 @@ export default { .conversation-details-wrap { display: flex; flex-direction: column; + min-width: 0; width: 100%; border-left: 1px solid var(--color-border); background: var(--color-background-light); diff --git a/app/javascript/dashboard/components/widgets/conversation/ConversationCard.vue b/app/javascript/dashboard/components/widgets/conversation/ConversationCard.vue index 04dcc96ce..d6e8528b7 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ConversationCard.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ConversationCard.vue @@ -30,11 +30,13 @@ {{ parsedLastMessage }} - {{ ` ` }} - + {{ this.$t(`${attachmentIconKey}.CONTENT`) }} + + {{ $t('CHAT_LIST.NO_CONTENT') }} +

diff --git a/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue b/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue index 45d9e204c..0b2057a61 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue @@ -46,6 +46,14 @@ @select="assignAgent" @remove="removeAgent" > + {{ $t('AGENT_MGMT.SEARCH.NO_RESULTS') }} @@ -57,11 +65,13 @@ import { mapGetters } from 'vuex'; import MoreActions from './MoreActions'; import Thumbnail from '../Thumbnail'; +import AvailabilityStatusBadge from '../conversation/AvailabilityStatusBadge'; export default { components: { MoreActions, Thumbnail, + AvailabilityStatusBadge, }, props: { @@ -83,8 +93,8 @@ export default { computed: { ...mapGetters({ - getAgents: 'inboxMembers/getMembersByInbox', - uiFlags: 'inboxMembers/getUIFlags', + getAgents: 'inboxAssignableAgents/getAssignableAgents', + uiFlags: 'inboxAssignableAgents/getUIFlags', currentChat: 'getSelectedChat', }), @@ -126,7 +136,6 @@ export default { bus.$emit('newToastMessage', this.$t('CONVERSATION.CHANGE_AGENT')); }); }, - removeAgent() {}, }, }; @@ -142,4 +151,17 @@ export default { .conv-header { flex: 0 0 var(--space-jumbo); } + +.option__desc { + display: flex; + align-items: center; +} + +.option__desc { + &::v-deep .status-badge { + margin-right: var(--space-small); + min-width: 0; + flex-shrink: 0; + } +} diff --git a/app/javascript/dashboard/components/widgets/conversation/Message.vue b/app/javascript/dashboard/components/widgets/conversation/Message.vue index 00dc6a500..bf39087cf 100644 --- a/app/javascript/dashboard/components/widgets/conversation/Message.vue +++ b/app/javascript/dashboard/components/widgets/conversation/Message.vue @@ -109,12 +109,14 @@ export default { ); const { - email: { html_content: { full: fullHTMLContent } = {} } = {}, + email: { + html_content: { full: fullHTMLContent, reply: replyHTMLContent } = {}, + } = {}, } = this.contentAttributes; - if (fullHTMLContent && this.isIncoming) { + if ((replyHTMLContent || fullHTMLContent) && this.isIncoming) { let parsedContent = new DOMParser().parseFromString( - fullHTMLContent || '', + replyHTMLContent || fullHTMLContent || '', 'text/html' ); if (!parsedContent.getElementsByTagName('parsererror').length) { diff --git a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue index ae3ba444a..81c94640f 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue @@ -186,10 +186,12 @@ export default { if (this.isPrivate) { return MESSAGE_MAX_LENGTH.GENERAL; } - if (this.isAFacebookInbox) { return MESSAGE_MAX_LENGTH.FACEBOOK; } + if (this.isATwilioWhatsappChannel) { + return MESSAGE_MAX_LENGTH.TWILIO_WHATSAPP; + } if (this.isATwilioSMSChannel) { return MESSAGE_MAX_LENGTH.TWILIO_SMS; } diff --git a/app/javascript/dashboard/helper/actionCable.js b/app/javascript/dashboard/helper/actionCable.js index 73b3e7213..6103ee915 100644 --- a/app/javascript/dashboard/helper/actionCable.js +++ b/app/javascript/dashboard/helper/actionCable.js @@ -10,8 +10,7 @@ class ActionCableConnector extends BaseActionCableConnector { 'message.created': this.onMessageCreated, 'message.updated': this.onMessageUpdated, 'conversation.created': this.onConversationCreated, - 'conversation.opened': this.onStatusChange, - 'conversation.resolved': this.onStatusChange, + 'conversation.status_changed': this.onStatusChange, 'user:logout': this.onLogout, 'page:reload': this.onReload, 'assignee.changed': this.onAssigneeChanged, diff --git a/app/javascript/dashboard/i18n/default-sidebar.js b/app/javascript/dashboard/i18n/default-sidebar.js index 7faa7d2e8..6488c022e 100644 --- a/app/javascript/dashboard/i18n/default-sidebar.js +++ b/app/javascript/dashboard/i18n/default-sidebar.js @@ -8,6 +8,7 @@ export const getSidebarItems = accountId => ({ 'inbox_conversation', 'conversation_through_inbox', 'contacts_dashboard', + 'contacts_dashboard_manage', 'notifications_dashboard', 'settings_account_reports', 'profile_settings', diff --git a/app/javascript/dashboard/i18n/locale/ar/campaign.json b/app/javascript/dashboard/i18n/locale/ar/campaign.json new file mode 100644 index 000000000..d8943ac0f --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ar/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "إلغاء", + "CREATE_BUTTON_TEXT": "إنشاء", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "رسالة", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "أرسلت بواسطة", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "الرجاء إدخال عنوان URL صالح" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "تحديث", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "حدث خطأ، الرجاء المحاولة مرة أخرى" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "رسالة", + "STATUS": "الحالة", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "تعديل", + "DELETE": "حذف" + }, + "STATUS": { + "ENABLED": "مفعل", + "DISABLED": "معطّل" + }, + "SENDER": { + "BOT": "رد آلي" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/ar/chatlist.json b/app/javascript/dashboard/i18n/locale/ar/chatlist.json index bce751c61..53fc3bd4e 100644 --- a/app/javascript/dashboard/i18n/locale/ar/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ar/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "تم تلقيه عبر البريد الإلكتروني", "VIEW_TWEET_IN_TWITTER": "عرض التغريدة في تويتر", "REPLY_TO_TWEET": "الرد على هذه التغريدة", - "NO_MESSAGES": "لا توجد رسائل" + "NO_MESSAGES": "لا توجد رسائل", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/ar/contact.json b/app/javascript/dashboard/i18n/locale/ar/contact.json index ca7b8e9a5..2218c93c4 100644 --- a/app/javascript/dashboard/i18n/locale/ar/contact.json +++ b/app/javascript/dashboard/i18n/locale/ar/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "الوسوم المتاحة في الحساب", "REMOVE": "انقر على أيقونة X لإزالة الوسم", "ADD": "اضغط على أيقونة + لإضافة وسوم", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "تحديث الوسوم", "UPDATE_ERROR": "تعذر تحديث الوسوم، الرجاء المحاولة مرة أخرى." }, "NO_LABELS_TO_ADD": "لا يوجد وسوم في الحساب.", - "NO_AVAILABLE_LABELS": "لا يوجد وسوم مضافة لهذه المحادثة." + "NO_AVAILABLE_LABELS": "لا يوجد وسوم مضافة لهذه المحادثة.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "كتم المحادثة", "UNMUTE_CONTACT": "إلغاء كتم المحادثة", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "عرض التفاصيل" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json index e88239138..f438d84da 100644 --- a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "الإعدادات", "COLLABORATORS": "المتعاونون", "CONFIGURATION": "الإعدادات", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "نموذج ما قبل الدردشة", "BUSINESS_HOURS": "ساعات العمل" }, diff --git a/app/javascript/dashboard/i18n/locale/ar/index.js b/app/javascript/dashboard/i18n/locale/ar/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/ar/index.js +++ b/app/javascript/dashboard/i18n/locale/ar/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/ar/report.json b/app/javascript/dashboard/i18n/locale/ar/report.json index 078d09bc1..4f153ec11 100644 --- a/app/javascript/dashboard/i18n/locale/ar/report.json +++ b/app/javascript/dashboard/i18n/locale/ar/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "آخر 30 يوماً" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/ca/campaign.json b/app/javascript/dashboard/i18n/locale/ca/campaign.json new file mode 100644 index 000000000..4ca3b69b8 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ca/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Cancel·la", + "CREATE_BUTTON_TEXT": "Crear", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Missatge", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Enviat per", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Introduïu una URL vàlid" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Actualitza", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "S'ha produït un error; tornau-ho a provar" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Missatge", + "STATUS": "Estat", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Edita", + "DELETE": "Esborrar" + }, + "STATUS": { + "ENABLED": "Habilita", + "DISABLED": "Inhabilita" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/ca/chatlist.json b/app/javascript/dashboard/i18n/locale/ca/chatlist.json index a6d6f335c..d5af19650 100644 --- a/app/javascript/dashboard/i18n/locale/ca/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ca/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Rebut per correu electrònic", "VIEW_TWEET_IN_TWITTER": "Veure el tuit a Twitter", "REPLY_TO_TWEET": "Respon a aquest tuit", - "NO_MESSAGES": "Cap Missatge" + "NO_MESSAGES": "Cap Missatge", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/ca/contact.json b/app/javascript/dashboard/i18n/locale/ca/contact.json index 30849ca49..996adbfc2 100644 --- a/app/javascript/dashboard/i18n/locale/ca/contact.json +++ b/app/javascript/dashboard/i18n/locale/ca/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Etiquetes disponibles al compte", "REMOVE": "Fes clic a la icona X per eliminar l'etiqueta", "ADD": "Fes clic a la icona + per afegir l'etiqueta", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Actualitza les etiquetes", "UPDATE_ERROR": "No s'han pogut actualitzar les etiquetes, torna-ho a provar." }, "NO_LABELS_TO_ADD": "No hi ha cap etiqueta definida al compte.", - "NO_AVAILABLE_LABELS": "No hi ha etiquetes afegides a aquesta conversa." + "NO_AVAILABLE_LABELS": "No hi ha etiquetes afegides a aquesta conversa.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Silencia la conversa", "UNMUTE_CONTACT": "Desactiva el silenci de la conversa", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json index d5c18acf7..04eaacf40 100644 --- a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Configuracions", "COLLABORATORS": "Col·laboradors", "CONFIGURATION": "Configuració", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/ca/index.js b/app/javascript/dashboard/i18n/locale/ca/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/ca/index.js +++ b/app/javascript/dashboard/i18n/locale/ca/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/ca/report.json b/app/javascript/dashboard/i18n/locale/ca/report.json index 7dabbcb7e..b4cdbb96b 100644 --- a/app/javascript/dashboard/i18n/locale/ca/report.json +++ b/app/javascript/dashboard/i18n/locale/ca/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Últims 30 dies" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/cs/campaign.json b/app/javascript/dashboard/i18n/locale/cs/campaign.json new file mode 100644 index 000000000..b6b1008cb --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/cs/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Zrušit", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Zpráva", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Odeslal", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Zadejte prosím platnou URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Aktualizovat", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Došlo k chybě, zkuste to prosím znovu" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Zpráva", + "STATUS": "Stav", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Upravit", + "DELETE": "Vymazat" + }, + "STATUS": { + "ENABLED": "Povoleno", + "DISABLED": "Zakázáno" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/cs/chatlist.json b/app/javascript/dashboard/i18n/locale/cs/chatlist.json index 6c01bb340..5a9e42761 100644 --- a/app/javascript/dashboard/i18n/locale/cs/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/cs/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Obdrženo e-mailem", "VIEW_TWEET_IN_TWITTER": "Zobrazit tweet na Twitteru", "REPLY_TO_TWEET": "Odpovědět na tento tweet", - "NO_MESSAGES": "Žádné zprávy" + "NO_MESSAGES": "Žádné zprávy", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/cs/contact.json b/app/javascript/dashboard/i18n/locale/cs/contact.json index 3b6a25635..46bb54580 100644 --- a/app/javascript/dashboard/i18n/locale/cs/contact.json +++ b/app/javascript/dashboard/i18n/locale/cs/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Štítky dostupné v účtu", "REMOVE": "Kliknutím na ikonu X odstraníte štítek", "ADD": "Kliknutím na ikonu + přidáte štítek", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Aktualizovat štítky", "UPDATE_ERROR": "Nelze aktualizovat štítky, zkuste to znovu." }, "NO_LABELS_TO_ADD": "V účtu nejsou definovány žádné další štítky.", - "NO_AVAILABLE_LABELS": "Do této konverzace nebyly přidány žádné štítky." + "NO_AVAILABLE_LABELS": "Do této konverzace nebyly přidány žádné štítky.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Ztlumit konverzaci", "UNMUTE_CONTACT": "Zrušit ztlumení konverzace", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "Zobrazit detaily" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json index 6a0a8d003..4cd8a58e2 100644 --- a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Nastavení", "COLLABORATORS": "Spolupracující", "CONFIGURATION": "Nastavení", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Formulář před chatem", "BUSINESS_HOURS": "Pracovní doba" }, diff --git a/app/javascript/dashboard/i18n/locale/cs/index.js b/app/javascript/dashboard/i18n/locale/cs/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/cs/index.js +++ b/app/javascript/dashboard/i18n/locale/cs/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/cs/report.json b/app/javascript/dashboard/i18n/locale/cs/report.json index 87cd03db2..fb8d544c5 100644 --- a/app/javascript/dashboard/i18n/locale/cs/report.json +++ b/app/javascript/dashboard/i18n/locale/cs/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Posledních 30 dní" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/da/campaign.json b/app/javascript/dashboard/i18n/locale/da/campaign.json new file mode 100644 index 000000000..c1a829bc4 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/da/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Annuller", + "CREATE_BUTTON_TEXT": "Opret", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Angiv en gyldig URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Opdater", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Der opstod en fejl. Prøv venligst igen" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Status", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Rediger", + "DELETE": "Slet" + }, + "STATUS": { + "ENABLED": "Aktiveret", + "DISABLED": "Deaktiveret" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/da/chatlist.json b/app/javascript/dashboard/i18n/locale/da/chatlist.json index 52a8f919c..862a19495 100644 --- a/app/javascript/dashboard/i18n/locale/da/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/da/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Modtaget via e-mail", "VIEW_TWEET_IN_TWITTER": "Se tweet på Twitter", "REPLY_TO_TWEET": "Svar på dette tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/da/contact.json b/app/javascript/dashboard/i18n/locale/da/contact.json index 5e8068ce8..ef1f5595e 100644 --- a/app/javascript/dashboard/i18n/locale/da/contact.json +++ b/app/javascript/dashboard/i18n/locale/da/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Etiketter tilgængelige på kontoen", "REMOVE": "Klik på X-ikonet for at fjerne etiketten", "ADD": "Klik på + ikonet for at tilføje etiketten", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Opdater etiketter", "UPDATE_ERROR": "Etiketter kunne ikke opdateres. Prøv igen." }, "NO_LABELS_TO_ADD": "Der er ikke defineret flere etiketter på kontoen.", - "NO_AVAILABLE_LABELS": "Der er ingen etiketter tilføjet til denne samtale." + "NO_AVAILABLE_LABELS": "Der er ingen etiketter tilføjet til denne samtale.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Gør Samtale Lydløs", "UNMUTE_CONTACT": "Fjern Lydløs", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json index bfc712182..f1930095b 100644 --- a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Indstillinger", "COLLABORATORS": "Samarbejdspartnere", "CONFIGURATION": "Konfiguration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/da/index.js b/app/javascript/dashboard/i18n/locale/da/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/da/index.js +++ b/app/javascript/dashboard/i18n/locale/da/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/da/report.json b/app/javascript/dashboard/i18n/locale/da/report.json index 44d645fbf..3eeb40f7f 100644 --- a/app/javascript/dashboard/i18n/locale/da/report.json +++ b/app/javascript/dashboard/i18n/locale/da/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Seneste 30 dage" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/de/campaign.json b/app/javascript/dashboard/i18n/locale/de/campaign.json new file mode 100644 index 000000000..18b8cfe4c --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/de/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Kampagnen", + "SIDEBAR_TXT": "Proaktive Nachrichten erlauben dem Kunden, ausgehende Nachrichten an seine Kontakte zu senden, was weitere Unterhaltungen auslösen würde. Klicke auf Kampagne hinzufügen um eine neue Kampagne zu erstellen. Sie können auch eine bestehende Kampagne bearbeiten oder löschen, indem Sie auf die Schaltfläche Bearbeiten oder Löschen klicken.", + "HEADER_BTN_TXT": "Kampagne erstellen", + "ADD": { + "TITLE": "Kampagne erstellen", + "DESC": "Proaktive Nachrichten erlauben dem Kunden, ausgehende Nachrichten an seine Kontakte zu senden, was weitere Unterhaltungen auslösen würde.", + "CANCEL_BUTTON_TEXT": "Stornieren", + "CREATE_BUTTON_TEXT": "Erstellen", + "FORM": { + "TITLE": { + "LABEL": "Titel", + "PLACEHOLDER": "Bitte geben Sie den Titel der Kampagne ein", + "ERROR": "Titel ist erforderlich" + }, + "MESSAGE": { + "LABEL": "Nachricht", + "PLACEHOLDER": "Bitte geben Sie die Nachricht der Kampagne ein", + "ERROR": "Nachricht ist erforderlich" + }, + "SENT_BY": { + "LABEL": "Gesendet von", + "PLACEHOLDER": "Bitte wählen Sie den Inhalt der Kampagne aus", + "ERROR": "Absender ist erforderlich" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Bitte URL eingeben", + "ERROR": "Bitte geben Sie eine gültige URL ein" + }, + "TIME_ON_PAGE": { + "LABEL": "Zeit auf Seite (Sekunden)", + "PLACEHOLDER": "Bitte die Uhrzeit eingeben", + "ERROR": "Uhrzeit auf Seite ist erforderlich" + }, + "ENABLED": "Kampagne aktivieren", + "SUBMIT": "Kampagne hinzufügen" + }, + "API": { + "SUCCESS_MESSAGE": "Kampagne erfolgreich erstellt", + "ERROR_MESSAGE": "Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut." + } + }, + "EDIT": { + "TITLE": "Kampagne bearbeiten", + "UPDATE_BUTTON_TEXT": "Aktualisieren", + "API": { + "SUCCESS_MESSAGE": "Kampagne erfolgreich aktualisiert", + "ERROR_MESSAGE": "Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut" + } + }, + "LIST": { + "LOADING_MESSAGE": "Lade Kampagnen...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Titel", + "MESSAGE": "Nachricht", + "STATUS": "Status", + "SENDER": "Absender", + "URL": "URL", + "TIME_ON_PAGE": "Zeit (Sekunden)", + "CREATED_AT": "Erstellt am" + }, + "BUTTONS": { + "ADD": "Hinzufügen", + "EDIT": "Bearbeiten", + "DELETE": "Löschen" + }, + "STATUS": { + "ENABLED": "Aktiviert", + "DISABLED": "Behindert" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/de/chatlist.json b/app/javascript/dashboard/i18n/locale/de/chatlist.json index 675427da4..874ed5f19 100644 --- a/app/javascript/dashboard/i18n/locale/de/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/de/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Per E-Mail empfangen", "VIEW_TWEET_IN_TWITTER": "Tweet auf Twitter anzeigen", "REPLY_TO_TWEET": "Auf diesen Tweet antworten", - "NO_MESSAGES": "Keine Nachrichten" + "NO_MESSAGES": "Keine Nachrichten", + "NO_CONTENT": "Kein Inhalt verfügbar" } } diff --git a/app/javascript/dashboard/i18n/locale/de/contact.json b/app/javascript/dashboard/i18n/locale/de/contact.json index b208bc95b..341d905cb 100644 --- a/app/javascript/dashboard/i18n/locale/de/contact.json +++ b/app/javascript/dashboard/i18n/locale/de/contact.json @@ -12,7 +12,7 @@ "INITIATED_FROM": "Initiiert von", "INITIATED_AT": "Initiiert bei", "IP_ADDRESS": "IP-Adresse", - "NEW_MESSAGE": "New message", + "NEW_MESSAGE": "Neue Nachricht", "CONVERSATIONS": { "NO_RECORDS_FOUND": "Es sind keine vorherigen Gespräche mit diesem Kontakt verbunden.", "TITLE": "Vorherige Gespräche" @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Verfügbare Labels im Konto", "REMOVE": "Klicken Sie auf das X-Symbol, um das Label zu entfernen", "ADD": "Klicken Sie auf das + Symbol, um ein Label hinzuzufügen", + "ADD_BUTTON": "Label hinzufügen", "UPDATE_BUTTON": "Labels aktualisieren", "UPDATE_ERROR": "Etiketten konnten nicht aktualisiert werden. Versuchen Sie es erneut." }, "NO_LABELS_TO_ADD": "Es sind keine weiteren Labels im Konto definiert.", - "NO_AVAILABLE_LABELS": "Zu dieser Unterhaltung wurden noch keine Labels hinzugefügt." + "NO_AVAILABLE_LABELS": "Zu dieser Unterhaltung wurden noch keine Labels hinzugefügt.", + "LABEL_SELECT": { + "TITLE": "Label hinzufügen", + "PLACEHOLDER": "Labels suchen", + "NO_RESULT": "Keine Labels gefunden" + } }, "MUTE_CONTACT": "Unterhaltung stummschalten", "UNMUTE_CONTACT": "Unterhaltung entmuten", @@ -73,8 +79,8 @@ "PHONE_NUMBER": { "PLACEHOLDER": "Geben Sie die Telefonnummer des Kontakts ein", "LABEL": "Telefonnummer", - "HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]", - "ERROR": "Phone number should be either empty or of E.164 format" + "HELP": "Telefonnummer sollte im E.164-Format sein, z. B.: +1415555555 [+][Landesvorwahl][Landesvorwahl][Ortsvorwahl]", + "ERROR": "Telefonnummer muss leer sein oder im E.164-Format" }, "LOCATION": { "PLACEHOLDER": "Geben Sie den Standort des Kontakts ein", @@ -108,27 +114,27 @@ "ERROR_MESSAGE": "Es ist ein Fehler aufgetreten, bitte versuche es erneut" }, "NEW_CONVERSATION": { - "BUTTON_LABEL": "Start conversation", + "BUTTON_LABEL": "Gespräch starten", "TITLE": "Neue Unterhaltung", - "DESC": "Start a new conversation by sending a new message.", - "NO_INBOX": "Couldn't find an inbox to initiate a new conversation with this contact.", + "DESC": "Starte eine Unterhaltung mit einer neuen Nachricht", + "NO_INBOX": "Konnte keinen Posteingang finden, um eine neue Unterhaltung mit diesem Kontakt zu starten.", "FORM": { "TO": { - "LABEL": "To" + "LABEL": "An" }, "INBOX": { - "LABEL": "Inbox", - "ERROR": "Select an inbox" + "LABEL": "Posteingang", + "ERROR": "Posteingang auswählen" }, "MESSAGE": { "LABEL": "Nachricht", - "PLACEHOLDER": "Write your message here", - "ERROR": "Message can't be empty" + "PLACEHOLDER": "Schreiben Sie Ihre Nachricht hier", + "ERROR": "Nachricht darf nicht leer sein" }, - "SUBMIT": "Send message", + "SUBMIT": "Nachricht senden", "CANCEL": "Stornieren", - "SUCCESS_MESSAGE": "Message sent!", - "ERROR_MESSAGE": "Couldn't send! try again" + "SUCCESS_MESSAGE": "Nachricht gesendet!", + "ERROR_MESSAGE": "Senden fehlgeschlagen! Bitte erneut versuchen" } }, "CONTACTS_PAGE": { @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "Details anzeigen" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notizen" + }, + "ADD": { + "BUTTON": "Hinzufügen", + "PLACEHOLDER": "Notiz hinzufügen", + "TITLE": "Shift + Enter um eine Notiz zu erstellen" + }, + "FOOTER": { + "BUTTON": "Alle Notizen anzeigen" + } } } diff --git a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json index 18dbd9505..36e162e77 100644 --- a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Einstellungen", "COLLABORATORS": "Mitarbeitende", "CONFIGURATION": "Konfiguration", + "CAMPAIGN": "Kampagnen", "PRE_CHAT_FORM": "Pre-Chat-Formular", "BUSINESS_HOURS": "Öffnungszeiten" }, diff --git a/app/javascript/dashboard/i18n/locale/de/index.js b/app/javascript/dashboard/i18n/locale/de/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/de/index.js +++ b/app/javascript/dashboard/i18n/locale/de/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/de/report.json b/app/javascript/dashboard/i18n/locale/de/report.json index 6afde7b68..0d458f43c 100644 --- a/app/javascript/dashboard/i18n/locale/de/report.json +++ b/app/javascript/dashboard/i18n/locale/de/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Letzte 30 Tage" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/de/teamsSettings.json b/app/javascript/dashboard/i18n/locale/de/teamsSettings.json index 1efb940b6..780baf225 100644 --- a/app/javascript/dashboard/i18n/locale/de/teamsSettings.json +++ b/app/javascript/dashboard/i18n/locale/de/teamsSettings.json @@ -43,7 +43,7 @@ }, "AGENTS": { "BUTTON_TEXT": "Agenten im Team aktualisieren", - "TITLE": "Agenten zu Team hinzufügen - %{teamName}", + "TITLE": "Agenten zu Team %{teamName} hinzufügen", "DESC": "Fügen Sie Agenten zu Ihrem neu erstellten Team hinzu. Alle hinzugefügten Agenten werden benachrichtigt, wenn diesem Team eine Unterhaltung zugewiesen wird." }, "WIZARD": [ @@ -77,8 +77,8 @@ "SELECTED_COUNT": "%{selected} von %{total} Agenten ausgewählt." }, "ADD": { - "TITLE": "Agenten zu Team hinzufügen - %{teamName}", - "DESC": "Fügen Sie Agenten zu Ihrem neu erstellten Team hinzu. So können Sie bei Gesprächen als Team zusammenarbeiten, erhalten Sie Benachrichtigungen über neue Ereignisse in der gleichen Unterhaltung.", + "TITLE": "Agenten zu Team %{teamName} hinzufügen", + "DESC": "Fügen Sie Agenten zu Ihrem neu erstellten Team hinzu. So können Sie bei Gesprächen als Team zusammenarbeiten und erhalten Benachrichtigungen über neue Ereignisse in der gleichen Unterhaltung.", "SELECT": "auswählen", "SELECT_ALL": "alle Agenten auswählen", "SELECTED_COUNT": "%{selected} von %{total} Agenten ausgewählt.", diff --git a/app/javascript/dashboard/i18n/locale/el/campaign.json b/app/javascript/dashboard/i18n/locale/el/campaign.json new file mode 100644 index 000000000..b44520dd4 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/el/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Καμπάνιες", + "SIDEBAR_TXT": "Τα προληπτικά μηνύματα επιτρέπουν την αποστολή εξερχόμενων μηνυμάτων στις επαφές, που θα ενεργοποιούν περισσότερες συνομιλίες. Κάντε κλικ στο Προσθήκη Καμπάνιας για να δημιουργήσετε μια νέα καμπάνια. Μπορείτε επίσης να επεξεργαστείτε ή να διαγράψετε μια ήδη υπάρχουσα καμπάνια κάνοντας κλικ στο κουμπί Επεξεργασία ή Διαγραφή.", + "HEADER_BTN_TXT": "Δημιουργία Καμπάνιας", + "ADD": { + "TITLE": "Δημιουργία Καμπάνιας", + "DESC": "Τα προληπτικά μηνύματα επιτρέπουν την αποστολή εξερχόμενων μηνυμάτων στις επαφές, που θα ενεργοποιούν περισσότερες συνομιλίες.", + "CANCEL_BUTTON_TEXT": "Άκυρο", + "CREATE_BUTTON_TEXT": "Δημιουργία", + "FORM": { + "TITLE": { + "LABEL": "Τίτλος", + "PLACEHOLDER": "Παρακαλώ εισάγετε τον τίτλο της καμπάνιας", + "ERROR": "Ο τίτλος είναι απαραίτητος" + }, + "MESSAGE": { + "LABEL": "Μήνυμα", + "PLACEHOLDER": "Παρακαλώ εισάγετε το μήνυμα της καμπάνιας", + "ERROR": "Το μήνυμα είναι απαραίτητο" + }, + "SENT_BY": { + "LABEL": "Αποστολή από", + "PLACEHOLDER": "Παρακαλώ επιλέξτε το περιεχόμενο της καμπάνιας", + "ERROR": "Ο αποστολέας είναι απαραίτητος" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Παρακαλώ εισάγετε το URL", + "ERROR": "Παρακαλώ εισάγετε ένα έγκυρο URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Χρόνος στη σελίδα(δευτερόλεπτα)", + "PLACEHOLDER": "Παρακαλώ εισάγετε το χρόνο", + "ERROR": "Ο χρόνος στη σελίδα είναι απαραίτητος" + }, + "ENABLED": "Ενεργοποίηση καμπάνιας", + "SUBMIT": "Προσθήκη Καμπάνιας" + }, + "API": { + "SUCCESS_MESSAGE": "Η καμπάνια δημιουργήθηκε επιτυχώς", + "ERROR_MESSAGE": "Παρουσιάστηκε σφάλμα. Παρακαλώ δοκιμάστε ξανά." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Ενημέρωση", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Υπήρξε ένα σφάλμα, παρακαλώ προσπαθήστε ξανά" + } + }, + "LIST": { + "LOADING_MESSAGE": "Φόρτωση καμπάνιας...", + "404": "Δεν υπάρχουν εκστρατείες για αυτό το κιβώτιο εισερχόμενων.", + "TABLE_HEADER": { + "TITLE": "Τίτλος", + "MESSAGE": "Μήνυμα", + "STATUS": "Κατάσταση", + "SENDER": "Αποστολέας", + "URL": "URL", + "TIME_ON_PAGE": "Χρόνος (δευτερόλεπτα)", + "CREATED_AT": "Δημιουργήθηκε στις" + }, + "BUTTONS": { + "ADD": "Προσθήκη", + "EDIT": "Επεξεργασία", + "DELETE": "Διαγραφή" + }, + "STATUS": { + "ENABLED": "Ενεργό", + "DISABLED": "Ανενεργό" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/el/chatlist.json b/app/javascript/dashboard/i18n/locale/el/chatlist.json index 23eee7635..eb068a51e 100644 --- a/app/javascript/dashboard/i18n/locale/el/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/el/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Παραλήφθηκε από email", "VIEW_TWEET_IN_TWITTER": "Προβολή του tweet στο Twitter", "REPLY_TO_TWEET": "Απάντηση στο tweet", - "NO_MESSAGES": "Κανένα Μήνυμα" + "NO_MESSAGES": "Κανένα Μήνυμα", + "NO_CONTENT": "Μη διαθέσιμο περιεχόμενο" } } diff --git a/app/javascript/dashboard/i18n/locale/el/contact.json b/app/javascript/dashboard/i18n/locale/el/contact.json index a296c8d77..03af6312f 100644 --- a/app/javascript/dashboard/i18n/locale/el/contact.json +++ b/app/javascript/dashboard/i18n/locale/el/contact.json @@ -12,7 +12,7 @@ "INITIATED_FROM": "Αρχικοποίηση από", "INITIATED_AT": "Αρχικοποίηση τις", "IP_ADDRESS": "Διεύθυνση IP", - "NEW_MESSAGE": "New message", + "NEW_MESSAGE": "Νέο Μήνυμα", "CONVERSATIONS": { "NO_RECORDS_FOUND": "Δεν υπάρχουν προηγούμενες συνομιλίες που σχετίζονται με αυτήν την επαφή.", "TITLE": "Προηγούμενες συνομιλίες" @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Υπάρχουν διαθέσιμες ετικέτες στον λογαριασμό", "REMOVE": "Πατήστε στο εικονίδιο X για να απομακρύνετε την ετικέτα", "ADD": "Πατήστε στο εικονίδιο + για να προσθέστε την ετικέτα", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Ενημέρωση Ετικετών", "UPDATE_ERROR": "Δεν μπορούν να ενημερωθούν οι ετικέτες, προσπαθήστε ξανά." }, "NO_LABELS_TO_ADD": "Δεν υπάρχουν άλλες ετικέτες στον λογαριασμό.", - "NO_AVAILABLE_LABELS": "Δεν υπάρχουν προστεθεί ετικέτες στην συνομιλία." + "NO_AVAILABLE_LABELS": "Δεν υπάρχουν προστεθεί ετικέτες στην συνομιλία.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Σίγαση Συνομιλίας", "UNMUTE_CONTACT": "Επαναφορά Συνομιλίας", @@ -108,27 +114,27 @@ "ERROR_MESSAGE": "Υπήρξε ένα σφάλμα, παρακαλώ προσπαθήστε ξανά" }, "NEW_CONVERSATION": { - "BUTTON_LABEL": "Start conversation", + "BUTTON_LABEL": "Έναρξη Συνομιλίας", "TITLE": "Νέα συνομιλία", - "DESC": "Start a new conversation by sending a new message.", - "NO_INBOX": "Couldn't find an inbox to initiate a new conversation with this contact.", + "DESC": "Ξεκινήστε μια νέα συνομιλία στέλνοντας ένα νέο μήνυμα.", + "NO_INBOX": "Δεν βρέθηκε ένα κιβώτιο εισερχόμενων για να ξεκινήσει μια νέα συνομιλία με αυτήν την επαφή.", "FORM": { "TO": { - "LABEL": "To" + "LABEL": "Προς" }, "INBOX": { - "LABEL": "Inbox", - "ERROR": "Select an inbox" + "LABEL": "Εισερχόμενα", + "ERROR": "Επιλέξτε ένα κιβώτιο εισερχόμενων" }, "MESSAGE": { "LABEL": "Μήνυμα", - "PLACEHOLDER": "Write your message here", - "ERROR": "Message can't be empty" + "PLACEHOLDER": "Γράψτε το μήνυμά σας εδώ", + "ERROR": "Το μήνυμα δεν μπορεί να είναι άδειο" }, - "SUBMIT": "Send message", + "SUBMIT": "Αποστολή μηνύματος", "CANCEL": "Άκυρο", - "SUCCESS_MESSAGE": "Message sent!", - "ERROR_MESSAGE": "Couldn't send! try again" + "SUCCESS_MESSAGE": "Το μήνυμα στάλθηκε!", + "ERROR_MESSAGE": "Αδυναμία αποστολής! Προσπαθήστε ξανά" } }, "CONTACTS_PAGE": { @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "Προβολή λεπτομεριών" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Σημειώσεις" + }, + "ADD": { + "BUTTON": "Προσθήκη", + "PLACEHOLDER": "Προσθήκη σημείωσης", + "TITLE": "Shift + Enter για δημιουργία σημείωσης" + }, + "FOOTER": { + "BUTTON": "Εμφάνιση όλων των σημειώσεων" + } } } diff --git a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json index f5a13e3a7..38a134024 100644 --- a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json @@ -92,7 +92,7 @@ "DESC": "Ενσωματώστε το Twilio και αρχίστε να υποστηρίζετε τους πελάτες σας μέσω SMS.", "ACCOUNT_SID": { "LABEL": "SID Λογαριασμού", - "PLACEHOLDER": "Παρακαλώ εισάγετε το SID του Λογαριασμού Twillio", + "PLACEHOLDER": "Παρακαλώ εισάγετε το SID του Λογαριασμού Twilio", "ERROR": "Το πεδίο είναι απαραίτητο" }, "CHANNEL_TYPE": { @@ -118,7 +118,7 @@ "TITLE": "URL επανάκλησης", "SUBTITLE": "Πρέπει να ρυθμίσετε το callback URL στο Twilio με το URL που αναφέρεται εδώ." }, - "SUBMIT_BUTTON": "Δημιουργία Καναλιού Twillio", + "SUBMIT_BUTTON": "Δημιουργία Καναλιού Twilio", "API": { "ERROR_MESSAGE": "Δεν ήταν δυνατή η πιστοποίηση των διαπιστευτηρίων Twilio. Δοκιμάστε ξανά" } @@ -227,6 +227,7 @@ "SETTINGS": "Ρυθμίσεις", "COLLABORATORS": "Συνεργάτες", "CONFIGURATION": "Διαμόρφωση", + "CAMPAIGN": "Καμπάνιες", "PRE_CHAT_FORM": "Φόρμα Προ-Συνομιλίας", "BUSINESS_HOURS": "Ώρες Εργασίας" }, diff --git a/app/javascript/dashboard/i18n/locale/el/index.js b/app/javascript/dashboard/i18n/locale/el/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/el/index.js +++ b/app/javascript/dashboard/i18n/locale/el/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/el/report.json b/app/javascript/dashboard/i18n/locale/el/report.json index 1878b6e05..62cf653bb 100644 --- a/app/javascript/dashboard/i18n/locale/el/report.json +++ b/app/javascript/dashboard/i18n/locale/el/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Τελευταίες 30 ημέρες" + }, + { + "id": 2, + "name": "Τελευταίοι 3 μήνες" + }, + { + "id": 3, + "name": "Τελευταίοι 6 μήνες" + }, + { + "id": 4, + "name": "Τελευταίο έτος" } ] } diff --git a/app/javascript/dashboard/i18n/locale/en/campaign.json b/app/javascript/dashboard/i18n/locale/en/campaign.json new file mode 100644 index 000000000..2eed61b19 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/en/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Cancel", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Please enter a valid URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Update", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "There was an error, please try again" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Status", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Edit", + "DELETE": "Delete" + }, + "STATUS": { + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/en/chatlist.json b/app/javascript/dashboard/i18n/locale/en/chatlist.json index 228554789..ef4e0629a 100644 --- a/app/javascript/dashboard/i18n/locale/en/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/en/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Received via email", "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", "REPLY_TO_TWEET": "Reply to this tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/en/contact.json b/app/javascript/dashboard/i18n/locale/en/contact.json index b8d936d22..6a94011a5 100644 --- a/app/javascript/dashboard/i18n/locale/en/contact.json +++ b/app/javascript/dashboard/i18n/locale/en/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Labels available in the account", "REMOVE": "Click on X icon to remove the label", "ADD": "Click on + icon to add the label", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Update labels", "UPDATE_ERROR": "Couldn't update labels, try again." }, "NO_LABELS_TO_ADD": "There are no more labels defined in the account.", - "NO_AVAILABLE_LABELS": "There are no labels added to this conversation." + "NO_AVAILABLE_LABELS": "There are no labels added to this conversation.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mute Conversation", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json index a1184f5db..4d0fcdffc 100644 --- a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Settings", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/en/index.js b/app/javascript/dashboard/i18n/locale/en/index.js index 53d1438c2..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/en/index.js +++ b/app/javascript/dashboard/i18n/locale/en/index.js @@ -1,35 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/en/report.json b/app/javascript/dashboard/i18n/locale/en/report.json index 22e4a1c75..cf2c14a57 100644 --- a/app/javascript/dashboard/i18n/locale/en/report.json +++ b/app/javascript/dashboard/i18n/locale/en/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Last 30 days" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/es/campaign.json b/app/javascript/dashboard/i18n/locale/es/campaign.json new file mode 100644 index 000000000..2c11ca20e --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/es/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campañas", + "SIDEBAR_TXT": "Los mensajes proactivos permiten al cliente enviar mensajes a sus contactos, lo que generaría más conversaciones. Haga clic en Añadir Campaña para crear una nueva campaña. También puede editar o borrar una campaña existente haciendo clic en el botón de Editar o Borrar.", + "HEADER_BTN_TXT": "Crear campaña", + "ADD": { + "TITLE": "Crear campaña", + "DESC": "Los mensajes proactivos permiten al cliente enviar mensajes a sus contactos, lo que generaría más conversaciones.", + "CANCEL_BUTTON_TEXT": "Cancelar", + "CREATE_BUTTON_TEXT": "Crear", + "FORM": { + "TITLE": { + "LABEL": "Título", + "PLACEHOLDER": "Por favor escriba un título para la campaña", + "ERROR": "El título es obligatorio" + }, + "MESSAGE": { + "LABEL": "Mensaje", + "PLACEHOLDER": "Por favor escriba el mensaje para la campaña", + "ERROR": "El mensaje es obligatorio" + }, + "SENT_BY": { + "LABEL": "Enviado por", + "PLACEHOLDER": "Por favor seleccione el contenido de la campaña", + "ERROR": "El remitente es obligatorio" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Por favor escriba el URL", + "ERROR": "Por favor, introduzca una URL válida" + }, + "TIME_ON_PAGE": { + "LABEL": "Tiempo en la página (segundos)", + "PLACEHOLDER": "Por favor escriba la hora", + "ERROR": "La hora en la página es obligatoria" + }, + "ENABLED": "Habilitar campaña", + "SUBMIT": "Añadir campaña" + }, + "API": { + "SUCCESS_MESSAGE": "campaña creada satisfactoriamente", + "ERROR_MESSAGE": "Se presentó un error. Por favor intente nuevamente." + } + }, + "EDIT": { + "TITLE": "Editar campaña", + "UPDATE_BUTTON_TEXT": "Actualizar", + "API": { + "SUCCESS_MESSAGE": "Campaña actualizada satisfactoriamente", + "ERROR_MESSAGE": "Hubo un error, por favor inténtelo de nuevo" + } + }, + "LIST": { + "LOADING_MESSAGE": "Cargando campañas...", + "404": "No hay campañas creadas en esta bandeja.", + "TABLE_HEADER": { + "TITLE": "Título", + "MESSAGE": "Mensaje", + "STATUS": "Estado", + "SENDER": "Remitente", + "URL": "URL", + "TIME_ON_PAGE": "Tiempo (segundos)", + "CREATED_AT": "Creado el" + }, + "BUTTONS": { + "ADD": "Añadir", + "EDIT": "Editar", + "DELETE": "Eliminar" + }, + "STATUS": { + "ENABLED": "Activado", + "DISABLED": "Deshabilitado" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/es/chatlist.json b/app/javascript/dashboard/i18n/locale/es/chatlist.json index afab2cb25..a3be57b99 100644 --- a/app/javascript/dashboard/i18n/locale/es/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/es/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Recibido por correo electrónico", "VIEW_TWEET_IN_TWITTER": "Ver trino en Twitter", "REPLY_TO_TWEET": "Responder a éste trino", - "NO_MESSAGES": "No hay mensajes" + "NO_MESSAGES": "No hay mensajes", + "NO_CONTENT": "No hay contenido disponible" } } diff --git a/app/javascript/dashboard/i18n/locale/es/contact.json b/app/javascript/dashboard/i18n/locale/es/contact.json index 0f0a74ae6..4b795bac1 100644 --- a/app/javascript/dashboard/i18n/locale/es/contact.json +++ b/app/javascript/dashboard/i18n/locale/es/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Etiquetas disponibles en la cuenta", "REMOVE": "Haga clic en el icono X para quitar la etiqueta", "ADD": "Haga clic en el icono + para añadir la etiqueta", + "ADD_BUTTON": "Añadir etiquetas", "UPDATE_BUTTON": "Actualizar etiquetas", "UPDATE_ERROR": "No se han podido actualizar las etiquetas, inténtelo de nuevo." }, "NO_LABELS_TO_ADD": "No hay más etiquetas definidas en la cuenta.", - "NO_AVAILABLE_LABELS": "No hay etiquetas añadidas a esta conversación." + "NO_AVAILABLE_LABELS": "No hay etiquetas añadidas a esta conversación.", + "LABEL_SELECT": { + "TITLE": "Añadir etiquetas", + "PLACEHOLDER": "Buscar etiquetas", + "NO_RESULT": "No se encontraron etiquetas" + } }, "MUTE_CONTACT": "Silenciar Conversación", "UNMUTE_CONTACT": "Dessilenciar conversación", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "Ver detalles" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notas" + }, + "ADD": { + "BUTTON": "Añadir", + "PLACEHOLDER": "Añadir nota", + "TITLE": "Shift + Enter para crear una nota" + }, + "FOOTER": { + "BUTTON": "Ver todas las notas" + } } } diff --git a/app/javascript/dashboard/i18n/locale/es/conversation.json b/app/javascript/dashboard/i18n/locale/es/conversation.json index 02e72b9b9..580875007 100644 --- a/app/javascript/dashboard/i18n/locale/es/conversation.json +++ b/app/javascript/dashboard/i18n/locale/es/conversation.json @@ -11,7 +11,7 @@ "TITLE": "Buscar mensajes", "LOADING_MESSAGE": "Cruzando datos...", "PLACEHOLDER": "Escriba cualquier texto para buscar mensajes", - "NO_MATCHING_RESULTS": "No results found." + "NO_MATCHING_RESULTS": "No se encontraron resultados." }, "UNREAD_MESSAGES": "Mensajes no leídos", "UNREAD_MESSAGE": "Mensaje sin leer", @@ -57,7 +57,7 @@ "VISIBLE_TO_AGENTS": "Nota privada: solo visible para ti y tu equipo", "CHANGE_STATUS": "Estado de la conversación cambiado", "CHANGE_AGENT": "Conversación cambiada de asignatario", - "CHANGE_TEAM": "Conversation team changed", + "CHANGE_TEAM": "Equipo de conversación cambiado", "FILE_SIZE_LIMIT": "El archivo excede el límite de los archivos adjuntos {MAXIMUM_FILE_UPLOAD_SIZE}", "SENT_BY": "Enviado por:", "ASSIGNMENT": { @@ -108,11 +108,11 @@ } }, "CONVERSATION_SIDEBAR": { - "DETAILS_TITLE": "Conversations Details", - "ASSIGNEE_LABEL": "Assigned Agent", - "TEAM_LABEL": "Assigned Team", + "DETAILS_TITLE": "Detalles de la conversación", + "ASSIGNEE_LABEL": "Agente asignado", + "TEAM_LABEL": "Equipo asignado", "SELECT": { - "PLACEHOLDER": "None" + "PLACEHOLDER": "Ninguna" } } } diff --git a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json index ad233e6e9..0e4fa0824 100644 --- a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Ajustes", "COLLABORATORS": "Colaboradores", "CONFIGURATION": "Configuración", + "CAMPAIGN": "Campañas", "PRE_CHAT_FORM": "Pre-formulario de chat", "BUSINESS_HOURS": "Horarios" }, diff --git a/app/javascript/dashboard/i18n/locale/es/index.js b/app/javascript/dashboard/i18n/locale/es/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/es/index.js +++ b/app/javascript/dashboard/i18n/locale/es/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/es/report.json b/app/javascript/dashboard/i18n/locale/es/report.json index df62659a1..ec9cdacbd 100644 --- a/app/javascript/dashboard/i18n/locale/es/report.json +++ b/app/javascript/dashboard/i18n/locale/es/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Últimos 30 días" + }, + { + "id": 2, + "name": "Últimos 3 meses" + }, + { + "id": 3, + "name": "Últimos 6 meses" + }, + { + "id": 4, + "name": "Último año" } ] } diff --git a/app/javascript/dashboard/i18n/locale/es/settings.json b/app/javascript/dashboard/i18n/locale/es/settings.json index a0fa85ab6..7eab53122 100644 --- a/app/javascript/dashboard/i18n/locale/es/settings.json +++ b/app/javascript/dashboard/i18n/locale/es/settings.json @@ -3,7 +3,7 @@ "LINK": "Ajustes del perfil", "TITLE": "Ajustes del perfil", "BTN_TEXT": "Actualizar perfil", - "UPDATE_SUCCESS": "Your profile has been updated successfully", + "UPDATE_SUCCESS": "Tu perfil se ha actualizado correctamente", "PASSWORD_UPDATE_SUCCESS": "Su contraseña se ha cambiado correctamente", "AFTER_EMAIL_CHANGED": "Su perfil ha sido actualizado con éxito, por favor inicie sesión de nuevo cuando sus credenciales de inicio de sesión se hayan cambiado", "FORM": { @@ -19,7 +19,7 @@ "PASSWORD_SECTION": { "TITLE": "Contraseña", "NOTE": "Actualizar tu contraseña restablecería tus entradas en varios dispositivos.", - "BTN_TEXT": "Change password" + "BTN_TEXT": "Cambiar contraseña" }, "ACCESS_TOKEN": { "TITLE": "Token de acceso", diff --git a/app/javascript/dashboard/i18n/locale/fa/campaign.json b/app/javascript/dashboard/i18n/locale/fa/campaign.json new file mode 100644 index 000000000..07ef8ee5c --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/fa/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "انصراف", + "CREATE_BUTTON_TEXT": "ايجاد كردن", + "FORM": { + "TITLE": { + "LABEL": "عنوان", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "پیام", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "ارسال شده توسط", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "لطفا آدرس URL صحیحی وارد کنید" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "اعمال شود", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "خطایی پیش آمد. لطفا دوباره امتحان کنید" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "عنوان", + "MESSAGE": "پیام", + "STATUS": "وضعیت", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "افزودن", + "EDIT": "ویرایش", + "DELETE": "حذف" + }, + "STATUS": { + "ENABLED": "فعال", + "DISABLED": "غیرفعال" + }, + "SENDER": { + "BOT": "ربات" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/fa/chatlist.json b/app/javascript/dashboard/i18n/locale/fa/chatlist.json index 5a5ac3d04..03fdf41d7 100644 --- a/app/javascript/dashboard/i18n/locale/fa/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/fa/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "از طریق ایمیل دریافت شد", "VIEW_TWEET_IN_TWITTER": "مشاهده توییت در توییتر", "REPLY_TO_TWEET": "پاسخ به این توییت", - "NO_MESSAGES": "هیچ پیامی وجود ندارد" + "NO_MESSAGES": "هیچ پیامی وجود ندارد", + "NO_CONTENT": "هیچ محتوایی موجود نیست" } } diff --git a/app/javascript/dashboard/i18n/locale/fa/contact.json b/app/javascript/dashboard/i18n/locale/fa/contact.json index bc0d9c630..c95629749 100644 --- a/app/javascript/dashboard/i18n/locale/fa/contact.json +++ b/app/javascript/dashboard/i18n/locale/fa/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "برچسب‌های موجود در حساب‌کاربری", "REMOVE": "برای پاک کردن برچسب، روی آیکون X کلیک کنید", "ADD": "برای افزودن برچسب بر روی آیکون + کلیک کنید", + "ADD_BUTTON": "افزودن برچسب‌ها", "UPDATE_BUTTON": "تغییر برچسب‌ها", "UPDATE_ERROR": "برچسب‌ها تغییری نکردند، لطفا بعدا امتحان کنید." }, "NO_LABELS_TO_ADD": "هیچ برچسبی در حساب‌کاربری تعریف نشده است.", - "NO_AVAILABLE_LABELS": "هیچ برچسبی به این گفتگو اضافه نشده است." + "NO_AVAILABLE_LABELS": "هیچ برچسبی به این گفتگو اضافه نشده است.", + "LABEL_SELECT": { + "TITLE": "افزودن برچسب‌ها", + "PLACEHOLDER": "جستجو برچسب‌ها", + "NO_RESULT": "هیچ برچسبی یافت نشد" + } }, "MUTE_CONTACT": "بی‌صدا کردن گفتگو", "UNMUTE_CONTACT": "خارج کردن از حالت بی صدا", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "مشاهده جزئیات" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "افزودن", + "PLACEHOLDER": "افزودن یادداشت", + "TITLE": "برای ایجاد یادداشت Shift + Enter را فشار دهید" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json index fb7cdc6de..fba260284 100644 --- a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "تنظیمات", "COLLABORATORS": "همکاران", "CONFIGURATION": "پیکربندی", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "ساعت کاری" }, diff --git a/app/javascript/dashboard/i18n/locale/fa/index.js b/app/javascript/dashboard/i18n/locale/fa/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/fa/index.js +++ b/app/javascript/dashboard/i18n/locale/fa/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/fa/report.json b/app/javascript/dashboard/i18n/locale/fa/report.json index 4a0ef7e8c..208dc152b 100644 --- a/app/javascript/dashboard/i18n/locale/fa/report.json +++ b/app/javascript/dashboard/i18n/locale/fa/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "در ۳۰ روز گذشته" + }, + { + "id": 0, + "name": "۳ ماه گذشته" + }, + { + "id": 0, + "name": "۶ ماه گذشته" + }, + { + "id": 0, + "name": "پارسال" } ] } diff --git a/app/javascript/dashboard/i18n/locale/fa/teamsSettings.json b/app/javascript/dashboard/i18n/locale/fa/teamsSettings.json index 35c837717..1983e9614 100644 --- a/app/javascript/dashboard/i18n/locale/fa/teamsSettings.json +++ b/app/javascript/dashboard/i18n/locale/fa/teamsSettings.json @@ -1,16 +1,16 @@ { "TEAMS_SETTINGS": { - "NEW_TEAM": "Create new team", + "NEW_TEAM": "ایجاد تیم جدید", "HEADER": "تیم‌ها", "SIDEBAR_TXT": "

Teams

Teams let you organize your agents into groups based on their responsibilities.
A user can be part of multiple teams. You can assign conversations to a team when you are working collaboratively.

", "LIST": { "404": "There are no teams created on this account.", - "EDIT_TEAM": "Edit team" + "EDIT_TEAM": "ویرایش تیم" }, "CREATE_FLOW": { "CREATE": { - "TITLE": "Create a new team", - "DESC": "Add a title and description to your new team." + "TITLE": "ایجاد تیم جدید", + "DESC": "عنوان و توضیحاتی به تیم جدید خود اضافه کنید." }, "AGENTS": { "BUTTON_TEXT": "Add agents to team", @@ -37,9 +37,9 @@ }, "EDIT_FLOW": { "CREATE": { - "TITLE": "Edit your team details", - "DESC": "Edit title and description to your team.", - "BUTTON_TEXT": "Update team" + "TITLE": "ویرایش جزئیات تیم خود", + "DESC": "ویرایش عنوان و توضیحات تیم خود.", + "BUTTON_TEXT": "به‌روزرسانی تیم" }, "AGENTS": { "BUTTON_TEXT": "Update agents in team", @@ -48,7 +48,7 @@ }, "WIZARD": [ { - "title": "Team details", + "title": "جزئیات تیم", "route": "settings_teams_edit", "body": "Change name, description and other details." }, @@ -105,20 +105,20 @@ }, "SETTINGS": "تنظیمات", "FORM": { - "UPDATE": "Update team", - "CREATE": "Create team", + "UPDATE": "به‌روزرسانی تیم", + "CREATE": "ایجاد تیم", "NAME": { - "LABEL": "Team name", + "LABEL": "نام تیم", "PLACEHOLDER": "Example: Sales, Customer Support" }, "DESCRIPTION": { - "LABEL": "Team Description", + "LABEL": "توضیحات تیم", "PLACEHOLDER": "Short description about this team." }, "AUTO_ASSIGN": { "LABEL": "Allow auto assign for this team." }, - "SUBMIT_CREATE": "Create team" + "SUBMIT_CREATE": "ایجاد تیم" } } } diff --git a/app/javascript/dashboard/i18n/locale/fi/campaign.json b/app/javascript/dashboard/i18n/locale/fi/campaign.json new file mode 100644 index 000000000..57e3bcf44 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/fi/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Peruuta", + "CREATE_BUTTON_TEXT": "Luo", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Lähettäjä", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Anna kelvollinen URL-osoite" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Päivitä", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Tapahtui virhe, yritä uudelleen" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Tila", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Muokkaa", + "DELETE": "Poista" + }, + "STATUS": { + "ENABLED": "Käytössä", + "DISABLED": "Pois käytöstä" + }, + "SENDER": { + "BOT": "Botti" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/fi/chatlist.json b/app/javascript/dashboard/i18n/locale/fi/chatlist.json index f274c34ab..7529e32eb 100644 --- a/app/javascript/dashboard/i18n/locale/fi/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/fi/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Vastaanotettu sähköpostitse", "VIEW_TWEET_IN_TWITTER": "Näytä twiitti Twitterissä", "REPLY_TO_TWEET": "Vastaa tähän twiittiin", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "Ei Viestejä", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/fi/contact.json b/app/javascript/dashboard/i18n/locale/fi/contact.json index 021fad300..9f4783221 100644 --- a/app/javascript/dashboard/i18n/locale/fi/contact.json +++ b/app/javascript/dashboard/i18n/locale/fi/contact.json @@ -12,7 +12,7 @@ "INITIATED_FROM": "Aloitettu lähteestä", "INITIATED_AT": "Aloitettu lähteestä", "IP_ADDRESS": "IP-osoite", - "NEW_MESSAGE": "New message", + "NEW_MESSAGE": "Uusi viesti", "CONVERSATIONS": { "NO_RECORDS_FOUND": "Tähän yhteystietoon ei liity aikaisempia keskusteluja.", "TITLE": "Edelliset keskustelut" @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Tilissä saatavilla olevat tunnisteet", "REMOVE": "Napsauta X-kuvaketta poistaaksesi tunnisteen", "ADD": "Napsauta + kuvaketta lisätäksesi tunnisteen", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Päivitä tunnisteet", "UPDATE_ERROR": "Tunnisteita ei voitu päivittää, yritä uudelleen." }, "NO_LABELS_TO_ADD": "Tällä tilillä ei ole enempää tunnisteita.", - "NO_AVAILABLE_LABELS": "Tälle keskustelulle ei ole lisätty tunnisteita." + "NO_AVAILABLE_LABELS": "Tälle keskustelulle ei ole lisätty tunnisteita.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mykistä Keskustelu", "UNMUTE_CONTACT": "Poista keskustelun mykistys", @@ -47,9 +53,9 @@ "DESC": "Muokkaa yhteystietoja" }, "CREATE_CONTACT": { - "BUTTON_LABEL": "New Contact", - "TITLE": "Create new contact", - "DESC": "Add basic information details about the contact." + "BUTTON_LABEL": "Uusi kontakti", + "TITLE": "Luo uusi kontakti", + "DESC": "Lisää kontaktin yhteystiedot." }, "CONTACT_FORM": { "FORM": { @@ -103,14 +109,14 @@ } } }, - "SUCCESS_MESSAGE": "Contact saved successfully", + "SUCCESS_MESSAGE": "Kontakti tallennettu onnistuneesti", "CONTACT_ALREADY_EXIST": "Tämä sähköpostiosoite on käytössä toiselle yhteyshenkilölle.", "ERROR_MESSAGE": "Tapahtui virhe, yritä uudelleen" }, "NEW_CONVERSATION": { - "BUTTON_LABEL": "Start conversation", - "TITLE": "New conversation", - "DESC": "Start a new conversation by sending a new message.", + "BUTTON_LABEL": "Aloita keskustelu", + "TITLE": "Uusi keskustelu", + "DESC": "Aloita uusi keskustelu lähettämällä uusi viesti.", "NO_INBOX": "Couldn't find an inbox to initiate a new conversation with this contact.", "FORM": { "TO": { @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/fi/conversation.json b/app/javascript/dashboard/i18n/locale/fi/conversation.json index 33c45eb8c..16bd54c4b 100644 --- a/app/javascript/dashboard/i18n/locale/fi/conversation.json +++ b/app/javascript/dashboard/i18n/locale/fi/conversation.json @@ -32,7 +32,7 @@ "RESOLVE_ACTION": "Ratkaise", "REOPEN_ACTION": "Uudelleenavaa", "OPEN_ACTION": "Avaa", - "OPEN": "Lisää", + "OPEN": "Näytä", "CLOSE": "Sulje", "DETAILS": "tiedot" }, diff --git a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json index 2fdcc5b2c..b858cd044 100644 --- a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Asetukset", "COLLABORATORS": "Yhteistyökumppanit", "CONFIGURATION": "Määritykset", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/fi/index.js b/app/javascript/dashboard/i18n/locale/fi/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/fi/index.js +++ b/app/javascript/dashboard/i18n/locale/fi/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/fi/report.json b/app/javascript/dashboard/i18n/locale/fi/report.json index 5901cc1f6..268c8c890 100644 --- a/app/javascript/dashboard/i18n/locale/fi/report.json +++ b/app/javascript/dashboard/i18n/locale/fi/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Viimeiset 30 päivää" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/fr/campaign.json b/app/javascript/dashboard/i18n/locale/fr/campaign.json new file mode 100644 index 000000000..80a2b1796 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/fr/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Annuler", + "CREATE_BUTTON_TEXT": "Créer", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Envoyé par", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Veuillez entrer une URL valide" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Mettre à jour", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Une erreur est survenue, veuillez réessayer" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "État", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Modifier", + "DELETE": "Supprimer" + }, + "STATUS": { + "ENABLED": "Activé", + "DISABLED": "Désactivé" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/fr/chatlist.json b/app/javascript/dashboard/i18n/locale/fr/chatlist.json index 9dc4e14bf..4319d6466 100644 --- a/app/javascript/dashboard/i18n/locale/fr/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/fr/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Reçu par courriel", "VIEW_TWEET_IN_TWITTER": "Voir le tweet sur Twitter", "REPLY_TO_TWEET": "Répondre à ce tweet", - "NO_MESSAGES": "Pas de messages" + "NO_MESSAGES": "Pas de messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/fr/contact.json b/app/javascript/dashboard/i18n/locale/fr/contact.json index 675138d2a..715eda37d 100644 --- a/app/javascript/dashboard/i18n/locale/fr/contact.json +++ b/app/javascript/dashboard/i18n/locale/fr/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Étiquettes disponibles dans le compte", "REMOVE": "Cliquez sur l'icône X pour supprimer l'étiquette", "ADD": "Cliquez sur l'icône + pour ajouter l'étiquette", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Mettre à jour les étiquettes", "UPDATE_ERROR": "Impossible de mettre à jour les étiquettes. Veuillez réessayer." }, "NO_LABELS_TO_ADD": "Il n'y a pas d'autres étiquettes définies dans le compte.", - "NO_AVAILABLE_LABELS": "Aucune étiquette n'a été ajoutée à cette conversation." + "NO_AVAILABLE_LABELS": "Aucune étiquette n'a été ajoutée à cette conversation.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mettre la conversation en sourdine", "UNMUTE_CONTACT": "Réactiver le son de conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "Voir les détails" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json index d204a58b0..82a6d7dff 100644 --- a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Paramètres", "COLLABORATORS": "Collaborateurs", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Formulaire avant chat", "BUSINESS_HOURS": "Heures de bureau" }, diff --git a/app/javascript/dashboard/i18n/locale/fr/index.js b/app/javascript/dashboard/i18n/locale/fr/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/fr/index.js +++ b/app/javascript/dashboard/i18n/locale/fr/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/fr/report.json b/app/javascript/dashboard/i18n/locale/fr/report.json index ed05c942c..82d3dd070 100644 --- a/app/javascript/dashboard/i18n/locale/fr/report.json +++ b/app/javascript/dashboard/i18n/locale/fr/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "30 derniers jours" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/hi/campaign.json b/app/javascript/dashboard/i18n/locale/hi/campaign.json new file mode 100644 index 000000000..2eed61b19 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/hi/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Cancel", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Please enter a valid URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Update", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "There was an error, please try again" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Status", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Edit", + "DELETE": "Delete" + }, + "STATUS": { + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/hi/chatlist.json b/app/javascript/dashboard/i18n/locale/hi/chatlist.json index 228554789..ef4e0629a 100644 --- a/app/javascript/dashboard/i18n/locale/hi/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/hi/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Received via email", "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", "REPLY_TO_TWEET": "Reply to this tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/hi/contact.json b/app/javascript/dashboard/i18n/locale/hi/contact.json index b8d936d22..6a94011a5 100644 --- a/app/javascript/dashboard/i18n/locale/hi/contact.json +++ b/app/javascript/dashboard/i18n/locale/hi/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Labels available in the account", "REMOVE": "Click on X icon to remove the label", "ADD": "Click on + icon to add the label", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Update labels", "UPDATE_ERROR": "Couldn't update labels, try again." }, "NO_LABELS_TO_ADD": "There are no more labels defined in the account.", - "NO_AVAILABLE_LABELS": "There are no labels added to this conversation." + "NO_AVAILABLE_LABELS": "There are no labels added to this conversation.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mute Conversation", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json index 13d97f3b0..e03e40f39 100644 --- a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Settings", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/hi/index.js b/app/javascript/dashboard/i18n/locale/hi/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/hi/index.js +++ b/app/javascript/dashboard/i18n/locale/hi/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/hi/report.json b/app/javascript/dashboard/i18n/locale/hi/report.json index 22e4a1c75..cf2c14a57 100644 --- a/app/javascript/dashboard/i18n/locale/hi/report.json +++ b/app/javascript/dashboard/i18n/locale/hi/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Last 30 days" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/hu/campaign.json b/app/javascript/dashboard/i18n/locale/hu/campaign.json new file mode 100644 index 000000000..3dd1c8833 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/hu/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Mégse", + "CREATE_BUTTON_TEXT": "Létrehozás", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Üzenet", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Küldő", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Kérjük helyes URL-t adj meg" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Frissítés", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Hiba történt, kérjük próbáld újra" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Üzenet", + "STATUS": "Státusz", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Szerkesztés", + "DELETE": "Törlés" + }, + "STATUS": { + "ENABLED": "Engedélyezve", + "DISABLED": "Letiltva" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/hu/chatlist.json b/app/javascript/dashboard/i18n/locale/hu/chatlist.json index ad92ed50a..35f293fc6 100644 --- a/app/javascript/dashboard/i18n/locale/hu/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/hu/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "E-mailen keresztül érkezett", "VIEW_TWEET_IN_TWITTER": "Üzenet megtekintése Twitteren", "REPLY_TO_TWEET": "Válasz", - "NO_MESSAGES": "Nincs üzenet" + "NO_MESSAGES": "Nincs üzenet", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/hu/contact.json b/app/javascript/dashboard/i18n/locale/hu/contact.json index f6253f06a..378a2413a 100644 --- a/app/javascript/dashboard/i18n/locale/hu/contact.json +++ b/app/javascript/dashboard/i18n/locale/hu/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "A fiókhoz tartozó cimkék", "REMOVE": "Kattints az X ikonra a cimke eltávolításához", "ADD": "Kattints a + ikonra a cimke hozzáadásához", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Cimkék frissítése", "UPDATE_ERROR": "Cimke frissítés sikertelen, kérjük próbáld később." }, "NO_LABELS_TO_ADD": "Ebben a fiókban már nincsenek további cimkék.", - "NO_AVAILABLE_LABELS": "Nincs több cimke ehhez a beszélgetéshez." + "NO_AVAILABLE_LABELS": "Nincs több cimke ehhez a beszélgetéshez.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Beszélgetés elnémítása", "UNMUTE_CONTACT": "Beszélgetés elnémításának feloldása", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "Részletek megtekintése" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json index a0a9c777a..615516429 100644 --- a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Beállítások", "COLLABORATORS": "Csapattagok", "CONFIGURATION": "Beállítások", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Chat előtti űrlap", "BUSINESS_HOURS": "Nyitvatartás" }, diff --git a/app/javascript/dashboard/i18n/locale/hu/index.js b/app/javascript/dashboard/i18n/locale/hu/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/hu/index.js +++ b/app/javascript/dashboard/i18n/locale/hu/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/hu/report.json b/app/javascript/dashboard/i18n/locale/hu/report.json index c039c0d82..1a537be20 100644 --- a/app/javascript/dashboard/i18n/locale/hu/report.json +++ b/app/javascript/dashboard/i18n/locale/hu/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Utolsó 30 nap" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/id/campaign.json b/app/javascript/dashboard/i18n/locale/id/campaign.json new file mode 100644 index 000000000..9703a7ce0 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/id/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Batalkan", + "CREATE_BUTTON_TEXT": "Buat", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Pesan", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Dikirim oleh", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Harap masukkan URL yang valid" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Perbarui", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Terjadi kesalahan, harap coba lagi" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Pesan", + "STATUS": "Status", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Edit", + "DELETE": "Hapus" + }, + "STATUS": { + "ENABLED": "Diaktifkan", + "DISABLED": "Nonaktif" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/id/chatlist.json b/app/javascript/dashboard/i18n/locale/id/chatlist.json index 2550d9cfc..0fa657567 100644 --- a/app/javascript/dashboard/i18n/locale/id/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/id/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Diterima melalui email", "VIEW_TWEET_IN_TWITTER": "Lihat tweet di Twitter", "REPLY_TO_TWEET": "Balas tweet ini", - "NO_MESSAGES": "Tidak Ada Pesan" + "NO_MESSAGES": "Tidak Ada Pesan", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/id/contact.json b/app/javascript/dashboard/i18n/locale/id/contact.json index 4bb39dc7a..56f590502 100644 --- a/app/javascript/dashboard/i18n/locale/id/contact.json +++ b/app/javascript/dashboard/i18n/locale/id/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Label tersedia di akun", "REMOVE": "Klik ikon X untuk menghapus label", "ADD": "Klik ikon + untuk menambah label", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Memperbaharui label", "UPDATE_ERROR": "Tidak dapat memperbarui label, coba lagi." }, "NO_LABELS_TO_ADD": "Tidak ada lagi label yang ditentukan di akun.", - "NO_AVAILABLE_LABELS": "Tidak ada label yang ditambahkan ke percakapan ini." + "NO_AVAILABLE_LABELS": "Tidak ada label yang ditambahkan ke percakapan ini.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mute Percakapan", "UNMUTE_CONTACT": "Unmute Percakapan", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "Lihat detail" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json index 668661cac..aa79cbbc8 100644 --- a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Pengaturan", "COLLABORATORS": "Kolaborator", "CONFIGURATION": "Konfigurasi", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Formulir Pra Obrolan", "BUSINESS_HOURS": "Jam Kerja" }, diff --git a/app/javascript/dashboard/i18n/locale/id/index.js b/app/javascript/dashboard/i18n/locale/id/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/id/index.js +++ b/app/javascript/dashboard/i18n/locale/id/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/id/report.json b/app/javascript/dashboard/i18n/locale/id/report.json index bdd2f8b44..27790ae5d 100644 --- a/app/javascript/dashboard/i18n/locale/id/report.json +++ b/app/javascript/dashboard/i18n/locale/id/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "30 hari terakhir" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/it/campaign.json b/app/javascript/dashboard/i18n/locale/it/campaign.json new file mode 100644 index 000000000..3059eaa28 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/it/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "annulla", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Messaggio", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Inserisci un URL valido" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Aggiornamento", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "There was an error, please try again" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Messaggio", + "STATUS": "Stato", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Modifica", + "DELETE": "Cancellare" + }, + "STATUS": { + "ENABLED": "Abilitato", + "DISABLED": "Disabilitato" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/it/chatlist.json b/app/javascript/dashboard/i18n/locale/it/chatlist.json index 1c5ae61b5..f4bcd187c 100644 --- a/app/javascript/dashboard/i18n/locale/it/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/it/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Received via email", "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", "REPLY_TO_TWEET": "Reply to this tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/it/contact.json b/app/javascript/dashboard/i18n/locale/it/contact.json index be4a7e8ec..1bb13b561 100644 --- a/app/javascript/dashboard/i18n/locale/it/contact.json +++ b/app/javascript/dashboard/i18n/locale/it/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Labels available in the account", "REMOVE": "Click on X icon to remove the label", "ADD": "Click on + icon to add the label", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Update labels", "UPDATE_ERROR": "Couldn't update labels, try again." }, "NO_LABELS_TO_ADD": "There are no more labels defined in the account.", - "NO_AVAILABLE_LABELS": "There are no labels added to this conversation." + "NO_AVAILABLE_LABELS": "There are no labels added to this conversation.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mute Conversation", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json index d48bd44c9..7e55f017e 100644 --- a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Impostazioni", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/it/index.js b/app/javascript/dashboard/i18n/locale/it/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/it/index.js +++ b/app/javascript/dashboard/i18n/locale/it/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/it/report.json b/app/javascript/dashboard/i18n/locale/it/report.json index 134ba9e4e..e8dc548a3 100644 --- a/app/javascript/dashboard/i18n/locale/it/report.json +++ b/app/javascript/dashboard/i18n/locale/it/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Ultimi 30 giorni" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/ja/campaign.json b/app/javascript/dashboard/i18n/locale/ja/campaign.json new file mode 100644 index 000000000..d1553b40f --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ja/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "キャンセル", + "CREATE_BUTTON_TEXT": "作成", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "メッセージ", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "有効な URL を入力してください" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "更新", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "エラーが発生しました。もう一度お試しください。" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "メッセージ", + "STATUS": "状況", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "編集", + "DELETE": "削除" + }, + "STATUS": { + "ENABLED": "有効です", + "DISABLED": "無効です" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/ja/chatlist.json b/app/javascript/dashboard/i18n/locale/ja/chatlist.json index 71aa0a41b..b46ac89eb 100644 --- a/app/javascript/dashboard/i18n/locale/ja/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ja/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "メールで受信しました", "VIEW_TWEET_IN_TWITTER": "ツイートをTwitterで見る", "REPLY_TO_TWEET": "このつぶやきに返信", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/ja/contact.json b/app/javascript/dashboard/i18n/locale/ja/contact.json index addffbe89..4975d8f6d 100644 --- a/app/javascript/dashboard/i18n/locale/ja/contact.json +++ b/app/javascript/dashboard/i18n/locale/ja/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "アカウントで利用可能なラベル名", "REMOVE": "ラベルを削除するには×アイコンをクリックします", "ADD": "+アイコンをクリックしてラベルを追加", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "ラベルの更新", "UPDATE_ERROR": "ラベルを更新できませんでした。再度お試し下さい。" }, "NO_LABELS_TO_ADD": "アカウントに定義されているラベルがありません。", - "NO_AVAILABLE_LABELS": "この会話に追加されたラベルはありません。" + "NO_AVAILABLE_LABELS": "この会話に追加されたラベルはありません。", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "会話をミュート", "UNMUTE_CONTACT": "Unmute Conversation", @@ -121,7 +127,7 @@ "ERROR": "Select an inbox" }, "MESSAGE": { - "LABEL": "Message", + "LABEL": "メッセージ", "PLACEHOLDER": "Write your message here", "ERROR": "Message can't be empty" }, @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json index 9de7d7b1d..47bd7eaa6 100644 --- a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "設定", "COLLABORATORS": "共同編集者", "CONFIGURATION": "設定", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/ja/index.js b/app/javascript/dashboard/i18n/locale/ja/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/ja/index.js +++ b/app/javascript/dashboard/i18n/locale/ja/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/ja/report.json b/app/javascript/dashboard/i18n/locale/ja/report.json index ceb6e7fa8..e2dd96880 100644 --- a/app/javascript/dashboard/i18n/locale/ja/report.json +++ b/app/javascript/dashboard/i18n/locale/ja/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "過去 30 日間" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/ko/campaign.json b/app/javascript/dashboard/i18n/locale/ko/campaign.json new file mode 100644 index 000000000..d8a2ed7ac --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ko/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "취소", + "CREATE_BUTTON_TEXT": "만들기", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "보낸 사람", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "올바른 URL을 입력하십시오." + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "업데이트", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "오류가 발생했습니다. 다시 시도하십시오." + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "상태", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "수정", + "DELETE": "삭제" + }, + "STATUS": { + "ENABLED": "사용함", + "DISABLED": "사용 안 함" + }, + "SENDER": { + "BOT": "봇" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/ko/chatlist.json b/app/javascript/dashboard/i18n/locale/ko/chatlist.json index ecd98b66c..2078a2193 100644 --- a/app/javascript/dashboard/i18n/locale/ko/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ko/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "이메일을 통해 수신됨", "VIEW_TWEET_IN_TWITTER": "트위터에서 트윗 보기", "REPLY_TO_TWEET": "트윗에 응답하기", - "NO_MESSAGES": "메시지 없음" + "NO_MESSAGES": "메시지 없음", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/ko/contact.json b/app/javascript/dashboard/i18n/locale/ko/contact.json index 67b8758ac..52ac02c1b 100644 --- a/app/javascript/dashboard/i18n/locale/ko/contact.json +++ b/app/javascript/dashboard/i18n/locale/ko/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "계정에서 사용할 수 있는 라벨", "REMOVE": "라벨을 제거하려면 X 아이콘을 클릭하십시오.", "ADD": "라벨을 추가하려면 + 아이콘을 클릭하십시오.", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "라벨 업데이트", "UPDATE_ERROR": "라벨을 업데이트할 수 없습니다. 다시 시도하십시오." }, "NO_LABELS_TO_ADD": "계정에는 더 이상 라벨이 정의되어 있지 않습니다.", - "NO_AVAILABLE_LABELS": "이 대화에 추가된 라벨이 없습니다." + "NO_AVAILABLE_LABELS": "이 대화에 추가된 라벨이 없습니다.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "대화 음소거", "UNMUTE_CONTACT": "대화 음소거 해제", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "상세보기" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json index eacde87d4..f492f69f9 100644 --- a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "설정", "COLLABORATORS": "협력자", "CONFIGURATION": "설치", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "대화 전 설문", "BUSINESS_HOURS": "영업시간" }, diff --git a/app/javascript/dashboard/i18n/locale/ko/index.js b/app/javascript/dashboard/i18n/locale/ko/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/ko/index.js +++ b/app/javascript/dashboard/i18n/locale/ko/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/ko/report.json b/app/javascript/dashboard/i18n/locale/ko/report.json index f69473303..57f0786af 100644 --- a/app/javascript/dashboard/i18n/locale/ko/report.json +++ b/app/javascript/dashboard/i18n/locale/ko/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "지난 30일" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/ml/campaign.json b/app/javascript/dashboard/i18n/locale/ml/campaign.json new file mode 100644 index 000000000..34628226f --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ml/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "റദ്ദാക്കുക", + "CREATE_BUTTON_TEXT": "സൃഷ്ടിക്കുക", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "ദയവായി സാധുവായ ഒരു യുആർഎൽ നൽകുക" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "അപ്‌ഡേറ്റ്", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "ഒരു പിശക് ഉണ്ടായിരുന്നു, ദയവായി വീണ്ടും ശ്രമിക്കുക" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "സ്റ്റാറ്റസ്", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "എഡിറ്റുചെയ്യുക", + "DELETE": "ഇല്ലാതാക്കുക" + }, + "STATUS": { + "ENABLED": "പ്രവർത്തനക്ഷമമാക്കി", + "DISABLED": "പ്രവർത്തനരഹിതമാക്കി" + }, + "SENDER": { + "BOT": "ബോട്ട്" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/ml/chatlist.json b/app/javascript/dashboard/i18n/locale/ml/chatlist.json index 7a0db1357..06ce7caeb 100644 --- a/app/javascript/dashboard/i18n/locale/ml/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ml/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "ഇമെയിൽ വഴി ലഭിച്ചു", "VIEW_TWEET_IN_TWITTER": "ട്വിറ്ററിൽ ട്വീറ്റ് കാണുക", "REPLY_TO_TWEET": "ഈ ട്വീറ്റിന് മറുപടി നൽകുക", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/ml/contact.json b/app/javascript/dashboard/i18n/locale/ml/contact.json index a12cf2ea6..d2af1ebb6 100644 --- a/app/javascript/dashboard/i18n/locale/ml/contact.json +++ b/app/javascript/dashboard/i18n/locale/ml/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "അക്കൗണ്ടിൽ ലേബലുകൾ ലഭ്യമാണ്", "REMOVE": "ലേബൽ നീക്കംചെയ്യുന്നതിന് എക്സ് ഐക്കണിൽ ക്ലിക്കുചെയ്യുക", "ADD": "ലേബൽ ചേർക്കാൻ + ഐക്കണിൽ ക്ലിക്കുചെയ്യുക", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "ലേബലുകൾ അപ്‌ഡേറ്റുചെയ്യുക", "UPDATE_ERROR": "ലേബലുകൾ അപ്‌ഡേറ്റ് ചെയ്യാൻ കഴിഞ്ഞില്ല, വീണ്ടും ശ്രമിക്കുക." }, "NO_LABELS_TO_ADD": "അക്കൗണ്ടിൽ കൂടുതൽ ലേബലുകൾ നിർവചിച്ചിട്ടില്ല.", - "NO_AVAILABLE_LABELS": "ഈ സംഭാഷണത്തിലേക്ക് ലേബലുകളൊന്നും ചേർത്തിട്ടില്ല." + "NO_AVAILABLE_LABELS": "ഈ സംഭാഷണത്തിലേക്ക് ലേബലുകളൊന്നും ചേർത്തിട്ടില്ല.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "സംഭാഷണം ഒച്ചയിലാതാക്കുക", "UNMUTE_CONTACT": "സംഭാഷണം നിശബ്ദമാക്കുക", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json index 41adc4945..341b1a217 100644 --- a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "ക്രമീകരണങ്ങൾ", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/ml/index.js b/app/javascript/dashboard/i18n/locale/ml/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/ml/index.js +++ b/app/javascript/dashboard/i18n/locale/ml/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/ml/report.json b/app/javascript/dashboard/i18n/locale/ml/report.json index 4a598143c..41080ccd0 100644 --- a/app/javascript/dashboard/i18n/locale/ml/report.json +++ b/app/javascript/dashboard/i18n/locale/ml/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "കഴിഞ്ഞ 30 ദിവസം" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/ne/campaign.json b/app/javascript/dashboard/i18n/locale/ne/campaign.json new file mode 100644 index 000000000..2eed61b19 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ne/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Cancel", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Please enter a valid URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Update", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "There was an error, please try again" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Status", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Edit", + "DELETE": "Delete" + }, + "STATUS": { + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/ne/chatlist.json b/app/javascript/dashboard/i18n/locale/ne/chatlist.json index 228554789..ef4e0629a 100644 --- a/app/javascript/dashboard/i18n/locale/ne/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ne/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Received via email", "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", "REPLY_TO_TWEET": "Reply to this tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/ne/contact.json b/app/javascript/dashboard/i18n/locale/ne/contact.json index 52e42bc60..b00c7c3d4 100644 --- a/app/javascript/dashboard/i18n/locale/ne/contact.json +++ b/app/javascript/dashboard/i18n/locale/ne/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Labels available in the account", "REMOVE": "Click on X icon to remove the label", "ADD": "Click on + icon to add the label", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Update labels", "UPDATE_ERROR": "Couldn't update labels, try again." }, "NO_LABELS_TO_ADD": "There are no more labels defined in the account.", - "NO_AVAILABLE_LABELS": "There are no labels added to this conversation." + "NO_AVAILABLE_LABELS": "There are no labels added to this conversation.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mute Conversation", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json index a1184f5db..4d0fcdffc 100644 --- a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Settings", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/ne/index.js b/app/javascript/dashboard/i18n/locale/ne/index.js new file mode 100644 index 000000000..cf1dda7fe --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ne/index.js @@ -0,0 +1,37 @@ +import { default as _agentMgmt } from './agentMgmt.json'; +import { default as _campaign } from './campaign.json'; +import { default as _cannedMgmt } from './cannedMgmt.json'; +import { default as _chatlist } from './chatlist.json'; +import { default as _contact } from './contact.json'; +import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; +import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _login } from './login.json'; +import { default as _report } from './report.json'; +import { default as _resetPassword } from './resetPassword.json'; +import { default as _setNewPassword } from './setNewPassword.json'; +import { default as _settings } from './settings.json'; +import { default as _signup } from './signup.json'; +import { default as _teamsSettings } from './teamsSettings.json'; + +export default { + ..._agentMgmt, + ..._campaign, + ..._cannedMgmt, + ..._chatlist, + ..._contact, + ..._conversation, + ..._generalSettings, + ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, + ..._login, + ..._report, + ..._resetPassword, + ..._setNewPassword, + ..._settings, + ..._signup, + ..._teamsSettings, +}; diff --git a/app/javascript/dashboard/i18n/locale/ne/report.json b/app/javascript/dashboard/i18n/locale/ne/report.json index 22e4a1c75..cf2c14a57 100644 --- a/app/javascript/dashboard/i18n/locale/ne/report.json +++ b/app/javascript/dashboard/i18n/locale/ne/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Last 30 days" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/nl/campaign.json b/app/javascript/dashboard/i18n/locale/nl/campaign.json new file mode 100644 index 000000000..6314848a8 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/nl/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Annuleren", + "CREATE_BUTTON_TEXT": "Aanmaken", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Voer een geldige URL in" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Vernieuwen", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Er is een fout opgetreden, probeer het opnieuw" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Status", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Bewerken", + "DELETE": "Verwijderen" + }, + "STATUS": { + "ENABLED": "Ingeschakeld", + "DISABLED": "Uitgeschakeld" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/nl/chatlist.json b/app/javascript/dashboard/i18n/locale/nl/chatlist.json index 9457f267c..24d6d4865 100644 --- a/app/javascript/dashboard/i18n/locale/nl/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/nl/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Received via email", "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", "REPLY_TO_TWEET": "Reply to this tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/nl/contact.json b/app/javascript/dashboard/i18n/locale/nl/contact.json index f5b168577..848a1523c 100644 --- a/app/javascript/dashboard/i18n/locale/nl/contact.json +++ b/app/javascript/dashboard/i18n/locale/nl/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Labels beschikbaar in het account", "REMOVE": "Klik op het X-pictogram om het label te verwijderen", "ADD": "Klik op + pictogram om het label toe te voegen", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Labels bijwerken", "UPDATE_ERROR": "Kon labels niet updaten, probeer het opnieuw." }, "NO_LABELS_TO_ADD": "There are no more labels defined in the account.", - "NO_AVAILABLE_LABELS": "Er zijn geen labels toegevoegd aan dit gesprek." + "NO_AVAILABLE_LABELS": "Er zijn geen labels toegevoegd aan dit gesprek.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Gesprek dempen", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json index e7372877a..f136d7153 100644 --- a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Instellingen", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/nl/index.js b/app/javascript/dashboard/i18n/locale/nl/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/nl/index.js +++ b/app/javascript/dashboard/i18n/locale/nl/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/nl/report.json b/app/javascript/dashboard/i18n/locale/nl/report.json index bbe2293ab..96d77ba49 100644 --- a/app/javascript/dashboard/i18n/locale/nl/report.json +++ b/app/javascript/dashboard/i18n/locale/nl/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Laatste 30 dagen" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/no/campaign.json b/app/javascript/dashboard/i18n/locale/no/campaign.json new file mode 100644 index 000000000..f3d9c1dc2 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/no/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Avbryt", + "CREATE_BUTTON_TEXT": "Opprett", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sendt av", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Vennligst skriv inn en gyldig URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Oppdater", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Det oppstod en feil. Prøv igjen" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Satus", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Rediger", + "DELETE": "Slett" + }, + "STATUS": { + "ENABLED": "Aktivert", + "DISABLED": "Deaktivert" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/no/chatlist.json b/app/javascript/dashboard/i18n/locale/no/chatlist.json index 1d021333f..d174f0454 100644 --- a/app/javascript/dashboard/i18n/locale/no/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/no/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Mottatt via e-post", "VIEW_TWEET_IN_TWITTER": "Vis tweet i Twitter", "REPLY_TO_TWEET": "Svar på denne tweeten", - "NO_MESSAGES": "Ingen meldinger" + "NO_MESSAGES": "Ingen meldinger", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/no/contact.json b/app/javascript/dashboard/i18n/locale/no/contact.json index fa51cea65..2da471d42 100644 --- a/app/javascript/dashboard/i18n/locale/no/contact.json +++ b/app/javascript/dashboard/i18n/locale/no/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Etiketter tilgjengelig i kontoen", "REMOVE": "Klikk på X ikonet for å fjerne etiketten", "ADD": "Klikk på + ikonet for å legge til etiketten", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Oppdater etiketter", "UPDATE_ERROR": "Kunne ikke oppdatere etiketter, prøv på nytt." }, "NO_LABELS_TO_ADD": "Det er ingen flere etiketter definert i kontoen.", - "NO_AVAILABLE_LABELS": "Det er ingen etiketter lagt til i denne samtalen." + "NO_AVAILABLE_LABELS": "Det er ingen etiketter lagt til i denne samtalen.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Demp samtale", "UNMUTE_CONTACT": "Skru av demping", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json index 37a1ccd8a..ba825fb6d 100644 --- a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Innstillinger", "COLLABORATORS": "Samarbeidspartnere", "CONFIGURATION": "Konfigurasjon", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/no/index.js b/app/javascript/dashboard/i18n/locale/no/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/no/index.js +++ b/app/javascript/dashboard/i18n/locale/no/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/no/report.json b/app/javascript/dashboard/i18n/locale/no/report.json index 97ca6b427..578a2012f 100644 --- a/app/javascript/dashboard/i18n/locale/no/report.json +++ b/app/javascript/dashboard/i18n/locale/no/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Siste 30 dager" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/pl/campaign.json b/app/javascript/dashboard/i18n/locale/pl/campaign.json new file mode 100644 index 000000000..581f2fd4e --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/pl/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Kampania", + "SIDEBAR_TXT": "Proaktywne wiadomości pozwalają klientowi wysyłać wiadomości do swoich kontaktów, co powoduje więcej rozmów. Kliknij na Dodaj kampanię, aby stworzyć nową kampanię. Możesz też edytować lub usunąć istniejącą kampanię poprzez kliknięcie na przycisk Edytuj lub Usuń.", + "HEADER_BTN_TXT": "Stwórz kampanię", + "ADD": { + "TITLE": "Stwórz kampanię", + "DESC": "Proaktywne wiadomości pozwalają klientowi wysyłać wiadomości do swoich kontaktów, co powoduje więcej rozmów.", + "CANCEL_BUTTON_TEXT": "Anuluj", + "CREATE_BUTTON_TEXT": "Stwórz", + "FORM": { + "TITLE": { + "LABEL": "Tytuł", + "PLACEHOLDER": "Wprowadź tytuł kampanii", + "ERROR": "Tytuł jest wymagany" + }, + "MESSAGE": { + "LABEL": "Wiadomość", + "PLACEHOLDER": "Wprowadź wiadomość dla kampanii", + "ERROR": "Wiadomość jest wymagana" + }, + "SENT_BY": { + "LABEL": "Wysłane przez", + "PLACEHOLDER": "Proszę wybrać treść kampanii", + "ERROR": "Nadawca jest wymagany" + }, + "END_POINT": { + "LABEL": "Adres URL", + "PLACEHOLDER": "Wprowadź adres URL", + "ERROR": "Wprowadź poprawny adres URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Czas na stronie (w sekundach)", + "PLACEHOLDER": "Wprowadź czas", + "ERROR": "Czas na stronie jest wymagany" + }, + "ENABLED": "Włącz kampanię", + "SUBMIT": "Dodaj kampanię" + }, + "API": { + "SUCCESS_MESSAGE": "Kampania została utworzona pomyślnie", + "ERROR_MESSAGE": "Wystąpił błąd, spróbuj ponownie." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Aktualizuj", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Wystąpił błąd, spróbuj ponownie" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "Brak kampanii stworzonych dla tej skrzynki odbiorczej.", + "TABLE_HEADER": { + "TITLE": "Tytuł", + "MESSAGE": "Wiadomość", + "STATUS": "Status", + "SENDER": "Sender", + "URL": "Adres URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Dodaj", + "EDIT": "Edytuj", + "DELETE": "Usuń" + }, + "STATUS": { + "ENABLED": "Włączone", + "DISABLED": "Wyłączone" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/pl/chatlist.json b/app/javascript/dashboard/i18n/locale/pl/chatlist.json index 4cdc30cec..358b592d6 100644 --- a/app/javascript/dashboard/i18n/locale/pl/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/pl/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Otrzymano przez e-mail", "VIEW_TWEET_IN_TWITTER": "Zobacz tweet na Twitterze", "REPLY_TO_TWEET": "Odpowiedz na ten tweet", - "NO_MESSAGES": "Brak wiadomości" + "NO_MESSAGES": "Brak wiadomości", + "NO_CONTENT": "Brak treści" } } diff --git a/app/javascript/dashboard/i18n/locale/pl/contact.json b/app/javascript/dashboard/i18n/locale/pl/contact.json index 82305f6c1..f761ab4fc 100644 --- a/app/javascript/dashboard/i18n/locale/pl/contact.json +++ b/app/javascript/dashboard/i18n/locale/pl/contact.json @@ -12,7 +12,7 @@ "INITIATED_FROM": "Zainicjowano z", "INITIATED_AT": "Zainicjowano w", "IP_ADDRESS": "Adres IP", - "NEW_MESSAGE": "New message", + "NEW_MESSAGE": "Nowa wiadomość", "CONVERSATIONS": { "NO_RECORDS_FOUND": "Brak poprzednich rozmów powiązanych z tym kontaktem.", "TITLE": "Poprzednie rozmowy" @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Etykiety dostępne na koncie", "REMOVE": "Kliknij na ikonę X, aby usunąć etykietę", "ADD": "Kliknij na ikonę +, aby dodać etykietę", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Zaktualizuj etykiety", "UPDATE_ERROR": "Nie udało się zaktualizować etykiet, spróbuj ponownie." }, "NO_LABELS_TO_ADD": "Nie ma więcej etykiet zdefiniowanych na koncie.", - "NO_AVAILABLE_LABELS": "Do tej rozmowy nie dodano żadnych etykiet." + "NO_AVAILABLE_LABELS": "Do tej rozmowy nie dodano żadnych etykiet.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Wycisz rozmowę", "UNMUTE_CONTACT": "Wyłącz wyciszenie rozmowy", @@ -73,8 +79,8 @@ "PHONE_NUMBER": { "PLACEHOLDER": "Wprowadź numer telefonu kontaktu", "LABEL": "Numer telefonu", - "HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]", - "ERROR": "Phone number should be either empty or of E.164 format" + "HELP": "Numer telefonu powinien mieć format E.164, np. +1415555555 [+][kod krajowy][kod kierunkowy][numer telefonu]", + "ERROR": "Numer telefonu powinien być pusty lub w formacie E.164" }, "LOCATION": { "PLACEHOLDER": "Wprowadź lokalizację kontaktu", @@ -108,27 +114,27 @@ "ERROR_MESSAGE": "Wystąpił błąd, spróbuj ponownie" }, "NEW_CONVERSATION": { - "BUTTON_LABEL": "Start conversation", + "BUTTON_LABEL": "Rozpocznij rozmowę", "TITLE": "Nowa rozmowa", - "DESC": "Start a new conversation by sending a new message.", - "NO_INBOX": "Couldn't find an inbox to initiate a new conversation with this contact.", + "DESC": "Rozpocznij nową rozmowę wysyłając wiadomość.", + "NO_INBOX": "Nie można odnaleźć skrzynki odbiorczej do rozpoczęcia nowej rozmowy z tym kontaktem.", "FORM": { "TO": { - "LABEL": "To" + "LABEL": "Do" }, "INBOX": { - "LABEL": "Inbox", - "ERROR": "Select an inbox" + "LABEL": "Skrzynka odbiorcza", + "ERROR": "Wybierz skrzynkę odbiorczą" }, "MESSAGE": { "LABEL": "Wiadomość", - "PLACEHOLDER": "Write your message here", - "ERROR": "Message can't be empty" + "PLACEHOLDER": "Wpisz swoją wiadomość tutaj", + "ERROR": "Wiadomość nie może być pusta" }, - "SUBMIT": "Send message", + "SUBMIT": "Wyślij wiadomość", "CANCEL": "Anuluj", - "SUCCESS_MESSAGE": "Message sent!", - "ERROR_MESSAGE": "Couldn't send! try again" + "SUCCESS_MESSAGE": "Wiadomość wysłana!", + "ERROR_MESSAGE": "Nie udało się wysłać! Spróbuj ponownie" } }, "CONTACTS_PAGE": { @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "Wyświetl szczegóły" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notatki" + }, + "ADD": { + "BUTTON": "Dodaj", + "PLACEHOLDER": "Dodaj notatkę", + "TITLE": "Shift + Enter by utworzyć notatkę" + }, + "FOOTER": { + "BUTTON": "Wyświetl wszystkie notatki" + } } } diff --git a/app/javascript/dashboard/i18n/locale/pl/conversation.json b/app/javascript/dashboard/i18n/locale/pl/conversation.json index 240806fb8..15593e198 100644 --- a/app/javascript/dashboard/i18n/locale/pl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/pl/conversation.json @@ -20,7 +20,7 @@ "LOADING_CONVERSATIONS": "Ładowanie konwersacji", "CANNOT_REPLY": "Nie możesz odpowiedzieć z powodu", "24_HOURS_WINDOW": "Ograniczenie 24-godzinnego okna wiadomości", - "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", + "TWILIO_WHATSAPP_CAN_REPLY": "Możesz odpowiedzieć na tę rozmowę tylko za pomocą szablonu wiadomości, ponieważ", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Ograniczenie 24-godzinnego okna wiadomości", "LAST_INCOMING_TWEET": "Odpowiadasz na ostatniego przychodzącego tweeta", "REPLYING_TO": "Osoba, której odpowiadasz to:", @@ -58,7 +58,7 @@ "CHANGE_STATUS": "Status konwersacji zmieniony", "CHANGE_AGENT": "Osoba przypisana do konwersacji zmieniona", "CHANGE_TEAM": "Zespół konwersacji został zmieniony", - "FILE_SIZE_LIMIT": "File exceeds the {MAXIMUM_FILE_UPLOAD_SIZE} attachment limit", + "FILE_SIZE_LIMIT": "Plik przekracza limit {MAXIMUM_FILE_UPLOAD_SIZE} dla załącznika", "SENT_BY": "Wysłane przez:", "ASSIGNMENT": { "SELECT_AGENT": "Wybierz Agenta", diff --git a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json index bd5e75e9f..d17ab4b97 100644 --- a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json @@ -79,7 +79,7 @@ "IN_A_FEW_MINUTES": "W ciągu kilku minut", "IN_A_FEW_HOURS": "W ciągu kilku godzin", "IN_A_DAY": "W ciągu dnia", - "HELP_TEXT": "This reply time will be displayed on the live chat widget" + "HELP_TEXT": "Ten czas odpowiedzi będzie wyświetlany na widżecie czatu na żywo" }, "WIDGET_COLOR": { "LABEL": "Kolor widżetu", @@ -88,8 +88,8 @@ "SUBMIT_BUTTON": "Utwórz skrzynkę odbiorczą" }, "TWILIO": { - "TITLE": "Twilio SMS/Whatsapp Channel", - "DESC": "Integrate Twilio and start supporting your customers via SMS or Whatsapp.", + "TITLE": "Kanał Twilio SMS/WhatsApp", + "DESC": "Zintegruj Twilio i zacznij wspierać swoich klientów poprzez SMS lub WhatsApp.", "ACCOUNT_SID": { "LABEL": "Karta SID konta", "PLACEHOLDER": "Wprowadź SID konta Twilio", @@ -151,14 +151,14 @@ }, "EMAIL": { "LABEL": "E-mail", - "SUBTITLE": "Email where your customers sends you support tickets", + "SUBTITLE": "Adres e-mail, na który Twoi klienci wysyłają Ci zgłoszenia", "PLACEHOLDER": "E-mail" }, "SUBMIT_BUTTON": "Utwórz kanał e-mail", "API": { - "ERROR_MESSAGE": "We were not able to save the email channel" + "ERROR_MESSAGE": "Nie udało nam się zapisać kanału e-mail" }, - "FINISH_MESSAGE": "Start forwarding your emails to the following email address." + "FINISH_MESSAGE": "Zacznij przekierowywać swoje wiadomości na następujący adres e-mail." }, "AUTH": { "TITLE": "Kanały", @@ -167,8 +167,8 @@ "AGENTS": { "TITLE": "Agenci", "DESC": "Tutaj możesz dodać agentów do zarządzania swoją nowo utworzoną skrzynką odbiorczą. Tylko ci wybrani agenci będą mieli dostęp do Twojej skrzynki odbiorczej. Agenci, którzy nie są częścią tej skrzynki odbiorczej nie będą mogli zobaczyć ani odpowiadać na wiadomości w tej skrzynce odbiorczej podczas logowania.
PS: Jako administrator, jeśli potrzebujesz dostępu do wszystkich skrzynek odbiorczych, powinieneś dodać siebie jako agenta do wszystkich skrzynek odbiorczych, które tworzysz.", - "VALIDATION_ERROR": "Add atleast one agent to your new Inbox", - "PICK_AGENTS": "Pick agents for the inbox" + "VALIDATION_ERROR": "Dodaj co najmniej jednego agenta do swojej nowej skrzynki odbiorczej", + "PICK_AGENTS": "Wybierz agentów dla skrzynki odbiorczej" }, "DETAILS": { "TITLE": "Szczegóły skrzynki odbiorczej", @@ -194,7 +194,7 @@ "TITLE": "Twoja skrzynka odbiorcza jest gotowa!", "MESSAGE": "Teraz możesz współpracować ze swoimi klientami poprzez swój nowy kanał. Szczęśliwego wsparcia ", "BUTTON_TEXT": "Zabierz mnie tam", - "MORE_SETTINGS": "More settings", + "MORE_SETTINGS": "Więcej ustawień", "WEBSITE_SUCCESS": "Pomyślnie zakończyłeś tworzenie kanału internetowego. Skopiuj poniższy kod i wklej go na swojej stronie. Następnym razem, gdy klient korzysta z czatu na żywo, konwersacja pojawi się automatycznie na twojej skrzynce odbiorczej." }, "REAUTH": "Ponowna autoryzacja", @@ -227,14 +227,15 @@ "SETTINGS": "Ustawienia", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Konfiguracja", + "CAMPAIGN": "Kampania", "PRE_CHAT_FORM": "Pre Chat Form", - "BUSINESS_HOURS": "Business Hours" + "BUSINESS_HOURS": "Godziny pracy" }, "SETTINGS": "Ustawienia", "FEATURES": { - "LABEL": "Features", - "DISPLAY_FILE_PICKER": "Display file picker on the widget", - "DISPLAY_EMOJI_PICKER": "Display emoji picker on the widget" + "LABEL": "Funkcje", + "DISPLAY_FILE_PICKER": "Wyświetl selektor plików w widżecie", + "DISPLAY_EMOJI_PICKER": "Wyświetl selektor emoji w widżecie" }, "SETTINGS_POPUP": { "MESSENGER_HEADING": "Skrypt Messengera", @@ -246,7 +247,7 @@ "INBOX_UPDATE_TITLE": "Ustawienia skrzynki odbiorczej", "INBOX_UPDATE_SUB_TEXT": "Zaktualizuj ustawienia skrzynki odbiorczej", "AUTO_ASSIGNMENT_SUB_TEXT": "Włącz lub wyłącz automatyczne przypisywanie nowych rozmów do agentów dodanych do tej skrzynki odbiorczej.", - "HMAC_VERIFICATION": "User Identity Validation", + "HMAC_VERIFICATION": "Weryfikacja tożsamości użytkownika", "HMAC_DESCRIPTION": "Inorder validate the users identity, the SDK allows you to pass an `identity_hash` for each user. You can generate HMAC using 'sha256' with the key shown here." }, "FACEBOOK_REAUTHORIZE": { @@ -260,8 +261,8 @@ "ENABLE": { "LABEL": "Enable pre chat form", "OPTIONS": { - "ENABLED": "Yes", - "DISABLED": "No" + "ENABLED": "Tak", + "DISABLED": "Nie" } }, "PRE_CHAT_MESSAGE": { @@ -275,19 +276,19 @@ "BUSINESS_HOURS": { "TITLE": "Set your availability", "SUBTITLE": "Set your availability on your livechat widget", - "WEEKLY_TITLE": "Set your weekly hours", - "TIMEZONE_LABEL": "Select timezone", - "UPDATE": "Update business hours settings", + "WEEKLY_TITLE": "Ustaw swoje godziny tygodniowe", + "TIMEZONE_LABEL": "Wybierz strefę czasową", + "UPDATE": "Zaktualizuj ustawienia godzin pracy", "TOGGLE_AVAILABILITY": "Enable business availability for this inbox", - "UNAVAILABLE_MESSAGE_LABEL": "Unavailable message for vistors", - "UNAVAILABLE_MESSAGE_DEFAULT": "We are unavailable at the moment. Leave a message we will respond once we are back.", + "UNAVAILABLE_MESSAGE_LABEL": "Wiadomość niedostępna dla odwiedzających", + "UNAVAILABLE_MESSAGE_DEFAULT": "W tej chwili jesteśmy niedostępni. Pozostaw wiadomość, a odpowiemy, gdy będzie to możliwe.", "TOGGLE_HELP": "Enabling business availability will show the available hours on live chat widget even if all the agents are offline. Outside available hours vistors can be warned with a message and a pre-chat form.", "DAY": { - "ENABLE": "Enable availability for this day", - "UNAVAILABLE": "Unavailable", - "HOURS": "hours", - "VALIDATION_ERROR": "Starting time should be before closing time.", - "CHOOSE": "Choose" + "ENABLE": "Włącz dostępność w tym dniu", + "UNAVAILABLE": "Niedostępny", + "HOURS": "godzin", + "VALIDATION_ERROR": "Czas rozpoczęcia powinien być przed czasem zakończenia.", + "CHOOSE": "Wybierz" } } } diff --git a/app/javascript/dashboard/i18n/locale/pl/index.js b/app/javascript/dashboard/i18n/locale/pl/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/pl/index.js +++ b/app/javascript/dashboard/i18n/locale/pl/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/pl/report.json b/app/javascript/dashboard/i18n/locale/pl/report.json index c31fdfe6f..ef88c0251 100644 --- a/app/javascript/dashboard/i18n/locale/pl/report.json +++ b/app/javascript/dashboard/i18n/locale/pl/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Ostatnie 30 dni" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/pl/teamsSettings.json b/app/javascript/dashboard/i18n/locale/pl/teamsSettings.json index d756d754e..6b60eb857 100644 --- a/app/javascript/dashboard/i18n/locale/pl/teamsSettings.json +++ b/app/javascript/dashboard/i18n/locale/pl/teamsSettings.json @@ -15,21 +15,21 @@ "AGENTS": { "BUTTON_TEXT": "Dodaj agentów do zespołu", "TITLE": "Dodaj agentów do zespołu - %{teamName}", - "DESC": "Add Agents to your newly created team. This lets you collaborate as a team on conversations, get notified on new events in the same conversation." + "DESC": "Dodaj agentów do swojego nowo utworzonego zespołu. Dzięki temu możesz współpracować jako zespół w rozmowach oraz otrzymywać powiadomienia o nowych wydarzeniach w tej samej rozmowie." }, "WIZARD": [ { - "title": "Create", + "title": "Stwórz", "route": "settings_teams_new", - "body": "Create a new team of agents." + "body": "Stwórz nowy zespół agentów." }, { "title": "Dodaj agentów", "route": "settings_teams_add_agents", - "body": "Add agents to the team." + "body": "Dodaj agentów do zespołu." }, { - "title": "Finish", + "title": "Zakończ", "route": "settings_teams_finish", "body": "Wszystko jest gotowe!" } @@ -37,28 +37,28 @@ }, "EDIT_FLOW": { "CREATE": { - "TITLE": "Edit your team details", - "DESC": "Edit title and description to your team.", - "BUTTON_TEXT": "Update team" + "TITLE": "Edytuj dane swojego zespołu", + "DESC": "Edytuj tytuł i opis swojego zespołu.", + "BUTTON_TEXT": "Aktualizuj zespół" }, "AGENTS": { - "BUTTON_TEXT": "Update agents in team", + "BUTTON_TEXT": "Aktualizuj agentów w zespole", "TITLE": "Dodaj agentów do zespołu - %{teamName}", - "DESC": "Add Agents to your newly created team. All the added agents will be notified when a conversation is assigned to this team." + "DESC": "Dodaj agentów do swojego nowo utworzonego zespołu. Wszyscy dodani agenci zostaną powiadomieni, gdy rozmowa zostanie przypisana do tego zespołu." }, "WIZARD": [ { - "title": "Team details", + "title": "Szczegóły zespołu", "route": "settings_teams_edit", - "body": "Change name, description and other details." + "body": "Zmień nazwę, opis i inne dane." }, { - "title": "Edit Agents", + "title": "Edytuj agentów", "route": "settings_teams_edit_members", - "body": "Edit agents in your team." + "body": "Edytuj agentów w zespole." }, { - "title": "Finish", + "title": "Zakończ", "route": "settings_teams_edit_finish", "body": "Wszystko jest gotowe!" } @@ -72,14 +72,14 @@ "EMAIL": "EMAIL", "BUTTON_TEXT": "Dodaj agentów", "ADD_AGENTS": "Adding Agents to your Team...", - "SELECT": "select", + "SELECT": "wybierz", "SELECT_ALL": "select all agents", "SELECTED_COUNT": "%{selected} out of %{total} agents selected." }, "ADD": { "TITLE": "Dodaj agentów do zespołu - %{teamName}", - "DESC": "Add Agents to your newly created team. This lets you collaborate as a team on conversations, get notified on new events in the same conversation.", - "SELECT": "select", + "DESC": "Dodaj agentów do swojego nowo utworzonego zespołu. Dzięki temu możesz współpracować jako zespół w rozmowach oraz otrzymywać powiadomienia o nowych wydarzeniach w tej samej rozmowie.", + "SELECT": "wybierz", "SELECT_ALL": "select all agents", "SELECTED_COUNT": "%{selected} out of %{total} agents selected.", "BUTTON_TEXT": "Dodaj agentów", @@ -88,7 +88,7 @@ "FINISH": { "TITLE": "Your team is ready!", "MESSAGE": "You can now collaborate as a team on conversations. Happy supporting ", - "BUTTON_TEXT": "Finish" + "BUTTON_TEXT": "Zakończ" }, "DELETE": { "BUTTON_TEXT": "Usuń", @@ -105,7 +105,7 @@ }, "SETTINGS": "Ustawienia", "FORM": { - "UPDATE": "Update team", + "UPDATE": "Aktualizuj zespół", "CREATE": "Utwórz zespół", "NAME": { "LABEL": "Team name", diff --git a/app/javascript/dashboard/i18n/locale/pt/campaign.json b/app/javascript/dashboard/i18n/locale/pt/campaign.json new file mode 100644 index 000000000..24a073a2c --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/pt/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "cancelar", + "CREATE_BUTTON_TEXT": "Criar", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Por favor, insira uma URL válida" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Atualização", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Ocorreu um erro, por favor tente novamente" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "SItuação", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Alterar", + "DELETE": "excluir" + }, + "STATUS": { + "ENABLED": "Ativado", + "DISABLED": "Desabilitado" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/pt/chatlist.json b/app/javascript/dashboard/i18n/locale/pt/chatlist.json index b02a91286..15590aa0b 100644 --- a/app/javascript/dashboard/i18n/locale/pt/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/pt/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Received via email", "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", "REPLY_TO_TWEET": "Reply to this tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/pt/contact.json b/app/javascript/dashboard/i18n/locale/pt/contact.json index ea6232f20..b167c9f50 100644 --- a/app/javascript/dashboard/i18n/locale/pt/contact.json +++ b/app/javascript/dashboard/i18n/locale/pt/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Labels available in the account", "REMOVE": "Click on X icon to remove the label", "ADD": "Click on + icon to add the label", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Update labels", "UPDATE_ERROR": "Não foi possível atualizar os rótulos, tente novamente." }, "NO_LABELS_TO_ADD": "There are no more labels defined in the account.", - "NO_AVAILABLE_LABELS": "There are no labels added to this conversation." + "NO_AVAILABLE_LABELS": "There are no labels added to this conversation.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mute Conversation", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json index 5657bc424..b7a59b7b4 100644 --- a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Confirgurações", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/pt/index.js b/app/javascript/dashboard/i18n/locale/pt/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/pt/index.js +++ b/app/javascript/dashboard/i18n/locale/pt/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/pt/report.json b/app/javascript/dashboard/i18n/locale/pt/report.json index 357928271..94cf1019d 100644 --- a/app/javascript/dashboard/i18n/locale/pt/report.json +++ b/app/javascript/dashboard/i18n/locale/pt/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Últimos 30 Dias" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/campaign.json b/app/javascript/dashboard/i18n/locale/pt_BR/campaign.json new file mode 100644 index 000000000..273032356 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/pt_BR/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Cancelar", + "CREATE_BUTTON_TEXT": "Criar", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Messagem", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Enviado por", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Por favor, insira uma URL válida" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Atualizar", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Ocorreu um erro, por favor tente novamente" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Messagem", + "STATUS": "SItuação", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Alterar", + "DELETE": "Excluir" + }, + "STATUS": { + "ENABLED": "Ativado", + "DISABLED": "Desativado" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json b/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json index b2d27a5ad..10aa664fa 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Recebido por e-mail", "VIEW_TWEET_IN_TWITTER": "Ver tweet no Twitter", "REPLY_TO_TWEET": "Responder a este tweet", - "NO_MESSAGES": "Nova Mensagem" + "NO_MESSAGES": "Nova Mensagem", + "NO_CONTENT": "Nenhum conteúdo disponível" } } diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/contact.json b/app/javascript/dashboard/i18n/locale/pt_BR/contact.json index 9887f3f12..813542830 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/contact.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/contact.json @@ -12,7 +12,7 @@ "INITIATED_FROM": "A partir de", "INITIATED_AT": "Iniciado em", "IP_ADDRESS": "Endereço IP", - "NEW_MESSAGE": "New message", + "NEW_MESSAGE": "Nova Mensagem", "CONVERSATIONS": { "NO_RECORDS_FOUND": "Não há conversas anteriores associadas a este contato.", "TITLE": "Conversas anteriores" @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Marcadores disponíveis na conta", "REMOVE": "Clique no ícone X para remover o marcador", "ADD": "Clique no ícone + para adicionar o marcador", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Atualizar marcadores", "UPDATE_ERROR": "Não foi possível atualizar os marcadores, tente novamente." }, "NO_LABELS_TO_ADD": "Não há mais marcadores definidos na conta.", - "NO_AVAILABLE_LABELS": "Não há marcadores adicionados a esta conversa." + "NO_AVAILABLE_LABELS": "Não há marcadores adicionados a esta conversa.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Silenciar Conversa", "UNMUTE_CONTACT": "Reativar Conversa", @@ -73,8 +79,8 @@ "PHONE_NUMBER": { "PLACEHOLDER": "Adicione o número de telefone do contato", "LABEL": "Número de Telefone", - "HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]", - "ERROR": "Phone number should be either empty or of E.164 format" + "HELP": "O número de telefone deve ser do formato E.164, por exemplo: +1415555555 [+][código do país][código de área][número de telefone local]", + "ERROR": "O número de telefone deve estar vazio ou no formato E.164" }, "LOCATION": { "PLACEHOLDER": "Enter the location of the contact", @@ -108,27 +114,27 @@ "ERROR_MESSAGE": "Ocorreu um erro, por favor tente novamente" }, "NEW_CONVERSATION": { - "BUTTON_LABEL": "Start conversation", + "BUTTON_LABEL": "Iniciar Conversa", "TITLE": "Nova conversa", - "DESC": "Start a new conversation by sending a new message.", - "NO_INBOX": "Couldn't find an inbox to initiate a new conversation with this contact.", + "DESC": "Iniciar uma nova conversa enviando uma nova mensagem.", + "NO_INBOX": "Não foi possível encontrar uma caixa de entrada para iniciar uma nova conversa com este contato.", "FORM": { "TO": { - "LABEL": "To" + "LABEL": "Para" }, "INBOX": { - "LABEL": "Inbox", - "ERROR": "Select an inbox" + "LABEL": "Caixa de Entrada", + "ERROR": "Selecione uma caixa de entrada" }, "MESSAGE": { "LABEL": "Messagem", - "PLACEHOLDER": "Write your message here", - "ERROR": "Message can't be empty" + "PLACEHOLDER": "Escreva sua mensagem aqui", + "ERROR": "A mensagem não pode estar vazia" }, - "SUBMIT": "Send message", + "SUBMIT": "Enviar mensagem", "CANCEL": "Cancelar", - "SUCCESS_MESSAGE": "Message sent!", - "ERROR_MESSAGE": "Couldn't send! try again" + "SUCCESS_MESSAGE": "Mensagem enviada!", + "ERROR_MESSAGE": "Não foi possível enviar! Tente novamente" } }, "CONTACTS_PAGE": { @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "Ver detalhes" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json b/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json index 02a318e43..49c893a3b 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json @@ -58,7 +58,7 @@ "CHANGE_STATUS": "Estado da conversa mudou", "CHANGE_AGENT": "Responsável da conversa alterado", "CHANGE_TEAM": "Estado da conversa mudou", - "FILE_SIZE_LIMIT": "File exceeds the {MAXIMUM_FILE_UPLOAD_SIZE} attachment limit", + "FILE_SIZE_LIMIT": "O arquivo excede o limite de anexos {MAXIMUM_FILE_UPLOAD_SIZE}", "SENT_BY": "Enviado por:", "ASSIGNMENT": { "SELECT_AGENT": "Selecione Agente", @@ -85,25 +85,25 @@ }, "ONBOARDING": { "TITLE": "Olá, 👋. Bem-vindo ao %{installationName}!", - "DESCRIPTION": "Thanks for signing up. We want you to get the most out of %{installationName}. Here are a few things you can do in %{installationName} to make the experience delightful.", + "DESCRIPTION": "Obrigado por se inscrever. Queremos que você aproveite o máximo de %{installationName}. Aqui estão algumas coisas que você consegue fazer no(a) %{installationName} para que tenha uma experiência agradável.", "READ_LATEST_UPDATES": "Leia as últimas atualizações", "ALL_CONVERSATION": { "TITLE": "Todas as suas conversas em um só lugar", - "DESCRIPTION": "View all the conversations from your customers in one single dashboard. You can filter the conversations by the incoming channel, label and status." + "DESCRIPTION": "Veja todas as conversas dos seus clientes em um único painel. Você pode filtrar as conversas pelo canal de entrada, rótulo e status." }, "TEAM_MEMBERS": { "TITLE": "Convidar membros da sua equipe", - "DESCRIPTION": "Since you are getting ready to talk to your customer, bring in your teammates to assist you. You can invite your teammates by adding their email address to the agent list.", + "DESCRIPTION": "Já que você está se preparando para conversar com seu cliente, traga seus colegas para ajudá-lo. Você pode convidar seus colegas de equipe adicionando o endereço de e-mail deles na lista de agentes.", "NEW_LINK": "Clique aqui para convidar um membro da equipe" }, "INBOXES": { "TITLE": "Conectar caixas de entrada", - "DESCRIPTION": "Connect various channels through which your customers would be talking to you. It can be a website live-chat, your Facebook or Twitter page or even your WhatsApp number.", + "DESCRIPTION": "Conecte vários canais através dos quais seus clientes estariam conversando com você. Podendo ser a partir de um chat ao vivo no seu website, sua página do Facebook ou Twitter ou até mesmo seu número do WhatsApp.", "NEW_LINK": "Clique aqui para criar uma caixa de entrada" }, "LABELS": { "TITLE": "Organizar conversas com marcadores", - "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enquiry, #billing-question etc., so that you can use them in a conversation later.", + "DESCRIPTION": "Etiquetas fornecem uma forma mais fácil de organizar a sua conversa. Criar algumas estiquetas como #solicitação-suporte, #fatura-assunto etc., assim você poderá futuramente utiliza-las em uma conversa posteriormente.", "NEW_LINK": "Clique aqui para criar marcadores" } }, diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json index 19e620464..d2696a4cb 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json @@ -194,7 +194,7 @@ "TITLE": "Sua caixa de entrada está pronta!", "MESSAGE": "Agora você ja pode oferecer uma excelente experiência no atendimento de seus clientes através do seu novo Canal ", "BUTTON_TEXT": "Leva-me lá", - "MORE_SETTINGS": "More settings", + "MORE_SETTINGS": "Mais configurações", "WEBSITE_SUCCESS": "Você concluiu a criação de um canal de site. Copie o código mostrado abaixo e cole-o no seu site. Na próxima vez que um cliente usar o bate-papo ao vivo, a conversa aparecerá automaticamente na sua caixa de entrada." }, "REAUTH": "Reautorizar", @@ -227,6 +227,7 @@ "SETTINGS": "Configurações", "COLLABORATORS": "Colaboradores", "CONFIGURATION": "Configuração", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Horário de funcionamento" }, @@ -279,8 +280,8 @@ "TIMEZONE_LABEL": "Selecionar fuso horário", "UPDATE": "Atualizar configurações do horário comercial", "TOGGLE_AVAILABILITY": "Enable business availability for this inbox", - "UNAVAILABLE_MESSAGE_LABEL": "Unavailable message for vistors", - "UNAVAILABLE_MESSAGE_DEFAULT": "We are unavailable at the moment. Leave a message we will respond once we are back.", + "UNAVAILABLE_MESSAGE_LABEL": "Mensagem indisponível para vistores", + "UNAVAILABLE_MESSAGE_DEFAULT": "Nós estamos indisponíveis no momento. Deixe uma mensagem a ser respondida assim que voltarmos.", "TOGGLE_HELP": "Enabling business availability will show the available hours on live chat widget even if all the agents are offline. Outside available hours vistors can be warned with a message and a pre-chat form.", "DAY": { "ENABLE": "Permitir a disponibilidade para este dia", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/index.js b/app/javascript/dashboard/i18n/locale/pt_BR/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/index.js +++ b/app/javascript/dashboard/i18n/locale/pt_BR/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/report.json b/app/javascript/dashboard/i18n/locale/pt_BR/report.json index a63e2dd52..878b59eff 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/report.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Últimos 30 dias" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json index c19bb22d8..11b6e066a 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json @@ -3,7 +3,7 @@ "LINK": "Configurações do Perfil", "TITLE": "Configurações do Perfil", "BTN_TEXT": "Atualizar o Perfil", - "UPDATE_SUCCESS": "Your profile has been updated successfully", + "UPDATE_SUCCESS": "Seu perfil foi atualizado com sucesso", "PASSWORD_UPDATE_SUCCESS": "A sua senha foi alterada com sucesso", "AFTER_EMAIL_CHANGED": "Seu perfil foi atualizado com sucesso. Faça login novamente, pois suas credenciais de login foram alteradas", "FORM": { @@ -19,7 +19,7 @@ "PASSWORD_SECTION": { "TITLE": "Senha", "NOTE": "A atualização da sua senha redefiniria o seu login em vários dispositivos.", - "BTN_TEXT": "Change password" + "BTN_TEXT": "Mudar Senha" }, "ACCESS_TOKEN": { "TITLE": "Token de acesso", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/teamsSettings.json b/app/javascript/dashboard/i18n/locale/pt_BR/teamsSettings.json index 780f1195b..d0f91f7b0 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/teamsSettings.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/teamsSettings.json @@ -1,20 +1,20 @@ { "TEAMS_SETTINGS": { - "NEW_TEAM": "Criar novo departamento", + "NEW_TEAM": "Criar nova equipe", "HEADER": "Times", "SIDEBAR_TXT": "

Departamentos

As equipes permitem que você organize seus agentes em grupos baseados em suas responsabilidades.
Um usuário pode fazer parte de várias equipes. Você pode atribuir conversas a uma equipe quando você estiver trabalhando colaborativamente.

", "LIST": { "404": "Não existem agentes associados a esta conta.", - "EDIT_TEAM": "Editar Departamento" + "EDIT_TEAM": "Editar equipe" }, "CREATE_FLOW": { "CREATE": { - "TITLE": "Criar novo departamento", + "TITLE": "Criar nova equipe", "DESC": "Adicione um título e uma descrição à sua nova equipe." }, "AGENTS": { "BUTTON_TEXT": "Adicionar agente ao seu time", - "TITLE": "Adicionar agentes ao departamento - %{teamName}", + "TITLE": "Adicionar agentes a equipe: %{teamName}", "DESC": "Adicione agentes à sua equipe recém-criada. Isso permite que você colabore como uma equipe em conversas, seja notificado sobre novos eventos na mesma conversa." }, "WIZARD": [ @@ -25,41 +25,41 @@ }, { "title": "Adicionar Agentes", - "route": "settings_teams_add_agents", - "body": "Adicionar agentes ao departamento." + "route": "ajustes_equipes_adicionar_agentes", + "body": "Adicionar agentes a equipe." }, { "title": "Finalizar", - "route": "settings_teams_finish", + "route": "ajustes_equipes_finalizar", "body": "Está tudo pronto para começar!" } ] }, "EDIT_FLOW": { "CREATE": { - "TITLE": "Editar detalhes de seu departamento", - "DESC": "Adicione um título e uma descrição ao seu novo departamento", - "BUTTON_TEXT": "Atualizar departamento" + "TITLE": "Editar detalhes da sua equipe", + "DESC": "Edite o título e a descrição da sua equipe.", + "BUTTON_TEXT": "Atualizar equipe" }, "AGENTS": { "BUTTON_TEXT": "Atualizar agentes no departamento", - "TITLE": "Adicionar agentes ao departamento - %{teamName}", + "TITLE": "Adicionar agentes a equipe: %{teamName}", "DESC": "Adicionar agentes à sua equipe recém-criada. Todos os agentes adicionados serão notificados quando uma conversa for atribuída a esta equipe." }, "WIZARD": [ { "title": "Detalhes do departamento", - "route": "settings_teams_edit", + "route": "ajustes_equipes_editar", "body": "Alterar nome, descrição e outros detalhes." }, { "title": "Editar agente", - "route": "settings_teams_edit_members", + "route": "ajustes_equipes_editar_membros", "body": "Gerenciar agentes de seu departamento" }, { "title": "Finalizar", - "route": "settings_teams_edit_finish", + "route": "ajustes_equipes_editar_finalizar", "body": "Está tudo pronto para começar!" } ] @@ -77,7 +77,7 @@ "SELECTED_COUNT": "%{selected} de %{total} agentes selecionados." }, "ADD": { - "TITLE": "Adicionar agentes ao departamento - %{teamName}", + "TITLE": "Adicionar agentes a equipe: %{teamName}", "DESC": "Adicione agentes à sua equipe recém-criada. Isso permite que você colabore como uma equipe em conversas, seja notificado sobre novos eventos na mesma conversa.", "SELECT": "Selecionar", "SELECT_ALL": "Selecionar todos os agentes", @@ -105,7 +105,7 @@ }, "SETTINGS": "Confirgurações", "FORM": { - "UPDATE": "Atualizar departamento", + "UPDATE": "Atualizar equipe", "CREATE": "Criar novo departamento", "NAME": { "LABEL": "Nome do departamento", diff --git a/app/javascript/dashboard/i18n/locale/ro/campaign.json b/app/javascript/dashboard/i18n/locale/ro/campaign.json new file mode 100644 index 000000000..3498e39b6 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ro/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Renunță", + "CREATE_BUTTON_TEXT": "Creeaza", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Te rog introdu un URL valid" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Actualizare", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "A apărut o eroare, încercați din nou" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Status", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Editare", + "DELETE": "Şterge" + }, + "STATUS": { + "ENABLED": "Activat", + "DISABLED": "Dezactivat" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/ro/chatlist.json b/app/javascript/dashboard/i18n/locale/ro/chatlist.json index 80130cb08..f267e4275 100644 --- a/app/javascript/dashboard/i18n/locale/ro/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ro/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Received via email", "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", "REPLY_TO_TWEET": "Reply to this tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/ro/contact.json b/app/javascript/dashboard/i18n/locale/ro/contact.json index 6008dc9ef..95c92cc76 100644 --- a/app/javascript/dashboard/i18n/locale/ro/contact.json +++ b/app/javascript/dashboard/i18n/locale/ro/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Etichete disponibile în cont", "REMOVE": "Faceți clic pe pictograma X pentru a elimina eticheta", "ADD": "Faceți clic pe + pictogramă pentru a adăuga eticheta", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Actualizare etichete", "UPDATE_ERROR": "Nu s-au putut actualiza etichetele, încercați din nou." }, "NO_LABELS_TO_ADD": "Nu mai sunt etichete definite în cont.", - "NO_AVAILABLE_LABELS": "Nu există etichete adăugate la această conversație." + "NO_AVAILABLE_LABELS": "Nu există etichete adăugate la această conversație.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mute Conversation", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json index e6ddf8b30..0a6ce34fb 100644 --- a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Setări", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/ro/index.js b/app/javascript/dashboard/i18n/locale/ro/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/ro/index.js +++ b/app/javascript/dashboard/i18n/locale/ro/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/ro/report.json b/app/javascript/dashboard/i18n/locale/ro/report.json index 9b23d543b..e28b44fbd 100644 --- a/app/javascript/dashboard/i18n/locale/ro/report.json +++ b/app/javascript/dashboard/i18n/locale/ro/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Ultimele 30 zile" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/ru/campaign.json b/app/javascript/dashboard/i18n/locale/ru/campaign.json new file mode 100644 index 000000000..f355be5bb --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ru/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Кампании", + "SIDEBAR_TXT": "Активные сообщения позволяют клиенту отправлять исходящие сообщения своим контактам, что повлечет за собой более активное общение. Нажмите на Добавить кампанию для создания новой кампании. Вы также можете редактировать или удалять существующую кампанию, нажав на кнопку Изменить или Удалить.", + "HEADER_BTN_TXT": "Создать Кампанию", + "ADD": { + "TITLE": "Создать кампанию", + "DESC": "Активные сообщения позволяют клиенту отправлять исходящие сообщения своим контактам, что повлечет за собой более активное общение.", + "CANCEL_BUTTON_TEXT": "Отменить", + "CREATE_BUTTON_TEXT": "Создать", + "FORM": { + "TITLE": { + "LABEL": "Название", + "PLACEHOLDER": "Пожалуйста, введите название кампании", + "ERROR": "Необходимо указать название" + }, + "MESSAGE": { + "LABEL": "Сообщение", + "PLACEHOLDER": "Пожалуйста, введите сообщение кампании", + "ERROR": "Необходимо ввести сообщение" + }, + "SENT_BY": { + "LABEL": "Отправитель", + "PLACEHOLDER": "Пожалуйста, выберите содержание кампании", + "ERROR": "Необходимо указать отправителя" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Пожалуйста, введите правильный URL", + "ERROR": "Пожалуйста, введите правильный URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Время на страницах (в секундах)", + "PLACEHOLDER": "Пожалуйста, введите время", + "ERROR": "Укажите время на странице" + }, + "ENABLED": "Запустить кампанию", + "SUBMIT": "Добавить кампанию" + }, + "API": { + "SUCCESS_MESSAGE": "Кампания успешно создана", + "ERROR_MESSAGE": "Произошла ошибка. Пожалуйста, попробуйте еще раз." + } + }, + "EDIT": { + "TITLE": "Редактировать кампанию", + "UPDATE_BUTTON_TEXT": "Обновить", + "API": { + "SUCCESS_MESSAGE": "Кампания успешно обновлена", + "ERROR_MESSAGE": "Произошла ошибка, попробуйте еще раз" + } + }, + "LIST": { + "LOADING_MESSAGE": "Загрузка кампаний...", + "404": "Нет кампаний, связанных с этим каналом.", + "TABLE_HEADER": { + "TITLE": "Название", + "MESSAGE": "Сообщение", + "STATUS": "Статус", + "SENDER": "Отправитель", + "URL": "URL", + "TIME_ON_PAGE": "Время (секунды)", + "CREATED_AT": "Дата создания" + }, + "BUTTONS": { + "ADD": "Добавить", + "EDIT": "Редактировать", + "DELETE": "Удалить" + }, + "STATUS": { + "ENABLED": "Включено", + "DISABLED": "Выключено" + }, + "SENDER": { + "BOT": "Бот" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/ru/chatlist.json b/app/javascript/dashboard/i18n/locale/ru/chatlist.json index b1c70411a..79a290c32 100644 --- a/app/javascript/dashboard/i18n/locale/ru/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ru/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Получено по email", "VIEW_TWEET_IN_TWITTER": "Просмотреть твит в Twitter", "REPLY_TO_TWEET": "Ответить на этот твит", - "NO_MESSAGES": "Нет сообщений" + "NO_MESSAGES": "Нет сообщений", + "NO_CONTENT": "Содержимое отсутствует" } } diff --git a/app/javascript/dashboard/i18n/locale/ru/contact.json b/app/javascript/dashboard/i18n/locale/ru/contact.json index e8176f967..c85c67794 100644 --- a/app/javascript/dashboard/i18n/locale/ru/contact.json +++ b/app/javascript/dashboard/i18n/locale/ru/contact.json @@ -12,7 +12,7 @@ "INITIATED_FROM": "Начат из", "INITIATED_AT": "Начат в", "IP_ADDRESS": "IP адрес", - "NEW_MESSAGE": "New message", + "NEW_MESSAGE": "Новое сообщение", "CONVERSATIONS": { "NO_RECORDS_FOUND": "Нет предыдущих диалогов, связанных с этим контактом.", "TITLE": "Предыдущие диалоги" @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Все категории", "REMOVE": "Нажмите на иконку X для удаления категории", "ADD": "Нажмите на значок +, чтобы добавить категорию", + "ADD_BUTTON": "Добавить метки", "UPDATE_BUTTON": "Изменить категории", "UPDATE_ERROR": "Не удалось обновить категории, попробуйте снова." }, "NO_LABELS_TO_ADD": "У вас больше нет категорий.", - "NO_AVAILABLE_LABELS": "У диалога больше нет категорий." + "NO_AVAILABLE_LABELS": "У диалога больше нет категорий.", + "LABEL_SELECT": { + "TITLE": "Добавить метки", + "PLACEHOLDER": "Поиск меток", + "NO_RESULT": "Метки не найдены" + } }, "MUTE_CONTACT": "Заглушить диалог", "UNMUTE_CONTACT": "Включить звук диалога", @@ -73,8 +79,8 @@ "PHONE_NUMBER": { "PLACEHOLDER": "Введите номер телефона контакта", "LABEL": "Номер телефона", - "HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]", - "ERROR": "Phone number should be either empty or of E.164 format" + "HELP": "Номер телефона должен быть в формате E.164, например: +1415555555 [+] [код страны][код города] [локальный номер телефона]", + "ERROR": "Номер телефона должен быть пустым или в формате E.164" }, "LOCATION": { "PLACEHOLDER": "Введите местоположение контакта", @@ -108,27 +114,27 @@ "ERROR_MESSAGE": "Произошла ошибка, попробуйте еще раз" }, "NEW_CONVERSATION": { - "BUTTON_LABEL": "Start conversation", - "TITLE": "New conversation", - "DESC": "Start a new conversation by sending a new message.", - "NO_INBOX": "Couldn't find an inbox to initiate a new conversation with this contact.", + "BUTTON_LABEL": "Начать диалог", + "TITLE": "Новый диалог", + "DESC": "Начните новую беседу, отправив новое сообщение.", + "NO_INBOX": "Не удалось найти электронную почту для начала нового разговора с этим контактом.", "FORM": { "TO": { - "LABEL": "To" + "LABEL": "Кому" }, "INBOX": { - "LABEL": "Inbox", - "ERROR": "Select an inbox" + "LABEL": "Электронная почта", + "ERROR": "Выберите электронную почту" }, "MESSAGE": { "LABEL": "Сообщение", - "PLACEHOLDER": "Write your message here", - "ERROR": "Message can't be empty" + "PLACEHOLDER": "Напишите здесь ваше сообщение", + "ERROR": "Сообщение не может быть пустым" }, - "SUBMIT": "Send message", + "SUBMIT": "Отправить сообщение", "CANCEL": "Отменить", - "SUCCESS_MESSAGE": "Message sent!", - "ERROR_MESSAGE": "Couldn't send! try again" + "SUCCESS_MESSAGE": "Сообщение отправлено!", + "ERROR_MESSAGE": "Не удалось отправить! Попробуйте еще раз" } }, "CONTACTS_PAGE": { @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "Просмотреть подробности" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Заметки" + }, + "ADD": { + "BUTTON": "Добавить", + "PLACEHOLDER": "Добавить заметку", + "TITLE": "Shift + Enter для создания заметки" + }, + "FOOTER": { + "BUTTON": "Показать все заметки" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ru/conversation.json b/app/javascript/dashboard/i18n/locale/ru/conversation.json index 9706585c3..4fd56f744 100644 --- a/app/javascript/dashboard/i18n/locale/ru/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ru/conversation.json @@ -11,7 +11,7 @@ "TITLE": "Поиск сообщений", "LOADING_MESSAGE": "Сохранение данных...", "PLACEHOLDER": "Введите любой текст для поиска сообщений", - "NO_MATCHING_RESULTS": "No results found." + "NO_MATCHING_RESULTS": "Результаты не найдены." }, "UNREAD_MESSAGES": "Непрочитанные сообщения", "UNREAD_MESSAGE": "Непрочитанное сообщение", @@ -20,7 +20,7 @@ "LOADING_CONVERSATIONS": "Загрузка диалогов", "CANNOT_REPLY": "Вы не можете ответить из-за", "24_HOURS_WINDOW": "Ограничение на 24 часа", - "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", + "TWILIO_WHATSAPP_CAN_REPLY": "Вы можете ответить в этой беседе только с помощью шаблона сообщения", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Ограничение на 24 часа", "LAST_INCOMING_TWEET": "Вы отвечаете на последний входящий твит", "REPLYING_TO": "Вы отвечаете на:", @@ -37,7 +37,7 @@ "DETAILS": "подробности" }, "RESOLVE_DROPDOWN": { - "OPEN_BOT": "Open with bot" + "OPEN_BOT": "Открыть с помощью бота" }, "FOOTER": { "MSG_INPUT": "Shift + enter чтобы начать новую строку. Начните с '/', чтобы выбрать шаблонный ответ.", @@ -57,8 +57,8 @@ "VISIBLE_TO_AGENTS": "Приватная заметка: видна только вам и вашей команде", "CHANGE_STATUS": "Статус разговора изменен", "CHANGE_AGENT": "Назначенный оператор изменен", - "CHANGE_TEAM": "Conversation team changed", - "FILE_SIZE_LIMIT": "File exceeds the {MAXIMUM_FILE_UPLOAD_SIZE} attachment limit", + "CHANGE_TEAM": "Команда назначенная в беседу изменена", + "FILE_SIZE_LIMIT": "Превышен размер загружаемого файла - {MAXIMUM_FILE_UPLOAD_SIZE}", "SENT_BY": "Отправитель:", "ASSIGNMENT": { "SELECT_AGENT": "Выбрать Агента", @@ -89,22 +89,22 @@ "READ_LATEST_UPDATES": "Читайте о наших последних обновлениях", "ALL_CONVERSATION": { "TITLE": "Все ваши диалоги в одном месте", - "DESCRIPTION": "View all the conversations from your customers in one single dashboard. You can filter the conversations by the incoming channel, label and status." + "DESCRIPTION": "Посмотреть все разговоры с клиентами в одной панели управления. Вы можете отфильтровать разговоры по входящему каналу, метке и статусу." }, "TEAM_MEMBERS": { - "TITLE": "Invite your team members", - "DESCRIPTION": "Since you are getting ready to talk to your customer, bring in your teammates to assist you. You can invite your teammates by adding their email address to the agent list.", - "NEW_LINK": "Click here to invite a team member" + "TITLE": "Пригласить членов вашей команды", + "DESCRIPTION": "Так как вы готовы общаться с клиентом, пригласите в команду своих товарищей, чтобы помочь вам. Вы можете пригласить своих коллег по команде, добавив их адреса электронной почты в список агентов.", + "NEW_LINK": "Нажмите здесь, чтобы пригласить члена команды" }, "INBOXES": { - "TITLE": "Connect Inboxes", - "DESCRIPTION": "Connect various channels through which your customers would be talking to you. It can be a website live-chat, your Facebook or Twitter page or even your WhatsApp number.", - "NEW_LINK": "Click here to create an inbox" + "TITLE": "Подключить входящие", + "DESCRIPTION": "Подключите различные каналы, с помощью которых ваши клиенты будут общаться с вами. Это может быть веб-чат в live-чате, Facebook или Twitter, или даже ваш номер WhatsApp.", + "NEW_LINK": "Нажмите здесь, чтобы создать входящий канал" }, "LABELS": { - "TITLE": "Organize conversations with labels", - "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enquiry, #billing-question etc., so that you can use them in a conversation later.", - "NEW_LINK": "Click here to create tags" + "TITLE": "Сгруппировать беседы с помощью меток", + "DESCRIPTION": "Метки дают более простой способ классифицировать разговор. Создайте несколько меток, например #support-enquiry, #billing-question и т.д., чтобы позже использовать их в беседе.", + "NEW_LINK": "Нажмите здесь, чтобы создать метки" } }, "CONVERSATION_SIDEBAR": { @@ -112,7 +112,7 @@ "ASSIGNEE_LABEL": "Назначенный агент", "TEAM_LABEL": "Назначенная команда", "SELECT": { - "PLACEHOLDER": "None" + "PLACEHOLDER": "Ничего" } } } diff --git a/app/javascript/dashboard/i18n/locale/ru/generalSettings.json b/app/javascript/dashboard/i18n/locale/ru/generalSettings.json index ecf2f1f33..db6905092 100644 --- a/app/javascript/dashboard/i18n/locale/ru/generalSettings.json +++ b/app/javascript/dashboard/i18n/locale/ru/generalSettings.json @@ -54,10 +54,10 @@ }, "NOTIFICATIONS_PAGE": { "HEADER": "Уведомления", - "MARK_ALL_DONE": "Mark All Done", + "MARK_ALL_DONE": "Отметить все прочитанными", "LIST": { - "LOADING_MESSAGE": "Loading notifications...", - "404": "No Notifications", + "LOADING_MESSAGE": "Загрузка уведомлений...", + "404": "Уведомления отсутствуют", "TABLE_HEADER": [ "Имя", "Номер телефона", @@ -66,8 +66,8 @@ ] }, "TYPE_LABEL": { - "conversation_creation": "New conversation", - "conversation_assignment": "Conversation Assigned", + "conversation_creation": "Новая беседа", + "conversation_assignment": "Беседа назначена", "assigned_conversation_new_message": "Новое сообщение", "conversation_mention": "Упоминание" } diff --git a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json index 2a6e9b1dc..4a96cb928 100644 --- a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json @@ -39,7 +39,7 @@ }, "TWITTER": { "HELP": "Чтобы добавить свой Twitter профиль в качестве источника, вам нужно авторизоваться при помощи входа через Twitter ", - "ERROR_MESSAGE": "There was an error connecting to Twitter, please try again" + "ERROR_MESSAGE": "Произошла ошибка при подключении к Twitter, попробуйте еще раз" }, "WEBSITE_CHANNEL": { "TITLE": "Сайт", @@ -194,7 +194,7 @@ "TITLE": "Истоник готов!", "MESSAGE": "Теперь вы можете взаимодействовать с вашими клиентами через ваш новый канал. Удачной поддержки ", "BUTTON_TEXT": "Перейти", - "MORE_SETTINGS": "More settings", + "MORE_SETTINGS": "Больше параметров", "WEBSITE_SUCCESS": "Вы успешно создали источник-сайт. Скопируйте указанный ниже код и вставьте его на ваш сайт. В следующий раз, когда клиент напишет в чат, диалог автоматически появится здесь." }, "REAUTH": "Войти заново", @@ -227,8 +227,9 @@ "SETTINGS": "Настройки", "COLLABORATORS": "Соавторы", "CONFIGURATION": "Настройки", + "CAMPAIGN": "Кампании", "PRE_CHAT_FORM": "Форма, показываемая перед стартом диалога", - "BUSINESS_HOURS": "Business Hours" + "BUSINESS_HOURS": "Время работы" }, "SETTINGS": "Настройки", "FEATURES": { @@ -256,9 +257,9 @@ "MESSAGE_ERROR": "Произошла ошибка, попробуйте еще раз" }, "PRE_CHAT_FORM": { - "DESCRIPTION": "Pre chat forms enable you to capture user information before they start conversation with you.", + "DESCRIPTION": "Предварительные формы позволяют получить информацию о пользователе, прежде чем они начнут разговор.", "ENABLE": { - "LABEL": "Enable pre chat form", + "LABEL": "Включить форму сбора предварительной информации", "OPTIONS": { "ENABLED": "Да", "DISABLED": "Нет" @@ -266,22 +267,22 @@ }, "PRE_CHAT_MESSAGE": { "LABEL": "Сообщение для формы, показываемой перед стартом диалога", - "PLACEHOLDER": "This message would be visible to the users along with the form" + "PLACEHOLDER": "Это сообщение будет отображаться вместе с формой для пользователя" }, "REQUIRE_EMAIL": { - "LABEL": "Visitors should provide their name and email address before starting the chat" + "LABEL": "Посетители должны указать свое имя и адрес электронной почты перед началом общения" } }, "BUSINESS_HOURS": { "TITLE": "Настройте ваши рабочие часы", "SUBTITLE": "Настройте ваши рабочие часы для общения через виджет на сайте", "WEEKLY_TITLE": "Укажите ваши рабочие часы", - "TIMEZONE_LABEL": "Select timezone", - "UPDATE": "Update business hours settings", - "TOGGLE_AVAILABILITY": "Enable business availability for this inbox", - "UNAVAILABLE_MESSAGE_LABEL": "Unavailable message for vistors", - "UNAVAILABLE_MESSAGE_DEFAULT": "We are unavailable at the moment. Leave a message we will respond once we are back.", - "TOGGLE_HELP": "Enabling business availability will show the available hours on live chat widget even if all the agents are offline. Outside available hours vistors can be warned with a message and a pre-chat form.", + "TIMEZONE_LABEL": "Выберите часовой пояс", + "UPDATE": "Обновить настройки часов работы", + "TOGGLE_AVAILABILITY": "Включить доступность бизнеса для этого входящего канала", + "UNAVAILABLE_MESSAGE_LABEL": "Сообщение для посетителей о недоступности", + "UNAVAILABLE_MESSAGE_DEFAULT": "В данный момент мы недоступны. Оставьте сообщение, мы вам ответим, как только будем на связи.", + "TOGGLE_HELP": "Включение доступности для бизнеса покажет часы работы в виджете онлайн общения, даже если все менеджеры не в сети. Вне доступных часов работы - посетители могут быть предупреждены сообщением и формой предварительного чата.", "DAY": { "ENABLE": "Я работаю в этот день", "UNAVAILABLE": "Я не работаю в этот день", diff --git a/app/javascript/dashboard/i18n/locale/ru/index.js b/app/javascript/dashboard/i18n/locale/ru/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/ru/index.js +++ b/app/javascript/dashboard/i18n/locale/ru/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/ru/report.json b/app/javascript/dashboard/i18n/locale/ru/report.json index c349e11b8..9ab726c09 100644 --- a/app/javascript/dashboard/i18n/locale/ru/report.json +++ b/app/javascript/dashboard/i18n/locale/ru/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Последние 30 дней" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/ru/settings.json b/app/javascript/dashboard/i18n/locale/ru/settings.json index b9399259a..0c9535b72 100644 --- a/app/javascript/dashboard/i18n/locale/ru/settings.json +++ b/app/javascript/dashboard/i18n/locale/ru/settings.json @@ -3,7 +3,7 @@ "LINK": "Настройки профиля", "TITLE": "Настройки профиля", "BTN_TEXT": "Обновить профиль", - "UPDATE_SUCCESS": "Your profile has been updated successfully", + "UPDATE_SUCCESS": "Ваши данные успешно обновлены", "PASSWORD_UPDATE_SUCCESS": "Ваш пароль успешно изменен", "AFTER_EMAIL_CHANGED": "Ваш профиль был успешно обновлен, пожалуйста, войдите снова, так как ваши учетные данные были изменены", "FORM": { @@ -19,7 +19,7 @@ "PASSWORD_SECTION": { "TITLE": "Пароль", "NOTE": "Обновление пароля сбросит вашу авторизацию на всех устройствах.", - "BTN_TEXT": "Change password" + "BTN_TEXT": "Изменить пароль" }, "ACCESS_TOKEN": { "TITLE": "Токен доступа", @@ -27,8 +27,8 @@ }, "AUDIO_NOTIFICATIONS_SECTION": { "TITLE": "Звуковые уведомления", - "NOTE": "Enable audio notifications in dashboard for new messages and conversations.", - "ENABLE_AUDIO": "Play audio notification when a new conversation is created or new messages arrives" + "NOTE": "Включить звуковые уведомления в панели управления для новых сообщений и разговоров.", + "ENABLE_AUDIO": "Воспроизводить звуковое уведомление при создании новой беседы или получении новых сообщений" }, "EMAIL_NOTIFICATIONS_SECTION": { "TITLE": "Email Уведомления", @@ -47,7 +47,7 @@ "NOTE": "Редактируйте настройки push-уведомлений здесь", "CONVERSATION_ASSIGNMENT": "Отправлять push уведомление при назначении мне диалога", "CONVERSATION_CREATION": "Отправлять push уведомление, когда новый диалог создан", - "CONVERSATION_MENTION": "Send push notifications when you are mentioned in a conversation", + "CONVERSATION_MENTION": "Отправлять уведомления при упоминании в разговоре", "ASSIGNED_CONVERSATION_NEW_MESSAGE": "Отправлять push уведомления при создании нового сообщения в назначенном диалоге", "HAS_ENABLED_PUSH": "Вы включили push уведомления для этого браузера.", "REQUEST_PUSH": "Включить push-уведомления" diff --git a/app/javascript/dashboard/i18n/locale/ru/teamsSettings.json b/app/javascript/dashboard/i18n/locale/ru/teamsSettings.json index 32bc187b6..fa7236b31 100644 --- a/app/javascript/dashboard/i18n/locale/ru/teamsSettings.json +++ b/app/javascript/dashboard/i18n/locale/ru/teamsSettings.json @@ -1,35 +1,35 @@ { "TEAMS_SETTINGS": { - "NEW_TEAM": "Create new team", + "NEW_TEAM": "Создать новую команду", "HEADER": "Команды", - "SIDEBAR_TXT": "

Teams

Teams let you organize your agents into groups based on their responsibilities.
A user can be part of multiple teams. You can assign conversations to a team when you are working collaboratively.

", + "SIDEBAR_TXT": "

Команды

Команды позволяют вам организовывать своих операторов в группы в зависимости от их обязанностей.
Пользователь может быть частью нескольких команд. Вы можете назначить разговоры команде, когда вы работаете совместно.

", "LIST": { - "404": "There are no teams created on this account.", - "EDIT_TEAM": "Edit team" + "404": "В этом аккаунте нет ни одной команды.", + "EDIT_TEAM": "Редактировать команду" }, "CREATE_FLOW": { "CREATE": { - "TITLE": "Create a new team", - "DESC": "Add a title and description to your new team." + "TITLE": "Создать новую команду", + "DESC": "Добавьте название и описание в вашу новую команду." }, "AGENTS": { - "BUTTON_TEXT": "Add agents to team", - "TITLE": "Add agents to team - %{teamName}", - "DESC": "Add Agents to your newly created team. This lets you collaborate as a team on conversations, get notified on new events in the same conversation." + "BUTTON_TEXT": "Добавить операторов в команду", + "TITLE": "Добавить операторов в команду - %{teamName}", + "DESC": "Добавьте операторов в вашу только что созданную команду. Это позволит вам сотрудничать как команде при разговорах, получать уведомления о новых событиях в том же разговоре." }, "WIZARD": [ { "title": "Создать", "route": "settings_teams_new", - "body": "Create a new team of agents." + "body": "Создайте новую команду операторов." }, { "title": "Добавить операторов", "route": "settings_teams_add_agents", - "body": "Add agents to the team." + "body": "Добавить операторов в команду." }, { - "title": "Finish", + "title": "Завершить", "route": "settings_teams_finish", "body": "Все готово!" } @@ -37,88 +37,88 @@ }, "EDIT_FLOW": { "CREATE": { - "TITLE": "Edit your team details", - "DESC": "Edit title and description to your team.", - "BUTTON_TEXT": "Update team" + "TITLE": "Редактировать данные вашей команды", + "DESC": "Редактировать название и описание для вашей команды.", + "BUTTON_TEXT": "Обновить команду" }, "AGENTS": { - "BUTTON_TEXT": "Update agents in team", - "TITLE": "Add agents to team - %{teamName}", - "DESC": "Add Agents to your newly created team. All the added agents will be notified when a conversation is assigned to this team." + "BUTTON_TEXT": "Обновить операторов в команде", + "TITLE": "Добавить операторов в команду - %{teamName}", + "DESC": "Добавьте операторов в вашу только что созданную команду. Все добавленные операторы будут уведомлены, когда беседа будет назначена этой команде." }, "WIZARD": [ { - "title": "Team details", + "title": "Информация о команде", "route": "settings_teams_edit", - "body": "Change name, description and other details." + "body": "Изменить имя, описание и другие сведения." }, { - "title": "Edit Agents", + "title": "Редактировать операторов", "route": "settings_teams_edit_members", - "body": "Edit agents in your team." + "body": "Управляйте операторами вашей команды." }, { - "title": "Finish", + "title": "Завершить", "route": "settings_teams_edit_finish", "body": "Все готово!" } ] }, "TEAM_FORM": { - "ERROR_MESSAGE": "Couldn't save the team details. Try again." + "ERROR_MESSAGE": "Не удалось сохранить информацию о команде. Попробуйте еще раз." }, "AGENTS": { - "AGENT": "AGENT", + "AGENT": "Оператор", "EMAIL": "Email", "BUTTON_TEXT": "Добавить операторов", - "ADD_AGENTS": "Adding Agents to your Team...", - "SELECT": "select", - "SELECT_ALL": "select all agents", - "SELECTED_COUNT": "%{selected} out of %{total} agents selected." + "ADD_AGENTS": "Добавление операторов в вашу команду...", + "SELECT": "выбрать", + "SELECT_ALL": "выбрать всех операторов", + "SELECTED_COUNT": "Выбрано %{selected} из %{total} операторов." }, "ADD": { - "TITLE": "Add agents to team - %{teamName}", - "DESC": "Add Agents to your newly created team. This lets you collaborate as a team on conversations, get notified on new events in the same conversation.", - "SELECT": "select", - "SELECT_ALL": "select all agents", - "SELECTED_COUNT": "%{selected} out of %{total} agents selected.", + "TITLE": "Добавить операторов в команду - %{teamName}", + "DESC": "Добавьте операторов в вашу только что созданную команду. Это позволит вам сотрудничать как команде при разговорах, получать уведомления о новых событиях в том же разговоре.", + "SELECT": "выбрать", + "SELECT_ALL": "выбрать всех операторов", + "SELECTED_COUNT": "Выбрано %{selected} из %{total} операторов.", "BUTTON_TEXT": "Добавить операторов", - "AGENT_VALIDATION_ERROR": "Select atleaset one agent." + "AGENT_VALIDATION_ERROR": "Выберите хотя бы одного оператора." }, "FINISH": { - "TITLE": "Your team is ready!", - "MESSAGE": "You can now collaborate as a team on conversations. Happy supporting ", - "BUTTON_TEXT": "Finish" + "TITLE": "Ваша команда готова!", + "MESSAGE": "Теперь вы можете сотрудничать как команда в беседах. Удачной вам поддержки", + "BUTTON_TEXT": "Завершить" }, "DELETE": { "BUTTON_TEXT": "Удалить", "API": { - "SUCCESS_MESSAGE": "Team deleted successfully.", - "ERROR_MESSAGE": "Couldn't delete the team. Try again." + "SUCCESS_MESSAGE": "Команда успешно удалена.", + "ERROR_MESSAGE": "Не удалось удалить команду. Повторите попытку." }, "CONFIRM": { - "TITLE": "Are you sure want to delete - %{teamName}", - "MESSAGE": "Deleting the team will remove the team assignment from the conversations assigned to this team.", + "TITLE": "Вы уверены, что хотите удалить - %{teamName}", + "MESSAGE": "Удаление команды снимет назначение команды из бесед, связанных с этой командой.", "YES": "Удалить ", "NO": "Отменить" } }, "SETTINGS": "Настройки", "FORM": { - "UPDATE": "Update team", - "CREATE": "Create team", + "UPDATE": "Обновить команду", + "CREATE": "Создать команду", "NAME": { - "LABEL": "Team name", - "PLACEHOLDER": "Example: Sales, Customer Support" + "LABEL": "Название команды", + "PLACEHOLDER": "Пример: Продажи, Поддержка клиентов" }, "DESCRIPTION": { - "LABEL": "Team Description", - "PLACEHOLDER": "Short description about this team." + "LABEL": "Описание команды", + "PLACEHOLDER": "Краткое описание этой команды." }, "AUTO_ASSIGN": { - "LABEL": "Allow auto assign for this team." + "LABEL": "Разрешить автоматическое назначение для этой команды." }, - "SUBMIT_CREATE": "Create team" + "SUBMIT_CREATE": "Создать команду" } } } diff --git a/app/javascript/dashboard/i18n/locale/sk/campaign.json b/app/javascript/dashboard/i18n/locale/sk/campaign.json new file mode 100644 index 000000000..2eed61b19 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/sk/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Cancel", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Please enter a valid URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Update", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "There was an error, please try again" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Status", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Edit", + "DELETE": "Delete" + }, + "STATUS": { + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/sk/chatlist.json b/app/javascript/dashboard/i18n/locale/sk/chatlist.json index 228554789..ef4e0629a 100644 --- a/app/javascript/dashboard/i18n/locale/sk/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/sk/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Received via email", "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", "REPLY_TO_TWEET": "Reply to this tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/sk/contact.json b/app/javascript/dashboard/i18n/locale/sk/contact.json index b8d936d22..6a94011a5 100644 --- a/app/javascript/dashboard/i18n/locale/sk/contact.json +++ b/app/javascript/dashboard/i18n/locale/sk/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Labels available in the account", "REMOVE": "Click on X icon to remove the label", "ADD": "Click on + icon to add the label", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Update labels", "UPDATE_ERROR": "Couldn't update labels, try again." }, "NO_LABELS_TO_ADD": "There are no more labels defined in the account.", - "NO_AVAILABLE_LABELS": "There are no labels added to this conversation." + "NO_AVAILABLE_LABELS": "There are no labels added to this conversation.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mute Conversation", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json index 13d97f3b0..e03e40f39 100644 --- a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Settings", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/sk/index.js b/app/javascript/dashboard/i18n/locale/sk/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/sk/index.js +++ b/app/javascript/dashboard/i18n/locale/sk/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/sk/report.json b/app/javascript/dashboard/i18n/locale/sk/report.json index 22e4a1c75..cf2c14a57 100644 --- a/app/javascript/dashboard/i18n/locale/sk/report.json +++ b/app/javascript/dashboard/i18n/locale/sk/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Last 30 days" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/sv/campaign.json b/app/javascript/dashboard/i18n/locale/sv/campaign.json new file mode 100644 index 000000000..86fa42ea3 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/sv/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Avbryt", + "CREATE_BUTTON_TEXT": "Skapa", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Skickat av", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Ange en giltig URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Uppdatera", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Ett fel uppstod, vänligen försök igen" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Status", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Redigera", + "DELETE": "Radera" + }, + "STATUS": { + "ENABLED": "Aktiverad", + "DISABLED": "Inaktiverad" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/sv/chatlist.json b/app/javascript/dashboard/i18n/locale/sv/chatlist.json index 673e34ad5..8b606813f 100644 --- a/app/javascript/dashboard/i18n/locale/sv/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/sv/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Mottaget via e-post", "VIEW_TWEET_IN_TWITTER": "Visa tweet i Twitter", "REPLY_TO_TWEET": "Svara på detta tweet", - "NO_MESSAGES": "Inga meddelanden" + "NO_MESSAGES": "Inga meddelanden", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/sv/contact.json b/app/javascript/dashboard/i18n/locale/sv/contact.json index f8007cb79..e522d6958 100644 --- a/app/javascript/dashboard/i18n/locale/sv/contact.json +++ b/app/javascript/dashboard/i18n/locale/sv/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Etiketter tillgängliga på kontot", "REMOVE": "Klicka på X-ikonen för att ta bort etiketten", "ADD": "Klicka på + ikonen för att lägga till etiketten", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Uppdatera etiketter", "UPDATE_ERROR": "Kunde inte uppdatera etiketter, försök igen." }, "NO_LABELS_TO_ADD": "Det finns inga fler etiketter definierade på kontot.", - "NO_AVAILABLE_LABELS": "Det finns inga etiketter tillagda till denna konversation." + "NO_AVAILABLE_LABELS": "Det finns inga etiketter tillagda till denna konversation.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Tysta konversation", "UNMUTE_CONTACT": "Avtysta konversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json index e4363b948..39a68c725 100644 --- a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Inställningar", "COLLABORATORS": "Medarbetare", "CONFIGURATION": "Konfiguration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/sv/index.js b/app/javascript/dashboard/i18n/locale/sv/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/sv/index.js +++ b/app/javascript/dashboard/i18n/locale/sv/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/sv/report.json b/app/javascript/dashboard/i18n/locale/sv/report.json index f22abfac0..b402521b6 100644 --- a/app/javascript/dashboard/i18n/locale/sv/report.json +++ b/app/javascript/dashboard/i18n/locale/sv/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Senaste 30 dagarna" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/ta/campaign.json b/app/javascript/dashboard/i18n/locale/ta/campaign.json new file mode 100644 index 000000000..b1f2b0a66 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ta/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "ரத்துசெய்", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "சரியான URL ஐ பதிவிடவும்" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "புதுப்பிப்பு", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "There was an error, please try again" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "நிலை", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "திருத்து", + "DELETE": "Delete" + }, + "STATUS": { + "ENABLED": "இயக்கப்பட்டது", + "DISABLED": "முடக்கப்பட்டது" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/ta/chatlist.json b/app/javascript/dashboard/i18n/locale/ta/chatlist.json index e27a9c1b0..dca53b420 100644 --- a/app/javascript/dashboard/i18n/locale/ta/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ta/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Received via email", "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", "REPLY_TO_TWEET": "Reply to this tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/ta/contact.json b/app/javascript/dashboard/i18n/locale/ta/contact.json index 1d6991916..567af1644 100644 --- a/app/javascript/dashboard/i18n/locale/ta/contact.json +++ b/app/javascript/dashboard/i18n/locale/ta/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Labels available in the account", "REMOVE": "Click on X icon to remove the label", "ADD": "Click on + icon to add the label", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Update labels", "UPDATE_ERROR": "லேபிள்களைப் புதுப்பிக்க முடியவில்லை, மீண்டும் முயற்சிக்கவும்." }, "NO_LABELS_TO_ADD": "There are no more labels defined in the account.", - "NO_AVAILABLE_LABELS": "There are no labels added to this conversation." + "NO_AVAILABLE_LABELS": "There are no labels added to this conversation.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mute Conversation", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json index 4f500305f..d9253bd77 100644 --- a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "அமைப்புகள்", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/ta/index.js b/app/javascript/dashboard/i18n/locale/ta/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/ta/index.js +++ b/app/javascript/dashboard/i18n/locale/ta/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/ta/report.json b/app/javascript/dashboard/i18n/locale/ta/report.json index 44ebe628d..c36ed1f9a 100644 --- a/app/javascript/dashboard/i18n/locale/ta/report.json +++ b/app/javascript/dashboard/i18n/locale/ta/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "கடந்த 30 நாட்கள்" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/th/campaign.json b/app/javascript/dashboard/i18n/locale/th/campaign.json new file mode 100644 index 000000000..2550d305c --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/th/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "ยกเลิก", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Please enter a valid URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Update", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "เกิดข้อผิดพลาดกรุณาลองใหม่อีกครั้ง" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "สถานะ", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "เเก้ไข", + "DELETE": "ลบ" + }, + "STATUS": { + "ENABLED": "เปิด", + "DISABLED": "ปิด" + }, + "SENDER": { + "BOT": "บอท" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/th/chatlist.json b/app/javascript/dashboard/i18n/locale/th/chatlist.json index 96e82d019..914b66ada 100644 --- a/app/javascript/dashboard/i18n/locale/th/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/th/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "ได้รับทางอีเมลล์", "VIEW_TWEET_IN_TWITTER": "ดูทวิตในทวิตเตอร์", "REPLY_TO_TWEET": "ตอบกลับทวิตนี้", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/th/contact.json b/app/javascript/dashboard/i18n/locale/th/contact.json index 5fd0f7df8..17044bcc6 100644 --- a/app/javascript/dashboard/i18n/locale/th/contact.json +++ b/app/javascript/dashboard/i18n/locale/th/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "ป้ายกำกับที่ใช้ได้ในบัญชีนี้", "REMOVE": "คลิกที่ X เพื่อลบป้ายกำกับ", "ADD": "คลิกที่ + เพื่อเพิ่มป้ายกำกับ", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "อัพเดทป้ายกำกับ", "UPDATE_ERROR": "ไม่สามารถอัพเดทป้านกำกับได้กรุณาลองใหม่" }, "NO_LABELS_TO_ADD": "ไม่มีป้ายกำกับที่กำหนดให้บัญชีนี้", - "NO_AVAILABLE_LABELS": "ไม่มีป้ายกำกับที่เพิ่มให้การสนทนานี้" + "NO_AVAILABLE_LABELS": "ไม่มีป้ายกำกับที่เพิ่มให้การสนทนานี้", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "ระงับการสนทนา", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json index c2eeccdae..c91e4d2e2 100644 --- a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Settings", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/th/index.js b/app/javascript/dashboard/i18n/locale/th/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/th/index.js +++ b/app/javascript/dashboard/i18n/locale/th/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/th/report.json b/app/javascript/dashboard/i18n/locale/th/report.json index 0e8e66de2..0018a50da 100644 --- a/app/javascript/dashboard/i18n/locale/th/report.json +++ b/app/javascript/dashboard/i18n/locale/th/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Last 30 days" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/tr/campaign.json b/app/javascript/dashboard/i18n/locale/tr/campaign.json new file mode 100644 index 000000000..99727f30a --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/tr/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "İptal Et", + "CREATE_BUTTON_TEXT": "Yarat", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Tarafından gönderildi", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Lütfen geçerli bir adres girin" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Güncelleme", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Bir hata oluştu, lütfen tekrar deneyin" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Durum", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Düzenle", + "DELETE": "Sil" + }, + "STATUS": { + "ENABLED": "Etkin", + "DISABLED": "Devre dışı" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/tr/chatlist.json b/app/javascript/dashboard/i18n/locale/tr/chatlist.json index 0068db064..f12fbed41 100644 --- a/app/javascript/dashboard/i18n/locale/tr/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/tr/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "E-posta ile alındı", "VIEW_TWEET_IN_TWITTER": "Twitter'da tweet'i görüntüleyin", "REPLY_TO_TWEET": "Bu tweet'i yanıtla", - "NO_MESSAGES": "Mesaj yok" + "NO_MESSAGES": "Mesaj yok", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/tr/contact.json b/app/javascript/dashboard/i18n/locale/tr/contact.json index 25ff26d73..cc6055f3b 100644 --- a/app/javascript/dashboard/i18n/locale/tr/contact.json +++ b/app/javascript/dashboard/i18n/locale/tr/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Hesapta bulunan etiketler", "REMOVE": "Etiketi kaldırmak için X simgesine tıklayın", "ADD": "Etiketi eklemek için + simgesine tıklayın", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Etiketleri güncelle", "UPDATE_ERROR": "Etiketler güncellenemedi, tekrar deneyin." }, "NO_LABELS_TO_ADD": "Hesapta tanımlanmış başka etiket yok.", - "NO_AVAILABLE_LABELS": "Bu görüşmeye eklenen etiket yok." + "NO_AVAILABLE_LABELS": "Bu görüşmeye eklenen etiket yok.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Konuşmayı Sessize Al", "UNMUTE_CONTACT": "Konuşmanın Sesini Aç", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "Detayları göster" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json index d685b608a..78422565c 100644 --- a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Ayarlar", "COLLABORATORS": "Ortak çalışanlar", "CONFIGURATION": "Yapılandırma", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/tr/index.js b/app/javascript/dashboard/i18n/locale/tr/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/tr/index.js +++ b/app/javascript/dashboard/i18n/locale/tr/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/tr/report.json b/app/javascript/dashboard/i18n/locale/tr/report.json index 4fdde60fe..01392b0db 100644 --- a/app/javascript/dashboard/i18n/locale/tr/report.json +++ b/app/javascript/dashboard/i18n/locale/tr/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Son 30 gün" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/uk/campaign.json b/app/javascript/dashboard/i18n/locale/uk/campaign.json new file mode 100644 index 000000000..b934debaa --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uk/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Скасувати", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Будь ласка, введіть правильний URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Оновити", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "There was an error, please try again" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Статус", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Редагувати", + "DELETE": "Видалити" + }, + "STATUS": { + "ENABLED": "Увімкнено", + "DISABLED": "Вимкнено" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uk/chatlist.json b/app/javascript/dashboard/i18n/locale/uk/chatlist.json index c5abfba0c..b008fa6ce 100644 --- a/app/javascript/dashboard/i18n/locale/uk/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/uk/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Received via email", "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", "REPLY_TO_TWEET": "Reply to this tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/uk/contact.json b/app/javascript/dashboard/i18n/locale/uk/contact.json index 7a5217b70..4afbf67ff 100644 --- a/app/javascript/dashboard/i18n/locale/uk/contact.json +++ b/app/javascript/dashboard/i18n/locale/uk/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Labels available in the account", "REMOVE": "Click on X icon to remove the label", "ADD": "Click on + icon to add the label", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Update labels", "UPDATE_ERROR": "Не вдалося оновити мітки, спробуйте ще раз." }, "NO_LABELS_TO_ADD": "There are no more labels defined in the account.", - "NO_AVAILABLE_LABELS": "There are no labels added to this conversation." + "NO_AVAILABLE_LABELS": "There are no labels added to this conversation.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mute Conversation", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json index 33b7bb735..05dfe7da1 100644 --- a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Налаштування", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/uk/index.js b/app/javascript/dashboard/i18n/locale/uk/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/uk/index.js +++ b/app/javascript/dashboard/i18n/locale/uk/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/uk/report.json b/app/javascript/dashboard/i18n/locale/uk/report.json index fc1a408f7..5ff21f034 100644 --- a/app/javascript/dashboard/i18n/locale/uk/report.json +++ b/app/javascript/dashboard/i18n/locale/uk/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "Останні 30 днів" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/vi/campaign.json b/app/javascript/dashboard/i18n/locale/vi/campaign.json new file mode 100644 index 000000000..93c6acba2 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/vi/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "Huỷ", + "CREATE_BUTTON_TEXT": "Tạo", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Vui lòng nhập một URL hợp lệ" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "Cập nhật", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "Đã có lỗi, vui lòng thử lại" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "Trạng thái", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "Chỉnh sửa", + "DELETE": "Xoá" + }, + "STATUS": { + "ENABLED": "Bật", + "DISABLED": "Không bật" + }, + "SENDER": { + "BOT": "Bot" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/vi/chatlist.json b/app/javascript/dashboard/i18n/locale/vi/chatlist.json index 930bfb402..34a077990 100644 --- a/app/javascript/dashboard/i18n/locale/vi/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/vi/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "Nhận được từ email", "VIEW_TWEET_IN_TWITTER": "Xem tweet trên Twitter", "REPLY_TO_TWEET": "Trả lời cho tweet này", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available" } } diff --git a/app/javascript/dashboard/i18n/locale/vi/contact.json b/app/javascript/dashboard/i18n/locale/vi/contact.json index dfb67be01..a101e7b01 100644 --- a/app/javascript/dashboard/i18n/locale/vi/contact.json +++ b/app/javascript/dashboard/i18n/locale/vi/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "Các nhãn có sẵn trong tài khoản", "REMOVE": "Click vào X icon xóa nhãn", "ADD": "Click vào + icon thêm nhãn", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "Cập nhật nhãn", "UPDATE_ERROR": "Không thể cập nhật nhãn, hãy thử lại." }, "NO_LABELS_TO_ADD": "Không có thêm nhãn nào được xác định trong tài khoản.", - "NO_AVAILABLE_LABELS": "Không có nhãn nào được thêm vào cuộc trò chuyện này." + "NO_AVAILABLE_LABELS": "Không có nhãn nào được thêm vào cuộc trò chuyện này.", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Tắt tiếng cuộc trò chuyện", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json index 057ec995d..9e87d5f93 100644 --- a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "Cài đặt", "COLLABORATORS": "Cộng tác viên", "CONFIGURATION": "Cấu hình", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/vi/index.js b/app/javascript/dashboard/i18n/locale/vi/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/vi/index.js +++ b/app/javascript/dashboard/i18n/locale/vi/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/vi/report.json b/app/javascript/dashboard/i18n/locale/vi/report.json index d881013cf..e8b7924ed 100644 --- a/app/javascript/dashboard/i18n/locale/vi/report.json +++ b/app/javascript/dashboard/i18n/locale/vi/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "30 ngày cuối" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/zh/index.js b/app/javascript/dashboard/i18n/locale/zh/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/zh/index.js +++ b/app/javascript/dashboard/i18n/locale/zh/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/campaign.json b/app/javascript/dashboard/i18n/locale/zh_CN/campaign.json new file mode 100644 index 000000000..4eeda5d60 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/zh_CN/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "取消", + "CREATE_BUTTON_TEXT": "创建", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Message", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "请输入一个有效的 URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "更新", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "出现错误,请重试" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "Title", + "MESSAGE": "Message", + "STATUS": "状态", + "SENDER": "Sender", + "URL": "URL", + "TIME_ON_PAGE": "Time(Seconds)", + "CREATED_AT": "Created at" + }, + "BUTTONS": { + "ADD": "Add", + "EDIT": "编辑", + "DELETE": "删除" + }, + "STATUS": { + "ENABLED": "已启用", + "DISABLED": "已禁用" + }, + "SENDER": { + "BOT": "机器人" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/chatlist.json b/app/javascript/dashboard/i18n/locale/zh_CN/chatlist.json index 4b220d70e..438ad4f58 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/chatlist.json @@ -80,6 +80,7 @@ "RECEIVED_VIA_EMAIL": "通过电子邮件接收", "VIEW_TWEET_IN_TWITTER": "在 Twitter 中查看 tweet", "REPLY_TO_TWEET": "回复此推文", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "没有信息", + "NO_CONTENT": "没有可用的内容" } } diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/contact.json b/app/javascript/dashboard/i18n/locale/zh_CN/contact.json index d5803427a..468689530 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/contact.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/contact.json @@ -28,11 +28,17 @@ "INACTIVE_LABELS": "账户中可用的标签", "REMOVE": "点击 X 图标删除标签", "ADD": "点击 + 图标添加标签", + "ADD_BUTTON": "Add Labels", "UPDATE_BUTTON": "更新标签", "UPDATE_ERROR": "无法更新标签,请重试。" }, "NO_LABELS_TO_ADD": "帐户中没有更多标签。", - "NO_AVAILABLE_LABELS": "没有标签添加到此对话。" + "NO_AVAILABLE_LABELS": "没有标签添加到此对话。", + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found" + } }, "MUTE_CONTACT": "Mute Conversation", "UNMUTE_CONTACT": "Unmute Conversation", @@ -151,5 +157,18 @@ }, "VIEW_DETAILS": "View details" } + }, + "NOTES": { + "HEADER": { + "TITLE": "Notes" + }, + "ADD": { + "BUTTON": "Add", + "PLACEHOLDER": "Add a note", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "View all notes" + } } } diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json index e5d653e35..b040d5bfd 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json @@ -227,6 +227,7 @@ "SETTINGS": "设置", "COLLABORATORS": "Collaborators", "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", "BUSINESS_HOURS": "Business Hours" }, diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/index.js b/app/javascript/dashboard/i18n/locale/zh_CN/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/index.js +++ b/app/javascript/dashboard/i18n/locale/zh_CN/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/report.json b/app/javascript/dashboard/i18n/locale/zh_CN/report.json index 1ce4e4362..0fd7d92c0 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/report.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/report.json @@ -38,6 +38,18 @@ { "id": 1, "name": "最近30天" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/agentMgmt.json b/app/javascript/dashboard/i18n/locale/zh_TW/agentMgmt.json index 79e5a1671..90337cc93 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/agentMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/agentMgmt.json @@ -1,18 +1,18 @@ { "AGENT_MGMT": { - "HEADER": "客服代理們", - "HEADER_BTN_TXT": "建立客服代理", - "LOADING": "正在獲取客服代理列表", - "SIDEBAR_TXT": "

客服代理

客服代理 是您的客户支持團隊成員。

客服 代理人將能夠查看和回覆您用户的消息。 列表顯示當前帳戶中的所有客服代理人。

點擊 建立客服代理 建立新客服代理人。 您建立的客服代理將收到一封含有確認連結的電子信箱來啟動他們的帳戶,然後他們可以訪問Chatwoot 並回覆消息。

聊天視窗的功能基于以下角色。

Agent - 具有此角色的代理只能訪問收件匣、報表和會話。 他們可以將對話分配給其他客服代理人或自己,並解決會話。

管理員 - 管理員將可以訪問您帳戶中所有已啟用的聊天功能。 包括設定,以及所有正常客服代理的权限。

", + "HEADER": "客服", + "HEADER_BTN_TXT": "新增客服", + "LOADING": "正在取得客服列表", + "SIDEBAR_TXT": "

客服

客服 是您的客戶支持團隊成員。

客服將能夠查看和回覆您使用者的訊息。 列表顯示目前帳戶中的所有客服。

點擊 建立客服 建立新客服。 您建立的客服將收到一封包含確認連結的電子信箱來啟動他們的帳戶,然後他們可以訪問Chatwoot 並回覆訊息。

聊天視窗的功能基於以下角色。

客服 - 具有此角色的客服只能訪問收件匣、報表和對話。 他們可以將對話分配給其他客服或自己,並封存會話。

管理員 - 管理員將可以訪問您帳戶中所有已啟用的聊天功能。 包括設定,以及所有正常客服的權限。

", "AGENT_TYPES": { "ADMINISTRATOR": "管理員", - "AGENT": "客服代理" + "AGENT": "客服" }, "LIST": { - "404": "没有與此帳戶关联的代理", - "TITLE": "管理您團隊中的代理", - "DESC": "您可以建立/移除代理到您的團隊。", - "NAME": "姓名:", + "404": "沒有與此帳號關聯的客服", + "TITLE": "管理您團隊中的客服", + "DESC": "你可以建立 / 移除客服到你的團隊。", + "NAME": "姓名", "EMAIL": "電子信箱", "STATUS": "狀態", "ACTIONS": "操作", @@ -20,77 +20,77 @@ "VERIFICATION_PENDING": "待驗證" }, "ADD": { - "TITLE": "建立代理到你的團隊", + "TITLE": "新增客服到你的團隊", "DESC": "您可以建立能夠处理支持您的收件匣的人。", - "CANCEL_BUTTON_TEXT": "取消操作", + "CANCEL_BUTTON_TEXT": "取消", "FORM": { "NAME": { - "LABEL": "代理人姓名", - "PLACEHOLDER": "請輸入代理人名稱" + "LABEL": "客服姓名", + "PLACEHOLDER": "請輸客服名稱" }, "AGENT_TYPE": { - "LABEL": "代理類型", - "PLACEHOLDER": "請選擇一個類型", - "ERROR": "代理類型必填" + "LABEL": "客服角色", + "PLACEHOLDER": "請選擇一個角色", + "ERROR": "客服角色為必填" }, "EMAIL": { "LABEL": "電子信箱地址", - "PLACEHOLDER": "請輸入代理的信箱地址" + "PLACEHOLDER": "請輸入客服的電子郵件" }, - "SUBMIT": "建立客服代理" + "SUBMIT": "新增客服" }, "API": { - "SUCCESS_MESSAGE": "代理建立成功", - "EXIST_MESSAGE": "該信箱已被註冊,請重新輸入新的電子信箱", + "SUCCESS_MESSAGE": "成功新增客服", + "EXIST_MESSAGE": "該電子郵件已被註冊,請輸入新的電子郵件", "ERROR_MESSAGE": "無法連接伺服器,請稍後再試" } }, "DELETE": { "BUTTON_TEXT": "刪除", "API": { - "SUCCESS_MESSAGE": "代理建立成功", + "SUCCESS_MESSAGE": "刪除客服成功", "ERROR_MESSAGE": "無法連接伺服器,請稍後再試" }, "CONFIRM": { "TITLE": "確認刪除", - "MESSAGE": "您確定要刪除吗? ", + "MESSAGE": "您確定要刪除嗎? ", "YES": "是,刪除 ", "NO": "不,保留 " } }, "EDIT": { - "TITLE": "編輯代理", + "TITLE": "編輯客服", "FORM": { "NAME": { - "LABEL": "代理人姓名", - "PLACEHOLDER": "請輸入代理人名稱" + "LABEL": "客服姓名", + "PLACEHOLDER": "請輸入客服名稱" }, "AGENT_TYPE": { - "LABEL": "代理類型", - "PLACEHOLDER": "請選擇一個類型", - "ERROR": "代理類型必填" + "LABEL": "角色", + "PLACEHOLDER": "請選擇一個角色", + "ERROR": "客服角色為必填" }, "EMAIL": { "LABEL": "電子信箱地址", - "PLACEHOLDER": "請輸入代理的信箱地址" + "PLACEHOLDER": "請輸入客服的電子郵件" }, - "SUBMIT": "編輯代理" + "SUBMIT": "編輯客服" }, "BUTTON_TEXT": "編輯", - "CANCEL_BUTTON_TEXT": "取消操作", + "CANCEL_BUTTON_TEXT": "取消", "API": { "SUCCESS_MESSAGE": "更新客服資訊成功", "ERROR_MESSAGE": "無法連接伺服器,請稍後再試" }, "PASSWORD_RESET": { "ADMIN_RESET_BUTTON": "重置密碼", - "ADMIN_SUCCESS_MESSAGE": "一封包含重置密碼說明的電子信箱已發送給代理", - "SUCCESS_MESSAGE": "代理的密碼重置成功", + "ADMIN_SUCCESS_MESSAGE": "一封包含重置密碼說明的電子郵件已發送給客服", + "SUCCESS_MESSAGE": "客服密碼重置成功", "ERROR_MESSAGE": "無法連接 Chatwoot 伺服器,請稍後再試" } }, "SEARCH": { - "NO_RESULTS": "没有找到代理人。" + "NO_RESULTS": "查無客服。" } } } diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/campaign.json b/app/javascript/dashboard/i18n/locale/zh_TW/campaign.json new file mode 100644 index 000000000..790436830 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/zh_TW/campaign.json @@ -0,0 +1,79 @@ +{ + "CAMPAIGN": { + "HEADER": "Campaigns", + "SIDEBAR_TXT": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations. Click on Add Campaign to create a new campaign. You can also edit or delete an existing campaign by clicking on the Edit or Delete button.", + "HEADER_BTN_TXT": "Create a campaign", + "ADD": { + "TITLE": "Create a campaign", + "DESC": "Proactive messages allow the customer to send outbound messages to their contacts which would trigger more conversations.", + "CANCEL_BUTTON_TEXT": "取消", + "CREATE_BUTTON_TEXT": "建立", + "FORM": { + "TITLE": { + "LABEL": "標題", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "訊息", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "訊息為必填" + }, + "SENT_BY": { + "LABEL": "發送者:", + "PLACEHOLDER": "Please select the the content of campaign", + "ERROR": "發送者為必填" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "請輸入 URL", + "ERROR": "請輸入一個有效的 URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "請輸入時間", + "ERROR": "Time on page is required" + }, + "ENABLED": "Enable campaign", + "SUBMIT": "Add Campaign" + }, + "API": { + "SUCCESS_MESSAGE": "Campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit campaign", + "UPDATE_BUTTON_TEXT": "更新", + "API": { + "SUCCESS_MESSAGE": "Campaign updated successfully", + "ERROR_MESSAGE": "出現錯誤,請重試" + } + }, + "LIST": { + "LOADING_MESSAGE": "Loading campaigns...", + "404": "There are no campaigns created for this inbox.", + "TABLE_HEADER": { + "TITLE": "標題", + "MESSAGE": "訊息", + "STATUS": "狀態", + "SENDER": "發送者", + "URL": "URL", + "TIME_ON_PAGE": "時間(秒)", + "CREATED_AT": "建立於" + }, + "BUTTONS": { + "ADD": "建立", + "EDIT": "編輯", + "DELETE": "刪除" + }, + "STATUS": { + "ENABLED": "已啟用", + "DISABLED": "已停用" + }, + "SENDER": { + "BOT": "機器人" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/cannedMgmt.json b/app/javascript/dashboard/i18n/locale/zh_TW/cannedMgmt.json index e987e85fa..0d1a14808 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/cannedMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/cannedMgmt.json @@ -1,29 +1,29 @@ { "CANNED_MGMT": { - "HEADER": "預設回覆", - "HEADER_BTN_TXT": "建立預設回覆", - "LOADING": "獲取預設回覆", - "SEARCH_404": "没有任何項目符合此查詢", - "SIDEBAR_TXT": "

預設回覆

預設的回覆已保存的回覆模板,可以用來快速發送回覆到對話。

若要建立預設反應,只需點擊 建立預設回覆。 您也可以通過點擊編輯或刪除按鈕來編輯或刪除現有的預定回覆

短代碼 的幫助下使用預定的回覆方式。 代理人在聊天時可以通過輸入 '/' 然後是短代碼訪問預設回覆

", + "HEADER": "罐頭回覆", + "HEADER_BTN_TXT": "新增罐頭回覆", + "LOADING": "取得罐頭回覆", + "SEARCH_404": "沒有任何項目符合此查詢", + "SIDEBAR_TXT": "

預設回覆

將預設回覆保存為回覆模板,用來快速發送回覆到對話。

若要建立預設回覆,只需點擊 建立預設回覆。 您也可以通過點擊編輯或刪除按鈕來編輯或刪除現有的預設回覆

簡碼 的幫助下使用預設的回覆方式。 客服在聊天時可以通過輸入 '/' 然後是簡碼使用預設回覆

", "LIST": { - "404": "此帳戶中没有預設的回覆。", - "TITLE": "管理預設回覆", - "DESC": "預設的回覆是預定義的回覆模板,可以用來快速發送對工單的答覆。", + "404": "此帳戶中沒有可用的罐頭回覆。", + "TITLE": "管理罐頭回覆", + "DESC": "罐頭回覆是預定義的回覆模板,可以用來快速發送對工單的回覆。", "TABLE_HEADER": [ - "短码", + "簡碼", "内容", "操作" ] }, "ADD": { - "TITLE": "建立預設回覆", - "DESC": "預設的回覆是保存的回覆模板,可以用來快速發送回覆到對話中。", + "TITLE": "建立罐頭回覆", + "DESC": "罐頭回覆是保存的回覆模板,可以用來快速發送回覆到對話中。", "CANCEL_BUTTON_TEXT": "取消操作", "FORM": { "SHORT_CODE": { - "LABEL": "短码", - "PLACEHOLDER": "請輸入短码", - "ERROR": "必須輸入短代碼" + "LABEL": "簡碼", + "PLACEHOLDER": "請輸入簡碼", + "ERROR": "必須輸入簡碼" }, "CONTENT": { "LABEL": "内容", @@ -33,18 +33,18 @@ "SUBMIT": "送出" }, "API": { - "SUCCESS_MESSAGE": "已成功建立預設回覆", + "SUCCESS_MESSAGE": "已成功新增罐頭回覆", "ERROR_MESSAGE": "無法連接伺服器,請稍後再試" } }, "EDIT": { - "TITLE": "編輯預設回覆", + "TITLE": "編輯罐頭回覆", "CANCEL_BUTTON_TEXT": "取消操作", "FORM": { "SHORT_CODE": { - "LABEL": "短码", - "PLACEHOLDER": "請輸入短码", - "ERROR": "必須輸入短代碼" + "LABEL": "簡碼", + "PLACEHOLDER": "請輸入簡碼", + "ERROR": "必須輸入簡碼" }, "CONTENT": { "LABEL": "内容", @@ -55,19 +55,19 @@ }, "BUTTON_TEXT": "編輯", "API": { - "SUCCESS_MESSAGE": "預設回覆已成功更新", + "SUCCESS_MESSAGE": "罐頭回覆已成功更新", "ERROR_MESSAGE": "無法連接伺服器,請稍後再試" } }, "DELETE": { "BUTTON_TEXT": "刪除", "API": { - "SUCCESS_MESSAGE": "預設回覆已成功刪除", + "SUCCESS_MESSAGE": "罐頭回覆已成功刪除", "ERROR_MESSAGE": "無法連接伺服器,請稍後再試" }, "CONFIRM": { "TITLE": "確認刪除", - "MESSAGE": "您確定要刪除吗? ", + "MESSAGE": "您確定要刪除嗎? ", "YES": "是,刪除 ", "NO": "不,保留 " } diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/chatlist.json b/app/javascript/dashboard/i18n/locale/zh_TW/chatlist.json index 43d5eba7a..328e8500d 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/chatlist.json @@ -1,14 +1,14 @@ { "CHAT_LIST": { - "LOADING": "正在獲取對話", - "LOAD_MORE_CONVERSATIONS": "加載更多對話", - "EOF": "所有對話已加載 🎉", + "LOADING": "正在取得對話", + "LOAD_MORE_CONVERSATIONS": "載入更多對話", + "EOF": "所有對話已載入 🎉", "LIST": { - "404": "没有有效的對話在這個群组里面" + "404": "這個群組中無有效對話" }, - "TAB_HEADING": "會話", + "TAB_HEADING": "對話", "SEARCH": { - "INPUT": "搜索人、聊天室、保存回覆" + "INPUT": "搜尋人、聊天室、保存回覆" }, "STATUS_TABS": [ { @@ -27,7 +27,7 @@ "COUNT_KEY": "mineCount" }, { - "NAME": "未分配的", + "NAME": "未指派的", "KEY": "unassigned", "COUNT_KEY": "unAssignedCount" }, @@ -47,22 +47,22 @@ "VALUE": "resolved" }, { - "TEXT": "机器人", - "VALUE": "机器人" + "TEXT": "機器人", + "VALUE": "機器人" } ], "ATTACHMENTS": { "image": { "ICON": "ion-image", - "CONTENT": "图片消息" + "CONTENT": "圖片訊息" }, "audio": { "ICON": "ion-volume-high", - "CONTENT": "音频消息" + "CONTENT": "聲音訊息" }, "video": { "ICON": "ion-ios-videocam", - "CONTENT": "视频消息" + "CONTENT": "影片訊息" }, "file": { "ICON": "ion-document", @@ -77,9 +77,10 @@ "CONTENT": "分享了一個網址" } }, - "RECEIVED_VIA_EMAIL": "Received via email", + "RECEIVED_VIA_EMAIL": "使用電子郵件接收", "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", "REPLY_TO_TWEET": "Reply to this tweet", - "NO_MESSAGES": "No Messages" + "NO_MESSAGES": "沒有訊息", + "NO_CONTENT": "沒有可用內容" } } diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/contact.json b/app/javascript/dashboard/i18n/locale/zh_TW/contact.json index 89edf5fcd..b1b4e6e43 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/contact.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/contact.json @@ -1,43 +1,49 @@ { "CONTACT_PANEL": { - "NOT_AVAILABLE": "Not Available", + "NOT_AVAILABLE": "無法使用", "EMAIL_ADDRESS": "電子信箱地址", "PHONE_NUMBER": "電話號碼", - "COPY_SUCCESSFUL": "Copied to clipboard successfully", - "COMPANY": "Company", + "COPY_SUCCESSFUL": "成功複製到剪貼簿", + "COMPANY": "公司", "LOCATION": "位置", - "CONVERSATION_TITLE": "對話詳情", + "CONVERSATION_TITLE": "對話詳細資訊", "BROWSER": "瀏覽器", - "OS": "操作系统", - "INITIATED_FROM": "啟動自:", + "OS": "作業系统", + "INITIATED_FROM": "發起自:", "INITIATED_AT": "發起於", - "IP_ADDRESS": "IP Address", - "NEW_MESSAGE": "New message", + "IP_ADDRESS": "IP 位置", + "NEW_MESSAGE": "新訊息", "CONVERSATIONS": { - "NO_RECORDS_FOUND": "此聯繫人没有關聯到以前的會話。", + "NO_RECORDS_FOUND": "此聯絡人没有關聯到以前的對話。", "TITLE": "上一次對話" }, "CUSTOM_ATTRIBUTES": { - "TITLE": "Custom Attributes" + "TITLE": "自訂屬性" }, "LABELS": { "TITLE": "對話標記", "MODAL": { "TITLE": "標記為", - "ACTIVE_LABELS": "建立到對話的標籤", + "ACTIVE_LABELS": "將標籤新增至對話", "INACTIVE_LABELS": "帳戶中可用的標籤", - "REMOVE": "點擊 X 圖示刪除標籤", - "ADD": "點擊 + 圖示建立標籤", + "REMOVE": "點擊 X 圖示以刪除標籤", + "ADD": "點擊 + 圖示以新增標籤", + "ADD_BUTTON": "新增標籤", "UPDATE_BUTTON": "更新標籤", "UPDATE_ERROR": "無法更新標籤,請重試。" }, - "NO_LABELS_TO_ADD": "帳戶中没有更多標籤。", - "NO_AVAILABLE_LABELS": "没有標籤建立到此對話。" + "NO_LABELS_TO_ADD": "帳戶中沒有更多標籤。", + "NO_AVAILABLE_LABELS": "此對話沒有被新增任何標籤。", + "LABEL_SELECT": { + "TITLE": "新增標籤", + "PLACEHOLDER": "搜尋標籤", + "NO_RESULT": "查無標籤" + } }, - "MUTE_CONTACT": "Mute Conversation", - "UNMUTE_CONTACT": "Unmute Conversation", - "MUTED_SUCCESS": "This conversation is muted for 6 hours", - "UNMUTED_SUCCESS": "This conversation is unmuted", + "MUTE_CONTACT": "將對話靜音", + "UNMUTE_CONTACT": "將對話解除靜音", + "MUTED_SUCCESS": "將對話靜音 6 小時", + "UNMUTED_SUCCESS": "對話已解除靜音", "SEND_TRANSCRIPT": "Send Transcript", "EDIT_LABEL": "編輯" }, @@ -47,14 +53,14 @@ "DESC": "編輯聯絡人資訊" }, "CREATE_CONTACT": { - "BUTTON_LABEL": "New Contact", - "TITLE": "Create new contact", - "DESC": "Add basic information details about the contact." + "BUTTON_LABEL": "新聯絡人", + "TITLE": "新增聯絡人", + "DESC": "為聯絡人增加基本資訊" }, "CONTACT_FORM": { "FORM": { "SUBMIT": "送出", - "CANCEL": "取消操作", + "CANCEL": "取消", "AVATAR": { "LABEL": "連絡人頭像" }, @@ -103,14 +109,14 @@ } } }, - "SUCCESS_MESSAGE": "Contact saved successfully", + "SUCCESS_MESSAGE": "聯絡人儲存成功", "CONTACT_ALREADY_EXIST": "這個電子信箱已經被其他聯絡人使用了。", "ERROR_MESSAGE": "出現錯誤,請重試" }, "NEW_CONVERSATION": { - "BUTTON_LABEL": "Start conversation", - "TITLE": "New conversation", - "DESC": "Start a new conversation by sending a new message.", + "BUTTON_LABEL": "開始對話", + "TITLE": "新的對話", + "DESC": "傳送一則新訊息以開始新的對話", "NO_INBOX": "Couldn't find an inbox to initiate a new conversation with this contact.", "FORM": { "TO": { @@ -121,35 +127,48 @@ "ERROR": "Select an inbox" }, "MESSAGE": { - "LABEL": "Message", - "PLACEHOLDER": "Write your message here", - "ERROR": "Message can't be empty" + "LABEL": "訊息", + "PLACEHOLDER": "在此填寫你的訊息", + "ERROR": "訊息不得為空" }, - "SUBMIT": "Send message", - "CANCEL": "取消操作", - "SUCCESS_MESSAGE": "Message sent!", - "ERROR_MESSAGE": "Couldn't send! try again" + "SUBMIT": "傳送訊息", + "CANCEL": "取消", + "SUCCESS_MESSAGE": "訊息已傳送", + "ERROR_MESSAGE": "無法傳送!請重新嘗試。" } }, "CONTACTS_PAGE": { - "HEADER": "Contacts", - "SEARCH_BUTTON": "Search", - "SEARCH_INPUT_PLACEHOLDER": "Search for contacts", + "HEADER": "聯絡人", + "SEARCH_BUTTON": "搜尋", + "SEARCH_INPUT_PLACEHOLDER": "搜尋聯絡人", "LIST": { "LOADING_MESSAGE": "Loading contacts...", "404": "No contacts matches your search 🔍", "TABLE_HEADER": { - "NAME": "姓名:", + "NAME": "姓名", "PHONE_NUMBER": "聯絡人電話", - "CONVERSATIONS": "會話", + "CONVERSATIONS": "對話", "LAST_ACTIVITY": "Last Activity", - "COUNTRY": "Country", - "CITY": "City", + "COUNTRY": "國家", + "CITY": "城市", "SOCIAL_PROFILES": "Social Profiles", - "COMPANY": "Company", + "COMPANY": "公司", "EMAIL_ADDRESS": "電子信箱地址" }, - "VIEW_DETAILS": "View details" + "VIEW_DETAILS": "查看詳細資訊" + } + }, + "NOTES": { + "HEADER": { + "TITLE": "筆記" + }, + "ADD": { + "BUTTON": "建立", + "PLACEHOLDER": "建立筆記", + "TITLE": "Shift + Enter to create a note" + }, + "FOOTER": { + "BUTTON": "查看所有筆記" } } } diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json b/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json index 85a6c298b..3f0f294bc 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json @@ -5,16 +5,16 @@ "NO_MESSAGE_2": " 向您的頁面發送一條消息!", "NO_INBOX_1": "看來你還没有建立任何收件匣。", "NO_INBOX_2": " 開始吧", - "NO_INBOX_AGENT": "看起來您還没有分配到收件匣。請聯繫您的管理員", + "NO_INBOX_AGENT": "看起來你還沒有分配到收件匣。請聯絡你的管理員", "SEARCH_MESSAGES": "Search for messages in conversations", "SEARCH": { - "TITLE": "Search messages", + "TITLE": "搜尋訊息", "LOADING_MESSAGE": "Crunching data...", - "PLACEHOLDER": "Type any text to search messages", - "NO_MATCHING_RESULTS": "No results found." + "PLACEHOLDER": "輸入任何文字以搜尋訊息", + "NO_MATCHING_RESULTS": "查無結果。" }, - "UNREAD_MESSAGES": "Unread Messages", - "UNREAD_MESSAGE": "Unread Message", + "UNREAD_MESSAGES": "未讀訊息", + "UNREAD_MESSAGE": "未讀訊息", "CLICK_HERE": "點擊這裡", "LOADING_INBOXES": "正在加載收件匣", "LOADING_CONVERSATIONS": "加載更多對話", @@ -23,11 +23,11 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 小時消息視窗限制", "LAST_INCOMING_TWEET": "You are replying to the last incoming tweet", - "REPLYING_TO": "You are replying to:", - "REMOVE_SELECTION": "Remove Selection", + "REPLYING_TO": "你正在回覆到:", + "REMOVE_SELECTION": "移除選擇項目", "DOWNLOAD": "下載", "UPLOADING_ATTACHMENTS": "Uploading attachments...", - "NO_RESPONSE": "No response", + "NO_RESPONSE": "無回應", "HEADER": { "RESOLVE_ACTION": "已解決", "REOPEN_ACTION": "重新打開", @@ -37,7 +37,7 @@ "DETAILS": "詳情" }, "RESOLVE_DROPDOWN": { - "OPEN_BOT": "Open with bot" + "OPEN_BOT": "使用 bot 開啟" }, "FOOTER": { "MSG_INPUT": "輸入“/”開始選擇快捷回覆", @@ -50,20 +50,20 @@ "CREATE": "建立筆記", "TWEET": "推特", "TIP_FORMAT_ICON": "Show rich text editor", - "TIP_EMOJI_ICON": "Show emoji selector", - "TIP_ATTACH_ICON": "Attach files", - "ENTER_TO_SEND": "Enter to send" + "TIP_EMOJI_ICON": "顯示 emoji 選擇器", + "TIP_ATTACH_ICON": "附件", + "ENTER_TO_SEND": "按下 Enter 傳送" }, "VISIBLE_TO_AGENTS": "私人筆記:僅對您和您的團隊可以看見", "CHANGE_STATUS": "對話狀態已更改", - "CHANGE_AGENT": "對話分配人已更改", + "CHANGE_AGENT": "對話指派人已更改", "CHANGE_TEAM": "Conversation team changed", "FILE_SIZE_LIMIT": "File exceeds the {MAXIMUM_FILE_UPLOAD_SIZE} attachment limit", - "SENT_BY": "Sent by:", + "SENT_BY": "寄送者:", "ASSIGNMENT": { - "SELECT_AGENT": "Select Agent", + "SELECT_AGENT": "選擇客服", "REMOVE": "刪除", - "ASSIGN": "Assign" + "ASSIGN": "指派" } }, "EMAIL_TRANSCRIPT": { @@ -84,7 +84,7 @@ } }, "ONBOARDING": { - "TITLE": "Hey 👋, Welcome to %{installationName}!", + "TITLE": "Hey 👋, 歡迎來到 %{installationName}!", "DESCRIPTION": "Thanks for signing up. We want you to get the most out of %{installationName}. Here are a few things you can do in %{installationName} to make the experience delightful.", "READ_LATEST_UPDATES": "Read our latest updates", "ALL_CONVERSATION": { @@ -92,27 +92,27 @@ "DESCRIPTION": "View all the conversations from your customers in one single dashboard. You can filter the conversations by the incoming channel, label and status." }, "TEAM_MEMBERS": { - "TITLE": "Invite your team members", + "TITLE": "邀請團隊成員", "DESCRIPTION": "Since you are getting ready to talk to your customer, bring in your teammates to assist you. You can invite your teammates by adding their email address to the agent list.", - "NEW_LINK": "Click here to invite a team member" + "NEW_LINK": "按此邀請一個新成員" }, "INBOXES": { "TITLE": "Connect Inboxes", "DESCRIPTION": "Connect various channels through which your customers would be talking to you. It can be a website live-chat, your Facebook or Twitter page or even your WhatsApp number.", - "NEW_LINK": "Click here to create an inbox" + "NEW_LINK": "按此建立一個收件匣" }, "LABELS": { "TITLE": "Organize conversations with labels", "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enquiry, #billing-question etc., so that you can use them in a conversation later.", - "NEW_LINK": "Click here to create tags" + "NEW_LINK": "按此建立標籤" } }, "CONVERSATION_SIDEBAR": { - "DETAILS_TITLE": "Conversations Details", - "ASSIGNEE_LABEL": "Assigned Agent", - "TEAM_LABEL": "Assigned Team", + "DETAILS_TITLE": "對話詳細資訊", + "ASSIGNEE_LABEL": "指派客服", + "TEAM_LABEL": "指派團隊", "SELECT": { - "PLACEHOLDER": "None" + "PLACEHOLDER": "無" } } } diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/generalSettings.json b/app/javascript/dashboard/i18n/locale/zh_TW/generalSettings.json index 1b874112c..8a57603b8 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/generalSettings.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/generalSettings.json @@ -47,28 +47,28 @@ }, "FORMS": { "MULTISELECT": { - "ENTER_TO_SELECT": "Press enter to select", - "ENTER_TO_REMOVE": "Press enter to remove", + "ENTER_TO_SELECT": "按下 enter 以選擇", + "ENTER_TO_REMOVE": "按下 enter 以移除", "SELECT_ONE": "Select one" } }, "NOTIFICATIONS_PAGE": { - "HEADER": "Notifications", - "MARK_ALL_DONE": "Mark All Done", + "HEADER": "通知", + "MARK_ALL_DONE": "全部標記完成", "LIST": { - "LOADING_MESSAGE": "Loading notifications...", - "404": "No Notifications", + "LOADING_MESSAGE": "載入更多通知...", + "404": "沒有通知", "TABLE_HEADER": [ - "姓名:", + "姓名", "聯絡人電話", - "會話", + "對話", "Last Contacted" ] }, "TYPE_LABEL": { - "conversation_creation": "New conversation", + "conversation_creation": "新對話", "conversation_assignment": "Conversation Assigned", - "assigned_conversation_new_message": "New Message", + "assigned_conversation_new_message": "新訊息", "conversation_mention": "Mention" } } diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json index 34caf18ce..d8870e9e7 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json @@ -17,7 +17,7 @@ "body": "驗證您的帳戶並建立建立收件匣。" }, { - "title": "建立客服代理", + "title": "建立客服", "route": "settings_inboxes_add_agents", "body": "將客服增加到建立的收件匣。" }, @@ -75,10 +75,10 @@ "DISABLED": "已停用" }, "REPLY_TIME": { - "TITLE": "Set Reply time", - "IN_A_FEW_MINUTES": "In a few minutes", - "IN_A_FEW_HOURS": "In a few hours", - "IN_A_DAY": "In a day", + "TITLE": "設定回覆時間", + "IN_A_FEW_MINUTES": "幾分鐘內", + "IN_A_FEW_HOURS": "幾小時內", + "IN_A_DAY": "一天內", "HELP_TEXT": "This reply time will be displayed on the live chat widget" }, "WIDGET_COLOR": { @@ -165,8 +165,8 @@ "DESC": "目前我們支持網站線上聊天小元件、Facebook 頁面和 Twitter 配置文件作為平台。 我們在工作中擁有更多平台,如 Whatsapp、Email、Telegram 和 Line,這些平台將很快支援。" }, "AGENTS": { - "TITLE": "客服代理們", - "DESC": "在這裡您可以建立代理來管理您新建立的收件匣。只有這些選定的代理才能訪問您的收件匣。 不屬於此收件匣的代理人在登入時將無法看到或回覆此收件匣中的消息。
PS: 作為管理員,如果您需要訪問所有收件匣, 您應該將自己建立到您建立的所有收件匣中。", + "TITLE": "客服", + "DESC": "在這裡您可以建立客服來管理您新建立的收件匣。只有這些選定的客服才能訪問您的收件匣。 不屬於此收件匣的客服在登入時將無法看到或回覆此收件匣中的消息。
PS: 作為管理員,如果您需要訪問所有收件匣, 您應該將自己建立到您建立的所有收件匣中。", "VALIDATION_ERROR": "Add atleast one agent to your new Inbox", "PICK_AGENTS": "Pick agents for the inbox" }, @@ -187,14 +187,14 @@ "DESC": "" }, "AGENTS": { - "BUTTON_TEXT": "建立客服代理", - "ADD_AGENTS": "正在向收件匣建立代理..." + "BUTTON_TEXT": "新增客服", + "ADD_AGENTS": "正在新增客服到你的收件匣..." }, "FINISH": { "TITLE": "您的收件匣已準備就緒!", "MESSAGE": "您現在可以通過您的新頻道與您的客户聯繫。開心的支援客戶吧 ", "BUTTON_TEXT": "带我到這裡", - "MORE_SETTINGS": "More settings", + "MORE_SETTINGS": "更多設定", "WEBSITE_SUCCESS": "您已成功完成建立網站頻道。複製下面顯示的代碼並將其黏貼在您的網站上。 下次客户使用即時聊天時,對話將自動出現在您的收件匣中。" }, "REAUTH": "重新授權", @@ -227,14 +227,15 @@ "SETTINGS": "設定", "COLLABORATORS": "客服人員", "CONFIGURATION": "組態", + "CAMPAIGN": "Campaigns", "PRE_CHAT_FORM": "Pre Chat Form", - "BUSINESS_HOURS": "Business Hours" + "BUSINESS_HOURS": "營業時間" }, "SETTINGS": "設定", "FEATURES": { "LABEL": "Features", - "DISPLAY_FILE_PICKER": "Display file picker on the widget", - "DISPLAY_EMOJI_PICKER": "Display emoji picker on the widget" + "DISPLAY_FILE_PICKER": "在小工具上顯示檔案選擇器", + "DISPLAY_EMOJI_PICKER": "在小工具上顯示 emoji 選擇器" }, "SETTINGS_POPUP": { "MESSENGER_HEADING": "Messenger 脚本", @@ -245,14 +246,14 @@ "AUTO_ASSIGNMENT": "啟用自動分配", "INBOX_UPDATE_TITLE": "收件匣設定", "INBOX_UPDATE_SUB_TEXT": "更新收件匣設定", - "AUTO_ASSIGNMENT_SUB_TEXT": "啟用或停用建立到此收件匣的代理人自動分配新的會話。", + "AUTO_ASSIGNMENT_SUB_TEXT": "啟用或停用此收件匣客服的對話自動分配。", "HMAC_VERIFICATION": "User Identity Validation", "HMAC_DESCRIPTION": "Inorder validate the users identity, the SDK allows you to pass an `identity_hash` for each user. You can generate HMAC using 'sha256' with the key shown here." }, "FACEBOOK_REAUTHORIZE": { "TITLE": "重新授權", "SUBTITLE": "Your Facebook connection has expired, please reconnect your Facebook page to continue services", - "MESSAGE_SUCCESS": "Reconnection successful", + "MESSAGE_SUCCESS": "重新連接成功", "MESSAGE_ERROR": "出現錯誤,請重試" }, "PRE_CHAT_FORM": { @@ -276,7 +277,7 @@ "TITLE": "Set your availability", "SUBTITLE": "Set your availability on your livechat widget", "WEEKLY_TITLE": "Set your weekly hours", - "TIMEZONE_LABEL": "Select timezone", + "TIMEZONE_LABEL": "選擇時區", "UPDATE": "Update business hours settings", "TOGGLE_AVAILABILITY": "Enable business availability for this inbox", "UNAVAILABLE_MESSAGE_LABEL": "Unavailable message for vistors", @@ -284,7 +285,7 @@ "TOGGLE_HELP": "Enabling business availability will show the available hours on live chat widget even if all the agents are offline. Outside available hours vistors can be warned with a message and a pre-chat form.", "DAY": { "ENABLE": "Enable availability for this day", - "UNAVAILABLE": "Unavailable", + "UNAVAILABLE": "無法使用", "HOURS": "hours", "VALIDATION_ERROR": "Starting time should be before closing time.", "CHOOSE": "Choose" diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/index.js b/app/javascript/dashboard/i18n/locale/zh_TW/index.js index 5dfc44e4b..cf1dda7fe 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/index.js +++ b/app/javascript/dashboard/i18n/locale/zh_TW/index.js @@ -1,33 +1,37 @@ import { default as _agentMgmt } from './agentMgmt.json'; -import { default as _labelsMgmt } from './labelsMgmt.json'; +import { default as _campaign } from './campaign.json'; import { default as _cannedMgmt } from './cannedMgmt.json'; import { default as _chatlist } from './chatlist.json'; import { default as _contact } from './contact.json'; import { default as _conversation } from './conversation.json'; +import { default as _generalSettings } from './generalSettings.json'; import { default as _inboxMgmt } from './inboxMgmt.json'; +import { default as _integrations } from './integrations.json'; +import { default as _labelsMgmt } from './labelsMgmt.json'; import { default as _login } from './login.json'; import { default as _report } from './report.json'; import { default as _resetPassword } from './resetPassword.json'; import { default as _setNewPassword } from './setNewPassword.json'; import { default as _settings } from './settings.json'; import { default as _signup } from './signup.json'; -import { default as _integrations } from './integrations.json'; -import { default as _generalSettings } from './generalSettings.json'; +import { default as _teamsSettings } from './teamsSettings.json'; export default { ..._agentMgmt, + ..._campaign, ..._cannedMgmt, ..._chatlist, ..._contact, ..._conversation, + ..._generalSettings, ..._inboxMgmt, + ..._integrations, + ..._labelsMgmt, ..._login, ..._report, - ..._labelsMgmt, ..._resetPassword, ..._setNewPassword, ..._settings, ..._signup, - ..._integrations, - ..._generalSettings, + ..._teamsSettings, }; diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/report.json b/app/javascript/dashboard/i18n/locale/zh_TW/report.json index 1cb98291f..b808b432e 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/report.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/report.json @@ -3,7 +3,7 @@ "HEADER": "報表", "LOADING_CHART": "正在載入图表數據...", "NO_ENOUGH_DATA": "我們没有收到足夠的數據來生成報表,請稍後再試。", - "DOWNLOAD_AGENT_REPORTS": "Download agent reports", + "DOWNLOAD_AGENT_REPORTS": "下載客服報告", "METRICS": { "CONVERSATIONS": { "NAME": "會話", @@ -38,6 +38,18 @@ { "id": 1, "name": "最近30天" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" } ] } diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/settings.json b/app/javascript/dashboard/i18n/locale/zh_TW/settings.json index b51fc3bac..d5ea67521 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/settings.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/settings.json @@ -19,7 +19,7 @@ "PASSWORD_SECTION": { "TITLE": "密碼", "NOTE": "更新您的密碼會在多個設備中重置您的登入資訊。", - "BTN_TEXT": "Change password" + "BTN_TEXT": "變更密碼" }, "ACCESS_TOKEN": { "TITLE": "訪問 token", @@ -56,12 +56,12 @@ "LABEL": "頭像" }, "NAME": { - "LABEL": "Your full name", + "LABEL": "你的姓名", "ERROR": "Please enter a valid full name", "PLACEHOLDER": "Please enter your full name" }, "DISPLAY_NAME": { - "LABEL": "Display name", + "LABEL": "顯示名稱", "ERROR": "Please enter a valid display name", "PLACEHOLDER": "Please enter a display name, this would be displayed in conversations" }, @@ -123,17 +123,17 @@ "SIDEBAR": { "CONVERSATIONS": "會話", "REPORTS": "報表", - "CONTACTS": "Contacts", + "CONTACTS": "聯絡人", "SETTINGS": "設定", "HOME": "首頁", - "AGENTS": "客服代理們", + "AGENTS": "客服", "INBOXES": "收件匣", - "NOTIFICATIONS": "Notifications", + "NOTIFICATIONS": "通知", "CANNED_RESPONSES": "預設回覆", "INTEGRATIONS": "整合方式", "ACCOUNT_SETTINGS": "帳戶設定", "LABELS": "標籤", - "TEAMS": "Teams" + "TEAMS": "團隊" }, "CREATE_ACCOUNT": { "NEW_ACCOUNT": "新帳戶", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/signup.json b/app/javascript/dashboard/i18n/locale/zh_TW/signup.json index e2d730eb0..fa4d03f4a 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/signup.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/signup.json @@ -9,9 +9,9 @@ "ERROR": "Account name is too short" }, "FULL_NAME": { - "LABEL": "Full name", - "PLACEHOLDER": "Enter your full name. eg: Bruce Wayne", - "ERROR": "Full name is too short" + "LABEL": "姓名", + "PLACEHOLDER": "請輸入您的完整姓名,如:王大明", + "ERROR": "姓名太短了" }, "EMAIL": { "LABEL": "Work email", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/teamsSettings.json b/app/javascript/dashboard/i18n/locale/zh_TW/teamsSettings.json index 41485acd6..cf0a7dfaf 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/teamsSettings.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/teamsSettings.json @@ -1,20 +1,20 @@ { "TEAMS_SETTINGS": { - "NEW_TEAM": "Create new team", - "HEADER": "Teams", + "NEW_TEAM": "建立新團隊", + "HEADER": "團隊", "SIDEBAR_TXT": "

Teams

Teams let you organize your agents into groups based on their responsibilities.
A user can be part of multiple teams. You can assign conversations to a team when you are working collaboratively.

", "LIST": { "404": "There are no teams created on this account.", - "EDIT_TEAM": "Edit team" + "EDIT_TEAM": "編輯團隊" }, "CREATE_FLOW": { "CREATE": { - "TITLE": "Create a new team", + "TITLE": "建立一個新團隊", "DESC": "Add a title and description to your new team." }, "AGENTS": { - "BUTTON_TEXT": "Add agents to team", - "TITLE": "Add agents to team - %{teamName}", + "BUTTON_TEXT": "將客服加入團隊", + "TITLE": "將客服加入團隊 - %{teamName}", "DESC": "Add Agents to your newly created team. This lets you collaborate as a team on conversations, get notified on new events in the same conversation." }, "WIZARD": [ @@ -24,12 +24,12 @@ "body": "Create a new team of agents." }, { - "title": "建立客服代理", + "title": "建立客服", "route": "settings_teams_add_agents", - "body": "Add agents to the team." + "body": "將客服加入團隊" }, { - "title": "Finish", + "title": "完成", "route": "settings_teams_finish", "body": "您已設定狀態為離開" } @@ -37,28 +37,28 @@ }, "EDIT_FLOW": { "CREATE": { - "TITLE": "Edit your team details", + "TITLE": "編輯團隊詳細資訊", "DESC": "Edit title and description to your team.", - "BUTTON_TEXT": "Update team" + "BUTTON_TEXT": "更新團隊" }, "AGENTS": { - "BUTTON_TEXT": "Update agents in team", - "TITLE": "Add agents to team - %{teamName}", + "BUTTON_TEXT": "更新團隊客服", + "TITLE": "將客服加入團隊 - %{teamName}", "DESC": "Add Agents to your newly created team. All the added agents will be notified when a conversation is assigned to this team." }, "WIZARD": [ { - "title": "Team details", + "title": "團隊詳細資訊", "route": "settings_teams_edit", "body": "Change name, description and other details." }, { - "title": "Edit Agents", + "title": "編輯客服", "route": "settings_teams_edit_members", "body": "Edit agents in your team." }, { - "title": "Finish", + "title": "完成", "route": "settings_teams_edit_finish", "body": "您已設定狀態為離開" } @@ -68,57 +68,57 @@ "ERROR_MESSAGE": "Couldn't save the team details. Try again." }, "AGENTS": { - "AGENT": "AGENT", + "AGENT": "客服", "EMAIL": "電子信箱", - "BUTTON_TEXT": "建立客服代理", - "ADD_AGENTS": "Adding Agents to your Team...", - "SELECT": "select", - "SELECT_ALL": "select all agents", + "BUTTON_TEXT": "新增客服", + "ADD_AGENTS": "正在將客服加入到你的團隊...", + "SELECT": "選擇", + "SELECT_ALL": "選取所有客服", "SELECTED_COUNT": "%{selected} out of %{total} agents selected." }, "ADD": { - "TITLE": "Add agents to team - %{teamName}", + "TITLE": "將客服加入團隊 - %{teamName}", "DESC": "Add Agents to your newly created team. This lets you collaborate as a team on conversations, get notified on new events in the same conversation.", - "SELECT": "select", - "SELECT_ALL": "select all agents", + "SELECT": "選擇", + "SELECT_ALL": "選取所有克服", "SELECTED_COUNT": "%{selected} out of %{total} agents selected.", - "BUTTON_TEXT": "建立客服代理", + "BUTTON_TEXT": "新增客服", "AGENT_VALIDATION_ERROR": "Select atleaset one agent." }, "FINISH": { - "TITLE": "Your team is ready!", + "TITLE": "你的團隊已經準備好了", "MESSAGE": "You can now collaborate as a team on conversations. Happy supporting ", - "BUTTON_TEXT": "Finish" + "BUTTON_TEXT": "完成" }, "DELETE": { "BUTTON_TEXT": "刪除", "API": { - "SUCCESS_MESSAGE": "Team deleted successfully.", - "ERROR_MESSAGE": "Couldn't delete the team. Try again." + "SUCCESS_MESSAGE": "團隊刪除成功", + "ERROR_MESSAGE": "無法刪除團隊,請再試一次" }, "CONFIRM": { - "TITLE": "Are you sure want to delete - %{teamName}", + "TITLE": "確定要刪除 - %{teamName} ?", "MESSAGE": "Deleting the team will remove the team assignment from the conversations assigned to this team.", "YES": "刪除 ", - "NO": "取消操作" + "NO": "取消" } }, "SETTINGS": "設定", "FORM": { - "UPDATE": "Update team", - "CREATE": "Create team", + "UPDATE": "更新團隊", + "CREATE": "建立團隊", "NAME": { - "LABEL": "Team name", + "LABEL": "團隊名稱", "PLACEHOLDER": "Example: Sales, Customer Support" }, "DESCRIPTION": { - "LABEL": "Team Description", - "PLACEHOLDER": "Short description about this team." + "LABEL": "團隊描述", + "PLACEHOLDER": "對此團隊的簡短描述" }, "AUTO_ASSIGN": { - "LABEL": "Allow auto assign for this team." + "LABEL": "允許在團隊中自動指派" }, - "SUBMIT_CREATE": "Create team" + "SUBMIT_CREATE": "建立團隊" } } } diff --git a/app/javascript/dashboard/modules/contact/components/ContactAttribute.vue b/app/javascript/dashboard/modules/contact/components/ContactAttribute.vue new file mode 100644 index 000000000..dd02ac338 --- /dev/null +++ b/app/javascript/dashboard/modules/contact/components/ContactAttribute.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/app/javascript/dashboard/modules/contact/components/ContactFields.vue b/app/javascript/dashboard/modules/contact/components/ContactFields.vue new file mode 100644 index 000000000..0e1f6d306 --- /dev/null +++ b/app/javascript/dashboard/modules/contact/components/ContactFields.vue @@ -0,0 +1,74 @@ + + + + diff --git a/app/javascript/dashboard/modules/contact/components/ContactIntro.vue b/app/javascript/dashboard/modules/contact/components/ContactIntro.vue new file mode 100644 index 000000000..42bc7849d --- /dev/null +++ b/app/javascript/dashboard/modules/contact/components/ContactIntro.vue @@ -0,0 +1,121 @@ + + + + diff --git a/app/javascript/dashboard/modules/contact/components/ContactPanel.vue b/app/javascript/dashboard/modules/contact/components/ContactPanel.vue new file mode 100644 index 000000000..3deeee7ff --- /dev/null +++ b/app/javascript/dashboard/modules/contact/components/ContactPanel.vue @@ -0,0 +1,62 @@ + + + + diff --git a/app/javascript/dashboard/modules/contact/components/ManageLayout.vue b/app/javascript/dashboard/modules/contact/components/ManageLayout.vue new file mode 100644 index 000000000..87884e14e --- /dev/null +++ b/app/javascript/dashboard/modules/contact/components/ManageLayout.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/app/javascript/dashboard/modules/contact/stories/ContactAttribute.stories.js b/app/javascript/dashboard/modules/contact/stories/ContactAttribute.stories.js new file mode 100644 index 000000000..4deab66f2 --- /dev/null +++ b/app/javascript/dashboard/modules/contact/stories/ContactAttribute.stories.js @@ -0,0 +1,43 @@ +import ContactAttribute from '../components/ContactAttribute'; +import { action } from '@storybook/addon-actions'; + +export default { + title: 'Components/Contact/ContactAttribute', + component: ContactAttribute, + argTypes: { + label: { + defaultValue: 'Email', + control: { + type: 'text', + }, + }, + value: { + defaultValue: 'dwight@schrute.farms', + control: { + type: 'text', + }, + }, + icon: { + defaultValue: 'ion-email', + control: { + type: 'text', + }, + }, + showEdit: { + control: { + type: 'boolean', + }, + }, + }, +}; + +const Template = (args, { argTypes }) => ({ + props: Object.keys(argTypes), + components: { ContactAttribute }, + template: '', +}); + +export const DefaultAttribute = Template.bind({}); +DefaultAttribute.args = { + onEdit: action('edit'), +}; diff --git a/app/javascript/dashboard/modules/contact/stories/ContactFields.stories.js b/app/javascript/dashboard/modules/contact/stories/ContactFields.stories.js new file mode 100644 index 000000000..01a99f254 --- /dev/null +++ b/app/javascript/dashboard/modules/contact/stories/ContactFields.stories.js @@ -0,0 +1,42 @@ +import ContactFields from '../components/ContactFields'; +import { action } from '@storybook/addon-actions'; + +export default { + title: 'Components/Contact/ContactFields', + component: ContactFields, +}; + +const Template = (args, { argTypes }) => ({ + props: Object.keys(argTypes), + components: { ContactFields }, + template: + '', +}); + +export const DefaultContactFields = Template.bind({}); +DefaultContactFields.args = { + contact: { + id: 979442, + name: 'Eden Hazard', + title: 'Playmaker', + thumbnail: 'https://randomuser.me/api/portraits/men/19.jpg', + company: { + id: 10, + name: 'Chelsea', + }, + email: 'hazard@chelsea.com', + availability_status: 'offline', + phone_number: '', + custom_attributes: {}, + additional_attributes: { + description: + 'Known for his dribbling, he is considered to be one of the best players in the world.', + social_profiles: { + twitter: 'hazardeden10', + facebook: 'hazardeden10', + linkedin: 'hazardeden10', + }, + }, + }, + onUpdate: action('update'), +}; diff --git a/app/javascript/dashboard/modules/contact/stories/ContactIntro.stories.js b/app/javascript/dashboard/modules/contact/stories/ContactIntro.stories.js new file mode 100644 index 000000000..ddaeb22e8 --- /dev/null +++ b/app/javascript/dashboard/modules/contact/stories/ContactIntro.stories.js @@ -0,0 +1,43 @@ +import ContactIntro from '../components/ContactIntro'; +import { action } from '@storybook/addon-actions'; + +export default { + title: 'Components/Contact/ContactIntro', + component: ContactIntro, +}; + +const Template = (args, { argTypes }) => ({ + props: Object.keys(argTypes), + components: { ContactIntro }, + template: + '', +}); + +export const DefaultContactIntro = Template.bind({}); +DefaultContactIntro.args = { + contact: { + id: 979442, + name: 'Eden Hazard', + title: 'Playmaker', + thumbnail: 'https://randomuser.me/api/portraits/men/19.jpg', + company: { + id: 10, + name: 'Chelsea', + }, + email: 'hazard@chelsea.com', + availability_status: 'offline', + phone_number: '', + custom_attributes: {}, + additional_attributes: { + description: + 'Known for his dribbling, he is considered to be one of the best players in the world.', + social_profiles: { + twitter: 'hazardeden10', + facebook: 'hazardeden10', + linkedin: 'hazardeden10', + }, + }, + }, + onEdit: action('edit'), + onNewMessage: action('new message 💬'), +}; diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/AddNote.stories.js b/app/javascript/dashboard/routes/dashboard/contacts/components/AddNote.stories.js new file mode 100644 index 000000000..6dc059167 --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/contacts/components/AddNote.stories.js @@ -0,0 +1,19 @@ +import { action } from '@storybook/addon-actions'; +import AddNote from './AddNote.vue'; + +export default { + title: 'Components/Notes/Add', + component: AddNote, + argTypes: {}, +}; + +const Template = (args, { argTypes }) => ({ + props: Object.keys(argTypes), + components: { AddNote }, + template: '', +}); + +export const Add = Template.bind({}); +Add.args = { + onAdd: action('Added'), +}; diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/AddNote.vue b/app/javascript/dashboard/routes/dashboard/contacts/components/AddNote.vue new file mode 100644 index 000000000..1b416c2a3 --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/contacts/components/AddNote.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactNote.stories.js b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactNote.stories.js new file mode 100644 index 000000000..00d766a49 --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactNote.stories.js @@ -0,0 +1,52 @@ +import { action } from '@storybook/addon-actions'; +import ContactNote from './ContactNote.vue'; + +export default { + title: 'Components/Notes/Note', + component: ContactNote, + argTypes: { + id: { + control: { + type: 'number', + }, + }, + note: { + defaultValue: + 'A copy and paste musical notes symbols & music symbols collection for easy access.', + control: { + type: 'text', + }, + }, + userName: { + defaultValue: 'John Doe', + control: { + type: 'text', + }, + }, + timeStamp: { + defaultValue: '1618046084', + control: { + type: 'number', + }, + }, + thumbnail: { + defaultValue: 'https://randomuser.me/api/portraits/men/62.jpg', + control: { + type: 'text', + }, + }, + }, +}; + +const Template = (args, { argTypes }) => ({ + props: Object.keys(argTypes), + components: { ContactNote }, + template: + '', +}); + +export const Note = Template.bind({}); +Note.args = { + onEdit: action('Edit'), + onDelete: action('Delete'), +}; diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactNote.vue b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactNote.vue new file mode 100644 index 000000000..9be5649b3 --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactNote.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue index 5e0085680..a631c2d15 100644 --- a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue +++ b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue @@ -7,6 +7,7 @@ :columns="columns" :table-data="tableData" :border-around="false" + :sort-option="sortOption" /> this.$emit('on-sort-change', params), + }, + }; + }, + computed: { + tableData() { + if (this.isLoading) { + return []; + } + return this.contacts.map(item => { + // Note: The attributes used here is in snake case + // as it simplier the sort attribute calculation + const additional = item.additional_attributes || {}; + const { last_activity_at: lastActivityAt } = item; + return { + ...item, + phone_number: item.phone_number || '---', + company: additional.company_name || '---', + location: additional.location || '---', + profiles: additional.social_profiles || {}, + city: additional.city || '---', + country: additional.country || '---', + conversations_count: item.conversations_count || '---', + last_activity_at: lastActivityAt + ? this.dynamicTime(lastActivityAt) + : '---', + }; + }); + }, + columns() { + return [ { field: 'name', key: 'name', title: this.$t('CONTACTS_PAGE.LIST.TABLE_HEADER.NAME'), fixed: 'left', align: 'left', + sortBy: this.sortConfig.name || '', width: 300, renderBodyCell: ({ row }) => ( - +
+ +
+
+ {row.name} +
+ + {this.$t('CONTACTS_PAGE.LIST.VIEW_DETAILS')} + +
- + ), }, { @@ -95,6 +141,7 @@ export default { key: 'email', title: this.$t('CONTACTS_PAGE.LIST.TABLE_HEADER.EMAIL_ADDRESS'), align: 'left', + sortBy: this.sortConfig.email || '', width: 240, renderBodyCell: ({ row }) => { if (row.email) @@ -113,8 +160,9 @@ export default { }, }, { - field: 'phone', - key: 'phone', + field: 'phone_number', + key: 'phone_number', + sortBy: this.sortConfig.phone_number || '', title: this.$t('CONTACTS_PAGE.LIST.TABLE_HEADER.PHONE_NUMBER'), align: 'left', }, @@ -167,8 +215,9 @@ export default { }, }, { - field: 'lastSeen', - key: 'lastSeen', + field: 'last_activity_at', + key: 'last_activity_at', + sortBy: this.sortConfig.last_activity_at || '', title: this.$t('CONTACTS_PAGE.LIST.TABLE_HEADER.LAST_ACTIVITY'), align: 'left', }, @@ -179,29 +228,23 @@ export default { width: 150, align: 'left', }, - ], - }; + ]; + }, }, - computed: { - tableData() { - if (this.isLoading) { - return []; - } - return this.contacts.map(item => { - const additional = item.additional_attributes || {}; - const { last_seen_at: lastSeenAt } = item; - return { - ...item, - phone: item.phone_number || '---', - company: additional.company_name || '---', - location: additional.location || '---', - profiles: additional.social_profiles || {}, - city: additional.city || '---', - country: additional.country || '---', - conversationsCount: item.conversations_count || '---', - lastSeen: lastSeenAt ? this.dynamicTime(lastSeenAt) : '---', - }; - }); + watch: { + sortOrder() { + this.setSortConfig(); + }, + sortParam() { + this.setSortConfig(); + }, + }, + mounted() { + this.setSortConfig(); + }, + methods: { + setSortConfig() { + this.sortConfig = { [this.sortParam]: this.sortOrder }; }, }, }; @@ -225,6 +268,10 @@ export default { display: flex; text-align: left; + .user-block { + min-width: 0; + } + .user-thumbnail-box { margin-right: var(--space-small); } @@ -251,6 +298,9 @@ export default { .ve-table-header-th { font-size: var(--font-size-mini) !important; } + .ve-table-sort { + top: -4px; + } } .contacts--loader { diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsView.vue b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsView.vue index af99e088e..7874302ae 100644 --- a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsView.vue +++ b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsView.vue @@ -14,6 +14,8 @@ :is-loading="uiFlags.isFetching" :on-click-contact="openContactInfoPanel" :active-contact-id="selectedContactId" + :sort-config="sortConfig" + @on-sort-change="onSortChange" /> = 1 + return !Number.isNaN(selectedPageNumber) && + selectedPageNumber >= DEFAULT_PAGE ? selectedPageNumber - : 1; + : DEFAULT_PAGE; }, }, mounted() { - this.$store.dispatch('contacts/get', { page: this.pageParameter }); + this.fetchContacts(this.pageParameter); }, methods: { + updatePageParam(page) { + window.history.pushState({}, null, `${this.$route.path}?page=${page}`); + }, + getSortAttribute() { + let sortAttr = Object.keys(this.sortConfig).reduce((acc, sortKey) => { + const sortOrder = this.sortConfig[sortKey]; + if (sortOrder) { + const sortOrderSign = sortOrder === 'asc' ? '' : '-'; + return `${sortOrderSign}${sortKey}`; + } + return acc; + }, ''); + if (!sortAttr) { + this.sortConfig = { name: 'asc' }; + sortAttr = 'name'; + } + return sortAttr; + }, + fetchContacts(page) { + this.updatePageParam(page); + const requestParams = { page, sortAttr: this.getSortAttribute() }; + if (!this.searchQuery) { + this.$store.dispatch('contacts/get', requestParams); + } else { + this.$store.dispatch('contacts/search', { + search: this.searchQuery, + ...requestParams, + }); + } + }, onInputSearch(event) { const newQuery = event.target.value; const refetchAllContacts = !!this.searchQuery && newQuery === ''; - if (refetchAllContacts) { - this.$store.dispatch('contacts/get', { page: 1 }); - } this.searchQuery = newQuery; + if (refetchAllContacts) { + this.fetchContacts(DEFAULT_PAGE); + } }, onSearchSubmit() { this.selectedContactId = ''; if (this.searchQuery) { - this.$store.dispatch('contacts/search', { - search: this.searchQuery, - page: 1, - }); + this.fetchContacts(DEFAULT_PAGE); } }, onPageChange(page) { this.selectedContactId = ''; - window.history.pushState({}, null, `${this.$route.path}?page=${page}`); - if (this.searchQuery) { - this.$store.dispatch('contacts/search', { - search: this.searchQuery, - page, - }); - } else { - this.$store.dispatch('contacts/get', { page }); - } + this.fetchContacts(page); }, openContactInfoPanel(contactId) { this.selectedContactId = contactId; @@ -130,6 +155,10 @@ export default { onToggleCreate() { this.showCreateModal = !this.showCreateModal; }, + onSortChange(params) { + this.sortConfig = params; + this.fetchContacts(this.meta.currentPage); + }, }, }; @@ -138,6 +167,7 @@ export default { .contacts-page { width: 100%; } + .left-wrap { display: flex; flex-direction: column; diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/Header.vue b/app/javascript/dashboard/routes/dashboard/contacts/components/Header.vue index 2c6b2d63b..f96e75077 100644 --- a/app/javascript/dashboard/routes/dashboard/contacts/components/Header.vue +++ b/app/javascript/dashboard/routes/dashboard/contacts/components/Header.vue @@ -17,18 +17,22 @@ @keyup.enter="onSearchSubmit" @input="onInputSearch" /> - + > + {{ $t('CONTACTS_PAGE.SEARCH_BUTTON') }} + - + diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/NoteList.stories.js b/app/javascript/dashboard/routes/dashboard/contacts/components/NoteList.stories.js new file mode 100644 index 000000000..7f2797bed --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/contacts/components/NoteList.stories.js @@ -0,0 +1,45 @@ +import { action } from '@storybook/addon-actions'; +import noteList from './NoteList'; + +export default { + title: 'Components/Notes/List', + component: noteList, + argTypes: {}, +}; + +const Template = (args, { argTypes }) => ({ + props: Object.keys(argTypes), + components: { noteList }, + template: + '', +}); + +export const List = Template.bind({}); +List.args = { + onClick: action('show'), + onAddNote: action('added'), + onEditNote: action('edit'), + onDeleteNote: action('deleted'), + notes: [ + { + id: '12345', + content: + 'It is a long established fact that a reader will be distracted.', + user: { + name: 'John Doe', + thumbnail: 'https://randomuser.me/api/portraits/men/69.jpg', + }, + created_at: 1618046084, + }, + { + id: '12346', + content: + 'It is simply dummy text of the printing and typesetting industry.', + user: { + name: 'Pearl Cruz', + thumbnail: 'https://randomuser.me/api/portraits/women/29.jpg', + }, + created_at: 1616046076, + }, + ], +}; diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/NoteList.vue b/app/javascript/dashboard/routes/dashboard/contacts/components/NoteList.vue new file mode 100644 index 000000000..4b6df9d6c --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/contacts/components/NoteList.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/app/javascript/dashboard/routes/dashboard/contacts/pages/ContactManageView.vue b/app/javascript/dashboard/routes/dashboard/contacts/pages/ContactManageView.vue new file mode 100644 index 000000000..8b7707b3c --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/contacts/pages/ContactManageView.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/app/javascript/dashboard/routes/dashboard/contacts/routes.js b/app/javascript/dashboard/routes/dashboard/contacts/routes.js index 06a13c7db..f5ef5ad14 100644 --- a/app/javascript/dashboard/routes/dashboard/contacts/routes.js +++ b/app/javascript/dashboard/routes/dashboard/contacts/routes.js @@ -1,5 +1,6 @@ /* eslint arrow-body-style: 0 */ import ContactsView from './components/ContactsView'; +import ContactManageView from './pages/ContactManageView'; import { frontendURL } from '../../../helper/URLHelper'; export const routes = [ @@ -9,4 +10,13 @@ export const routes = [ roles: ['administrator', 'agent'], component: ContactsView, }, + { + path: frontendURL('accounts/:accountId/contacts/:contactId'), + name: 'contacts_dashboard_manage', + roles: ['administrator', 'agent'], + component: ContactManageView, + props: route => { + return { contactId: route.params.contactId }; + }, + }, ]; diff --git a/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue b/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue index c3c9d62f9..ef2cd42cd 100644 --- a/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue +++ b/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue @@ -22,7 +22,17 @@ selected-label="" :placeholder="$t('CONVERSATION_SIDEBAR.SELECT.PLACEHOLDER')" :allow-empty="true" - /> + > + + {{ $t('AGENT_MGMT.SEARCH.NO_RESULTS') }} +
+
- diff --git a/app/javascript/dashboard/routes/dashboard/conversation/labels/AddLabelToConversation.vue b/app/javascript/dashboard/routes/dashboard/conversation/labels/AddLabelToConversation.vue index 5c897b372..bdae422a9 100644 --- a/app/javascript/dashboard/routes/dashboard/conversation/labels/AddLabelToConversation.vue +++ b/app/javascript/dashboard/routes/dashboard/conversation/labels/AddLabelToConversation.vue @@ -21,7 +21,7 @@ :title="label.title" :description="label.description" :bg-color="label.color" - :show-icon="true" + :show-close="true" @click="onRemove" />
@@ -44,7 +44,6 @@ :title="label.title" :description="label.description" :bg-color="label.color" - :show-icon="true" icon="ion-plus" @click="onAdd" /> diff --git a/app/javascript/dashboard/routes/dashboard/conversation/labels/LabelBox.vue b/app/javascript/dashboard/routes/dashboard/conversation/labels/LabelBox.vue index 11beb1c32..a3686fc11 100644 --- a/app/javascript/dashboard/routes/dashboard/conversation/labels/LabelBox.vue +++ b/app/javascript/dashboard/routes/dashboard/conversation/labels/LabelBox.vue @@ -8,30 +8,35 @@ :title="$t('CONTACT_PANEL.LABELS.TITLE')" icon="ion-pricetags" emoji="🏷️" - :show-edit="true" - @edit="onEdit" /> -
+
+ -
- {{ $t('CONTACT_PANEL.LABELS.NO_AVAILABLE_LABELS') }} + +
-
@@ -39,45 +44,55 @@ diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue index 93820a9ac..f1ee1980c 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue @@ -257,6 +257,9 @@
+
+ +
@@ -270,6 +273,7 @@ import inboxMixin from 'shared/mixins/inboxMixin'; import FacebookReauthorize from './facebook/Reauthorize'; import PreChatFormSettings from './PreChatForm/Settings'; import WeeklyAvailability from './components/WeeklyAvailability'; +import Campaign from './components/Campaign'; export default { components: { @@ -277,6 +281,7 @@ export default { FacebookReauthorize, PreChatFormSettings, WeeklyAvailability, + Campaign, }, mixins: [alertMixin, configMixin, inboxMixin], data() { @@ -330,6 +335,10 @@ export default { if (this.isAWebWidgetInbox) { return [ ...visibleToAllChannelTabs, + { + key: 'campaign', + name: this.$t('INBOX_MGMT.TABS.CAMPAIGN'), + }, { key: 'preChatForm', name: this.$t('INBOX_MGMT.TABS.PRE_CHAT_FORM'), diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Api.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Api.vue index 8c19892d6..2bbfcf568 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Api.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Api.vue @@ -56,7 +56,8 @@ import { required } from 'vuelidate/lib/validators'; import router from '../../../../index'; import PageHeader from '../../SettingsSubPageHeader'; -const shouldBeWebhookUrl = (value = '') => value.startsWith('http'); +const shouldBeWebhookUrl = (value = '') => + value ? value.startsWith('http') : true; export default { components: { @@ -76,7 +77,7 @@ export default { }, validations: { channelName: { required }, - webhookUrl: { required, shouldBeWebhookUrl }, + webhookUrl: { shouldBeWebhookUrl }, }, methods: { async createChannel() { diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/AddCampaign.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/AddCampaign.vue new file mode 100644 index 000000000..a528c08d5 --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/AddCampaign.vue @@ -0,0 +1,214 @@ +