Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
646d0bf749 | ||
|
|
efaa3c07df | ||
|
|
37632957e0 | ||
|
|
942e7b3b1f | ||
|
|
367a71929d |
@@ -2,8 +2,3 @@
|
||||
ignore:
|
||||
- CVE-2021-41098 # https://github.com/chatwoot/chatwoot/issues/3097 (update once azure blob storage is updated)
|
||||
- GHSA-57hq-95w6-v4fc # Devise confirmable race condition — patched locally in User model (remove once on Devise 5+)
|
||||
# Chatwoot defaults to Active Storage redirect-style URLs, and its recommended
|
||||
# storage setup uses local/cloud storage with optional direct uploads to the
|
||||
# storage provider rather than Rails proxy mode. Revisit if we enable
|
||||
# rails_storage_proxy or other app-served Active Storage proxy routes.
|
||||
- CVE-2026-33658
|
||||
|
||||
@@ -40,8 +40,6 @@ gem 'json_refs'
|
||||
gem 'rack-attack', '>= 6.7.0'
|
||||
# a utility tool for streaming, flexible and safe downloading of remote files
|
||||
gem 'down'
|
||||
# SSRF-safe URL fetching
|
||||
gem 'ssrf_filter', '~> 1.5'
|
||||
# authentication type to fetch and send mail over oauth2.0
|
||||
gem 'gmail_xoauth'
|
||||
# Lock net-smtp to 0.3.4 to avoid issues with gmail_xoauth2
|
||||
|
||||
@@ -942,7 +942,6 @@ GEM
|
||||
activesupport (>= 5.2)
|
||||
sprockets (>= 3.0.0)
|
||||
squasher (0.7.2)
|
||||
ssrf_filter (1.5.0)
|
||||
stackprof (0.2.25)
|
||||
statsd-ruby (1.5.0)
|
||||
stripe (18.0.1)
|
||||
@@ -1159,7 +1158,6 @@ DEPENDENCIES
|
||||
spring
|
||||
spring-watcher-listen
|
||||
squasher
|
||||
ssrf_filter (~> 1.5)
|
||||
stackprof
|
||||
stripe (~> 18.0)
|
||||
telephone_number
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
4.12.1
|
||||
4.12.0
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
class Email::BaseBuilder
|
||||
include EmailAddressParseable
|
||||
|
||||
pattr_initialize [:inbox!]
|
||||
|
||||
private
|
||||
@@ -49,4 +47,8 @@ class Email::BaseBuilder
|
||||
# can save it in the format "Name <email@domain.com>"
|
||||
parse_email(account.support_email)
|
||||
end
|
||||
|
||||
def parse_email(email_string)
|
||||
Mail::Address.new(email_string).address
|
||||
end
|
||||
end
|
||||
|
||||
@@ -34,10 +34,6 @@ class Api::V1::Accounts::AgentBotsController < Api::V1::Accounts::BaseController
|
||||
@agent_bot.reload
|
||||
end
|
||||
|
||||
def reset_secret
|
||||
@agent_bot.reset_secret!
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def agent_bot
|
||||
|
||||
@@ -116,8 +116,6 @@ class Api::V1::Accounts::ConversationsController < Api::V1::Accounts::BaseContro
|
||||
# High-traffic accounts generate excessive DB writes when agents frequently switch between conversations.
|
||||
# Throttle last_seen updates to once per hour when there are no unread messages to reduce DB load.
|
||||
# Always update immediately if there are unread messages to maintain accurate read/unread state.
|
||||
# Visiting a conversation should clear any unread inbox notifications for this conversation.
|
||||
Notification::MarkConversationReadService.new(user: Current.user, account: Current.account, conversation: @conversation).perform
|
||||
return update_last_seen_on_conversation(DateTime.now.utc, true) if assignee? && @conversation.assignee_unread_messages.any?
|
||||
return update_last_seen_on_conversation(DateTime.now.utc, false) if !assignee? && @conversation.unread_messages.any?
|
||||
|
||||
|
||||
@@ -66,12 +66,6 @@ class Api::V1::Accounts::InboxesController < Api::V1::Accounts::BaseController
|
||||
head :ok
|
||||
end
|
||||
|
||||
def reset_secret
|
||||
return head :not_found unless @inbox.api?
|
||||
|
||||
@inbox.channel.reset_secret!
|
||||
end
|
||||
|
||||
def destroy
|
||||
::DeleteObjectJob.perform_later(@inbox, Current.user, request.ip) if @inbox.present?
|
||||
render status: :ok, json: { message: I18n.t('messages.inbox_deletetion_response') }
|
||||
|
||||
@@ -5,7 +5,7 @@ class Api::V1::Accounts::UploadController < Api::V1::Accounts::BaseController
|
||||
elsif params[:external_url].present?
|
||||
create_from_url
|
||||
else
|
||||
render_error(I18n.t('errors.upload.missing_input'), :unprocessable_entity)
|
||||
render_error('No file or URL provided', :unprocessable_entity)
|
||||
end
|
||||
|
||||
render_success(result) if result.is_a?(ActiveStorage::Blob)
|
||||
@@ -19,21 +19,35 @@ class Api::V1::Accounts::UploadController < Api::V1::Accounts::BaseController
|
||||
end
|
||||
|
||||
def create_from_url
|
||||
SafeFetch.fetch(params[:external_url].to_s) do |result|
|
||||
create_and_save_blob(result.tempfile, result.filename, result.content_type)
|
||||
uri = parse_uri(params[:external_url])
|
||||
return if performed?
|
||||
|
||||
fetch_and_process_file_from_uri(uri)
|
||||
end
|
||||
|
||||
def parse_uri(url)
|
||||
uri = URI.parse(url)
|
||||
validate_uri(uri)
|
||||
uri
|
||||
rescue URI::InvalidURIError, SocketError
|
||||
render_error('Invalid URL provided', :unprocessable_entity)
|
||||
nil
|
||||
end
|
||||
|
||||
def validate_uri(uri)
|
||||
raise URI::InvalidURIError unless uri.is_a?(URI::HTTP) || uri.is_a?(URI::HTTPS)
|
||||
end
|
||||
|
||||
def fetch_and_process_file_from_uri(uri)
|
||||
uri.open do |file|
|
||||
create_and_save_blob(file, File.basename(uri.path), file.content_type)
|
||||
end
|
||||
rescue SafeFetch::HttpError => e
|
||||
render_error(I18n.t('errors.upload.fetch_failed_with_message', message: e.message), :unprocessable_entity)
|
||||
rescue SafeFetch::FetchError
|
||||
render_error(I18n.t('errors.upload.fetch_failed'), :unprocessable_entity)
|
||||
rescue SafeFetch::FileTooLargeError
|
||||
render_error(I18n.t('errors.upload.file_too_large'), :unprocessable_entity)
|
||||
rescue SafeFetch::UnsupportedContentTypeError
|
||||
render_error(I18n.t('errors.upload.unsupported_content_type'), :unprocessable_entity)
|
||||
rescue SafeFetch::Error
|
||||
render_error(I18n.t('errors.upload.invalid_url'), :unprocessable_entity)
|
||||
rescue OpenURI::HTTPError => e
|
||||
render_error("Failed to fetch file from URL: #{e.message}", :unprocessable_entity)
|
||||
rescue SocketError
|
||||
render_error('Invalid URL provided', :unprocessable_entity)
|
||||
rescue StandardError
|
||||
render_error(I18n.t('errors.upload.unexpected'), :internal_server_error)
|
||||
render_error('An unexpected error occurred', :internal_server_error)
|
||||
end
|
||||
|
||||
def create_and_save_blob(io, filename, content_type)
|
||||
|
||||
@@ -30,20 +30,9 @@ class Api::V1::AccountsController < Api::BaseController
|
||||
locale: account_params[:locale],
|
||||
user: current_user
|
||||
).perform
|
||||
enqueue_branding_enrichment
|
||||
if @user
|
||||
# Authenticated users (dashboard "add account") and api_only signups
|
||||
# need the full response with account_id. API-only deployments have no
|
||||
# frontend to handle the email confirmation flow, so they need auth
|
||||
# tokens to proceed.
|
||||
# Unauthenticated web signup returns only the email — no session is
|
||||
# created until the user confirms via the email link.
|
||||
if current_user || api_only_signup?
|
||||
send_auth_headers(@user)
|
||||
render 'api/v1/accounts/create', format: :json, locals: { resource: @user }
|
||||
else
|
||||
render json: { email: @user.email }
|
||||
end
|
||||
send_auth_headers(@user)
|
||||
render 'api/v1/accounts/create', format: :json, locals: { resource: @user }
|
||||
else
|
||||
render_error_response(CustomExceptions::Account::SignupFailed.new({}))
|
||||
end
|
||||
@@ -70,16 +59,6 @@ class Api::V1::AccountsController < Api::BaseController
|
||||
|
||||
private
|
||||
|
||||
def enqueue_branding_enrichment
|
||||
return if account_params[:email].blank?
|
||||
|
||||
Account::BrandingEnrichmentJob.perform_later(@account.id, account_params[:email])
|
||||
Redis::Alfred.set(format(Redis::Alfred::ACCOUNT_ONBOARDING_ENRICHMENT, account_id: @account.id), '1', ex: 30)
|
||||
rescue StandardError => e
|
||||
# Enrichment is optional — never let queue/Redis failures abort signup
|
||||
ChatwootExceptionTracker.new(e).capture_exception
|
||||
end
|
||||
|
||||
def ensure_account_name
|
||||
# ensure that account_name and user_full_name is present
|
||||
# this is becuase the account builder and the models validations are not triggered
|
||||
@@ -124,15 +103,6 @@ class Api::V1::AccountsController < Api::BaseController
|
||||
raise ActionController::RoutingError, 'Not Found' unless GlobalConfigService.account_signup_enabled?
|
||||
end
|
||||
|
||||
def api_only_signup?
|
||||
# CW_API_ONLY_SERVER is the canonical flag for API-only deployments.
|
||||
# ENABLE_ACCOUNT_SIGNUP='api_only' is a legacy sentinel for the same purpose.
|
||||
# Read ENABLE_ACCOUNT_SIGNUP raw from InstallationConfig because GlobalConfig.get
|
||||
# typecasts it to boolean, coercing 'api_only' to true.
|
||||
ActiveModel::Type::Boolean.new.cast(ENV.fetch('CW_API_ONLY_SERVER', false)) ||
|
||||
InstallationConfig.find_by(name: 'ENABLE_ACCOUNT_SIGNUP')&.value.to_s == 'api_only'
|
||||
end
|
||||
|
||||
def validate_captcha
|
||||
raise ActionController::InvalidAuthenticityToken, 'Invalid Captcha' unless ChatwootCaptcha.new(params[:h_captcha_client_response]).valid?
|
||||
end
|
||||
|
||||
@@ -43,15 +43,7 @@ class Api::V1::Widget::MessagesController < Api::V1::Widget::BaseController
|
||||
end
|
||||
|
||||
def set_conversation
|
||||
return unless conversation.nil?
|
||||
|
||||
@conversation = create_conversation
|
||||
apply_labels if permitted_params[:labels].present?
|
||||
end
|
||||
|
||||
def apply_labels
|
||||
valid_labels = inbox.account.labels.where(title: permitted_params[:labels]).pluck(:title)
|
||||
@conversation.update_labels(valid_labels) if valid_labels.present?
|
||||
@conversation = create_conversation if conversation.nil?
|
||||
end
|
||||
|
||||
def message_finder_params
|
||||
@@ -72,14 +64,7 @@ class Api::V1::Widget::MessagesController < Api::V1::Widget::BaseController
|
||||
|
||||
def permitted_params
|
||||
# timestamp parameter is used in create conversation method
|
||||
# custom_attributes and labels are applied when a new conversation is created alongside the first message
|
||||
params.permit(
|
||||
:id, :before, :after, :website_token,
|
||||
contact: [:name, :email],
|
||||
message: [:content, :referer_url, :timestamp, :echo_id, :reply_to],
|
||||
custom_attributes: {},
|
||||
labels: []
|
||||
)
|
||||
params.permit(:id, :before, :after, :website_token, contact: [:name, :email], message: [:content, :referer_url, :timestamp, :echo_id, :reply_to])
|
||||
end
|
||||
|
||||
def set_message
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
# Unauthenticated endpoint for resending confirmation emails during signup.
|
||||
# This is a standalone controller (not on DeviseOverrides::ConfirmationsController)
|
||||
# because OmniAuth middleware intercepts all POST /auth/* routes as provider
|
||||
# callbacks, and Devise controller filters cause 307 redirects for custom actions.
|
||||
# Inherits from ActionController::API to avoid both issues entirely.
|
||||
# Rate-limited by Rack::Attack (IP + email) and gated by hCaptcha.
|
||||
class Auth::ResendConfirmationsController < ActionController::API
|
||||
def create
|
||||
return head(:ok) unless ChatwootCaptcha.new(params[:h_captcha_client_response]).valid?
|
||||
|
||||
email = params[:email]
|
||||
return head(:ok) unless email.is_a?(String)
|
||||
|
||||
user = User.from_email(email.strip.downcase)
|
||||
user&.send_confirmation_instructions unless user&.confirmed?
|
||||
head :ok
|
||||
end
|
||||
end
|
||||
@@ -10,12 +10,7 @@ class DeviseOverrides::OmniauthCallbacksController < DeviseTokenAuth::OmniauthCa
|
||||
private
|
||||
|
||||
def sign_in_user
|
||||
# Capture before skip_confirmation! sets confirmed_at, which would
|
||||
# make oauth_user_needs_password_reset? return false and skip the
|
||||
# password reset for persisted unconfirmed users.
|
||||
needs_password_reset = oauth_user_needs_password_reset?
|
||||
@resource.skip_confirmation! if confirmable_enabled?
|
||||
set_random_password_if_oauth_user if needs_password_reset
|
||||
|
||||
# once the resource is found and verified
|
||||
# we can just send them to the login page again with the SSO params
|
||||
@@ -25,10 +20,7 @@ class DeviseOverrides::OmniauthCallbacksController < DeviseTokenAuth::OmniauthCa
|
||||
end
|
||||
|
||||
def sign_in_user_on_mobile
|
||||
# See comment in sign_in_user for why this is captured before skip_confirmation!
|
||||
needs_password_reset = oauth_user_needs_password_reset?
|
||||
@resource.skip_confirmation! if confirmable_enabled?
|
||||
set_random_password_if_oauth_user if needs_password_reset
|
||||
|
||||
# once the resource is found and verified
|
||||
# we can just send them to the login page again with the SSO params
|
||||
@@ -45,7 +37,6 @@ class DeviseOverrides::OmniauthCallbacksController < DeviseTokenAuth::OmniauthCa
|
||||
return redirect_to login_page_url(error: 'business-account-only') unless validate_signup_email_is_business_domain?
|
||||
|
||||
create_account_for_user
|
||||
set_random_password_if_oauth_user
|
||||
token = @resource.send(:set_reset_password_token)
|
||||
frontend_url = ENV.fetch('FRONTEND_URL', nil)
|
||||
redirect_to "#{frontend_url}/app/auth/password/edit?config=default&reset_password_token=#{token}"
|
||||
@@ -90,15 +81,6 @@ class DeviseOverrides::OmniauthCallbacksController < DeviseTokenAuth::OmniauthCa
|
||||
Avatar::AvatarFromUrlJob.perform_later(@resource, auth_hash['info']['image'])
|
||||
end
|
||||
|
||||
def oauth_user_needs_password_reset?
|
||||
@resource.present? && (@resource.new_record? || !@resource.confirmed?)
|
||||
end
|
||||
|
||||
def set_random_password_if_oauth_user
|
||||
# Password must satisfy secure_password requirements (uppercase, lowercase, number, special char)
|
||||
@resource.update(password: "#{SecureRandom.hex(16)}aA1!") if @resource.persisted?
|
||||
end
|
||||
|
||||
def default_devise_mapping
|
||||
'user'
|
||||
end
|
||||
|
||||
@@ -1,101 +0,0 @@
|
||||
class Platform::Api::V1::EmailChannelMigrationsController < PlatformController
|
||||
before_action :set_account
|
||||
before_action :validate_account_permissible
|
||||
before_action :validate_feature_flag
|
||||
before_action :validate_params
|
||||
|
||||
def create
|
||||
results = migrate_email_channels
|
||||
render json: { results: results }, status: :ok
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_account
|
||||
@account = Account.find(params[:account_id])
|
||||
end
|
||||
|
||||
def validate_account_permissible
|
||||
return if @platform_app.platform_app_permissibles.find_by(permissible: @account)
|
||||
|
||||
render json: { error: 'Non permissible resource' }, status: :unauthorized
|
||||
end
|
||||
|
||||
def validate_feature_flag
|
||||
return if ActiveModel::Type::Boolean.new.cast(ENV.fetch('EMAIL_CHANNEL_MIGRATION', false))
|
||||
|
||||
render json: { error: 'Email channel migration is not enabled' }, status: :forbidden
|
||||
end
|
||||
|
||||
def validate_params
|
||||
return render json: { error: 'Missing migrations parameter' }, status: :unprocessable_entity if migration_params.blank?
|
||||
|
||||
return unless migration_params.size > MAX_MIGRATIONS
|
||||
|
||||
return render json: { error: "Too many migrations (max #{MAX_MIGRATIONS})" },
|
||||
status: :unprocessable_entity
|
||||
end
|
||||
|
||||
def migrate_email_channels
|
||||
migration_params.map { |entry| migrate_single(entry) }
|
||||
end
|
||||
|
||||
MAX_MIGRATIONS = 25
|
||||
SUPPORTED_PROVIDERS = %w[google microsoft].freeze
|
||||
|
||||
def migrate_single(entry)
|
||||
validate_provider!(entry[:provider])
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
channel = create_channel(entry)
|
||||
inbox = create_inbox(channel, entry)
|
||||
|
||||
{ email: entry[:email], inbox_id: inbox.id, channel_id: channel.id, status: 'success' }
|
||||
end
|
||||
rescue StandardError => e
|
||||
{ email: entry[:email], status: 'error', message: e.message }
|
||||
end
|
||||
|
||||
def create_channel(entry)
|
||||
Channel::Email.create!(
|
||||
account_id: @account.id,
|
||||
email: entry[:email],
|
||||
provider: entry[:provider],
|
||||
provider_config: entry[:provider_config]&.to_h,
|
||||
imap_enabled: entry.fetch(:imap_enabled, true),
|
||||
imap_address: entry[:imap_address] || default_imap_address(entry[:provider]),
|
||||
imap_port: entry[:imap_port] || 993,
|
||||
imap_login: entry[:imap_login] || entry[:email],
|
||||
imap_enable_ssl: entry.fetch(:imap_enable_ssl, true)
|
||||
)
|
||||
end
|
||||
|
||||
def create_inbox(channel, entry)
|
||||
@account.inboxes.create!(
|
||||
name: entry[:inbox_name] || "Migrated #{entry[:provider]&.capitalize}: #{entry[:email]}",
|
||||
channel: channel
|
||||
)
|
||||
end
|
||||
|
||||
def validate_provider!(provider)
|
||||
return if SUPPORTED_PROVIDERS.include?(provider)
|
||||
|
||||
raise ArgumentError, "Unsupported provider '#{provider}'. Must be one of: #{SUPPORTED_PROVIDERS.join(', ')}"
|
||||
end
|
||||
|
||||
def default_imap_address(provider)
|
||||
case provider
|
||||
when 'google' then 'imap.gmail.com'
|
||||
when 'microsoft' then 'outlook.office365.com'
|
||||
else ''
|
||||
end
|
||||
end
|
||||
|
||||
def migration_params
|
||||
params.permit(migrations: [
|
||||
:email, :provider, :inbox_name,
|
||||
:imap_enabled, :imap_address, :imap_port, :imap_login, :imap_enable_ssl,
|
||||
{ provider_config: {} }
|
||||
])[:migrations]
|
||||
end
|
||||
end
|
||||
@@ -1,7 +1,6 @@
|
||||
class Public::Api::V1::Portals::ArticlesController < Public::Api::V1::Portals::BaseController
|
||||
before_action :ensure_custom_domain_request, only: [:show, :index]
|
||||
before_action :portal
|
||||
before_action :ensure_portal_feature_enabled
|
||||
before_action :set_category, except: [:index, :show, :tracking_pixel]
|
||||
before_action :set_article, only: [:show]
|
||||
layout 'portal'
|
||||
@@ -62,7 +61,7 @@ class Public::Api::V1::Portals::ArticlesController < Public::Api::V1::Portals::B
|
||||
|
||||
def set_article
|
||||
@article = @portal.articles.find_by(slug: permitted_params[:article_slug])
|
||||
@parsed_content = render_article_content(@article.content.to_s)
|
||||
@parsed_content = render_article_content(@article.content)
|
||||
end
|
||||
|
||||
def set_category
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
class Public::Api::V1::Portals::CategoriesController < Public::Api::V1::Portals::BaseController
|
||||
before_action :ensure_custom_domain_request, only: [:show, :index]
|
||||
before_action :portal
|
||||
before_action :ensure_portal_feature_enabled
|
||||
before_action :set_category, only: [:show]
|
||||
layout 'portal'
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
class Public::Api::V1::PortalsController < Public::Api::V1::Portals::BaseController
|
||||
before_action :ensure_custom_domain_request, only: [:show]
|
||||
before_action :redirect_to_portal_with_locale, only: [:show]
|
||||
before_action :portal
|
||||
before_action :ensure_portal_feature_enabled
|
||||
before_action :redirect_to_portal_with_locale, only: [:show]
|
||||
layout 'portal'
|
||||
|
||||
def show
|
||||
@@ -25,7 +24,6 @@ class Public::Api::V1::PortalsController < Public::Api::V1::Portals::BaseControl
|
||||
def redirect_to_portal_with_locale
|
||||
return if params[:locale].present?
|
||||
|
||||
portal
|
||||
redirect_to "/hc/#{@portal.slug}/#{@portal.default_locale}"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -18,11 +18,4 @@ class PublicController < ActionController::Base
|
||||
Please send us an email at support@chatwoot.com with the custom domain name and account API key"
|
||||
}, status: :unauthorized and return
|
||||
end
|
||||
|
||||
def ensure_portal_feature_enabled
|
||||
return unless ChatwootApp.chatwoot_cloud?
|
||||
return if @portal.account.feature_enabled?('help_center')
|
||||
|
||||
render 'public/api/v1/portals/not_active', status: :payment_required
|
||||
end
|
||||
end
|
||||
|
||||
@@ -98,9 +98,7 @@ export default {
|
||||
mql.onchange = e => setColorTheme(e.matches);
|
||||
},
|
||||
setLocale(locale) {
|
||||
if (locale) {
|
||||
this.$root.$i18n.locale = locale;
|
||||
}
|
||||
this.$root.$i18n.locale = locale;
|
||||
},
|
||||
async initializeAccount() {
|
||||
await this.$store.dispatch('accounts/get');
|
||||
|
||||
@@ -25,10 +25,6 @@ class AgentBotsAPI extends ApiClient {
|
||||
resetAccessToken(botId) {
|
||||
return axios.post(`${this.url}/${botId}/reset_access_token`);
|
||||
}
|
||||
|
||||
resetSecret(botId) {
|
||||
return axios.post(`${this.url}/${botId}/reset_secret`);
|
||||
}
|
||||
}
|
||||
|
||||
export default new AgentBotsAPI();
|
||||
|
||||
@@ -31,12 +31,6 @@ class CaptainCustomTools extends ApiClient {
|
||||
delete(id) {
|
||||
return axios.delete(`${this.url}/${id}`);
|
||||
}
|
||||
|
||||
test(data = {}) {
|
||||
return axios.post(`${this.url}/test`, {
|
||||
custom_tool: data,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default new CaptainCustomTools();
|
||||
|
||||
@@ -48,10 +48,6 @@ class Inboxes extends CacheEnabledApiClient {
|
||||
template,
|
||||
});
|
||||
}
|
||||
|
||||
resetSecret(inboxId) {
|
||||
return axios.post(`${this.url}/${inboxId}/reset_secret`);
|
||||
}
|
||||
}
|
||||
|
||||
export default new Inboxes();
|
||||
|
||||
@@ -106,10 +106,6 @@ select {
|
||||
&[disabled] {
|
||||
@apply field-disabled;
|
||||
}
|
||||
|
||||
option:not(:disabled) {
|
||||
@apply bg-n-solid-2 text-n-slate-12;
|
||||
}
|
||||
}
|
||||
|
||||
// Textarea
|
||||
|
||||
+3
-3
@@ -20,11 +20,11 @@ const excludedLabels = defineModel('excludedLabels', {
|
||||
|
||||
const excludeOlderThanMinutes = defineModel('excludeOlderThanMinutes', {
|
||||
type: Number,
|
||||
default: null,
|
||||
default: 10,
|
||||
});
|
||||
|
||||
// Duration limits: 1 minute to 999 days (in minutes)
|
||||
const MIN_DURATION_MINUTES = 1;
|
||||
// Duration limits: 10 minutes to 999 days (in minutes)
|
||||
const MIN_DURATION_MINUTES = 10;
|
||||
const MAX_DURATION_MINUTES = 1438560; // 999 days * 24 hours * 60 minutes
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
+1
-2
@@ -27,7 +27,7 @@ const { t } = useI18n();
|
||||
|
||||
const BASE_KEY = 'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY';
|
||||
const DEFAULT_CONVERSATION_LIMIT = 10;
|
||||
const MIN_CONVERSATION_LIMIT = 0;
|
||||
const MIN_CONVERSATION_LIMIT = 1;
|
||||
const MAX_CONVERSATION_LIMIT = 100000;
|
||||
|
||||
const selectedInboxIds = computed(
|
||||
@@ -42,7 +42,6 @@ const availableInboxes = computed(() =>
|
||||
|
||||
const isLimitValid = limit => {
|
||||
return (
|
||||
Number.isInteger(limit.conversationLimit) &&
|
||||
limit.conversationLimit >= MIN_CONVERSATION_LIMIT &&
|
||||
limit.conversationLimit <= MAX_CONVERSATION_LIMIT
|
||||
);
|
||||
|
||||
+195
-51
@@ -1,63 +1,207 @@
|
||||
<script setup>
|
||||
import { computed } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { CONVERSATION_PRIORITY } from 'shared/constants/messages';
|
||||
|
||||
import Icon from 'dashboard/components-next/icon/Icon.vue';
|
||||
|
||||
const props = defineProps({
|
||||
defineProps({
|
||||
priority: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
showEmpty: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
const { t } = useI18n();
|
||||
|
||||
const icons = {
|
||||
[CONVERSATION_PRIORITY.URGENT]: 'i-woot-priority-urgent',
|
||||
[CONVERSATION_PRIORITY.HIGH]: 'i-woot-priority-high',
|
||||
[CONVERSATION_PRIORITY.MEDIUM]: 'i-woot-priority-medium',
|
||||
[CONVERSATION_PRIORITY.LOW]: 'i-woot-priority-low',
|
||||
};
|
||||
|
||||
const priorityLabels = {
|
||||
[CONVERSATION_PRIORITY.URGENT]: 'CONVERSATION.PRIORITY.OPTIONS.URGENT',
|
||||
[CONVERSATION_PRIORITY.HIGH]: 'CONVERSATION.PRIORITY.OPTIONS.HIGH',
|
||||
[CONVERSATION_PRIORITY.MEDIUM]: 'CONVERSATION.PRIORITY.OPTIONS.MEDIUM',
|
||||
[CONVERSATION_PRIORITY.LOW]: 'CONVERSATION.PRIORITY.OPTIONS.LOW',
|
||||
};
|
||||
|
||||
const iconName = computed(() => {
|
||||
if (props.priority && icons[props.priority]) {
|
||||
return icons[props.priority];
|
||||
}
|
||||
return props.showEmpty ? 'i-woot-priority-empty' : '';
|
||||
});
|
||||
|
||||
const tooltipContent = computed(() => {
|
||||
if (props.priority && priorityLabels[props.priority]) {
|
||||
return t(priorityLabels[props.priority]);
|
||||
}
|
||||
|
||||
if (props.showEmpty) {
|
||||
return t('CONVERSATION.PRIORITY.OPTIONS.NONE');
|
||||
}
|
||||
|
||||
return '';
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- eslint-disable vue/no-static-inline-styles -->
|
||||
<template>
|
||||
<Icon
|
||||
v-tooltip.top="{
|
||||
content: tooltipContent,
|
||||
delay: { show: 500, hide: 0 },
|
||||
}"
|
||||
:icon="iconName"
|
||||
class="size-4 text-n-slate-5"
|
||||
/>
|
||||
<div class="inline-flex items-center justify-center rounded-md">
|
||||
<!-- Low Priority -->
|
||||
<svg
|
||||
v-if="priority === CONVERSATION_PRIORITY.LOW"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<mask
|
||||
id="mask0_2030_12879"
|
||||
style="mask-type: alpha"
|
||||
maskUnits="userSpaceOnUse"
|
||||
x="0"
|
||||
y="0"
|
||||
width="20"
|
||||
height="20"
|
||||
>
|
||||
<rect width="20" height="20" fill="#D9D9D9" />
|
||||
</mask>
|
||||
<g mask="url(#mask0_2030_12879)">
|
||||
<rect
|
||||
x="3.33301"
|
||||
y="10"
|
||||
width="3.33333"
|
||||
height="6.66667"
|
||||
rx="1.66667"
|
||||
class="fill-n-amber-9"
|
||||
/>
|
||||
<rect
|
||||
x="8.33301"
|
||||
y="6.6665"
|
||||
width="3.33333"
|
||||
height="10"
|
||||
rx="1.66667"
|
||||
class="fill-n-slate-6"
|
||||
/>
|
||||
<rect
|
||||
x="13.333"
|
||||
y="3.3335"
|
||||
width="3.33333"
|
||||
height="13.3333"
|
||||
rx="1.66667"
|
||||
class="fill-n-slate-6"
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
<!-- Medium Priority -->
|
||||
<svg
|
||||
v-if="priority === CONVERSATION_PRIORITY.MEDIUM"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<mask
|
||||
id="mask0_2030_12879"
|
||||
style="mask-type: alpha"
|
||||
maskUnits="userSpaceOnUse"
|
||||
x="0"
|
||||
y="0"
|
||||
width="20"
|
||||
height="20"
|
||||
>
|
||||
<rect width="20" height="20" fill="#D9D9D9" />
|
||||
</mask>
|
||||
<g mask="url(#mask0_2030_12879)">
|
||||
<rect
|
||||
x="3.33301"
|
||||
y="10"
|
||||
width="3.33333"
|
||||
height="6.66667"
|
||||
rx="1.66667"
|
||||
class="fill-n-amber-9"
|
||||
/>
|
||||
<rect
|
||||
x="8.33301"
|
||||
y="6.6665"
|
||||
width="3.33333"
|
||||
height="10"
|
||||
rx="1.66667"
|
||||
class="fill-n-amber-9"
|
||||
/>
|
||||
<rect
|
||||
x="13.333"
|
||||
y="3.3335"
|
||||
width="3.33333"
|
||||
height="13.3333"
|
||||
rx="1.66667"
|
||||
class="fill-n-slate-6"
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
<!-- High Priority -->
|
||||
<svg
|
||||
v-if="priority === CONVERSATION_PRIORITY.HIGH"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<mask
|
||||
id="mask0_2030_12879"
|
||||
style="mask-type: alpha"
|
||||
maskUnits="userSpaceOnUse"
|
||||
x="0"
|
||||
y="0"
|
||||
width="20"
|
||||
height="20"
|
||||
>
|
||||
<rect width="20" height="20" fill="#D9D9D9" />
|
||||
</mask>
|
||||
<g mask="url(#mask0_2030_12879)">
|
||||
<rect
|
||||
x="3.33301"
|
||||
y="10"
|
||||
width="3.33333"
|
||||
height="6.66667"
|
||||
rx="1.66667"
|
||||
class="fill-n-amber-9"
|
||||
/>
|
||||
<rect
|
||||
x="8.33301"
|
||||
y="6.6665"
|
||||
width="3.33333"
|
||||
height="10"
|
||||
rx="1.66667"
|
||||
class="fill-n-amber-9"
|
||||
/>
|
||||
<rect
|
||||
x="13.333"
|
||||
y="3.3335"
|
||||
width="3.33333"
|
||||
height="13.3333"
|
||||
rx="1.66667"
|
||||
class="fill-n-amber-9"
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
<!-- Urgent Priority -->
|
||||
<svg
|
||||
v-if="priority === CONVERSATION_PRIORITY.URGENT"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<mask
|
||||
id="mask0_2030_12879"
|
||||
style="mask-type: alpha"
|
||||
maskUnits="userSpaceOnUse"
|
||||
x="0"
|
||||
y="0"
|
||||
width="20"
|
||||
height="20"
|
||||
>
|
||||
<rect width="20" height="20" fill="#D9D9D9" />
|
||||
</mask>
|
||||
<g mask="url(#mask0_2030_12879)">
|
||||
<rect
|
||||
x="3.33301"
|
||||
y="10"
|
||||
width="3.33333"
|
||||
height="6.66667"
|
||||
rx="1.66667"
|
||||
class="fill-n-ruby-9"
|
||||
/>
|
||||
<rect
|
||||
x="8.33301"
|
||||
y="6.6665"
|
||||
width="3.33333"
|
||||
height="10"
|
||||
rx="1.66667"
|
||||
class="fill-n-ruby-9"
|
||||
/>
|
||||
<rect
|
||||
x="13.333"
|
||||
y="3.3335"
|
||||
width="3.33333"
|
||||
height="13.3333"
|
||||
rx="1.66667"
|
||||
class="fill-n-ruby-9"
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
+10
-17
@@ -1,5 +1,5 @@
|
||||
<script setup>
|
||||
import { computed, ref } from 'vue';
|
||||
import { computed } from 'vue';
|
||||
import { debounce } from '@chatwoot/utils';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { ARTICLE_EDITOR_MENU_OPTIONS } from 'dashboard/constants/editor';
|
||||
@@ -32,7 +32,6 @@ const emit = defineEmits([
|
||||
'setAuthor',
|
||||
'setCategory',
|
||||
'previewArticle',
|
||||
'createArticle',
|
||||
]);
|
||||
|
||||
const { t } = useI18n();
|
||||
@@ -58,10 +57,16 @@ const quickSave = debounce(
|
||||
// Only use to save for existing articles
|
||||
const saveAndSyncDebounced = debounce(saveAndSync, 2500, false);
|
||||
|
||||
// Debounced save for new articles
|
||||
const quickSaveNewArticle = debounce(saveAndSync, 400, false);
|
||||
|
||||
const handleSave = value => {
|
||||
if (isNewArticle.value) return;
|
||||
quickSave(value);
|
||||
saveAndSyncDebounced(value);
|
||||
if (isNewArticle.value) {
|
||||
quickSaveNewArticle(value);
|
||||
} else {
|
||||
quickSave(value);
|
||||
saveAndSyncDebounced(value);
|
||||
}
|
||||
};
|
||||
|
||||
const articleTitle = computed({
|
||||
@@ -71,12 +76,9 @@ const articleTitle = computed({
|
||||
},
|
||||
});
|
||||
|
||||
const localContent = ref(props.article.content || '');
|
||||
|
||||
const articleContent = computed({
|
||||
get: () => props.article.content,
|
||||
set: content => {
|
||||
localContent.value = content;
|
||||
handleSave({ content });
|
||||
},
|
||||
});
|
||||
@@ -96,14 +98,6 @@ const setCategoryId = categoryId => {
|
||||
const previewArticle = () => {
|
||||
emit('previewArticle');
|
||||
};
|
||||
|
||||
const handleCreateArticle = event => {
|
||||
if (!isNewArticle.value) return;
|
||||
const title = event?.target?.value || '';
|
||||
if (title.trim()) {
|
||||
emit('createArticle', { title, content: localContent.value });
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -128,7 +122,6 @@ const handleCreateArticle = event => {
|
||||
custom-text-area-wrapper-class="border-0 !bg-transparent dark:!bg-transparent !py-0 !px-0"
|
||||
placeholder="Title"
|
||||
autofocus
|
||||
@blur="handleCreateArticle"
|
||||
/>
|
||||
<ArticleEditorControls
|
||||
:article="article"
|
||||
|
||||
@@ -12,7 +12,6 @@ import {
|
||||
import CardLayout from 'dashboard/components-next/CardLayout.vue';
|
||||
import DropdownMenu from 'dashboard/components-next/dropdown-menu/DropdownMenu.vue';
|
||||
import Button from 'dashboard/components-next/button/Button.vue';
|
||||
import Checkbox from 'dashboard/components-next/checkbox/Checkbox.vue';
|
||||
|
||||
const props = defineProps({
|
||||
id: {
|
||||
@@ -35,34 +34,14 @@ const props = defineProps({
|
||||
type: Number,
|
||||
required: true,
|
||||
},
|
||||
isSelected: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
selectable: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
showSelectionControl: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
showMenu: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
});
|
||||
|
||||
const emit = defineEmits(['action', 'select', 'hover']);
|
||||
const emit = defineEmits(['action']);
|
||||
const { checkPermissions } = usePolicy();
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const [showActionsDropdown, toggleDropdown] = useToggle();
|
||||
const modelValue = computed({
|
||||
get: () => props.isSelected,
|
||||
set: () => emit('select', props.id),
|
||||
});
|
||||
|
||||
const menuItems = computed(() => {
|
||||
const allOptions = [
|
||||
@@ -100,23 +79,12 @@ const handleAction = ({ action, value }) => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<CardLayout
|
||||
:selectable="selectable"
|
||||
class="relative"
|
||||
@mouseenter="emit('hover', true)"
|
||||
@mouseleave="emit('hover', false)"
|
||||
>
|
||||
<div
|
||||
v-show="showSelectionControl"
|
||||
class="absolute top-7 ltr:left-3 rtl:right-3"
|
||||
>
|
||||
<Checkbox v-model="modelValue" />
|
||||
</div>
|
||||
<CardLayout>
|
||||
<div class="flex gap-1 justify-between w-full">
|
||||
<span class="text-base text-n-slate-12 line-clamp-1">
|
||||
{{ name }}
|
||||
</span>
|
||||
<div v-if="showMenu" class="flex gap-2 items-center">
|
||||
<div class="flex gap-2 items-center">
|
||||
<div
|
||||
v-on-clickaway="() => toggleDropdown(false)"
|
||||
class="flex relative items-center group"
|
||||
|
||||
+5
-11
@@ -21,22 +21,16 @@ const emit = defineEmits(['deleteSuccess']);
|
||||
const { t } = useI18n();
|
||||
const store = useStore();
|
||||
const bulkDeleteDialogRef = ref(null);
|
||||
const i18nKey = computed(() => {
|
||||
const i18nTypeMap = {
|
||||
AssistantResponse: 'RESPONSES',
|
||||
AssistantDocument: 'DOCUMENTS',
|
||||
};
|
||||
return i18nTypeMap[props.type];
|
||||
});
|
||||
const i18nKey = computed(() => props.type.toUpperCase());
|
||||
|
||||
const handleBulkDelete = async ids => {
|
||||
if (!ids) return;
|
||||
|
||||
try {
|
||||
await store.dispatch('captainBulkActions/handleBulkDelete', {
|
||||
ids: Array.from(props.bulkIds),
|
||||
type: props.type,
|
||||
});
|
||||
await store.dispatch(
|
||||
'captainBulkActions/handleBulkDelete',
|
||||
Array.from(props.bulkIds)
|
||||
);
|
||||
|
||||
emit('deleteSuccess');
|
||||
useAlert(t(`CAPTAIN.${i18nKey.value}.BULK_DELETE.SUCCESS_MESSAGE`));
|
||||
|
||||
@@ -6,13 +6,6 @@ import { useAccount } from 'dashboard/composables/useAccount';
|
||||
|
||||
import BasePaywallModal from 'dashboard/routes/dashboard/settings/components/BasePaywallModal.vue';
|
||||
|
||||
defineProps({
|
||||
featurePrefix: {
|
||||
type: String,
|
||||
default: 'CAPTAIN',
|
||||
},
|
||||
});
|
||||
|
||||
const router = useRouter();
|
||||
const currentUser = useMapGetter('getCurrentUser');
|
||||
|
||||
@@ -38,7 +31,7 @@ const openBilling = () => {
|
||||
>
|
||||
<BasePaywallModal
|
||||
class="mx-auto"
|
||||
:feature-prefix="featurePrefix"
|
||||
feature-prefix="CAPTAIN"
|
||||
:i18n-key="i18nKey"
|
||||
:is-super-admin="isSuperAdmin"
|
||||
:is-on-chatwoot-cloud="isOnChatwootCloud"
|
||||
|
||||
+6
-3
@@ -101,9 +101,12 @@ const authTypeLabel = computed(() => {
|
||||
</Policy>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-between w-full gap-4 min-w-0">
|
||||
<div class="flex items-center gap-3 flex-1 min-w-0">
|
||||
<span v-if="description" class="text-sm truncate text-n-slate-11">
|
||||
<div class="flex items-center justify-between w-full gap-4">
|
||||
<div class="flex items-center gap-3 flex-1">
|
||||
<span
|
||||
v-if="description"
|
||||
class="text-sm truncate text-n-slate-11 flex-1"
|
||||
>
|
||||
{{ description }}
|
||||
</span>
|
||||
<span
|
||||
|
||||
+6
-80
@@ -1,10 +1,9 @@
|
||||
<script setup>
|
||||
import { reactive, computed, ref, useTemplateRef, watch } from 'vue';
|
||||
import { reactive, computed, useTemplateRef, watch } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { useVuelidate } from '@vuelidate/core';
|
||||
import { required, maxLength } from '@vuelidate/validators';
|
||||
import { required } from '@vuelidate/validators';
|
||||
import { useMapGetter } from 'dashboard/composables/store';
|
||||
import CustomToolsAPI from 'dashboard/api/captain/customTools';
|
||||
|
||||
import Input from 'dashboard/components-next/input/Input.vue';
|
||||
import TextArea from 'dashboard/components-next/textarea/TextArea.vue';
|
||||
@@ -73,12 +72,8 @@ const DEFAULT_PARAM = {
|
||||
required: false,
|
||||
};
|
||||
|
||||
// OpenAI enforces a 64-char limit on function names. The backend slug is
|
||||
// "custom_" (7 chars) + parameterized title, so cap the title conservatively.
|
||||
const MAX_TOOL_NAME_LENGTH = 55;
|
||||
|
||||
const validationRules = {
|
||||
title: { required, maxLength: maxLength(MAX_TOOL_NAME_LENGTH) },
|
||||
title: { required },
|
||||
endpoint_url: { required },
|
||||
http_method: { required },
|
||||
auth_type: { required },
|
||||
@@ -108,15 +103,9 @@ const isLoading = computed(() =>
|
||||
);
|
||||
|
||||
const getErrorMessage = (field, errorKey) => {
|
||||
if (!v$.value[field].$error) return '';
|
||||
|
||||
const failedRule = v$.value[field].$errors[0]?.$validator;
|
||||
if (failedRule === 'maxLength') {
|
||||
return t(`CAPTAIN.CUSTOM_TOOLS.FORM.${errorKey}.MAX_LENGTH_ERROR`, {
|
||||
max: MAX_TOOL_NAME_LENGTH,
|
||||
});
|
||||
}
|
||||
return t(`CAPTAIN.CUSTOM_TOOLS.FORM.${errorKey}.ERROR`);
|
||||
return v$.value[field].$error
|
||||
? t(`CAPTAIN.CUSTOM_TOOLS.FORM.${errorKey}.ERROR`)
|
||||
: '';
|
||||
};
|
||||
|
||||
const formErrors = computed(() => ({
|
||||
@@ -151,30 +140,6 @@ const handleSubmit = async () => {
|
||||
|
||||
emit('submit', state);
|
||||
};
|
||||
|
||||
const isTesting = ref(false);
|
||||
const testResult = ref(null);
|
||||
const isTestDisabled = computed(
|
||||
() => state.endpoint_url.includes('{{') || !!state.request_template
|
||||
);
|
||||
|
||||
const handleTest = async () => {
|
||||
if (!state.endpoint_url) return;
|
||||
|
||||
isTesting.value = true;
|
||||
testResult.value = null;
|
||||
try {
|
||||
const { data } = await CustomToolsAPI.test(state);
|
||||
const isOk = data.status >= 200 && data.status < 300;
|
||||
testResult.value = { success: isOk, status: data.status };
|
||||
} catch (e) {
|
||||
const message =
|
||||
e.response?.data?.error || t('CAPTAIN.CUSTOM_TOOLS.TEST.ERROR');
|
||||
testResult.value = { success: false, message };
|
||||
} finally {
|
||||
isTesting.value = false;
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -283,45 +248,6 @@ const handleTest = async () => {
|
||||
class="[&_textarea]:font-mono"
|
||||
/>
|
||||
|
||||
<div class="flex flex-col gap-2">
|
||||
<Button
|
||||
type="button"
|
||||
variant="faded"
|
||||
color="slate"
|
||||
icon="i-lucide-play"
|
||||
:label="t('CAPTAIN.CUSTOM_TOOLS.TEST.BUTTON')"
|
||||
:is-loading="isTesting"
|
||||
:disabled="isTesting || !state.endpoint_url || isTestDisabled"
|
||||
@click="handleTest"
|
||||
/>
|
||||
<p v-if="isTestDisabled" class="text-xs text-n-slate-11">
|
||||
{{ t('CAPTAIN.CUSTOM_TOOLS.TEST.DISABLED_HINT') }}
|
||||
</p>
|
||||
<div
|
||||
v-if="testResult"
|
||||
class="flex items-center gap-2 px-3 py-2 text-xs rounded-lg"
|
||||
:class="
|
||||
testResult.success
|
||||
? 'bg-n-teal-2 text-n-teal-11'
|
||||
: 'bg-n-ruby-2 text-n-ruby-11'
|
||||
"
|
||||
>
|
||||
<span
|
||||
:class="
|
||||
testResult.success ? 'i-lucide-check-circle' : 'i-lucide-x-circle'
|
||||
"
|
||||
class="size-3.5 shrink-0"
|
||||
/>
|
||||
{{
|
||||
testResult.status
|
||||
? t('CAPTAIN.CUSTOM_TOOLS.TEST.SUCCESS', {
|
||||
status: testResult.status,
|
||||
})
|
||||
: testResult.message
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-3 justify-between items-center w-full">
|
||||
<Button
|
||||
type="button"
|
||||
|
||||
-12
@@ -1,11 +1,8 @@
|
||||
<script setup>
|
||||
import { useAccount } from 'dashboard/composables/useAccount';
|
||||
import EmptyStateLayout from 'dashboard/components-next/EmptyStateLayout.vue';
|
||||
import FeatureSpotlight from 'dashboard/components-next/feature-spotlight/FeatureSpotlight.vue';
|
||||
import Button from 'dashboard/components-next/button/Button.vue';
|
||||
|
||||
const emit = defineEmits(['click']);
|
||||
const { isOnChatwootCloud } = useAccount();
|
||||
|
||||
const onClick = () => {
|
||||
emit('click');
|
||||
@@ -13,15 +10,6 @@ const onClick = () => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<FeatureSpotlight
|
||||
:title="$t('CAPTAIN.CUSTOM_TOOLS.EMPTY_STATE.FEATURE_SPOTLIGHT.TITLE')"
|
||||
:note="$t('CAPTAIN.CUSTOM_TOOLS.EMPTY_STATE.FEATURE_SPOTLIGHT.NOTE')"
|
||||
fallback-thumbnail="/assets/images/dashboard/captain/assistant-light.svg"
|
||||
fallback-thumbnail-dark="/assets/images/dashboard/captain/assistant-dark.svg"
|
||||
learn-more-url="https://chwt.app/hc/captain-tools"
|
||||
class="mb-8"
|
||||
:hide-actions="!isOnChatwootCloud"
|
||||
/>
|
||||
<EmptyStateLayout
|
||||
:title="$t('CAPTAIN.CUSTOM_TOOLS.EMPTY_STATE.TITLE')"
|
||||
:subtitle="$t('CAPTAIN.CUSTOM_TOOLS.EMPTY_STATE.SUBTITLE')"
|
||||
|
||||
@@ -36,13 +36,7 @@ const props = defineProps({
|
||||
},
|
||||
});
|
||||
|
||||
const emit = defineEmits([
|
||||
'enterPress',
|
||||
'escapePress',
|
||||
'input',
|
||||
'blur',
|
||||
'focus',
|
||||
]);
|
||||
const emit = defineEmits(['enterPress', 'input', 'blur', 'focus']);
|
||||
|
||||
const modelValue = defineModel({
|
||||
type: [String, Number],
|
||||
@@ -55,10 +49,6 @@ const onEnterPress = () => {
|
||||
emit('enterPress');
|
||||
};
|
||||
|
||||
const onEscapePress = () => {
|
||||
emit('escapePress');
|
||||
};
|
||||
|
||||
const handleInput = event => {
|
||||
emit('input', event.target.value);
|
||||
modelValue.value = event.target.value;
|
||||
@@ -112,7 +102,6 @@ defineExpose({
|
||||
@focus="handleFocus"
|
||||
@blur="handleBlur"
|
||||
@keydown.enter.prevent="onEnterPress"
|
||||
@keydown.escape.prevent="onEscapePress"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -32,7 +32,6 @@ const convertToMinutes = newValue => {
|
||||
|
||||
const transformedValue = computed({
|
||||
get() {
|
||||
if (duration.value == null) return null;
|
||||
if (unit.value === DURATION_UNITS.MINUTES) return duration.value;
|
||||
if (unit.value === DURATION_UNITS.HOURS)
|
||||
return Math.floor(duration.value / 60);
|
||||
@@ -42,10 +41,6 @@ const transformedValue = computed({
|
||||
return 0;
|
||||
},
|
||||
set(newValue) {
|
||||
if (newValue == null || newValue === '') {
|
||||
duration.value = null;
|
||||
return;
|
||||
}
|
||||
let minuteValue = convertToMinutes(newValue);
|
||||
|
||||
duration.value = Math.min(Math.max(minuteValue, props.min), props.max);
|
||||
@@ -58,7 +53,6 @@ const transformedValue = computed({
|
||||
// this might create some confusion, especially when saving
|
||||
// this watcher fixes it by rounding the duration basically, to the nearest unit value
|
||||
watch(unit, () => {
|
||||
if (duration.value == null) return;
|
||||
let adjustedValue = convertToMinutes(transformedValue.value);
|
||||
duration.value = Math.min(Math.max(adjustedValue, props.min), props.max);
|
||||
});
|
||||
|
||||
@@ -313,12 +313,7 @@ const plugins = computed(() => {
|
||||
const sendWithSignature = computed(() => {
|
||||
// this is considered the source of truth, we watch this property
|
||||
// on change, we toggle the signature in the editor
|
||||
if (
|
||||
props.allowSignature &&
|
||||
!props.isPrivate &&
|
||||
props.channelType &&
|
||||
!props.disabled
|
||||
) {
|
||||
if (props.allowSignature && !props.isPrivate && props.channelType) {
|
||||
return fetchSignatureFlagFromUISettings(props.channelType);
|
||||
}
|
||||
|
||||
@@ -441,7 +436,6 @@ function reloadState(content = props.modelValue) {
|
||||
}
|
||||
|
||||
function addSignature() {
|
||||
if (props.disabled) return;
|
||||
let content = props.modelValue;
|
||||
// see if the content is empty, if it is before appending the signature
|
||||
// we need to add a paragraph node and move the cursor at the start of the editor
|
||||
@@ -460,7 +454,6 @@ function addSignature() {
|
||||
}
|
||||
|
||||
function removeSignature() {
|
||||
if (props.disabled) return;
|
||||
if (!props.signature) return;
|
||||
let content = props.modelValue;
|
||||
content = removeSignatureHelper(
|
||||
@@ -813,7 +806,7 @@ watch(
|
||||
|
||||
watch(sendWithSignature, newValue => {
|
||||
// see if the allowSignature flag is true
|
||||
if (props.allowSignature && !props.disabled) {
|
||||
if (props.allowSignature) {
|
||||
toggleSignatureInEditor(newValue);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -79,7 +79,7 @@ export default {
|
||||
|
||||
created() {
|
||||
state = createState(
|
||||
this.modelValue || '',
|
||||
this.modelValue,
|
||||
this.placeholder,
|
||||
this.plugins,
|
||||
{ onImageUpload: this.openFileBrowser },
|
||||
@@ -170,7 +170,7 @@ export default {
|
||||
},
|
||||
reloadState() {
|
||||
state = createState(
|
||||
this.modelValue || '',
|
||||
this.modelValue,
|
||||
this.placeholder,
|
||||
this.plugins,
|
||||
{ onImageUpload: this.openFileBrowser },
|
||||
|
||||
@@ -128,6 +128,7 @@ export default {
|
||||
},
|
||||
},
|
||||
emits: [
|
||||
'replaceText',
|
||||
'toggleInsertArticle',
|
||||
'selectWhatsappTemplate',
|
||||
'selectContentTemplate',
|
||||
@@ -276,6 +277,9 @@ export default {
|
||||
toggleMessageSignature() {
|
||||
this.setSignatureFlagForInbox(this.channelType, !this.sendWithSignature);
|
||||
},
|
||||
replaceText(text) {
|
||||
this.$emit('replaceText', text);
|
||||
},
|
||||
toggleInsertArticle() {
|
||||
this.$emit('toggleInsertArticle');
|
||||
},
|
||||
|
||||
@@ -10,7 +10,7 @@ import InboxName from '../InboxName.vue';
|
||||
import ConversationContextMenu from './contextMenu/Index.vue';
|
||||
import TimeAgo from 'dashboard/components/ui/TimeAgo.vue';
|
||||
import CardLabels from './conversationCardComponents/CardLabels.vue';
|
||||
import CardPriorityIcon from 'dashboard/components-next/Conversation/ConversationCard/CardPriorityIcon.vue';
|
||||
import PriorityMark from './PriorityMark.vue';
|
||||
import SLACardLabel from './components/SLACardLabel.vue';
|
||||
import ContextMenu from 'dashboard/components/ui/ContextMenu.vue';
|
||||
import VoiceCallStatus from './VoiceCallStatus.vue';
|
||||
@@ -305,7 +305,7 @@ const deleteConversation = () => {
|
||||
>
|
||||
<InboxName v-if="showInboxName" :inbox="inbox" class="flex-1 min-w-0" />
|
||||
<div
|
||||
class="flex items-baseline gap-2 flex-shrink-0"
|
||||
class="flex items-center gap-2 flex-shrink-0"
|
||||
:class="{
|
||||
'flex-1 justify-between': !showInboxName,
|
||||
}"
|
||||
@@ -317,10 +317,7 @@ const deleteConversation = () => {
|
||||
<fluent-icon icon="person" size="12" class="text-n-slate-11" />
|
||||
{{ assignee.name }}
|
||||
</span>
|
||||
<CardPriorityIcon
|
||||
:priority="chat.priority"
|
||||
class="flex-shrink-0 !size-3.5"
|
||||
/>
|
||||
<PriorityMark :priority="chat.priority" class="flex-shrink-0" />
|
||||
</div>
|
||||
</div>
|
||||
<h4
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
<script>
|
||||
import { CONVERSATION_PRIORITY } from '../../../../shared/constants/messages';
|
||||
|
||||
export default {
|
||||
name: 'PriorityMark',
|
||||
props: {
|
||||
priority: {
|
||||
type: String,
|
||||
default: '',
|
||||
validate: value =>
|
||||
[...Object.values(CONVERSATION_PRIORITY), ''].includes(value),
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
CONVERSATION_PRIORITY,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
tooltipText() {
|
||||
return this.$t(
|
||||
`CONVERSATION.PRIORITY.OPTIONS.${this.priority.toUpperCase()}`
|
||||
);
|
||||
},
|
||||
isUrgent() {
|
||||
return this.priority === CONVERSATION_PRIORITY.URGENT;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<!-- eslint-disable-next-line vue/no-root-v-if -->
|
||||
<template>
|
||||
<span
|
||||
v-if="priority"
|
||||
v-tooltip="{
|
||||
content: tooltipText,
|
||||
delay: { show: 1500, hide: 0 },
|
||||
}"
|
||||
class="shrink-0 rounded-sm inline-flex items-center justify-center w-3.5 h-3.5"
|
||||
:class="{
|
||||
'bg-n-ruby-4 text-n-ruby-10': isUrgent,
|
||||
'bg-n-slate-4 text-n-slate-11': !isUrgent,
|
||||
}"
|
||||
>
|
||||
<fluent-icon
|
||||
:icon="`priority-${priority.toLowerCase()}`"
|
||||
:size="isUrgent ? 12 : 14"
|
||||
class="flex-shrink-0"
|
||||
view-box="0 0 14 14"
|
||||
/>
|
||||
</span>
|
||||
</template>
|
||||
@@ -27,6 +27,7 @@ import { CMD_AI_ASSIST } from 'dashboard/helper/commandbar/events';
|
||||
import {
|
||||
getMessageVariables,
|
||||
getUndefinedVariablesInMessage,
|
||||
replaceVariablesInMessage,
|
||||
} from '@chatwoot/utils';
|
||||
import WhatsappTemplates from './WhatsappTemplates/Modal.vue';
|
||||
import ContentTemplates from './ContentTemplates/ContentTemplatesModal.vue';
|
||||
@@ -252,9 +253,6 @@ export default {
|
||||
if (this.isAnInstagramChannel) {
|
||||
return MESSAGE_MAX_LENGTH.INSTAGRAM;
|
||||
}
|
||||
if (this.isATelegramChannel) {
|
||||
return MESSAGE_MAX_LENGTH.TELEGRAM;
|
||||
}
|
||||
if (this.isATiktokChannel) {
|
||||
return MESSAGE_MAX_LENGTH.TIKTOK;
|
||||
}
|
||||
@@ -547,10 +545,7 @@ export default {
|
||||
},
|
||||
setCopilotAcceptedMessage(message, replyType = this.replyType) {
|
||||
const key = this.getDraftKey(this.conversationIdByRoute, replyType);
|
||||
this.copilotAcceptedMessages[key] = trimContent(
|
||||
message || '',
|
||||
this.maxLength
|
||||
);
|
||||
this.copilotAcceptedMessages[key] = trimContent(message || '');
|
||||
},
|
||||
clearCopilotAcceptedMessage(replyType = this.replyType) {
|
||||
const key = this.getDraftKey(this.conversationIdByRoute, replyType);
|
||||
@@ -608,7 +603,7 @@ export default {
|
||||
saveDraft(conversationId, replyType) {
|
||||
if (this.message || this.message === '') {
|
||||
const key = this.getDraftKey(conversationId, replyType);
|
||||
const draftToSave = trimContent(this.message || '', this.maxLength);
|
||||
const draftToSave = trimContent(this.message || '');
|
||||
|
||||
this.$store.dispatch('draftMessages/set', {
|
||||
key,
|
||||
@@ -635,17 +630,10 @@ export default {
|
||||
return message;
|
||||
}
|
||||
|
||||
// Even when editor is disabled (e.g. WhatsApp/API can't reply), we must
|
||||
// still normalize stale signatures out of drafts when signature is off.
|
||||
if (this.isEditorDisabled && this.sendWithSignature) {
|
||||
return message;
|
||||
}
|
||||
|
||||
const effectiveChannelType = getEffectiveChannelType(
|
||||
this.channelType,
|
||||
this.inbox?.medium || ''
|
||||
);
|
||||
|
||||
return this.sendWithSignature
|
||||
? appendSignature(message, this.messageSignature, effectiveChannelType)
|
||||
: removeSignature(message, this.messageSignature, effectiveChannelType);
|
||||
@@ -917,6 +905,32 @@ export default {
|
||||
});
|
||||
this.hideContentTemplatesModal();
|
||||
},
|
||||
replaceText(message) {
|
||||
if (this.sendWithSignature && !this.private) {
|
||||
// if signature is enabled, append it to the message
|
||||
// appendSignature ensures that the signature is not duplicated
|
||||
// so we don't need to check if the signature is already present
|
||||
const effectiveChannelType = getEffectiveChannelType(
|
||||
this.channelType,
|
||||
this.inbox?.medium || ''
|
||||
);
|
||||
message = appendSignature(
|
||||
message,
|
||||
this.messageSignature,
|
||||
effectiveChannelType
|
||||
);
|
||||
}
|
||||
|
||||
const updatedMessage = replaceVariablesInMessage({
|
||||
message,
|
||||
variables: this.messageVariables,
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
useTrack(CONVERSATION_EVENTS.INSERTED_A_CANNED_RESPONSE);
|
||||
this.message = updatedMessage;
|
||||
}, 100);
|
||||
},
|
||||
setReplyMode(mode = REPLY_EDITOR_MODES.REPLY) {
|
||||
// Clear attachments when switching between private note and reply modes
|
||||
// This is to prevent from breaking the upload rules
|
||||
@@ -1415,6 +1429,7 @@ export default {
|
||||
:new-conversation-modal-active="newConversationModalActive"
|
||||
@select-whatsapp-template="openWhatsappTemplateModal"
|
||||
@select-content-template="openContentTemplateModal"
|
||||
@replace-text="replaceText"
|
||||
@toggle-insert-article="toggleInsertArticle"
|
||||
@toggle-quoted-reply="toggleQuotedReply"
|
||||
/>
|
||||
|
||||
@@ -8,7 +8,6 @@ import {
|
||||
agents,
|
||||
teams,
|
||||
labels,
|
||||
booleanFilterOptions,
|
||||
statusFilterOptions,
|
||||
messageTypeOptions,
|
||||
priorityOptions,
|
||||
@@ -74,8 +73,6 @@ describe('useAutomation', () => {
|
||||
return countries;
|
||||
case 'message_type':
|
||||
return messageTypeOptions;
|
||||
case 'private_note':
|
||||
return booleanFilterOptions;
|
||||
case 'priority':
|
||||
return priorityOptions;
|
||||
default:
|
||||
@@ -229,9 +226,6 @@ describe('useAutomation', () => {
|
||||
expect(getConditionDropdownValues('message_type')).toEqual(
|
||||
messageTypeOptions
|
||||
);
|
||||
expect(getConditionDropdownValues('private_note')).toEqual(
|
||||
booleanFilterOptions
|
||||
);
|
||||
expect(getConditionDropdownValues('priority')).toEqual(priorityOptions);
|
||||
});
|
||||
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
import { useEditableAutomation } from '../useEditableAutomation';
|
||||
import useAutomationValues from '../useAutomationValues';
|
||||
|
||||
vi.mock('../useAutomationValues');
|
||||
|
||||
describe('useEditableAutomation', () => {
|
||||
beforeEach(() => {
|
||||
useAutomationValues.mockReturnValue({
|
||||
getConditionDropdownValues: vi.fn(attributeKey => {
|
||||
if (attributeKey === 'private_note') {
|
||||
return [
|
||||
{ id: true, name: 'True' },
|
||||
{ id: false, name: 'False' },
|
||||
];
|
||||
}
|
||||
|
||||
return [];
|
||||
}),
|
||||
getActionDropdownValues: vi.fn(),
|
||||
});
|
||||
});
|
||||
|
||||
it('rehydrates boolean conditions as a single selected option', () => {
|
||||
const automation = {
|
||||
event_name: 'message_created',
|
||||
conditions: [
|
||||
{
|
||||
attribute_key: 'private_note',
|
||||
filter_operator: 'equal_to',
|
||||
values: [false],
|
||||
query_operator: null,
|
||||
},
|
||||
],
|
||||
actions: [],
|
||||
};
|
||||
const automationTypes = {
|
||||
message_created: {
|
||||
conditions: [{ key: 'private_note', inputType: 'search_select' }],
|
||||
},
|
||||
};
|
||||
|
||||
const { formatAutomation } = useEditableAutomation();
|
||||
const result = formatAutomation(automation, [], automationTypes, []);
|
||||
|
||||
expect(result.conditions).toEqual([
|
||||
{
|
||||
attribute_key: 'private_note',
|
||||
filter_operator: 'equal_to',
|
||||
values: { id: false, name: 'False' },
|
||||
query_operator: 'and',
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
@@ -46,26 +46,11 @@ export function useEditableAutomation() {
|
||||
if (inputType === 'comma_separated_plain_text') {
|
||||
return { ...condition, values: condition.values.join(',') };
|
||||
}
|
||||
const dropdownValues = getConditionDropdownValues(
|
||||
condition.attribute_key
|
||||
);
|
||||
const hasBooleanOptions =
|
||||
inputType === 'search_select' &&
|
||||
dropdownValues.length &&
|
||||
dropdownValues.every(item => typeof item.id === 'boolean');
|
||||
|
||||
if (hasBooleanOptions) {
|
||||
return {
|
||||
...condition,
|
||||
query_operator: condition.query_operator || 'and',
|
||||
values: dropdownValues.find(item => item.id === condition.values[0]),
|
||||
};
|
||||
}
|
||||
return {
|
||||
...condition,
|
||||
query_operator: condition.query_operator || 'and',
|
||||
values: [...dropdownValues].filter(item =>
|
||||
[...condition.values].includes(item.id)
|
||||
values: [...getConditionDropdownValues(condition.attribute_key)].filter(
|
||||
item => [...condition.values].includes(item.id)
|
||||
),
|
||||
};
|
||||
});
|
||||
|
||||
@@ -37,7 +37,6 @@ export const FEATURE_FLAGS = {
|
||||
CHANNEL_INSTAGRAM: 'channel_instagram',
|
||||
CHANNEL_TIKTOK: 'channel_tiktok',
|
||||
CONTACT_CHATWOOT_SUPPORT_TEAM: 'contact_chatwoot_support_team',
|
||||
CAPTAIN_CUSTOM_TOOLS: 'custom_tools',
|
||||
CAPTAIN_V2: 'captain_integration_v2',
|
||||
CAPTAIN_TASKS: 'captain_tasks',
|
||||
SAML: 'saml',
|
||||
@@ -50,7 +49,6 @@ export const FEATURE_FLAGS = {
|
||||
export const PREMIUM_FEATURES = [
|
||||
FEATURE_FLAGS.SLA,
|
||||
FEATURE_FLAGS.CAPTAIN,
|
||||
FEATURE_FLAGS.CAPTAIN_CUSTOM_TOOLS,
|
||||
FEATURE_FLAGS.CUSTOM_ROLES,
|
||||
FEATURE_FLAGS.AUDIT_LOGS,
|
||||
FEATURE_FLAGS.HELP_CENTER,
|
||||
|
||||
@@ -150,7 +150,6 @@ export const getConditionOptions = ({
|
||||
conversation_language: languages,
|
||||
country_code: countries,
|
||||
message_type: messageTypeOptions,
|
||||
private_note: booleanFilterOptions,
|
||||
priority: priorityOptions,
|
||||
labels: generateConditionOptions(labels, 'title'),
|
||||
};
|
||||
|
||||
@@ -32,25 +32,6 @@ export function extractTextFromMarkdown(markdown) {
|
||||
.trim(); // Trim any extra space
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes inline base64 markdown images from signature content.
|
||||
*
|
||||
* @param {string} content
|
||||
* @returns {{ sanitizedContent: string, hasInlineImages: boolean }}
|
||||
*/
|
||||
export function stripInlineBase64Images(content) {
|
||||
if (!content || typeof content !== 'string') {
|
||||
return { sanitizedContent: content || '', hasInlineImages: false };
|
||||
}
|
||||
|
||||
const markdownInlineBase64ImageRegex =
|
||||
/!\[[^\]]*]\(\s*data:image\/[a-zA-Z0-9.+-]+;base64,[^)]+\s*\)/gi;
|
||||
const sanitizedContent = content.replace(markdownInlineBase64ImageRegex, '');
|
||||
const hasInlineImages = sanitizedContent !== content;
|
||||
|
||||
return { sanitizedContent, hasInlineImages };
|
||||
}
|
||||
|
||||
/**
|
||||
* Strip unsupported markdown formatting based on channel capabilities.
|
||||
* Uses MARKDOWN_PATTERNS from editor constants.
|
||||
|
||||
@@ -166,8 +166,6 @@ const TOD_TO_MERIDIEM = {
|
||||
evening: 'pm',
|
||||
night: 'pm',
|
||||
};
|
||||
const CJK_CHAR_RE =
|
||||
/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u;
|
||||
|
||||
// ─── Translation Cache ──────────────────────────────────────────────────────
|
||||
|
||||
@@ -280,13 +278,8 @@ const escapeRegex = s => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||
const substituteLocalTokens = (text, pairs) => {
|
||||
let r = text;
|
||||
pairs.forEach(([local, en]) => {
|
||||
if (CJK_CHAR_RE.test(local)) {
|
||||
const re = new RegExp(escapeRegex(local), 'g');
|
||||
r = r.replace(re, ` ${en} `);
|
||||
} else {
|
||||
const re = new RegExp(`(?<=^|\\s)${escapeRegex(local)}(?=\\s|$)`, 'g');
|
||||
r = r.replace(re, en);
|
||||
}
|
||||
const re = new RegExp(`(?<=^|\\s)${escapeRegex(local)}(?=\\s|$)`, 'g');
|
||||
r = r.replace(re, en);
|
||||
});
|
||||
return r;
|
||||
};
|
||||
|
||||
@@ -82,9 +82,6 @@ const ORDINAL_RE = `(\\d{1,2}(?:st|nd|rd|th)?|${ORDINAL_WORDS})`;
|
||||
|
||||
const HALF_UNIT_RE = /^(?:in\s+)?half\s+(?:an?\s+)?(hour|day|week|month|year)$/;
|
||||
const RELATIVE_DURATION_RE = new RegExp(`^(?:in\\s+)?${NUM_RE}\\s+${UNIT_RE}$`);
|
||||
const RELATIVE_DURATION_AFTER_RE = new RegExp(
|
||||
`^(?:in\\s+)?${NUM_RE}\\s+${UNIT_RE}\\s+after$`
|
||||
);
|
||||
const DURATION_FROM_NOW_RE = new RegExp(
|
||||
`^${NUM_RE}\\s+${UNIT_RE}\\s+from\\s+now$`
|
||||
);
|
||||
@@ -92,9 +89,6 @@ const RELATIVE_DAY_ONLY_RE = new RegExp(`^(${RELATIVE_DAYS})$`);
|
||||
const RELATIVE_DAY_TOD_RE = new RegExp(
|
||||
`^(${RELATIVE_DAYS})\\s+(?:at\\s+)?(${TIME_OF_DAY_NAMES})$`
|
||||
);
|
||||
const RELATIVE_DAY_MERIDIEM_RE = new RegExp(
|
||||
`^(${RELATIVE_DAYS})\\s+(?:at\\s+)?(am|pm)$`
|
||||
);
|
||||
const RELATIVE_DAY_TOD_TIME_RE = new RegExp(
|
||||
`^(${RELATIVE_DAYS})\\s+(?:at\\s+)?(${TIME_OF_DAY_NAMES})\\s+(\\d{1,2}(?::\\d{2})?)$`
|
||||
);
|
||||
@@ -251,7 +245,6 @@ const matchDuration = (text, now) => {
|
||||
|
||||
return (
|
||||
parseDuration(text.match(DURATION_FROM_NOW_RE), now) ||
|
||||
parseDuration(text.match(RELATIVE_DURATION_AFTER_RE), now) ||
|
||||
parseDuration(text.match(RELATIVE_DURATION_RE), now)
|
||||
);
|
||||
};
|
||||
@@ -310,13 +303,6 @@ const matchRelativeDay = (text, now) => {
|
||||
);
|
||||
}
|
||||
|
||||
const dayMeridiemMatch = text.match(RELATIVE_DAY_MERIDIEM_RE);
|
||||
if (dayMeridiemMatch) {
|
||||
const [, dayKey, meridiem] = dayMeridiemMatch;
|
||||
const hours = meridiem === 'am' ? 9 : 14;
|
||||
return applyTimeWithRollover(RELATIVE_DAY_MAP[dayKey], hours, 0, now);
|
||||
}
|
||||
|
||||
const dayAtTimeMatch = text.match(RELATIVE_DAY_AT_TIME_RE);
|
||||
if (dayAtTimeMatch) {
|
||||
const [, dayKey, timeRaw] = dayAtTimeMatch;
|
||||
|
||||
@@ -178,21 +178,6 @@ describe('getConditionOptions', () => {
|
||||
})
|
||||
).toEqual(testOptions);
|
||||
});
|
||||
|
||||
it('returns boolean options for private_note', () => {
|
||||
const booleanOptions = [
|
||||
{ id: true, name: 'True' },
|
||||
{ id: false, name: 'False' },
|
||||
];
|
||||
|
||||
expect(
|
||||
helpers.getConditionOptions({
|
||||
booleanFilterOptions: booleanOptions,
|
||||
customAttributes,
|
||||
type: 'private_note',
|
||||
})
|
||||
).toEqual(booleanOptions);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getFileName', () => {
|
||||
|
||||
@@ -15,7 +15,6 @@ import {
|
||||
getMenuAnchor,
|
||||
calculateMenuPosition,
|
||||
stripUnsupportedFormatting,
|
||||
stripInlineBase64Images,
|
||||
} from '../editorHelper';
|
||||
import { FORMATTING } from 'dashboard/constants/editor';
|
||||
import { EditorState } from '@chatwoot/prosemirror-schema';
|
||||
@@ -424,36 +423,6 @@ describe('extractTextFromMarkdown', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('stripInlineBase64Images', () => {
|
||||
it('removes markdown data:image base64 images and sets hasInlineImages', () => {
|
||||
const content =
|
||||
'Hello\n\nWorld';
|
||||
const { sanitizedContent, hasInlineImages } =
|
||||
stripInlineBase64Images(content);
|
||||
|
||||
expect(hasInlineImages).toBe(true);
|
||||
expect(sanitizedContent).not.toContain('data:image/png;base64');
|
||||
expect(sanitizedContent).toContain('Hello');
|
||||
expect(sanitizedContent).toContain('World');
|
||||
});
|
||||
|
||||
it('leaves hosted image markdown unchanged', () => {
|
||||
const content = '';
|
||||
const { sanitizedContent, hasInlineImages } =
|
||||
stripInlineBase64Images(content);
|
||||
|
||||
expect(hasInlineImages).toBe(false);
|
||||
expect(sanitizedContent).toBe(content);
|
||||
});
|
||||
|
||||
it('returns empty hasInlineImages for empty input', () => {
|
||||
expect(stripInlineBase64Images('')).toEqual({
|
||||
sanitizedContent: '',
|
||||
hasInlineImages: false,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('insertAtCursor', () => {
|
||||
it('should return undefined if editorView is not provided', () => {
|
||||
const result = insertAtCursor(undefined, schema.text('Hello'), 0);
|
||||
|
||||
@@ -1626,24 +1626,6 @@ describe('generateDateSuggestions — localized input regressions', () => {
|
||||
},
|
||||
};
|
||||
|
||||
const zhTWSnoozeTranslations = {
|
||||
UNITS: {
|
||||
HOUR: '小時',
|
||||
HOURS: '小時',
|
||||
DAY: '天',
|
||||
DAYS: '天',
|
||||
},
|
||||
HALF: '半',
|
||||
RELATIVE: {
|
||||
TOMORROW: '明天',
|
||||
},
|
||||
MERIDIEM: {
|
||||
AM: '上午',
|
||||
PM: '下午',
|
||||
},
|
||||
AFTER: '後',
|
||||
};
|
||||
|
||||
describe('P1: short non-English tokens must NOT produce spurious half-duration suggestions', () => {
|
||||
it('Arabic "غد" does not produce half-duration suggestions', () => {
|
||||
const results = generateDateSuggestions('غد', now, {
|
||||
@@ -1739,37 +1721,6 @@ describe('generateDateSuggestions — localized input regressions', () => {
|
||||
expect(results[0].date.getHours()).toBe(6);
|
||||
});
|
||||
});
|
||||
|
||||
describe('zh_TW compact CJK inputs', () => {
|
||||
const options = {
|
||||
translations: zhTWSnoozeTranslations,
|
||||
locale: 'zh-TW',
|
||||
};
|
||||
|
||||
it('parses "2小時後" (2 hours from now) without spaces', () => {
|
||||
const results = generateDateSuggestions('2小時後', now, options);
|
||||
expect(results.length).toBeGreaterThan(0);
|
||||
expect(results[0].date.getDate()).toBe(16);
|
||||
expect(results[0].date.getHours()).toBe(12);
|
||||
expect(results[0].date.getMinutes()).toBe(0);
|
||||
});
|
||||
|
||||
it('parses "半天" (half day) without spaces', () => {
|
||||
const results = generateDateSuggestions('半天', now, options);
|
||||
expect(results.length).toBeGreaterThan(0);
|
||||
expect(results[0].date.getDate()).toBe(16);
|
||||
expect(results[0].date.getHours()).toBe(22);
|
||||
expect(results[0].date.getMinutes()).toBe(0);
|
||||
});
|
||||
|
||||
it('parses "明天 上午" (tomorrow AM) into tomorrow 9am', () => {
|
||||
const results = generateDateSuggestions('明天 上午', now, options);
|
||||
expect(results.length).toBeGreaterThan(0);
|
||||
expect(results[0].date.getDate()).toBe(17);
|
||||
expect(results[0].date.getHours()).toBe(9);
|
||||
expect(results[0].date.getMinutes()).toBe(0);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('no-space duration suggestions', () => {
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
"SWITCH_VIEW_LAYOUT": "Switch the layout",
|
||||
"DASHBOARD_APP_TAB_MESSAGES": "Messages",
|
||||
"UNVERIFIED_SESSION": "The identity of this user is not verified",
|
||||
"NO_MESSAGE_1": "የደንበኞች መልእክቶች በኢንቦክስዎ አልተገኙም።",
|
||||
"NO_MESSAGE_2": " ወደ ገፅዎ መልእክት ለመላክ!",
|
||||
"NO_INBOX_1": "እሺ! አሁን ምንም ኢንቦክስ አልጨመሩም።",
|
||||
"NO_INBOX_2": " ለመጀመር",
|
||||
"NO_INBOX_AGENT": "ወይ! ምንም ኢንቦክስ አባል አይደለህም። እባክዎ አስተዳዳሪዎን ያነጋግሩ",
|
||||
"SEARCH_MESSAGES": "መልእክቶችን በውይይቶች ውስጥ ይፈልጉ",
|
||||
"NO_MESSAGE_1": "Uh oh! Looks like there are no messages from customers in your inbox.",
|
||||
"NO_MESSAGE_2": " to send a message to your page!",
|
||||
"NO_INBOX_1": "Hola! Looks like you haven't added any inboxes yet.",
|
||||
"NO_INBOX_2": " to get started",
|
||||
"NO_INBOX_AGENT": "Uh Oh! Looks like you are not part of any inbox. Please contact your administrator",
|
||||
"SEARCH_MESSAGES": "Search for messages in conversations",
|
||||
"VIEW_ORIGINAL": "View original",
|
||||
"VIEW_TRANSLATED": "View translated",
|
||||
"EMPTY_STATE": {
|
||||
@@ -19,19 +19,19 @@
|
||||
"KEYBOARD_SHORTCUTS": "to view keyboard shortcuts"
|
||||
},
|
||||
"SEARCH": {
|
||||
"TITLE": "መልእክቶችን ይፈልጉ",
|
||||
"TITLE": "Search messages",
|
||||
"RESULT_TITLE": "Search Results",
|
||||
"LOADING_MESSAGE": "መረጃ በማስተናገድ ላይ...",
|
||||
"LOADING_MESSAGE": "Crunching data...",
|
||||
"PLACEHOLDER": "Type any text to search messages",
|
||||
"NO_MATCHING_RESULTS": "No results found."
|
||||
},
|
||||
"UNREAD_MESSAGES": "Unread Messages",
|
||||
"UNREAD_MESSAGE": "Unread Message",
|
||||
"CLICK_HERE": "እዚህ ጠቅ ያድርጉ",
|
||||
"LOADING_INBOXES": "ኢንቦክሶች በመጫን ላይ",
|
||||
"LOADING_CONVERSATIONS": "ውይይቶች በመጫን ላይ",
|
||||
"CANNOT_REPLY": "ምክንያቱን በመነሳት መልስ ማድረግ አይችሉም",
|
||||
"24_HOURS_WINDOW": "የ24 ሰዓት መልእክት ጊዜ ገደብ",
|
||||
"CLICK_HERE": "Click here",
|
||||
"LOADING_INBOXES": "Loading inboxes",
|
||||
"LOADING_CONVERSATIONS": "Loading Conversations",
|
||||
"CANNOT_REPLY": "You cannot reply due to",
|
||||
"24_HOURS_WINDOW": "24 hour message window restriction",
|
||||
"48_HOURS_WINDOW": "48 hour message window restriction",
|
||||
"API_HOURS_WINDOW": "ለዚህ ውይይት መመለስ በ{hours} ሰአታት ውስጥ ብቻ ይቻላል",
|
||||
"NOT_ASSIGNED_TO_YOU": "This conversation is not assigned to you. Would you like to assign this conversation to yourself?",
|
||||
@@ -44,9 +44,9 @@
|
||||
"TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to",
|
||||
"TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction",
|
||||
"OLD_INSTAGRAM_INBOX_REPLY_BANNER": "ይህ የInstagram መለያ ወደ አዲሱ የInstagram ቻናል ገቢ ሳጥን ተዛውሯል። ሁሉም አዲስ መልዕክቶች በዚያ ይታያሉ። ከአሁን ጀምሮ ከዚህ ውይይት መልዕክቶች መላክ አትችሉም።",
|
||||
"REPLYING_TO": "ለዚህ ትመልሳለህ፦",
|
||||
"REMOVE_SELECTION": "ምርጫ አስወግድ",
|
||||
"DOWNLOAD": "አውርድ",
|
||||
"REPLYING_TO": "You are replying to:",
|
||||
"REMOVE_SELECTION": "Remove Selection",
|
||||
"DOWNLOAD": "Download",
|
||||
"UNKNOWN_FILE_TYPE": "Unknown File",
|
||||
"SAVE_CONTACT": "Save Contact",
|
||||
"NO_CONTENT": "No content to display",
|
||||
@@ -85,13 +85,13 @@
|
||||
"YOU_ANSWERED": "You answered"
|
||||
},
|
||||
"HEADER": {
|
||||
"RESOLVE_ACTION": "ተፈትኗል",
|
||||
"REOPEN_ACTION": "እንደገና ክፈት",
|
||||
"RESOLVE_ACTION": "Resolve",
|
||||
"REOPEN_ACTION": "Reopen",
|
||||
"OPEN_ACTION": "Open",
|
||||
"MORE_ACTIONS": "ተጨማሪ እርምጃዎች",
|
||||
"OPEN": "ተጨማሪ",
|
||||
"CLOSE": "ዝጋ",
|
||||
"DETAILS": "ዝርዝሮች",
|
||||
"OPEN": "More",
|
||||
"CLOSE": "Close",
|
||||
"DETAILS": "details",
|
||||
"SNOOZED_UNTIL": "Snoozed until",
|
||||
"SNOOZED_UNTIL_TOMORROW": "Snoozed until tomorrow",
|
||||
"SNOOZED_UNTIL_NEXT_WEEK": "Snoozed until next week",
|
||||
@@ -188,21 +188,21 @@
|
||||
"MESSAGE_SIGN_TOOLTIP": "Message signature",
|
||||
"ENABLE_SIGN_TOOLTIP": "Enable signature",
|
||||
"DISABLE_SIGN_TOOLTIP": "Disable signature",
|
||||
"MSG_INPUT": "አዲስ መስመር ለማስገባት Shift + enter ይጠቀሙ። '/' በመጀመር የተዘጋጀ ምላሽ ይምረጡ።",
|
||||
"PRIVATE_MSG_INPUT": "አዲስ መስመር ለማስገባት Shift + enter ይጠቀሙ። ይህ ለወኪሎች ብቻ ይታያል",
|
||||
"MSG_INPUT": "Shift + enter for new line. Start with '/' to select a Canned Response.",
|
||||
"PRIVATE_MSG_INPUT": "Shift + enter for new line. This will be visible only to Agents",
|
||||
"MESSAGING_RESTRICTED": "You cannot reply to this conversation",
|
||||
"MESSAGING_RESTRICTED_WHATSAPP": "You can only reply using a template message due to 24-hour message window restriction",
|
||||
"MESSAGING_RESTRICTED_API": "You can only reply using a template message due to message window restriction",
|
||||
"MESSAGE_SIGNATURE_NOT_CONFIGURED": "Message signature is not configured, please configure it in profile settings.",
|
||||
"COPILOT_MSG_INPUT": "ኮፒሎት ተጨማሪ እባብነቶች ስጡው, ወይም ሌላ ማንኛውንም ጥያቄ ያቀርቡ... ተከትሎ ለማስተላለፊያ ኤንተር ይጫኑ።",
|
||||
"COPILOT_MSG_INPUT": "Give copilot additional prompts, or ask anything else... Press enter to send follow-up",
|
||||
"CLICK_HERE": "Click here to update",
|
||||
"WHATSAPP_TEMPLATES": "Whatsapp Templates"
|
||||
},
|
||||
"REPLYBOX": {
|
||||
"REPLY": "መልስ",
|
||||
"PRIVATE_NOTE": "የግል ማስታወሻ",
|
||||
"SEND": "ላክ",
|
||||
"CREATE": "ማስታወሻ አክል",
|
||||
"REPLY": "Reply",
|
||||
"PRIVATE_NOTE": "Private Note",
|
||||
"SEND": "Send",
|
||||
"CREATE": "Add Note",
|
||||
"INSERT_READ_MORE": "Read more",
|
||||
"DISMISS_REPLY": "Dismiss reply",
|
||||
"REPLYING_TO": "Replying to:",
|
||||
@@ -214,7 +214,7 @@
|
||||
"DRAG_DROP": "Drag and drop here to attach",
|
||||
"START_AUDIO_RECORDING": "Start audio recording",
|
||||
"STOP_AUDIO_RECORDING": "Stop audio recording",
|
||||
"COPILOT_THINKING": "ኮፒሎት እየሰማራ ነው",
|
||||
"COPILOT_THINKING": "Copilot is thinking",
|
||||
"EMAIL_HEAD": {
|
||||
"TO": "TO",
|
||||
"ADD_BCC": "Add bcc",
|
||||
@@ -245,10 +245,10 @@
|
||||
"EXPAND": "Expand preview"
|
||||
}
|
||||
},
|
||||
"VISIBLE_TO_AGENTS": "የግል ማስታወሻ፡ ለአንተና ቡድንህ ብቻ ይታያል",
|
||||
"CHANGE_STATUS": "የውይይቱ ሁኔታ ተቀይሯል",
|
||||
"VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team",
|
||||
"CHANGE_STATUS": "Conversation status changed",
|
||||
"CHANGE_STATUS_FAILED": "Conversation status change failed",
|
||||
"CHANGE_AGENT": "የውይይቱ ተመድብ ተቀይሯል",
|
||||
"CHANGE_AGENT": "Conversation Assignee changed",
|
||||
"CHANGE_AGENT_FAILED": "Assignee change failed",
|
||||
"ASSIGN_LABEL_SUCCESFUL": "Label assigned successfully",
|
||||
"ASSIGN_LABEL_FAILED": "Label assignment failed",
|
||||
@@ -300,20 +300,20 @@
|
||||
}
|
||||
},
|
||||
"EMAIL_TRANSCRIPT": {
|
||||
"TITLE": "የውይይት ጽሑፍ ላክ",
|
||||
"DESC": "የውይይቱን ጽሑፍ ቅጂ ወደ ተጠቃሚው ኢሜይል ላክ",
|
||||
"SUBMIT": "አስገባ",
|
||||
"CANCEL": "ይቅር",
|
||||
"SEND_EMAIL_SUCCESS": "የቻት አጭር መግለጫው በተሳካ ሁኔታ ተልኳል",
|
||||
"SEND_EMAIL_ERROR": "ስህተት ተፈጥሯል፣ እባክዎ ደግመው ይሞክሩ",
|
||||
"TITLE": "Send conversation transcript",
|
||||
"DESC": "Send a copy of the conversation transcript to the specified email address",
|
||||
"SUBMIT": "Submit",
|
||||
"CANCEL": "Cancel",
|
||||
"SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully",
|
||||
"SEND_EMAIL_ERROR": "There was an error, please try again",
|
||||
"SEND_EMAIL_PAYMENT_REQUIRED": "Email transcript is not available on your current plan. Please upgrade to use this feature.",
|
||||
"FORM": {
|
||||
"SEND_TO_CONTACT": "መግለጫውን ለደንበኛው ይላኩ",
|
||||
"SEND_TO_CONTACT": "Send the transcript to the customer",
|
||||
"SEND_TO_AGENT": "Send the transcript to the assigned agent",
|
||||
"SEND_TO_OTHER_EMAIL_ADDRESS": "መግለጫውን ወደ ሌላ ኢሜይል አድራሻ ይላኩ",
|
||||
"SEND_TO_OTHER_EMAIL_ADDRESS": "Send the transcript to another email address",
|
||||
"EMAIL": {
|
||||
"PLACEHOLDER": "ኢሜይል አድራሻ ያስገቡ",
|
||||
"ERROR": "ትክክለኛ ኢሜይል አድራሻ ያስገቡ"
|
||||
"PLACEHOLDER": "Enter an email address",
|
||||
"ERROR": "Please enter a valid email address"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "ቋንቋው ከፖርታል በተሳካ ሁኔታ ተሰርዟል",
|
||||
"ERROR_MESSAGE": "ከፖርታሉ ቋንቋ ማስወገድ አልተቻለም። እባክዎ ደግመው ይሞክሩ።."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} ጽሑፍ | {count} ጽሑፎች",
|
||||
"CATEGORIES_COUNT": "{count} ምድብ | {count} ምድቦች",
|
||||
"DEFAULT": "ነባሪ",
|
||||
"DRAFT": "እቅድ",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "እንደ ነባሪ አድርግ",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "ሰርዝ"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "ቋንቋ ይምረጡ..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "Status",
|
||||
"OPTIONS": {
|
||||
"LIVE": "ተለቀቀ",
|
||||
"DRAFT": "እቅድ"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "ቋንቋ በተሳካ ሁኔታ ተጨምሯል",
|
||||
"ERROR_MESSAGE": "ቋንቋውን ማክሰኞ አልተቻለም። እባክዎ ደግመው ይሞክሩ።."
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"WHATSAPP_REGISTRATION_INCOMPLETE": "የWhatsApp ንግድ ምዝገባዎ አልተጠናቀቀም። እባክዎ ከመገናኛ ባለሥልጣን ጋር በMeta Business Manager ውስጥ የሚታይ ስም ሁኔታዎን ያረጋግጡ።.",
|
||||
"COMPLETE_REGISTRATION": "ምዝገባ አሟልት",
|
||||
"LIST": {
|
||||
"404": "ወደዚህ መለያ የተያዙ ኢንቦክሶች የሉም።"
|
||||
"404": "Այս հաշվի հետ կապված մուտքային արկղեր չկան։"
|
||||
},
|
||||
"CREATE_FLOW": {
|
||||
"CHANNEL": {
|
||||
@@ -42,7 +42,7 @@
|
||||
"PLACEHOLDER": "የድር ጣቢያ ስምዎን ያስገቡ (ለምሳሌ፡ Acme Inc)"
|
||||
},
|
||||
"FB": {
|
||||
"HELP": "ማስታወሻ፡ በመግባት ብቻ የገጹ መልእክቶችን ብቻ እንደምንያዝ ነው። የግል መልእክቶችዎን በChatwoot ማድረስ አይቻልም።",
|
||||
"HELP": "Հիշեցում․ Մուտք գործելով մենք միայն հասանելիություն ենք ստանում Ձեր էջի հաղորդագրություններին։ Ձեր անձնական հաղորդագրություններին Chatwoot-ը երբեք չի կարող հասանելիություն ունենալ։",
|
||||
"CHOOSE_PAGE": "ገጽ ይምረጡ",
|
||||
"CHOOSE_PLACEHOLDER": "ከዝርዝር ገጽ ይምረጡ",
|
||||
"INBOX_NAME": "የኢንቦክስ ስም",
|
||||
@@ -76,7 +76,7 @@
|
||||
},
|
||||
"WEBSITE_CHANNEL": {
|
||||
"TITLE": "የድር ጣቢያ ቻናል",
|
||||
"DESC": "ለድህረ ገጹ ቻናል ይፍጠሩ እና በድህረ ገጻችን ዊጅት ደንበኞቻችሁን ይደግፉ።",
|
||||
"DESC": "Ստեղծեք ալիք Ձեր կայքի համար և սկսեք աջակցել Ձեր հաճախորդներին մեր կայքի վիջեթի միջոցով։",
|
||||
"LOADING_MESSAGE": "የድር ጣቢያ ድጋፍ ቻናል እየተፈጠረ ነው",
|
||||
"CHANNEL_AVATAR": {
|
||||
"LABEL": "የቻናል ፎቶ"
|
||||
@@ -96,11 +96,11 @@
|
||||
},
|
||||
"CHANNEL_WELCOME_TAGLINE": {
|
||||
"LABEL": "የእንኳን ደህና መጡ መልዕክት",
|
||||
"PLACEHOLDER": "ከእኛ ጋር ቀላል መገናኘት እንደምንሠራ ነው። ማንኛውንም ጥያቄ ያቀርቡ ወይም አስተያየትዎን ያጋሩ።"
|
||||
"PLACEHOLDER": "Մենք հեշտացնում ենք կապվել մեզ հետ։ Հարցրեք ցանկացած բան կամ կիսվեք Ձեր կարծիքով։"
|
||||
},
|
||||
"CHANNEL_GREETING_MESSAGE": {
|
||||
"LABEL": "የቻናል ደስታ መልእክት",
|
||||
"PLACEHOLDER": "Acme Inc በተለምዶ በጥቂት ሰዓታት ውስጥ ይመልሳል።"
|
||||
"PLACEHOLDER": "Acme Inc սովորաբար պատասխանում է մի քանի ժամվա ընթացքում։"
|
||||
},
|
||||
"CHANNEL_GREETING_TOGGLE": {
|
||||
"LABEL": "የቻናል ደስታ አንቀሳቅስ",
|
||||
@@ -126,7 +126,7 @@
|
||||
},
|
||||
"TWILIO": {
|
||||
"TITLE": "Twilio SMS/WhatsApp ቻናል",
|
||||
"DESC": "Twilio ያገናኙ እና በSMS ወይም WhatsApp ደንበኞቻችሁን ይደግፉ።",
|
||||
"DESC": "Միացրեք Twilio-ն և սկսեք աջակցել Ձեր հաճախորդներին SMS կամ WhatsApp միջոցով։",
|
||||
"ACCOUNT_SID": {
|
||||
"LABEL": "አካውንት SID",
|
||||
"PLACEHOLDER": "እባክዎ የTwilio መለያ መለያዎን ያስገቡ",
|
||||
@@ -165,12 +165,12 @@
|
||||
},
|
||||
"PHONE_NUMBER": {
|
||||
"LABEL": "ስልክ ቁጥር",
|
||||
"PLACEHOLDER": "ከዚህ መልእክት የሚልከው የስልክ ቁጥር እባክዎ ያስገቡ።",
|
||||
"PLACEHOLDER": "Խնդրում ենք մուտքագրել այն հեռախոսահամարը, որտեղից կուղարկվի հաղորդագրությունը։",
|
||||
"ERROR": "እባክዎ በ`+` ምልክት የሚጀምር እና ቦታ ያልያዘ ትክክለኛ የስልክ ቁጥር ያቀርቡ።."
|
||||
},
|
||||
"API_CALLBACK": {
|
||||
"TITLE": "ካልባክ URL",
|
||||
"SUBTITLE": "በTwilio ውስጥ የመልእክት እንደገና መግባት አድራሻን ከዚህ በተጠቀሰው አድራሻ ጋር መቀነባበር አለብዎት።"
|
||||
"SUBTITLE": "Twilio-ում պետք է կարգավորեք հաղորդագրության պատասխան URL-ը՝ օգտագործելով այստեղ նշված հասցեն։"
|
||||
},
|
||||
"SUBMIT_BUTTON": "የTwilio ቻናል ይፍጠሩ",
|
||||
"API": {
|
||||
@@ -179,7 +179,7 @@
|
||||
},
|
||||
"SMS": {
|
||||
"TITLE": "SMS ቻናል",
|
||||
"DESC": "በSMS ደንበኞቻችሁን ይደግፉ።",
|
||||
"DESC": "Սկսեք աջակցել Ձեր հաճախորդներին SMS-ի միջոցով։",
|
||||
"PROVIDERS": {
|
||||
"LABEL": "API አቅራቢ",
|
||||
"TWILIO": "Twilio",
|
||||
@@ -231,7 +231,7 @@
|
||||
},
|
||||
"WHATSAPP": {
|
||||
"TITLE": "WhatsApp ቻናል",
|
||||
"DESC": "በWhatsApp ደንበኞቻችሁን ይደግፉ።",
|
||||
"DESC": "Սկսեք աջակցել Ձեր հաճախորդներին WhatsApp-ի միջոցով։",
|
||||
"PROVIDERS": {
|
||||
"LABEL": "API አቅራቢ",
|
||||
"WHATSAPP_EMBEDDED": "WhatsApp ቢዝነስ",
|
||||
@@ -252,7 +252,7 @@
|
||||
},
|
||||
"PHONE_NUMBER": {
|
||||
"LABEL": "የስልክ ቁጥር",
|
||||
"PLACEHOLDER": "ከዚህ መልእክት የሚልከው የስልክ ቁጥር እባክዎ ያስገቡ።",
|
||||
"PLACEHOLDER": "Խնդրում ենք մուտքագրել այն հեռախոսահամարը, որտեղից կուղարկվի հաղորդագրությունը։",
|
||||
"ERROR": "እባክዎ በ`+` ምልክት የሚጀምር እና ቦታ ያልያዘ ትክክለኛ የስልክ ቁጥር ያቀርቡ።."
|
||||
},
|
||||
"PHONE_NUMBER_ID": {
|
||||
@@ -272,9 +272,9 @@
|
||||
},
|
||||
"API_KEY": {
|
||||
"LABEL": "API ቁልፍ",
|
||||
"SUBTITLE": "የWhatsApp API ቁልፍን ያቀናብሩ።",
|
||||
"SUBTITLE": "Կարգավորեք WhatsApp API բանալին։",
|
||||
"PLACEHOLDER": "API ቁልፍ",
|
||||
"ERROR": "እባክዎ ትክክለኛ እሴት ያስገቡ።"
|
||||
"ERROR": "Խնդրում ենք մուտքագրել վավեր արժեք։"
|
||||
},
|
||||
"API_CALLBACK": {
|
||||
"TITLE": "የተመለሰ አድራሻ URL",
|
||||
@@ -358,7 +358,7 @@
|
||||
},
|
||||
"API_CHANNEL": {
|
||||
"TITLE": "የAPI ቻናል",
|
||||
"DESC": "ከAPI ቻናል ጋር ያገናኙ እና ደንበኞቻችሁን ይደግፉ።",
|
||||
"DESC": "Միացրեք API ալիքը և սկսեք աջակցել Ձեր հաճախորդներին։",
|
||||
"CHANNEL_NAME": {
|
||||
"LABEL": "የቻናል ስም",
|
||||
"PLACEHOLDER": "እባክዎ የቻናል ስም ያስገቡ",
|
||||
@@ -371,7 +371,7 @@
|
||||
},
|
||||
"SUBMIT_BUTTON": "API ቻናል ፍጠር",
|
||||
"API": {
|
||||
"ERROR_MESSAGE": "API ቻናሉን ማስቀመጥ አልተቻለንም"
|
||||
"ERROR_MESSAGE": "Չհաջողվեց պահպանել API ալիքը"
|
||||
}
|
||||
},
|
||||
"EMAIL_CHANNEL": {
|
||||
@@ -399,7 +399,7 @@
|
||||
},
|
||||
"LINE_CHANNEL": {
|
||||
"TITLE": "LINE ቻናል",
|
||||
"DESC": "ከLINE ቻናል ጋር ያገናኙ እና ደንበኞቻችሁን ይደግፉ።",
|
||||
"DESC": "Միացրեք LINE ալիքը և սկսեք աջակցել Ձեր հաճախորդներին։",
|
||||
"CHANNEL_NAME": {
|
||||
"LABEL": "የቻናል ስም",
|
||||
"PLACEHOLDER": "እባክዎ የቻናል ስም ያስገቡ",
|
||||
@@ -423,15 +423,15 @@
|
||||
},
|
||||
"API_CALLBACK": {
|
||||
"TITLE": "የእንደገና ጥሪ አድራሻ",
|
||||
"SUBTITLE": "በLINE መተግበሪያ ውስጥ የwebhook አድራሻን ከዚህ በተጠቀሰው አድራሻ ጋር መቀነባበር አለብዎት።"
|
||||
"SUBTITLE": "LINE հավելվածում պետք է կարգավորեք webhook URL-ը՝ օգտագործելով այստեղ նշված հասցեն։"
|
||||
}
|
||||
},
|
||||
"TELEGRAM_CHANNEL": {
|
||||
"TITLE": "Telegram ቻናል",
|
||||
"DESC": "ከTelegram ቻናል ጋር ያገናኙ እና ደንበኞቻችሁን ይደግፉ።",
|
||||
"DESC": "Միացրեք Telegram ալիքը և սկսեք աջակցել Ձեր հաճախորդներին։",
|
||||
"BOT_TOKEN": {
|
||||
"LABEL": "የቦት ቶክን",
|
||||
"SUBTITLE": "ከTelegram BotFather ያገኙትን የቦት ቶክን ያቀናብሩ።",
|
||||
"SUBTITLE": "Կարգավորեք Telegram BotFather-ից ստացած բոտի տոկենը։",
|
||||
"PLACEHOLDER": "የቦት ቶክን"
|
||||
},
|
||||
"SUBMIT_BUTTON": "Telegram ቻናል ፍጠር",
|
||||
@@ -493,13 +493,13 @@
|
||||
},
|
||||
"AGENTS": {
|
||||
"TITLE": "Agent-ዎች",
|
||||
"DESC": "እዚህ አዲስ የተፈጠረውን ኢንቦክስ ለመቆጣጠር ወኪሎችን ማከል ይችላሉ። እነዚህ የተመረጡ ወኪሎች ብቻ ወደ ኢንቦክስዎ መዳረሻ አላቸው። ከዚህ ኢንቦክስ አካል ያልሆኑ ወኪሎች ሲግቡ መልእክቶችን ማየት ወይም መልስ ማድረግ አይችሉም። <br> <b>ማስታወሻ፡</b> እንደ አስተዳደር ባለስልጣን ሁሉንም ኢንቦክሶች ለመዳረሻ ከፈለጉ ራስዎን እንደ ወኪል ወደ ሁሉም የሚፈጥሩት ኢንቦክሶች መጨመር አለብዎት።",
|
||||
"DESC": "Այստեղ կարող եք ավելացնել գործակալներ՝ նոր ստեղծված մուտքային արկղը կառավարելու համար։ Միայն այս ընտրված գործակալները կունենան մուտք դեպի Ձեր մուտքային արկղը։ Գործակալները, որոնք չեն պատկանում այս մուտքային արկղին, չեն կարողանա տեսնել կամ պատասխանել հաղորդագրություններին մուտք գործելիս։ <br> <b>Հիշեցում․</b> Որպես ադմինիստրատոր, եթե Ձեզ անհրաժեշտ է մուտք բոլոր մուտքային արկղերին, պետք է ինքներդ Ձեզ ավելացնեք որպես գործակալ բոլոր ստեղծած մուտքային արկղերում։",
|
||||
"VALIDATION_ERROR": "ከአዲሱ ኢንቦክስዎ ቢያንስ አንድ ወኪል ያክሉ",
|
||||
"PICK_AGENTS": "ለኢንቦክሱ ወኪሎችን ይምረጡ"
|
||||
},
|
||||
"DETAILS": {
|
||||
"TITLE": "የኢንቦክስ ዝርዝሮች",
|
||||
"DESC": "ከታች ያለው ከዝርዝር ማስተካከያ በተጠቃሚው ፌስቡክ ገጽ ወደ Chatwoot ለመገናኘት ይምረጡ። ለምርጥ መለያየት የእርስዎን ኢንቦክስ በተለየ ስም ማቅረብ ይችላሉ።"
|
||||
"DESC": "Ընտրեք ներքևի բացվող ցանկից այն Facebook էջը, որը ցանկանում եք կապել Chatwoot-ի հետ։ Կարող եք նաև մուտքային արկղին տալ հատուկ անուն՝ ավելի լավ ճանաչման համար։"
|
||||
},
|
||||
"FINISH": {
|
||||
"TITLE": "ተሳክቷል!",
|
||||
@@ -543,7 +543,7 @@
|
||||
"MESSAGE": "ከአዲሱ ቻናልዎ ጋር ከደንበኞችዎ ጋር እንዲገናኙ አሁን ትችላላችሁ። ደስታ ያለው ድጋፍ",
|
||||
"BUTTON_TEXT": "ወደ እዚያ ይውሰዱኝ",
|
||||
"MORE_SETTINGS": "ተጨማሪ ቅንብሮች",
|
||||
"WEBSITE_SUCCESS": "የድር ጣቢያ ቻናል መፍጠር በተሳካ ሁኔታ ተጠናቋል። ከታች የተሳየውን ኮድ ቅዳት እና በድር ጣቢያዎ ያስገቡ። ቀጣዩ ጊዜ ደንበኛ በላይቭ ቻት ሲጠቀም ውይይቱ በራሱ በኢንቦክስዎ ይታያል።",
|
||||
"WEBSITE_SUCCESS": "Դուք հաջողությամբ ստեղծել եք կայքի ալիք։ Նշված կոդը պատճենեք և տեղադրեք Ձեր կայքում։ Հաջորդ անգամ, երբ հաճախորդը օգտագործի ուղիղ զրույցը, հաղորդակցությունը ավտոմատ կհայտնվի Ձեր մուտքային արկղում։",
|
||||
"WHATSAPP_QR_INSTRUCTION": "ለፈጣን ሙከራ የ WhatsApp ጥቅል ላይ ከላይ ያለውን QR ኮድ ይስካን ያድርጉ",
|
||||
"MESSENGER_QR_INSTRUCTION": "ለፈጣን ሙከራ የ Facebook Messenger ጥቅል ላይ ከላይ ያለውን QR ኮድ ይስካን ያድርጉ",
|
||||
"TELEGRAM_QR_INSTRUCTION": "ለፈጣን ሙከራ የ Telegram ጥቅል ላይ ከላይ ያለውን QR ኮድ ይስካን ያድርጉ"
|
||||
@@ -613,9 +613,9 @@
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "ኢንቦክስ በተሳካ ሁኔታ ተሰርዟል",
|
||||
"ERROR_MESSAGE": "ኢንቦክስ ማጥፋት አልተቻለም። እባክዎ በኋላ ደግመው ይሞክሩ።",
|
||||
"ERROR_MESSAGE": "Չհաջողվեց ջնջել մուտքային արկղը։ Խնդրում ենք փորձել ավելի ուշ։",
|
||||
"AVATAR_SUCCESS_MESSAGE": "የኢንቦክስ አቫታር በተሳካ ሁኔታ ተሰርዟል",
|
||||
"AVATAR_ERROR_MESSAGE": "የኢንቦክስ አቫታር ማጥፋት አልተቻለም። እባክዎ በኋላ ደግመው ይሞክሩ።"
|
||||
"AVATAR_ERROR_MESSAGE": "Չհաջողվեց ջնջել մուտքային արկղի պատկերակը։ Խնդրում ենք փորձել ավելի ուշ։"
|
||||
}
|
||||
},
|
||||
"TABS": {
|
||||
@@ -736,24 +736,24 @@
|
||||
"SENDER_NAME_SECTION": "በኢሜይል ውስጥ የAgent ስም አርግ",
|
||||
"SENDER_NAME_SECTION_TEXT": "በኢሜይል ውስጥ የAgent ስም እንዲታይ/እንዳይታይ አርግ፣ ካልተከናወነ የንግድ ስም ይታያል",
|
||||
"ENABLE_CONTINUITY_VIA_EMAIL": "በኢሜል የውይይት ቀጥታነት አንቀሳቅስ",
|
||||
"ENABLE_CONTINUITY_VIA_EMAIL_SUB_TEXT": "ከኮንታክት ኢሜይል አድራሻ ካለ ውይይቶች በኢሜይል ይቀጥላሉ።",
|
||||
"ENABLE_CONTINUITY_VIA_EMAIL_SUB_TEXT": "Եթե կոնտակտի էլ.փոստի հասցեն հասանելի է, զրույցները կշարունակվեն էլ.փոստով։",
|
||||
"LOCK_TO_SINGLE_CONVERSATION": "የውይይት መላኪያ",
|
||||
"LOCK_TO_SINGLE_CONVERSATION_SUB_TEXT": "ለአሁን ያሉ እውቂያዎች ውይይት ፍጠራ ያስተካክሉ",
|
||||
"INBOX_UPDATE_TITLE": "የኢንቦክስ ቅንብሮች",
|
||||
"INBOX_UPDATE_SUB_TEXT": "የኢንቦክስዎን ቅንብሮች ያዘምኑ",
|
||||
"AUTO_ASSIGNMENT_SUB_TEXT": "አዲስ ውይይቶችን ወደ ይህ ኢንቦክስ የተጨመሩ ወኪሎች በራስሰር ማድረግን አቅርቦ ወይም አቋርጦ ያድርጉ።",
|
||||
"AUTO_ASSIGNMENT_SUB_TEXT": "Միացրեք կամ անջատեք նոր հաղորդակցությունները ավտոմատ նշանակումը այս մուտքային արկղին ավելացված գործակալներին։",
|
||||
"HMAC_VERIFICATION": "የተጠቃሚ መለያ ማረጋገጫ",
|
||||
"HMAC_DESCRIPTION": "በዚህ ቁልፍ የተለየ ቶክን ማመንጨት ይችላሉ ይህም የተጠቃሚዎችዎን መለያ ለማረጋገጥ ይጠቅማል።.",
|
||||
"HMAC_LINK_TO_DOCS": "እንደ ተጨማሪ መረጃ እዚህ ማንበብ ይችላሉ።.",
|
||||
"HMAC_MANDATORY_VERIFICATION": "የተጠቃሚ መለያ ማረጋገጫን አጽድቅ",
|
||||
"HMAC_MANDATORY_DESCRIPTION": "ከተከፈተ ግምገማዎች ካልተረጋገጡ ጥያቄዎች ይተንቀሳቀሳሉ።.",
|
||||
"INBOX_IDENTIFIER": "የኢንቦክስ መለያ",
|
||||
"INBOX_IDENTIFIER_SUB_TEXT": "የ API ደንበኞችዎን ማረጋገጫ ለማድረግ እዚህ የተሳየውን `inbox_identifier` ቶክን ይጠቀሙ።",
|
||||
"INBOX_IDENTIFIER_SUB_TEXT": "Օգտագործեք այստեղ նշված `inbox_identifier` տոկենը՝ Ձեր API հաճախորդների վավերացման համար։",
|
||||
"FORWARD_EMAIL_TITLE": "ወደ ኢሜይል አስቀምጥ",
|
||||
"FORWARD_EMAIL_SUB_TEXT": "ኢሜይሎችዎን ወደ ቀጣዩ ኢሜይል አድራሻ መላክ ይጀምሩ።",
|
||||
"FORWARD_EMAIL_SUB_TEXT": "Սկսեք Ձեր էլ.փոստերը ուղարկել հետևյալ էլ.փոստի հասցեին։",
|
||||
"FORWARD_EMAIL_NOT_CONFIGURED": "ኢሜይሎችን ወደ ኢንቦክስዎ መቀላቀል በዚህ መገናኛ አሁን አልተፈቀደም። ይህን ባህሪ ለመጠቀም ከአስተዳደሩ መፍቀድ አለቦት። እባክዎ ለመቀጠል ከእነርሱ ጋር ያገናኙ።.",
|
||||
"ALLOW_MESSAGES_AFTER_RESOLVED": "ከውይይት መፍታት በኋላ መልእክቶችን እንዲፈቀድ",
|
||||
"ALLOW_MESSAGES_AFTER_RESOLVED_SUB_TEXT": "ውይይቱ ከተፈታ በኋላም እንደገና መልእክቶችን ለመላክ ለመጠቀሚያ ተጠቃሚዎች ፈቃድ ይስጡ።",
|
||||
"ALLOW_MESSAGES_AFTER_RESOLVED_SUB_TEXT": "Թույլ տվեք վերջնական օգտատերերին ուղարկել հաղորդագրություններ նույնիսկ զրույցի լուծումից հետո։",
|
||||
"WHATSAPP_SECTION_SUBHEADER": "ይህ የAPI ቁልፍ ለWhatsApp API ጋር ለመያዝ ይጠቅማል።.",
|
||||
"WHATSAPP_SECTION_UPDATE_SUBHEADER": "ለWhatsApp API ጋር ለመያዝ አዲሱን የAPI ቁልፍ ያስገቡ።.",
|
||||
"WHATSAPP_SECTION_TITLE": "API ቁልፍ",
|
||||
@@ -850,7 +850,7 @@
|
||||
"MESSAGE_ERROR": "ስህተት አጋጥሟል፣ እባክዎ እንደገና ይሞክሩ"
|
||||
},
|
||||
"PRE_CHAT_FORM": {
|
||||
"DESCRIPTION": "የቀድሞ ቻት ቅጥያዎች ተጠቃሚ መረጃ ከመደምደሚያ በፊት ለመሰብሰብ ይፈቅዳሉ።",
|
||||
"DESCRIPTION": "Նախնական զրույցի ձևերը թույլ են տալիս հավաքել օգտատիրոջ տեղեկությունները նախքան զրույցի սկսելը։",
|
||||
"SET_FIELDS": "የቀደም የውይይት ቅጽ መስኮች",
|
||||
"SET_FIELDS_HEADER": {
|
||||
"FIELDS": "መስኮች",
|
||||
@@ -960,7 +960,7 @@
|
||||
"HOURS": "ሰዓታት",
|
||||
"ENABLE": "ለዚህ ቀን እንደሚገኙ አንቀሳቅስ",
|
||||
"UNAVAILABLE": "አይገኝም",
|
||||
"VALIDATION_ERROR": "የመጀመሪያ ሰዓት ከመዝጊያ ሰዓት በፊት መሆን አለበት።",
|
||||
"VALIDATION_ERROR": "Սկիզբի ժամանակը պետք է լինի փակման ժամանակից առաջ։",
|
||||
"CHOOSE": "ይምረጡ"
|
||||
},
|
||||
"ALL_DAY": "ቀኑን ሙሉ"
|
||||
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "ሰነዶች",
|
||||
"ADD_NEW": "አዲስ ሰነድ ፍጠር",
|
||||
"SELECTED": "{count} ተመረጡ",
|
||||
"SELECT_ALL": "ሁሉንም ይምረጡ ({count})",
|
||||
"UNSELECT_ALL": "ሁሉንም አልምረጥም ({count})",
|
||||
"BULK_DELETE_BUTTON": "Delete",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "አዎን፣ ሁሉንም አጥፋ",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "ተዛማጅ የFAQ ጥያቄዎች",
|
||||
"DESCRIPTION": "እነዚህ የFAQ ጥያቄዎች ቀጥተኛ ከሰነዱ ተፈጥረዋል።"
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "መሣሪያዎች",
|
||||
"ADD_NEW": "አዲስ መሣሪያ ይፍጠሩ",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "ምንም የተለየ መሣሪያዎች አልተገኙም",
|
||||
"SUBTITLE": "እርስዎን ከውጭ ኤፒአይዎችና አገልግሎቶች ጋር ለማገናኘት የተለየ መሣሪያዎችን ይፍጠሩ፣ እንዲሁም እርስዎን በአካል ውስጥ መረጃ ለማግኘትና ለማከናወን ይፈቅዱ።",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "ብልጽግና ተጠቃሚ መሣሪያ ተሰርዟል",
|
||||
"ERROR_MESSAGE": "ብልጽግና መሣሪያውን ማስወገድ አልተሳካም"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "የመሣሪያ ስም",
|
||||
"PLACEHOLDER": "የትዕዛዝ ፍለጋ",
|
||||
"ERROR": "የመሣሪያ ስም አስፈላጊ ነው",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "የመሣሪያ ስም አስፈላጊ ነው"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "መግለጫ",
|
||||
|
||||
@@ -158,54 +158,54 @@
|
||||
"TOOLTIP_TEXT": "First Response Time is {metricValue} (based on {conversationCount} conversations)"
|
||||
},
|
||||
"RESOLUTION_TIME": {
|
||||
"NAME": "የመፍትሄ ጊዜ",
|
||||
"DESC": "( አማካይ )",
|
||||
"NAME": "Resolution Time",
|
||||
"DESC": "( Avg )",
|
||||
"INFO_TEXT": "Total number of conversations used for computation:",
|
||||
"TOOLTIP_TEXT": "Resolution Time is {metricValue} (based on {conversationCount} conversations)"
|
||||
},
|
||||
"RESOLUTION_COUNT": {
|
||||
"NAME": "የተፈታ ብዛት",
|
||||
"DESC": "( ጠቅላላ )"
|
||||
"NAME": "Resolution Count",
|
||||
"DESC": "( Total )"
|
||||
}
|
||||
},
|
||||
"DATE_RANGE": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "ያለፉት 7 ቀናት"
|
||||
"name": "Last 7 days"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "ያለፉት 30 ቀናት"
|
||||
"name": "Last 30 days"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "ያለፉት 3 ወራት"
|
||||
"name": "Last 3 months"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "ያለፉት 6 ወራት"
|
||||
"name": "Last 6 months"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "ያለፈው ዓመት"
|
||||
"name": "Last year"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "በተለይ የተመረጠ ቀን ክልል"
|
||||
"name": "Custom date range"
|
||||
}
|
||||
],
|
||||
"CUSTOM_DATE_RANGE": {
|
||||
"CONFIRM": "ተግባሩን ተፈጽም",
|
||||
"PLACEHOLDER": "የቀን ክልል ይምረጡ"
|
||||
"CONFIRM": "Apply",
|
||||
"PLACEHOLDER": "Select date range"
|
||||
}
|
||||
},
|
||||
"LABEL_REPORTS": {
|
||||
"HEADER": "የመለያ አጠቃላይ እይታ",
|
||||
"HEADER": "Labels Overview",
|
||||
"DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.",
|
||||
"LOADING_CHART": "የገበታ ውሂብ በመጫን ላይ...",
|
||||
"NO_ENOUGH_DATA": "የበቂ ውሂብ አልተሰበሰበም፣ እባክዎ በኋላ ይሞክሩ።",
|
||||
"DOWNLOAD_LABEL_REPORTS": "የመለያ ሪፖርቶችን ይውሰዱ",
|
||||
"FILTER_DROPDOWN_LABEL": "መለያ ይምረጡ",
|
||||
"LOADING_CHART": "Loading chart data...",
|
||||
"NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.",
|
||||
"DOWNLOAD_LABEL_REPORTS": "Download label reports",
|
||||
"FILTER_DROPDOWN_LABEL": "Select Label",
|
||||
"FILTERS": {
|
||||
"INPUT_PLACEHOLDER": {
|
||||
"LABELS": "Search labels"
|
||||
@@ -213,71 +213,71 @@
|
||||
},
|
||||
"METRICS": {
|
||||
"CONVERSATIONS": {
|
||||
"NAME": "ውይይቶች",
|
||||
"DESC": "( ድምር )"
|
||||
"NAME": "Conversations",
|
||||
"DESC": "( Total )"
|
||||
},
|
||||
"INCOMING_MESSAGES": {
|
||||
"NAME": "የሚገቡ መልእክቶች",
|
||||
"DESC": "( ድምር )"
|
||||
"NAME": "Incoming Messages",
|
||||
"DESC": "( Total )"
|
||||
},
|
||||
"OUTGOING_MESSAGES": {
|
||||
"NAME": "የወጪ መልእክቶች",
|
||||
"DESC": "( ድምር )"
|
||||
"NAME": "Outgoing Messages",
|
||||
"DESC": "( Total )"
|
||||
},
|
||||
"FIRST_RESPONSE_TIME": {
|
||||
"NAME": "First Response Time",
|
||||
"DESC": "( አማካይ )",
|
||||
"DESC": "( Avg )",
|
||||
"INFO_TEXT": "Total number of conversations used for computation:",
|
||||
"TOOLTIP_TEXT": "First Response Time is {metricValue} (based on {conversationCount} conversations)"
|
||||
},
|
||||
"RESOLUTION_TIME": {
|
||||
"NAME": "የመፍትሄ ጊዜ",
|
||||
"DESC": "( አማካይ )",
|
||||
"NAME": "Resolution Time",
|
||||
"DESC": "( Avg )",
|
||||
"INFO_TEXT": "Total number of conversations used for computation:",
|
||||
"TOOLTIP_TEXT": "Resolution Time is {metricValue} (based on {conversationCount} conversations)"
|
||||
},
|
||||
"RESOLUTION_COUNT": {
|
||||
"NAME": "የመፍትሄ ብዛት",
|
||||
"DESC": "( ድምር )"
|
||||
"NAME": "Resolution Count",
|
||||
"DESC": "( Total )"
|
||||
}
|
||||
},
|
||||
"DATE_RANGE": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "ያለፉ 7 ቀናት"
|
||||
"name": "Last 7 days"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "ያለፉ 30 ቀናት"
|
||||
"name": "Last 30 days"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "ያለፉት 3 ወራት"
|
||||
"name": "Last 3 months"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "ያለፉት 6 ወራት"
|
||||
"name": "Last 6 months"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "ያለፈው ዓመት"
|
||||
"name": "Last year"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "በተፈጥሮ የተመረጠ የቀን ክልል"
|
||||
"name": "Custom date range"
|
||||
}
|
||||
],
|
||||
"CUSTOM_DATE_RANGE": {
|
||||
"CONFIRM": "ተግባር አድርግ",
|
||||
"PLACEHOLDER": "የቀን ክልል ይምረጡ"
|
||||
"CONFIRM": "Apply",
|
||||
"PLACEHOLDER": "Select date range"
|
||||
}
|
||||
},
|
||||
"INBOX_REPORTS": {
|
||||
"HEADER": "የኢንቦክስ አጠቃላይ እይታ",
|
||||
"HEADER": "Inbox Overview",
|
||||
"DESCRIPTION": "Quickly view your inbox performance with key metrics like conversations, response times, resolution times, and resolved cases—all in one place. Click an inbox name for more details.",
|
||||
"LOADING_CHART": "የገቢ ግምገማ መረጃ በመጫን ላይ...",
|
||||
"NO_ENOUGH_DATA": "ሪፖርት ለማዘጋጀት በቂ መረጃ አልተደረሰም። እባክዎ በኋላ ይሞክሩ።",
|
||||
"DOWNLOAD_INBOX_REPORTS": "የኢንቦክስ ሪፖርቶችን ይውሰዱ",
|
||||
"LOADING_CHART": "Loading chart data...",
|
||||
"NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.",
|
||||
"DOWNLOAD_INBOX_REPORTS": "Download inbox reports",
|
||||
"FILTER_DROPDOWN_LABEL": "Select Inbox",
|
||||
"ALL_INBOXES": "All Inboxes",
|
||||
"SEARCH_INBOX": "Search Inbox",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "تم إزالة اللغة من البوابة بنجاح",
|
||||
"ERROR_MESSAGE": "غير قادر على إزالة اللغة من البوابة. حاول مرة أخرى."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} article | {count} articles",
|
||||
"CATEGORIES_COUNT": "{count} category | {count} categories",
|
||||
"DEFAULT": "افتراضي",
|
||||
"DRAFT": "مسودة",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "Make default",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "حذف"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "حدد اللغة..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "الحالة",
|
||||
"OPTIONS": {
|
||||
"LIVE": "نُشرت",
|
||||
"DRAFT": "مسودة"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "تمت إضافة اللغة بنجاح",
|
||||
"ERROR_MESSAGE": "غير قادر على إضافة اللغة . حاول مرة أخرى."
|
||||
|
||||
@@ -715,7 +715,7 @@
|
||||
},
|
||||
"ALLOW_MOBILE_WEBVIEW": {
|
||||
"LABEL": "Enable widget in mobile apps",
|
||||
"SUBTITLE": "حدد هذا الخيار إذا كنت تقوم بتضمين الأداة في تطبيقات iOS أو Android. لا ترسل تطبيقات الجوال معلومات النطاق، لذا سيتم حظرها بسبب قيود النطاق ما لم يتم تفعيل هذا الخيار."
|
||||
"SUBTITLE": "Check this if you embed the widget in iOS or Android apps. Mobile apps don't send domain information, so they would be blocked by domain restrictions unless this is enabled."
|
||||
},
|
||||
"IDENTITY_VALIDATION": {
|
||||
"TITLE": "Identity Validation",
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
},
|
||||
"HELP_TEXT": {
|
||||
"TITLE": "استخدام تكامل Slack",
|
||||
"BODY": "باستخدام هذا التكامل، ستتم مزامنة جميع محادثاتك الواردة مع قناة ***{selectedChannelName}*** في مساحة عمل Slack الخاصة بك. يمكنك إدارة جميع محادثات عملائك مباشرة من داخل القناة ولن تفوّت أي رسالة.\n\nفيما يلي الميزات الرئيسية لهذا التكامل:\n\n**الرد على المحادثات من داخل Slack:** للرد على محادثة في قناة Slack ***{selectedChannelName}***، ما عليك سوى كتابة رسالتك وإرسالها كسلسلة رسائل. سيؤدي ذلك إلى إنشاء رد للعميل عبر Chatwoot. الأمر بهذه البساطة!\n\n **إنشاء ملاحظات خاصة:** إذا كنت تريد إنشاء ملاحظات خاصة بدلاً من الردود، فابدأ رسالتك بـ ***`note:`***. يضمن ذلك بقاء رسالتك خاصة وعدم ظهورها للعميل.\n\n**ربط ملف وكيل:** إذا كان الشخص الذي ردّ في Slack لديه ملف وكيل في Chatwoot تحت البريد الإلكتروني نفسه، فسيتم ربط الردود تلقائيًا بذلك الملف. وهذا يعني أنه يمكنك بسهولة تتبع من قال ماذا ومتى. من ناحية أخرى، إذا لم يكن لدى الشخص الذي ردّ ملف وكيل مرتبط، فستظهر الردود للعميل على أنها صادرة من ملف البوت.",
|
||||
"BODY": "With this integration, all of your incoming conversations will be synced to the ***{selectedChannelName}*** channel in your Slack workspace. You can manage all your customer conversations right within the channel and never miss a message.\n\nHere are the main features of the integration:\n\n**Respond to conversations from within Slack:** To respond to a conversation in the ***{selectedChannelName}*** Slack channel, simply type out your message and send it as a thread. This will create a response back to the customer through Chatwoot. It's that simple!\n\n **Create private notes:** If you want to create private notes instead of replies, start your message with ***`note:`***. This ensures that your message is kept private and won't be visible to the customer.\n\n**Associate an agent profile:** If the person who replied on Slack has an agent profile in Chatwoot under the same email, the replies will be associated with that agent profile automatically. This means you can easily track who said what and when. On the other hand, when the replier doesn't have an associated agent profile, the replies will appear from the bot profile to the customer.",
|
||||
"SELECTED": "selected"
|
||||
},
|
||||
"SELECT_CHANNEL": {
|
||||
@@ -390,72 +390,72 @@
|
||||
},
|
||||
"CAPTAIN": {
|
||||
"NAME": "قائد",
|
||||
"HEADER_KNOW_MORE": "اعرف المزيد",
|
||||
"HEADER_KNOW_MORE": "Know more",
|
||||
"ASSISTANT_SWITCHER": {
|
||||
"ASSISTANTS": "المساعدون",
|
||||
"SWITCH_ASSISTANT": "التبديل بين المساعدين",
|
||||
"NEW_ASSISTANT": "إنشاء مساعد",
|
||||
"EMPTY_LIST": "لم يتم العثور على مساعدين، يرجى إنشاء واحد للبدء"
|
||||
"ASSISTANTS": "Assistants",
|
||||
"SWITCH_ASSISTANT": "Switch between assistants",
|
||||
"NEW_ASSISTANT": "Create Assistant",
|
||||
"EMPTY_LIST": "No assistants found, please create one to get started"
|
||||
},
|
||||
"COPILOT": {
|
||||
"TITLE": "Copilot",
|
||||
"TRY_THESE_PROMPTS": "Try these prompts",
|
||||
"PANEL_TITLE": "ابدأ مع Copilot",
|
||||
"KICK_OFF_MESSAGE": "هل تحتاج إلى ملخص سريع، ترغب في مراجعة المحادثات السابقة، أو صياغة رد أفضل؟ Copilot هنا لتسريع الأمور.",
|
||||
"PANEL_TITLE": "Get started with Copilot",
|
||||
"KICK_OFF_MESSAGE": "Need a quick summary, want to check past conversations, or draft a better reply? Copilot’s here to speed things up.",
|
||||
"SEND_MESSAGE": "إرسال الرسالة...",
|
||||
"EMPTY_MESSAGE": "حدث خطأ أثناء توليد الاستجابة. يرجى المحاولة مرة أخرى.",
|
||||
"LOADER": "يقوم Captain بالتفكير",
|
||||
"EMPTY_MESSAGE": "There was an error generating the response. Please try again.",
|
||||
"LOADER": "Captain is thinking",
|
||||
"YOU": "أنت",
|
||||
"USE": "استخدام هذا",
|
||||
"RESET": "إعادة تعيين",
|
||||
"SHOW_STEPS": "عرض الخطوات",
|
||||
"SELECT_ASSISTANT": "اختر المساعد",
|
||||
"USE": "Use this",
|
||||
"RESET": "Reset",
|
||||
"SHOW_STEPS": "Show steps",
|
||||
"SELECT_ASSISTANT": "Select Assistant",
|
||||
"PROMPTS": {
|
||||
"SUMMARIZE": {
|
||||
"LABEL": "لخص هذه المحادثة",
|
||||
"CONTENT": "لخص النقاط الرئيسية التي نوقشت بين العميل ووكيل الدعم، بما في ذلك مخاوف العميل، أسئلته، والحلول أو الردود المقدمة من الوكيل."
|
||||
"LABEL": "Summarize this conversation",
|
||||
"CONTENT": "Summarize the key points discussed between the customer and the support agent, including the customer's concerns, questions, and the solutions or responses provided by the support agent"
|
||||
},
|
||||
"SUGGEST": {
|
||||
"LABEL": "اقترح إجابة",
|
||||
"CONTENT": "حلل استفسار العميل وقم بصياغة رد يعالج مخاوفه أو أسئلته بفعالية. تأكد من أن الرد واضح، موجز، ويوفر معلومات مفيدة."
|
||||
"LABEL": "Suggest an answer",
|
||||
"CONTENT": "Analyze the customer's inquiry, and draft a response that effectively addresses their concerns or questions. Ensure the reply is clear, concise, and provides helpful information."
|
||||
},
|
||||
"RATE": {
|
||||
"LABEL": "قم بتقييم هذه المحادثة",
|
||||
"CONTENT": "راجع المحادثة لترى مدى تلبيتها لاحتياجات العميل. شارك تقييمًا من 5 بناءً على النغمة، الوضوح، والفعالية."
|
||||
"LABEL": "Rate this conversation",
|
||||
"CONTENT": "Review the conversation to see how well it meets the customer's needs. Share a rating out of 5 based on tone, clarity, and effectiveness."
|
||||
},
|
||||
"HIGH_PRIORITY": {
|
||||
"LABEL": "المحادثات ذات الأولوية العالية",
|
||||
"CONTENT": "اعطني ملخصًا لجميع المحادثات المفتوحة ذات الأولوية العالية. تضمّن معرف المحادثة، اسم العميل (إن وُجد)، محتوى آخر رسالة، والوكيل المعين. قم بالتجميع حسب الحالة إذا كان ذلك مناسبًا."
|
||||
"LABEL": "High priority conversations",
|
||||
"CONTENT": "Give me a summary of all high priority open conversations. Include the conversation ID, customer name (if available), last message content, and assigned agent. Group by status if relevant."
|
||||
},
|
||||
"LIST_CONTACTS": {
|
||||
"LABEL": "قائمة جهات الاتصال",
|
||||
"CONTENT": "اعرض لي قائمة بأفضل 10 جهات اتصال. تضمّن الاسم، البريد الإلكتروني أو رقم الهاتف (إن وُجد)، آخر وقت مشاهدة، العلامات (إن وجدت)."
|
||||
"LABEL": "List contacts",
|
||||
"CONTENT": "Show me the list of top 10 contacts. Include name, email or phone number (if available), last seen time, tags (if any)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"PLAYGROUND": {
|
||||
"USER": "أنت",
|
||||
"ASSISTANT": "مساعد",
|
||||
"ASSISTANT": "Assistant",
|
||||
"MESSAGE_PLACEHOLDER": "أكتب رسالتك...",
|
||||
"HEADER": "ساحة اللعب",
|
||||
"DESCRIPTION": "استخدم هذه الساحة لإرسال رسائل إلى مساعدك والتحقق مما إذا كان يرد بدقة وسرعة وبالنغمة التي تتوقعها.",
|
||||
"CREDIT_NOTE": "الرسائل المرسلة هنا ستُحتسب ضمن رصيد Captain الخاص بك."
|
||||
"HEADER": "Playground",
|
||||
"DESCRIPTION": "Use this playground to send messages to your assistant and check if it responds accurately, quickly, and in the tone you expect.",
|
||||
"CREDIT_NOTE": "Messages sent here will count toward your Captain credits."
|
||||
},
|
||||
"PAYWALL": {
|
||||
"TITLE": "قم بالترقية لاستخدام Captain AI",
|
||||
"AVAILABLE_ON": "Captain غير متاح على الخطة المجانية.",
|
||||
"UPGRADE_PROMPT": "قم بترقية خطتك للحصول على الوصول إلى مساعدينا، وcopilot، والمزيد.",
|
||||
"TITLE": "Upgrade to use Captain AI",
|
||||
"AVAILABLE_ON": "Captain is not available on the free plan.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"UPGRADE_NOW": "Upgrade now",
|
||||
"CANCEL_ANYTIME": "You can change or cancel your plan anytime"
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "ولا يتوفر الكابتن AI إلا في خطط المؤسسة.",
|
||||
"UPGRADE_PROMPT": "قم بترقية خطتك للحصول على الوصول إلى مساعدينا، وcopilot، والمزيد.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"ASK_ADMIN": "Please reach out to your administrator for the upgrade."
|
||||
},
|
||||
"BANNER": {
|
||||
"RESPONSES": "لقد استخدمت أكثر من 80٪ من حد الاستجابات الخاص بك. للاستمرار في استخدام Captain AI، يرجى الترقية.",
|
||||
"DOCUMENTS": "تم الوصول إلى حد المستندات. قم بالترقية للاستمرار في استخدام Captain AI."
|
||||
"RESPONSES": "You've used over 80% of your response limit. To continue using Captain AI, please upgrade.",
|
||||
"DOCUMENTS": "Document limit reached. Upgrade to continue using Captain AI."
|
||||
},
|
||||
"FORM": {
|
||||
"CANCEL": "إلغاء",
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Documents",
|
||||
"ADD_NEW": "Create a new document",
|
||||
"SELECTED": "{count} selected",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Unselect all ({count})",
|
||||
"BULK_DELETE_BUTTON": "حذف",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete all",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Related FAQs",
|
||||
"DESCRIPTION": "These FAQs are generated directly from the document."
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Tools",
|
||||
"ADD_NEW": "Create a new tool",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "No custom tools available",
|
||||
"SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Failed to delete custom tool"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "الوصف",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "Dil portaldan uğurla silindi",
|
||||
"ERROR_MESSAGE": "Dili portaldan silmək mümkün olmadı. Yenidən cəhd edin."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} article | {count} articles",
|
||||
"CATEGORIES_COUNT": "{count} category | {count} categories",
|
||||
"DEFAULT": "Default",
|
||||
"DRAFT": "Qaralama",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "Make default",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "Delete"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "Select locale..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "Status",
|
||||
"OPTIONS": {
|
||||
"LIVE": "Yayımlanıb",
|
||||
"DRAFT": "Qaralama"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale added successfully",
|
||||
"ERROR_MESSAGE": "Unable to add locale. Try again."
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
"SHOPIFY": {
|
||||
"HEADER": "Shopify",
|
||||
"DELETE": {
|
||||
"TITLE": "Shopify İnteqrasiyasını Sil",
|
||||
"MESSAGE": "Shopify inteqrasiyasını silmək istədiyinizə əminsiniz?"
|
||||
"TITLE": "Delete Shopify Integration",
|
||||
"MESSAGE": "Are you sure you want to delete the Shopify integration?"
|
||||
},
|
||||
"STORE_URL": {
|
||||
"TITLE": "Shopify Mağazasını Bağla",
|
||||
"LABEL": "Mağaza URL-i",
|
||||
"TITLE": "Connect Shopify Store",
|
||||
"LABEL": "Store URL",
|
||||
"PLACEHOLDER": "your-store.myshopify.com",
|
||||
"HELP": "Shopify mağazanızın myshopify.com URL-ni daxil edin",
|
||||
"HELP": "Enter your Shopify store's myshopify.com URL",
|
||||
"CANCEL": "Ləğv et",
|
||||
"SUBMIT": "Mağazanı Bağla"
|
||||
"SUBMIT": "Connect Store"
|
||||
},
|
||||
"ERROR": "Shopify-a qoşularkən xəta baş verdi. Zəhmət olmasa yenidən cəhd edin və ya problem davam edərsə dəstək xidməti ilə əlaqə saxlayın."
|
||||
"ERROR": "There was an error connecting to Shopify. Please try again or contact support if the issue persists."
|
||||
},
|
||||
"HEADER": "İnteqrasiyalar",
|
||||
"DESCRIPTION": "Chatwoot komandamızın səmərəliliyini artırmaq üçün bir neçə alət və xidmətlə inteqrasiya olunur. Sevdiyiniz tətbiqləri konfiqurasiya etmək üçün aşağıdakı siyahını araşdırın.",
|
||||
@@ -126,7 +126,7 @@
|
||||
},
|
||||
"HELP_TEXT": {
|
||||
"TITLE": "Slack inteqrasiyasından necə istifadə etmək olar?",
|
||||
"BODY": "Bu inteqrasiya ilə bütün gələn söhbətləriniz Slack iş sahənizdəki ***{selectedChannelName}*** kanalına sinxronlaşdırılacaq. Müştəri söhbətlərinizə birbaşa həmin kanalda nəzarət edə və heç bir mesajı qaçırmazsınız.\n\nİnteqrasiyanın əsas xüsusiyyətləri bunlardır:\n\n**Slack daxilində söhbətlərə cavab verin:** ***{selectedChannelName}*** Slack kanalında söhbətə cavab vermək üçün sadəcə mesajınızı yazıb thread kimi göndərin. Bu, Chatwoot vasitəsilə müştəriyə cavab göndərəcək. Çox sadədir!\n\n**Şəxsi qeydlər yaradın:** Əgər cavab əvəzinə şəxsi qeyd əlavə etmək istəyirsinizsə, mesajınıza ***`note:`*** ilə başlayın. Bu halda mesajınız şəxsi qalacaq və müştəriyə görünməyəcək.\n\n**Agent profilini əlaqələndirin:** Əgər Slack-də cavab verən şəxsin Chatwoot-da eyni e-poçt ünvanı ilə agent profili varsa, cavablar avtomatik olaraq həmin agent profili ilə əlaqələndiriləcək. Bu, kim nə vaxt nə yazıb asanlıqla izləməyə imkan verir. Əks halda, agent profili əlaqələndirilməyibsə, cavablar müştəriyə bot profili adından göndəriləcək.",
|
||||
"BODY": "With this integration, all of your incoming conversations will be synced to the ***{selectedChannelName}*** channel in your Slack workspace. You can manage all your customer conversations right within the channel and never miss a message.\n\nHere are the main features of the integration:\n\n**Respond to conversations from within Slack:** To respond to a conversation in the ***{selectedChannelName}*** Slack channel, simply type out your message and send it as a thread. This will create a response back to the customer through Chatwoot. It's that simple!\n\n **Create private notes:** If you want to create private notes instead of replies, start your message with ***`note:`***. This ensures that your message is kept private and won't be visible to the customer.\n\n**Associate an agent profile:** If the person who replied on Slack has an agent profile in Chatwoot under the same email, the replies will be associated with that agent profile automatically. This means you can easily track who said what and when. On the other hand, when the replier doesn't have an associated agent profile, the replies will appear from the bot profile to the customer.",
|
||||
"SELECTED": "seçilmiş"
|
||||
},
|
||||
"SELECT_CHANNEL": {
|
||||
@@ -364,400 +364,389 @@
|
||||
"SUCCESS": "Məsələ uğurla bağlantısı kəsildi",
|
||||
"ERROR": "Məsələnin bağlantısını kəsməkdə xəta baş verdi, zəhmət olmasa yenidən cəhd edin"
|
||||
},
|
||||
"NO_LINKED_ISSUES": "Bağlı məsələ tapılmadı",
|
||||
"NO_LINKED_ISSUES": "No linked issues found",
|
||||
"DELETE": {
|
||||
"TITLE": "İnteqrasiyanı silmək istədiyinizə əminsiniz?",
|
||||
"MESSAGE": "İnteqrasiyanı silmək istədiyinizə əminsiniz?",
|
||||
"CONFIRM": "Bəli, sil",
|
||||
"TITLE": "Are you sure you want to delete the integration?",
|
||||
"MESSAGE": "Are you sure you want to delete the integration?",
|
||||
"CONFIRM": "Yes, delete",
|
||||
"CANCEL": "Ləğv et"
|
||||
},
|
||||
"CTA": {
|
||||
"TITLE": "Linear-a qoşul",
|
||||
"AGENT_DESCRIPTION": "Linear iş sahəsi qoşulmayıb. Bu inteqrasiyadan istifadə etmək üçün administratorunuzdan bir iş sahəsi qoşmasını xahiş edin.",
|
||||
"DESCRIPTION": "Linear iş sahəsi qoşulmayıb. Bu inteqrasiyadan istifadə etmək üçün iş sahənizi qoşmaq məqsədilə aşağıdakı düyməyə klikləyin.",
|
||||
"BUTTON_TEXT": "Linear iş sahəsini qoşun"
|
||||
"TITLE": "Connect to Linear",
|
||||
"AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.",
|
||||
"DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.",
|
||||
"BUTTON_TEXT": "Connect Linear workspace"
|
||||
}
|
||||
},
|
||||
"NOTION": {
|
||||
"HEADER": "Notion",
|
||||
"DELETE": {
|
||||
"TITLE": "Notion inteqrasiyasını silmək istədiyinizə əminsiniz?",
|
||||
"TITLE": "Are you sure you want to delete the Notion integration?",
|
||||
"MESSAGE": "Bu inteqrasiyanı silmək Notion iş sahənizə girişinizi itirəcək və bütün əlaqəli funksionallığı dayandıracaq.",
|
||||
"CONFIRM": "Bəli, sil",
|
||||
"CONFIRM": "Yes, delete",
|
||||
"CANCEL": "Ləğv et"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CAPTAIN": {
|
||||
"NAME": "Captain",
|
||||
"HEADER_KNOW_MORE": "Daha ətraflı",
|
||||
"NAME": "Kapitan",
|
||||
"HEADER_KNOW_MORE": "Daha çox məlumat",
|
||||
"ASSISTANT_SWITCHER": {
|
||||
"ASSISTANTS": "Köməkçilər",
|
||||
"SWITCH_ASSISTANT": "Köməkçilər arasında keçid edin",
|
||||
"ASSISTANTS": "Assistants",
|
||||
"SWITCH_ASSISTANT": "Switch between assistants",
|
||||
"NEW_ASSISTANT": "Köməkçi yaradın",
|
||||
"EMPTY_LIST": "Assistent tapılmadı, başlamaq üçün birini yaradın"
|
||||
"EMPTY_LIST": "No assistants found, please create one to get started"
|
||||
},
|
||||
"COPILOT": {
|
||||
"TITLE": "Copilot",
|
||||
"TRY_THESE_PROMPTS": "Bu təklifləri yoxlayın",
|
||||
"PANEL_TITLE": "Copilot ilə başlayın",
|
||||
"KICK_OFF_MESSAGE": "Qısa xülasəyə ehtiyacınız var, əvvəlki söhbətlərə baxmaq istəyirsiniz, yoxsa daha yaxşı cavab hazırlamaq istəyirsiniz? Copilot işləri sürətləndirmək üçün buradadır.",
|
||||
"SEND_MESSAGE": "Mesaj göndərin...",
|
||||
"EMPTY_MESSAGE": "Cavab yaradılarkən xəta baş verdi. Zəhmət olmasa yenidən cəhd edin.",
|
||||
"TRY_THESE_PROMPTS": "Bu təklifləri sınayın",
|
||||
"PANEL_TITLE": "Get started with Copilot",
|
||||
"KICK_OFF_MESSAGE": "Need a quick summary, want to check past conversations, or draft a better reply? Copilot’s here to speed things up.",
|
||||
"SEND_MESSAGE": "Mesaj göndər...",
|
||||
"EMPTY_MESSAGE": "There was an error generating the response. Please try again.",
|
||||
"LOADER": "Captain düşünür",
|
||||
"YOU": "Siz",
|
||||
"USE": "Bunu istifadə et",
|
||||
"RESET": "Sıfırla",
|
||||
"RESET": "Reset",
|
||||
"SHOW_STEPS": "Addımları göstər",
|
||||
"SELECT_ASSISTANT": "Köməkçini seçin",
|
||||
"SELECT_ASSISTANT": "Select Assistant",
|
||||
"PROMPTS": {
|
||||
"SUMMARIZE": {
|
||||
"LABEL": "Bu söhbəti xülasə et",
|
||||
"CONTENT": "Müştəri və dəstək agenti arasında müzakirə olunan əsas məqamları xülasə et, müştərinin narahatlıqları, sualları və agentin verdiyi həll və ya cavabları daxil et"
|
||||
"LABEL": "Summarize this conversation",
|
||||
"CONTENT": "Müştəri ilə dəstək agenti arasında müzakirə olunan əsas məqamları ümumiləşdirin, o cümlədən müştərinin narahatlıqları, sualları və dəstək agentinin təqdim etdiyi həllər və ya cavablar"
|
||||
},
|
||||
"SUGGEST": {
|
||||
"LABEL": "Cavab təklif et",
|
||||
"CONTENT": "Müştərinin sorğusunu analiz et və onların narahatlıqlarını və ya suallarını effektiv şəkildə cavablandıran bir cavab hazırla. Cavabın aydın, qısa və faydalı məlumat verdiyinə əmin ol."
|
||||
"LABEL": "Cavab təklif edin",
|
||||
"CONTENT": "Müştərinin sorğusunu təhlil edin və narahatlıqlarını və ya suallarını effektiv şəkildə əhatə edən cavab layihələndirin. Cavabın aydın, qısa və faydalı məlumat verdiyinə əmin olun."
|
||||
},
|
||||
"RATE": {
|
||||
"LABEL": "Bu söhbəti qiymətləndir",
|
||||
"CONTENT": "Söhbəti nəzərdən keçir və müştərinin ehtiyaclarını nə dərəcədə qarşıladığını yoxla. Ton, aydınlıq və effektivliyə əsaslanaraq 5 üzərindən qiymət ver."
|
||||
"LABEL": "Rate this conversation",
|
||||
"CONTENT": "Müştərinin ehtiyaclarını nə dərəcədə qarşıladığını görmək üçün söhbəti nəzərdən keçirin. Ton, aydınlıq və effektivlik əsasında 5 ballıq qiymətləndirmə paylaşın."
|
||||
},
|
||||
"HIGH_PRIORITY": {
|
||||
"LABEL": "Yüksək prioritetli söhbətlər",
|
||||
"CONTENT": "Bütün yüksək prioritetli açıq söhbətlərin xülasəsini ver. Söhbət ID-si, müştərinin adı (əgər varsa), son mesajın məzmunu və təyin olunmuş agenti daxil et. Əgər uyğun olarsa, statusa görə qrupla."
|
||||
"LABEL": "High priority conversations",
|
||||
"CONTENT": "Give me a summary of all high priority open conversations. Include the conversation ID, customer name (if available), last message content, and assigned agent. Group by status if relevant."
|
||||
},
|
||||
"LIST_CONTACTS": {
|
||||
"LABEL": "Əlaqələri siyahıla",
|
||||
"CONTENT": "Ən yaxşı 10 əlaqənin siyahısını göstər. Ad, e-poçt və ya telefon nömrəsi (əgər varsa), son görülmə vaxtı, etiketlər (əgər varsa) daxil et."
|
||||
"LABEL": "List contacts",
|
||||
"CONTENT": "Mənə ən yaxşı 10 əlaqə siyahısını göstərin. Ad, e-poçt və ya telefon nömrəsi (mövcuddursa), son görülmə vaxtı, etiketlər (əgər varsa) daxil edin."
|
||||
}
|
||||
}
|
||||
},
|
||||
"PLAYGROUND": {
|
||||
"USER": "Siz",
|
||||
"ASSISTANT": "Assistent",
|
||||
"MESSAGE_PLACEHOLDER": "Mesajınızı yazın...",
|
||||
"HEADER": "Sınaq sahəsi",
|
||||
"DESCRIPTION": "Bu sınaq sahəsində köməkçinizə mesaj göndərin və cavabların dəqiq, sürətli və istədiyiniz tonda olub-olmadığını yoxlayın.",
|
||||
"CREDIT_NOTE": "Burada göndərilən mesajlar Captain kreditlərinizdən çıxılacaq."
|
||||
"ASSISTANT": "Köməkçi",
|
||||
"MESSAGE_PLACEHOLDER": "Type your message...",
|
||||
"HEADER": "Oyun Sahəsi",
|
||||
"DESCRIPTION": "Bu meydançadan köməkçinizə mesajlar göndərmək və onun dəqiq, sürətli və gözlədiyiniz tonda cavab verib-vermədiyini yoxlamaq üçün istifadə edin.",
|
||||
"CREDIT_NOTE": "Messages sent here will count toward your Captain credits."
|
||||
},
|
||||
"PAYWALL": {
|
||||
"TITLE": "Captain AI istifadə etmək üçün yüksəldin",
|
||||
"AVAILABLE_ON": "Captain pulsuz planda mövcud deyil.",
|
||||
"UPGRADE_PROMPT": "Assistentlərimizə, copilot və daha çoxuna çıxış əldə etmək üçün planınızı yüksəldin.",
|
||||
"UPGRADE_NOW": "İndi yüksəlt",
|
||||
"CANCEL_ANYTIME": "Planınızı istənilən vaxt dəyişə və ya ləğv edə bilərsiniz"
|
||||
"TITLE": "Upgrade to use Captain AI",
|
||||
"AVAILABLE_ON": "Captain is not available on the free plan.",
|
||||
"UPGRADE_PROMPT": "Köməkçilərimizə, copilot və daha çoxuna giriş üçün planınızı yüksəldin.",
|
||||
"UPGRADE_NOW": "Upgrade now",
|
||||
"CANCEL_ANYTIME": "You can change or cancel your plan anytime"
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "Captain AI yalnız Enterprise planlarında mövcuddur.",
|
||||
"UPGRADE_PROMPT": "Assistentlərimizə, copilot və daha çoxuna çıxış əldə etmək üçün planınızı yüksəldin.",
|
||||
"ASK_ADMIN": "Təkmilləşdirmə üçün administratorunuzla əlaqə saxlayın."
|
||||
"AVAILABLE_ON": "Captain AI is only available in the Enterprise plans.",
|
||||
"UPGRADE_PROMPT": "Köməkçilərimizə, copilot və daha çoxuna giriş üçün planınızı yüksəldin.",
|
||||
"ASK_ADMIN": "Please reach out to your administrator for the upgrade."
|
||||
},
|
||||
"BANNER": {
|
||||
"RESPONSES": "Cavab limitinizin 80%-dən çoxunu istifadə etmisiniz. Captain AI-dan istifadə etməyə davam etmək üçün zəhmət olmasa tarifinizi yüksəldin.",
|
||||
"DOCUMENTS": "Sənəd limiti çatdı. Captain AI-dan istifadəni davam etdirmək üçün yüksəldin."
|
||||
"RESPONSES": "You've used over 80% of your response limit. To continue using Captain AI, please upgrade.",
|
||||
"DOCUMENTS": "Document limit reached. Upgrade to continue using Captain AI."
|
||||
},
|
||||
"FORM": {
|
||||
"CANCEL": "Ləğv et",
|
||||
"CREATE": "Yarat",
|
||||
"CREATE": "Create",
|
||||
"EDIT": "Yenilə"
|
||||
},
|
||||
"ASSISTANTS": {
|
||||
"HEADER": "Köməkçilər",
|
||||
"NO_ASSISTANTS_AVAILABLE": "Hesabınızda heç bir köməkçi yoxdur.",
|
||||
"HEADER": "Assistants",
|
||||
"NO_ASSISTANTS_AVAILABLE": "There are no assistants available in your account.",
|
||||
"ADD_NEW": "Yeni köməkçi yaradın",
|
||||
"DELETE": {
|
||||
"TITLE": "Assistent silinsin?",
|
||||
"DESCRIPTION": "Bu əməliyyat geri qaytarıla bilməz. Bu assistenti silmək onu bütün bağlı poçt qutularından siləcək və yaradılmış bütün bilikləri daimi olaraq siləcək.",
|
||||
"CONFIRM": "Bəli, sil",
|
||||
"SUCCESS_MESSAGE": "Assistent uğurla silindi",
|
||||
"ERROR_MESSAGE": "Köməkçi silinərkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin."
|
||||
"TITLE": "Are you sure to delete the assistant?",
|
||||
"DESCRIPTION": "Bu əməliyyat geri dönməzdir. Bu köməkçi silindikdə, o, bütün əlaqəli qutulardan silinəcək və yaradılmış bütün biliklər daimi olaraq silinəcək.",
|
||||
"CONFIRM": "Yes, delete",
|
||||
"SUCCESS_MESSAGE": "The assistant has been successfully deleted",
|
||||
"ERROR_MESSAGE": "There was an error deleting the assistant, please try again."
|
||||
},
|
||||
"FORM_DESCRIPTION": "Aşağıdakı detalları doldurun: assistentinizin adını, məqsədini və dəstək verəcəyi məhsulu qeyd edin.",
|
||||
"FORM_DESCRIPTION": "Fill out the details below to name your assistant, describe its purpose, and specify the product it will support.",
|
||||
"CREATE": {
|
||||
"TITLE": "Assistent yarat",
|
||||
"SUCCESS_MESSAGE": "Assistent uğurla yaradıldı",
|
||||
"ERROR_MESSAGE": "Köməkçi yaradılarkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin."
|
||||
"TITLE": "Köməkçi yaradın",
|
||||
"SUCCESS_MESSAGE": "Köməkçi uğurla yaradıldı",
|
||||
"ERROR_MESSAGE": "There was an error creating the assistant, please try again."
|
||||
},
|
||||
"FORM": {
|
||||
"UPDATE": "Yenilə",
|
||||
"SECTIONS": {
|
||||
"BASIC_INFO": "Əsas Məlumat",
|
||||
"SYSTEM_MESSAGES": "Sistem Mesajları",
|
||||
"INSTRUCTIONS": "Təlimatlar",
|
||||
"SYSTEM_MESSAGES": "System Messages",
|
||||
"INSTRUCTIONS": "Instructions",
|
||||
"FEATURES": "Xüsusiyyətlər",
|
||||
"TOOLS": "Alətlər"
|
||||
"TOOLS": "Alətlər "
|
||||
},
|
||||
"NAME": {
|
||||
"LABEL": "Ad",
|
||||
"PLACEHOLDER": "Assistent adını daxil edin",
|
||||
"PLACEHOLDER": "Köməkçi adını daxil edin",
|
||||
"ERROR": "Ad tələb olunur"
|
||||
},
|
||||
"TEMPERATURE": {
|
||||
"LABEL": "Cavab Temperaturu",
|
||||
"DESCRIPTION": "Assistentin cavablarının nə qədər yaradıcı və ya məhdud olacağını tənzimləyin. Aşağı dəyərlər daha fokuslanmış və deterministik cavablar verir, yüksək dəyərlər isə daha yaradıcı və müxtəlif nəticələr verir."
|
||||
"LABEL": "Cavabın Temperaturu",
|
||||
"DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs."
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Təsvir",
|
||||
"PLACEHOLDER": "Assistent təsvirini daxil edin",
|
||||
"PLACEHOLDER": "Enter assistant description",
|
||||
"ERROR": "Təsvir tələb olunur"
|
||||
},
|
||||
"PRODUCT_NAME": {
|
||||
"LABEL": "Məhsulun Adı",
|
||||
"LABEL": "Product Name",
|
||||
"PLACEHOLDER": "Məhsul adını daxil edin",
|
||||
"ERROR": "Məhsulun adı tələb olunur"
|
||||
"ERROR": "The product name is required"
|
||||
},
|
||||
"WELCOME_MESSAGE": {
|
||||
"LABEL": "Salamlaşma Mesajı",
|
||||
"PLACEHOLDER": "Salamlaşma mesajını daxil edin"
|
||||
"LABEL": "Welcome Message",
|
||||
"PLACEHOLDER": "Enter welcome message"
|
||||
},
|
||||
"HANDOFF_MESSAGE": {
|
||||
"LABEL": "Transfer Mesajı",
|
||||
"PLACEHOLDER": "Transfer mesajını daxil edin"
|
||||
"LABEL": "Handoff Message",
|
||||
"PLACEHOLDER": "Enter handoff message"
|
||||
},
|
||||
"RESOLUTION_MESSAGE": {
|
||||
"LABEL": "Həll mesajı",
|
||||
"PLACEHOLDER": "Həll mesajını daxil edin"
|
||||
"LABEL": "Resolution Message",
|
||||
"PLACEHOLDER": "Enter resolution message"
|
||||
},
|
||||
"INSTRUCTIONS": {
|
||||
"LABEL": "Təlimatlar",
|
||||
"PLACEHOLDER": "Assistent üçün təlimatları daxil edin"
|
||||
"LABEL": "Instructions",
|
||||
"PLACEHOLDER": "Enter instructions for the assistant"
|
||||
},
|
||||
"FEATURES": {
|
||||
"TITLE": "Xüsusiyyətlər",
|
||||
"ALLOW_CONVERSATION_FAQS": "Həll olunmuş söhbətlərdən FAQ yaradın",
|
||||
"ALLOW_MEMORIES": "Müştəri ilə ünsiyyətdən əsas detalları yadda saxla.",
|
||||
"ALLOW_CITATIONS": "Cavablarda mənbə istinadlarını daxil et",
|
||||
"ALLOW_CONTACT_ATTRIBUTES": "Əlaqə məlumatlarına çıxışa icazə ver"
|
||||
"ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations",
|
||||
"ALLOW_MEMORIES": "Müştəri qarşılıqlı əlaqələrindən əsas detalları yaddaş kimi tutun.",
|
||||
"ALLOW_CITATIONS": "Include source citations in responses",
|
||||
"ALLOW_CONTACT_ATTRIBUTES": "Allow access to contact information"
|
||||
}
|
||||
},
|
||||
"EDIT": {
|
||||
"TITLE": "Assistenti yenilə",
|
||||
"SUCCESS_MESSAGE": "Assistent uğurla yeniləndi",
|
||||
"ERROR_MESSAGE": "Köməkçi yenilənərkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin.",
|
||||
"NOT_FOUND": "Köməkçi tapılmadı. Zəhmət olmasa yenidən cəhd edin."
|
||||
"TITLE": "Update the assistant",
|
||||
"SUCCESS_MESSAGE": "The assistant has been successfully updated",
|
||||
"ERROR_MESSAGE": "There was an error updating the assistant, please try again.",
|
||||
"NOT_FOUND": "Could not find the assistant. Please try again."
|
||||
},
|
||||
"SETTINGS": {
|
||||
"HEADER": "Ayarlar",
|
||||
"HEADER": "Parametrlər",
|
||||
"BASIC_SETTINGS": {
|
||||
"TITLE": "Əsas ayarlar",
|
||||
"DESCRIPTION": "Assistentin söhbəti bitirərkən və ya insana ötürərkən nə deyəcəyini fərdiləşdirin."
|
||||
"TITLE": "Basic settings",
|
||||
"DESCRIPTION": "Customize what the assistant says when ending a conversation or transferring to a human."
|
||||
},
|
||||
"SYSTEM_SETTINGS": {
|
||||
"TITLE": "Sistem ayarları",
|
||||
"DESCRIPTION": "Assistentin söhbəti bitirərkən və ya insana ötürərkən nə deyəcəyini fərdiləşdirin."
|
||||
"TITLE": "System settings",
|
||||
"DESCRIPTION": "Customize what the assistant says when ending a conversation or transferring to a human."
|
||||
},
|
||||
"CONTROL_ITEMS": {
|
||||
"TITLE": "Əyləncəli Hissə",
|
||||
"DESCRIPTION": "Assistentə daha çox nəzarət əlavə edin. (vizual olaraq bir hekayə kimi: Sorğu məhdudiyyəti → ssenarilər → nəticə) İstifadəçini bunlardan istifadə etməyə təşviq edir.",
|
||||
"TITLE": "The Fun Stuff",
|
||||
"DESCRIPTION": "Köməkçiyə daha çox nəzarət əlavə edin. (bir az daha vizual, məsələn, hekayə kimi: Sorğu qoruyucusu → ssenarilər → çıxış) İstifadəçini bunlardan istifadə etməyə təşviq edir.",
|
||||
"OPTIONS": {
|
||||
"GUARDRAILS": {
|
||||
"TITLE": "Məhdudiyyətlər",
|
||||
"DESCRIPTION": "Hər şeyin nəzarətdə qalmasını təmin edir—assistentinizin yalnız istədiyiniz suallara cavab verməsini təmin edir, mövzudan kənar və ya icazəsiz heç nə yoxdur."
|
||||
"TITLE": "Guardrails",
|
||||
"DESCRIPTION": "İşləri yolunda saxlayır — yalnız köməkçinizin cavablandırmasını istədiyiniz sual növləri, mövzudan kənar və ya qadağan olunmuş heç nə yoxdur."
|
||||
},
|
||||
"RESPONSE_GUIDELINES": {
|
||||
"TITLE": "Cavab qaydaları",
|
||||
"DESCRIPTION": "Assistentinizin cavablarının tərzi və quruluşu—aydın və dostcasına? Qısa və yığcam? Ətraflı və rəsmi?"
|
||||
"DESCRIPTION": "The vibe and structure of your assistant’s replies—clear and friendly? Short and snappy? Detailed and formal?"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DELETE": {
|
||||
"TITLE": "Assistenti Sil",
|
||||
"DESCRIPTION": "Bu əməliyyat geri qaytarıla bilməz. Bu assistenti silmək onu bütün bağlı poçt qutularından siləcək və yaradılmış bütün bilikləri daimi olaraq siləcək.",
|
||||
"BUTTON_TEXT": "{assistantName} sil"
|
||||
"TITLE": "Delete Assistant",
|
||||
"DESCRIPTION": "Bu əməliyyat geri dönməzdir. Bu köməkçi silindikdə, o, bütün əlaqəli qutulardan silinəcək və yaradılmış bütün biliklər daimi olaraq silinəcək.",
|
||||
"BUTTON_TEXT": "Delete {assistantName}"
|
||||
}
|
||||
},
|
||||
"OPTIONS": {
|
||||
"EDIT_ASSISTANT": "Assistenti redaktə et",
|
||||
"DELETE_ASSISTANT": "Assistenti sil",
|
||||
"VIEW_CONNECTED_INBOXES": "Bağlı poçt qutularına bax"
|
||||
"EDIT_ASSISTANT": "Edit Assistant",
|
||||
"DELETE_ASSISTANT": "Delete Assistant",
|
||||
"VIEW_CONNECTED_INBOXES": "Əlaqəli qutuları göstər"
|
||||
},
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "Assistent yoxdur",
|
||||
"SUBTITLE": "İstifadəçilərinizə sürətli və dəqiq cavablar vermək üçün köməkçi yaradın. O, yardım məqalələrinizdən və əvvəlki söhbətlərdən öyrənə bilər.",
|
||||
"TITLE": "Heç bir köməkçi mövcud deyil",
|
||||
"SUBTITLE": "Create an assistant to provide quick and accurate responses to your users. It can learn from your help articles and past conversations.",
|
||||
"FEATURE_SPOTLIGHT": {
|
||||
"TITLE": "Captain Assistent",
|
||||
"NOTE": "Captain Assistent birbaşa müştərilərlə ünsiyyət qurur, kömək sənədlərinizdən və keçmiş söhbətlərdən öyrənir və dərhal, dəqiq cavablar verir. O, ilkin sorğuları idarə edir və lazım olduqda agentə ötürür."
|
||||
"TITLE": "Captain Assistant",
|
||||
"NOTE": "Captain Assistant engages directly with customers, learns from your help docs and past conversations, and delivers instant, accurate responses. It handles the initial queries, providing quick resolutions before transferring to an agent when needed."
|
||||
}
|
||||
},
|
||||
"GUARDRAILS": {
|
||||
"TITLE": "Məhdudiyyətlər",
|
||||
"DESCRIPTION": "Hər şeyin nəzarətdə qalmasını təmin edir—assistentinizin yalnız istədiyiniz suallara cavab verməsini təmin edir, mövzudan kənar və ya icazəsiz heç nə yoxdur.",
|
||||
"TITLE": "Guardrails",
|
||||
"DESCRIPTION": "İşləri yolunda saxlayır — yalnız köməkçinizin cavablandırmasını istədiyiniz sual növləri, mövzudan kənar və ya qadağan olunmuş heç nə yoxdur.",
|
||||
"BULK_ACTION": {
|
||||
"SELECTED": "{count} element seçildi | {count} element seçildi",
|
||||
"SELECT_ALL": "Hamısını seç ({count})",
|
||||
"UNSELECT_ALL": "Hamısını seçmə ({count})",
|
||||
"BULK_DELETE_BUTTON": "Sil"
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Hamısının seçimini ləğv et ({count})",
|
||||
"BULK_DELETE_BUTTON": "Delete"
|
||||
},
|
||||
"ADD": {
|
||||
"SUGGESTED": {
|
||||
"TITLE": "Məhdudiyyət nümunələri",
|
||||
"TITLE": "Example guardrails",
|
||||
"ADD": "Hamısını əlavə et",
|
||||
"ADD_SINGLE": "Bunu əlavə et",
|
||||
"SAVE": "Əlavə et və yadda saxla (↵)",
|
||||
"PLACEHOLDER": "Başqa bir məhdudiyyət yazın..."
|
||||
"PLACEHOLDER": "Type in another guardrail..."
|
||||
},
|
||||
"NEW": {
|
||||
"TITLE": "Məhdudiyyət əlavə et",
|
||||
"CREATE": "Yarat",
|
||||
"TITLE": "Add a guardrail",
|
||||
"CREATE": "Create",
|
||||
"CANCEL": "Ləğv et",
|
||||
"PLACEHOLDER": "Başqa bir məhdudiyyət yazın...",
|
||||
"TEST_ALL": "Hamısını yoxla"
|
||||
"PLACEHOLDER": "Type in another guardrail...",
|
||||
"TEST_ALL": "Test all"
|
||||
}
|
||||
},
|
||||
"LIST": {
|
||||
"SEARCH_PLACEHOLDER": "Axtar..."
|
||||
"SEARCH_PLACEHOLDER": "Axtarış..."
|
||||
},
|
||||
"EMPTY_MESSAGE": "Məhdudiyyət tapılmadı. Başlamaq üçün yaradın və ya nümunələr əlavə edin.",
|
||||
"SEARCH_EMPTY_MESSAGE": "Axtarış üçün məhdudiyyət tapılmadı.",
|
||||
"EMPTY_MESSAGE": "No guardrails found. Create or add examples to begin.",
|
||||
"SEARCH_EMPTY_MESSAGE": "No guardrails found for this search.",
|
||||
"API": {
|
||||
"ADD": {
|
||||
"SUCCESS": "Məhdudiyyətlər uğurla əlavə olundu",
|
||||
"ERROR": "Məhdudiyyətlər əlavə olunarkən xəta baş verdi, yenidən cəhd edin."
|
||||
"SUCCESS": "Guardrails added successfully",
|
||||
"ERROR": "There was an error adding guardrails, please try again."
|
||||
},
|
||||
"UPDATE": {
|
||||
"SUCCESS": "Məhdudiyyətlər uğurla yeniləndi",
|
||||
"ERROR": "Məhdudiyyətlər yenilənərkən xəta baş verdi, yenidən cəhd edin."
|
||||
"SUCCESS": "Guardrails updated successfully",
|
||||
"ERROR": "There was an error updating guardrails, please try again."
|
||||
},
|
||||
"DELETE": {
|
||||
"SUCCESS": "Məhdudiyyətlər uğurla silindi",
|
||||
"ERROR": "Məhdudiyyətlər silinərkən xəta baş verdi, yenidən cəhd edin."
|
||||
"SUCCESS": "Guardrails deleted successfully",
|
||||
"ERROR": "There was an error deleting guardrails, please try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"RESPONSE_GUIDELINES": {
|
||||
"TITLE": "Cavab qaydaları",
|
||||
"DESCRIPTION": "Assistentinizin cavablarının tərzi və quruluşu—aydın və dostcasına? Qısa və yığcam? Ətraflı və rəsmi?",
|
||||
"TITLE": "Response Guidelines",
|
||||
"DESCRIPTION": "The vibe and structure of your assistant’s replies—clear and friendly? Short and snappy? Detailed and formal?",
|
||||
"BULK_ACTION": {
|
||||
"SELECTED": "{count} element seçildi | {count} element seçildi",
|
||||
"SELECT_ALL": "Hamısını seç ({count})",
|
||||
"UNSELECT_ALL": "Hamısını seçmə ({count})",
|
||||
"BULK_DELETE_BUTTON": "Sil"
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Hamısının seçimini götür ({count})",
|
||||
"BULK_DELETE_BUTTON": "Delete"
|
||||
},
|
||||
"ADD": {
|
||||
"SUGGESTED": {
|
||||
"TITLE": "Cavab qaydası nümunələri",
|
||||
"TITLE": "Nümunə cavab qaydaları",
|
||||
"ADD": "Hamısını əlavə et",
|
||||
"ADD_SINGLE": "Bunu əlavə et",
|
||||
"SAVE": "Əlavə et və yadda saxla (↵)",
|
||||
"PLACEHOLDER": "Başqa bir cavab qaydası yazın..."
|
||||
"PLACEHOLDER": "Başqa cavab qaydasını yazın..."
|
||||
},
|
||||
"NEW": {
|
||||
"TITLE": "Cavab qaydası əlavə et",
|
||||
"CREATE": "Yarat",
|
||||
"CREATE": "Create",
|
||||
"CANCEL": "Ləğv et",
|
||||
"PLACEHOLDER": "Başqa bir cavab qaydası yazın...",
|
||||
"TEST_ALL": "Hamısını yoxla"
|
||||
"PLACEHOLDER": "Başqa cavab qaydasını yazın...",
|
||||
"TEST_ALL": "Test all"
|
||||
}
|
||||
},
|
||||
"LIST": {
|
||||
"SEARCH_PLACEHOLDER": "Axtar..."
|
||||
},
|
||||
"EMPTY_MESSAGE": "Cavab qaydası tapılmadı. Başlamaq üçün yaradın və ya nümunələr əlavə edin.",
|
||||
"SEARCH_EMPTY_MESSAGE": "Axtarış üçün cavab qaydası tapılmadı.",
|
||||
"EMPTY_MESSAGE": "No response guidelines found. Create or add examples to begin.",
|
||||
"SEARCH_EMPTY_MESSAGE": "No response guidelines found for this search.",
|
||||
"API": {
|
||||
"ADD": {
|
||||
"SUCCESS": "Cavab qaydaları uğurla əlavə olundu",
|
||||
"ERROR": "Cavab qaydaları əlavə olunarkən xəta baş verdi, yenidən cəhd edin."
|
||||
"SUCCESS": "Cavab qaydaları uğurla əlavə edildi",
|
||||
"ERROR": "There was an error adding response guidelines, please try again."
|
||||
},
|
||||
"UPDATE": {
|
||||
"SUCCESS": "Cavab qaydaları uğurla yeniləndi",
|
||||
"ERROR": "Cavab qaydaları yenilənərkən xəta baş verdi, yenidən cəhd edin."
|
||||
"SUCCESS": "Response Guidelines updated successfully",
|
||||
"ERROR": "There was an error updating response guidelines, please try again."
|
||||
},
|
||||
"DELETE": {
|
||||
"SUCCESS": "Cavab qaydaları uğurla silindi",
|
||||
"ERROR": "Cavab qaydaları silinərkən xəta baş verdi, yenidən cəhd edin."
|
||||
"SUCCESS": "Response Guidelines deleted successfully",
|
||||
"ERROR": "There was an error deleting response guidelines, please try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"SCENARIOS": {
|
||||
"TITLE": "Ssenarilər",
|
||||
"DESCRIPTION": "Assistentinizə bir az kontekst verin—məsələn, “istifadəçi ilişibsə nə etməli”, ya da “geri qaytarma sorğusu zamanı necə davranmalı.”",
|
||||
"TITLE": "Scenarios",
|
||||
"DESCRIPTION": "Köməkçinizə müəyyən kontekst verin — məsələn, “istifadəçi qaldıqda nə etməli” və ya “geri ödəmə tələbi zamanı necə davranmalı.”",
|
||||
"BULK_ACTION": {
|
||||
"SELECTED": "{count} element seçildi | {count} element seçildi",
|
||||
"SELECT_ALL": "Hamısını seç ({count})",
|
||||
"UNSELECT_ALL": "Hamısını seçmə ({count})",
|
||||
"BULK_DELETE_BUTTON": "Sil"
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Hamısının seçimini ləğv et ({count})",
|
||||
"BULK_DELETE_BUTTON": "Delete"
|
||||
},
|
||||
"ADD": {
|
||||
"SUGGESTED": {
|
||||
"TITLE": "Ssenari nümunələri",
|
||||
"TITLE": "Example scenarios",
|
||||
"ADD": "Hamısını əlavə et",
|
||||
"ADD_SINGLE": "Bunu əlavə et",
|
||||
"TOOLS_USED": "İstifadə olunan alətlər :"
|
||||
},
|
||||
"NEW": {
|
||||
"CREATE": "Ssenari əlavə et",
|
||||
"TITLE": "Ssenari yarat",
|
||||
"CREATE": "Add a scenario",
|
||||
"TITLE": "Create a scenario",
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Başlıq",
|
||||
"PLACEHOLDER": "Ssenari üçün ad daxil edin",
|
||||
"ERROR": "Ssenari adı tələb olunur"
|
||||
"PLACEHOLDER": "Enter a name for the scenario",
|
||||
"ERROR": "Scenario name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Təsvir",
|
||||
"PLACEHOLDER": "Bu ssenarinin necə və harada istifadə olunacağını təsvir edin",
|
||||
"ERROR": "Ssenari təsviri tələb olunur"
|
||||
"PLACEHOLDER": "Describe how and where this scenario will be used",
|
||||
"ERROR": "Scenario description is required"
|
||||
},
|
||||
"INSTRUCTION": {
|
||||
"LABEL": "Necə idarə olunacaq",
|
||||
"PLACEHOLDER": "Bu ssenarinin necə və harada idarə olunacağını təsvir edin",
|
||||
"ERROR": "Ssenari məzmunu tələb olunur"
|
||||
"PLACEHOLDER": "Describe how and where this scenario will be handled",
|
||||
"ERROR": "Scenario content is required"
|
||||
},
|
||||
"CREATE": "Yarat",
|
||||
"CREATE": "Create",
|
||||
"CANCEL": "Ləğv et"
|
||||
}
|
||||
}
|
||||
},
|
||||
"UPDATE": {
|
||||
"CANCEL": "Ləğv et",
|
||||
"UPDATE": "Dəyişiklikləri yenilə"
|
||||
"UPDATE": "Update changes"
|
||||
},
|
||||
"LIST": {
|
||||
"SEARCH_PLACEHOLDER": "Axtar..."
|
||||
},
|
||||
"EMPTY_MESSAGE": "Ssenari tapılmadı. Başlamaq üçün yaradın və ya nümunələr əlavə edin.",
|
||||
"SEARCH_EMPTY_MESSAGE": "Axtarış üçün ssenari tapılmadı.",
|
||||
"EMPTY_MESSAGE": "No scenarios found. Create or add examples to begin.",
|
||||
"SEARCH_EMPTY_MESSAGE": "No scenarios found for this search.",
|
||||
"API": {
|
||||
"ADD": {
|
||||
"SUCCESS": "Ssenarilər uğurla əlavə olundu",
|
||||
"ERROR": "Ssenarilər əlavə olunarkən xəta baş verdi, yenidən cəhd edin."
|
||||
"SUCCESS": "Scenarios added successfully",
|
||||
"ERROR": "There was an error adding scenarios, please try again."
|
||||
},
|
||||
"UPDATE": {
|
||||
"SUCCESS": "Ssenarilər uğurla yeniləndi",
|
||||
"ERROR": "Ssenarilər yenilənərkən xəta baş verdi, yenidən cəhd edin."
|
||||
"SUCCESS": "Scenarios updated successfully",
|
||||
"ERROR": "There was an error updating scenarios, please try again."
|
||||
},
|
||||
"DELETE": {
|
||||
"SUCCESS": "Ssenarilər uğurla silindi",
|
||||
"ERROR": "Ssenarilər silinərkən xəta baş verdi, yenidən cəhd edin."
|
||||
"SUCCESS": "Scenarios deleted successfully",
|
||||
"ERROR": "There was an error deleting scenarios, please try again."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Sənədlər",
|
||||
"ADD_NEW": "Yeni sənəd yarat",
|
||||
"SELECTED": "{count} seçildi",
|
||||
"SELECT_ALL": "Hamısını seç ({count})",
|
||||
"UNSELECT_ALL": "Hamısını seçmə ({count})",
|
||||
"BULK_DELETE_BUTTON": "Sil",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Sənədlər silinsin?",
|
||||
"DESCRIPTION": "Seçilmiş sənədləri silmək istədiyinizə əminsiniz? Bu əməliyyat geri qaytarıla bilməz.",
|
||||
"CONFIRM": "Bəli, hamısını sil",
|
||||
"SUCCESS_MESSAGE": "Sənədlər uğurla silindi",
|
||||
"ERROR_MESSAGE": "Sənədlər silinərkən xəta baş verdi, yenidən cəhd edin."
|
||||
},
|
||||
"ADD_NEW": "Yeni sənəd yaradın",
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Əlaqəli FAQ-lar",
|
||||
"DESCRIPTION": "Bu FAQ-lar birbaşa sənəddən yaradılıb."
|
||||
"TITLE": "Related FAQs",
|
||||
"DESCRIPTION": "These FAQs are generated directly from the document."
|
||||
},
|
||||
"FORM_DESCRIPTION": "Sənədi bilik mənbəyi kimi əlavə etmək üçün onun URL-ni daxil edin və əlaqələndiriləcək assistenti seçin.",
|
||||
"FORM_DESCRIPTION": "Sənədi bilik mənbəyi kimi əlavə etmək üçün URL-ni daxil edin və onu əlaqələndirmək istədiyiniz köməkçini seçin.",
|
||||
"CREATE": {
|
||||
"TITLE": "Sənəd əlavə et",
|
||||
"SUCCESS_MESSAGE": "Sənəd uğurla yaradıldı",
|
||||
"ERROR_MESSAGE": "Sənəd yaradılarkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin."
|
||||
"ERROR_MESSAGE": "There was an error creating the document, please try again."
|
||||
},
|
||||
"FORM": {
|
||||
"TYPE": {
|
||||
@@ -767,92 +756,84 @@
|
||||
},
|
||||
"URL": {
|
||||
"LABEL": "URL",
|
||||
"PLACEHOLDER": "Sənədin URL-ni daxil edin",
|
||||
"ERROR": "Sənəd üçün düzgün URL daxil edin"
|
||||
"PLACEHOLDER": "Sənədin URL ünvanını daxil edin",
|
||||
"ERROR": "Zəhmət olmasa sənəd üçün düzgün URL təqdim edin"
|
||||
},
|
||||
"PDF_FILE": {
|
||||
"LABEL": "PDF Faylı",
|
||||
"CHOOSE_FILE": "PDF faylını seçin",
|
||||
"ERROR": "PDF fayl seçin",
|
||||
"HELP_TEXT": "Maksimum fayl ölçüsü: 10MB",
|
||||
"INVALID_TYPE": "Düzgün PDF fayl seçin",
|
||||
"TOO_LARGE": "Fayl ölçüsü 10MB limiti aşır"
|
||||
"CHOOSE_FILE": "Choose PDF file",
|
||||
"ERROR": "Zəhmət olmasa PDF faylı seçin",
|
||||
"HELP_TEXT": "Maximum file size: 10MB",
|
||||
"INVALID_TYPE": "Zəhmət olmasa, düzgün PDF faylı seçin",
|
||||
"TOO_LARGE": "File size exceeds 10MB limit"
|
||||
},
|
||||
"NAME": {
|
||||
"LABEL": "Sənədin Adı (İstəyə bağlı)",
|
||||
"LABEL": "Document Name (Optional)",
|
||||
"PLACEHOLDER": "Sənəd üçün ad daxil edin"
|
||||
}
|
||||
},
|
||||
"DELETE": {
|
||||
"TITLE": "Sənəd silinsin?",
|
||||
"DESCRIPTION": "Bu əməliyyat geri qaytarıla bilməz. Bu sənədi silmək bütün yaradılmış bilikləri daimi olaraq siləcək.",
|
||||
"CONFIRM": "Bəli, sil",
|
||||
"SUCCESS_MESSAGE": "Sənəd uğurla silindi",
|
||||
"ERROR_MESSAGE": "Sənəd silinərkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin."
|
||||
"TITLE": "Are you sure to delete the document?",
|
||||
"DESCRIPTION": "Bu əməliyyat geri dönməzdir. Bu sənəd silindikdə, yaradılmış bütün biliklər daimi olaraq silinəcək.",
|
||||
"CONFIRM": "Yes, delete",
|
||||
"SUCCESS_MESSAGE": "The document has been successfully deleted",
|
||||
"ERROR_MESSAGE": "There was an error deleting the document, please try again."
|
||||
},
|
||||
"OPTIONS": {
|
||||
"VIEW_RELATED_RESPONSES": "Əlaqəli cavablara bax",
|
||||
"DELETE_DOCUMENT": "Sənədi sil"
|
||||
"VIEW_RELATED_RESPONSES": "Əlaqəli cavabları göstər",
|
||||
"DELETE_DOCUMENT": "Delete Document"
|
||||
},
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "Sənəd yoxdur",
|
||||
"SUBTITLE": "Sənədlər assistentiniz tərəfindən FAQ-lar yaratmaq üçün istifadə olunur. Assistentinizə kontekst vermək üçün sənədləri əlavə edə bilərsiniz.",
|
||||
"TITLE": "Heç bir sənəd mövcud deyil",
|
||||
"SUBTITLE": "Documents are used by your assistant to generate FAQs. You can import documents to provide context for your assistant.",
|
||||
"FEATURE_SPOTLIGHT": {
|
||||
"TITLE": "Captain Sənəd",
|
||||
"NOTE": "Captain-da sənəd assistent üçün bilik mənbəyi rolunu oynayır. Kömək mərkəzinizi və ya təlimatları bağlayaraq, Captain məzmunu analiz edə və müştəri sorğuları üçün dəqiq cavablar verə bilər."
|
||||
"TITLE": "Captain Document",
|
||||
"NOTE": "Captain-da sənəd köməkçi üçün bilik mənbəyi kimi xidmət edir. Köməkçi yardım mərkəzinizə və ya bələdçilərinizə qoşularaq məzmunu təhlil edə və müştəri sorğularına dəqiq cavablar verə bilər."
|
||||
}
|
||||
}
|
||||
},
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Alətlər",
|
||||
"ADD_NEW": "Yeni alət yarat",
|
||||
"SOFT_LIMIT_WARNING": "10-dan çox alət olması assistentin düzgün alət seçmə ehtimalını azalda bilər. Daha yaxşı nəticə üçün istifadə olunmayan alətləri silməyi düşünün.",
|
||||
"ADD_NEW": "Yeni alət yaradın",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "Xüsusi alət yoxdur",
|
||||
"SUBTITLE": "Assistentinizi xarici API və servislərlə birləşdirmək üçün xüsusi alətlər yaradın, beləliklə məlumat əldə edə və sizin adınızdan əməliyyatlar yerinə yetirə bilər.",
|
||||
"TITLE": "Fərdi alətlər mövcud deyil",
|
||||
"SUBTITLE": "Köməkçinizi xarici API-lər və xidmətlərlə qoşmaq üçün xüsusi alətlər yaradın, beləliklə o, məlumatları əldə edə və sizin adınıza əməliyyatlar apara bilsin.",
|
||||
"FEATURE_SPOTLIGHT": {
|
||||
"TITLE": "Xüsusi Alətlər",
|
||||
"NOTE": "Xüsusi alətlər assistentinizə xarici API və servislərlə qarşılıqlı əlaqə qurmağa imkan verir. Məlumat əldə etmək, əməliyyatlar yerinə yetirmək və ya mövcud sistemlərinizlə inteqrasiya etmək üçün alətlər yaradın və assistentin imkanlarını artırın."
|
||||
"NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities."
|
||||
}
|
||||
},
|
||||
"FORM_DESCRIPTION": "Xüsusi alətinizi xarici API-lərlə birləşdirmək üçün konfiqurasiya edin",
|
||||
"FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs",
|
||||
"OPTIONS": {
|
||||
"EDIT_TOOL": "Aləti redaktə et",
|
||||
"DELETE_TOOL": "Aləti sil"
|
||||
"DELETE_TOOL": "Delete tool"
|
||||
},
|
||||
"CREATE": {
|
||||
"TITLE": "Xüsusi Alət Yarat",
|
||||
"TITLE": "Create Custom Tool",
|
||||
"SUCCESS_MESSAGE": "Xüsusi alət uğurla yaradıldı",
|
||||
"ERROR_MESSAGE": "Xüsusi alət yaradılmadı"
|
||||
"ERROR_MESSAGE": "Xüsusi alət yaratmaq mümkün olmadı"
|
||||
},
|
||||
"EDIT": {
|
||||
"TITLE": "Xüsusi Aləti Redaktə Et",
|
||||
"SUCCESS_MESSAGE": "Xüsusi alət uğurla yeniləndi",
|
||||
"ERROR_MESSAGE": "Xüsusi alət yenilənmədi"
|
||||
"SUCCESS_MESSAGE": "Custom tool updated successfully",
|
||||
"ERROR_MESSAGE": "Failed to update custom tool"
|
||||
},
|
||||
"DELETE": {
|
||||
"TITLE": "Xüsusi Aləti Sil",
|
||||
"DESCRIPTION": "Bu xüsusi aləti silmək istədiyinizə əminsiniz? Bu əməliyyat geri qaytarıla bilməz.",
|
||||
"CONFIRM": "Bəli, sil",
|
||||
"SUCCESS_MESSAGE": "Xüsusi alət uğurla silindi",
|
||||
"ERROR_MESSAGE": "Xüsusi alət silinmədi"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Bağlantını yoxla",
|
||||
"SUCCESS": "Endpoint HTTP {status} qaytardı",
|
||||
"ERROR": "Bağlantı uğursuz oldu",
|
||||
"DISABLED_HINT": "Test yalnız şablonsuz və ya sorğu gövdəsi olmayan endpoint-lər üçün mümkündür."
|
||||
"TITLE": "Delete Custom Tool",
|
||||
"DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete",
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Xüsusi aləti silmək mümkün olmadı"
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Alətin Adı",
|
||||
"PLACEHOLDER": "Sifariş axtarışı",
|
||||
"ERROR": "Alət adı tələb olunur",
|
||||
"MAX_LENGTH_ERROR": "Alət adı maksimum {max} simvol olmalıdır"
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Təsvir",
|
||||
"PLACEHOLDER": "Sifariş ID-si ilə sifariş detalları axtarılır"
|
||||
"PLACEHOLDER": "Looks up order details by order ID"
|
||||
},
|
||||
"HTTP_METHOD": {
|
||||
"LABEL": "Metod"
|
||||
@@ -863,7 +844,7 @@
|
||||
"ERROR": "Düzgün URL tələb olunur"
|
||||
},
|
||||
"AUTH_TYPE": {
|
||||
"LABEL": "Avtorizasiya növü"
|
||||
"LABEL": "Authentication Type"
|
||||
},
|
||||
"AUTH_TYPES": {
|
||||
"NONE": "Heç biri",
|
||||
@@ -873,23 +854,23 @@
|
||||
},
|
||||
"AUTH_CONFIG": {
|
||||
"BEARER_TOKEN": "Bearer Token",
|
||||
"BEARER_TOKEN_PLACEHOLDER": "Bearer tokeninizi daxil edin",
|
||||
"USERNAME": "İstifadəçi adı",
|
||||
"BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token",
|
||||
"USERNAME": "Username",
|
||||
"USERNAME_PLACEHOLDER": "İstifadəçi adını daxil edin",
|
||||
"PASSWORD": "Şifrə",
|
||||
"PASSWORD_PLACEHOLDER": "Şifrəni daxil edin",
|
||||
"API_KEY": "Başlıq Adı",
|
||||
"PASSWORD": "Password",
|
||||
"PASSWORD_PLACEHOLDER": "Enter password",
|
||||
"API_KEY": "Header Name",
|
||||
"API_KEY_PLACEHOLDER": "X-API-Key",
|
||||
"API_VALUE": "Başlıq Dəyəri",
|
||||
"API_VALUE": "Başlıq dəyəri",
|
||||
"API_VALUE_PLACEHOLDER": "API açar dəyərini daxil edin"
|
||||
},
|
||||
"PARAMETERS": {
|
||||
"LABEL": "Parametrlər",
|
||||
"HELP_TEXT": "İstifadəçi sorğularından çıxarılacaq parametrləri müəyyən edin"
|
||||
"LABEL": "Parameters",
|
||||
"HELP_TEXT": "Define the parameters that will be extracted from user queries"
|
||||
},
|
||||
"ADD_PARAMETER": "Parametr əlavə et",
|
||||
"ADD_PARAMETER": "Add Parameter",
|
||||
"PARAM_NAME": {
|
||||
"PLACEHOLDER": "Parametr adı (məs., order_id)"
|
||||
"PLACEHOLDER": "Parameter name (e.g., order_id)"
|
||||
},
|
||||
"PARAM_TYPE": {
|
||||
"PLACEHOLDER": "Növ"
|
||||
@@ -902,139 +883,139 @@
|
||||
"OBJECT": "Obyekt"
|
||||
},
|
||||
"PARAM_DESCRIPTION": {
|
||||
"PLACEHOLDER": "Parametrin təsviri"
|
||||
"PLACEHOLDER": "Description of the parameter"
|
||||
},
|
||||
"PARAM_REQUIRED": {
|
||||
"LABEL": "Tələb olunur"
|
||||
},
|
||||
"REQUEST_TEMPLATE": {
|
||||
"LABEL": "Sorğu Gövdəsi Şablonu (İstəyə bağlı)",
|
||||
"LABEL": "Sorğu Bədəninin Şablonu (İxtiyari)",
|
||||
"PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}"
|
||||
},
|
||||
"RESPONSE_TEMPLATE": {
|
||||
"LABEL": "Cavab Şablonu (İstəyə bağlı)",
|
||||
"PLACEHOLDER": "Sifariş {'{{'} order_id {'}}'} statusu: {'{{'} status {'}}'}"
|
||||
"LABEL": "Response Template (Optional)",
|
||||
"PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}"
|
||||
},
|
||||
"ERRORS": {
|
||||
"PARAM_NAME_REQUIRED": "Parametr adı tələb olunur"
|
||||
"PARAM_NAME_REQUIRED": "Parameter name is required"
|
||||
}
|
||||
}
|
||||
},
|
||||
"RESPONSES": {
|
||||
"HEADER": "FAQ-lar",
|
||||
"PENDING_FAQS": "Gözləyən FAQ-lar",
|
||||
"ADD_NEW": "Yeni FAQ yarat",
|
||||
"HEADER": "Tez-tez verilən suallar",
|
||||
"PENDING_FAQS": "Gözləyən tez-tez verilən suallar",
|
||||
"ADD_NEW": "Yeni FAQ yaradın",
|
||||
"DOCUMENTABLE": {
|
||||
"CONVERSATION": "Söhbət #{id}"
|
||||
},
|
||||
"SELECTED": "{count} seçildi",
|
||||
"SELECT_ALL": "Hamısını seç ({count})",
|
||||
"UNSELECT_ALL": "Hamısını seçmə ({count})",
|
||||
"SEARCH_PLACEHOLDER": "FAQ-larda axtar...",
|
||||
"BULK_APPROVE_BUTTON": "Təsdiqlə",
|
||||
"BULK_DELETE_BUTTON": "Sil",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Hamısının seçimini götür ({count})",
|
||||
"SEARCH_PLACEHOLDER": "Search FAQs...",
|
||||
"BULK_APPROVE_BUTTON": "Approve",
|
||||
"BULK_DELETE_BUTTON": "Delete",
|
||||
"BULK_APPROVE": {
|
||||
"SUCCESS_MESSAGE": "FAQ-lar uğurla təsdiqləndi",
|
||||
"ERROR_MESSAGE": "FAQ-lar təsdiqlənərkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin."
|
||||
"SUCCESS_MESSAGE": "FAQs approved successfully",
|
||||
"ERROR_MESSAGE": "There was an error approving the FAQs, please try again."
|
||||
},
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "FAQ-lar silinsin?",
|
||||
"DESCRIPTION": "Seçilmiş FAQ-ları silmək istədiyinizə əminsiniz? Bu əməliyyat geri qaytarıla bilməz.",
|
||||
"CONFIRM": "Bəli, hamısını sil",
|
||||
"SUCCESS_MESSAGE": "FAQ-lar uğurla silindi",
|
||||
"ERROR_MESSAGE": "FAQ-lar silinərkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin."
|
||||
"TITLE": "Tez-tez verilən sualları silmək?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected FAQs? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete all",
|
||||
"SUCCESS_MESSAGE": "FAQs deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the FAQs, please try again."
|
||||
},
|
||||
"DELETE": {
|
||||
"TITLE": "FAQ silinsin?",
|
||||
"TITLE": "Are you sure to delete the FAQ?",
|
||||
"DESCRIPTION": "",
|
||||
"CONFIRM": "Bəli, sil",
|
||||
"SUCCESS_MESSAGE": "FAQ uğurla silindi",
|
||||
"ERROR_MESSAGE": "FAQ silinərkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin."
|
||||
"CONFIRM": "Yes, delete",
|
||||
"SUCCESS_MESSAGE": "FAQ deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the FAQ, please try again."
|
||||
},
|
||||
"FILTER": {
|
||||
"ASSISTANT": "Assistent: {selected}",
|
||||
"STATUS": "Status: {selected}",
|
||||
"ASSISTANT": "Köməkçi: {selected}",
|
||||
"STATUS": "Vəziyyət: {selected}",
|
||||
"ALL_ASSISTANTS": "Hamısı"
|
||||
},
|
||||
"STATUS": {
|
||||
"TITLE": "Status",
|
||||
"TITLE": "Vəziyyət",
|
||||
"PENDING": "Gözləyir",
|
||||
"APPROVED": "Təsdiqlənib",
|
||||
"ALL": "Hamısı"
|
||||
},
|
||||
"PENDING_BANNER": {
|
||||
"TITLE": "Captain müştərilərinizin axtardığı bəzi FAQ-ları tapdı.",
|
||||
"ACTION": "Baxmaq üçün bura klikləyin"
|
||||
"TITLE": "Captain has found some FAQs your customers were looking for.",
|
||||
"ACTION": "Nəzərdən keçirmək üçün buraya klikləyin"
|
||||
},
|
||||
"FORM_DESCRIPTION": "Bilik bazasına sual və ona uyğun cavabı əlavə edin, sonra onun əlaqələndiriləcəyi köməkçini seçin.",
|
||||
"FORM_DESCRIPTION": "Add a question and its corresponding answer to the knowledge base and select the assistant it should be associated with.",
|
||||
"CREATE": {
|
||||
"TITLE": "FAQ əlavə et",
|
||||
"SUCCESS_MESSAGE": "Cavab uğurla əlavə olundu.",
|
||||
"ERROR_MESSAGE": "Cavab əlavə olunarkən xəta baş verdi. Yenidən cəhd edin."
|
||||
"TITLE": "Tez-tez verilən sual əlavə et",
|
||||
"SUCCESS_MESSAGE": "Cavab uğurla əlavə edildi.",
|
||||
"ERROR_MESSAGE": "Cavab əlavə edilərkən xəta baş verdi. Zəhmət olmasa, yenidən cəhd edin."
|
||||
},
|
||||
"FORM": {
|
||||
"QUESTION": {
|
||||
"LABEL": "Sual",
|
||||
"PLACEHOLDER": "Sualı buraya daxil edin",
|
||||
"ERROR": "Düzgün sual daxil edin."
|
||||
"ERROR": "Zəhmət olmasa, düzgün sual daxil edin."
|
||||
},
|
||||
"ANSWER": {
|
||||
"LABEL": "Cavab",
|
||||
"PLACEHOLDER": "Cavabı buraya daxil edin",
|
||||
"ERROR": "Düzgün cavab daxil edin."
|
||||
"ERROR": "Zəhmət olmasa, düzgün cavab daxil edin."
|
||||
}
|
||||
},
|
||||
"EDIT": {
|
||||
"TITLE": "FAQ-ı yenilə",
|
||||
"SUCCESS_MESSAGE": "FAQ uğurla yeniləndi",
|
||||
"ERROR_MESSAGE": "FAQ yenilənərkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin.",
|
||||
"APPROVE_SUCCESS_MESSAGE": "FAQ təsdiqləndi"
|
||||
"TITLE": "Update the FAQ",
|
||||
"SUCCESS_MESSAGE": "The FAQ has been successfully updated",
|
||||
"ERROR_MESSAGE": "There was an error updating the FAQ, please try again",
|
||||
"APPROVE_SUCCESS_MESSAGE": "The FAQ was marked as approved"
|
||||
},
|
||||
"OPTIONS": {
|
||||
"APPROVE": "Təsdiqlə",
|
||||
"APPROVE": "Approve",
|
||||
"EDIT_RESPONSE": "Redaktə et",
|
||||
"DELETE_RESPONSE": "Sil"
|
||||
"DELETE_RESPONSE": "Delete"
|
||||
},
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "FAQ tapılmadı",
|
||||
"NO_PENDING_TITLE": "Baxılacaq başqa gözləyən FAQ yoxdur",
|
||||
"SUBTITLE": "FAQ-lar köməkçinizə müştərilərinizdən gələn suallara sürətli və dəqiq cavablar verməyə kömək edir. Onlar məzmununuzdan avtomatik yaradına və ya əl ilə əlavə edilə bilər.",
|
||||
"CLEAR_SEARCH": "Aktiv filtrləri təmizlə",
|
||||
"TITLE": "No FAQs Found",
|
||||
"NO_PENDING_TITLE": "Yoxlanılacaq daha çox gözləyən FAQ yoxdur",
|
||||
"SUBTITLE": "FAQs help your assistant provide quick and accurate answers to questions from your customers. They can be generated automatically from your content or can be added manually.",
|
||||
"CLEAR_SEARCH": "Clear active filters",
|
||||
"FEATURE_SPOTLIGHT": {
|
||||
"TITLE": "Captain FAQ",
|
||||
"NOTE": "Captain FAQ tez-tez verilən və ya bilik bazasında olmayan müştəri suallarını aşkar edir və uyğun FAQ-lar yaradır. Hər təklifi nəzərdən keçirə və təsdiqləyə və ya rədd edə bilərsiniz."
|
||||
"NOTE": "Captain FAQ-ları ümumi müştəri suallarını aşkar edir — bilik bazanızda olmayan və ya tez-tez verilən — və dəstəyi yaxşılaşdırmaq üçün müvafiq FAQ-lar yaradır. Hər təklifi nəzərdən keçirə və təsdiqləyib-təsdiqləməməyə qərar verə bilərsiniz."
|
||||
}
|
||||
}
|
||||
},
|
||||
"INBOXES": {
|
||||
"HEADER": "Bağlı Poçt Qutuları",
|
||||
"ADD_NEW": "Yeni gələn qutu qoşun",
|
||||
"HEADER": "Qoşulmuş poçt qutuları",
|
||||
"ADD_NEW": "Yeni qutu qoşun",
|
||||
"OPTIONS": {
|
||||
"DISCONNECT": "Bağlantını kəs"
|
||||
"DISCONNECT": "Disconnect"
|
||||
},
|
||||
"DELETE": {
|
||||
"TITLE": "Gələn qutunu ayırmaq istədiyinizə əminsiniz?",
|
||||
"TITLE": "Are you sure to disconnect the inbox?",
|
||||
"DESCRIPTION": "",
|
||||
"CONFIRM": "Bəli, sil",
|
||||
"SUCCESS_MESSAGE": "Poçt qutusu uğurla bağlantıdan çıxarıldı.",
|
||||
"ERROR_MESSAGE": "Gələn qutu ayrılarkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin."
|
||||
"CONFIRM": "Yes, delete",
|
||||
"SUCCESS_MESSAGE": "Qutu uğurla qoşulması kəsildi.",
|
||||
"ERROR_MESSAGE": "There was an error disconnecting the inbox, please try again."
|
||||
},
|
||||
"FORM_DESCRIPTION": "Köməkçi ilə əlaqələndirmək üçün gələn qutunu seçin.",
|
||||
"FORM_DESCRIPTION": "Köməkçi ilə əlaqələndirmək üçün qutu seçin.",
|
||||
"CREATE": {
|
||||
"TITLE": "Poçt qutusu qoş",
|
||||
"SUCCESS_MESSAGE": "Poçt qutusu uğurla qoşuldu.",
|
||||
"ERROR_MESSAGE": "Gələn qutu qoşularkən xəta baş verdi. Zəhmət olmasa yenidən cəhd edin."
|
||||
"TITLE": "Qutu qoşun",
|
||||
"SUCCESS_MESSAGE": "Qutu uğurla qoşuldu.",
|
||||
"ERROR_MESSAGE": "An error occurred while connecting the inbox. Please try again."
|
||||
},
|
||||
"FORM": {
|
||||
"INBOX": {
|
||||
"LABEL": "Gələn qutu",
|
||||
"PLACEHOLDER": "Köməkçini yerləşdirmək üçün gələn qutunu seçin.",
|
||||
"ERROR": "Poçt qutusu seçimi tələb olunur."
|
||||
"LABEL": "Qutu",
|
||||
"PLACEHOLDER": "Choose the inbox to deploy the assistant.",
|
||||
"ERROR": "Qutu seçimi tələb olunur."
|
||||
}
|
||||
},
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "Bağlı poçt qutusu yoxdur",
|
||||
"SUBTITLE": "Poçt qutusu qoşmaq assistentin müştərilərinizin ilkin suallarını idarə etməsinə imkan verir və sonra sizi işə cəlb edir."
|
||||
"TITLE": "Əlaqəli qutular tapılmadı",
|
||||
"SUBTITLE": "Qutu qoşmaq köməkçiyə müştərilərinizdən gələn ilkin sualları cavablandırmağa və onları sizə yönləndirmədən əvvəl idarə etməyə imkan verir."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
"MESSAGING_RESTRICTED_WHATSAPP": "You can only reply using a template message due to 24-hour message window restriction",
|
||||
"MESSAGING_RESTRICTED_API": "You can only reply using a template message due to message window restriction",
|
||||
"MESSAGE_SIGNATURE_NOT_CONFIGURED": "Message signature is not configured, please configure it in profile settings.",
|
||||
"COPILOT_MSG_INPUT": "Дайте на copilot допълнителни инструкции или питайте нещо друго... Натиснете enter, за да изпратите последващо съобщение",
|
||||
"COPILOT_MSG_INPUT": "Give copilot additional prompts, or ask anything else... Press enter to send follow-up",
|
||||
"CLICK_HERE": "Click here to update",
|
||||
"WHATSAPP_TEMPLATES": "Whatsapp Templates"
|
||||
},
|
||||
@@ -214,7 +214,7 @@
|
||||
"DRAG_DROP": "Drag and drop here to attach",
|
||||
"START_AUDIO_RECORDING": "Start audio recording",
|
||||
"STOP_AUDIO_RECORDING": "Stop audio recording",
|
||||
"COPILOT_THINKING": "Copilot мисли",
|
||||
"COPILOT_THINKING": "Copilot is thinking",
|
||||
"EMAIL_HEAD": {
|
||||
"TO": "TO",
|
||||
"ADD_BCC": "Add bcc",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "Locale removed from portal successfully",
|
||||
"ERROR_MESSAGE": "Unable to remove locale from portal. Try again."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} article | {count} articles",
|
||||
"CATEGORIES_COUNT": "{count} category | {count} categories",
|
||||
"DEFAULT": "Default",
|
||||
"DRAFT": "Draft",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "Make default",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "Изтрий"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "Select locale..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "Статус",
|
||||
"OPTIONS": {
|
||||
"LIVE": "Published",
|
||||
"DRAFT": "Draft"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale added successfully",
|
||||
"ERROR_MESSAGE": "Unable to add locale. Try again."
|
||||
|
||||
@@ -390,72 +390,72 @@
|
||||
},
|
||||
"CAPTAIN": {
|
||||
"NAME": "Captain",
|
||||
"HEADER_KNOW_MORE": "Научете повече",
|
||||
"HEADER_KNOW_MORE": "Know more",
|
||||
"ASSISTANT_SWITCHER": {
|
||||
"ASSISTANTS": "Асистенти",
|
||||
"SWITCH_ASSISTANT": "Превключване между асистенти",
|
||||
"NEW_ASSISTANT": "Създайте асистент",
|
||||
"EMPTY_LIST": "Не са намерени асистенти, моля създайте един, за да започнете"
|
||||
"ASSISTANTS": "Assistants",
|
||||
"SWITCH_ASSISTANT": "Switch between assistants",
|
||||
"NEW_ASSISTANT": "Create Assistant",
|
||||
"EMPTY_LIST": "No assistants found, please create one to get started"
|
||||
},
|
||||
"COPILOT": {
|
||||
"TITLE": "Copilot",
|
||||
"TRY_THESE_PROMPTS": "Try these prompts",
|
||||
"PANEL_TITLE": "Започнете с Copilot",
|
||||
"KICK_OFF_MESSAGE": "Имате нужда от бързо резюме, искате да проверите минали разговори или да създадете по-добър отговор? Copilot е тук, за да ускори нещата.",
|
||||
"PANEL_TITLE": "Get started with Copilot",
|
||||
"KICK_OFF_MESSAGE": "Need a quick summary, want to check past conversations, or draft a better reply? Copilot’s here to speed things up.",
|
||||
"SEND_MESSAGE": "Изпрати съобщение...",
|
||||
"EMPTY_MESSAGE": "Възникна грешка при генериране на отговора. Моля, опитайте отново.",
|
||||
"LOADER": "Captain мисли",
|
||||
"EMPTY_MESSAGE": "There was an error generating the response. Please try again.",
|
||||
"LOADER": "Captain is thinking",
|
||||
"YOU": "You",
|
||||
"USE": "Използвай това",
|
||||
"RESET": "Нулиране",
|
||||
"SHOW_STEPS": "Покажи стъпки",
|
||||
"SELECT_ASSISTANT": "Изберете асистент",
|
||||
"USE": "Use this",
|
||||
"RESET": "Reset",
|
||||
"SHOW_STEPS": "Show steps",
|
||||
"SELECT_ASSISTANT": "Select Assistant",
|
||||
"PROMPTS": {
|
||||
"SUMMARIZE": {
|
||||
"LABEL": "Обобщете този разговор",
|
||||
"CONTENT": "Обобщете основните точки, обсъдени между клиента и поддържащия агент, включително притесненията на клиента, въпросите и решенията или отговорите, предоставени от агента."
|
||||
"LABEL": "Summarize this conversation",
|
||||
"CONTENT": "Summarize the key points discussed between the customer and the support agent, including the customer's concerns, questions, and the solutions or responses provided by the support agent"
|
||||
},
|
||||
"SUGGEST": {
|
||||
"LABEL": "Предложете отговор",
|
||||
"CONTENT": "Анализирайте запитването на клиента и създайте отговор, който ефективно адресира техните притеснения или въпроси. Уверете се, че отговорът е ясен, кратък и предоставя полезна информация."
|
||||
"LABEL": "Suggest an answer",
|
||||
"CONTENT": "Analyze the customer's inquiry, and draft a response that effectively addresses their concerns or questions. Ensure the reply is clear, concise, and provides helpful information."
|
||||
},
|
||||
"RATE": {
|
||||
"LABEL": "Оценете този разговор",
|
||||
"CONTENT": "Прегледайте разговора, за да видите доколко отговаря на нуждите на клиента. Споделете оценка от 5 въз основа на тон, яснота и ефективност."
|
||||
"LABEL": "Rate this conversation",
|
||||
"CONTENT": "Review the conversation to see how well it meets the customer's needs. Share a rating out of 5 based on tone, clarity, and effectiveness."
|
||||
},
|
||||
"HIGH_PRIORITY": {
|
||||
"LABEL": "Разговори с висок приоритет",
|
||||
"CONTENT": "Дайте ми резюме на всички отворени разговори с висок приоритет. Включете ID на разговора, името на клиента (ако е налично), съдържанието на последното съобщение и назначен агент. Групирайте по статус, ако е приложимо."
|
||||
"LABEL": "High priority conversations",
|
||||
"CONTENT": "Give me a summary of all high priority open conversations. Include the conversation ID, customer name (if available), last message content, and assigned agent. Group by status if relevant."
|
||||
},
|
||||
"LIST_CONTACTS": {
|
||||
"LABEL": "Списък с контакти",
|
||||
"CONTENT": "Покажете ми списък с топ 10 контакта. Включете име, имейл или телефонен номер (ако е наличен), време на последно виждане, етикети (ако има такива)."
|
||||
"LABEL": "List contacts",
|
||||
"CONTENT": "Show me the list of top 10 contacts. Include name, email or phone number (if available), last seen time, tags (if any)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"PLAYGROUND": {
|
||||
"USER": "You",
|
||||
"ASSISTANT": "Асистент",
|
||||
"ASSISTANT": "Assistant",
|
||||
"MESSAGE_PLACEHOLDER": "Напишете вашето съобщение...",
|
||||
"HEADER": "Площадка",
|
||||
"DESCRIPTION": "Използвайте тази площадка, за да изпращате съобщения до вашия асистент и да проверите дали отговаря точно, бързо и в очаквания тон.",
|
||||
"CREDIT_NOTE": "Изпратените съобщения тук ще се броят към вашите кредити на Captain."
|
||||
"HEADER": "Playground",
|
||||
"DESCRIPTION": "Use this playground to send messages to your assistant and check if it responds accurately, quickly, and in the tone you expect.",
|
||||
"CREDIT_NOTE": "Messages sent here will count toward your Captain credits."
|
||||
},
|
||||
"PAYWALL": {
|
||||
"TITLE": "Надградете, за да използвате Captain AI",
|
||||
"AVAILABLE_ON": "Captain не е наличен в безплатния план.",
|
||||
"UPGRADE_PROMPT": "Надградете вашия план, за да получите достъп до нашите асистенти, copilot и още.",
|
||||
"TITLE": "Upgrade to use Captain AI",
|
||||
"AVAILABLE_ON": "Captain is not available on the free plan.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"UPGRADE_NOW": "Upgrade now",
|
||||
"CANCEL_ANYTIME": "You can change or cancel your plan anytime"
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "Captain AI е наличен само в Enterprise плановете.",
|
||||
"UPGRADE_PROMPT": "Надградете вашия план, за да получите достъп до нашите асистенти, copilot и още.",
|
||||
"AVAILABLE_ON": "Captain AI is only available in the Enterprise plans.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"ASK_ADMIN": "Please reach out to your administrator for the upgrade."
|
||||
},
|
||||
"BANNER": {
|
||||
"RESPONSES": "Използвали сте над 80% от лимита си за отговори. За да продължите да използвате Captain AI, моля надградете.",
|
||||
"DOCUMENTS": "Достигнат е лимитът за документи. Надградете, за да продължите да използвате Captain AI."
|
||||
"RESPONSES": "You've used over 80% of your response limit. To continue using Captain AI, please upgrade.",
|
||||
"DOCUMENTS": "Document limit reached. Upgrade to continue using Captain AI."
|
||||
},
|
||||
"FORM": {
|
||||
"CANCEL": "Отмени",
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Documents",
|
||||
"ADD_NEW": "Create a new document",
|
||||
"SELECTED": "{count} selected",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Unselect all ({count})",
|
||||
"BULK_DELETE_BUTTON": "Изтрий",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete all",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Related FAQs",
|
||||
"DESCRIPTION": "These FAQs are generated directly from the document."
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Tools",
|
||||
"ADD_NEW": "Create a new tool",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "No custom tools available",
|
||||
"SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Failed to delete custom tool"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Описание",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "লোকেল সফলভাবে পোর্টাল থেকে সরানো হয়েছে",
|
||||
"ERROR_MESSAGE": "লোকেল পোর্টাল থেকে সরানো যায়নি। আবার চেষ্টা করুন।."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} নিবন্ধ | {count} নিবন্ধসমূহ",
|
||||
"CATEGORIES_COUNT": "{count} বিভাগ | {count} বিভাগসমূহ",
|
||||
"DEFAULT": "ডিফল্ট",
|
||||
"DRAFT": "খসড়া",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "ডিফল্ট করুন",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "মুছে ফেলুন"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "লোকেল নির্বাচন করুন..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "অবস্থা",
|
||||
"OPTIONS": {
|
||||
"LIVE": "প্রকাশিত",
|
||||
"DRAFT": "খসড়া"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "লোকেল সফলভাবে যোগ করা হয়েছে",
|
||||
"ERROR_MESSAGE": "লোকেল যোগ করা যায়নি. আবার চেষ্টা করুন."
|
||||
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "নথিপত্র",
|
||||
"ADD_NEW": "নতুন নথি তৈরি করুন",
|
||||
"SELECTED": "{count} নির্বাচিত",
|
||||
"SELECT_ALL": "সব নির্বাচন করুন ({count})",
|
||||
"UNSELECT_ALL": "সব নির্বাচন বাতিল করুন ({count})",
|
||||
"BULK_DELETE_BUTTON": "মুছে ফেলুন",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "হ্যাঁ, সব মুছে ফেলুন",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "সম্পর্কিত FAQ",
|
||||
"DESCRIPTION": "এই FAQ গুলো সরাসরি ডকুমেন্ট থেকে তৈরি হয়েছে।"
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "টুলস",
|
||||
"ADD_NEW": "নতুন টুল তৈরি করুন",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "কোনো কাস্টম টুল নেই",
|
||||
"SUBTITLE": "আপনার অ্যাসিস্ট্যান্টকে বাহ্যিক API ও সার্ভিসের সাথে সংযুক্ত করতে কাস্টম টুল তৈরি করুন, যাতে এটি আপনার পক্ষ থেকে ডেটা সংগ্রহ ও বিভিন্ন কাজ করতে পারে।.",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "কাস্টম টুল সফলভাবে মুছে ফেলা হয়েছে",
|
||||
"ERROR_MESSAGE": "কাস্টম টুল মুছে ফেলা যায়নি"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "টুলের নাম",
|
||||
"PLACEHOLDER": "অর্ডার অনুসন্ধান",
|
||||
"ERROR": "টুলের নাম আবশ্যক",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "টুলের নাম আবশ্যক"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "বর্ণনা",
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
"MESSAGING_RESTRICTED_WHATSAPP": "You can only reply using a template message due to 24-hour message window restriction",
|
||||
"MESSAGING_RESTRICTED_API": "You can only reply using a template message due to message window restriction",
|
||||
"MESSAGE_SIGNATURE_NOT_CONFIGURED": "La signatura del missatge no està configurada, configura-la a la configuració del perfil.",
|
||||
"COPILOT_MSG_INPUT": "Dóna instruccions addicionals a copilot o pregunta qualsevol altra cosa... Prem enter per enviar un seguiment",
|
||||
"COPILOT_MSG_INPUT": "Give copilot additional prompts, or ask anything else... Press enter to send follow-up",
|
||||
"CLICK_HERE": "Fes clic aquí per actualitzar",
|
||||
"WHATSAPP_TEMPLATES": "Plantilles de Whatsapp"
|
||||
},
|
||||
@@ -214,7 +214,7 @@
|
||||
"DRAG_DROP": "Arrossega i deixa anar aquí per adjuntar-lo",
|
||||
"START_AUDIO_RECORDING": "Inicia la gravació d'àudio",
|
||||
"STOP_AUDIO_RECORDING": "Atura la gravació d'àudio",
|
||||
"COPILOT_THINKING": "Copilot està pensant",
|
||||
"COPILOT_THINKING": "Copilot is thinking",
|
||||
"EMAIL_HEAD": {
|
||||
"TO": "A",
|
||||
"ADD_BCC": "Afegeix cco",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "La localització s'ha eliminat del portal correctament",
|
||||
"ERROR_MESSAGE": "No es pot eliminar la localització del portal. Torna-ho a provar."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} article | {count} articles",
|
||||
"CATEGORIES_COUNT": "{count} category | {count} categories",
|
||||
"DEFAULT": "Per defecte",
|
||||
"DRAFT": "Esborrany",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "Make default",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "Esborrar"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "Selecciona localització..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "Estat",
|
||||
"OPTIONS": {
|
||||
"LIVE": "Publicat",
|
||||
"DRAFT": "Esborrany"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "La localització s'ha afegit correctament",
|
||||
"ERROR_MESSAGE": "No es pot afegir la localització. Torna-ho a provar."
|
||||
|
||||
@@ -390,72 +390,72 @@
|
||||
},
|
||||
"CAPTAIN": {
|
||||
"NAME": "Captain",
|
||||
"HEADER_KNOW_MORE": "Saber més",
|
||||
"HEADER_KNOW_MORE": "Know more",
|
||||
"ASSISTANT_SWITCHER": {
|
||||
"ASSISTANTS": "Assistents",
|
||||
"SWITCH_ASSISTANT": "Canvia entre assistents",
|
||||
"NEW_ASSISTANT": "Crea un assistent",
|
||||
"EMPTY_LIST": "No s'ha trobat cap assistent, si us plau crea'n un per començar"
|
||||
"ASSISTANTS": "Assistants",
|
||||
"SWITCH_ASSISTANT": "Switch between assistants",
|
||||
"NEW_ASSISTANT": "Create Assistant",
|
||||
"EMPTY_LIST": "No assistants found, please create one to get started"
|
||||
},
|
||||
"COPILOT": {
|
||||
"TITLE": "Copilot",
|
||||
"TRY_THESE_PROMPTS": "Try these prompts",
|
||||
"PANEL_TITLE": "Comença amb Copilot",
|
||||
"KICK_OFF_MESSAGE": "Necessites un resum ràpid, vols revisar converses anteriors o redactar una resposta millor? Copilot és aquí per accelerar-ho.",
|
||||
"PANEL_TITLE": "Get started with Copilot",
|
||||
"KICK_OFF_MESSAGE": "Need a quick summary, want to check past conversations, or draft a better reply? Copilot’s here to speed things up.",
|
||||
"SEND_MESSAGE": "Envia missatge...",
|
||||
"EMPTY_MESSAGE": "Hi ha hagut un error generant la resposta. Torna-ho a provar.",
|
||||
"LOADER": "Captain està pensant",
|
||||
"EMPTY_MESSAGE": "There was an error generating the response. Please try again.",
|
||||
"LOADER": "Captain is thinking",
|
||||
"YOU": "Tu",
|
||||
"USE": "Utilitza això",
|
||||
"RESET": "Reinicia",
|
||||
"SHOW_STEPS": "Mostra passos",
|
||||
"SELECT_ASSISTANT": "Selecciona Assistente",
|
||||
"USE": "Use this",
|
||||
"RESET": "Reset",
|
||||
"SHOW_STEPS": "Show steps",
|
||||
"SELECT_ASSISTANT": "Select Assistant",
|
||||
"PROMPTS": {
|
||||
"SUMMARIZE": {
|
||||
"LABEL": "Resumeix aquesta conversa",
|
||||
"CONTENT": "Resumeix els punts claus que s'han discutit entre el client i l'agent de suport, incloent les preocupacions, preguntes del client i les solucions o respostes aportades per l'agent."
|
||||
"LABEL": "Summarize this conversation",
|
||||
"CONTENT": "Summarize the key points discussed between the customer and the support agent, including the customer's concerns, questions, and the solutions or responses provided by the support agent"
|
||||
},
|
||||
"SUGGEST": {
|
||||
"LABEL": "Suggerir una resposta",
|
||||
"CONTENT": "Analitza la consulta del client i redacta una resposta que atiqui eficaçment les seves preocupacions o preguntes. Assegura que la resposta sigui clara, concisa i ofereixi informació útil."
|
||||
"LABEL": "Suggest an answer",
|
||||
"CONTENT": "Analyze the customer's inquiry, and draft a response that effectively addresses their concerns or questions. Ensure the reply is clear, concise, and provides helpful information."
|
||||
},
|
||||
"RATE": {
|
||||
"LABEL": "Valora aquesta conversa",
|
||||
"CONTENT": "Revisa la conversa per veure com de bé s'adapta a les necessitats del client. Comparteix una valoració de 5 punts basada en to, claredat i efectivitat."
|
||||
"LABEL": "Rate this conversation",
|
||||
"CONTENT": "Review the conversation to see how well it meets the customer's needs. Share a rating out of 5 based on tone, clarity, and effectiveness."
|
||||
},
|
||||
"HIGH_PRIORITY": {
|
||||
"LABEL": "Converses d'alta prioritat",
|
||||
"CONTENT": "Dóna'm un resum de totes les converses obertes d'alta prioritat. Inclou la ID de la conversa, nom del client (si està disponible), contingut de l'últim missatge i agent assignat. Agrupa per estat si és rellevant."
|
||||
"LABEL": "High priority conversations",
|
||||
"CONTENT": "Give me a summary of all high priority open conversations. Include the conversation ID, customer name (if available), last message content, and assigned agent. Group by status if relevant."
|
||||
},
|
||||
"LIST_CONTACTS": {
|
||||
"LABEL": "Llista de contactes",
|
||||
"CONTENT": "Mostra'm la llista dels 10 contactes principals. Inclou nom, correu electrònic o telèfon (si està disponible), última vegada que es va veure, etiquetes (si n'hi ha)."
|
||||
"LABEL": "List contacts",
|
||||
"CONTENT": "Show me the list of top 10 contacts. Include name, email or phone number (if available), last seen time, tags (if any)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"PLAYGROUND": {
|
||||
"USER": "Tu",
|
||||
"ASSISTANT": "Assistent",
|
||||
"ASSISTANT": "Assistant",
|
||||
"MESSAGE_PLACEHOLDER": "Escriu el missatge...",
|
||||
"HEADER": "Zona de proves",
|
||||
"DESCRIPTION": "Utilitza aquest espai de proves per enviar missatges al teu assistent i comprovar si respon de manera precisa, ràpida i amb el to que esperes.",
|
||||
"CREDIT_NOTE": "Els missatges enviats aquí comptaran per als teus crèdits de Captain."
|
||||
"HEADER": "Playground",
|
||||
"DESCRIPTION": "Use this playground to send messages to your assistant and check if it responds accurately, quickly, and in the tone you expect.",
|
||||
"CREDIT_NOTE": "Messages sent here will count toward your Captain credits."
|
||||
},
|
||||
"PAYWALL": {
|
||||
"TITLE": "Actualitza per usar Captain AI",
|
||||
"AVAILABLE_ON": "Captain no està disponible en el pla gratuït.",
|
||||
"UPGRADE_PROMPT": "Actualitza el teu pla per accedir als nostres assistents, copilot i més.",
|
||||
"TITLE": "Upgrade to use Captain AI",
|
||||
"AVAILABLE_ON": "Captain is not available on the free plan.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"UPGRADE_NOW": "Actualitza ara",
|
||||
"CANCEL_ANYTIME": "Pots canviar o cancel·lar el teu pla en qualsevol moment"
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "Captain AI només està disponible en els plans Enterprise.",
|
||||
"UPGRADE_PROMPT": "Actualitza el teu pla per accedir als nostres assistents, copilot i més.",
|
||||
"AVAILABLE_ON": "Captain AI is only available in the Enterprise plans.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"ASK_ADMIN": "Posa't en contacte amb el vostre administrador per obtenir l'actualització."
|
||||
},
|
||||
"BANNER": {
|
||||
"RESPONSES": "Has utilitzat més del 80% del teu límit de respostes. Per continuar utilitzant Captain AI, si us plau actualitza.",
|
||||
"DOCUMENTS": "S'ha arribat al límit de documents. Actualitza per continuar utilitzant Captain AI."
|
||||
"RESPONSES": "You've used over 80% of your response limit. To continue using Captain AI, please upgrade.",
|
||||
"DOCUMENTS": "Document limit reached. Upgrade to continue using Captain AI."
|
||||
},
|
||||
"FORM": {
|
||||
"CANCEL": "Cancel·la",
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Documents",
|
||||
"ADD_NEW": "Create a new document",
|
||||
"SELECTED": "{count} selected",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Unselect all ({count})",
|
||||
"BULK_DELETE_BUTTON": "Esborrar",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete all",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Related FAQs",
|
||||
"DESCRIPTION": "These FAQs are generated directly from the document."
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Tools",
|
||||
"ADD_NEW": "Create a new tool",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "No custom tools available",
|
||||
"SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Failed to delete custom tool"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Descripció",
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
"MESSAGING_RESTRICTED_WHATSAPP": "You can only reply using a template message due to 24-hour message window restriction",
|
||||
"MESSAGING_RESTRICTED_API": "You can only reply using a template message due to message window restriction",
|
||||
"MESSAGE_SIGNATURE_NOT_CONFIGURED": "Podpis zprávy není nakonfigurován, prosím nakonfigurujte jej v nastavení profilu.",
|
||||
"COPILOT_MSG_INPUT": "Dejte copilotu další podněty nebo se zeptejte na cokoliv dalšího... Stiskněte Enter pro odeslání pokračování",
|
||||
"COPILOT_MSG_INPUT": "Give copilot additional prompts, or ask anything else... Press enter to send follow-up",
|
||||
"CLICK_HERE": "Klikněte zde pro aktualizaci",
|
||||
"WHATSAPP_TEMPLATES": "Whatsapp Templates"
|
||||
},
|
||||
@@ -214,7 +214,7 @@
|
||||
"DRAG_DROP": "Přetažením sem připojíte",
|
||||
"START_AUDIO_RECORDING": "Spustit nahrávání zvuku",
|
||||
"STOP_AUDIO_RECORDING": "Zastavit nahrávání zvuku",
|
||||
"COPILOT_THINKING": "Copilot přemýšlí",
|
||||
"COPILOT_THINKING": "Copilot is thinking",
|
||||
"EMAIL_HEAD": {
|
||||
"TO": "TO",
|
||||
"ADD_BCC": "Přidat bcc",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "Locale removed from portal successfully",
|
||||
"ERROR_MESSAGE": "Unable to remove locale from portal. Try again."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} article | {count} articles",
|
||||
"CATEGORIES_COUNT": "{count} category | {count} categories",
|
||||
"DEFAULT": "Default",
|
||||
"DRAFT": "Koncept",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "Make default",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "Vymazat"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "Select locale..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "Stav",
|
||||
"OPTIONS": {
|
||||
"LIVE": "Publikované",
|
||||
"DRAFT": "Koncept"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale added successfully",
|
||||
"ERROR_MESSAGE": "Unable to add locale. Try again."
|
||||
|
||||
@@ -390,72 +390,72 @@
|
||||
},
|
||||
"CAPTAIN": {
|
||||
"NAME": "Captain",
|
||||
"HEADER_KNOW_MORE": "Zjistit více",
|
||||
"HEADER_KNOW_MORE": "Know more",
|
||||
"ASSISTANT_SWITCHER": {
|
||||
"ASSISTANTS": "Asistenti",
|
||||
"SWITCH_ASSISTANT": "Přepínání mezi asistenty",
|
||||
"NEW_ASSISTANT": "Vytvořit asistenta",
|
||||
"EMPTY_LIST": "Nebyli nalezeni žádní asistenti, prosím vytvořte si jednoho pro začátek"
|
||||
"ASSISTANTS": "Assistants",
|
||||
"SWITCH_ASSISTANT": "Switch between assistants",
|
||||
"NEW_ASSISTANT": "Create Assistant",
|
||||
"EMPTY_LIST": "No assistants found, please create one to get started"
|
||||
},
|
||||
"COPILOT": {
|
||||
"TITLE": "Copilot",
|
||||
"TRY_THESE_PROMPTS": "Try these prompts",
|
||||
"PANEL_TITLE": "Začněte s Copilotem",
|
||||
"KICK_OFF_MESSAGE": "Potřebujete rychlý přehled, chcete zkontrolovat předchozí rozhovory, nebo vytvořit lepší odpověď? Copilot je tu, aby to zrychlil.",
|
||||
"PANEL_TITLE": "Get started with Copilot",
|
||||
"KICK_OFF_MESSAGE": "Need a quick summary, want to check past conversations, or draft a better reply? Copilot’s here to speed things up.",
|
||||
"SEND_MESSAGE": "Send message...",
|
||||
"EMPTY_MESSAGE": "Při generování odpovědi došlo k chybě. Zkuste to prosím znovu.",
|
||||
"LOADER": "Captain přemýšlí",
|
||||
"EMPTY_MESSAGE": "There was an error generating the response. Please try again.",
|
||||
"LOADER": "Captain is thinking",
|
||||
"YOU": "Vy",
|
||||
"USE": "Použít toto",
|
||||
"RESET": "Resetovat",
|
||||
"SHOW_STEPS": "Zobrazit kroky",
|
||||
"SELECT_ASSISTANT": "Vybrat asistenta",
|
||||
"USE": "Use this",
|
||||
"RESET": "Reset",
|
||||
"SHOW_STEPS": "Show steps",
|
||||
"SELECT_ASSISTANT": "Select Assistant",
|
||||
"PROMPTS": {
|
||||
"SUMMARIZE": {
|
||||
"LABEL": "Shrň tuto konverzaci",
|
||||
"CONTENT": "Shrň klíčové body diskutované mezi zákazníkem a podpůrným agentem, včetně obav zákazníka, otázek a řešení nebo odpovědí poskytnutých agentem podpory"
|
||||
"LABEL": "Summarize this conversation",
|
||||
"CONTENT": "Summarize the key points discussed between the customer and the support agent, including the customer's concerns, questions, and the solutions or responses provided by the support agent"
|
||||
},
|
||||
"SUGGEST": {
|
||||
"LABEL": "Navrhni odpověď",
|
||||
"CONTENT": "Analyzuj dotaz zákazníka a vytvoř odpověď, která efektivně řeší jeho obavy nebo otázky. Zajisti, aby byla odpověď jasná, stručná a poskytovala užitečné informace."
|
||||
"LABEL": "Suggest an answer",
|
||||
"CONTENT": "Analyze the customer's inquiry, and draft a response that effectively addresses their concerns or questions. Ensure the reply is clear, concise, and provides helpful information."
|
||||
},
|
||||
"RATE": {
|
||||
"LABEL": "Ohodnoť tuto konverzaci",
|
||||
"CONTENT": "Prohlédni konverzaci a zhodnoť, jak dobře odpovídá potřebám zákazníka. Sdílej hodnocení od 1 do 5 na základě tónu, srozumitelnosti a efektivity."
|
||||
"LABEL": "Rate this conversation",
|
||||
"CONTENT": "Review the conversation to see how well it meets the customer's needs. Share a rating out of 5 based on tone, clarity, and effectiveness."
|
||||
},
|
||||
"HIGH_PRIORITY": {
|
||||
"LABEL": "Konverzace s vysokou prioritou",
|
||||
"CONTENT": "Dej mi shrnutí všech otevřených konverzací s vysokou prioritou. Uveď ID konverzace, jméno zákazníka (pokud je k dispozici), obsah poslední zprávy a přiděleného agenta. Pokud je relevantní, seskup je podle stavu."
|
||||
"LABEL": "High priority conversations",
|
||||
"CONTENT": "Give me a summary of all high priority open conversations. Include the conversation ID, customer name (if available), last message content, and assigned agent. Group by status if relevant."
|
||||
},
|
||||
"LIST_CONTACTS": {
|
||||
"LABEL": "Seznam kontaktů",
|
||||
"CONTENT": "Ukázat seznam 10 nejlepších kontaktů. Uveď jméno, email nebo telefonní číslo (pokud je k dispozici), čas posledního přístupu, štítky (pokud jsou)."
|
||||
"LABEL": "List contacts",
|
||||
"CONTENT": "Show me the list of top 10 contacts. Include name, email or phone number (if available), last seen time, tags (if any)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"PLAYGROUND": {
|
||||
"USER": "Vy",
|
||||
"ASSISTANT": "Asistent",
|
||||
"ASSISTANT": "Assistant",
|
||||
"MESSAGE_PLACEHOLDER": "Zde začněte psát...",
|
||||
"HEADER": "Hřiště",
|
||||
"DESCRIPTION": "Použijte toto hřiště pro odesílání zpráv vašemu asistentovi a ověřte, zda odpovídá přesně, rychle a v očekávaném tónu.",
|
||||
"CREDIT_NOTE": "Zprávy odeslané zde se budou počítat do vašich kreditů Captain."
|
||||
"HEADER": "Playground",
|
||||
"DESCRIPTION": "Use this playground to send messages to your assistant and check if it responds accurately, quickly, and in the tone you expect.",
|
||||
"CREDIT_NOTE": "Messages sent here will count toward your Captain credits."
|
||||
},
|
||||
"PAYWALL": {
|
||||
"TITLE": "Upgradujte pro používání Captain AI",
|
||||
"AVAILABLE_ON": "Captain není dostupný v bezplatném plánu.",
|
||||
"UPGRADE_PROMPT": "Upgradujte svůj plán, abyste získali přístup k našim asistentům, copilotu a dalším funkcím.",
|
||||
"TITLE": "Upgrade to use Captain AI",
|
||||
"AVAILABLE_ON": "Captain is not available on the free plan.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"UPGRADE_NOW": "Upgrade now",
|
||||
"CANCEL_ANYTIME": "You can change or cancel your plan anytime"
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "Captain AI je dostupný pouze v podnicích plánech.",
|
||||
"UPGRADE_PROMPT": "Upgradujte svůj plán, abyste získali přístup k našim asistentům, copilotu a dalším funkcím.",
|
||||
"AVAILABLE_ON": "Captain AI is only available in the Enterprise plans.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"ASK_ADMIN": "Please reach out to your administrator for the upgrade."
|
||||
},
|
||||
"BANNER": {
|
||||
"RESPONSES": "Vyčerpali jste více než 80 % svého limitu odpovědí. Pro pokračování v používání Captain AI upgradujte.",
|
||||
"DOCUMENTS": "Limit dokumentů byl dosažen. Pro pokračování v používání Captain AI upgradujte."
|
||||
"RESPONSES": "You've used over 80% of your response limit. To continue using Captain AI, please upgrade.",
|
||||
"DOCUMENTS": "Document limit reached. Upgrade to continue using Captain AI."
|
||||
},
|
||||
"FORM": {
|
||||
"CANCEL": "Zrušit",
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Documents",
|
||||
"ADD_NEW": "Create a new document",
|
||||
"SELECTED": "{count} selected",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Unselect all ({count})",
|
||||
"BULK_DELETE_BUTTON": "Vymazat",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete all",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Related FAQs",
|
||||
"DESCRIPTION": "These FAQs are generated directly from the document."
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Tools",
|
||||
"ADD_NEW": "Create a new tool",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "No custom tools available",
|
||||
"SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Failed to delete custom tool"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Description",
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
"MESSAGING_RESTRICTED_WHATSAPP": "You can only reply using a template message due to 24-hour message window restriction",
|
||||
"MESSAGING_RESTRICTED_API": "You can only reply using a template message due to message window restriction",
|
||||
"MESSAGE_SIGNATURE_NOT_CONFIGURED": "Beskedsignatur er ikke konfigureret, konfigurer den i profilindstillinger.",
|
||||
"COPILOT_MSG_INPUT": "Giv copilot yderligere prompts, eller spørg om noget andet... Tryk enter for at sende opfølgning",
|
||||
"COPILOT_MSG_INPUT": "Give copilot additional prompts, or ask anything else... Press enter to send follow-up",
|
||||
"CLICK_HERE": "Klik her for at opdatere",
|
||||
"WHATSAPP_TEMPLATES": "Whatsapp Skabeloner"
|
||||
},
|
||||
@@ -214,7 +214,7 @@
|
||||
"DRAG_DROP": "Træk og slip her for at vedhæfte",
|
||||
"START_AUDIO_RECORDING": "Start lydoptagelse",
|
||||
"STOP_AUDIO_RECORDING": "Stop lydoptagelse",
|
||||
"COPILOT_THINKING": "Copilot tænker",
|
||||
"COPILOT_THINKING": "Copilot is thinking",
|
||||
"EMAIL_HEAD": {
|
||||
"TO": "TO",
|
||||
"ADD_BCC": "Tilføj bcc",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "Landestandard fjernet fra portal",
|
||||
"ERROR_MESSAGE": "Kan ikke fjerne landestandard fra portalen. Prøv igen."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} article | {count} articles",
|
||||
"CATEGORIES_COUNT": "{count} category | {count} categories",
|
||||
"DEFAULT": "Standard",
|
||||
"DRAFT": "Kladde",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "Make default",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "Slet"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "Select locale..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "Status",
|
||||
"OPTIONS": {
|
||||
"LIVE": "Publiceret",
|
||||
"DRAFT": "Kladde"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Landestandard tilføjet",
|
||||
"ERROR_MESSAGE": "Kan ikke tilføje locale. Prøv igen."
|
||||
|
||||
@@ -390,72 +390,72 @@
|
||||
},
|
||||
"CAPTAIN": {
|
||||
"NAME": "Captain",
|
||||
"HEADER_KNOW_MORE": "Få mere at vide",
|
||||
"HEADER_KNOW_MORE": "Know more",
|
||||
"ASSISTANT_SWITCHER": {
|
||||
"ASSISTANTS": "Assistenter",
|
||||
"SWITCH_ASSISTANT": "Skift mellem assistenter",
|
||||
"NEW_ASSISTANT": "Opret assistent",
|
||||
"EMPTY_LIST": "Ingen assistenter fundet, opret en for at komme i gang"
|
||||
"ASSISTANTS": "Assistants",
|
||||
"SWITCH_ASSISTANT": "Switch between assistants",
|
||||
"NEW_ASSISTANT": "Create Assistant",
|
||||
"EMPTY_LIST": "No assistants found, please create one to get started"
|
||||
},
|
||||
"COPILOT": {
|
||||
"TITLE": "Copilot",
|
||||
"TRY_THESE_PROMPTS": "Try these prompts",
|
||||
"PANEL_TITLE": "Kom godt i gang med Copilot",
|
||||
"KICK_OFF_MESSAGE": "Brug for et hurtigt sammendrag, vil du tjekke tidligere samtaler eller udarbejde et bedre svar? Copilot er her for at fremskynde processen.",
|
||||
"PANEL_TITLE": "Get started with Copilot",
|
||||
"KICK_OFF_MESSAGE": "Need a quick summary, want to check past conversations, or draft a better reply? Copilot’s here to speed things up.",
|
||||
"SEND_MESSAGE": "Send besked...",
|
||||
"EMPTY_MESSAGE": "Der opstod en fejl ved generering af svaret. Prøv igen.",
|
||||
"LOADER": "Captain tænker",
|
||||
"EMPTY_MESSAGE": "There was an error generating the response. Please try again.",
|
||||
"LOADER": "Captain is thinking",
|
||||
"YOU": "Dig",
|
||||
"USE": "Brug dette",
|
||||
"RESET": "Nulstil",
|
||||
"SHOW_STEPS": "Vis trin",
|
||||
"SELECT_ASSISTANT": "Vælg assistent",
|
||||
"USE": "Use this",
|
||||
"RESET": "Reset",
|
||||
"SHOW_STEPS": "Show steps",
|
||||
"SELECT_ASSISTANT": "Select Assistant",
|
||||
"PROMPTS": {
|
||||
"SUMMARIZE": {
|
||||
"LABEL": "Sammenfat denne samtale",
|
||||
"CONTENT": "Sammenfat hovedpunkterne diskuteret mellem kunden og supportagenten, inklusive kundens bekymringer, spørgsmål og de løsninger eller svar, supportagenten har givet"
|
||||
"LABEL": "Summarize this conversation",
|
||||
"CONTENT": "Summarize the key points discussed between the customer and the support agent, including the customer's concerns, questions, and the solutions or responses provided by the support agent"
|
||||
},
|
||||
"SUGGEST": {
|
||||
"LABEL": "Foreslå et svar",
|
||||
"CONTENT": "Analyser kundens forespørgsel, og udarbejd et svar, der effektivt imødekommer deres bekymringer eller spørgsmål. Sørg for, at svaret er klart, præcist og giver nyttige oplysninger."
|
||||
"LABEL": "Suggest an answer",
|
||||
"CONTENT": "Analyze the customer's inquiry, and draft a response that effectively addresses their concerns or questions. Ensure the reply is clear, concise, and provides helpful information."
|
||||
},
|
||||
"RATE": {
|
||||
"LABEL": "Vurder denne samtale",
|
||||
"CONTENT": "Gennemgå samtalen for at se, hvor godt den opfylder kundens behov. Del en vurdering ud af 5 baseret på tone, klarhed og effektivitet."
|
||||
"LABEL": "Rate this conversation",
|
||||
"CONTENT": "Review the conversation to see how well it meets the customer's needs. Share a rating out of 5 based on tone, clarity, and effectiveness."
|
||||
},
|
||||
"HIGH_PRIORITY": {
|
||||
"LABEL": "Samtaler med høj prioritet",
|
||||
"CONTENT": "Giv mig et sammendrag af alle åbne samtaler med høj prioritet. Inkluder samtale-ID, kundens navn (hvis tilgængeligt), indholdet af sidste besked og tildelt agent. Grupper efter status, hvis relevant."
|
||||
"LABEL": "High priority conversations",
|
||||
"CONTENT": "Give me a summary of all high priority open conversations. Include the conversation ID, customer name (if available), last message content, and assigned agent. Group by status if relevant."
|
||||
},
|
||||
"LIST_CONTACTS": {
|
||||
"LABEL": "Liste over kontakter",
|
||||
"CONTENT": "Vis mig listen over de 10 bedste kontakter. Inkluder navn, e-mail eller telefonnummer (hvis tilgængeligt), sidst set tidspunkt, tags (hvis nogen)."
|
||||
"LABEL": "List contacts",
|
||||
"CONTENT": "Show me the list of top 10 contacts. Include name, email or phone number (if available), last seen time, tags (if any)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"PLAYGROUND": {
|
||||
"USER": "Dig",
|
||||
"ASSISTANT": "Assistent",
|
||||
"ASSISTANT": "Assistant",
|
||||
"MESSAGE_PLACEHOLDER": "Skriv din besked...",
|
||||
"HEADER": "Legeplads",
|
||||
"DESCRIPTION": "Brug denne legeplads til at sende beskeder til din assistent og tjekke, om den svarer korrekt, hurtigt og i den tone, du forventer.",
|
||||
"CREDIT_NOTE": "Beskeder sendt her tæller mod dine Captain-kreditter."
|
||||
"HEADER": "Playground",
|
||||
"DESCRIPTION": "Use this playground to send messages to your assistant and check if it responds accurately, quickly, and in the tone you expect.",
|
||||
"CREDIT_NOTE": "Messages sent here will count toward your Captain credits."
|
||||
},
|
||||
"PAYWALL": {
|
||||
"TITLE": "Opgrader for at bruge Captain AI",
|
||||
"AVAILABLE_ON": "Captain er ikke tilgængelig på gratisplanen.",
|
||||
"UPGRADE_PROMPT": "Opgrader din plan for at få adgang til vores assistenter, copilot og mere.",
|
||||
"TITLE": "Upgrade to use Captain AI",
|
||||
"AVAILABLE_ON": "Captain is not available on the free plan.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"UPGRADE_NOW": "Upgrade now",
|
||||
"CANCEL_ANYTIME": "You can change or cancel your plan anytime"
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "Captain AI er kun tilgængelig i Enterprise-planerne.",
|
||||
"UPGRADE_PROMPT": "Opgrader din plan for at få adgang til vores assistenter, copilot og mere.",
|
||||
"AVAILABLE_ON": "Captain AI is only available in the Enterprise plans.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"ASK_ADMIN": "Please reach out to your administrator for the upgrade."
|
||||
},
|
||||
"BANNER": {
|
||||
"RESPONSES": "Du har brugt over 80 % af din svargrænse. For at fortsætte med at bruge Captain AI skal du opgradere.",
|
||||
"DOCUMENTS": "Dokumentgrænse nået. Opgrader for at fortsætte med at bruge Captain AI."
|
||||
"RESPONSES": "You've used over 80% of your response limit. To continue using Captain AI, please upgrade.",
|
||||
"DOCUMENTS": "Document limit reached. Upgrade to continue using Captain AI."
|
||||
},
|
||||
"FORM": {
|
||||
"CANCEL": "Annuller",
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Documents",
|
||||
"ADD_NEW": "Create a new document",
|
||||
"SELECTED": "{count} selected",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Unselect all ({count})",
|
||||
"BULK_DELETE_BUTTON": "Slet",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete all",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Related FAQs",
|
||||
"DESCRIPTION": "These FAQs are generated directly from the document."
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Tools",
|
||||
"ADD_NEW": "Create a new tool",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "No custom tools available",
|
||||
"SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Failed to delete custom tool"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Beskrivelse",
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
"MESSAGING_RESTRICTED_WHATSAPP": "You can only reply using a template message due to 24-hour message window restriction",
|
||||
"MESSAGING_RESTRICTED_API": "You can only reply using a template message due to message window restriction",
|
||||
"MESSAGE_SIGNATURE_NOT_CONFIGURED": "Die Nachrichtensignatur ist nicht konfiguriert, bitte konfigurieren Sie sie in den Profileinstellungen.",
|
||||
"COPILOT_MSG_INPUT": "Geben Sie Copilot zusätzliche Aufforderungen oder fragen Sie etwas anderes ... Drücken Sie Enter, um eine Folgefrage zu senden",
|
||||
"COPILOT_MSG_INPUT": "Give copilot additional prompts, or ask anything else... Press enter to send follow-up",
|
||||
"CLICK_HERE": "Klicken Sie hier, um zu aktualisieren",
|
||||
"WHATSAPP_TEMPLATES": "WhatsApp-Vorlagen"
|
||||
},
|
||||
@@ -214,7 +214,7 @@
|
||||
"DRAG_DROP": "Zum Anhängen hierher ziehen und ablegen",
|
||||
"START_AUDIO_RECORDING": "Audioaufzeichnung starten",
|
||||
"STOP_AUDIO_RECORDING": "Audioaufzeichnung stoppen",
|
||||
"COPILOT_THINKING": "Copilot denkt",
|
||||
"COPILOT_THINKING": "Copilot is thinking",
|
||||
"EMAIL_HEAD": {
|
||||
"TO": "An",
|
||||
"ADD_BCC": "BCC hinzufügen",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "Sprache wurde erfolgreich aus dem Portal entfernt",
|
||||
"ERROR_MESSAGE": "Sprache kann nicht aus dem Portal entfernt werden. Versuchen Sie es nochmal."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} article | {count} articles",
|
||||
"CATEGORIES_COUNT": "{count} category | {count} categories",
|
||||
"DEFAULT": "Standard",
|
||||
"DRAFT": "Entwürfe",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "Make default",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "Löschen"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "Sprache auswählen..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "Status",
|
||||
"OPTIONS": {
|
||||
"LIVE": "Veröffentlicht",
|
||||
"DRAFT": "Entwürfe"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Sprache erfolgreich hinzugefügt",
|
||||
"ERROR_MESSAGE": "Sprache kann nicht hinzugefügt werden. Versuchen Sie es nochmal."
|
||||
|
||||
@@ -390,71 +390,71 @@
|
||||
},
|
||||
"CAPTAIN": {
|
||||
"NAME": "Kapitän",
|
||||
"HEADER_KNOW_MORE": "Mehr erfahren",
|
||||
"HEADER_KNOW_MORE": "Know more",
|
||||
"ASSISTANT_SWITCHER": {
|
||||
"ASSISTANTS": "Assistenten",
|
||||
"SWITCH_ASSISTANT": "Zwischen Assistenten wechseln",
|
||||
"NEW_ASSISTANT": "Assistent erstellen",
|
||||
"EMPTY_LIST": "Keine Assistenten gefunden, bitte erstellen Sie einen, um zu beginnen"
|
||||
"ASSISTANTS": "Assistants",
|
||||
"SWITCH_ASSISTANT": "Switch between assistants",
|
||||
"NEW_ASSISTANT": "Create Assistant",
|
||||
"EMPTY_LIST": "No assistants found, please create one to get started"
|
||||
},
|
||||
"COPILOT": {
|
||||
"TITLE": "Copilot",
|
||||
"TRY_THESE_PROMPTS": "Probiere diese Prompts",
|
||||
"PANEL_TITLE": "Starten Sie mit Copilot",
|
||||
"KICK_OFF_MESSAGE": "Brauchen Sie eine schnelle Zusammenfassung, möchten Sie vergangene Gespräche prüfen oder eine bessere Antwort entwerfen? Copilot hilft Ihnen, schneller voranzukommen.",
|
||||
"PANEL_TITLE": "Get started with Copilot",
|
||||
"KICK_OFF_MESSAGE": "Need a quick summary, want to check past conversations, or draft a better reply? Copilot’s here to speed things up.",
|
||||
"SEND_MESSAGE": "Nachricht senden...",
|
||||
"EMPTY_MESSAGE": "Beim Generieren der Antwort ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.",
|
||||
"EMPTY_MESSAGE": "There was an error generating the response. Please try again.",
|
||||
"LOADER": "Captain denkt nach",
|
||||
"YOU": "Sie",
|
||||
"USE": "Verwenden",
|
||||
"RESET": "Zurücksetzen",
|
||||
"SHOW_STEPS": "Schritte anzeigen",
|
||||
"SHOW_STEPS": "Show steps",
|
||||
"SELECT_ASSISTANT": "Assistent auswählen",
|
||||
"PROMPTS": {
|
||||
"SUMMARIZE": {
|
||||
"LABEL": "Dieses Gespräch zusammenfassen",
|
||||
"CONTENT": "Fassen Sie die wichtigsten Punkte zusammen, die zwischen dem Kunden und dem Supportmitarbeiter besprochen wurden, einschließlich der Anliegen, Fragen des Kunden sowie der vom Supportmitarbeiter gegebenen Lösungen oder Antworten"
|
||||
"LABEL": "Summarize this conversation",
|
||||
"CONTENT": "Summarize the key points discussed between the customer and the support agent, including the customer's concerns, questions, and the solutions or responses provided by the support agent"
|
||||
},
|
||||
"SUGGEST": {
|
||||
"LABEL": "Antwort vorschlagen",
|
||||
"CONTENT": "Analysiere die Anfrage des Kunden und entwerfe eine Antwort, die seine Anliegen oder Fragen effektiv beantwortet. Stelle sicher, dass die Antwort klar, prägnant und hilfreich ist."
|
||||
"LABEL": "Suggest an answer",
|
||||
"CONTENT": "Analyze the customer's inquiry, and draft a response that effectively addresses their concerns or questions. Ensure the reply is clear, concise, and provides helpful information."
|
||||
},
|
||||
"RATE": {
|
||||
"LABEL": "Bewerten Sie dieses Gespräch",
|
||||
"CONTENT": "Bewerten Sie das Gespräch, um zu sehen, wie gut es die Bedürfnisse des Kunden erfüllt. Geben Sie eine Bewertung von 1 bis 5 basierend auf Ton, Klarheit und Effektivität ab."
|
||||
"LABEL": "Rate this conversation",
|
||||
"CONTENT": "Review the conversation to see how well it meets the customer's needs. Share a rating out of 5 based on tone, clarity, and effectiveness."
|
||||
},
|
||||
"HIGH_PRIORITY": {
|
||||
"LABEL": "Gespräche mit hoher Priorität",
|
||||
"CONTENT": "Gib mir eine Zusammenfassung aller offenen Gespräche mit hoher Priorität. Bitte die Gesprächs-ID, den Kundennamen (falls vorhanden), den Inhalt der letzten Nachricht und den zugewiesenen Mitarbeiter einschließen. Gruppiere nach Status, wenn relevant."
|
||||
"LABEL": "High priority conversations",
|
||||
"CONTENT": "Give me a summary of all high priority open conversations. Include the conversation ID, customer name (if available), last message content, and assigned agent. Group by status if relevant."
|
||||
},
|
||||
"LIST_CONTACTS": {
|
||||
"LABEL": "Kontakte auflisten",
|
||||
"CONTENT": "Zeige mir die Liste der Top 10 Kontakte. Bitte Name, E-Mail oder Telefonnummer (falls vorhanden), zuletzt gesehen Zeit, Tags (falls vorhanden) einschließen."
|
||||
"LABEL": "List contacts",
|
||||
"CONTENT": "Show me the list of top 10 contacts. Include name, email or phone number (if available), last seen time, tags (if any)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"PLAYGROUND": {
|
||||
"USER": "Sie",
|
||||
"ASSISTANT": "Assistent",
|
||||
"ASSISTANT": "Assistant",
|
||||
"MESSAGE_PLACEHOLDER": "Schreiben Sie Ihre Nachricht...",
|
||||
"HEADER": "Spielwiese",
|
||||
"DESCRIPTION": "Nutzen Sie diesen Playground, um Nachrichten an Ihren Assistenten zu senden und zu prüfen, ob dieser genau, schnell und im erwarteten Ton antwortet.",
|
||||
"CREDIT_NOTE": "Hier gesendete Nachrichten werden auf Ihre Captain-Guthaben angerechnet."
|
||||
"HEADER": "Playground",
|
||||
"DESCRIPTION": "Use this playground to send messages to your assistant and check if it responds accurately, quickly, and in the tone you expect.",
|
||||
"CREDIT_NOTE": "Messages sent here will count toward your Captain credits."
|
||||
},
|
||||
"PAYWALL": {
|
||||
"TITLE": "Upgrade auf Captain AI",
|
||||
"AVAILABLE_ON": "Captain ist im kostenlosen Tarif nicht verfügbar.",
|
||||
"AVAILABLE_ON": "Captain is not available on the free plan.",
|
||||
"UPGRADE_PROMPT": "Tarif upgraden, um Zugang zu unseren Assistenten, Copilot und mehr zu erhalten.",
|
||||
"UPGRADE_NOW": "Jetzt upgraden",
|
||||
"CANCEL_ANYTIME": "Sie können Ihr Paket jederzeit ändern oder kündigen"
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "Captain AI ist nur in den Enterprise-Tarifen verfügbar.",
|
||||
"AVAILABLE_ON": "Captain AI is only available in the Enterprise plans.",
|
||||
"UPGRADE_PROMPT": "Tarif upgraden, um Zugang zu unseren Assistenten, Copilot und mehr zu erhalten.",
|
||||
"ASK_ADMIN": "Bitte kontaktieren Sie Ihren Administrator für das Upgrade."
|
||||
},
|
||||
"BANNER": {
|
||||
"RESPONSES": "Sie haben über 80 % Ihres Antwortlimits verbraucht. Um Captain AI weiterhin zu nutzen, bitte upgraden.",
|
||||
"RESPONSES": "You've used over 80% of your response limit. To continue using Captain AI, please upgrade.",
|
||||
"DOCUMENTS": "Dokumentenlimit erreicht. Upgraden um Cpatain AI weiter zu verwenden."
|
||||
},
|
||||
"FORM": {
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Documents",
|
||||
"ADD_NEW": "Create a new document",
|
||||
"SELECTED": "{count} selected",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Unselect all ({count})",
|
||||
"BULK_DELETE_BUTTON": "Löschen",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete all",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Related FAQs",
|
||||
"DESCRIPTION": "These FAQs are generated directly from the document."
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Tools",
|
||||
"ADD_NEW": "Create a new tool",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "No custom tools available",
|
||||
"SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Failed to delete custom tool"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Beschreibung",
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
"MESSAGING_RESTRICTED_WHATSAPP": "You can only reply using a template message due to 24-hour message window restriction",
|
||||
"MESSAGING_RESTRICTED_API": "You can only reply using a template message due to message window restriction",
|
||||
"MESSAGE_SIGNATURE_NOT_CONFIGURED": "Δεν έχει ρυθμιστεί η υπογραφή μηνύματος, παρακαλώ ρυθμίστε την στις ρυθμίσεις προφίλ.",
|
||||
"COPILOT_MSG_INPUT": "Δώστε στον copilot επιπλέον εντολές ή ρωτήστε οτιδήποτε άλλο... Πατήστε enter για να στείλετε συνέχεια",
|
||||
"COPILOT_MSG_INPUT": "Give copilot additional prompts, or ask anything else... Press enter to send follow-up",
|
||||
"CLICK_HERE": "Πατήστε εδώ για ενημέρωση",
|
||||
"WHATSAPP_TEMPLATES": "Πρότυπα Whatsapp"
|
||||
},
|
||||
@@ -214,7 +214,7 @@
|
||||
"DRAG_DROP": "Σύρετε και αφήστε εδώ για επισύναψη",
|
||||
"START_AUDIO_RECORDING": "Έναρξη ηχογράφησης",
|
||||
"STOP_AUDIO_RECORDING": "Διακοπή ηχογράφησης",
|
||||
"COPILOT_THINKING": "Ο Copilot σκέφτεται",
|
||||
"COPILOT_THINKING": "Copilot is thinking",
|
||||
"EMAIL_HEAD": {
|
||||
"TO": "TO",
|
||||
"ADD_BCC": "Προσθήκη bcc",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "Η γλώσσα αφαιρέθηκε επιτυχώς από την πύλη",
|
||||
"ERROR_MESSAGE": "Δεν είναι δυνατή η αφαίρεση γλώσσας από την πύλη. Δοκιμάστε ξανά."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} article | {count} articles",
|
||||
"CATEGORIES_COUNT": "{count} category | {count} categories",
|
||||
"DEFAULT": "Προεπιλογή",
|
||||
"DRAFT": "Πρόχειρο",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "Make default",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "Διαγραφή"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "Select locale..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "Κατάσταση",
|
||||
"OPTIONS": {
|
||||
"LIVE": "Δημοσιευμένο",
|
||||
"DRAFT": "Πρόχειρο"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Η γλώσσα προστέθηκε επιτυχώς",
|
||||
"ERROR_MESSAGE": "Δεν είναι δυνατή η προσθήκη γλώσσας. Δοκιμάστε ξανά."
|
||||
|
||||
@@ -390,72 +390,72 @@
|
||||
},
|
||||
"CAPTAIN": {
|
||||
"NAME": "Captain",
|
||||
"HEADER_KNOW_MORE": "Μάθετε περισσότερα",
|
||||
"HEADER_KNOW_MORE": "Know more",
|
||||
"ASSISTANT_SWITCHER": {
|
||||
"ASSISTANTS": "Βοηθοί",
|
||||
"SWITCH_ASSISTANT": "Εναλλαγή μεταξύ βοηθών",
|
||||
"NEW_ASSISTANT": "Δημιουργία Βοηθού",
|
||||
"EMPTY_LIST": "Δεν βρέθηκαν βοηθοί, παρακαλώ δημιουργήστε έναν για να ξεκινήσετε"
|
||||
"ASSISTANTS": "Assistants",
|
||||
"SWITCH_ASSISTANT": "Switch between assistants",
|
||||
"NEW_ASSISTANT": "Create Assistant",
|
||||
"EMPTY_LIST": "No assistants found, please create one to get started"
|
||||
},
|
||||
"COPILOT": {
|
||||
"TITLE": "Copilot",
|
||||
"TRY_THESE_PROMPTS": "Try these prompts",
|
||||
"PANEL_TITLE": "Ξεκινήστε με τον Copilot",
|
||||
"KICK_OFF_MESSAGE": "Χρειάζεστε μια γρήγορη περίληψη, θέλετε να ελέγξετε παλιές συνομιλίες ή να συντάξετε μια καλύτερη απάντηση; Ο Copilot είναι εδώ για να επιταχύνει τα πράγματα.",
|
||||
"PANEL_TITLE": "Get started with Copilot",
|
||||
"KICK_OFF_MESSAGE": "Need a quick summary, want to check past conversations, or draft a better reply? Copilot’s here to speed things up.",
|
||||
"SEND_MESSAGE": "Αποστολή μηνύματος...",
|
||||
"EMPTY_MESSAGE": "Παρουσιάστηκε σφάλμα κατά τη δημιουργία της απάντησης. Προσπαθήστε ξανά.",
|
||||
"LOADER": "Ο Captain σκέφτεται",
|
||||
"EMPTY_MESSAGE": "There was an error generating the response. Please try again.",
|
||||
"LOADER": "Captain is thinking",
|
||||
"YOU": "You",
|
||||
"USE": "Χρησιμοποίησε αυτό",
|
||||
"RESET": "Επαναφορά",
|
||||
"SHOW_STEPS": "Εμφάνιση βημάτων",
|
||||
"SELECT_ASSISTANT": "Επιλογή Βοηθού",
|
||||
"USE": "Use this",
|
||||
"RESET": "Reset",
|
||||
"SHOW_STEPS": "Show steps",
|
||||
"SELECT_ASSISTANT": "Select Assistant",
|
||||
"PROMPTS": {
|
||||
"SUMMARIZE": {
|
||||
"LABEL": "Συνοψίστε αυτή τη συνομιλία",
|
||||
"CONTENT": "Συνοψίστε τα βασικά σημεία που συζητήθηκαν μεταξύ του πελάτη και του εκπροσώπου υποστήριξης, συμπεριλαμβανομένων των ανησυχιών, των ερωτήσεων του πελάτη και των λύσεων ή απαντήσεων που παρείχε ο εκπρόσωπος υποστήριξης"
|
||||
"LABEL": "Summarize this conversation",
|
||||
"CONTENT": "Summarize the key points discussed between the customer and the support agent, including the customer's concerns, questions, and the solutions or responses provided by the support agent"
|
||||
},
|
||||
"SUGGEST": {
|
||||
"LABEL": "Προτείνετε μια απάντηση",
|
||||
"CONTENT": "Αναλύστε το ερώτημα του πελάτη και φτιάξτε μια απάντηση που αντιμετωπίζει αποτελεσματικά τις ανησυχίες ή ερωτήσεις του. Βεβαιωθείτε ότι η απάντηση είναι σαφής, συνοπτική και παρέχει χρήσιμες πληροφορίες."
|
||||
"LABEL": "Suggest an answer",
|
||||
"CONTENT": "Analyze the customer's inquiry, and draft a response that effectively addresses their concerns or questions. Ensure the reply is clear, concise, and provides helpful information."
|
||||
},
|
||||
"RATE": {
|
||||
"LABEL": "Βαθμολογήστε αυτή τη συνομιλία",
|
||||
"CONTENT": "Αξιολογήστε τη συνομιλία για το πόσο καλά ικανοποιεί τις ανάγκες του πελάτη. Μοιραστείτε μια βαθμολογία από 5 βασιζόμενοι στον τόνο, την καθαρότητα και την αποτελεσματικότητα."
|
||||
"LABEL": "Rate this conversation",
|
||||
"CONTENT": "Review the conversation to see how well it meets the customer's needs. Share a rating out of 5 based on tone, clarity, and effectiveness."
|
||||
},
|
||||
"HIGH_PRIORITY": {
|
||||
"LABEL": "Συνομιλίες υψηλής προτεραιότητας",
|
||||
"CONTENT": "Δώστε μου μια περίληψη όλων των ανοιχτών συνομιλιών υψηλής προτεραιότητας. Συμπεριλάβετε τον ID συνομιλίας, το όνομα πελάτη (αν είναι διαθέσιμο), το περιεχόμενο του τελευταίου μηνύματος και τον ανατεθέντα πράκτορα. Ομαδοποιήστε κατά κατάσταση εάν είναι σχετικό."
|
||||
"LABEL": "High priority conversations",
|
||||
"CONTENT": "Give me a summary of all high priority open conversations. Include the conversation ID, customer name (if available), last message content, and assigned agent. Group by status if relevant."
|
||||
},
|
||||
"LIST_CONTACTS": {
|
||||
"LABEL": "Καταχώρηση επαφών",
|
||||
"CONTENT": "Δείξε μου τη λίστα με τις 10 κορυφαίες επαφές. Συμπεριλάβετε όνομα, email ή αριθμό τηλεφώνου (αν είναι διαθέσιμο), τελευταία φορά που εμφανίστηκαν, ετικέτες (αν υπάρχουν)."
|
||||
"LABEL": "List contacts",
|
||||
"CONTENT": "Show me the list of top 10 contacts. Include name, email or phone number (if available), last seen time, tags (if any)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"PLAYGROUND": {
|
||||
"USER": "You",
|
||||
"ASSISTANT": "Βοηθός",
|
||||
"ASSISTANT": "Assistant",
|
||||
"MESSAGE_PLACEHOLDER": "Πληκτρολογήστε το μήνυμά σας...",
|
||||
"HEADER": "Παιδική Χαρά",
|
||||
"DESCRIPTION": "Χρησιμοποιήστε αυτήν την παιδική χαρά για να στείλετε μηνύματα στον βοηθό σας και να ελέγξετε αν ανταποκρίνεται με ακρίβεια, γρήγορα και με τον τόνο που περιμένετε.",
|
||||
"CREDIT_NOTE": "Τα μηνύματα που στέλνονται εδώ θα μετρήσουν στα credits του Captain σας."
|
||||
"HEADER": "Playground",
|
||||
"DESCRIPTION": "Use this playground to send messages to your assistant and check if it responds accurately, quickly, and in the tone you expect.",
|
||||
"CREDIT_NOTE": "Messages sent here will count toward your Captain credits."
|
||||
},
|
||||
"PAYWALL": {
|
||||
"TITLE": "Αναβαθμίστε για να χρησιμοποιήσετε το Captain AI",
|
||||
"AVAILABLE_ON": "Ο Captain δεν είναι διαθέσιμος στο δωρεάν πακέτο.",
|
||||
"UPGRADE_PROMPT": "Αναβαθμίστε το πακέτο σας για να αποκτήσετε πρόσβαση στους βοηθούς μας, τον copilot και άλλα.",
|
||||
"TITLE": "Upgrade to use Captain AI",
|
||||
"AVAILABLE_ON": "Captain is not available on the free plan.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"UPGRADE_NOW": "Upgrade now",
|
||||
"CANCEL_ANYTIME": "You can change or cancel your plan anytime"
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "Το Captain AI είναι διαθέσιμο μόνο στα Enterprise πακέτα.",
|
||||
"UPGRADE_PROMPT": "Αναβαθμίστε το πακέτο σας για να αποκτήσετε πρόσβαση στους βοηθούς μας, τον copilot και άλλα.",
|
||||
"AVAILABLE_ON": "Captain AI is only available in the Enterprise plans.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"ASK_ADMIN": "Please reach out to your administrator for the upgrade."
|
||||
},
|
||||
"BANNER": {
|
||||
"RESPONSES": "Έχετε χρησιμοποιήσει πάνω από το 80% του ορίου απαντήσεών σας. Για να συνεχίσετε να χρησιμοποιείτε το Captain AI, παρακαλώ αναβαθμίστε.",
|
||||
"DOCUMENTS": "Έχετε φτάσει στο όριο εγγράφων. Αναβαθμίστε για να συνεχίσετε να χρησιμοποιείτε το Captain AI."
|
||||
"RESPONSES": "You've used over 80% of your response limit. To continue using Captain AI, please upgrade.",
|
||||
"DOCUMENTS": "Document limit reached. Upgrade to continue using Captain AI."
|
||||
},
|
||||
"FORM": {
|
||||
"CANCEL": "Άκυρο",
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Documents",
|
||||
"ADD_NEW": "Create a new document",
|
||||
"SELECTED": "{count} selected",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Unselect all ({count})",
|
||||
"BULK_DELETE_BUTTON": "Διαγραφή",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete all",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Related FAQs",
|
||||
"DESCRIPTION": "These FAQs are generated directly from the document."
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Tools",
|
||||
"ADD_NEW": "Create a new tool",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "No custom tools available",
|
||||
"SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Failed to delete custom tool"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Περιγραφή",
|
||||
|
||||
@@ -63,16 +63,6 @@
|
||||
"ERROR_MESSAGE": "Could not update bot. Please try again."
|
||||
}
|
||||
},
|
||||
"SECRET": {
|
||||
"LABEL": "Webhook Secret",
|
||||
"COPY": "Copy secret to clipboard",
|
||||
"COPY_SUCCESS": "Secret copied to clipboard",
|
||||
"TOGGLE": "Toggle secret visibility",
|
||||
"CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
|
||||
"DONE": "Done",
|
||||
"RESET_SUCCESS": "Webhook secret regenerated successfully",
|
||||
"RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
|
||||
},
|
||||
"ACCESS_TOKEN": {
|
||||
"TITLE": "Access Token",
|
||||
"DESCRIPTION": "Copy the access token and save it securely",
|
||||
|
||||
@@ -169,7 +169,6 @@
|
||||
},
|
||||
"ATTRIBUTES": {
|
||||
"MESSAGE_TYPE": "Message Type",
|
||||
"PRIVATE_NOTE": "Private Note",
|
||||
"MESSAGE_CONTAINS": "Message Contains",
|
||||
"EMAIL": "Email",
|
||||
"INBOX": "Inbox",
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
"CALL": "Call",
|
||||
"CALL_INITIATED": "Calling the contact…",
|
||||
"CALL_FAILED": "Unable to start the call. Please try again.",
|
||||
"CLICK_TO_EDIT": "Click to edit",
|
||||
"VOICE_INBOX_PICKER": {
|
||||
"TITLE": "Choose a voice inbox"
|
||||
},
|
||||
|
||||
@@ -86,14 +86,6 @@
|
||||
"PLACEHOLDER": "Please enter your Webhook URL",
|
||||
"ERROR": "Please enter a valid URL"
|
||||
},
|
||||
"CHANNEL_WEBHOOK_SECRET": {
|
||||
"LABEL": "Webhook Secret",
|
||||
"COPY": "Copy secret to clipboard",
|
||||
"COPY_SUCCESS": "Secret copied to clipboard",
|
||||
"TOGGLE": "Toggle secret visibility",
|
||||
"RESET_SUCCESS": "Webhook secret regenerated successfully",
|
||||
"RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
|
||||
},
|
||||
"CHANNEL_DOMAIN": {
|
||||
"LABEL": "Website Domain",
|
||||
"PLACEHOLDER": "Enter your website domain (eg: acme.com)"
|
||||
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Documents",
|
||||
"ADD_NEW": "Create a new document",
|
||||
"SELECTED": "{count} selected",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Unselect all ({count})",
|
||||
"BULK_DELETE_BUTTON": "Delete",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete all",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Related FAQs",
|
||||
"DESCRIPTION": "These FAQs are generated directly from the document."
|
||||
@@ -807,7 +796,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Tools",
|
||||
"ADD_NEW": "Create a new tool",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "No custom tools available",
|
||||
"SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.",
|
||||
@@ -838,30 +826,11 @@
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Failed to delete custom tool"
|
||||
},
|
||||
"PAYWALL": {
|
||||
"TITLE": "Upgrade to use tools with Captain",
|
||||
"AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
|
||||
"UPGRADE_PROMPT": "",
|
||||
"UPGRADE_NOW": "Open billing",
|
||||
"CANCEL_ANYTIME": ""
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
|
||||
"UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
|
||||
"ASK_ADMIN": "Please reach out to your administrator for the upgrade."
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Description",
|
||||
|
||||
@@ -68,8 +68,7 @@
|
||||
"API_SUCCESS": "Signature saved successfully",
|
||||
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
|
||||
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
|
||||
"IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
|
||||
"INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
|
||||
"IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
|
||||
},
|
||||
"MESSAGE_SIGNATURE": {
|
||||
"LABEL": "Message Signature",
|
||||
|
||||
@@ -45,13 +45,6 @@
|
||||
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
|
||||
},
|
||||
"SUBMIT": "Create account",
|
||||
"HAVE_AN_ACCOUNT": "Already have an account?",
|
||||
"VERIFY_EMAIL": {
|
||||
"TITLE": "Check your inbox",
|
||||
"DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
|
||||
"RESEND": "Resend verification email",
|
||||
"RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
|
||||
"RESEND_ERROR": "Could not send verification email. Please try again."
|
||||
}
|
||||
"HAVE_AN_ACCOUNT": "Already have an account?"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
"MESSAGING_RESTRICTED_WHATSAPP": "You can only reply using a template message due to 24-hour message window restriction",
|
||||
"MESSAGING_RESTRICTED_API": "You can only reply using a template message due to message window restriction",
|
||||
"MESSAGE_SIGNATURE_NOT_CONFIGURED": "La firma del mensaje no está configurada, por favor configúrela en la configuración del perfil.",
|
||||
"COPILOT_MSG_INPUT": "Dale instrucciones adicionales a Copilot o pregúntale cualquier otra cosa... Pulsa Enter para enviar el seguimiento",
|
||||
"COPILOT_MSG_INPUT": "Give copilot additional prompts, or ask anything else... Press enter to send follow-up",
|
||||
"CLICK_HERE": "Haga clic aquí para actualizar",
|
||||
"WHATSAPP_TEMPLATES": "Plantillas de Whatsapp"
|
||||
},
|
||||
@@ -214,7 +214,7 @@
|
||||
"DRAG_DROP": "Arrastra y suelta aquí para adjuntar",
|
||||
"START_AUDIO_RECORDING": "Iniciar grabación de audio",
|
||||
"STOP_AUDIO_RECORDING": "Detener grabación de audio",
|
||||
"COPILOT_THINKING": "Copilot está pensando",
|
||||
"COPILOT_THINKING": "Copilot is thinking",
|
||||
"EMAIL_HEAD": {
|
||||
"TO": "A",
|
||||
"ADD_BCC": "Añadir bcc",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "Idioma eliminado del portal correctamente",
|
||||
"ERROR_MESSAGE": "No se puede eliminar el idioma del portal. Vuelve a intentarlo."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} article | {count} articles",
|
||||
"CATEGORIES_COUNT": "{count} category | {count} categories",
|
||||
"DEFAULT": "Predeterminado",
|
||||
"DRAFT": "Borrador",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "Make default",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "Eliminar"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "Seleccionar idioma..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "Estado",
|
||||
"OPTIONS": {
|
||||
"LIVE": "Publicado",
|
||||
"DRAFT": "Borrador"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Idioma añadido correctamente",
|
||||
"ERROR_MESSAGE": "No se puede añadir el idioma. Vuelve a intentarlo."
|
||||
|
||||
@@ -390,72 +390,72 @@
|
||||
},
|
||||
"CAPTAIN": {
|
||||
"NAME": "Capitán",
|
||||
"HEADER_KNOW_MORE": "Más información",
|
||||
"HEADER_KNOW_MORE": "Know more",
|
||||
"ASSISTANT_SWITCHER": {
|
||||
"ASSISTANTS": "Asistentes",
|
||||
"SWITCH_ASSISTANT": "Cambiar entre asistentes",
|
||||
"NEW_ASSISTANT": "Crear asistente",
|
||||
"EMPTY_LIST": "No se encontraron asistentes. Crea uno para comenzar"
|
||||
"ASSISTANTS": "Assistants",
|
||||
"SWITCH_ASSISTANT": "Switch between assistants",
|
||||
"NEW_ASSISTANT": "Create Assistant",
|
||||
"EMPTY_LIST": "No assistants found, please create one to get started"
|
||||
},
|
||||
"COPILOT": {
|
||||
"TITLE": "Copilot",
|
||||
"TRY_THESE_PROMPTS": "Prueba estas sugerencias",
|
||||
"PANEL_TITLE": "Comienza con Copilot",
|
||||
"KICK_OFF_MESSAGE": "¿Necesitas un resumen rápido, revisar conversaciones anteriores o redactar una mejor respuesta? Copilot está aquí para agilizarlo.",
|
||||
"PANEL_TITLE": "Get started with Copilot",
|
||||
"KICK_OFF_MESSAGE": "Need a quick summary, want to check past conversations, or draft a better reply? Copilot’s here to speed things up.",
|
||||
"SEND_MESSAGE": "Enviar mensaje...",
|
||||
"EMPTY_MESSAGE": "Se produjo un error al generar la respuesta. Inténtalo de nuevo.",
|
||||
"LOADER": "Captain está pensando",
|
||||
"EMPTY_MESSAGE": "There was an error generating the response. Please try again.",
|
||||
"LOADER": "Captain is thinking",
|
||||
"YOU": "Tú",
|
||||
"USE": "Usar esto",
|
||||
"RESET": "Restablecer",
|
||||
"SHOW_STEPS": "Mostrar pasos",
|
||||
"SELECT_ASSISTANT": "Seleccionar asistente",
|
||||
"USE": "Use this",
|
||||
"RESET": "Reset",
|
||||
"SHOW_STEPS": "Show steps",
|
||||
"SELECT_ASSISTANT": "Select Assistant",
|
||||
"PROMPTS": {
|
||||
"SUMMARIZE": {
|
||||
"LABEL": "Resume esta conversación",
|
||||
"CONTENT": "Resume los puntos clave tratados entre el cliente y el agente de soporte, incluidas las inquietudes y preguntas del cliente, así como las soluciones o respuestas proporcionadas por el agente de soporte."
|
||||
"LABEL": "Summarize this conversation",
|
||||
"CONTENT": "Summarize the key points discussed between the customer and the support agent, including the customer's concerns, questions, and the solutions or responses provided by the support agent"
|
||||
},
|
||||
"SUGGEST": {
|
||||
"LABEL": "Sugerir una respuesta",
|
||||
"CONTENT": "Analiza la consulta del cliente y redacta una respuesta que aborde eficazmente sus dudas o preguntas. Asegúrate de que la respuesta sea clara, concisa y útil."
|
||||
"LABEL": "Suggest an answer",
|
||||
"CONTENT": "Analyze the customer's inquiry, and draft a response that effectively addresses their concerns or questions. Ensure the reply is clear, concise, and provides helpful information."
|
||||
},
|
||||
"RATE": {
|
||||
"LABEL": "Califica esta conversación",
|
||||
"CONTENT": "Revisa la conversación para evaluar qué tan bien satisface las necesidades del cliente. Comparte una calificación sobre 5 basada en el tono, la claridad y la eficacia."
|
||||
"LABEL": "Rate this conversation",
|
||||
"CONTENT": "Review the conversation to see how well it meets the customer's needs. Share a rating out of 5 based on tone, clarity, and effectiveness."
|
||||
},
|
||||
"HIGH_PRIORITY": {
|
||||
"LABEL": "Conversaciones de alta prioridad",
|
||||
"CONTENT": "Dame un resumen de todas las conversaciones abiertas de alta prioridad. Incluye el ID de la conversación, el nombre del cliente (si está disponible), el contenido del último mensaje y el agente asignado. Agrupa por estado si es relevante."
|
||||
"LABEL": "High priority conversations",
|
||||
"CONTENT": "Give me a summary of all high priority open conversations. Include the conversation ID, customer name (if available), last message content, and assigned agent. Group by status if relevant."
|
||||
},
|
||||
"LIST_CONTACTS": {
|
||||
"LABEL": "Listar contactos",
|
||||
"CONTENT": "Muéstrame la lista de los 10 contactos principales. Incluye el nombre, el correo electrónico o número de teléfono (si está disponible), la hora de la última actividad y las etiquetas (si las hay)."
|
||||
"LABEL": "List contacts",
|
||||
"CONTENT": "Show me the list of top 10 contacts. Include name, email or phone number (if available), last seen time, tags (if any)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"PLAYGROUND": {
|
||||
"USER": "Tú",
|
||||
"ASSISTANT": "Asistente",
|
||||
"ASSISTANT": "Assistant",
|
||||
"MESSAGE_PLACEHOLDER": "Escribe tu mensaje...",
|
||||
"HEADER": "Zona de pruebas",
|
||||
"DESCRIPTION": "Usa esta zona de pruebas para enviar mensajes a tu asistente y comprobar si responde con precisión, rapidez y con el tono que esperas.",
|
||||
"CREDIT_NOTE": "Los mensajes enviados aquí contarán para tus créditos de Captain."
|
||||
"HEADER": "Playground",
|
||||
"DESCRIPTION": "Use this playground to send messages to your assistant and check if it responds accurately, quickly, and in the tone you expect.",
|
||||
"CREDIT_NOTE": "Messages sent here will count toward your Captain credits."
|
||||
},
|
||||
"PAYWALL": {
|
||||
"TITLE": "Actualiza para usar Captain AI",
|
||||
"AVAILABLE_ON": "Captain no está disponible en el plan gratuito.",
|
||||
"UPGRADE_PROMPT": "Actualiza tu plan para obtener acceso a nuestros asistentes, Copilot y más.",
|
||||
"TITLE": "Upgrade to use Captain AI",
|
||||
"AVAILABLE_ON": "Captain is not available on the free plan.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"UPGRADE_NOW": "Actualizar ahora",
|
||||
"CANCEL_ANYTIME": "Puede cambiar o cancelar su plan en cualquier momento"
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "Captain AI solo está disponible en los planes Enterprise.",
|
||||
"UPGRADE_PROMPT": "Actualiza tu plan para obtener acceso a nuestros asistentes, Copilot y más.",
|
||||
"AVAILABLE_ON": "Captain AI is only available in the Enterprise plans.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"ASK_ADMIN": "Por favor, comuníquese con su administrador para la actualización."
|
||||
},
|
||||
"BANNER": {
|
||||
"RESPONSES": "Has usado más del 80 % de tu límite de respuestas. Para seguir usando Captain AI, actualiza tu plan.",
|
||||
"DOCUMENTS": "Se alcanzó el límite de documentos. Actualiza para seguir usando Captain AI."
|
||||
"RESPONSES": "You've used over 80% of your response limit. To continue using Captain AI, please upgrade.",
|
||||
"DOCUMENTS": "Document limit reached. Upgrade to continue using Captain AI."
|
||||
},
|
||||
"FORM": {
|
||||
"CANCEL": "Cancelar",
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Documents",
|
||||
"ADD_NEW": "Create a new document",
|
||||
"SELECTED": "{count} selected",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Unselect all ({count})",
|
||||
"BULK_DELETE_BUTTON": "Eliminar",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete all",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Related FAQs",
|
||||
"DESCRIPTION": "These FAQs are generated directly from the document."
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Tools",
|
||||
"ADD_NEW": "Create a new tool",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "No custom tools available",
|
||||
"SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Failed to delete custom tool"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Descripción",
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
"COPY_SUCCESSFUL": "Kopeerimine lõikelauale õnnestus",
|
||||
"COMPANY": "Ettevõte",
|
||||
"LOCATION": "Asukoht",
|
||||
"BROWSER_LANGUAGE": "Brauseri keel",
|
||||
"BROWSER_LANGUAGE": "Browser Language",
|
||||
"CONVERSATION_TITLE": "Vestluse üksikasjad",
|
||||
"VIEW_PROFILE": "Vaata profiili",
|
||||
"BROWSER": "Brauser",
|
||||
"OS": "Operatsioonisüsteem",
|
||||
"INITIATED_FROM": "Algatatud kohast",
|
||||
"INITIATED_AT": "Algatatud ajal",
|
||||
"IP_ADDRESS": "IP-aadress",
|
||||
"IP_ADDRESS": "IP Address",
|
||||
"CREATED_AT_LABEL": "Loodud",
|
||||
"NEW_MESSAGE": "Uus sõnum",
|
||||
"CALL": "Helista",
|
||||
@@ -91,7 +91,7 @@
|
||||
},
|
||||
"BIO": {
|
||||
"PLACEHOLDER": "Sisesta kontakti elulugu",
|
||||
"LABEL": "Tutvustus"
|
||||
"LABEL": "Bio"
|
||||
},
|
||||
"EMAIL_ADDRESS": {
|
||||
"PLACEHOLDER": "Sisesta kontakti e-posti aadress",
|
||||
@@ -128,19 +128,19 @@
|
||||
},
|
||||
"SOCIAL_PROFILES": {
|
||||
"FACEBOOK": {
|
||||
"PLACEHOLDER": "Sisesta Facebooki kasutajanimi",
|
||||
"PLACEHOLDER": "Enter the Facebook username",
|
||||
"LABEL": "Facebook"
|
||||
},
|
||||
"TWITTER": {
|
||||
"PLACEHOLDER": "Sisesta Twitteri kasutajanimi",
|
||||
"PLACEHOLDER": "Enter the Twitter username",
|
||||
"LABEL": "Twitter"
|
||||
},
|
||||
"LINKEDIN": {
|
||||
"PLACEHOLDER": "Sisesta LinkedIni kasutajanimi",
|
||||
"PLACEHOLDER": "Enter the LinkedIn username",
|
||||
"LABEL": "LinkedIn"
|
||||
},
|
||||
"GITHUB": {
|
||||
"PLACEHOLDER": "Sisesta GitHubi kasutajanimi",
|
||||
"PLACEHOLDER": "Enter the Github username",
|
||||
"LABEL": "Github"
|
||||
}
|
||||
}
|
||||
@@ -192,7 +192,7 @@
|
||||
"CONTACTS_PAGE": {
|
||||
"LIST": {
|
||||
"TABLE_HEADER": {
|
||||
"SOCIAL_PROFILES": "Sotsiaalmeedia profiilid"
|
||||
"SOCIAL_PROFILES": "Social Profiles"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -215,7 +215,7 @@
|
||||
"CANCEL": "Tühista",
|
||||
"NAME": {
|
||||
"LABEL": "Kohandatud atribuudi nimi",
|
||||
"PLACEHOLDER": "Nt: Shopify ID",
|
||||
"PLACEHOLDER": "Eg: shopify id",
|
||||
"ERROR": "Vigane kohandatud atribuudi nimi"
|
||||
},
|
||||
"VALUE": {
|
||||
@@ -317,9 +317,9 @@
|
||||
"UNBLOCK_ERROR_MESSAGE": "Kontakti blokeeringust vabaks tegemine ebaõnnestus. Palun proovi hiljem uuesti.",
|
||||
"IMPORT_CONTACT": {
|
||||
"TITLE": "Impordi kontaktid",
|
||||
"DESCRIPTION": "Impordi kontaktid CSV-faili kaudu.",
|
||||
"DOWNLOAD_LABEL": "Laadi alla näidis-CSV.",
|
||||
"LABEL": "CSV-fail:",
|
||||
"DESCRIPTION": "Import contacts through a CSV file.",
|
||||
"DOWNLOAD_LABEL": "Download a sample csv.",
|
||||
"LABEL": "CSV File:",
|
||||
"CHOOSE_FILE": "Vali fail",
|
||||
"CHANGE": "Muuda",
|
||||
"CANCEL": "Tühista",
|
||||
@@ -435,7 +435,7 @@
|
||||
"PLACEHOLDER": "Vali riik"
|
||||
},
|
||||
"BIO": {
|
||||
"PLACEHOLDER": "Sisesta tutvustus"
|
||||
"PLACEHOLDER": "Enter the bio"
|
||||
},
|
||||
"COMPANY_NAME": {
|
||||
"PLACEHOLDER": "Sisesta ettevõtte nimi"
|
||||
@@ -446,28 +446,28 @@
|
||||
"ERROR_MESSAGE": "Kontakti ei õnnestunud uuendada. Palun proovi hiljem uuesti."
|
||||
},
|
||||
"SOCIAL_MEDIA": {
|
||||
"TITLE": "Muuda sotsiaalmeedia linke",
|
||||
"TITLE": "Edit social links",
|
||||
"FORM": {
|
||||
"FACEBOOK": {
|
||||
"PLACEHOLDER": "Lisa Facebook"
|
||||
"PLACEHOLDER": "Add Facebook"
|
||||
},
|
||||
"GITHUB": {
|
||||
"PLACEHOLDER": "Lisa GitHub"
|
||||
"PLACEHOLDER": "Add Github"
|
||||
},
|
||||
"INSTAGRAM": {
|
||||
"PLACEHOLDER": "Lisa Instagram"
|
||||
"PLACEHOLDER": "Add Instagram"
|
||||
},
|
||||
"TELEGRAM": {
|
||||
"PLACEHOLDER": "Lisa Telegram"
|
||||
"PLACEHOLDER": "Add Telegram"
|
||||
},
|
||||
"TIKTOK": {
|
||||
"PLACEHOLDER": "Lisa TikTok"
|
||||
"PLACEHOLDER": "Add TikTok"
|
||||
},
|
||||
"LINKEDIN": {
|
||||
"PLACEHOLDER": "Lisa LinkedIn"
|
||||
"PLACEHOLDER": "Add LinkedIn"
|
||||
},
|
||||
"TWITTER": {
|
||||
"PLACEHOLDER": "Lisa Twitter"
|
||||
"PLACEHOLDER": "Add Twitter"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -492,12 +492,12 @@
|
||||
},
|
||||
"AVATAR": {
|
||||
"UPLOAD": {
|
||||
"ERROR_MESSAGE": "Avatari üleslaadimine ebaõnnestus. Palun proovi hiljem uuesti.",
|
||||
"ERROR_MESSAGE": "Could not upload avatar. Please try again later.",
|
||||
"SUCCESS_MESSAGE": "Avatar üles laaditud edukalt"
|
||||
},
|
||||
"DELETE": {
|
||||
"SUCCESS_MESSAGE": "Avatar kustutatud edukalt",
|
||||
"ERROR_MESSAGE": "Avatari kustutamine ebaõnnestus. Palun proovi hiljem uuesti."
|
||||
"ERROR_MESSAGE": "Could not delete avatar. Please try again later."
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -538,7 +538,7 @@
|
||||
},
|
||||
"MERGE": {
|
||||
"TITLE": "Ühenda kontakt",
|
||||
"DESCRIPTION": "Ühenda kaks profiili üheks, sealhulgas kõik atribuudid ja vestlused. Vastuolu korral eelistatakse peamise kontakti atribuute.",
|
||||
"DESCRIPTION": "Combine two profiles into one, including all attributes and conversations. In case of conflict, the primary contact’s attributes will take precedence.",
|
||||
"PRIMARY": "Peamine kontakt",
|
||||
"PRIMARY_HELP_LABEL": "Salvestamiseks",
|
||||
"PRIMARY_REQUIRED_ERROR": "Palun valige ühendamiseks kontakt enne jätkamist",
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
"DRAG_DROP": "Lohista siia manusena lisamiseks",
|
||||
"START_AUDIO_RECORDING": "Alusta heli salvestamist",
|
||||
"STOP_AUDIO_RECORDING": "Peata heli salvestamine",
|
||||
"COPILOT_THINKING": "Copilot mõtleb",
|
||||
"COPILOT_THINKING": "Copilot is thinking",
|
||||
"EMAIL_HEAD": {
|
||||
"TO": "SAJALE",
|
||||
"ADD_BCC": "Add bcc",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "Keel on portaalist edukalt eemaldatud",
|
||||
"ERROR_MESSAGE": "Keelt ei õnnestunud portaalist eemaldada. Proovi uuesti."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} artikkel | {count} artiklit",
|
||||
"CATEGORIES_COUNT": "{count} kategooria | {count} kategooriat",
|
||||
"DEFAULT": "Vaikimisi",
|
||||
"DRAFT": "Mustand",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "Määra vaikimisi",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "Kustuta"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "Vali keel..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "Status",
|
||||
"OPTIONS": {
|
||||
"LIVE": "Avaldatud",
|
||||
"DRAFT": "Mustand"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Keel lisatud edukalt",
|
||||
"ERROR_MESSAGE": "Keelt ei õnnestunud lisada. Proovi uuesti."
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"INBOX_MGMT": {
|
||||
"HEADER": "Postkastid",
|
||||
"DESCRIPTION": "Kanal on suhtlusviis, mille teie klient valib teiega suhtlemiseks. Postkast on koht, kus haldate konkreetse kanali suhtlusi. See võib sisaldada suhtlust eri allikatest, nagu e-post, reaalajas vestlus ja sotsiaalmeedia.",
|
||||
"LEARN_MORE": "Lisateave postkastide kohta",
|
||||
"DESCRIPTION": "A channel is the mode of communication your customer chooses to interact with you. An inbox is where you manage interactions for a specific channel. It can include communications from various sources such as email, live chat, and social media.",
|
||||
"LEARN_MORE": "Learn more about inboxes",
|
||||
"COUNT": "{n} inbox | {n} inboxes",
|
||||
"SEARCH_PLACEHOLDER": "Search inboxes...",
|
||||
"NO_RESULTS": "No inboxes found matching your search",
|
||||
"RECONNECTION_REQUIRED": "Teie postkast on lahti ühendatud. Te ei saa uusi sõnumeid enne, kui volitate selle uuesti.",
|
||||
"CLICK_TO_RECONNECT": "Taasühendamiseks klõpsake siin.",
|
||||
"RECONNECTION_REQUIRED": "Your inbox is disconnected. You won't receive new messages until you reauthorize it.",
|
||||
"CLICK_TO_RECONNECT": "Click here to reconnect.",
|
||||
"WHATSAPP_REGISTRATION_INCOMPLETE": "Your WhatsApp Business registration isn’t complete. Please check your display name status in Meta Business Manager before reconnecting.",
|
||||
"COMPLETE_REGISTRATION": "Complete Registration",
|
||||
"LIST": {
|
||||
@@ -15,20 +15,20 @@
|
||||
},
|
||||
"CREATE_FLOW": {
|
||||
"CHANNEL": {
|
||||
"TITLE": "Vali kanal",
|
||||
"BODY": "Valige teenusepakkuja, mille soovite Chatwootiga siduda."
|
||||
"TITLE": "Choose Channel",
|
||||
"BODY": "Choose the provider you want to integrate with Chatwoot."
|
||||
},
|
||||
"INBOX": {
|
||||
"TITLE": "Loo postkast",
|
||||
"BODY": "Autentige oma konto ja looge postkast."
|
||||
"TITLE": "Create Inbox",
|
||||
"BODY": "Authenticate your account and create an inbox."
|
||||
},
|
||||
"AGENT": {
|
||||
"TITLE": "Lisa agendid",
|
||||
"BODY": "Lisage loodud postkasti agendid."
|
||||
"TITLE": "Add Agents",
|
||||
"BODY": "Add agents to the created inbox."
|
||||
},
|
||||
"FINISH": {
|
||||
"TITLE": "Valmis!",
|
||||
"BODY": "Kõik on valmis!"
|
||||
"TITLE": "Voilà!",
|
||||
"BODY": "You are all set to go!"
|
||||
}
|
||||
},
|
||||
"ADD": {
|
||||
@@ -47,18 +47,18 @@
|
||||
"CHOOSE_PLACEHOLDER": "Valige nimekirjast leht",
|
||||
"INBOX_NAME": "Postkasti nimi",
|
||||
"ADD_NAME": "Lisa oma postkastile nimi",
|
||||
"PICK_NAME": "Valige oma postkastile nimi",
|
||||
"PICK_NAME": "Pick a Name for your Inbox",
|
||||
"PICK_A_VALUE": "Vali väärtus",
|
||||
"CREATE_INBOX": "Loo postkast"
|
||||
"CREATE_INBOX": "Create Inbox"
|
||||
},
|
||||
"INSTAGRAM": {
|
||||
"CONTINUE_WITH_INSTAGRAM": "Jätka Instagramiga",
|
||||
"CONNECT_YOUR_INSTAGRAM_PROFILE": "Ühenda oma Instagrami profiil",
|
||||
"HELP": "Instagrami profiili kanali lisamiseks peate autentima oma Instagrami profiili, klõpsates nupul 'Jätka Instagramiga'.",
|
||||
"ERROR_MESSAGE": "Instagramiga ühendamisel tekkis viga, palun proovige uuesti",
|
||||
"ERROR_AUTH": "Instagramiga ühendamisel tekkis viga, palun proovige uuesti",
|
||||
"NEW_INBOX_SUGGESTION": "See Instagrami konto oli varem seotud teise postkastiga ja on nüüd siia üle viidud. Kõik uued sõnumid kuvatakse siin. Vana postkast ei saa selle konto jaoks enam sõnumeid saata ega vastu võtta.",
|
||||
"DUPLICATE_INBOX_BANNER": "See Instagrami konto viidi üle uue Instagrami kanali postkasti. Sellest postkastist ei saa te enam Instagrami sõnumeid saata ega vastu võtta."
|
||||
"CONTINUE_WITH_INSTAGRAM": "Continue with Instagram",
|
||||
"CONNECT_YOUR_INSTAGRAM_PROFILE": "Connect your Instagram Profile",
|
||||
"HELP": "To add your Instagram profile as a channel, you need to authenticate your Instagram Profile by clicking on 'Continue with Instagram' ",
|
||||
"ERROR_MESSAGE": "There was an error connecting to Instagram, please try again",
|
||||
"ERROR_AUTH": "There was an error connecting to Instagram, please try again",
|
||||
"NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.",
|
||||
"DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore."
|
||||
},
|
||||
"TIKTOK": {
|
||||
"CONTINUE_WITH_TIKTOK": "Continue with TikTok",
|
||||
@@ -83,7 +83,7 @@
|
||||
},
|
||||
"CHANNEL_WEBHOOK_URL": {
|
||||
"LABEL": "Veebikonksu URL",
|
||||
"PLACEHOLDER": "Palun sisestage oma webhooki URL",
|
||||
"PLACEHOLDER": "Please enter your Webhook URL",
|
||||
"ERROR": "Palun sisesta kehtiv URL"
|
||||
},
|
||||
"CHANNEL_DOMAIN": {
|
||||
@@ -164,7 +164,7 @@
|
||||
"ERROR": "See väli on kohustuslik"
|
||||
},
|
||||
"PHONE_NUMBER": {
|
||||
"LABEL": "Telefoninumber",
|
||||
"LABEL": "Phone Number",
|
||||
"PLACEHOLDER": "Palun sisestage telefoninumber, millest sõnum saadetakse.",
|
||||
"ERROR": "Palun sisestage kehtiv telefoninumber, mis algab märgiga `+` ja ei sisalda tühikuid."
|
||||
},
|
||||
@@ -196,12 +196,12 @@
|
||||
},
|
||||
"API_KEY": {
|
||||
"LABEL": "API võti",
|
||||
"PLACEHOLDER": "Palun sisestage oma Bandwidth API võti",
|
||||
"PLACEHOLDER": "Please enter your Bandwidth API Key",
|
||||
"ERROR": "See väli on kohustuslik"
|
||||
},
|
||||
"API_SECRET": {
|
||||
"LABEL": "API saladus",
|
||||
"PLACEHOLDER": "Palun sisestage oma Bandwidth API saladus",
|
||||
"PLACEHOLDER": "Please enter your Bandwidth API Secret",
|
||||
"ERROR": "See väli on kohustuslik"
|
||||
},
|
||||
"APPLICATION_ID": {
|
||||
@@ -237,13 +237,13 @@
|
||||
"WHATSAPP_EMBEDDED": "WhatsApp Business",
|
||||
"TWILIO": "Twilio",
|
||||
"WHATSAPP_CLOUD": "WhatsApp Cloud",
|
||||
"WHATSAPP_CLOUD_DESC": "Kiire seadistus Meta kaudu",
|
||||
"TWILIO_DESC": "Ühenda Twilio andmetega",
|
||||
"WHATSAPP_CLOUD_DESC": "Quick setup through Meta",
|
||||
"TWILIO_DESC": "Connect via Twilio credentials",
|
||||
"360_DIALOG": "360Dialog"
|
||||
},
|
||||
"SELECT_PROVIDER": {
|
||||
"TITLE": "Vali API pakkuja",
|
||||
"DESCRIPTION": "Vali oma WhatsAppi pakkuja. Saad ühendada otse Meta kaudu ilma seadistamiseta või kasutada Twilio kontotunnuseid."
|
||||
"TITLE": "Select your API provider",
|
||||
"DESCRIPTION": "Choose your WhatsApp provider. You can connect directly through Meta which requires no setup, or connect through Twilio using your account credentials."
|
||||
},
|
||||
"INBOX_NAME": {
|
||||
"LABEL": "Sissetuleva postkasti nimi",
|
||||
@@ -267,7 +267,7 @@
|
||||
},
|
||||
"WEBHOOK_VERIFY_TOKEN": {
|
||||
"LABEL": "Webhook kinnituse token",
|
||||
"PLACEHOLDER": "Sisestage kinnitustoken, mida soovite Facebooki webhookide jaoks seadistada.",
|
||||
"PLACEHOLDER": "Enter a verify token which you want to configure for Facebook webhooks.",
|
||||
"ERROR": "Palun sisesta kehtiv väärtus."
|
||||
},
|
||||
"API_KEY": {
|
||||
@@ -287,16 +287,16 @@
|
||||
"TITLE": "Quick setup with Meta",
|
||||
"DESC": "Use the WhatsApp Embedded Signup flow to quickly connect new numbers. You will be redirected to Meta to log into your WhatsApp Business account. Having admin access will help make the setup smooth and easy.",
|
||||
"BENEFITS": {
|
||||
"TITLE": "Sisseehitatud registreerimise eelised:",
|
||||
"EASY_SETUP": "Käsitsi seadistamine pole vajalik",
|
||||
"SECURE_AUTH": "Turvaline OAuth-põhine autentimine",
|
||||
"AUTO_CONFIG": "Automaatne webhooki ja telefoninumbri seadistus"
|
||||
"TITLE": "Benefits of Embedded Signup:",
|
||||
"EASY_SETUP": "No manual configuration required",
|
||||
"SECURE_AUTH": "Secure OAuth based authentication",
|
||||
"AUTO_CONFIG": "Automatic webhook and phone number configuration"
|
||||
},
|
||||
"LEARN_MORE": {
|
||||
"TEXT": "To learn more about integrated signup, pricing, and limitations, visit {link}.",
|
||||
"LINK_TEXT": "this link"
|
||||
},
|
||||
"SUBMIT_BUTTON": "Ühenda WhatsApp Businessiga",
|
||||
"SUBMIT_BUTTON": "Connect with WhatsApp Business",
|
||||
"AUTH_PROCESSING": "Authenticating with Meta",
|
||||
"WAITING_FOR_BUSINESS_INFO": "Please complete business setup in the Meta window...",
|
||||
"PROCESSING": "Setting up your WhatsApp Business Account",
|
||||
@@ -316,33 +316,33 @@
|
||||
}
|
||||
},
|
||||
"VOICE": {
|
||||
"TITLE": "Kõnekanal",
|
||||
"DESC": "Integreeri Twilio Voice ja alusta klientide toetamist telefonikõnede kaudu.",
|
||||
"TITLE": "Voice Channel",
|
||||
"DESC": "Integrate Twilio Voice and start supporting your customers via phone calls.",
|
||||
"PHONE_NUMBER": {
|
||||
"LABEL": "Telefoninumber",
|
||||
"PLACEHOLDER": "Sisesta oma telefoninumber (nt +1234567890)",
|
||||
"ERROR": "Palun sisesta kehtiv telefoninumber E.164 formaadis (nt +1234567890)"
|
||||
"LABEL": "Phone Number",
|
||||
"PLACEHOLDER": "Enter your phone number (e.g. +1234567890)",
|
||||
"ERROR": "Please provide a valid phone number in E.164 format (e.g. +1234567890)"
|
||||
},
|
||||
"TWILIO": {
|
||||
"ACCOUNT_SID": {
|
||||
"LABEL": "Konto SID",
|
||||
"PLACEHOLDER": "Sisesta oma Twilio Account SID",
|
||||
"REQUIRED": "Account SID on kohustuslik"
|
||||
"LABEL": "Account SID",
|
||||
"PLACEHOLDER": "Enter your Twilio Account SID",
|
||||
"REQUIRED": "Account SID is required"
|
||||
},
|
||||
"AUTH_TOKEN": {
|
||||
"LABEL": "Autentimismärgis",
|
||||
"PLACEHOLDER": "Sisesta oma Twilio autentimismärgis",
|
||||
"REQUIRED": "Autentimismärgis on kohustuslik"
|
||||
"LABEL": "Auth Token",
|
||||
"PLACEHOLDER": "Enter your Twilio Auth Token",
|
||||
"REQUIRED": "Auth Token is required"
|
||||
},
|
||||
"API_KEY_SID": {
|
||||
"LABEL": "API võtme SID",
|
||||
"PLACEHOLDER": "Sisesta oma Twilio API võtme SID",
|
||||
"REQUIRED": "API Key SID on kohustuslik"
|
||||
"LABEL": "API Key SID",
|
||||
"PLACEHOLDER": "Enter your Twilio API Key SID",
|
||||
"REQUIRED": "API Key SID is required"
|
||||
},
|
||||
"API_KEY_SECRET": {
|
||||
"LABEL": "API võtme saladus",
|
||||
"PLACEHOLDER": "Sisesta oma Twilio API Key Secret",
|
||||
"REQUIRED": "API Key Secret on kohustuslik"
|
||||
"LABEL": "API Key Secret",
|
||||
"PLACEHOLDER": "Enter your Twilio API Key Secret",
|
||||
"REQUIRED": "API Key Secret is required"
|
||||
}
|
||||
},
|
||||
"CONFIGURATION": {
|
||||
@@ -351,9 +351,9 @@
|
||||
"TWILIO_STATUS_URL_TITLE": "Twilio Status Callback URL",
|
||||
"TWILIO_STATUS_URL_SUBTITLE": "Configure this URL as the Status Callback URL on your Twilio phone number."
|
||||
},
|
||||
"SUBMIT_BUTTON": "Loo kõnekanal",
|
||||
"SUBMIT_BUTTON": "Create Voice Channel",
|
||||
"API": {
|
||||
"ERROR_MESSAGE": "Häälekanalit ei õnnestunud luua"
|
||||
"ERROR_MESSAGE": "We were not able to create the voice channel"
|
||||
}
|
||||
},
|
||||
"API_CHANNEL": {
|
||||
@@ -365,9 +365,9 @@
|
||||
"ERROR": "See väli on kohustuslik"
|
||||
},
|
||||
"WEBHOOK_URL": {
|
||||
"LABEL": "Veebikonksu URL",
|
||||
"SUBTITLE": "Seadistage URL, kuhu soovite sündmuste tagasikutsed vastu võtta.",
|
||||
"PLACEHOLDER": "Veebikonksu URL"
|
||||
"LABEL": "Webhook URL",
|
||||
"SUBTITLE": "Configure the URL where you want to receive callbacks on events.",
|
||||
"PLACEHOLDER": "Webhook URL"
|
||||
},
|
||||
"SUBMIT_BUTTON": "Loo API kanal",
|
||||
"API": {
|
||||
@@ -376,7 +376,7 @@
|
||||
},
|
||||
"EMAIL_CHANNEL": {
|
||||
"TITLE": "E-posti kanal",
|
||||
"DESC": "Ühendage oma e-posti postkast.",
|
||||
"DESC": "Integrate your email inbox.",
|
||||
"CHANNEL_NAME": {
|
||||
"LABEL": "Kanali nimi",
|
||||
"PLACEHOLDER": "Palun sisesta kanali nimi",
|
||||
@@ -494,7 +494,7 @@
|
||||
"AGENTS": {
|
||||
"TITLE": "Agendid",
|
||||
"DESC": "Siin saate lisada agente, kes haldavad teie äsja loodud postkasti. Ainult valitud agendid pääsevad teie postkastile ligi. Agendid, kes ei kuulu sellesse postkasti, ei näe ega saa vastata selle postkasti sõnumitele, kui nad sisse logivad. <br> <b>PS:</b> Administraatorina, kui vajate ligipääsu kõigile postkastidele, peaksite lisama end agentideks kõigisse loodud postkastidesse.",
|
||||
"VALIDATION_ERROR": "Lisage oma uude postkasti vähemalt üks agent",
|
||||
"VALIDATION_ERROR": "Add at least one agent to your new Inbox",
|
||||
"PICK_AGENTS": "Vali postkasti agendid"
|
||||
},
|
||||
"DETAILS": {
|
||||
@@ -513,23 +513,23 @@
|
||||
"TITLE": "Microsofti e-post",
|
||||
"DESCRIPTION": "Alustamiseks klõpsake nuppu Logi sisse Microsoftiga. Teid suunatakse e-posti sisselogimise lehele. Kui aktsepteerite nõutud õigused, suunatakse teid tagasi postkasti loomise sammu juurde.",
|
||||
"EMAIL_PLACEHOLDER": "Sisestage e-posti aadress",
|
||||
"SIGN_IN": "Logi sisse Microsoftiga",
|
||||
"SIGN_IN": "Sign in with Microsoft",
|
||||
"ERROR_MESSAGE": "Microsoftiga ühendamisel tekkis viga, palun proovige uuesti"
|
||||
},
|
||||
"GOOGLE": {
|
||||
"TITLE": "Google'i e-post",
|
||||
"DESCRIPTION": "Alustamiseks klõpsake nuppu 'Logi sisse Google'iga'. Teid suunatakse e-posti sisselogimislehele. Kui olete nõutud õigused kinnitanud, suunatakse teid tagasi postkasti loomise sammu juurde.",
|
||||
"SIGN_IN": "Logi sisse Google'iga",
|
||||
"EMAIL_PLACEHOLDER": "Sisesta e-posti aadress",
|
||||
"ERROR_MESSAGE": "Google'iga ühendamisel tekkis viga, palun proovige uuesti"
|
||||
"TITLE": "Google Email",
|
||||
"DESCRIPTION": "Click on the Sign in with Google button to get started. You will redirected to the email sign in page. Once you accept the requested permissions, you would be redirected back to the inbox creation step.",
|
||||
"SIGN_IN": "Sign in with Google",
|
||||
"EMAIL_PLACEHOLDER": "Enter email address",
|
||||
"ERROR_MESSAGE": "There was an error connecting to Google, please try again"
|
||||
}
|
||||
},
|
||||
"DETAILS": {
|
||||
"LOADING_FB": "Autendime teid Facebookiga...",
|
||||
"ERROR_FB_LOADING": "Facebooki SDK laadimisel tekkis viga. Palun keelake reklaamiblokeerijad ja proovige uuesti mõne teise brauseriga.",
|
||||
"ERROR_FB_LOADING": "Error loading Facebook SDK. Please disable any ad-blockers and try again from a different browser.",
|
||||
"ERROR_FB_AUTH": "Midagi läks valesti, palun värskendage lehte...",
|
||||
"ERROR_FB_UNAUTHORIZED": "Teil ei ole selle toimingu tegemiseks õigusi. ",
|
||||
"ERROR_FB_UNAUTHORIZED_HELP": "Veenduge, et teil oleks täieliku juhtimisõigusega juurdepääs Facebooki lehele. Facebooki rollide kohta saate rohkem lugeda <a href=\" https://www.facebook.com/help/187316341316631\">siit</a>.",
|
||||
"ERROR_FB_UNAUTHORIZED_HELP": "Please ensure you have access to the Facebook page with full control. You can read more about Facebook roles <a href=\" https://www.facebook.com/help/187316341316631\">here</a>.",
|
||||
"CREATING_CHANNEL": "Loomas teie postkasti...",
|
||||
"TITLE": "Seadista postkasti üksikasjad",
|
||||
"DESC": ""
|
||||
@@ -566,7 +566,7 @@
|
||||
},
|
||||
"SENDER_NAME_SECTION": {
|
||||
"TITLE": "Saatja nimi",
|
||||
"SUB_TEXT": "Valige nimi, mida teie klient näeb, kui ta saab teie agentidelt e-kirju.",
|
||||
"SUB_TEXT": "Select the name shown to your customer when they receive emails from your agents.",
|
||||
"FOR_EG": "Näiteks:",
|
||||
"FRIENDLY": {
|
||||
"TITLE": "Sõbralik",
|
||||
@@ -755,7 +755,7 @@
|
||||
"ALLOW_MESSAGES_AFTER_RESOLVED": "Luba sõnumid pärast vestluse lahendamist",
|
||||
"ALLOW_MESSAGES_AFTER_RESOLVED_SUB_TEXT": "Luba lõppkasutajatel saata sõnumeid ka pärast vestluse lahendamist.",
|
||||
"WHATSAPP_SECTION_SUBHEADER": "Seda API võtit kasutatakse WhatsApp API-dega integreerimiseks.",
|
||||
"WHATSAPP_SECTION_UPDATE_SUBHEADER": "Sisestage uus API võti, mida kasutatakse WhatsAppi API-dega integreerimiseks.",
|
||||
"WHATSAPP_SECTION_UPDATE_SUBHEADER": "Enter the new API key to be used for the integration with the WhatsApp APIs.",
|
||||
"WHATSAPP_SECTION_TITLE": "API võti",
|
||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Uuenda API-võtit",
|
||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Sisesta siia uus API-võti",
|
||||
@@ -775,7 +775,7 @@
|
||||
"WHATSAPP_APP_ID_MISSING": "WhatsApp App ID is not configured. Please contact your administrator.",
|
||||
"WHATSAPP_CONFIG_ID_MISSING": "WhatsApp Configuration ID is not configured. Please contact your administrator.",
|
||||
"WHATSAPP_LOGIN_CANCELLED": "WhatsApp login was cancelled. Please try again.",
|
||||
"WHATSAPP_WEBHOOK_TITLE": "Webhooki kinnitustoken",
|
||||
"WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token",
|
||||
"WHATSAPP_WEBHOOK_SUBHEADER": "Seda märki kasutatakse veebikonksu lõpp-punkti autentsuse kontrollimiseks.",
|
||||
"WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates",
|
||||
"WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.",
|
||||
@@ -876,14 +876,14 @@
|
||||
}
|
||||
},
|
||||
"CSAT": {
|
||||
"TITLE": "Luba CSAT",
|
||||
"SUBTITLE": "Käivitage vestluste lõpus automaatselt CSAT-küsitlused, et mõista, kuidas kliendid oma toe kogemust tajuvad. Jälgige rahulolu trende ja leidke aja jooksul parenduskohti.",
|
||||
"TITLE": "Enable CSAT",
|
||||
"SUBTITLE": "Automatically trigger CSAT surveys at the end of conversations to understand how customers feel about their support experience. Track satisfaction trends and identify areas for improvement over time.",
|
||||
"DISPLAY_TYPE": {
|
||||
"LABEL": "Kuvamisviis"
|
||||
"LABEL": "Display type"
|
||||
},
|
||||
"MESSAGE": {
|
||||
"LABEL": "Sõnum",
|
||||
"PLACEHOLDER": "Palun sisestage sõnum, mida vormiga kasutajatele kuvada"
|
||||
"LABEL": "Message",
|
||||
"PLACEHOLDER": "Please enter a message to show users with the form"
|
||||
},
|
||||
"BUTTON_TEXT": {
|
||||
"LABEL": "Button text",
|
||||
@@ -929,20 +929,20 @@
|
||||
}
|
||||
},
|
||||
"SURVEY_RULE": {
|
||||
"LABEL": "Küsitluse reegel",
|
||||
"DESCRIPTION_PREFIX": "Saada küsitlus, kui vestlus",
|
||||
"DESCRIPTION_SUFFIX": "mõnda silti",
|
||||
"LABEL": "Survey rule",
|
||||
"DESCRIPTION_PREFIX": "Send the survey if the conversation",
|
||||
"DESCRIPTION_SUFFIX": "any of the labels",
|
||||
"OPERATOR": {
|
||||
"CONTAINS": "sisaldab",
|
||||
"DOES_NOT_CONTAINS": "ei sisalda"
|
||||
"CONTAINS": "contains",
|
||||
"DOES_NOT_CONTAINS": "does not contain"
|
||||
},
|
||||
"SELECT_PLACEHOLDER": "vali sildid"
|
||||
"SELECT_PLACEHOLDER": "select labels"
|
||||
},
|
||||
"NOTE": "Märkus: CSAT-küsitlused saadetakse iga vestluse kohta vaid korra",
|
||||
"NOTE": "Note: CSAT surveys are sent only once per conversation",
|
||||
"WHATSAPP_NOTE": "Note: When you save, the system creates a dedicated CSAT template in WhatsApp (used to capture rating and feedback in reports) and submits it as Utility for approval. Meta may still classify it as Marketing based on content. After approval, surveys are sent only once per conversation as per the survey rule.",
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "CSAT-i seaded on edukalt uuendatud",
|
||||
"ERROR_MESSAGE": "CSAT-i seadeid ei õnnestunud uuendada. Palun proovi hiljem uuesti."
|
||||
"SUCCESS_MESSAGE": "CSAT settings updated successfully",
|
||||
"ERROR_MESSAGE": "We couldn't update CSAT settings. Please try again later."
|
||||
}
|
||||
},
|
||||
"BUSINESS_HOURS": {
|
||||
@@ -953,7 +953,7 @@
|
||||
"UPDATE": "Uuenda tööaja seadeid",
|
||||
"TOGGLE_AVAILABILITY": "Luba selle postkasti tööaja kättesaadavus",
|
||||
"UNAVAILABLE_MESSAGE_LABEL": "Külastajatele saadetav teade, kui pole saadaval",
|
||||
"TOGGLE_HELP": "Tööaja kättesaadavuse lubamine kuvab reaalajas vestluse vidinas saadaval olevad ajad isegi siis, kui kõik agendid on võrguühenduseta. Väljaspool saadaolevaid aegu saab külastajaid hoiatada sõnumi ja vestluseelse vormiga.",
|
||||
"TOGGLE_HELP": "Enabling business availability will show the available hours on live chat widget even if all the agents are offline. Outside available hours visitors can be warned with a message and a pre-chat form.",
|
||||
"DAY": {
|
||||
"DAY": "Day",
|
||||
"AVAILABILITY": "Availability",
|
||||
@@ -971,7 +971,7 @@
|
||||
"NOTE_TEXT": "SMTP lubamiseks seadistage palun IMAP.",
|
||||
"UPDATE": "Uuenda IMAP seadeid",
|
||||
"TOGGLE_AVAILABILITY": "Luba IMAP konfiguratsioon selle sissetuleva postkasti jaoks",
|
||||
"TOGGLE_HELP": "IMAP-i lubamine aitab kasutajal e-kirju vastu võtta",
|
||||
"TOGGLE_HELP": "Enabling IMAP will help the user to receive email",
|
||||
"EDIT": {
|
||||
"SUCCESS_MESSAGE": "IMAP seaded uuendati edukalt",
|
||||
"ERROR_MESSAGE": "IMAP seadete uuendamine ebaõnnestus"
|
||||
@@ -1134,18 +1134,18 @@
|
||||
},
|
||||
"CHANNELS": {
|
||||
"MESSENGER": "Messenger",
|
||||
"WEB_WIDGET": "Veebisait",
|
||||
"WEB_WIDGET": "Website",
|
||||
"TWITTER_PROFILE": "Twitter",
|
||||
"TWILIO_SMS": "Twilio SMS",
|
||||
"WHATSAPP": "WhatsApp",
|
||||
"SMS": "SMS",
|
||||
"EMAIL": "E-post",
|
||||
"EMAIL": "Email",
|
||||
"TELEGRAM": "Telegram",
|
||||
"LINE": "Line",
|
||||
"API": "API kanal",
|
||||
"API": "API Channel",
|
||||
"INSTAGRAM": "Instagram",
|
||||
"TIKTOK": "TikTok",
|
||||
"VOICE": "Hääl"
|
||||
"VOICE": "Voice"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -392,10 +392,10 @@
|
||||
"NAME": "Kapten",
|
||||
"HEADER_KNOW_MORE": "Lisateave",
|
||||
"ASSISTANT_SWITCHER": {
|
||||
"ASSISTANTS": "Abilised",
|
||||
"SWITCH_ASSISTANT": "Vaheta assistentide vahel",
|
||||
"NEW_ASSISTANT": "Loo assistent",
|
||||
"EMPTY_LIST": "Assistentide leidmine ebaõnnestus, alustamiseks loo palun üks."
|
||||
"ASSISTANTS": "Assistants",
|
||||
"SWITCH_ASSISTANT": "Switch between assistants",
|
||||
"NEW_ASSISTANT": "Create Assistant",
|
||||
"EMPTY_LIST": "No assistants found, please create one to get started"
|
||||
},
|
||||
"COPILOT": {
|
||||
"TITLE": "Kaaslane",
|
||||
@@ -449,7 +449,7 @@
|
||||
"CANCEL_ANYTIME": "Saate oma plaani igal ajal muuta või tühistada"
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "Captain AI on saadaval ainult ettevõtte plaanides.",
|
||||
"AVAILABLE_ON": "Captain AI is only available in the Enterprise plans.",
|
||||
"UPGRADE_PROMPT": "Uuendage oma plaani, et saada ligipääs meie assistentidele, copiloti ja muule.",
|
||||
"ASK_ADMIN": "Palun pöörduge uuenduse saamiseks oma administraatori poole."
|
||||
},
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Dokumendid",
|
||||
"ADD_NEW": "Loo uus dokument",
|
||||
"SELECTED": "{count} valitud",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Unselect all ({count})",
|
||||
"BULK_DELETE_BUTTON": "Delete",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "Jah, kustuta kõik",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Seotud KKK-d",
|
||||
"DESCRIPTION": "Need KKK-d on loodud otse dokumendist."
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Tools",
|
||||
"ADD_NEW": "Create a new tool",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "No custom tools available",
|
||||
"SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Failed to delete custom tool"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "Description",
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
"MESSAGING_RESTRICTED_WHATSAPP": "You can only reply using a template message due to 24-hour message window restriction",
|
||||
"MESSAGING_RESTRICTED_API": "You can only reply using a template message due to message window restriction",
|
||||
"MESSAGE_SIGNATURE_NOT_CONFIGURED": "امضای پیام پیکربندی نشده است، لطفاً آن را در تنظیمات نمایه پیکربندی کنید.",
|
||||
"COPILOT_MSG_INPUT": "دستورهای اضافی به Copilot بدهید، یا هر سوال دیگری بپرسید... برای ارسال پاسخ بعدی اینتر بزنید",
|
||||
"COPILOT_MSG_INPUT": "Give copilot additional prompts, or ask anything else... Press enter to send follow-up",
|
||||
"CLICK_HERE": "برای به روز رسانی اینجا را کلیک کنید",
|
||||
"WHATSAPP_TEMPLATES": "قالب های واتساپ"
|
||||
},
|
||||
@@ -214,7 +214,7 @@
|
||||
"DRAG_DROP": "برای ضمیمه کردن درگ و درآپ کنید",
|
||||
"START_AUDIO_RECORDING": "در حال شروع ضبط صدا",
|
||||
"STOP_AUDIO_RECORDING": "در حال توقف ضبط صدا",
|
||||
"COPILOT_THINKING": "Copilot در حال فکر کردن است",
|
||||
"COPILOT_THINKING": "Copilot is thinking",
|
||||
"EMAIL_HEAD": {
|
||||
"TO": "به",
|
||||
"ADD_BCC": "افزودن رونوشت",
|
||||
|
||||
@@ -316,18 +316,6 @@
|
||||
"SUCCESS_MESSAGE": "زبان محلی با موفقیت از پورتال حذف شد",
|
||||
"ERROR_MESSAGE": "حذف زبان محلی از پورتال ممکن نیست. دوباره امتحان کنید."
|
||||
}
|
||||
},
|
||||
"DRAFT_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale moved to draft successfully",
|
||||
"ERROR_MESSAGE": "Unable to move locale to draft. Try again."
|
||||
}
|
||||
},
|
||||
"PUBLISH_LOCALE": {
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "Locale published successfully",
|
||||
"ERROR_MESSAGE": "Unable to publish locale. Try again."
|
||||
}
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
@@ -656,11 +644,8 @@
|
||||
"ARTICLES_COUNT": "{count} article | {count} articles",
|
||||
"CATEGORIES_COUNT": "{count} category | {count} categories",
|
||||
"DEFAULT": "پیشفرض",
|
||||
"DRAFT": "پیشنویس",
|
||||
"DROPDOWN_MENU": {
|
||||
"MAKE_DEFAULT": "Make default",
|
||||
"MOVE_TO_DRAFT": "Move to draft",
|
||||
"PUBLISH_LOCALE": "Publish locale",
|
||||
"DELETE": "حذف"
|
||||
}
|
||||
},
|
||||
@@ -670,13 +655,6 @@
|
||||
"COMBOBOX": {
|
||||
"PLACEHOLDER": "انتخاب زبان..."
|
||||
},
|
||||
"STATUS": {
|
||||
"LABEL": "وضعیت",
|
||||
"OPTIONS": {
|
||||
"LIVE": "منتشر شد",
|
||||
"DRAFT": "پیشنویس"
|
||||
}
|
||||
},
|
||||
"API": {
|
||||
"SUCCESS_MESSAGE": "زبان محلی با موفقیت اضافه شد",
|
||||
"ERROR_MESSAGE": "امکان افزودن زبان محلی وجود ندارد. دوباره امتحان کنید."
|
||||
|
||||
@@ -390,72 +390,72 @@
|
||||
},
|
||||
"CAPTAIN": {
|
||||
"NAME": "Captain",
|
||||
"HEADER_KNOW_MORE": "اطلاعات بیشتر",
|
||||
"HEADER_KNOW_MORE": "Know more",
|
||||
"ASSISTANT_SWITCHER": {
|
||||
"ASSISTANTS": "دستیارها",
|
||||
"SWITCH_ASSISTANT": "جابهجایی بین دستیارها",
|
||||
"NEW_ASSISTANT": "ایجاد دستیار",
|
||||
"EMPTY_LIST": "هیچ دستیار یافت نشد، لطفاً یکی ایجاد کنید تا شروع کنید"
|
||||
"ASSISTANTS": "Assistants",
|
||||
"SWITCH_ASSISTANT": "Switch between assistants",
|
||||
"NEW_ASSISTANT": "Create Assistant",
|
||||
"EMPTY_LIST": "No assistants found, please create one to get started"
|
||||
},
|
||||
"COPILOT": {
|
||||
"TITLE": "Copilot",
|
||||
"TRY_THESE_PROMPTS": "Try these prompts",
|
||||
"PANEL_TITLE": "شروع به کار با Copilot",
|
||||
"KICK_OFF_MESSAGE": "نیاز به خلاصه سریع، چک کردن مکالمات گذشته یا نوشتن پاسخ بهتر دارید؟ Copilot اینجا است تا سرعت کار را افزایش دهد.",
|
||||
"PANEL_TITLE": "Get started with Copilot",
|
||||
"KICK_OFF_MESSAGE": "Need a quick summary, want to check past conversations, or draft a better reply? Copilot’s here to speed things up.",
|
||||
"SEND_MESSAGE": "ارسال پیام...",
|
||||
"EMPTY_MESSAGE": "خطا در تولید پاسخ رخ داد. لطفاً دوباره تلاش کنید.",
|
||||
"LOADER": "Captain در حال فکر کردن است",
|
||||
"EMPTY_MESSAGE": "There was an error generating the response. Please try again.",
|
||||
"LOADER": "Captain is thinking",
|
||||
"YOU": "شما",
|
||||
"USE": "استفاده از این",
|
||||
"RESET": "تنظیم مجدد",
|
||||
"SHOW_STEPS": "نمایش مراحل",
|
||||
"SELECT_ASSISTANT": "انتخاب دستیار",
|
||||
"USE": "Use this",
|
||||
"RESET": "Reset",
|
||||
"SHOW_STEPS": "Show steps",
|
||||
"SELECT_ASSISTANT": "Select Assistant",
|
||||
"PROMPTS": {
|
||||
"SUMMARIZE": {
|
||||
"LABEL": "خلاصه این مکالمه",
|
||||
"CONTENT": "نکات کلیدی مطرح شده بین مشتری و نماینده پشتیبانی شامل نگرانیها، سوالات و راهحلها یا پاسخهای ارائه شده را خلاصه کن"
|
||||
"LABEL": "Summarize this conversation",
|
||||
"CONTENT": "Summarize the key points discussed between the customer and the support agent, including the customer's concerns, questions, and the solutions or responses provided by the support agent"
|
||||
},
|
||||
"SUGGEST": {
|
||||
"LABEL": "پیشنهاد پاسخ",
|
||||
"CONTENT": "درخواست مشتری را تحلیل کن و پاسخی بنویس که به طور مؤثر نگرانیها یا سوالاتش را برطرف کند. مطمئن شو پاسخ واضح، مختصر و مفید باشد."
|
||||
"LABEL": "Suggest an answer",
|
||||
"CONTENT": "Analyze the customer's inquiry, and draft a response that effectively addresses their concerns or questions. Ensure the reply is clear, concise, and provides helpful information."
|
||||
},
|
||||
"RATE": {
|
||||
"LABEL": "امتیاز دادن به این مکالمه",
|
||||
"CONTENT": "مکالمه را بررسی کن تا ببینی چقدر نیازهای مشتری را پاسخ داده است. امتیازی از ۵ بر اساس لحن، وضوح و اثربخشی بده."
|
||||
"LABEL": "Rate this conversation",
|
||||
"CONTENT": "Review the conversation to see how well it meets the customer's needs. Share a rating out of 5 based on tone, clarity, and effectiveness."
|
||||
},
|
||||
"HIGH_PRIORITY": {
|
||||
"LABEL": "مکالمات با اولویت بالا",
|
||||
"CONTENT": "خلاصهای از همه مکالمات با اولویت بالا که باز هستند بدهید. شامل شناسه مکالمه، نام مشتری (در صورت موجود بودن)، محتوای پیام آخر و نماینده اختصاص داده شده. در صورت لزوم بر اساس وضعیت گروهبندی کنید."
|
||||
"LABEL": "High priority conversations",
|
||||
"CONTENT": "Give me a summary of all high priority open conversations. Include the conversation ID, customer name (if available), last message content, and assigned agent. Group by status if relevant."
|
||||
},
|
||||
"LIST_CONTACTS": {
|
||||
"LABEL": "فهرست مخاطبین",
|
||||
"CONTENT": "فهرست ۱۰ مخاطب برتر را نشان بده. شامل نام، ایمیل یا شماره تلفن (در صورت موجود بودن)، زمان آخرین حضور، برچسبها (در صورت وجود)."
|
||||
"LABEL": "List contacts",
|
||||
"CONTENT": "Show me the list of top 10 contacts. Include name, email or phone number (if available), last seen time, tags (if any)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"PLAYGROUND": {
|
||||
"USER": "شما",
|
||||
"ASSISTANT": "دستیار",
|
||||
"ASSISTANT": "Assistant",
|
||||
"MESSAGE_PLACEHOLDER": "پیام خود را وارد کنید...",
|
||||
"HEADER": "زمین بازی",
|
||||
"DESCRIPTION": "از این زمین بازی استفاده کنید تا پیامهایی به دستیار خود بفرستید و بررسی کنید که پاسخها دقیق، سریع و با لحن مورد انتظار شما باشند.",
|
||||
"CREDIT_NOTE": "پیامهای ارسال شده اینجا، از اعتبارهای Captain شما کسر خواهد شد."
|
||||
"HEADER": "Playground",
|
||||
"DESCRIPTION": "Use this playground to send messages to your assistant and check if it responds accurately, quickly, and in the tone you expect.",
|
||||
"CREDIT_NOTE": "Messages sent here will count toward your Captain credits."
|
||||
},
|
||||
"PAYWALL": {
|
||||
"TITLE": "برای استفاده از Captain AI ارتقا دهید",
|
||||
"AVAILABLE_ON": "Captain در پلن رایگان در دسترس نیست.",
|
||||
"UPGRADE_PROMPT": "پلن خود را ارتقا دهید تا به دستیارها، Copilot و امکانات بیشتر دسترسی پیدا کنید.",
|
||||
"TITLE": "Upgrade to use Captain AI",
|
||||
"AVAILABLE_ON": "Captain is not available on the free plan.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"UPGRADE_NOW": "حالا ارتقا دهید",
|
||||
"CANCEL_ANYTIME": "You can change or cancel your plan anytime"
|
||||
},
|
||||
"ENTERPRISE_PAYWALL": {
|
||||
"AVAILABLE_ON": "Captain AI فقط در طرحهای Enterprise در دسترس است.",
|
||||
"UPGRADE_PROMPT": "پلن خود را ارتقا دهید تا به دستیارها، Copilot و امکانات بیشتر دسترسی پیدا کنید.",
|
||||
"AVAILABLE_ON": "Captain AI is only available in the Enterprise plans.",
|
||||
"UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.",
|
||||
"ASK_ADMIN": "لطفاً برای ارتقا با ادمین خود تماس بگیرید."
|
||||
},
|
||||
"BANNER": {
|
||||
"RESPONSES": "بیش از ۸۰٪ از حد پاسخهای خود را استفاده کردهاید. برای ادامه استفاده از Captain AI لطفاً ارتقا دهید.",
|
||||
"DOCUMENTS": "حد سندها به پایان رسید. برای ادامه استفاده از Captain AI پلن خود را ارتقا دهید."
|
||||
"RESPONSES": "You've used over 80% of your response limit. To continue using Captain AI, please upgrade.",
|
||||
"DOCUMENTS": "Document limit reached. Upgrade to continue using Captain AI."
|
||||
},
|
||||
"FORM": {
|
||||
"CANCEL": "انصراف",
|
||||
@@ -738,17 +738,6 @@
|
||||
"DOCUMENTS": {
|
||||
"HEADER": "Documents",
|
||||
"ADD_NEW": "Create a new document",
|
||||
"SELECTED": "{count} selected",
|
||||
"SELECT_ALL": "Select all ({count})",
|
||||
"UNSELECT_ALL": "Unselect all ({count})",
|
||||
"BULK_DELETE_BUTTON": "حذف",
|
||||
"BULK_DELETE": {
|
||||
"TITLE": "Delete documents?",
|
||||
"DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.",
|
||||
"CONFIRM": "Yes, delete all",
|
||||
"SUCCESS_MESSAGE": "Documents deleted successfully",
|
||||
"ERROR_MESSAGE": "There was an error deleting the documents, please try again."
|
||||
},
|
||||
"RELATED_RESPONSES": {
|
||||
"TITLE": "Related FAQs",
|
||||
"DESCRIPTION": "These FAQs are generated directly from the document."
|
||||
@@ -806,7 +795,6 @@
|
||||
"CUSTOM_TOOLS": {
|
||||
"HEADER": "Tools",
|
||||
"ADD_NEW": "Create a new tool",
|
||||
"SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.",
|
||||
"EMPTY_STATE": {
|
||||
"TITLE": "No custom tools available",
|
||||
"SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.",
|
||||
@@ -837,18 +825,11 @@
|
||||
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
|
||||
"ERROR_MESSAGE": "Failed to delete custom tool"
|
||||
},
|
||||
"TEST": {
|
||||
"BUTTON": "Test connection",
|
||||
"SUCCESS": "Endpoint returned HTTP {status}",
|
||||
"ERROR": "Connection failed",
|
||||
"DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
|
||||
},
|
||||
"FORM": {
|
||||
"TITLE": {
|
||||
"LABEL": "Tool Name",
|
||||
"PLACEHOLDER": "Order Lookup",
|
||||
"ERROR": "Tool name is required",
|
||||
"MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer"
|
||||
"ERROR": "Tool name is required"
|
||||
},
|
||||
"DESCRIPTION": {
|
||||
"LABEL": "توضیحات",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user