From 109aaa2341bd6377b907a85ff330a4fc5b7f5307 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Thu, 2 Oct 2025 08:18:54 +0530 Subject: [PATCH 01/26] fix: Display proper conversation ID with click-to-open in SLA reports (#12570) --- .../settings/reports/components/SLA/SLAReportItem.vue | 11 ++++++++--- .../api/v1/accounts/applied_slas/index.json.jbuilder | 2 +- .../api/v1/accounts/applied_slas_controller_spec.rb | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAReportItem.vue b/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAReportItem.vue index 9604cedf9..4712036be 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAReportItem.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAReportItem.vue @@ -27,6 +27,11 @@ const conversationLabels = computed(() => { ? props.conversation.labels.split(',').map(item => item.trim()) : []; }); + +const routerParams = computed(() => ({ + name: 'inbox_conversation', + params: { conversation_id: props.conversationId }, +})); diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/whatsapp/Reauthorize.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/whatsapp/Reauthorize.vue index 08ddcaded..229b62f69 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/whatsapp/Reauthorize.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/whatsapp/Reauthorize.vue @@ -16,6 +16,10 @@ const props = defineProps({ type: Object, required: true, }, + whatsappRegistrationIncomplete: { + type: Boolean, + default: false, + }, }); const { t } = useI18n(); @@ -28,6 +32,20 @@ const whatsappConfigurationId = computed( () => window.chatwootConfig.whatsappConfigurationId ); +const actionLabel = computed(() => { + if (props.whatsappRegistrationIncomplete) { + return t('INBOX_MGMT.COMPLETE_REGISTRATION'); + } + return ''; +}); + +const description = computed(() => { + if (props.whatsappRegistrationIncomplete) { + return t('INBOX_MGMT.WHATSAPP_REGISTRATION_INCOMPLETE'); + } + return ''; +}); + const reauthorizeWhatsApp = async params => { isRequestingAuthorization.value = true; @@ -185,6 +203,8 @@ defineExpose({ diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/AccountHealth.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/AccountHealth.vue new file mode 100644 index 000000000..026c8ef69 --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/AccountHealth.vue @@ -0,0 +1,228 @@ + + + diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/InboxReconnectionRequired.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/InboxReconnectionRequired.vue index ac84065e9..109272973 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/InboxReconnectionRequired.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/InboxReconnectionRequired.vue @@ -1,15 +1,26 @@ diff --git a/app/policies/inbox_policy.rb b/app/policies/inbox_policy.rb index 8a6f81484..cace85e5e 100644 --- a/app/policies/inbox_policy.rb +++ b/app/policies/inbox_policy.rb @@ -61,4 +61,8 @@ class InboxPolicy < ApplicationPolicy def sync_templates? @account_user.administrator? end + + def health? + @account_user.administrator? + end end diff --git a/app/services/whatsapp/embedded_signup_service.rb b/app/services/whatsapp/embedded_signup_service.rb index 1b882b1f1..4379d0b74 100644 --- a/app/services/whatsapp/embedded_signup_service.rb +++ b/app/services/whatsapp/embedded_signup_service.rb @@ -17,6 +17,7 @@ class Whatsapp::EmbeddedSignupService channel = create_or_reauthorize_channel(access_token, phone_info) channel.setup_webhooks + check_channel_health_and_prompt_reauth(channel) channel rescue StandardError => e @@ -52,6 +53,24 @@ class Whatsapp::EmbeddedSignupService end end + def check_channel_health_and_prompt_reauth(channel) + health_data = Whatsapp::HealthService.new(channel).fetch_health_status + return unless health_data + + if channel_in_pending_state?(health_data) + channel.prompt_reauthorization! + else + Rails.logger.info "[WHATSAPP] Channel #{channel.phone_number} health check passed" + end + rescue StandardError => e + Rails.logger.error "[WHATSAPP] Health check failed for channel #{channel.phone_number}: #{e.message}" + end + + def channel_in_pending_state?(health_data) + health_data[:platform_type] == 'NOT_APPLICABLE' || + health_data.dig(:throughput, 'level') == 'NOT_APPLICABLE' + end + def validate_parameters! missing_params = [] missing_params << 'code' if @code.blank? diff --git a/app/services/whatsapp/health_service.rb b/app/services/whatsapp/health_service.rb new file mode 100644 index 000000000..94789ef79 --- /dev/null +++ b/app/services/whatsapp/health_service.rb @@ -0,0 +1,84 @@ +class Whatsapp::HealthService + BASE_URI = 'https://graph.facebook.com'.freeze + + def initialize(channel) + @channel = channel + @access_token = channel.provider_config['api_key'] + @api_version = GlobalConfigService.load('WHATSAPP_API_VERSION', 'v22.0') + end + + def fetch_health_status + validate_channel! + fetch_phone_health_data + end + + private + + def validate_channel! + raise ArgumentError, 'Channel is required' if @channel.blank? + raise ArgumentError, 'API key is missing' if @access_token.blank? + raise ArgumentError, 'Phone number ID is missing' if @channel.provider_config['phone_number_id'].blank? + end + + def fetch_phone_health_data + phone_number_id = @channel.provider_config['phone_number_id'] + + response = HTTParty.get( + "#{BASE_URI}/#{@api_version}/#{phone_number_id}", + query: { + fields: health_fields, + access_token: @access_token + } + ) + + handle_response(response) + rescue StandardError => e + Rails.logger.error "[WHATSAPP HEALTH] Error fetching health data: #{e.message}" + raise e + end + + def health_fields + %w[ + quality_rating + messaging_limit_tier + code_verification_status + account_mode + id + display_phone_number + name_status + verified_name + webhook_configuration + throughput + last_onboarded_time + platform_type + certificate + ].join(',') + end + + def handle_response(response) + unless response.success? + error_message = "WhatsApp API request failed: #{response.code} - #{response.body}" + Rails.logger.error "[WHATSAPP HEALTH] #{error_message}" + raise error_message + end + + data = response.parsed_response + format_health_response(data) + end + + def format_health_response(response) + { + display_phone_number: response['display_phone_number'], + verified_name: response['verified_name'], + name_status: response['name_status'], + quality_rating: response['quality_rating'], + messaging_limit_tier: response['messaging_limit_tier'], + account_mode: response['account_mode'], + code_verification_status: response['code_verification_status'], + throughput: response['throughput'], + last_onboarded_time: response['last_onboarded_time'], + platform_type: response['platform_type'], + business_id: @channel.provider_config['business_account_id'] + } + end +end diff --git a/app/services/whatsapp/webhook_setup_service.rb b/app/services/whatsapp/webhook_setup_service.rb index a3faaaa56..63fed1e93 100644 --- a/app/services/whatsapp/webhook_setup_service.rb +++ b/app/services/whatsapp/webhook_setup_service.rb @@ -8,8 +8,12 @@ class Whatsapp::WebhookSetupService def perform validate_parameters! - # Since coexistence method does not need to register, we check it - register_phone_number unless phone_number_verified? + + # Register phone number if either condition is met: + # 1. Phone number is not verified (code_verification_status != 'VERIFIED') + # 2. Phone number needs registration (pending provisioning state) + register_phone_number if !phone_number_verified? || phone_number_needs_registration? + setup_webhook end @@ -69,9 +73,44 @@ class Whatsapp::WebhookSetupService def phone_number_verified? phone_number_id = @channel.provider_config['phone_number_id'] - @api_client.phone_number_verified?(phone_number_id) + # Check with WhatsApp API if the phone number code verification is complete + # This checks code_verification_status == 'VERIFIED' + verified = @api_client.phone_number_verified?(phone_number_id) + Rails.logger.info("[WHATSAPP] Phone number #{phone_number_id} code verification status: #{verified}") + + verified rescue StandardError => e - Rails.logger.error("[WHATSAPP] Phone registration status check failed, but continuing: #{e.message}") + # If verification check fails, assume not verified to be safe + Rails.logger.error("[WHATSAPP] Phone verification status check failed: #{e.message}") + false + end + + def phone_number_needs_registration? + # Check if phone is in pending provisioning state based on health data + # This is a separate check from phone_number_verified? which only checks code verification + + phone_number_in_pending_state? + + rescue StandardError => e + Rails.logger.error("[WHATSAPP] Phone registration check failed: #{e.message}") + # Conservative approach: don't register if we can't determine the state + false + end + + def phone_number_in_pending_state? + health_service = Whatsapp::HealthService.new(@channel) + health_data = health_service.fetch_health_status + + # Check if phone number is in "not provisioned" state based on health indicators + # These conditions indicate the number is pending and needs registration: + # - platform_type: "NOT_APPLICABLE" means not fully set up + # - throughput.level: "NOT_APPLICABLE" means no messaging capacity assigned + health_data[:platform_type] == 'NOT_APPLICABLE' || + health_data.dig(:throughput, :level) == 'NOT_APPLICABLE' + + rescue StandardError => e + Rails.logger.error("[WHATSAPP] Health status check failed: #{e.message}") + # If health check fails, assume registration is not needed to avoid errors false end end diff --git a/config/routes.rb b/config/routes.rb index 6a484b380..bf455949c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -193,6 +193,7 @@ Rails.application.routes.draw do post :set_agent_bot, on: :member delete :avatar, on: :member post :sync_templates, on: :member + get :health, on: :member end resources :inbox_members, only: [:create, :show], param: :inbox_id do collection do diff --git a/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb b/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb index cc235cada..a44f60391 100644 --- a/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb @@ -980,4 +980,153 @@ RSpec.describe 'Inboxes API', type: :request do end end end + + describe 'GET /api/v1/accounts/{account.id}/inboxes/{inbox.id}/health' do + let(:whatsapp_channel) do + create(:channel_whatsapp, account: account, provider: 'whatsapp_cloud', sync_templates: false, validate_provider_config: false) + end + let(:whatsapp_inbox) { create(:inbox, account: account, channel: whatsapp_channel) } + let(:non_whatsapp_inbox) { create(:inbox, account: account) } + let(:health_service) { instance_double(Whatsapp::HealthService) } + let(:health_data) do + { + display_phone_number: '+1234567890', + verified_name: 'Test Business', + name_status: 'APPROVED', + quality_rating: 'GREEN', + messaging_limit_tier: 'TIER_1000', + account_mode: 'LIVE', + business_id: 'business123' + } + end + + before do + allow(Whatsapp::HealthService).to receive(:new).and_return(health_service) + allow(health_service).to receive(:fetch_health_status).and_return(health_data) + end + + context 'when it is an unauthenticated user' do + it 'returns unauthorized' do + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/health" + + expect(response).to have_http_status(:unauthorized) + end + end + + context 'when it is an authenticated user' do + context 'with WhatsApp inbox' do + it 'returns health data for administrator' do + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/health", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:success) + json_response = response.parsed_body + expect(json_response).to include( + 'display_phone_number' => '+1234567890', + 'verified_name' => 'Test Business', + 'name_status' => 'APPROVED', + 'quality_rating' => 'GREEN', + 'messaging_limit_tier' => 'TIER_1000', + 'account_mode' => 'LIVE', + 'business_id' => 'business123' + ) + end + + it 'returns health data for agent with inbox access' do + create(:inbox_member, user: agent, inbox: whatsapp_inbox) + + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/health", + headers: agent.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:success) + json_response = response.parsed_body + expect(json_response['display_phone_number']).to eq('+1234567890') + end + + it 'returns unauthorized for agent without inbox access' do + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/health", + headers: agent.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:unauthorized) + end + + it 'calls the health service with correct channel' do + expect(Whatsapp::HealthService).to receive(:new).with(whatsapp_channel).and_return(health_service) + expect(health_service).to receive(:fetch_health_status) + + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/health", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:success) + end + + it 'handles service errors gracefully' do + allow(health_service).to receive(:fetch_health_status).and_raise(StandardError, 'API Error') + + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/health", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:unprocessable_entity) + json_response = response.parsed_body + expect(json_response['error']).to include('API Error') + end + end + + context 'with non-WhatsApp inbox' do + it 'returns bad request error for administrator' do + get "/api/v1/accounts/#{account.id}/inboxes/#{non_whatsapp_inbox.id}/health", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:bad_request) + json_response = response.parsed_body + expect(json_response['error']).to eq('Health data only available for WhatsApp Cloud API channels') + end + + it 'returns bad request error for agent' do + create(:inbox_member, user: agent, inbox: non_whatsapp_inbox) + + get "/api/v1/accounts/#{account.id}/inboxes/#{non_whatsapp_inbox.id}/health", + headers: agent.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:bad_request) + json_response = response.parsed_body + expect(json_response['error']).to eq('Health data only available for WhatsApp Cloud API channels') + end + end + + context 'with WhatsApp non-cloud inbox' do + let(:whatsapp_default_channel) do + create(:channel_whatsapp, account: account, provider: 'default', sync_templates: false, validate_provider_config: false) + end + let(:whatsapp_default_inbox) { create(:inbox, account: account, channel: whatsapp_default_channel) } + + it 'returns bad request error for non-cloud provider' do + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_default_inbox.id}/health", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:bad_request) + json_response = response.parsed_body + expect(json_response['error']).to eq('Health data only available for WhatsApp Cloud API channels') + end + end + + context 'with non-existent inbox' do + it 'returns not found error' do + get "/api/v1/accounts/#{account.id}/inboxes/999999/health", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:not_found) + end + end + end + end end diff --git a/spec/services/whatsapp/embedded_signup_service_spec.rb b/spec/services/whatsapp/embedded_signup_service_spec.rb index 1db94928e..a20e36ac8 100644 --- a/spec/services/whatsapp/embedded_signup_service_spec.rb +++ b/spec/services/whatsapp/embedded_signup_service_spec.rb @@ -48,6 +48,15 @@ describe Whatsapp::EmbeddedSignupService do allow(channel_creation).to receive(:perform).and_return(channel) allow(channel).to receive(:setup_webhooks) + allow(channel).to receive(:phone_number).and_return('+1234567890') + + health_service = instance_double(Whatsapp::HealthService) + allow(Whatsapp::HealthService).to receive(:new).and_return(health_service) + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'CLOUD_API', + throughput: { 'level' => 'STANDARD' }, + messaging_limit_tier: 'TIER_1000' + }) end it 'creates channel and sets up webhooks' do @@ -57,6 +66,49 @@ describe Whatsapp::EmbeddedSignupService do expect(result).to eq(channel) end + it 'checks health status after channel creation' do + health_service = instance_double(Whatsapp::HealthService) + allow(Whatsapp::HealthService).to receive(:new).and_return(health_service) + expect(health_service).to receive(:fetch_health_status) + + service.perform + end + + context 'when channel is in pending state' do + it 'prompts reauthorization for pending channel' do + health_service = instance_double(Whatsapp::HealthService) + allow(Whatsapp::HealthService).to receive(:new).and_return(health_service) + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'NOT_APPLICABLE', + throughput: { 'level' => 'STANDARD' }, + messaging_limit_tier: 'TIER_1000' + }) + + expect(channel).to receive(:prompt_reauthorization!) + service.perform + end + + it 'prompts reauthorization when throughput level is NOT_APPLICABLE' do + health_service = instance_double(Whatsapp::HealthService) + allow(Whatsapp::HealthService).to receive(:new).and_return(health_service) + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'CLOUD_API', + throughput: { 'level' => 'NOT_APPLICABLE' }, + messaging_limit_tier: 'TIER_1000' + }) + + expect(channel).to receive(:prompt_reauthorization!) + service.perform + end + end + + context 'when channel is healthy' do + it 'does not prompt reauthorization for healthy channel' do + expect(channel).not_to receive(:prompt_reauthorization!) + service.perform + end + end + context 'when parameters are invalid' do it 'raises ArgumentError for missing parameters' do invalid_service = described_class.new(account: account, params: { code: '', business_id: '', waba_id: '' }) @@ -114,6 +166,16 @@ describe Whatsapp::EmbeddedSignupService do business_id: params[:business_id] ).and_return(reauth_service) allow(reauth_service).to receive(:perform).with(access_token, phone_info).and_return(channel) + + allow(channel).to receive(:phone_number).and_return('+1234567890') + + health_service = instance_double(Whatsapp::HealthService) + allow(Whatsapp::HealthService).to receive(:new).and_return(health_service) + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'CLOUD_API', + throughput: { 'level' => 'STANDARD' }, + messaging_limit_tier: 'TIER_1000' + }) end it 'uses ReauthorizationService and sets up webhooks' do @@ -124,36 +186,57 @@ describe Whatsapp::EmbeddedSignupService do expect(result).to eq(channel) end - it 'clears reauthorization flag' do - inbox = create(:inbox, account: account) - whatsapp_channel = create(:channel_whatsapp, account: account, phone_number: '+1234567890', - validate_provider_config: false, sync_templates: false) - inbox.update!(channel: whatsapp_channel) - whatsapp_channel.prompt_reauthorization! + context 'with real channel requiring reauthorization' do + let(:inbox) { create(:inbox, account: account) } + let(:whatsapp_channel) do + create(:channel_whatsapp, account: account, phone_number: '+1234567890', + validate_provider_config: false, sync_templates: false) + end + let(:service_with_real_inbox) { described_class.new(account: account, params: params, inbox_id: inbox.id) } - service_with_real_inbox = described_class.new(account: account, params: params, inbox_id: inbox.id) + before do + inbox.update!(channel: whatsapp_channel) + whatsapp_channel.prompt_reauthorization! - # Mock the ReauthorizationService to return our test channel - reauth_service = instance_double(Whatsapp::ReauthorizationService) - allow(Whatsapp::ReauthorizationService).to receive(:new).with( - account: account, - inbox_id: inbox.id, - phone_number_id: params[:phone_number_id], - business_id: params[:business_id] - ).and_return(reauth_service) - - # Perform the reauthorization and clear the flag - allow(reauth_service).to receive(:perform) do - whatsapp_channel.reauthorized! - whatsapp_channel + setup_reauthorization_mocks + setup_health_service_mock end - allow(whatsapp_channel).to receive(:setup_webhooks).and_return(true) + it 'clears reauthorization flag when reauthorization completes' do + expect(whatsapp_channel.reauthorization_required?).to be true + result = service_with_real_inbox.perform + expect(result).to eq(whatsapp_channel) + expect(whatsapp_channel.reauthorization_required?).to be false + end - expect(whatsapp_channel.reauthorization_required?).to be true - result = service_with_real_inbox.perform - expect(result).to eq(whatsapp_channel) - expect(whatsapp_channel.reauthorization_required?).to be false + private + + def setup_reauthorization_mocks + reauth_service = instance_double(Whatsapp::ReauthorizationService) + allow(Whatsapp::ReauthorizationService).to receive(:new).with( + account: account, + inbox_id: inbox.id, + phone_number_id: params[:phone_number_id], + business_id: params[:business_id] + ).and_return(reauth_service) + + allow(reauth_service).to receive(:perform) do + whatsapp_channel.reauthorized! + whatsapp_channel + end + + allow(whatsapp_channel).to receive(:setup_webhooks).and_return(true) + end + + def setup_health_service_mock + health_service = instance_double(Whatsapp::HealthService) + allow(Whatsapp::HealthService).to receive(:new).and_return(health_service) + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'CLOUD_API', + throughput: { 'level' => 'STANDARD' }, + messaging_limit_tier: 'TIER_1000' + }) + end end end end diff --git a/spec/services/whatsapp/webhook_setup_service_spec.rb b/spec/services/whatsapp/webhook_setup_service_spec.rb index e6a246e5d..38856e252 100644 --- a/spec/services/whatsapp/webhook_setup_service_spec.rb +++ b/spec/services/whatsapp/webhook_setup_service_spec.rb @@ -16,6 +16,7 @@ describe Whatsapp::WebhookSetupService do let(:access_token) { 'test_access_token' } let(:service) { described_class.new(channel, waba_id, access_token) } let(:api_client) { instance_double(Whatsapp::FacebookApiClient) } + let(:health_service) { instance_double(Whatsapp::HealthService) } before do # Stub webhook teardown to prevent HTTP calls during cleanup @@ -24,8 +25,14 @@ describe Whatsapp::WebhookSetupService do # Clean up any existing channels to avoid phone number conflicts Channel::Whatsapp.destroy_all allow(Whatsapp::FacebookApiClient).to receive(:new).and_return(api_client) - # Default stub for phone_number_verified? with any argument + allow(Whatsapp::HealthService).to receive(:new).and_return(health_service) + + # Default stubs for phone_number_verified? and health service allow(api_client).to receive(:phone_number_verified?).and_return(false) + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'APPLICABLE', + throughput: { level: 'APPLICABLE' } + }) end describe '#perform' do @@ -49,9 +56,13 @@ describe Whatsapp::WebhookSetupService do end end - context 'when phone number IS verified (should NOT register)' do + context 'when phone number IS verified AND fully provisioned (should NOT register)' do before do allow(api_client).to receive(:phone_number_verified?).with('123456789').and_return(true) + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'APPLICABLE', + throughput: { level: 'APPLICABLE' } + }) allow(api_client).to receive(:subscribe_waba_webhook) .with(waba_id, anything, 'test_verify_token').and_return({ 'success' => true }) end @@ -66,16 +77,68 @@ describe Whatsapp::WebhookSetupService do end end + context 'when phone number IS verified BUT needs registration (pending provisioning)' do + before do + allow(api_client).to receive(:phone_number_verified?).with('123456789').and_return(true) + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'NOT_APPLICABLE', + throughput: { level: 'APPLICABLE' } + }) + allow(SecureRandom).to receive(:random_number).with(900_000).and_return(123_456) + allow(api_client).to receive(:register_phone_number).with('123456789', 223_456) + allow(api_client).to receive(:subscribe_waba_webhook) + .with(waba_id, anything, 'test_verify_token').and_return({ 'success' => true }) + allow(channel).to receive(:save!) + end + + it 'registers the phone number due to pending provisioning state' do + with_modified_env FRONTEND_URL: 'https://app.chatwoot.com' do + expect(api_client).to receive(:register_phone_number).with('123456789', 223_456) + expect(api_client).to receive(:subscribe_waba_webhook) + .with(waba_id, 'https://app.chatwoot.com/webhooks/whatsapp/+1234567890', 'test_verify_token') + service.perform + end + end + end + + context 'when phone number needs registration due to throughput level' do + before do + allow(api_client).to receive(:phone_number_verified?).with('123456789').and_return(true) + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'APPLICABLE', + throughput: { level: 'NOT_APPLICABLE' } + }) + allow(SecureRandom).to receive(:random_number).with(900_000).and_return(123_456) + allow(api_client).to receive(:register_phone_number).with('123456789', 223_456) + allow(api_client).to receive(:subscribe_waba_webhook) + .with(waba_id, anything, 'test_verify_token').and_return({ 'success' => true }) + allow(channel).to receive(:save!) + end + + it 'registers the phone number due to throughput not applicable' do + with_modified_env FRONTEND_URL: 'https://app.chatwoot.com' do + expect(api_client).to receive(:register_phone_number).with('123456789', 223_456) + expect(api_client).to receive(:subscribe_waba_webhook) + .with(waba_id, 'https://app.chatwoot.com/webhooks/whatsapp/+1234567890', 'test_verify_token') + service.perform + end + end + end + context 'when phone_number_verified? raises error' do before do allow(api_client).to receive(:phone_number_verified?).with('123456789').and_raise('API down') + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'APPLICABLE', + throughput: { level: 'APPLICABLE' } + }) allow(SecureRandom).to receive(:random_number).with(900_000).and_return(123_456) allow(api_client).to receive(:register_phone_number) allow(api_client).to receive(:subscribe_waba_webhook).and_return({ 'success' => true }) allow(channel).to receive(:save!) end - it 'tries to register phone and proceeds with webhook setup' do + it 'tries to register phone (due to verification error) and proceeds with webhook setup' do with_modified_env FRONTEND_URL: 'https://app.chatwoot.com' do expect(api_client).to receive(:register_phone_number) expect(api_client).to receive(:subscribe_waba_webhook) @@ -84,6 +147,22 @@ describe Whatsapp::WebhookSetupService do end end + context 'when health service raises error' do + before do + allow(api_client).to receive(:phone_number_verified?).with('123456789').and_return(true) + allow(health_service).to receive(:fetch_health_status).and_raise('Health API down') + allow(api_client).to receive(:subscribe_waba_webhook).and_return({ 'success' => true }) + end + + it 'does not register phone (conservative approach) and proceeds with webhook setup' do + with_modified_env FRONTEND_URL: 'https://app.chatwoot.com' do + expect(api_client).not_to receive(:register_phone_number) + expect(api_client).to receive(:subscribe_waba_webhook) + expect { service.perform }.not_to raise_error + end + end + end + context 'when phone registration fails (not blocking)' do before do allow(api_client).to receive(:phone_number_verified?).with('123456789').and_return(false) @@ -193,6 +272,10 @@ describe Whatsapp::WebhookSetupService do before do allow(api_client).to receive(:phone_number_verified?).with('123456789').and_return(true) + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'APPLICABLE', + throughput: { level: 'APPLICABLE' } + }) allow(api_client).to receive(:subscribe_waba_webhook) .with(waba_id, anything, 'existing_verify_token').and_return({ 'success' => true }) end @@ -218,6 +301,10 @@ describe Whatsapp::WebhookSetupService do context 'when webhook setup is successful in creation flow' do before do allow(api_client).to receive(:phone_number_verified?).with('123456789').and_return(true) + allow(health_service).to receive(:fetch_health_status).and_return({ + platform_type: 'APPLICABLE', + throughput: { level: 'APPLICABLE' } + }) allow(api_client).to receive(:subscribe_waba_webhook) .with(waba_id, anything, 'test_verify_token').and_return({ 'success' => true }) end From c29a08f0cad59fd122f4e2881461e14c725dee81 Mon Sep 17 00:00:00 2001 From: Chatwoot Bot <92152627+chatwoot-bot@users.noreply.github.com> Date: Thu, 2 Oct 2025 05:54:12 -0700 Subject: [PATCH 03/26] chore: Update translations (#12555) --- .../dashboard/i18n/locale/am/conversation.json | 7 +++++++ .../dashboard/i18n/locale/am/login.json | 2 +- .../dashboard/i18n/locale/am/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/ar/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ar/login.json | 2 +- .../dashboard/i18n/locale/ar/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/az/conversation.json | 7 +++++++ .../dashboard/i18n/locale/az/login.json | 2 +- .../dashboard/i18n/locale/az/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/bg/conversation.json | 7 +++++++ .../dashboard/i18n/locale/bg/login.json | 2 +- .../dashboard/i18n/locale/bg/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/ca/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ca/login.json | 2 +- .../dashboard/i18n/locale/ca/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/cs/conversation.json | 7 +++++++ .../dashboard/i18n/locale/cs/login.json | 2 +- .../dashboard/i18n/locale/cs/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/da/conversation.json | 7 +++++++ .../dashboard/i18n/locale/da/login.json | 2 +- .../dashboard/i18n/locale/da/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/de/conversation.json | 7 +++++++ .../dashboard/i18n/locale/de/login.json | 2 +- .../dashboard/i18n/locale/de/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/el/conversation.json | 7 +++++++ .../dashboard/i18n/locale/el/login.json | 2 +- .../dashboard/i18n/locale/el/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/es/conversation.json | 7 +++++++ .../dashboard/i18n/locale/es/login.json | 2 +- .../dashboard/i18n/locale/es/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/fa/conversation.json | 7 +++++++ .../dashboard/i18n/locale/fa/login.json | 2 +- .../dashboard/i18n/locale/fa/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/fi/conversation.json | 7 +++++++ .../dashboard/i18n/locale/fi/login.json | 2 +- .../dashboard/i18n/locale/fi/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/fr/conversation.json | 7 +++++++ .../dashboard/i18n/locale/fr/login.json | 2 +- .../dashboard/i18n/locale/fr/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/he/conversation.json | 7 +++++++ .../dashboard/i18n/locale/he/login.json | 2 +- .../dashboard/i18n/locale/he/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/hi/conversation.json | 7 +++++++ .../dashboard/i18n/locale/hi/login.json | 2 +- .../dashboard/i18n/locale/hi/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/hr/conversation.json | 7 +++++++ .../dashboard/i18n/locale/hr/login.json | 2 +- .../dashboard/i18n/locale/hr/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/hu/conversation.json | 7 +++++++ .../dashboard/i18n/locale/hu/login.json | 2 +- .../dashboard/i18n/locale/hu/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/hy/conversation.json | 7 +++++++ .../dashboard/i18n/locale/hy/login.json | 2 +- .../dashboard/i18n/locale/hy/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/id/conversation.json | 7 +++++++ .../dashboard/i18n/locale/id/login.json | 2 +- .../dashboard/i18n/locale/id/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/is/conversation.json | 7 +++++++ .../dashboard/i18n/locale/is/login.json | 2 +- .../dashboard/i18n/locale/is/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/it/conversation.json | 7 +++++++ .../dashboard/i18n/locale/it/login.json | 2 +- .../dashboard/i18n/locale/it/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/ja/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ja/login.json | 2 +- .../dashboard/i18n/locale/ja/signup.json | 9 +++++++-- .../dashboard/i18n/locale/ka/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ka/login.json | 2 +- .../dashboard/i18n/locale/ka/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/ko/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ko/login.json | 2 +- .../dashboard/i18n/locale/ko/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/lt/conversation.json | 7 +++++++ .../dashboard/i18n/locale/lt/login.json | 2 +- .../dashboard/i18n/locale/lt/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/lv/conversation.json | 7 +++++++ .../dashboard/i18n/locale/lv/login.json | 2 +- .../dashboard/i18n/locale/lv/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/ml/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ml/login.json | 2 +- .../dashboard/i18n/locale/ml/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/ms/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ms/login.json | 2 +- .../dashboard/i18n/locale/ms/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/ne/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ne/login.json | 2 +- .../dashboard/i18n/locale/ne/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/nl/conversation.json | 7 +++++++ .../dashboard/i18n/locale/nl/login.json | 2 +- .../dashboard/i18n/locale/nl/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/no/conversation.json | 7 +++++++ .../dashboard/i18n/locale/no/login.json | 2 +- .../dashboard/i18n/locale/no/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/pl/conversation.json | 7 +++++++ .../dashboard/i18n/locale/pl/login.json | 2 +- .../dashboard/i18n/locale/pl/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/pt/conversation.json | 7 +++++++ .../dashboard/i18n/locale/pt/login.json | 2 +- .../dashboard/i18n/locale/pt/signup.json | 11 ++++++++--- .../i18n/locale/pt_BR/conversation.json | 7 +++++++ .../dashboard/i18n/locale/pt_BR/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/ro/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ro/login.json | 2 +- .../dashboard/i18n/locale/ro/signup.json | 9 +++++++-- .../dashboard/i18n/locale/ru/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ru/login.json | 2 +- .../dashboard/i18n/locale/ru/signup.json | 9 +++++++-- .../dashboard/i18n/locale/sh/conversation.json | 7 +++++++ .../dashboard/i18n/locale/sh/login.json | 2 +- .../dashboard/i18n/locale/sh/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/sk/conversation.json | 7 +++++++ .../dashboard/i18n/locale/sk/login.json | 2 +- .../dashboard/i18n/locale/sk/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/sl/conversation.json | 7 +++++++ .../dashboard/i18n/locale/sl/login.json | 2 +- .../dashboard/i18n/locale/sl/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/sq/conversation.json | 7 +++++++ .../dashboard/i18n/locale/sq/login.json | 2 +- .../dashboard/i18n/locale/sq/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/sr/conversation.json | 7 +++++++ .../dashboard/i18n/locale/sr/login.json | 2 +- .../dashboard/i18n/locale/sr/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/sv/conversation.json | 7 +++++++ .../dashboard/i18n/locale/sv/login.json | 2 +- .../dashboard/i18n/locale/sv/signup.json | 9 +++++++-- .../dashboard/i18n/locale/ta/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ta/login.json | 2 +- .../dashboard/i18n/locale/ta/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/th/conversation.json | 7 +++++++ .../dashboard/i18n/locale/th/login.json | 2 +- .../dashboard/i18n/locale/th/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/tl/conversation.json | 7 +++++++ .../dashboard/i18n/locale/tl/login.json | 2 +- .../dashboard/i18n/locale/tl/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/tr/conversation.json | 7 +++++++ .../dashboard/i18n/locale/tr/login.json | 2 +- .../dashboard/i18n/locale/tr/mfa.json | 18 +++++++++--------- .../dashboard/i18n/locale/tr/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/uk/conversation.json | 7 +++++++ .../dashboard/i18n/locale/uk/login.json | 2 +- .../dashboard/i18n/locale/uk/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/ur/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ur/login.json | 2 +- .../dashboard/i18n/locale/ur/signup.json | 11 ++++++++--- .../i18n/locale/ur_IN/conversation.json | 7 +++++++ .../dashboard/i18n/locale/ur_IN/login.json | 2 +- .../dashboard/i18n/locale/ur_IN/signup.json | 11 ++++++++--- .../dashboard/i18n/locale/vi/conversation.json | 7 +++++++ .../dashboard/i18n/locale/vi/login.json | 2 +- .../dashboard/i18n/locale/vi/signup.json | 9 +++++++-- .../i18n/locale/zh_CN/conversation.json | 7 +++++++ .../dashboard/i18n/locale/zh_CN/login.json | 2 +- .../dashboard/i18n/locale/zh_CN/signup.json | 9 +++++++-- .../i18n/locale/zh_TW/conversation.json | 7 +++++++ .../dashboard/i18n/locale/zh_TW/login.json | 2 +- .../dashboard/i18n/locale/zh_TW/signup.json | 9 +++++++-- 156 files changed, 833 insertions(+), 209 deletions(-) diff --git a/app/javascript/dashboard/i18n/locale/am/conversation.json b/app/javascript/dashboard/i18n/locale/am/conversation.json index ecd318834..fed805271 100644 --- a/app/javascript/dashboard/i18n/locale/am/conversation.json +++ b/app/javascript/dashboard/i18n/locale/am/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Cancel" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/am/login.json b/app/javascript/dashboard/i18n/locale/am/login.json index f347f2435..061284247 100644 --- a/app/javascript/dashboard/i18n/locale/am/login.json +++ b/app/javascript/dashboard/i18n/locale/am/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create a new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/am/signup.json b/app/javascript/dashboard/i18n/locale/am/signup.json index 501d9b87e..b0e5f5d27 100644 --- a/app/javascript/dashboard/i18n/locale/am/signup.json +++ b/app/javascript/dashboard/i18n/locale/am/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short.", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character." + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", "PLACEHOLDER": "Confirm password", - "ERROR": "Password doesnot match." + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/ar/conversation.json b/app/javascript/dashboard/i18n/locale/ar/conversation.json index a66530232..0ef95bbdc 100644 --- a/app/javascript/dashboard/i18n/locale/ar/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ar/conversation.json @@ -227,6 +227,13 @@ "YES": "إرسال", "CANCEL": "إلغاء" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "ملاحظة خاصة: مرئية فقط لك ولأعضاء فريقك", diff --git a/app/javascript/dashboard/i18n/locale/ar/login.json b/app/javascript/dashboard/i18n/locale/ar/login.json index 3cb1f9504..247285442 100644 --- a/app/javascript/dashboard/i18n/locale/ar/login.json +++ b/app/javascript/dashboard/i18n/locale/ar/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "إنشاء حساب جديد", "SUBMIT": "تسجيل الدخول", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ar/signup.json b/app/javascript/dashboard/i18n/locale/ar/signup.json index 835f9f620..150312da6 100644 --- a/app/javascript/dashboard/i18n/locale/ar/signup.json +++ b/app/javascript/dashboard/i18n/locale/ar/signup.json @@ -27,15 +27,20 @@ "LABEL": "كلمة المرور", "PLACEHOLDER": "كلمة المرور", "ERROR": "كلمة المرور قصيرة جداً", - "IS_INVALID_PASSWORD": "يجب أن تحتوي كلمة المرور على الأقل على حرف كبير واحد وحرف صغير واحد ورقم واحد وحرف خاص واحد" + "IS_INVALID_PASSWORD": "يجب أن تحتوي كلمة المرور على الأقل على حرف كبير واحد وحرف صغير واحد ورقم واحد وحرف خاص واحد", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "تأكيد كلمة المرور", "PLACEHOLDER": "تأكيد كلمة المرور", - "ERROR": "كلمة المرور غير متطابقة" + "ERROR": "كلمة المرور غير متطابقة." }, "API": { - "SUCCESS_MESSAGE": "تم التسجيل بنجاح", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "تعذر الاتصال بالخادم، الرجاء المحاولة مرة أخرى لاحقاً" }, "SUBMIT": "إرسال", diff --git a/app/javascript/dashboard/i18n/locale/az/conversation.json b/app/javascript/dashboard/i18n/locale/az/conversation.json index 9fd39b70f..79d5ebc66 100644 --- a/app/javascript/dashboard/i18n/locale/az/conversation.json +++ b/app/javascript/dashboard/i18n/locale/az/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Cancel" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/az/login.json b/app/javascript/dashboard/i18n/locale/az/login.json index f347f2435..061284247 100644 --- a/app/javascript/dashboard/i18n/locale/az/login.json +++ b/app/javascript/dashboard/i18n/locale/az/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create a new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/az/signup.json b/app/javascript/dashboard/i18n/locale/az/signup.json index 501d9b87e..b0e5f5d27 100644 --- a/app/javascript/dashboard/i18n/locale/az/signup.json +++ b/app/javascript/dashboard/i18n/locale/az/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short.", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character." + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", "PLACEHOLDER": "Confirm password", - "ERROR": "Password doesnot match." + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/bg/conversation.json b/app/javascript/dashboard/i18n/locale/bg/conversation.json index b8d15ad41..23da25e9d 100644 --- a/app/javascript/dashboard/i18n/locale/bg/conversation.json +++ b/app/javascript/dashboard/i18n/locale/bg/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Отмени" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/bg/login.json b/app/javascript/dashboard/i18n/locale/bg/login.json index 825040257..87b2016d0 100644 --- a/app/javascript/dashboard/i18n/locale/bg/login.json +++ b/app/javascript/dashboard/i18n/locale/bg/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/bg/signup.json b/app/javascript/dashboard/i18n/locale/bg/signup.json index 6c4c364fa..7e3e67bf1 100644 --- a/app/javascript/dashboard/i18n/locale/bg/signup.json +++ b/app/javascript/dashboard/i18n/locale/bg/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm Password", "PLACEHOLDER": "Confirm Password", - "ERROR": "Password doesnot match" + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Не можа да се свърже с Woot сървър. Моля, опитайте отново по-късно" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/ca/conversation.json b/app/javascript/dashboard/i18n/locale/ca/conversation.json index 4c692c7c5..5ddfd3c4a 100644 --- a/app/javascript/dashboard/i18n/locale/ca/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ca/conversation.json @@ -227,6 +227,13 @@ "YES": "Envia", "CANCEL": "Cancel·la" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Nota privada: Només és visible per tu i el vostre equip", diff --git a/app/javascript/dashboard/i18n/locale/ca/login.json b/app/javascript/dashboard/i18n/locale/ca/login.json index 6afe967f6..5de4ef8fc 100644 --- a/app/javascript/dashboard/i18n/locale/ca/login.json +++ b/app/javascript/dashboard/i18n/locale/ca/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Crear un nou compte", "SUBMIT": "Inicia la sessió", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ca/signup.json b/app/javascript/dashboard/i18n/locale/ca/signup.json index 5bb9067ba..0d3a1ba02 100644 --- a/app/javascript/dashboard/i18n/locale/ca/signup.json +++ b/app/javascript/dashboard/i18n/locale/ca/signup.json @@ -27,15 +27,20 @@ "LABEL": "Contrasenya", "PLACEHOLDER": "Contrasenya", "ERROR": "La contrasenya és massa curta", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirma la contrasenya", "PLACEHOLDER": "Confirma la contrasenya", - "ERROR": "La contrasenya no coincideix." + "ERROR": "La contrasenya no coindeix." }, "API": { - "SUCCESS_MESSAGE": "Registrat correctament", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "No s'ha pogut connectar amb el servidor Woot. Torna-ho a provar més endavant" }, "SUBMIT": "Crear un compte", diff --git a/app/javascript/dashboard/i18n/locale/cs/conversation.json b/app/javascript/dashboard/i18n/locale/cs/conversation.json index 12bea0321..b5eb3e61a 100644 --- a/app/javascript/dashboard/i18n/locale/cs/conversation.json +++ b/app/javascript/dashboard/i18n/locale/cs/conversation.json @@ -227,6 +227,13 @@ "YES": "Poslat", "CANCEL": "Zrušit" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Soukromá poznámka: Viditelné pouze pro vás a váš tým", diff --git a/app/javascript/dashboard/i18n/locale/cs/login.json b/app/javascript/dashboard/i18n/locale/cs/login.json index 42d455c9a..65c42b406 100644 --- a/app/javascript/dashboard/i18n/locale/cs/login.json +++ b/app/javascript/dashboard/i18n/locale/cs/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Vytvořit nový účet", "SUBMIT": "Přihlásit se", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/cs/signup.json b/app/javascript/dashboard/i18n/locale/cs/signup.json index 01bab4804..4e0f5ffb9 100644 --- a/app/javascript/dashboard/i18n/locale/cs/signup.json +++ b/app/javascript/dashboard/i18n/locale/cs/signup.json @@ -27,15 +27,20 @@ "LABEL": "Heslo", "PLACEHOLDER": "Heslo", "ERROR": "Heslo je příliš krátké", - "IS_INVALID_PASSWORD": "Heslo by mělo obsahovat alespoň jedno velké písmeno, jedno malé písmeno, jedno číslo a jeden speciální znak" + "IS_INVALID_PASSWORD": "Heslo by mělo obsahovat alespoň jedno velké písmeno, jedno malé písmeno, jedno číslo a jeden speciální znak", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Potvrzení hesla", "PLACEHOLDER": "Potvrzení hesla", - "ERROR": "Heslo se neshoduje" + "ERROR": "Hesla se neshodují." }, "API": { - "SUCCESS_MESSAGE": "Registrace byla úspěšná", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Nelze se připojit k Woot serveru, opakujte akci později" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/da/conversation.json b/app/javascript/dashboard/i18n/locale/da/conversation.json index eb18255e7..35cae2a63 100644 --- a/app/javascript/dashboard/i18n/locale/da/conversation.json +++ b/app/javascript/dashboard/i18n/locale/da/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Annuller" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Privat Note: Kun synlig for dig og dit team", diff --git a/app/javascript/dashboard/i18n/locale/da/login.json b/app/javascript/dashboard/i18n/locale/da/login.json index 7f9b58047..6fbf51bbb 100644 --- a/app/javascript/dashboard/i18n/locale/da/login.json +++ b/app/javascript/dashboard/i18n/locale/da/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Opret ny konto", "SUBMIT": "Log Ind", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/da/signup.json b/app/javascript/dashboard/i18n/locale/da/signup.json index 7b4f8ff35..553d18fd3 100644 --- a/app/javascript/dashboard/i18n/locale/da/signup.json +++ b/app/javascript/dashboard/i18n/locale/da/signup.json @@ -27,15 +27,20 @@ "LABEL": "Adgangskode", "PLACEHOLDER": "Adgangskode", "ERROR": "Adgangskoden er for kort", - "IS_INVALID_PASSWORD": "Adgangskoden skal indeholde mindst 1 stort bogstav, 1 lille bogstav, 1 nummer og 1 specialtegn" + "IS_INVALID_PASSWORD": "Adgangskoden skal indeholde mindst 1 stort bogstav, 1 lille bogstav, 1 nummer og 1 specialtegn", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Bekræft Adgangskode", "PLACEHOLDER": "Bekræft Adgangskode", - "ERROR": "Adgangskode stemmer ikke overens" + "ERROR": "Adgangskoder stemmer ikke overens." }, "API": { - "SUCCESS_MESSAGE": "Registrering Succesfuld", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Kunne ikke oprette forbindelse til Woot Server, Prøv igen senere" }, "SUBMIT": "Opret en konto", diff --git a/app/javascript/dashboard/i18n/locale/de/conversation.json b/app/javascript/dashboard/i18n/locale/de/conversation.json index 719190eee..56b39edb9 100644 --- a/app/javascript/dashboard/i18n/locale/de/conversation.json +++ b/app/javascript/dashboard/i18n/locale/de/conversation.json @@ -227,6 +227,13 @@ "YES": "Senden", "CANCEL": "Abbrechen" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Privater Hinweis: Nur für Sie und Ihr Team sichtbar", diff --git a/app/javascript/dashboard/i18n/locale/de/login.json b/app/javascript/dashboard/i18n/locale/de/login.json index b9621736e..24c8dc351 100644 --- a/app/javascript/dashboard/i18n/locale/de/login.json +++ b/app/javascript/dashboard/i18n/locale/de/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Neuen Account erstellen", "SUBMIT": "Einloggen", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/de/signup.json b/app/javascript/dashboard/i18n/locale/de/signup.json index ae2b35825..57e885325 100644 --- a/app/javascript/dashboard/i18n/locale/de/signup.json +++ b/app/javascript/dashboard/i18n/locale/de/signup.json @@ -27,15 +27,20 @@ "LABEL": "Passwort", "PLACEHOLDER": "Passwort", "ERROR": "Das Passwort ist zu kurz", - "IS_INVALID_PASSWORD": "Das Passwort sollte mindestens 1 Großbuchstaben, 1 Kleinbuchstaben, 1 Ziffer und 1 Sonderzeichen enthalten" + "IS_INVALID_PASSWORD": "Das Passwort sollte mindestens 1 Großbuchstaben, 1 Kleinbuchstaben, 1 Ziffer und 1 Sonderzeichen enthalten", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Bestätige das Passwort", "PLACEHOLDER": "Bestätige das Passwort", - "ERROR": "Passwort stimmt nicht überein" + "ERROR": "Passwörter stimmen nicht überein." }, "API": { - "SUCCESS_MESSAGE": "Registrierung erfolgreich", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Es konnte keine Verbindung zum Woot Server hergestellt werden. Bitte versuchen Sie es später erneut" }, "SUBMIT": "Konto erstellen", diff --git a/app/javascript/dashboard/i18n/locale/el/conversation.json b/app/javascript/dashboard/i18n/locale/el/conversation.json index 94017c2c2..46de9b100 100644 --- a/app/javascript/dashboard/i18n/locale/el/conversation.json +++ b/app/javascript/dashboard/i18n/locale/el/conversation.json @@ -227,6 +227,13 @@ "YES": "Αποστολή", "CANCEL": "Άκυρο" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Ιδιωτική Σημείωση: Ορατή μόνο σε σας και την ομάδα σας", diff --git a/app/javascript/dashboard/i18n/locale/el/login.json b/app/javascript/dashboard/i18n/locale/el/login.json index caed6ae8c..8d3be04f5 100644 --- a/app/javascript/dashboard/i18n/locale/el/login.json +++ b/app/javascript/dashboard/i18n/locale/el/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Δημιουργία νέου Λογαριασμού", "SUBMIT": "Είσοδος", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/el/signup.json b/app/javascript/dashboard/i18n/locale/el/signup.json index db16157a3..28d9d5ca8 100644 --- a/app/javascript/dashboard/i18n/locale/el/signup.json +++ b/app/javascript/dashboard/i18n/locale/el/signup.json @@ -27,15 +27,20 @@ "LABEL": "Κωδικός", "PLACEHOLDER": "Κωδικός", "ERROR": "Ο κωδικός είναι πολύ σύντομος", - "IS_INVALID_PASSWORD": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον 1 κεφαλαίο γράμμα, 1 πεζό γράμμα, 1 αριθμό και 1 ειδικό χαρακτήρα" + "IS_INVALID_PASSWORD": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον 1 κεφαλαίο γράμμα, 1 πεζό γράμμα, 1 αριθμό και 1 ειδικό χαρακτήρα", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Επιβεβαίωση κωδικού", "PLACEHOLDER": "Επιβεβαίωση κωδικού", - "ERROR": "Οι κωδικοί δεν συμφωνούν" + "ERROR": "Οι κωδικοί δεν ταιριάζουν." }, "API": { - "SUCCESS_MESSAGE": "Επιτυχής καταχώρηση", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Αδυναμία σύνδεσης με τον Woot Server, Παρακαλώ προσπαθήστε αργότερα" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/es/conversation.json b/app/javascript/dashboard/i18n/locale/es/conversation.json index 5b02ceaba..c62c75667 100644 --- a/app/javascript/dashboard/i18n/locale/es/conversation.json +++ b/app/javascript/dashboard/i18n/locale/es/conversation.json @@ -227,6 +227,13 @@ "YES": "Enviar", "CANCEL": "Cancelar" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Nota privada: solo visible para ti y tu equipo", diff --git a/app/javascript/dashboard/i18n/locale/es/login.json b/app/javascript/dashboard/i18n/locale/es/login.json index 6ec932f6b..f174044e5 100644 --- a/app/javascript/dashboard/i18n/locale/es/login.json +++ b/app/javascript/dashboard/i18n/locale/es/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Crear nueva cuenta", "SUBMIT": "Iniciar sesión", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/es/signup.json b/app/javascript/dashboard/i18n/locale/es/signup.json index 502ccd4b2..fe5e712ef 100644 --- a/app/javascript/dashboard/i18n/locale/es/signup.json +++ b/app/javascript/dashboard/i18n/locale/es/signup.json @@ -27,15 +27,20 @@ "LABEL": "Contraseña", "PLACEHOLDER": "Contraseña", "ERROR": "La contraseña es demasiado corta", - "IS_INVALID_PASSWORD": "La contraseña debe contener al menos 1 letra mayúscula, 1 letra minúscula, 1 número y 1 carácter especial" + "IS_INVALID_PASSWORD": "La contraseña debe contener al menos 1 letra mayúscula, 1 letra minúscula, 1 número y 1 carácter especial", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirmar contraseña", "PLACEHOLDER": "Confirmar contraseña", - "ERROR": "La contraseña no coincide" + "ERROR": "Las contraseñas no coinciden." }, "API": { - "SUCCESS_MESSAGE": "Registro Exitoso", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "No se pudo conectar al servidor Woot, por favor inténtalo de nuevo más tarde" }, "SUBMIT": "Crear una cuenta", diff --git a/app/javascript/dashboard/i18n/locale/fa/conversation.json b/app/javascript/dashboard/i18n/locale/fa/conversation.json index 864674c88..45bc42a22 100644 --- a/app/javascript/dashboard/i18n/locale/fa/conversation.json +++ b/app/javascript/dashboard/i18n/locale/fa/conversation.json @@ -227,6 +227,13 @@ "YES": "ارسال", "CANCEL": "انصراف" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "یادداشت خصوصی: فقط برای شما و تیم شما قابل مشاهده است", diff --git a/app/javascript/dashboard/i18n/locale/fa/login.json b/app/javascript/dashboard/i18n/locale/fa/login.json index b2bbcf133..3ad23c7cd 100644 --- a/app/javascript/dashboard/i18n/locale/fa/login.json +++ b/app/javascript/dashboard/i18n/locale/fa/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "حساب جدید بسازید", "SUBMIT": "ورود", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/fa/signup.json b/app/javascript/dashboard/i18n/locale/fa/signup.json index 2277872f1..0163a7e85 100644 --- a/app/javascript/dashboard/i18n/locale/fa/signup.json +++ b/app/javascript/dashboard/i18n/locale/fa/signup.json @@ -27,15 +27,20 @@ "LABEL": "رمز عبور", "PLACEHOLDER": "رمز عبور", "ERROR": "رمز عبور خیلی کوتاه است", - "IS_INVALID_PASSWORD": "رمز عبور باید شامل حداقل ۱ حرف بزرگ، ۱ حرف کوچک، ۱ عدد و ۱ کاراکتر خاص باشد" + "IS_INVALID_PASSWORD": "رمز عبور باید شامل حداقل ۱ حرف بزرگ، ۱ حرف کوچک، ۱ عدد و ۱ کاراکتر خاص باشد", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "تکرار رمز عبور", "PLACEHOLDER": "تکرار رمز عبور", - "ERROR": "رمز عبور و تکرار رمز عبور یکسان نیستند" + "ERROR": "تکرار رمز عبور می‌بایست با رمز عبور یکسان باشد." }, "API": { - "SUCCESS_MESSAGE": "ثبت نام با موفقیت انجام شد", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "ارتباط با سرور برقرار نشد، لطفا بعدا امتحان کنید" }, "SUBMIT": "ایجاد حساب کاربری", diff --git a/app/javascript/dashboard/i18n/locale/fi/conversation.json b/app/javascript/dashboard/i18n/locale/fi/conversation.json index 929b96c41..b4c67df36 100644 --- a/app/javascript/dashboard/i18n/locale/fi/conversation.json +++ b/app/javascript/dashboard/i18n/locale/fi/conversation.json @@ -227,6 +227,13 @@ "YES": "Lähetä", "CANCEL": "Peruuta" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Yksityinen huomautus: Näkyy vain sinulle ja tiimillesi", diff --git a/app/javascript/dashboard/i18n/locale/fi/login.json b/app/javascript/dashboard/i18n/locale/fi/login.json index 93bca4652..6c6a79d0b 100644 --- a/app/javascript/dashboard/i18n/locale/fi/login.json +++ b/app/javascript/dashboard/i18n/locale/fi/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Luo uusi tili", "SUBMIT": "Kirjaudu", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/fi/signup.json b/app/javascript/dashboard/i18n/locale/fi/signup.json index 784dcbe86..4afef6704 100644 --- a/app/javascript/dashboard/i18n/locale/fi/signup.json +++ b/app/javascript/dashboard/i18n/locale/fi/signup.json @@ -27,15 +27,20 @@ "LABEL": "Salasana", "PLACEHOLDER": "Salasana", "ERROR": "Salasana on liian lyhyt", - "IS_INVALID_PASSWORD": "Salasanan tulee sisältää vähintään 1 iso kirjain, 1 pieni kirjain, 1 numero ja 1 erikoismerkki." + "IS_INVALID_PASSWORD": "Salasanan tulee sisältää vähintään 1 iso kirjain, 1 pieni kirjain, 1 numero ja 1 erikoismerkki.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Vahvista salasana", "PLACEHOLDER": "Vahvista salasana", - "ERROR": "Salasanat eivät täsmää" + "ERROR": "Salasanat eivät täsmää." }, "API": { - "SUCCESS_MESSAGE": "Rekisteröinti onnistui", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Yhteyden muodostaminen Woot-palvelimelle ei onnistunut, yritä myöhemmin uudelleen" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/fr/conversation.json b/app/javascript/dashboard/i18n/locale/fr/conversation.json index 101a5f7f7..bde660851 100644 --- a/app/javascript/dashboard/i18n/locale/fr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/fr/conversation.json @@ -227,6 +227,13 @@ "YES": "Envoyer", "CANCEL": "Annuler" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Note privée : uniquement visible par vous et votre équipe", diff --git a/app/javascript/dashboard/i18n/locale/fr/login.json b/app/javascript/dashboard/i18n/locale/fr/login.json index ebc44bc9a..a1aa8425e 100644 --- a/app/javascript/dashboard/i18n/locale/fr/login.json +++ b/app/javascript/dashboard/i18n/locale/fr/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Créer un nouveau compte", "SUBMIT": "Se connecter", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/fr/signup.json b/app/javascript/dashboard/i18n/locale/fr/signup.json index b3e32f4e1..64b2a5a1a 100644 --- a/app/javascript/dashboard/i18n/locale/fr/signup.json +++ b/app/javascript/dashboard/i18n/locale/fr/signup.json @@ -27,15 +27,20 @@ "LABEL": "Mot de passe", "PLACEHOLDER": "Mot de passe", "ERROR": "Le mot de passe est trop court", - "IS_INVALID_PASSWORD": "Le mot de passe doit contenir au moins 1 lettre majuscule, 1 lettre minuscule, 1 chiffre et 1 caractère spécial" + "IS_INVALID_PASSWORD": "Le mot de passe doit contenir au moins 1 lettre majuscule, 1 lettre minuscule, 1 chiffre et 1 caractère spécial", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirmer le mot de passe", "PLACEHOLDER": "Confirmer le mot de passe", - "ERROR": "Les mots de passe ne correspondent pas" + "ERROR": "Les mots de passe ne correspondent pas." }, "API": { - "SUCCESS_MESSAGE": "Inscription réussie", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Impossible de se connecter au serveur Woot, veuillez réessayer plus tard" }, "SUBMIT": "Créer un compte", diff --git a/app/javascript/dashboard/i18n/locale/he/conversation.json b/app/javascript/dashboard/i18n/locale/he/conversation.json index 55eb3e99f..680924236 100644 --- a/app/javascript/dashboard/i18n/locale/he/conversation.json +++ b/app/javascript/dashboard/i18n/locale/he/conversation.json @@ -227,6 +227,13 @@ "YES": "שלח", "CANCEL": "ביטול" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "פתקים פרטיים: רק אתה והצוות שלך יכולים לראות", diff --git a/app/javascript/dashboard/i18n/locale/he/login.json b/app/javascript/dashboard/i18n/locale/he/login.json index 13ba68de7..567c6b5b7 100644 --- a/app/javascript/dashboard/i18n/locale/he/login.json +++ b/app/javascript/dashboard/i18n/locale/he/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "צור חשבון", "SUBMIT": "התחבר", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/he/signup.json b/app/javascript/dashboard/i18n/locale/he/signup.json index 536e3b1f2..c4ef04332 100644 --- a/app/javascript/dashboard/i18n/locale/he/signup.json +++ b/app/javascript/dashboard/i18n/locale/he/signup.json @@ -27,15 +27,20 @@ "LABEL": "סיסמה", "PLACEHOLDER": "סיסמה", "ERROR": "הסיסמה קצרה מדי", - "IS_INVALID_PASSWORD": "הסיסמה צריכה להכיל לפחות אות אחת גדולה, אות קטנה אחת, מספר אחד ותו מיוחד אחד" + "IS_INVALID_PASSWORD": "הסיסמה צריכה להכיל לפחות אות אחת גדולה, אות קטנה אחת, מספר אחד ותו מיוחד אחד", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "אמת סיסמה", "PLACEHOLDER": "אמת סיסמה", - "ERROR": "סיסמה לא מתאימה" + "ERROR": "סיסמאות לא תואמות" }, "API": { - "SUCCESS_MESSAGE": "ההרשמה הצליחה", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "לא ניתן להתחבר לשרת Woot, נסה שוב מאוחר יותר" }, "SUBMIT": "צור חשבון", diff --git a/app/javascript/dashboard/i18n/locale/hi/conversation.json b/app/javascript/dashboard/i18n/locale/hi/conversation.json index 9fd39b70f..79d5ebc66 100644 --- a/app/javascript/dashboard/i18n/locale/hi/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hi/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Cancel" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/hi/login.json b/app/javascript/dashboard/i18n/locale/hi/login.json index c5084de10..8bf01d710 100644 --- a/app/javascript/dashboard/i18n/locale/hi/login.json +++ b/app/javascript/dashboard/i18n/locale/hi/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/hi/signup.json b/app/javascript/dashboard/i18n/locale/hi/signup.json index 5179ee062..aa96873e1 100644 --- a/app/javascript/dashboard/i18n/locale/hi/signup.json +++ b/app/javascript/dashboard/i18n/locale/hi/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm Password", "PLACEHOLDER": "Confirm Password", - "ERROR": "Password doesnot match" + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/hr/conversation.json b/app/javascript/dashboard/i18n/locale/hr/conversation.json index e20527813..496f294ce 100644 --- a/app/javascript/dashboard/i18n/locale/hr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hr/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Odustani" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/hr/login.json b/app/javascript/dashboard/i18n/locale/hr/login.json index c5084de10..8bf01d710 100644 --- a/app/javascript/dashboard/i18n/locale/hr/login.json +++ b/app/javascript/dashboard/i18n/locale/hr/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/hr/signup.json b/app/javascript/dashboard/i18n/locale/hr/signup.json index 5179ee062..9b2ff2cf1 100644 --- a/app/javascript/dashboard/i18n/locale/hr/signup.json +++ b/app/javascript/dashboard/i18n/locale/hr/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm Password", "PLACEHOLDER": "Confirm Password", - "ERROR": "Password doesnot match" + "ERROR": "Lozinke se ne poklapaju." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/hu/conversation.json b/app/javascript/dashboard/i18n/locale/hu/conversation.json index 49220702e..78cae2bda 100644 --- a/app/javascript/dashboard/i18n/locale/hu/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hu/conversation.json @@ -227,6 +227,13 @@ "YES": "Elküldés", "CANCEL": "Mégse" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Privát megjegyzés: csak Neked és a csapat tagjainak látható", diff --git a/app/javascript/dashboard/i18n/locale/hu/login.json b/app/javascript/dashboard/i18n/locale/hu/login.json index 1daf099c0..3bd51284b 100644 --- a/app/javascript/dashboard/i18n/locale/hu/login.json +++ b/app/javascript/dashboard/i18n/locale/hu/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Új fiók létrehozása", "SUBMIT": "Bejelentkezés", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/hu/signup.json b/app/javascript/dashboard/i18n/locale/hu/signup.json index 5d76848b9..01e0cfa50 100644 --- a/app/javascript/dashboard/i18n/locale/hu/signup.json +++ b/app/javascript/dashboard/i18n/locale/hu/signup.json @@ -27,15 +27,20 @@ "LABEL": "Jelszó", "PLACEHOLDER": "Jelszó", "ERROR": "A jelszó túl rövid", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Jelszó megerősítése", "PLACEHOLDER": "Jelszó megerősítése", - "ERROR": "A jelszavak nem egyeznek" + "ERROR": "A jelszavak nem egyeznek." }, "API": { - "SUCCESS_MESSAGE": "Sikeres regisztráció", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Nem sikerült csatlakozni a Woot szerverhez, kérjük próbáld később" }, "SUBMIT": "Fiók létrehozása", diff --git a/app/javascript/dashboard/i18n/locale/hy/conversation.json b/app/javascript/dashboard/i18n/locale/hy/conversation.json index 9fd39b70f..79d5ebc66 100644 --- a/app/javascript/dashboard/i18n/locale/hy/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hy/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Cancel" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/hy/login.json b/app/javascript/dashboard/i18n/locale/hy/login.json index c5084de10..8bf01d710 100644 --- a/app/javascript/dashboard/i18n/locale/hy/login.json +++ b/app/javascript/dashboard/i18n/locale/hy/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/hy/signup.json b/app/javascript/dashboard/i18n/locale/hy/signup.json index 5179ee062..f6a6e5b2b 100644 --- a/app/javascript/dashboard/i18n/locale/hy/signup.json +++ b/app/javascript/dashboard/i18n/locale/hy/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm Password", "PLACEHOLDER": "Confirm Password", - "ERROR": "Password doesnot match" + "ERROR": "Passwords do not match" }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/id/conversation.json b/app/javascript/dashboard/i18n/locale/id/conversation.json index e9197b164..493f1fb2b 100644 --- a/app/javascript/dashboard/i18n/locale/id/conversation.json +++ b/app/javascript/dashboard/i18n/locale/id/conversation.json @@ -227,6 +227,13 @@ "YES": "Kirim", "CANCEL": "Batalkan" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Catatan Pribadi: Hanya terlihat oleh Anda dan tim Anda", diff --git a/app/javascript/dashboard/i18n/locale/id/login.json b/app/javascript/dashboard/i18n/locale/id/login.json index feaf9c267..1b86fbabb 100644 --- a/app/javascript/dashboard/i18n/locale/id/login.json +++ b/app/javascript/dashboard/i18n/locale/id/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Buat akun baru", "SUBMIT": "Masuk", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/id/signup.json b/app/javascript/dashboard/i18n/locale/id/signup.json index f3ac4597a..dac2beec5 100644 --- a/app/javascript/dashboard/i18n/locale/id/signup.json +++ b/app/javascript/dashboard/i18n/locale/id/signup.json @@ -27,15 +27,20 @@ "LABEL": "Kata Sandi", "PLACEHOLDER": "Kata Sandi", "ERROR": "Kata sandi terlalu pendek", - "IS_INVALID_PASSWORD": "Kata sandi harus mengandung setidaknya 1 huruf kapital, 1 huruf kecil, 1 angka, dan 1 karakter khusus" + "IS_INVALID_PASSWORD": "Kata sandi harus mengandung setidaknya 1 huruf kapital, 1 huruf kecil, 1 angka, dan 1 karakter khusus", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Konfirmasi Kata Sandi", "PLACEHOLDER": "Konfirmasi Kata Sandi", - "ERROR": "Kata Sandi tidak cocok" + "ERROR": "Kata Sandi tidak cocok." }, "API": { - "SUCCESS_MESSAGE": "Pendaftaran Berhasil", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Tidak dapat terhubung ke Server Woot, Silahkan coba lagi nanti" }, "SUBMIT": "Buat akun", diff --git a/app/javascript/dashboard/i18n/locale/is/conversation.json b/app/javascript/dashboard/i18n/locale/is/conversation.json index 91f0421db..fbea19fd8 100644 --- a/app/javascript/dashboard/i18n/locale/is/conversation.json +++ b/app/javascript/dashboard/i18n/locale/is/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Hætta við" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Einkaglósa: Aðeins sýnilegt þér og teymi þínu", diff --git a/app/javascript/dashboard/i18n/locale/is/login.json b/app/javascript/dashboard/i18n/locale/is/login.json index 589daccd6..744847871 100644 --- a/app/javascript/dashboard/i18n/locale/is/login.json +++ b/app/javascript/dashboard/i18n/locale/is/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Stofna nýjan aðgang", "SUBMIT": "Innskráning", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/is/signup.json b/app/javascript/dashboard/i18n/locale/is/signup.json index de1840e13..e199471d2 100644 --- a/app/javascript/dashboard/i18n/locale/is/signup.json +++ b/app/javascript/dashboard/i18n/locale/is/signup.json @@ -27,15 +27,20 @@ "LABEL": "Lykilorð", "PLACEHOLDER": "Lykilorð", "ERROR": "Lykilorið er of stutt", - "IS_INVALID_PASSWORD": "Lykilorð ætti að innihalda að minnsta kosti 1 hástaf, 1 lágstaf, 1 tölustaf og 1 tákn" + "IS_INVALID_PASSWORD": "Lykilorð ætti að innihalda að minnsta kosti 1 hástaf, 1 lágstaf, 1 tölustaf og 1 tákn", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Staðfesta Lykilorð", "PLACEHOLDER": "Staðfesta Lykilorð", - "ERROR": "Lykilorðin stemma ekki" + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Nýskráning tókst", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Náði ekki að tengjast við netþjóna Woot, vinsamlegast reynið aftur" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/it/conversation.json b/app/javascript/dashboard/i18n/locale/it/conversation.json index 5eccb170e..f399dbdfc 100644 --- a/app/javascript/dashboard/i18n/locale/it/conversation.json +++ b/app/javascript/dashboard/i18n/locale/it/conversation.json @@ -227,6 +227,13 @@ "YES": "Invia", "CANCEL": "annulla" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Nota privata: visibile solo a te e al tuo team", diff --git a/app/javascript/dashboard/i18n/locale/it/login.json b/app/javascript/dashboard/i18n/locale/it/login.json index 7211e7363..355a1ec05 100644 --- a/app/javascript/dashboard/i18n/locale/it/login.json +++ b/app/javascript/dashboard/i18n/locale/it/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Crea un nuovo account", "SUBMIT": "Accedi", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/it/signup.json b/app/javascript/dashboard/i18n/locale/it/signup.json index b02b6ba98..92480be2c 100644 --- a/app/javascript/dashboard/i18n/locale/it/signup.json +++ b/app/javascript/dashboard/i18n/locale/it/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password troppo corta.", - "IS_INVALID_PASSWORD": "La password dovrebbe contenere almeno 1 lettera maiuscola, 1 lettera minuscola, 1 numero e 1 carattere speciale." + "IS_INVALID_PASSWORD": "La password dovrebbe contenere almeno 1 lettera maiuscola, 1 lettera minuscola, 1 numero e 1 carattere speciale.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Conferma password", "PLACEHOLDER": "Conferma password", - "ERROR": "La password non corrisponde." + "ERROR": "Le password non corrispondono." }, "API": { - "SUCCESS_MESSAGE": "Registrazione riuscita", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Impossibile connettersi al server Woot, riprova più tardi." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/ja/conversation.json b/app/javascript/dashboard/i18n/locale/ja/conversation.json index 99dde2a7a..4fab79533 100644 --- a/app/javascript/dashboard/i18n/locale/ja/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ja/conversation.json @@ -227,6 +227,13 @@ "YES": "送信", "CANCEL": "キャンセル" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "非公開設定の注意:あなたとあなたのチームのみに表示されます", diff --git a/app/javascript/dashboard/i18n/locale/ja/login.json b/app/javascript/dashboard/i18n/locale/ja/login.json index 4f4fd278a..8eb4a7c4a 100644 --- a/app/javascript/dashboard/i18n/locale/ja/login.json +++ b/app/javascript/dashboard/i18n/locale/ja/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "新しいアカウントを作成", "SUBMIT": "ログイン", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ja/signup.json b/app/javascript/dashboard/i18n/locale/ja/signup.json index f69b43f7d..19f5d28fd 100644 --- a/app/javascript/dashboard/i18n/locale/ja/signup.json +++ b/app/javascript/dashboard/i18n/locale/ja/signup.json @@ -27,7 +27,12 @@ "LABEL": "パスワード", "PLACEHOLDER": "パスワード", "ERROR": "パスワードが短すぎます", - "IS_INVALID_PASSWORD": "パスワードは少なくとも1つの大文字、1つの小文字、1つの数字、1つの特殊文字を含む必要があります" + "IS_INVALID_PASSWORD": "パスワードは少なくとも1つの大文字、1つの小文字、1つの数字、1つの特殊文字を含む必要があります", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "パスワードの確認", @@ -35,7 +40,7 @@ "ERROR": "パスワードが一致しません" }, "API": { - "SUCCESS_MESSAGE": "登録に成功しました", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Wootサーバーに接続できませんでした。後でもう一度お試しください。" }, "SUBMIT": "アカウントを作成", diff --git a/app/javascript/dashboard/i18n/locale/ka/conversation.json b/app/javascript/dashboard/i18n/locale/ka/conversation.json index 9fd39b70f..79d5ebc66 100644 --- a/app/javascript/dashboard/i18n/locale/ka/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ka/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Cancel" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/ka/login.json b/app/javascript/dashboard/i18n/locale/ka/login.json index ab3c798c5..a34ed1783 100644 --- a/app/javascript/dashboard/i18n/locale/ka/login.json +++ b/app/javascript/dashboard/i18n/locale/ka/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ka/signup.json b/app/javascript/dashboard/i18n/locale/ka/signup.json index 5179ee062..aa96873e1 100644 --- a/app/javascript/dashboard/i18n/locale/ka/signup.json +++ b/app/javascript/dashboard/i18n/locale/ka/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm Password", "PLACEHOLDER": "Confirm Password", - "ERROR": "Password doesnot match" + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/ko/conversation.json b/app/javascript/dashboard/i18n/locale/ko/conversation.json index 1278ad79e..0f98014c0 100644 --- a/app/javascript/dashboard/i18n/locale/ko/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ko/conversation.json @@ -227,6 +227,13 @@ "YES": "보내기", "CANCEL": "취소" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "개인 노트: 귀하와 귀하의 팀만 볼 수 있음", diff --git a/app/javascript/dashboard/i18n/locale/ko/login.json b/app/javascript/dashboard/i18n/locale/ko/login.json index fa8019bc6..a9f56cfef 100644 --- a/app/javascript/dashboard/i18n/locale/ko/login.json +++ b/app/javascript/dashboard/i18n/locale/ko/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "계정 생성", "SUBMIT": "로그인", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ko/signup.json b/app/javascript/dashboard/i18n/locale/ko/signup.json index 833b19170..89de09fdd 100644 --- a/app/javascript/dashboard/i18n/locale/ko/signup.json +++ b/app/javascript/dashboard/i18n/locale/ko/signup.json @@ -27,15 +27,20 @@ "LABEL": "비밀번호", "PLACEHOLDER": "비밀번호", "ERROR": "비밀번호가 너무 짧음", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "비밀번호 확인", "PLACEHOLDER": "비밀번호 확인", - "ERROR": "비밀번호가 일치하지 않음" + "ERROR": "비밀번호가 일치하지 않음." }, "API": { - "SUCCESS_MESSAGE": "등록 성공", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Woot Server에 연결할 수 없음. 나중에 다시 시도하십시오." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/lt/conversation.json b/app/javascript/dashboard/i18n/locale/lt/conversation.json index eb8a0d144..a9946f656 100644 --- a/app/javascript/dashboard/i18n/locale/lt/conversation.json +++ b/app/javascript/dashboard/i18n/locale/lt/conversation.json @@ -227,6 +227,13 @@ "YES": "Siųsti", "CANCEL": "Atšaukti" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Privati ​​pastaba: matoma tik jums ir jūsų komandai", diff --git a/app/javascript/dashboard/i18n/locale/lt/login.json b/app/javascript/dashboard/i18n/locale/lt/login.json index 689bcb04e..51daf0f0e 100644 --- a/app/javascript/dashboard/i18n/locale/lt/login.json +++ b/app/javascript/dashboard/i18n/locale/lt/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Sukurti naują paskyrą", "SUBMIT": "Prisijungti", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/lt/signup.json b/app/javascript/dashboard/i18n/locale/lt/signup.json index 7f28098ee..a1798ba20 100644 --- a/app/javascript/dashboard/i18n/locale/lt/signup.json +++ b/app/javascript/dashboard/i18n/locale/lt/signup.json @@ -27,15 +27,20 @@ "LABEL": "Slaptažodis", "PLACEHOLDER": "Slaptažodis", "ERROR": "Password is too short", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm Password", "PLACEHOLDER": "Confirm Password", - "ERROR": "Password doesnot match" + "ERROR": "Slaptažodžiai nesutampa." }, "API": { - "SUCCESS_MESSAGE": "Registracija sėkminga", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" }, "SUBMIT": "Sukurti paskyrą", diff --git a/app/javascript/dashboard/i18n/locale/lv/conversation.json b/app/javascript/dashboard/i18n/locale/lv/conversation.json index e8bf5e497..1985f71d8 100644 --- a/app/javascript/dashboard/i18n/locale/lv/conversation.json +++ b/app/javascript/dashboard/i18n/locale/lv/conversation.json @@ -227,6 +227,13 @@ "YES": "Nosūtīt", "CANCEL": "Atcelt" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Privāta Piezīme: Redzama tikai Jums un Jūsu komandai", diff --git a/app/javascript/dashboard/i18n/locale/lv/login.json b/app/javascript/dashboard/i18n/locale/lv/login.json index dfc994638..12c87ed0a 100644 --- a/app/javascript/dashboard/i18n/locale/lv/login.json +++ b/app/javascript/dashboard/i18n/locale/lv/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Izveidot jaunu kontu", "SUBMIT": "Pierakstīties", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/lv/signup.json b/app/javascript/dashboard/i18n/locale/lv/signup.json index 6310e1203..768f6e298 100644 --- a/app/javascript/dashboard/i18n/locale/lv/signup.json +++ b/app/javascript/dashboard/i18n/locale/lv/signup.json @@ -27,15 +27,20 @@ "LABEL": "Parole", "PLACEHOLDER": "Parole", "ERROR": "Parole ir pārāk īsa", - "IS_INVALID_PASSWORD": "Parolei ir jāsatur vismaz 1 lielais burts, 1 mazais burts, 1 cipars un 1 speciālā rakstzīme." + "IS_INVALID_PASSWORD": "Parolei ir jāsatur vismaz 1 lielais burts, 1 mazais burts, 1 cipars un 1 speciālā rakstzīme.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Apstipriniet paroli", "PLACEHOLDER": "Apstipriniet paroli", - "ERROR": "Parole nesakrīt." + "ERROR": "Paroles nesakrīt." }, "API": { - "SUCCESS_MESSAGE": "Reģistrācija sekmīga", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Nevarēja izveidot savienojumu ar Woot serveri. Lūdzu mēģiniet vēlreiz." }, "SUBMIT": "Izveidot kontu", diff --git a/app/javascript/dashboard/i18n/locale/ml/conversation.json b/app/javascript/dashboard/i18n/locale/ml/conversation.json index 0680bf250..22c92c510 100644 --- a/app/javascript/dashboard/i18n/locale/ml/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ml/conversation.json @@ -227,6 +227,13 @@ "YES": "അയയ്‌ക്കുക", "CANCEL": "റദ്ദാക്കുക" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "സ്വകാര്യ കുറിപ്പ്: നിങ്ങൾക്കും നിങ്ങളുടെ ടീമിനും മാത്രം ദൃശ്യമാണ്", diff --git a/app/javascript/dashboard/i18n/locale/ml/login.json b/app/javascript/dashboard/i18n/locale/ml/login.json index 5bc462302..b168600f1 100644 --- a/app/javascript/dashboard/i18n/locale/ml/login.json +++ b/app/javascript/dashboard/i18n/locale/ml/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "പുതിയ അക്കൗണ്ട് സൃഷ്ടിക്കുക", "SUBMIT": "സൈൻ ഇൻ", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ml/signup.json b/app/javascript/dashboard/i18n/locale/ml/signup.json index 5ebd6ec1e..27ff6f388 100644 --- a/app/javascript/dashboard/i18n/locale/ml/signup.json +++ b/app/javascript/dashboard/i18n/locale/ml/signup.json @@ -27,15 +27,20 @@ "LABEL": "പാസ്‌വേഡ്", "PLACEHOLDER": "പാസ്‌വേഡ്", "ERROR": "പാസ്‌വേഡ് വളരെ ചെറുതാണ്", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക", "PLACEHOLDER": "പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക", - "ERROR": "പാസ്‌വേഡുകൾ പൊരുത്തപ്പെടുന്നില്ല" + "ERROR": "പാസ്‌വേഡുകൾ പൊരുത്തപ്പെടുന്നില്ല." }, "API": { - "SUCCESS_MESSAGE": "രജിസ്ട്രേഷൻ വിജയകരമാണ്", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "സെർവറിലേക്ക് കണക്റ്റുചെയ്യാനായില്ല, ദയവായി പിന്നീട് വീണ്ടും ശ്രമിക്കുക" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/ms/conversation.json b/app/javascript/dashboard/i18n/locale/ms/conversation.json index 062782330..b8d77a497 100644 --- a/app/javascript/dashboard/i18n/locale/ms/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ms/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Batalkan" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/ms/login.json b/app/javascript/dashboard/i18n/locale/ms/login.json index ab3c798c5..a34ed1783 100644 --- a/app/javascript/dashboard/i18n/locale/ms/login.json +++ b/app/javascript/dashboard/i18n/locale/ms/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ms/signup.json b/app/javascript/dashboard/i18n/locale/ms/signup.json index 0406a8044..7d72e3245 100644 --- a/app/javascript/dashboard/i18n/locale/ms/signup.json +++ b/app/javascript/dashboard/i18n/locale/ms/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm Password", "PLACEHOLDER": "Confirm Password", - "ERROR": "Password doesnot match" + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Masalah untuk hubungi Woot Server, Sila cuba sebentar lagi" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/ne/conversation.json b/app/javascript/dashboard/i18n/locale/ne/conversation.json index d4f3d5f66..22e94b355 100644 --- a/app/javascript/dashboard/i18n/locale/ne/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ne/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Cancel" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/ne/login.json b/app/javascript/dashboard/i18n/locale/ne/login.json index ab3c798c5..a34ed1783 100644 --- a/app/javascript/dashboard/i18n/locale/ne/login.json +++ b/app/javascript/dashboard/i18n/locale/ne/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ne/signup.json b/app/javascript/dashboard/i18n/locale/ne/signup.json index 5179ee062..aa96873e1 100644 --- a/app/javascript/dashboard/i18n/locale/ne/signup.json +++ b/app/javascript/dashboard/i18n/locale/ne/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm Password", "PLACEHOLDER": "Confirm Password", - "ERROR": "Password doesnot match" + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/nl/conversation.json b/app/javascript/dashboard/i18n/locale/nl/conversation.json index aee364321..976ee7fed 100644 --- a/app/javascript/dashboard/i18n/locale/nl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/nl/conversation.json @@ -227,6 +227,13 @@ "YES": "Verzenden", "CANCEL": "Annuleren" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Privéopmerking: alleen zichtbaar voor jou en je team", diff --git a/app/javascript/dashboard/i18n/locale/nl/login.json b/app/javascript/dashboard/i18n/locale/nl/login.json index 3977b3d74..fcc586ec0 100644 --- a/app/javascript/dashboard/i18n/locale/nl/login.json +++ b/app/javascript/dashboard/i18n/locale/nl/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Nieuw account aanmaken", "SUBMIT": "Inloggen", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/nl/signup.json b/app/javascript/dashboard/i18n/locale/nl/signup.json index 5db3c539d..4d6155c30 100644 --- a/app/javascript/dashboard/i18n/locale/nl/signup.json +++ b/app/javascript/dashboard/i18n/locale/nl/signup.json @@ -27,15 +27,20 @@ "LABEL": "Wachtwoord", "PLACEHOLDER": "Wachtwoord", "ERROR": "Wachtwoord is te kort", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Bevestig wachtwoord", "PLACEHOLDER": "Bevestig wachtwoord", - "ERROR": "Wachtwoord komt niet overeen" + "ERROR": "Wachtwoorden komen niet overeen." }, "API": { - "SUCCESS_MESSAGE": "Registratie geslaagd", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Kan geen verbinding maken met Woot Server, probeer het later opnieuw" }, "SUBMIT": "Account aanmaken", diff --git a/app/javascript/dashboard/i18n/locale/no/conversation.json b/app/javascript/dashboard/i18n/locale/no/conversation.json index 094adf7a4..be532fab7 100644 --- a/app/javascript/dashboard/i18n/locale/no/conversation.json +++ b/app/javascript/dashboard/i18n/locale/no/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Avbryt" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Privat notat: bare synlig for deg og ditt team", diff --git a/app/javascript/dashboard/i18n/locale/no/login.json b/app/javascript/dashboard/i18n/locale/no/login.json index d1a8f663d..dea863a08 100644 --- a/app/javascript/dashboard/i18n/locale/no/login.json +++ b/app/javascript/dashboard/i18n/locale/no/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Opprett ny konto", "SUBMIT": "Logg inn", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/no/signup.json b/app/javascript/dashboard/i18n/locale/no/signup.json index 0e89d9dbc..4e941c374 100644 --- a/app/javascript/dashboard/i18n/locale/no/signup.json +++ b/app/javascript/dashboard/i18n/locale/no/signup.json @@ -27,15 +27,20 @@ "LABEL": "Passord", "PLACEHOLDER": "Passord", "ERROR": "Passordet er for kort", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Bekreft passord", "PLACEHOLDER": "Bekreft passord", - "ERROR": "Passordet stemmer ikke" + "ERROR": "Passordet stemmer ikke." }, "API": { - "SUCCESS_MESSAGE": "Registrering fullført", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Kunne ikke koble til Woot Server, vennligst prøv igjen senere" }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/pl/conversation.json b/app/javascript/dashboard/i18n/locale/pl/conversation.json index 2ffea2fee..657733ede 100644 --- a/app/javascript/dashboard/i18n/locale/pl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/pl/conversation.json @@ -227,6 +227,13 @@ "YES": "Wyślij", "CANCEL": "Anuluj" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Prywatna uwaga: widoczne tylko dla Ciebie i Twojego zespołu", diff --git a/app/javascript/dashboard/i18n/locale/pl/login.json b/app/javascript/dashboard/i18n/locale/pl/login.json index ff381f58a..ea05184af 100644 --- a/app/javascript/dashboard/i18n/locale/pl/login.json +++ b/app/javascript/dashboard/i18n/locale/pl/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Utwórz nowe konto", "SUBMIT": "Zaloguj się", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/pl/signup.json b/app/javascript/dashboard/i18n/locale/pl/signup.json index f9afd1695..e14216283 100644 --- a/app/javascript/dashboard/i18n/locale/pl/signup.json +++ b/app/javascript/dashboard/i18n/locale/pl/signup.json @@ -27,15 +27,20 @@ "LABEL": "Hasło", "PLACEHOLDER": "Hasło", "ERROR": "Hasło jest zbyt krótkie", - "IS_INVALID_PASSWORD": "Hasło powinno zawierać co najmniej 1 wielką literę, 1 małą literę, 1 cyfrę i 1 znak specjalny" + "IS_INVALID_PASSWORD": "Hasło powinno zawierać co najmniej 1 wielką literę, 1 małą literę, 1 cyfrę i 1 znak specjalny", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Potwierdź hasło", "PLACEHOLDER": "Potwierdź hasło", - "ERROR": "Hasła nie zgadzają się" + "ERROR": "Hasła nie pasują." }, "API": { - "SUCCESS_MESSAGE": "Rejestracja powiodła się", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Nie można połączyć się z serwerem Woot. Spróbuj ponownie później" }, "SUBMIT": "Utwórz konto", diff --git a/app/javascript/dashboard/i18n/locale/pt/conversation.json b/app/javascript/dashboard/i18n/locale/pt/conversation.json index 447c0e243..5534f416b 100644 --- a/app/javascript/dashboard/i18n/locale/pt/conversation.json +++ b/app/javascript/dashboard/i18n/locale/pt/conversation.json @@ -227,6 +227,13 @@ "YES": "Enviar", "CANCEL": "Cancelar" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Nota Privada: Apenas visível para si e para a sua equipa", diff --git a/app/javascript/dashboard/i18n/locale/pt/login.json b/app/javascript/dashboard/i18n/locale/pt/login.json index a6173a18c..4149ff527 100644 --- a/app/javascript/dashboard/i18n/locale/pt/login.json +++ b/app/javascript/dashboard/i18n/locale/pt/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Criar nova conta", "SUBMIT": "Iniciar sessão", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/pt/signup.json b/app/javascript/dashboard/i18n/locale/pt/signup.json index 2771c7b51..14aaa883c 100644 --- a/app/javascript/dashboard/i18n/locale/pt/signup.json +++ b/app/javascript/dashboard/i18n/locale/pt/signup.json @@ -27,15 +27,20 @@ "LABEL": "Palavra-passe", "PLACEHOLDER": "Palavra-passe", "ERROR": "A senha é muito curta", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirmar senha", "PLACEHOLDER": "Confirmar senha", - "ERROR": "As senhas não conferem" + "ERROR": "As senhas não coincidem." }, "API": { - "SUCCESS_MESSAGE": "Registro Bem Sucedido", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Não foi possível conectar ao servidor Woot, por favor tente novamente mais tarde" }, "SUBMIT": "Criar conta", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json b/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json index c847fb49d..e146c98a2 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json @@ -227,6 +227,13 @@ "YES": "Enviar", "CANCEL": "Cancelar" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Mensagem Privada: Apenas visível para você e seu time", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/signup.json b/app/javascript/dashboard/i18n/locale/pt_BR/signup.json index bace91f6d..0f43aaa24 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/signup.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/signup.json @@ -27,15 +27,20 @@ "LABEL": "Senha", "PLACEHOLDER": "Senha", "ERROR": "A senha é muito curta.", - "IS_INVALID_PASSWORD": "A senha deve conter pelo menos 1 letra maiúscula, 1 letra minúscula, 1 número e 1 caractere especial." + "IS_INVALID_PASSWORD": "A senha deve conter pelo menos 1 letra maiúscula, 1 letra minúscula, 1 número e 1 caractere especial.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirmar senha", "PLACEHOLDER": "Confirmar senha", - "ERROR": "As senhas não conferem." + "ERROR": "As senhas não coincidem." }, "API": { - "SUCCESS_MESSAGE": "Registro realizado com Sucesso", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Não foi possível conectar ao servidor Woot. Por favor, tente novamente." }, "SUBMIT": "Criar conta", diff --git a/app/javascript/dashboard/i18n/locale/ro/conversation.json b/app/javascript/dashboard/i18n/locale/ro/conversation.json index c0ae01bb2..8dd1bf3bf 100644 --- a/app/javascript/dashboard/i18n/locale/ro/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ro/conversation.json @@ -227,6 +227,13 @@ "YES": "Trimite", "CANCEL": "Renunță" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Notă privată: vizibilă doar pentru tine și echipa ta", diff --git a/app/javascript/dashboard/i18n/locale/ro/login.json b/app/javascript/dashboard/i18n/locale/ro/login.json index c89340dc7..111edcc0c 100644 --- a/app/javascript/dashboard/i18n/locale/ro/login.json +++ b/app/javascript/dashboard/i18n/locale/ro/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Creează un cont nou", "SUBMIT": "Conectează-te", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ro/signup.json b/app/javascript/dashboard/i18n/locale/ro/signup.json index 0e85cfa49..ab33b8ddf 100644 --- a/app/javascript/dashboard/i18n/locale/ro/signup.json +++ b/app/javascript/dashboard/i18n/locale/ro/signup.json @@ -27,7 +27,12 @@ "LABEL": "Parola", "PLACEHOLDER": "Parola", "ERROR": "Parola este prea scurta.", - "IS_INVALID_PASSWORD": "Parola trebuie să conțină atleast 1 literă mare, 1 literă mică, 1 număr și 1 caracter special." + "IS_INVALID_PASSWORD": "Parola trebuie să conțină atleast 1 literă mare, 1 literă mică, 1 număr și 1 caracter special.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirmă parola", @@ -35,7 +40,7 @@ "ERROR": "Parola nu coincide." }, "API": { - "SUCCESS_MESSAGE": "Înregistrare cu succes", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Nu s-a putut conecta la serverul Woot. Vă rugăm să încercați din nou." }, "SUBMIT": "Creează cont", diff --git a/app/javascript/dashboard/i18n/locale/ru/conversation.json b/app/javascript/dashboard/i18n/locale/ru/conversation.json index b4b4c1f3f..4ec89cdc6 100644 --- a/app/javascript/dashboard/i18n/locale/ru/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ru/conversation.json @@ -227,6 +227,13 @@ "YES": "Отправить", "CANCEL": "Отменить" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Приватная заметка: видна только вам и вашей команде", diff --git a/app/javascript/dashboard/i18n/locale/ru/login.json b/app/javascript/dashboard/i18n/locale/ru/login.json index 168d30133..391c7a587 100644 --- a/app/javascript/dashboard/i18n/locale/ru/login.json +++ b/app/javascript/dashboard/i18n/locale/ru/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Создать новый аккаунт", "SUBMIT": "Вход", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ru/signup.json b/app/javascript/dashboard/i18n/locale/ru/signup.json index 0033756e0..3310956e0 100644 --- a/app/javascript/dashboard/i18n/locale/ru/signup.json +++ b/app/javascript/dashboard/i18n/locale/ru/signup.json @@ -27,7 +27,12 @@ "LABEL": "Пароль", "PLACEHOLDER": "Пароль", "ERROR": "Пароль слишком короткий.", - "IS_INVALID_PASSWORD": "Пароль должен содержать хотя бы одну заглавную букву, одну строчную букву, 1 цифру и 1 специальный символ." + "IS_INVALID_PASSWORD": "Пароль должен содержать хотя бы одну заглавную букву, одну строчную букву, 1 цифру и 1 специальный символ.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Подтвердите пароль", @@ -35,7 +40,7 @@ "ERROR": "Пароли не совпадают." }, "API": { - "SUCCESS_MESSAGE": "Успешная регистрация", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Не удалось подключиться к Woot серверу. Пожалуйста, попробуйте еще раз." }, "SUBMIT": "Создать новый аккаунт", diff --git a/app/javascript/dashboard/i18n/locale/sh/conversation.json b/app/javascript/dashboard/i18n/locale/sh/conversation.json index 9fd39b70f..79d5ebc66 100644 --- a/app/javascript/dashboard/i18n/locale/sh/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sh/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Cancel" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/sh/login.json b/app/javascript/dashboard/i18n/locale/sh/login.json index ab3c798c5..a34ed1783 100644 --- a/app/javascript/dashboard/i18n/locale/sh/login.json +++ b/app/javascript/dashboard/i18n/locale/sh/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/sh/signup.json b/app/javascript/dashboard/i18n/locale/sh/signup.json index 501d9b87e..b0e5f5d27 100644 --- a/app/javascript/dashboard/i18n/locale/sh/signup.json +++ b/app/javascript/dashboard/i18n/locale/sh/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short.", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character." + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", "PLACEHOLDER": "Confirm password", - "ERROR": "Password doesnot match." + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/sk/conversation.json b/app/javascript/dashboard/i18n/locale/sk/conversation.json index 99dde6c92..1eb8ca072 100644 --- a/app/javascript/dashboard/i18n/locale/sk/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sk/conversation.json @@ -227,6 +227,13 @@ "YES": "Poslať", "CANCEL": "Zrušiť" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/sk/login.json b/app/javascript/dashboard/i18n/locale/sk/login.json index 263e1c732..d19bef67f 100644 --- a/app/javascript/dashboard/i18n/locale/sk/login.json +++ b/app/javascript/dashboard/i18n/locale/sk/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create new account", "SUBMIT": "Prihlásenie", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/sk/signup.json b/app/javascript/dashboard/i18n/locale/sk/signup.json index c4a2c1477..7dedca246 100644 --- a/app/javascript/dashboard/i18n/locale/sk/signup.json +++ b/app/javascript/dashboard/i18n/locale/sk/signup.json @@ -27,15 +27,20 @@ "LABEL": "Heslo", "PLACEHOLDER": "Heslo", "ERROR": "Heslo je príliš krátke.", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character." + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", "PLACEHOLDER": "Confirm password", - "ERROR": "Heslá sa nezhodujú." + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registrácia bola úspešná", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/sl/conversation.json b/app/javascript/dashboard/i18n/locale/sl/conversation.json index 24bf95f58..087a27305 100644 --- a/app/javascript/dashboard/i18n/locale/sl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sl/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Cancel" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/sl/login.json b/app/javascript/dashboard/i18n/locale/sl/login.json index ae5556e62..59a1862fe 100644 --- a/app/javascript/dashboard/i18n/locale/sl/login.json +++ b/app/javascript/dashboard/i18n/locale/sl/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Ustvarite nov račun", "SUBMIT": "Prijava", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/sl/signup.json b/app/javascript/dashboard/i18n/locale/sl/signup.json index 44638813b..d307a6d6e 100644 --- a/app/javascript/dashboard/i18n/locale/sl/signup.json +++ b/app/javascript/dashboard/i18n/locale/sl/signup.json @@ -27,15 +27,20 @@ "LABEL": "Geslo", "PLACEHOLDER": "Geslo", "ERROR": "Geslo je prekratko.", - "IS_INVALID_PASSWORD": "Geslo mora vsebovati vsaj 1 veliko črko, 1 malo črko, 1 številko in 1 poseben znak." + "IS_INVALID_PASSWORD": "Geslo mora vsebovati vsaj 1 veliko črko, 1 malo črko, 1 številko in 1 poseben znak.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Potrdite geslo", "PLACEHOLDER": "Potrdite geslo", - "ERROR": "Geslo se ne ujema." + "ERROR": "Gesli se ne ujemata." }, "API": { - "SUCCESS_MESSAGE": "Registracija uspešna", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Ni bilo mogoče vzpostaviti povezave s strežnikom. Prosimo poskusite ponovno." }, "SUBMIT": "Ustvari račun", diff --git a/app/javascript/dashboard/i18n/locale/sq/conversation.json b/app/javascript/dashboard/i18n/locale/sq/conversation.json index 4089631cf..c9eda3810 100644 --- a/app/javascript/dashboard/i18n/locale/sq/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sq/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Cancel" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/sq/login.json b/app/javascript/dashboard/i18n/locale/sq/login.json index f347f2435..061284247 100644 --- a/app/javascript/dashboard/i18n/locale/sq/login.json +++ b/app/javascript/dashboard/i18n/locale/sq/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create a new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/sq/signup.json b/app/javascript/dashboard/i18n/locale/sq/signup.json index 501d9b87e..b0e5f5d27 100644 --- a/app/javascript/dashboard/i18n/locale/sq/signup.json +++ b/app/javascript/dashboard/i18n/locale/sq/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short.", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character." + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", "PLACEHOLDER": "Confirm password", - "ERROR": "Password doesnot match." + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/sr/conversation.json b/app/javascript/dashboard/i18n/locale/sr/conversation.json index 1ac190668..c9661b435 100644 --- a/app/javascript/dashboard/i18n/locale/sr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sr/conversation.json @@ -227,6 +227,13 @@ "YES": "Pošalji", "CANCEL": "Otkaži" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Privatna beleška: Vidljiva samo vama i vašem timu", diff --git a/app/javascript/dashboard/i18n/locale/sr/login.json b/app/javascript/dashboard/i18n/locale/sr/login.json index 0782b5be5..845176d53 100644 --- a/app/javascript/dashboard/i18n/locale/sr/login.json +++ b/app/javascript/dashboard/i18n/locale/sr/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Napravite novi nalog", "SUBMIT": "Prijava", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/sr/signup.json b/app/javascript/dashboard/i18n/locale/sr/signup.json index d53f01b79..520812e58 100644 --- a/app/javascript/dashboard/i18n/locale/sr/signup.json +++ b/app/javascript/dashboard/i18n/locale/sr/signup.json @@ -27,15 +27,20 @@ "LABEL": "Lozinka", "PLACEHOLDER": "Lozinka", "ERROR": "Lozinka je prekratka.", - "IS_INVALID_PASSWORD": "Lozinka bi trebalo da sadrži najmanje 1 veliko slovo, 1 malo slovo, 1 broj i 1 specijalni karakter." + "IS_INVALID_PASSWORD": "Lozinka bi trebalo da sadrži najmanje 1 veliko slovo, 1 malo slovo, 1 broj i 1 specijalni karakter.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", "PLACEHOLDER": "Confirm password", - "ERROR": "Lozinka se ne poklapa." + "ERROR": "Lozinke se ne poklapaju." }, "API": { - "SUCCESS_MESSAGE": "Registracija je uspešna", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/sv/conversation.json b/app/javascript/dashboard/i18n/locale/sv/conversation.json index a919575ce..75b69b80a 100644 --- a/app/javascript/dashboard/i18n/locale/sv/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sv/conversation.json @@ -227,6 +227,13 @@ "YES": "Skicka", "CANCEL": "Avbryt" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Privat anteckning: Endast synlig för dig och ditt team", diff --git a/app/javascript/dashboard/i18n/locale/sv/login.json b/app/javascript/dashboard/i18n/locale/sv/login.json index 9b65db5db..88b1f8a13 100644 --- a/app/javascript/dashboard/i18n/locale/sv/login.json +++ b/app/javascript/dashboard/i18n/locale/sv/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Skapa nytt konto", "SUBMIT": "Logga in", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/sv/signup.json b/app/javascript/dashboard/i18n/locale/sv/signup.json index cc2f8b7d9..7b51af7e0 100644 --- a/app/javascript/dashboard/i18n/locale/sv/signup.json +++ b/app/javascript/dashboard/i18n/locale/sv/signup.json @@ -27,7 +27,12 @@ "LABEL": "Lösenord", "PLACEHOLDER": "Lösenord", "ERROR": "Lösenordet är för kort.", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character." + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", @@ -35,7 +40,7 @@ "ERROR": "Lösenorden matchar inte." }, "API": { - "SUCCESS_MESSAGE": "Registreringen lyckades", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/ta/conversation.json b/app/javascript/dashboard/i18n/locale/ta/conversation.json index 0771e5063..6ddebf73f 100644 --- a/app/javascript/dashboard/i18n/locale/ta/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ta/conversation.json @@ -227,6 +227,13 @@ "YES": "அனுப்பு", "CANCEL": "ரத்துசெய்" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "தனிப்பட்ட குறிப்பு: உங்களுக்கும் உங்கள் குழுவினருக்கும் மட்டுமே தெரியும்", diff --git a/app/javascript/dashboard/i18n/locale/ta/login.json b/app/javascript/dashboard/i18n/locale/ta/login.json index bfc0ea9ca..4a2861d0d 100644 --- a/app/javascript/dashboard/i18n/locale/ta/login.json +++ b/app/javascript/dashboard/i18n/locale/ta/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "புதிய கணக்கை உருவாக்க", "SUBMIT": "உள்நுழையவும்", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ta/signup.json b/app/javascript/dashboard/i18n/locale/ta/signup.json index 1040b36b4..40a4ba953 100644 --- a/app/javascript/dashboard/i18n/locale/ta/signup.json +++ b/app/javascript/dashboard/i18n/locale/ta/signup.json @@ -27,15 +27,20 @@ "LABEL": "பாஸ்வேர்ட்", "PLACEHOLDER": "பாஸ்வேர்ட்", "ERROR": "Password is too short.", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character." + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", "PLACEHOLDER": "Confirm password", - "ERROR": "Password doesnot match." + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "வெற்றிகரமாக பதிவு செய்துவிட்டிர்கள்", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/th/conversation.json b/app/javascript/dashboard/i18n/locale/th/conversation.json index 9b3cc2aba..bcc10dbef 100644 --- a/app/javascript/dashboard/i18n/locale/th/conversation.json +++ b/app/javascript/dashboard/i18n/locale/th/conversation.json @@ -227,6 +227,13 @@ "YES": "ส่ง", "CANCEL": "ยกเลิก" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "โน้ตส่วนตัว: มีเพียงคุณและทีมเท่านั้นที่มองเห็นได้", diff --git a/app/javascript/dashboard/i18n/locale/th/login.json b/app/javascript/dashboard/i18n/locale/th/login.json index e2e305bba..f09bc012e 100644 --- a/app/javascript/dashboard/i18n/locale/th/login.json +++ b/app/javascript/dashboard/i18n/locale/th/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "สร้างบัญชีใหม่", "SUBMIT": "เข้าสู่ระบบ", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/th/signup.json b/app/javascript/dashboard/i18n/locale/th/signup.json index f64567f88..be5ede8f9 100644 --- a/app/javascript/dashboard/i18n/locale/th/signup.json +++ b/app/javascript/dashboard/i18n/locale/th/signup.json @@ -27,15 +27,20 @@ "LABEL": "หรัสผ่าน", "PLACEHOLDER": "หรัสผ่าน", "ERROR": "หรัสผ่านนั้นสั้นเกินไป.", - "IS_INVALID_PASSWORD": "รหัสผ่านต้องมีอย่างน้อย 1 ตัวอักษรภาษาอังกฤษพิมพ์เล็ก, 1 ตัวอักษรภาษาอังกฤษพิมพ์ใหญ่, 1 ตัวเลข และอักขระพิเศษ 1 ตัว." + "IS_INVALID_PASSWORD": "รหัสผ่านต้องมีอย่างน้อย 1 ตัวอักษรภาษาอังกฤษพิมพ์เล็ก, 1 ตัวอักษรภาษาอังกฤษพิมพ์ใหญ่, 1 ตัวเลข และอักขระพิเศษ 1 ตัว.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", "PLACEHOLDER": "Confirm password", - "ERROR": "รหัสผ่านไม่เหมือนกัน." + "ERROR": "หรัสผ่านไม่ตรงกัน." }, "API": { - "SUCCESS_MESSAGE": "ลงทะเบียนสำเร็จแล้ว", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/tl/conversation.json b/app/javascript/dashboard/i18n/locale/tl/conversation.json index 9fd39b70f..79d5ebc66 100644 --- a/app/javascript/dashboard/i18n/locale/tl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/tl/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Cancel" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/tl/login.json b/app/javascript/dashboard/i18n/locale/tl/login.json index f347f2435..061284247 100644 --- a/app/javascript/dashboard/i18n/locale/tl/login.json +++ b/app/javascript/dashboard/i18n/locale/tl/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create a new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/tl/signup.json b/app/javascript/dashboard/i18n/locale/tl/signup.json index 501d9b87e..b0e5f5d27 100644 --- a/app/javascript/dashboard/i18n/locale/tl/signup.json +++ b/app/javascript/dashboard/i18n/locale/tl/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short.", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character." + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", "PLACEHOLDER": "Confirm password", - "ERROR": "Password doesnot match." + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/tr/conversation.json b/app/javascript/dashboard/i18n/locale/tr/conversation.json index ac0b82cb0..719028fc4 100644 --- a/app/javascript/dashboard/i18n/locale/tr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/tr/conversation.json @@ -227,6 +227,13 @@ "YES": "Gönder", "CANCEL": "İptal Et" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Önizlemeyi daralt", + "EXPAND": "Önizlemeyi genişlet" } }, "VISIBLE_TO_AGENTS": "Özel Not: Yalnızca siz ve ekibiniz tarafından görülebilir", diff --git a/app/javascript/dashboard/i18n/locale/tr/login.json b/app/javascript/dashboard/i18n/locale/tr/login.json index 963609195..8460a575b 100644 --- a/app/javascript/dashboard/i18n/locale/tr/login.json +++ b/app/javascript/dashboard/i18n/locale/tr/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Yeni hesap oluştur", "SUBMIT": "Oturum aç", "SAML": { - "LABEL": "SSO ile giriş yapın", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Şifre ile giriş yap", diff --git a/app/javascript/dashboard/i18n/locale/tr/mfa.json b/app/javascript/dashboard/i18n/locale/tr/mfa.json index dbb616413..defd72261 100644 --- a/app/javascript/dashboard/i18n/locale/tr/mfa.json +++ b/app/javascript/dashboard/i18n/locale/tr/mfa.json @@ -1,22 +1,22 @@ { "MFA_SETTINGS": { "TITLE": "İki Faktörlü Kimlik Doğrulama", - "SUBTITLE": "Secure your account with TOTP-based authentication", - "DESCRIPTION": "Add an extra layer of security to your account using a time-based one-time password (TOTP)", + "SUBTITLE": "TOTP tabanlı kimlik doğrulama ile hesabınızı güvence altına alın", + "DESCRIPTION": "Zaman tabanlı tek kullanımlık şifre (TOTP) kullanarak hesabınıza ekstra bir güvenlik katmanı ekleyin", "STATUS_TITLE": "Kimlik Doğrulama Durumu", "STATUS_DESCRIPTION": "İki faktörlü kimlik doğrulama ayarlarınızı ve yedek kurtarma kodlarınızı yönetin", "ENABLED": "Etkin", "DISABLED": "Devre dışı", - "STATUS_ENABLED": "Two-factor authentication is active", - "STATUS_ENABLED_DESC": "Your account is protected with an additional layer of security", - "ENABLE_BUTTON": "Enable Two-Factor Authentication", - "ENHANCE_SECURITY": "Enhance Your Account Security", - "ENHANCE_SECURITY_DESC": "Two-factor authentication adds an extra layer of security by requiring a verification code from your authenticator app in addition to your password.", + "STATUS_ENABLED": "İki faktörlü kimlik doğrulama etkin", + "STATUS_ENABLED_DESC": "Hesabınız ek bir güvenlik katmanı ile korunmaktadır", + "ENABLE_BUTTON": "İki Faktörlü Kimlik Doğrulamayı Etkinleştir", + "ENHANCE_SECURITY": "Hesap Güvenliğinizi Artırın", + "ENHANCE_SECURITY_DESC": "İki faktörlü kimlik doğrulama, şifrenize ek olarak kimlik doğrulama uygulamanızdan bir doğrulama kodu talep ederek ekstra bir güvenlik katmanı ekler.", "SETUP": { "STEP_NUMBER_1": "1", "STEP_NUMBER_2": "2", - "STEP1_TITLE": "Scan QR Code with Your Authenticator App", - "STEP1_DESCRIPTION": "Use Google Authenticator, Authy, or any TOTP-compatible app", + "STEP1_TITLE": "Kimlik Doğrulama Uygulamanızla QR Kodunu Tarayın", + "STEP1_DESCRIPTION": "Google Authenticator, Authy veya TOTP uyumlu herhangi bir uygulamayı kullanın", "LOADING_QR": "Loading...", "MANUAL_ENTRY": "Tarama yapamıyor musunuz? Kodu manuel olarak girin", "SECRET_KEY": "Gizli Anahtar", diff --git a/app/javascript/dashboard/i18n/locale/tr/signup.json b/app/javascript/dashboard/i18n/locale/tr/signup.json index d5f7364fe..c804e8968 100644 --- a/app/javascript/dashboard/i18n/locale/tr/signup.json +++ b/app/javascript/dashboard/i18n/locale/tr/signup.json @@ -27,15 +27,20 @@ "LABEL": "Parola", "PLACEHOLDER": "Parola", "ERROR": "Parola çok kısa.", - "IS_INVALID_PASSWORD": "Şifre en az 1 büyük harf, 1 küçük harf, 1 rakam ve 1 özel karakter içermelidir." + "IS_INVALID_PASSWORD": "Şifre en az 1 büyük harf, 1 küçük harf, 1 rakam ve 1 özel karakter içermelidir.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Parolayı onayla", "PLACEHOLDER": "Parolayı onayla", - "ERROR": "Parolalar eşleşmiyor." + "ERROR": "Parola eşleşmiyor." }, "API": { - "SUCCESS_MESSAGE": "Kayıt başarılı", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Woot sunucusuna bağlanılamadı. Lütfen tekrar deneyin." }, "SUBMIT": "Hesap oluştur", diff --git a/app/javascript/dashboard/i18n/locale/uk/conversation.json b/app/javascript/dashboard/i18n/locale/uk/conversation.json index 5aca1094e..11be01bb5 100644 --- a/app/javascript/dashboard/i18n/locale/uk/conversation.json +++ b/app/javascript/dashboard/i18n/locale/uk/conversation.json @@ -227,6 +227,13 @@ "YES": "Надіслати", "CANCEL": "Скасувати" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Приватна нотатка: видима тільки вам та вашій команді", diff --git a/app/javascript/dashboard/i18n/locale/uk/login.json b/app/javascript/dashboard/i18n/locale/uk/login.json index 20f4c9e64..a3dbc9b45 100644 --- a/app/javascript/dashboard/i18n/locale/uk/login.json +++ b/app/javascript/dashboard/i18n/locale/uk/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Створити новий обліковий запис", "SUBMIT": "Увійти", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/uk/signup.json b/app/javascript/dashboard/i18n/locale/uk/signup.json index 20163a58a..5acf45913 100644 --- a/app/javascript/dashboard/i18n/locale/uk/signup.json +++ b/app/javascript/dashboard/i18n/locale/uk/signup.json @@ -27,15 +27,20 @@ "LABEL": "Пароль", "PLACEHOLDER": "Пароль", "ERROR": "Пароль занадто короткий.", - "IS_INVALID_PASSWORD": "Пароль повинен містити принаймні 1 велику літеру, хоча б 1 малу літеру, 1 цифру та 1 спеціальний символ." + "IS_INVALID_PASSWORD": "Пароль повинен містити принаймні 1 велику літеру, хоча б 1 малу літеру, 1 цифру та 1 спеціальний символ.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Підтвердити пароль", "PLACEHOLDER": "Підтвердити пароль", - "ERROR": "Пароль не підходить." + "ERROR": "Паролі не збігаються." }, "API": { - "SUCCESS_MESSAGE": "Реєстрація пройшла успішно", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Не вдалося підключитися до Woot сервера. Будь ласка, спробуйте ще раз." }, "SUBMIT": "Створити акаунт", diff --git a/app/javascript/dashboard/i18n/locale/ur/conversation.json b/app/javascript/dashboard/i18n/locale/ur/conversation.json index fc03fbc7c..31e900a12 100644 --- a/app/javascript/dashboard/i18n/locale/ur/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ur/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "منسوخ کریں۔" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/ur/login.json b/app/javascript/dashboard/i18n/locale/ur/login.json index ab3c798c5..a34ed1783 100644 --- a/app/javascript/dashboard/i18n/locale/ur/login.json +++ b/app/javascript/dashboard/i18n/locale/ur/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ur/signup.json b/app/javascript/dashboard/i18n/locale/ur/signup.json index 501d9b87e..b0e5f5d27 100644 --- a/app/javascript/dashboard/i18n/locale/ur/signup.json +++ b/app/javascript/dashboard/i18n/locale/ur/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short.", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character." + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", "PLACEHOLDER": "Confirm password", - "ERROR": "Password doesnot match." + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json b/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json index 9fd39b70f..79d5ebc66 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json @@ -227,6 +227,13 @@ "YES": "Send", "CANCEL": "Cancel" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/login.json b/app/javascript/dashboard/i18n/locale/ur_IN/login.json index ab3c798c5..a34ed1783 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/login.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Create new account", "SUBMIT": "Login", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/signup.json b/app/javascript/dashboard/i18n/locale/ur_IN/signup.json index 501d9b87e..b0e5f5d27 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/signup.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/signup.json @@ -27,15 +27,20 @@ "LABEL": "Password", "PLACEHOLDER": "Password", "ERROR": "Password is too short.", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character." + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", "PLACEHOLDER": "Confirm password", - "ERROR": "Password doesnot match." + "ERROR": "Passwords do not match." }, "API": { - "SUCCESS_MESSAGE": "Registration Successfull", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/vi/conversation.json b/app/javascript/dashboard/i18n/locale/vi/conversation.json index 58eadd9e0..ad17700b1 100644 --- a/app/javascript/dashboard/i18n/locale/vi/conversation.json +++ b/app/javascript/dashboard/i18n/locale/vi/conversation.json @@ -227,6 +227,13 @@ "YES": "Gửi", "CANCEL": "Huỷ" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "Lưu ý riêng: Chỉ hiển thị với bạn và nhóm của bạn", diff --git a/app/javascript/dashboard/i18n/locale/vi/login.json b/app/javascript/dashboard/i18n/locale/vi/login.json index 0981ad84d..8ec12fb28 100644 --- a/app/javascript/dashboard/i18n/locale/vi/login.json +++ b/app/javascript/dashboard/i18n/locale/vi/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "Tạo mới tài khoản", "SUBMIT": "Đăng nhập", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/vi/signup.json b/app/javascript/dashboard/i18n/locale/vi/signup.json index f496bec9a..88739fc4f 100644 --- a/app/javascript/dashboard/i18n/locale/vi/signup.json +++ b/app/javascript/dashboard/i18n/locale/vi/signup.json @@ -27,7 +27,12 @@ "LABEL": "Mật khẩu", "PLACEHOLDER": "Mật khẩu", "ERROR": "Mật khẩu quá ngắn.", - "IS_INVALID_PASSWORD": "Mật khẩu phải chứa ít nhất 1 chữ hoa, 1 chữ thường, 1 số và 1 ký tự đặc biệt." + "IS_INVALID_PASSWORD": "Mật khẩu phải chứa ít nhất 1 chữ hoa, 1 chữ thường, 1 số và 1 ký tự đặc biệt.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", @@ -35,7 +40,7 @@ "ERROR": "Mật khẩu không khớp." }, "API": { - "SUCCESS_MESSAGE": "Đăng Kí Thành Công", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json b/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json index 5eaff3f80..41c55b552 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json @@ -227,6 +227,13 @@ "YES": "发送", "CANCEL": "取消" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "私人便签:仅对您和您的团队可见", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/login.json b/app/javascript/dashboard/i18n/locale/zh_CN/login.json index 9376dd920..2dbbc9327 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/login.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "创建新账户", "SUBMIT": "登录", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/signup.json b/app/javascript/dashboard/i18n/locale/zh_CN/signup.json index 061100076..f379660c1 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/signup.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/signup.json @@ -27,7 +27,12 @@ "LABEL": "密码", "PLACEHOLDER": "密码", "ERROR": "密码太短了.", - "IS_INVALID_PASSWORD": "密码应至少应该包含:1个大写字母、1个小写字母、1个数字和1个特殊字符。" + "IS_INVALID_PASSWORD": "密码应至少应该包含:1个大写字母、1个小写字母、1个数字和1个特殊字符。", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "确认密码", @@ -35,7 +40,7 @@ "ERROR": "密码不匹配." }, "API": { - "SUCCESS_MESSAGE": "注册成功", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "无法与 Woot 服务器建立连接。请重试。" }, "SUBMIT": "创建新账户", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json b/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json index 333a13a0f..fa023c044 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json @@ -227,6 +227,13 @@ "YES": "發送", "CANCEL": "取消" } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" } }, "VISIBLE_TO_AGENTS": "私人筆記:僅對您和您的團隊可以看見", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/login.json b/app/javascript/dashboard/i18n/locale/zh_TW/login.json index ac38e25ef..63169e05b 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/login.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/login.json @@ -24,7 +24,7 @@ "CREATE_NEW_ACCOUNT": "建立新帳戶", "SUBMIT": "登入", "SAML": { - "LABEL": "Log in via SSO", + "LABEL": "Login via SSO", "TITLE": "Initiate Single Sign-on (SSO)", "SUBTITLE": "Enter your work email to access your organization", "BACK_TO_LOGIN": "Login via Password", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/signup.json b/app/javascript/dashboard/i18n/locale/zh_TW/signup.json index 197a91b89..41a645e64 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/signup.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/signup.json @@ -27,7 +27,12 @@ "LABEL": "密碼", "PLACEHOLDER": "密碼", "ERROR": "密碼太短了.", - "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character." + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm password", @@ -35,7 +40,7 @@ "ERROR": "密碼不匹配." }, "API": { - "SUCCESS_MESSAGE": "註冊成功", + "SUCCESS_MESSAGE": "Registration Successful", "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." }, "SUBMIT": "Create account", From 0d721bc898ad8f13fc996573b603986ffc76aa22 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Fri, 3 Oct 2025 15:31:58 +0530 Subject: [PATCH 04/26] chore: UI improvement in auth screens (#12573) # Pull Request Template ## Type of change ### Screenshots **Before** image image image **After** image image image ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --- app/javascript/v3/components/GoogleOauth/Button.vue | 2 +- .../v3/views/auth/signup/components/Signup/Form.vue | 8 ++++---- app/javascript/v3/views/login/Index.vue | 9 +++++++-- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/app/javascript/v3/components/GoogleOauth/Button.vue b/app/javascript/v3/components/GoogleOauth/Button.vue index c6214e9c3..2d1fc5a4e 100644 --- a/app/javascript/v3/components/GoogleOauth/Button.vue +++ b/app/javascript/v3/components/GoogleOauth/Button.vue @@ -34,7 +34,7 @@ export default {
diff --git a/app/javascript/v3/views/auth/signup/components/Signup/Form.vue b/app/javascript/v3/views/auth/signup/components/Signup/Form.vue index b22f621fc..6a4497948 100644 --- a/app/javascript/v3/views/auth/signup/components/Signup/Form.vue +++ b/app/javascript/v3/views/auth/signup/components/Signup/Form.vue @@ -237,16 +237,16 @@ export default { />
-
    +
    • diff --git a/app/javascript/v3/views/login/Index.vue b/app/javascript/v3/views/login/Index.vue index 5faaa3e02..028af4f72 100644 --- a/app/javascript/v3/views/login/Index.vue +++ b/app/javascript/v3/views/login/Index.vue @@ -15,6 +15,7 @@ import SimpleDivider from '../../components/Divider/SimpleDivider.vue'; import FormInput from '../../components/Form/Input.vue'; import GoogleOAuthButton from '../../components/GoogleOauth/Button.vue'; import Spinner from 'shared/components/Spinner.vue'; +import Icon from 'dashboard/components-next/icon/Icon.vue'; import NextButton from 'dashboard/components-next/button/Button.vue'; import MfaVerification from 'dashboard/components/auth/MfaVerification.vue'; @@ -33,6 +34,7 @@ export default { NextButton, SimpleDivider, MfaVerification, + Icon, }, props: { ssoAuthToken: { type: String, default: '' }, @@ -260,9 +262,12 @@ export default {
      - + {{ $t('LOGIN.SAML.LABEL') }} diff --git a/package.json b/package.json index 66dd84aa2..38053b2c3 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "@egoist/tailwindcss-icons": "^1.8.1", "@histoire/plugin-vue": "0.17.15", "@iconify-json/logos": "^1.2.3", - "@iconify-json/lucide": "^1.2.11", + "@iconify-json/lucide": "^1.2.68", "@iconify-json/ph": "^1.2.1", "@iconify-json/ri": "^1.2.3", "@iconify-json/teenyicons": "^1.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 71279b7e5..f4ae568c5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -246,8 +246,8 @@ importers: specifier: ^1.2.3 version: 1.2.3 '@iconify-json/lucide': - specifier: ^1.2.11 - version: 1.2.11 + specifier: ^1.2.68 + version: 1.2.68 '@iconify-json/ph': specifier: ^1.2.1 version: 1.2.1 @@ -884,8 +884,8 @@ packages: '@iconify-json/logos@1.2.3': resolution: {integrity: sha512-JLHS5hgZP1b55EONAWNeqBUuriRfRNKWXK4cqYx0PpVaJfIIMiiMxFfvoQiX/bkE9XgkLhcKmDUqL3LXPdXPwQ==} - '@iconify-json/lucide@1.2.11': - resolution: {integrity: sha512-dqpbV7+g1qqxtZOHCZKwdKhtYYqEUjFhYiOg/+PcADbjtapoL+bwa1Brn12gAHq5r2K7Mf29xRHOTmZ3UHHOrw==} + '@iconify-json/lucide@1.2.68': + resolution: {integrity: sha512-lR5xNJdn2CT0iR7lM25G4SewBO4G2hbr3fTWOc3AE9BspflEcneh02E3l9TBaCU/JOHozTJevWLrxBGypD7Tng==} '@iconify-json/material-symbols@1.2.10': resolution: {integrity: sha512-GcZxhOFStM7Dk/oZvJSaW0tR/k6NwTq+KDzYgCNBDg52ktZuRa/gkjRiYooJm/8PAe9NBYxIx8XjS/wi4sasdQ==} @@ -5265,7 +5265,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/lucide@1.2.11': + '@iconify-json/lucide@1.2.68': dependencies: '@iconify/types': 2.0.0 From b536f35fa728d7df2f233576f6969f4187fef8e4 Mon Sep 17 00:00:00 2001 From: Chatwoot Bot <92152627+chatwoot-bot@users.noreply.github.com> Date: Sun, 5 Oct 2025 21:30:26 -0700 Subject: [PATCH 05/26] chore: Update translations (#12580) --- .../dashboard/i18n/locale/am/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ar/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/az/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/bg/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ca/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/cs/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/da/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/de/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/el/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/es/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/fa/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/fi/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/fr/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/he/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/hi/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/hr/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/hu/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/hy/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/id/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/is/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/it/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ja/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ka/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ko/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/lt/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/lv/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ml/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ms/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ne/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/nl/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/no/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/pl/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/pt/inboxMgmt.json | 56 +++++++++++++++++++ .../i18n/locale/pt_BR/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ro/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ru/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/sh/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/sk/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/sl/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/sq/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/sr/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/sv/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ta/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/th/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/tl/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/tr/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/uk/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/ur/inboxMgmt.json | 56 +++++++++++++++++++ .../i18n/locale/ur_IN/inboxMgmt.json | 56 +++++++++++++++++++ .../dashboard/i18n/locale/vi/inboxMgmt.json | 56 +++++++++++++++++++ .../i18n/locale/zh_CN/inboxMgmt.json | 56 +++++++++++++++++++ .../i18n/locale/zh_TW/inboxMgmt.json | 56 +++++++++++++++++++ 52 files changed, 2912 insertions(+) diff --git a/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json index 1c54adcb2..60038253c 100644 --- a/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json index 01d74aa3c..1314ed561 100644 --- a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "تعلم المزيد عن صناديق البريد", "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": { "404": "لا توجد صناديق وارد لقنوات تواصل مرتبطة بهذا الحساب." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "ساعات العمل", "WIDGET_BUILDER": "منشئ اللايف شات", "BOT_CONFIGURATION": "اعدادات البوت", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "تقييم رضاء العملاء" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "مباشر" + } + } + }, "SETTINGS": "الإعدادات", "FEATURES": { "LABEL": "الخصائص", diff --git a/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json index 1c54adcb2..60038253c 100644 --- a/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json index 949dc639c..e540e8c1e 100644 --- a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json index 8af8d02ea..c8670b02d 100644 --- a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "RECONNECTION_REQUIRED": "La teva safata d'entrada està desconnectada. No rebràs missatges nous fins que no els tornis a autoritzar.", "CLICK_TO_RECONNECT": "Fes clic aquí per tornar a connectar-te.", + "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": { "404": "No hi ha cap safata d'entrada connectat a aquest compte." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Horari comercial", "WIDGET_BUILDER": "Creador del widget", "BOT_CONFIGURATION": "Configuracions del bot", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "En directe" + } + } + }, "SETTINGS": "Configuracions", "FEATURES": { "LABEL": "Característiques", diff --git a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json index ad4d2f5cb..9bced9936 100644 --- a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "K tomuto účtu nejsou připojeny žádné doručené schránky." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Pracovní doba", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Nastavení", "FEATURES": { "LABEL": "Funkce", diff --git a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json index 18d8af156..03345d326 100644 --- a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Der er ingen indbakker tilknyttet denne konto." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Forretningstider", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot konfiguration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Levende" + } + } + }, "SETTINGS": "Indstillinger", "FEATURES": { "LABEL": "Funktioner", diff --git a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json index 6e638393a..ad1134cb3 100644 --- a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Mehr über Posteingänge erfahren", "RECONNECTION_REQUIRED": "Ihr Posteingang ist nicht verbunden. Sie erhalten keine neuen Nachrichten, bis Sie ihn erneut autorisieren.", "CLICK_TO_RECONNECT": "Klicken Sie hier, um die Verbindung wiederherzustellen.", + "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": { "404": "Diesem Konto sind keine Posteingänge zugeordnet." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Öffnungszeiten", "WIDGET_BUILDER": "Widget-Generator", "BOT_CONFIGURATION": "Bot-Konfiguration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Einstellungen", "FEATURES": { "LABEL": "Funktionen", diff --git a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json index 71ebdbbcf..92b7e5c59 100644 --- a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Δεν υπάρχουν κιβώτια εισερχομένων σε αυτόν τον λογαριασμό." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Ώρες Εργασίας", "WIDGET_BUILDER": "Δημιουργός Widget", "BOT_CONFIGURATION": "Ρυθμίσεις Bot", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Ζωντανά" + } + } + }, "SETTINGS": "Ρυθμίσεις", "FEATURES": { "LABEL": "Χαρακτηριστικά", diff --git a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json index bc7a9f03c..b1aac6d09 100644 --- a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Aprende más sobre las entradas", "RECONNECTION_REQUIRED": "Tu bandeja de entrada está desconectada. No recibirás mensajes nuevos hasta que lo vuelvas a autorizar.", "CLICK_TO_RECONNECT": "Haga clic aquí para volver a conectar.", + "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": { "404": "No hay entradas adjuntas a esta cuenta." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Horarios", "WIDGET_BUILDER": "Constructor de Widget", "BOT_CONFIGURATION": "Configuración del bot", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "Encuestas de Satisfacción" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "En vivo" + } + } + }, "SETTINGS": "Ajustes", "FEATURES": { "LABEL": "Características", diff --git a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json index be270af6a..3a8e24b35 100644 --- a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "برای این حساب هیچ صندوق ورودی معرفی نشده است." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "ساعت کاری", "WIDGET_BUILDER": "سازنده ابزارک", "BOT_CONFIGURATION": "پیکربندی ربات", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "رضایت مشتری" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "زنده" + } + } + }, "SETTINGS": "تنظیمات", "FEATURES": { "LABEL": "امکانات", diff --git a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json index 340955d75..8409f4bab 100644 --- a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Tähän tiliin ei ole liitetty saapuneet-kansiota." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Asetukset", "FEATURES": { "LABEL": "Ominaisuudet", diff --git a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json index 4b744f1b7..583de65a9 100644 --- a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Il n'y a aucune boîte de réception associée à ce compte." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Heures de bureau", "WIDGET_BUILDER": "Constructeur de Widget", "BOT_CONFIGURATION": "Configuration du bot", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "En direct" + } + } + }, "SETTINGS": "Paramètres", "FEATURES": { "LABEL": "Fonctionnalités", diff --git a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json index f98fa5fe7..7bb57e2e7 100644 --- a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "אין תיבות דואר נכנס מצורפות לחשבון זה." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "שעות פעילות", "WIDGET_BUILDER": "בונה יישומונים", "BOT_CONFIGURATION": "הגדרות בוט", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "לחיות" + } + } + }, "SETTINGS": "הגדרות", "FEATURES": { "LABEL": "מאפיינים", diff --git a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json index b61c6f3e4..00a9c78f0 100644 --- a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json index c79798c09..2b64f5d43 100644 --- a/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json index 773ae8e0d..3f585db3e 100644 --- a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Nincs Inbox kapcsolva ehhez a fiókhoz." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Nyitvatartás", "WIDGET_BUILDER": "Widget építő", "BOT_CONFIGURATION": "Bot konfiguráció", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Élő" + } + } + }, "SETTINGS": "Beállítások", "FEATURES": { "LABEL": "Lehetőségek", diff --git a/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json index 84c53dba4..e8cf88458 100644 --- a/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json index 3cffd41e7..5409c4bb7 100644 --- a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Tidak ada kotak masuk yang dilampirkan ke akun ini." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Jam Kerja", "WIDGET_BUILDER": "Pembuat Widget", "BOT_CONFIGURATION": "Konfigurasi Bot", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Langsung" + } + } + }, "SETTINGS": "Pengaturan", "FEATURES": { "LABEL": "Fitur", diff --git a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json index 1b9562e25..e78d89c1a 100644 --- a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Það eru engin innhólf tengd við þennan reikning." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot stillingar", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Stillingar", "FEATURES": { "LABEL": "Fídusar", diff --git a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json index 321921131..b4ba15a0d 100644 --- a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Non ci sono caselle allegate a questo account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Ore di lavoro", "WIDGET_BUILDER": "Costruttore Widget", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Impostazioni", "FEATURES": { "LABEL": "Funzionalità", diff --git a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json index 06384ca55..99953d1cc 100644 --- a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "受信トレイについて詳しく知る", "RECONNECTION_REQUIRED": "受信トレイが切断されました。再認証するまで新しいメッセージを受信できません。", "CLICK_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": { "404": "このアカウントに紐付けられている受信トレイはありません。" }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "営業時間", "WIDGET_BUILDER": "ウィジェットビルダー", "BOT_CONFIGURATION": "ボット設定", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "顧客満足度" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "承認済み", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "設定", "FEATURES": { "LABEL": "機能", diff --git a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json index b61c6f3e4..00a9c78f0 100644 --- a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json index 1a6e29a05..1e21c4d18 100644 --- a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "이 계정에는 첨부된 받은 메시지함이 없습니다." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "영업시간", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "설정", "FEATURES": { "LABEL": "특징", diff --git a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json index a11833870..20e34fa24 100644 --- a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Prie šios paskyros nėra pridėtų gautųjų laiškų aplankų." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Darbo valandos", "WIDGET_BUILDER": "Valdiklių kūrimo priemonė", "BOT_CONFIGURATION": "Boto konfiguracija", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Tiesiogiai" + } + } + }, "SETTINGS": "Nustatymai", "FEATURES": { "LABEL": "Funkcijos", diff --git a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json index 6bb217ebe..888760213 100644 --- a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Uzzināt vairāk par iesūtnēm", "RECONNECTION_REQUIRED": "Jūsu iesūtne ir atvienota. Jūs nesaņemsiet jaunus ziņojumus, kamēr nebūsiet tos atkārtoti autorizējis.", "CLICK_TO_RECONNECT": "Noklikšķiniet šeit, lai atkārtoti izveidotu savienojumu.", + "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": { "404": "Šim kontam nav pievienota neviena Iesūtne." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Darba Laiks", "WIDGET_BUILDER": "Logrīku Veidotājs", "BOT_CONFIGURATION": "Robota Konfigurācija", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Apstiprināts", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Tiešraide" + } + } + }, "SETTINGS": "Iestatījumi", "FEATURES": { "LABEL": "Īpašības", diff --git a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json index a8739c5de..b957d22c7 100644 --- a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "ഈ അക്കൗണ്ടിലേക്കു ഇൻ‌ബോക്സുകളൊന്നും ബന്ധിപ്പിച്ചിട്ടില്ല." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "ക്രമീകരണങ്ങൾ", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json index ddc3f91e6..389123146 100644 --- a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json index ecd24fcf4..d9fc7e643 100644 --- a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json index 2193de3b4..24f4701bd 100644 --- a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Er zijn geen inboxen aan dit account gekoppeld." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Instellingen", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json index 15d27fe0b..beca8fb5a 100644 --- a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Det er ingen innbokser tilknyttet denne kontoen." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Innstillinger", "FEATURES": { "LABEL": "Funksjoner", diff --git a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json index 247b1324b..7ee2d9779 100644 --- a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Nie ma żadnych skrzynek odbiorczych przypisanych do tego konta." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Godziny pracy", "WIDGET_BUILDER": "Kreator widżetów", "BOT_CONFIGURATION": "Konfiguracja bota", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Na żywo" + } + } + }, "SETTINGS": "Ustawienia", "FEATURES": { "LABEL": "Funkcje", diff --git a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json index 5153a2165..3c0bbf337 100644 --- a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "RECONNECTION_REQUIRED": "A sua caixa de entrada está desconectada. Não serão recebidas novas mensagens até nova autorização.", "CLICK_TO_RECONNECT": "Clique aqui para reconectar.", + "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": { "404": "Não há caixas de entrada anexadas a esta conta." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Horário comercial", "WIDGET_BUILDER": "Construtor de widgets", "BOT_CONFIGURATION": "Configuração do bot", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Disponível" + } + } + }, "SETTINGS": "Configurações", "FEATURES": { "LABEL": "Características", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json index bad2fa1b6..5212f63d4 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Saiba mais sobre as caixas de entrada", "RECONNECTION_REQUIRED": "Sua caixa de entrada está desconectada. Você não receberá novas mensagens até reautorizar.", "CLICK_TO_RECONNECT": "Clique aqui para reconectar.", + "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": { "404": "Não há caixas de entrada anexadas a esta conta." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Horário de funcionamento", "WIDGET_BUILDER": "Construtor de Widget", "BOT_CONFIGURATION": "Configuração do Bot", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Aceito", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Em tempo real" + } + } + }, "SETTINGS": "Configurações", "FEATURES": { "LABEL": "Funcionalidades", diff --git a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json index 767465c74..049398332 100644 --- a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Nu există căsuțe poștale atașate acestui cont." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Program de lucru", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Configurarea botului", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Setări", "FEATURES": { "LABEL": "Caracteristici", diff --git a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json index 163ab9ceb..3b0a8802b 100644 --- a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Узнать больше о «Входящих»", "RECONNECTION_REQUIRED": "Входящие сообщения отключены. Вы не будете получать новые сообщения пока не пройдете авторизацию повторно.", "CLICK_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": { "404": "У вас пока нет источников." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Время работы", "WIDGET_BUILDER": "Конструктор виджетов", "BOT_CONFIGURATION": "Конфигурация бота", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Одобрено", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Онлайн" + } + } + }, "SETTINGS": "Настройки", "FEATURES": { "LABEL": "Возможности", diff --git a/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json index d3c0353f0..77024f23c 100644 --- a/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json index a0b408895..fa3214620 100644 --- a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Otváracie hodiny", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Nastavenia", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json index df7812746..69290a1a2 100644 --- a/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json index 3c5be4d30..0cf3267ff 100644 --- a/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json index 4fa945852..a4fece97a 100644 --- a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Nema prijamnih sandučeta povezanih sa ovim nalogom." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Radno vreme", "WIDGET_BUILDER": "Izgrađivač vidžeta", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "Izveštaj o zadovoljstvu" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Uživo" + } + } + }, "SETTINGS": "Podešavanja", "FEATURES": { "LABEL": "Mogućnosti", diff --git a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json index 143ec9830..cfa768b2d 100644 --- a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Det finns inga inkorgar kopplade till detta konto." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Öppettider", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Inställningar", "FEATURES": { "LABEL": "Funktioner", diff --git a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json index 34c49db7e..32f0db539 100644 --- a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "இந்த கணக்கில் இன்பாக்ஸ்கள் எதுவும் இணைக்கப்படவில்லை." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "அமைப்புகள்", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json index 36b35e142..3ed841223 100644 --- a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "ไม่มีกล่องข้อความที่เกี่ยวข้องในบัญชีนี้" }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "เวลาทำการ", "WIDGET_BUILDER": "เครื่องมือสร้าง Widget", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "ขณะนี้" + } + } + }, "SETTINGS": "ตั้งค่า", "FEATURES": { "LABEL": "ฟีเจอร์", diff --git a/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json index 1c54adcb2..60038253c 100644 --- a/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json index 1d5fc9983..cb131e8fc 100644 --- a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Bu hesaba bağlı gelen kutusu yok." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "İş Saatleri", "WIDGET_BUILDER": "Widget Oluşturucu", "BOT_CONFIGURATION": "Bot Yapılandırma", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Canlı" + } + } + }, "SETTINGS": "Ayarlar", "FEATURES": { "LABEL": "Özellikleri", diff --git a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json index b145602b1..b3b2108b0 100644 --- a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "В цього облікового запису немає скриньк." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Робочий час", "WIDGET_BUILDER": "Конструктор віджетів", "BOT_CONFIGURATION": "Налаштування бота", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Онлайн" + } + } + }, "SETTINGS": "Налаштування", "FEATURES": { "LABEL": "Особливості", diff --git a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json index 1d984e85b..7c36d716f 100644 --- a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json index b3a02062d..757ba2ca8 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "There are no inboxes attached to this account." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Business Hours", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "Settings", "FEATURES": { "LABEL": "Features", diff --git a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json index a990eeb42..81bc1b8eb 100644 --- a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "Không có hộp thư đến nào được đính kèm với tài khoản này." }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "Giờ làm việc", "WIDGET_BUILDER": "Trình tạo widget", "BOT_CONFIGURATION": "Cấu hình Bot", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Trực tuyến" + } + } + }, "SETTINGS": "Cài đặt", "FEATURES": { "LABEL": "Các tính năng", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json index e2e437400..93e79d04d 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "了解更多关于收件箱的信息", "RECONNECTION_REQUIRED": "您的收件箱已断开连接。在您重新授权之前,您不会收到新消息。", "CLICK_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": { "404": "此账户没有收件箱。" }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "工作时间", "WIDGET_BUILDER": "小部件生成器", "BOT_CONFIGURATION": "机器人配置", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "客户满意度" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "已批准", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "实时" + } + } + }, "SETTINGS": "设置", "FEATURES": { "LABEL": "特性", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json index 80b25bfb8..02fd64aff 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json @@ -5,6 +5,8 @@ "LEARN_MORE": "Learn more about inboxes", "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": { "404": "此帳戶没有收件匣。" }, @@ -605,8 +607,62 @@ "BUSINESS_HOURS": "服務時間", "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "增機器人設定", + "ACCOUNT_HEALTH": "Account Health", "CSAT": "顧客滿意度得分(CSAT)" }, + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + } + }, "SETTINGS": "設定", "FEATURES": { "LABEL": "Features", From a8aefa0c73d3f7d830b9f1525cef61a31b75e9ee Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Mon, 6 Oct 2025 13:00:11 +0530 Subject: [PATCH 06/26] chore: Add account health missing translations (#12596) # Pull Request Template ## Description Please include a summary of the change and issue(s) fixed. Also, mention relevant motivation, context, and any dependencies that this change requires. Fixes # (issue) ## Type of change Please delete options that are not relevant. - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality not to work as expected) - [ ] This change requires a documentation update ## How Has This Been Tested? Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration. ## Checklist: - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --- app/javascript/dashboard/i18n/locale/en/inboxMgmt.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json index 60038253c..87fe57564 100644 --- a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", From 8bbb8ba5a4495b848dae7ce3afcef412f5fb4861 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 6 Oct 2025 20:23:15 +0530 Subject: [PATCH 07/26] feat(ee): Captain custom http tools (#12584) To test this out, use the following PR: https://github.com/chatwoot/chatwoot/pull/12585 --------- Co-authored-by: Pranav --- ...51003091242_create_captain_custom_tools.rb | 22 + db/schema.rb | 21 +- .../accounts/captain/assistants_controller.rb | 3 +- enterprise/app/models/captain/assistant.rb | 13 + enterprise/app/models/captain/custom_tool.rb | 91 +++++ enterprise/app/models/captain/scenario.rb | 20 +- .../models/concerns/captain_tools_helpers.rb | 16 +- .../concerns/safe_endpoint_validatable.rb | 84 ++++ enterprise/app/models/concerns/toolable.rb | 78 ++++ .../app/models/enterprise/concerns/account.rb | 1 + enterprise/lib/captain/tools/http_tool.rb | 105 +++++ lib/tasks/captain_chat.rake | 2 +- .../lib/captain/tools/http_tool_spec.rb | 241 +++++++++++ .../models/captain/custom_tool_spec.rb | 386 ++++++++++++++++++ .../models/captain/scenario_spec.rb | 183 ++++++++- .../concerns/captain_tools_helpers_spec.rb | 74 ---- spec/factories/captain/custom_tool.rb | 51 +++ 17 files changed, 1299 insertions(+), 92 deletions(-) create mode 100644 db/migrate/20251003091242_create_captain_custom_tools.rb create mode 100644 enterprise/app/models/captain/custom_tool.rb create mode 100644 enterprise/app/models/concerns/safe_endpoint_validatable.rb create mode 100644 enterprise/app/models/concerns/toolable.rb create mode 100644 enterprise/lib/captain/tools/http_tool.rb create mode 100644 spec/enterprise/lib/captain/tools/http_tool_spec.rb create mode 100644 spec/enterprise/models/captain/custom_tool_spec.rb create mode 100644 spec/factories/captain/custom_tool.rb diff --git a/db/migrate/20251003091242_create_captain_custom_tools.rb b/db/migrate/20251003091242_create_captain_custom_tools.rb new file mode 100644 index 000000000..8f63d826e --- /dev/null +++ b/db/migrate/20251003091242_create_captain_custom_tools.rb @@ -0,0 +1,22 @@ +class CreateCaptainCustomTools < ActiveRecord::Migration[7.1] + def change + create_table :captain_custom_tools do |t| + t.references :account, null: false, index: true + t.string :slug, null: false + t.string :title, null: false + t.text :description + t.string :http_method, null: false, default: 'GET' + t.text :endpoint_url, null: false + t.text :request_template + t.text :response_template + t.string :auth_type, default: 'none' + t.jsonb :auth_config, default: {} + t.jsonb :param_schema, default: [] + t.boolean :enabled, default: true, null: false + + t.timestamps + end + + add_index :captain_custom_tools, [:account_id, :slug], unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index d5f0c244c..f31d05cc3 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2025_09_17_012759) do +ActiveRecord::Schema[7.1].define(version: 2025_10_03_091242) do # These extensions should be enabled to support this database enable_extension "pg_stat_statements" enable_extension "pg_trgm" @@ -323,6 +323,25 @@ ActiveRecord::Schema[7.1].define(version: 2025_09_17_012759) do t.index ["account_id"], name: "index_captain_assistants_on_account_id" end + create_table "captain_custom_tools", force: :cascade do |t| + t.bigint "account_id", null: false + t.string "slug", null: false + t.string "title", null: false + t.text "description" + t.string "http_method", default: "GET", null: false + t.text "endpoint_url", null: false + t.text "request_template" + t.text "response_template" + t.string "auth_type", default: "none" + t.jsonb "auth_config", default: {} + t.jsonb "param_schema", default: [] + t.boolean "enabled", default: true, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["account_id", "slug"], name: "index_captain_custom_tools_on_account_id_and_slug", unique: true + t.index ["account_id"], name: "index_captain_custom_tools_on_account_id" + end + create_table "captain_documents", force: :cascade do |t| t.string "name" t.string "external_link", null: false diff --git a/enterprise/app/controllers/api/v1/accounts/captain/assistants_controller.rb b/enterprise/app/controllers/api/v1/accounts/captain/assistants_controller.rb index 21675bad0..ebeaaf67f 100644 --- a/enterprise/app/controllers/api/v1/accounts/captain/assistants_controller.rb +++ b/enterprise/app/controllers/api/v1/accounts/captain/assistants_controller.rb @@ -33,7 +33,8 @@ class Api::V1::Accounts::Captain::AssistantsController < Api::V1::Accounts::Base end def tools - @tools = Captain::Assistant.available_agent_tools + assistant = Captain::Assistant.new(account: Current.account) + @tools = assistant.available_agent_tools end private diff --git a/enterprise/app/models/captain/assistant.rb b/enterprise/app/models/captain/assistant.rb index 0423abf67..21ecf05c4 100644 --- a/enterprise/app/models/captain/assistant.rb +++ b/enterprise/app/models/captain/assistant.rb @@ -50,6 +50,19 @@ class Captain::Assistant < ApplicationRecord name end + def available_agent_tools + tools = self.class.built_in_agent_tools.dup + + custom_tools = account.captain_custom_tools.enabled.map(&:to_tool_metadata) + tools.concat(custom_tools) + + tools + end + + def available_tool_ids + available_agent_tools.pluck(:id) + end + def push_event_data { id: id, diff --git a/enterprise/app/models/captain/custom_tool.rb b/enterprise/app/models/captain/custom_tool.rb new file mode 100644 index 000000000..8ad02f401 --- /dev/null +++ b/enterprise/app/models/captain/custom_tool.rb @@ -0,0 +1,91 @@ +# == Schema Information +# +# Table name: captain_custom_tools +# +# id :bigint not null, primary key +# auth_config :jsonb +# auth_type :string default("none") +# description :text +# enabled :boolean default(TRUE), not null +# endpoint_url :text not null +# http_method :string default("GET"), not null +# param_schema :jsonb +# request_template :text +# response_template :text +# slug :string not null +# title :string not null +# created_at :datetime not null +# updated_at :datetime not null +# account_id :bigint not null +# +# Indexes +# +# index_captain_custom_tools_on_account_id (account_id) +# index_captain_custom_tools_on_account_id_and_slug (account_id,slug) UNIQUE +# +class Captain::CustomTool < ApplicationRecord + include Concerns::Toolable + include Concerns::SafeEndpointValidatable + + self.table_name = 'captain_custom_tools' + + PARAM_SCHEMA_VALIDATION = { + 'type': 'array', + 'items': { + 'type': 'object', + 'properties': { + 'name': { 'type': 'string' }, + 'type': { 'type': 'string' }, + 'description': { 'type': 'string' }, + 'required': { 'type': 'boolean' } + }, + 'required': %w[name type description], + 'additionalProperties': false + } + }.to_json.freeze + + belongs_to :account + + enum :http_method, %w[GET POST].index_by(&:itself), validate: true + enum :auth_type, %w[none bearer basic api_key].index_by(&:itself), default: :none, validate: true, prefix: :auth + + before_validation :generate_slug + + validates :slug, presence: true, uniqueness: { scope: :account_id } + validates :title, presence: true + validates :endpoint_url, presence: true + validates_with JsonSchemaValidator, + schema: PARAM_SCHEMA_VALIDATION, + attribute_resolver: ->(record) { record.param_schema } + + scope :enabled, -> { where(enabled: true) } + + def to_tool_metadata + { + id: slug, + title: title, + description: description, + custom: true + } + end + + private + + def generate_slug + return if slug.present? + + base_slug = title.present? ? "custom_#{title.parameterize}" : "custom_#{SecureRandom.uuid}" + self.slug = find_unique_slug(base_slug) + end + + def find_unique_slug(base_slug, counter = 0) + slug_candidate = counter.zero? ? base_slug : "#{base_slug}-#{counter}" + return find_unique_slug(base_slug, counter + 1) if slug_exists?(slug_candidate) + + slug_candidate + end + + def slug_exists?(candidate) + self.class.exists?(account_id: account_id, slug: candidate) + end +end diff --git a/enterprise/app/models/captain/scenario.rb b/enterprise/app/models/captain/scenario.rb index aac7e2411..d04990199 100644 --- a/enterprise/app/models/captain/scenario.rb +++ b/enterprise/app/models/captain/scenario.rb @@ -57,7 +57,7 @@ class Captain::Scenario < ApplicationRecord end def agent_tools - resolved_tools.map { |tool| self.class.resolve_tool_class(tool[:id]) }.map { |tool| tool.new(assistant) } + resolved_tools.map { |tool| resolve_tool_instance(tool) } end def resolved_instructions @@ -69,12 +69,24 @@ class Captain::Scenario < ApplicationRecord def resolved_tools return [] if tools.blank? - available_tools = self.class.available_agent_tools + available_tools = assistant.available_agent_tools tools.filter_map do |tool_id| available_tools.find { |tool| tool[:id] == tool_id } end end + def resolve_tool_instance(tool_metadata) + tool_id = tool_metadata[:id] + + if tool_metadata[:custom] + custom_tool = Captain::CustomTool.find_by(slug: tool_id, account_id: account_id, enabled: true) + custom_tool&.tool(assistant) + else + tool_class = self.class.resolve_tool_class(tool_id) + tool_class&.new(assistant) + end + end + # Validates that all tool references in the instruction are valid. # Parses the instruction for tool references and checks if they exist # in the available tools configuration. @@ -95,8 +107,8 @@ class Captain::Scenario < ApplicationRecord tool_ids = extract_tool_ids_from_text(instruction) return if tool_ids.empty? - available_tool_ids = self.class.available_tool_ids - invalid_tools = tool_ids - available_tool_ids + all_available_tool_ids = assistant.available_tool_ids + invalid_tools = tool_ids - all_available_tool_ids return unless invalid_tools.any? diff --git a/enterprise/app/models/concerns/captain_tools_helpers.rb b/enterprise/app/models/concerns/captain_tools_helpers.rb index 5a660310c..34133aac2 100644 --- a/enterprise/app/models/concerns/captain_tools_helpers.rb +++ b/enterprise/app/models/concerns/captain_tools_helpers.rb @@ -8,12 +8,12 @@ module Concerns::CaptainToolsHelpers TOOL_REFERENCE_REGEX = %r{\[[^\]]+\]\(tool://([^/)]+)\)} class_methods do - # Returns all available agent tools with their metadata. + # Returns all built-in agent tools with their metadata. # Only includes tools that have corresponding class files and can be resolved. # # @return [Array] Array of tool hashes with :id, :title, :description, :icon - def available_agent_tools - @available_agent_tools ||= load_agent_tools + def built_in_agent_tools + @built_in_agent_tools ||= load_agent_tools end # Resolves a tool class from a tool ID. @@ -26,12 +26,12 @@ module Concerns::CaptainToolsHelpers class_name.safe_constantize end - # Returns an array of all available tool IDs. - # Convenience method that extracts just the IDs from available_agent_tools. + # Returns an array of all built-in tool IDs. + # Convenience method that extracts just the IDs from built_in_agent_tools. # - # @return [Array] Array of available tool IDs - def available_tool_ids - @available_tool_ids ||= available_agent_tools.map { |tool| tool[:id] } + # @return [Array] Array of built-in tool IDs + def built_in_tool_ids + @built_in_tool_ids ||= built_in_agent_tools.map { |tool| tool[:id] } end private diff --git a/enterprise/app/models/concerns/safe_endpoint_validatable.rb b/enterprise/app/models/concerns/safe_endpoint_validatable.rb new file mode 100644 index 000000000..b151b10e7 --- /dev/null +++ b/enterprise/app/models/concerns/safe_endpoint_validatable.rb @@ -0,0 +1,84 @@ +module Concerns::SafeEndpointValidatable + extend ActiveSupport::Concern + + FRONTEND_HOST = URI.parse(ENV.fetch('FRONTEND_URL', 'http://localhost:3000')).host.freeze + DISALLOWED_HOSTS = ['localhost', /\.local\z/i].freeze + + included do + validate :validate_safe_endpoint_url + end + + private + + def validate_safe_endpoint_url + return if endpoint_url.blank? + + uri = parse_endpoint_uri + return errors.add(:endpoint_url, 'must be a valid URL') unless uri + + validate_endpoint_scheme(uri) + validate_endpoint_host(uri) + validate_not_ip_address(uri) + validate_no_unicode_chars(uri) + end + + def parse_endpoint_uri + # Strip Liquid template syntax for validation + # Replace {{ variable }} with a placeholder value + sanitized_url = endpoint_url.gsub(/\{\{[^}]+\}\}/, 'placeholder') + URI.parse(sanitized_url) + rescue URI::InvalidURIError + nil + end + + def validate_endpoint_scheme(uri) + return if uri.scheme == 'https' + + errors.add(:endpoint_url, 'must use HTTPS protocol') + end + + def validate_endpoint_host(uri) + if uri.host.blank? + errors.add(:endpoint_url, 'must have a valid hostname') + return + end + + if uri.host == FRONTEND_HOST + errors.add(:endpoint_url, 'cannot point to the application itself') + return + end + + DISALLOWED_HOSTS.each do |pattern| + matched = if pattern.is_a?(Regexp) + uri.host =~ pattern + else + uri.host.downcase == pattern + end + + next unless matched + + errors.add(:endpoint_url, 'cannot use disallowed hostname') + break + end + end + + def validate_not_ip_address(uri) + # Check for IPv4 + if /\A\d+\.\d+\.\d+\.\d+\z/.match?(uri.host) + errors.add(:endpoint_url, 'cannot be an IP address, must be a hostname') + return + end + + # Check for IPv6 + return unless uri.host.include?(':') + + errors.add(:endpoint_url, 'cannot be an IP address, must be a hostname') + end + + def validate_no_unicode_chars(uri) + return unless uri.host + return if /\A[\x00-\x7F]+\z/.match?(uri.host) + + errors.add(:endpoint_url, 'hostname cannot contain non-ASCII characters') + end +end diff --git a/enterprise/app/models/concerns/toolable.rb b/enterprise/app/models/concerns/toolable.rb new file mode 100644 index 000000000..24c16c6f4 --- /dev/null +++ b/enterprise/app/models/concerns/toolable.rb @@ -0,0 +1,78 @@ +module Concerns::Toolable + extend ActiveSupport::Concern + + def tool(assistant) + custom_tool_record = self + + tool_class = Class.new(Captain::Tools::HttpTool) do + description custom_tool_record.description + + custom_tool_record.param_schema.each do |param_def| + param param_def['name'].to_sym, + type: param_def['type'], + desc: param_def['description'], + required: param_def.fetch('required', true) + end + end + + tool_class.new(assistant, self) + end + + def build_request_url(params) + return endpoint_url if endpoint_url.blank? || endpoint_url.exclude?('{{') + + render_template(endpoint_url, params) + end + + def build_request_body(params) + return nil if request_template.blank? + + render_template(request_template, params) + end + + def build_auth_headers + return {} if auth_none? + + case auth_type + when 'bearer' + { 'Authorization' => "Bearer #{auth_config['token']}" } + when 'api_key' + if auth_config['location'] == 'header' + { auth_config['name'] => auth_config['key'] } + else + {} + end + else + {} + end + end + + def build_basic_auth_credentials + return nil unless auth_type == 'basic' + + [auth_config['username'], auth_config['password']] + end + + def format_response(raw_response_body) + return raw_response_body if response_template.blank? + + response_data = parse_response_body(raw_response_body) + render_template(response_template, { 'response' => response_data }) + end + + private + + def render_template(template, context) + liquid_template = Liquid::Template.parse(template, error_mode: :strict) + liquid_template.render(context.deep_stringify_keys, registers: {}, strict_variables: true, strict_filters: true) + rescue Liquid::SyntaxError, Liquid::UndefinedVariable, Liquid::UndefinedFilter => e + Rails.logger.error("Liquid template error: #{e.message}") + raise "Template rendering failed: #{e.message}" + end + + def parse_response_body(body) + JSON.parse(body) + rescue JSON::ParserError + body + end +end diff --git a/enterprise/app/models/enterprise/concerns/account.rb b/enterprise/app/models/enterprise/concerns/account.rb index b52ac4b3e..b82d84b0a 100644 --- a/enterprise/app/models/enterprise/concerns/account.rb +++ b/enterprise/app/models/enterprise/concerns/account.rb @@ -10,6 +10,7 @@ module Enterprise::Concerns::Account has_many :captain_assistants, dependent: :destroy_async, class_name: 'Captain::Assistant' has_many :captain_assistant_responses, dependent: :destroy_async, class_name: 'Captain::AssistantResponse' has_many :captain_documents, dependent: :destroy_async, class_name: 'Captain::Document' + has_many :captain_custom_tools, dependent: :destroy_async, class_name: 'Captain::CustomTool' has_many :copilot_threads, dependent: :destroy_async has_many :voice_channels, dependent: :destroy_async, class_name: '::Channel::Voice' diff --git a/enterprise/lib/captain/tools/http_tool.rb b/enterprise/lib/captain/tools/http_tool.rb new file mode 100644 index 000000000..b634de04e --- /dev/null +++ b/enterprise/lib/captain/tools/http_tool.rb @@ -0,0 +1,105 @@ +require 'agents' + +class Captain::Tools::HttpTool < Agents::Tool + def initialize(assistant, custom_tool) + @assistant = assistant + @custom_tool = custom_tool + super() + end + + def active? + @custom_tool.enabled? + end + + def perform(_tool_context, **params) + url = @custom_tool.build_request_url(params) + body = @custom_tool.build_request_body(params) + + response = execute_http_request(url, body) + @custom_tool.format_response(response.body) + rescue StandardError => e + Rails.logger.error("HttpTool execution error for #{@custom_tool.slug}: #{e.class} - #{e.message}") + 'An error occurred while executing the request' + end + + private + + PRIVATE_IP_RANGES = [ + IPAddr.new('127.0.0.0/8'), # IPv4 Loopback + IPAddr.new('10.0.0.0/8'), # IPv4 Private network + IPAddr.new('172.16.0.0/12'), # IPv4 Private network + IPAddr.new('192.168.0.0/16'), # IPv4 Private network + IPAddr.new('169.254.0.0/16'), # IPv4 Link-local + IPAddr.new('::1'), # IPv6 Loopback + IPAddr.new('fc00::/7'), # IPv6 Unique local addresses + IPAddr.new('fe80::/10') # IPv6 Link-local + ].freeze + + # Limit response size to prevent memory exhaustion and match LLM token limits + # 1MB of text ≈ 250K tokens, which exceeds most LLM context windows + MAX_RESPONSE_SIZE = 1.megabyte + + def execute_http_request(url, body) + uri = URI.parse(url) + + # Check if resolved IP is private + check_private_ip!(uri.host) + + http = Net::HTTP.new(uri.host, uri.port) + http.use_ssl = uri.scheme == 'https' + http.read_timeout = 30 + http.open_timeout = 10 + http.max_retries = 0 # Disable redirects + + request = build_http_request(uri, body) + apply_authentication(request) + + response = http.request(request) + + raise "HTTP request failed with status #{response.code}" unless response.is_a?(Net::HTTPSuccess) + + validate_response!(response) + + response + end + + def check_private_ip!(hostname) + ip_address = IPAddr.new(Resolv.getaddress(hostname)) + + raise 'Request blocked: hostname resolves to private IP address' if PRIVATE_IP_RANGES.any? { |range| range.include?(ip_address) } + rescue Resolv::ResolvError, SocketError => e + raise "DNS resolution failed: #{e.message}" + end + + def validate_response!(response) + content_length = response['content-length']&.to_i + if content_length && content_length > MAX_RESPONSE_SIZE + raise "Response size #{content_length} bytes exceeds maximum allowed #{MAX_RESPONSE_SIZE} bytes" + end + + return unless response.body && response.body.bytesize > MAX_RESPONSE_SIZE + + raise "Response body size #{response.body.bytesize} bytes exceeds maximum allowed #{MAX_RESPONSE_SIZE} bytes" + end + + def build_http_request(uri, body) + if @custom_tool.http_method == 'POST' + request = Net::HTTP::Post.new(uri.request_uri) + if body + request.body = body + request['Content-Type'] = 'application/json' + end + else + request = Net::HTTP::Get.new(uri.request_uri) + end + request + end + + def apply_authentication(request) + headers = @custom_tool.build_auth_headers + headers.each { |key, value| request[key] = value } + + credentials = @custom_tool.build_basic_auth_credentials + request.basic_auth(*credentials) if credentials + end +end diff --git a/lib/tasks/captain_chat.rake b/lib/tasks/captain_chat.rake index cfe257196..6dfb37211 100644 --- a/lib/tasks/captain_chat.rake +++ b/lib/tasks/captain_chat.rake @@ -118,7 +118,7 @@ class CaptainChatSession end def show_available_tools - available_tools = Captain::Assistant.available_tool_ids + available_tools = @assistant.available_tool_ids if available_tools.any? puts "🔧 Available Tools (#{available_tools.count}): #{available_tools.join(', ')}" else diff --git a/spec/enterprise/lib/captain/tools/http_tool_spec.rb b/spec/enterprise/lib/captain/tools/http_tool_spec.rb new file mode 100644 index 000000000..d48af2752 --- /dev/null +++ b/spec/enterprise/lib/captain/tools/http_tool_spec.rb @@ -0,0 +1,241 @@ +require 'rails_helper' + +RSpec.describe Captain::Tools::HttpTool, type: :model do + let(:account) { create(:account) } + let(:assistant) { create(:captain_assistant, account: account) } + let(:custom_tool) { create(:captain_custom_tool, account: account) } + let(:tool) { described_class.new(assistant, custom_tool) } + let(:tool_context) { Struct.new(:state).new({}) } + + describe '#active?' do + it 'returns true when custom tool is enabled' do + custom_tool.update!(enabled: true) + + expect(tool.active?).to be true + end + + it 'returns false when custom tool is disabled' do + custom_tool.update!(enabled: false) + + expect(tool.active?).to be false + end + end + + describe '#perform' do + context 'with GET request' do + before do + custom_tool.update!( + http_method: 'GET', + endpoint_url: 'https://example.com/orders/123', + response_template: nil + ) + stub_request(:get, 'https://example.com/orders/123') + .to_return(status: 200, body: '{"status": "success"}') + end + + it 'executes GET request and returns response body' do + result = tool.perform(tool_context) + + expect(result).to eq('{"status": "success"}') + expect(WebMock).to have_requested(:get, 'https://example.com/orders/123') + end + end + + context 'with POST request' do + before do + custom_tool.update!( + http_method: 'POST', + endpoint_url: 'https://example.com/orders', + request_template: '{"order_id": "{{ order_id }}"}', + response_template: nil + ) + stub_request(:post, 'https://example.com/orders') + .with(body: '{"order_id": "123"}', headers: { 'Content-Type' => 'application/json' }) + .to_return(status: 200, body: '{"created": true}') + end + + it 'executes POST request with rendered body' do + result = tool.perform(tool_context, order_id: '123') + + expect(result).to eq('{"created": true}') + expect(WebMock).to have_requested(:post, 'https://example.com/orders') + .with(body: '{"order_id": "123"}') + end + end + + context 'with template variables in URL' do + before do + custom_tool.update!( + endpoint_url: 'https://example.com/orders/{{ order_id }}', + response_template: nil + ) + stub_request(:get, 'https://example.com/orders/456') + .to_return(status: 200, body: '{"order_id": "456"}') + end + + it 'renders URL template with params' do + result = tool.perform(tool_context, order_id: '456') + + expect(result).to eq('{"order_id": "456"}') + expect(WebMock).to have_requested(:get, 'https://example.com/orders/456') + end + end + + context 'with bearer token authentication' do + before do + custom_tool.update!( + auth_type: 'bearer', + auth_config: { 'token' => 'secret_bearer_token' }, + endpoint_url: 'https://example.com/data', + response_template: nil + ) + stub_request(:get, 'https://example.com/data') + .with(headers: { 'Authorization' => 'Bearer secret_bearer_token' }) + .to_return(status: 200, body: '{"authenticated": true}') + end + + it 'adds Authorization header with bearer token' do + result = tool.perform(tool_context) + + expect(result).to eq('{"authenticated": true}') + expect(WebMock).to have_requested(:get, 'https://example.com/data') + .with(headers: { 'Authorization' => 'Bearer secret_bearer_token' }) + end + end + + context 'with basic authentication' do + before do + custom_tool.update!( + auth_type: 'basic', + auth_config: { 'username' => 'user123', 'password' => 'pass456' }, + endpoint_url: 'https://example.com/data', + response_template: nil + ) + stub_request(:get, 'https://example.com/data') + .with(basic_auth: %w[user123 pass456]) + .to_return(status: 200, body: '{"authenticated": true}') + end + + it 'adds basic auth credentials' do + result = tool.perform(tool_context) + + expect(result).to eq('{"authenticated": true}') + expect(WebMock).to have_requested(:get, 'https://example.com/data') + .with(basic_auth: %w[user123 pass456]) + end + end + + context 'with API key authentication' do + before do + custom_tool.update!( + auth_type: 'api_key', + auth_config: { 'key' => 'api_key_123', 'location' => 'header', 'name' => 'X-API-Key' }, + endpoint_url: 'https://example.com/data', + response_template: nil + ) + stub_request(:get, 'https://example.com/data') + .with(headers: { 'X-API-Key' => 'api_key_123' }) + .to_return(status: 200, body: '{"authenticated": true}') + end + + it 'adds API key header' do + result = tool.perform(tool_context) + + expect(result).to eq('{"authenticated": true}') + expect(WebMock).to have_requested(:get, 'https://example.com/data') + .with(headers: { 'X-API-Key' => 'api_key_123' }) + end + end + + context 'with response template' do + before do + custom_tool.update!( + endpoint_url: 'https://example.com/orders/123', + response_template: 'Order status: {{ response.status }}, ID: {{ response.order_id }}' + ) + stub_request(:get, 'https://example.com/orders/123') + .to_return(status: 200, body: '{"status": "shipped", "order_id": "123"}') + end + + it 'formats response using template' do + result = tool.perform(tool_context) + + expect(result).to eq('Order status: shipped, ID: 123') + end + end + + context 'when handling errors' do + it 'returns generic error message on network failure' do + custom_tool.update!(endpoint_url: 'https://example.com/data') + stub_request(:get, 'https://example.com/data').to_raise(SocketError.new('Failed to connect')) + + result = tool.perform(tool_context) + + expect(result).to eq('An error occurred while executing the request') + end + + it 'returns generic error message on timeout' do + custom_tool.update!(endpoint_url: 'https://example.com/data') + stub_request(:get, 'https://example.com/data').to_timeout + + result = tool.perform(tool_context) + + expect(result).to eq('An error occurred while executing the request') + end + + it 'returns generic error message on HTTP 404' do + custom_tool.update!(endpoint_url: 'https://example.com/data') + stub_request(:get, 'https://example.com/data').to_return(status: 404, body: 'Not found') + + result = tool.perform(tool_context) + + expect(result).to eq('An error occurred while executing the request') + end + + it 'returns generic error message on HTTP 500' do + custom_tool.update!(endpoint_url: 'https://example.com/data') + stub_request(:get, 'https://example.com/data').to_return(status: 500, body: 'Server error') + + result = tool.perform(tool_context) + + expect(result).to eq('An error occurred while executing the request') + end + + it 'logs error details' do + custom_tool.update!(endpoint_url: 'https://example.com/data') + stub_request(:get, 'https://example.com/data').to_raise(StandardError.new('Test error')) + + expect(Rails.logger).to receive(:error).with(/HttpTool execution error.*Test error/) + + tool.perform(tool_context) + end + end + + context 'when integrating with Toolable methods' do + it 'correctly integrates URL rendering, body rendering, auth, and response formatting' do + custom_tool.update!( + http_method: 'POST', + endpoint_url: 'https://example.com/users/{{ user_id }}/orders', + request_template: '{"product": "{{ product }}", "quantity": {{ quantity }}}', + auth_type: 'bearer', + auth_config: { 'token' => 'integration_token' }, + response_template: 'Created order #{{ response.order_number }} for {{ response.product }}' + ) + + stub_request(:post, 'https://example.com/users/42/orders') + .with( + body: '{"product": "Widget", "quantity": 5}', + headers: { + 'Authorization' => 'Bearer integration_token', + 'Content-Type' => 'application/json' + } + ) + .to_return(status: 200, body: '{"order_number": "ORD-789", "product": "Widget"}') + + result = tool.perform(tool_context, user_id: '42', product: 'Widget', quantity: 5) + + expect(result).to eq('Created order #ORD-789 for Widget') + end + end + end +end diff --git a/spec/enterprise/models/captain/custom_tool_spec.rb b/spec/enterprise/models/captain/custom_tool_spec.rb new file mode 100644 index 000000000..c7c0451b1 --- /dev/null +++ b/spec/enterprise/models/captain/custom_tool_spec.rb @@ -0,0 +1,386 @@ +require 'rails_helper' + +RSpec.describe Captain::CustomTool, type: :model do + describe 'associations' do + it { is_expected.to belong_to(:account) } + end + + describe 'validations' do + it { is_expected.to validate_presence_of(:title) } + it { is_expected.to validate_presence_of(:endpoint_url) } + it { is_expected.to define_enum_for(:http_method).with_values('GET' => 'GET', 'POST' => 'POST').backed_by_column_of_type(:string) } + + it { + expect(subject).to define_enum_for(:auth_type).with_values('none' => 'none', 'bearer' => 'bearer', 'basic' => 'basic', + 'api_key' => 'api_key').backed_by_column_of_type(:string).with_prefix(:auth) + } + + describe 'slug uniqueness' do + let(:account) { create(:account) } + + it 'validates uniqueness of slug scoped to account' do + create(:captain_custom_tool, account: account, slug: 'custom_test-tool') + duplicate = build(:captain_custom_tool, account: account, slug: 'custom_test-tool') + + expect(duplicate).not_to be_valid + expect(duplicate.errors[:slug]).to include('has already been taken') + end + + it 'allows same slug across different accounts' do + account2 = create(:account) + create(:captain_custom_tool, account: account, slug: 'custom_test-tool') + different_account_tool = build(:captain_custom_tool, account: account2, slug: 'custom_test-tool') + + expect(different_account_tool).to be_valid + end + end + + describe 'param_schema validation' do + let(:account) { create(:account) } + + it 'is valid with proper param_schema' do + tool = build(:captain_custom_tool, account: account, param_schema: [ + { 'name' => 'order_id', 'type' => 'string', 'description' => 'Order ID', 'required' => true } + ]) + + expect(tool).to be_valid + end + + it 'is valid with empty param_schema' do + tool = build(:captain_custom_tool, account: account, param_schema: []) + + expect(tool).to be_valid + end + + it 'is invalid when param_schema is missing name' do + tool = build(:captain_custom_tool, account: account, param_schema: [ + { 'type' => 'string', 'description' => 'Order ID' } + ]) + + expect(tool).not_to be_valid + end + + it 'is invalid when param_schema is missing type' do + tool = build(:captain_custom_tool, account: account, param_schema: [ + { 'name' => 'order_id', 'description' => 'Order ID' } + ]) + + expect(tool).not_to be_valid + end + + it 'is invalid when param_schema is missing description' do + tool = build(:captain_custom_tool, account: account, param_schema: [ + { 'name' => 'order_id', 'type' => 'string' } + ]) + + expect(tool).not_to be_valid + end + + it 'is invalid with additional properties in param_schema' do + tool = build(:captain_custom_tool, account: account, param_schema: [ + { 'name' => 'order_id', 'type' => 'string', 'description' => 'Order ID', 'extra_field' => 'value' } + ]) + + expect(tool).not_to be_valid + end + + it 'is valid when required field is omitted (defaults to optional param)' do + tool = build(:captain_custom_tool, account: account, param_schema: [ + { 'name' => 'order_id', 'type' => 'string', 'description' => 'Order ID' } + ]) + + expect(tool).to be_valid + end + end + end + + describe 'scopes' do + let(:account) { create(:account) } + + describe '.enabled' do + it 'returns only enabled custom tools' do + enabled_tool = create(:captain_custom_tool, account: account, enabled: true) + disabled_tool = create(:captain_custom_tool, account: account, enabled: false) + + expect(described_class.enabled).to include(enabled_tool) + expect(described_class.enabled).not_to include(disabled_tool) + end + end + end + + describe 'slug generation' do + let(:account) { create(:account) } + + it 'generates slug from title on creation' do + tool = create(:captain_custom_tool, account: account, title: 'Fetch Order Status') + + expect(tool.slug).to eq('custom_fetch-order-status') + end + + it 'adds custom_ prefix to generated slug' do + tool = create(:captain_custom_tool, account: account, title: 'My Tool') + + expect(tool.slug).to start_with('custom_') + end + + it 'does not override manually set slug' do + tool = create(:captain_custom_tool, account: account, title: 'Test Tool', slug: 'custom_manual-slug') + + expect(tool.slug).to eq('custom_manual-slug') + end + + it 'handles slug collisions by appending counter' do + create(:captain_custom_tool, account: account, title: 'Test Tool', slug: 'custom_test-tool') + tool2 = create(:captain_custom_tool, account: account, title: 'Test Tool') + + expect(tool2.slug).to eq('custom_test-tool-1') + end + + it 'handles multiple slug collisions' do + create(:captain_custom_tool, account: account, title: 'Test Tool', slug: 'custom_test-tool') + create(:captain_custom_tool, account: account, title: 'Test Tool', slug: 'custom_test-tool-1') + tool3 = create(:captain_custom_tool, account: account, title: 'Test Tool') + + expect(tool3.slug).to eq('custom_test-tool-2') + end + + it 'generates slug with UUID when title is blank' do + tool = build(:captain_custom_tool, account: account, title: nil) + tool.valid? + + expect(tool.slug).to match(/^custom_[0-9a-f-]+$/) + end + + it 'parameterizes title correctly' do + tool = create(:captain_custom_tool, account: account, title: 'Fetch Order Status & Details!') + + expect(tool.slug).to eq('custom_fetch-order-status-details') + end + end + + describe 'factory' do + it 'creates a valid custom tool with default attributes' do + tool = create(:captain_custom_tool) + + expect(tool).to be_valid + expect(tool.title).to be_present + expect(tool.slug).to be_present + expect(tool.endpoint_url).to be_present + expect(tool.http_method).to eq('GET') + expect(tool.auth_type).to eq('none') + expect(tool.enabled).to be true + end + + it 'creates valid tool with POST trait' do + tool = create(:captain_custom_tool, :with_post) + + expect(tool.http_method).to eq('POST') + expect(tool.request_template).to be_present + end + + it 'creates valid tool with bearer auth trait' do + tool = create(:captain_custom_tool, :with_bearer_auth) + + expect(tool.auth_type).to eq('bearer') + expect(tool.auth_config['token']).to eq('test_bearer_token_123') + end + + it 'creates valid tool with basic auth trait' do + tool = create(:captain_custom_tool, :with_basic_auth) + + expect(tool.auth_type).to eq('basic') + expect(tool.auth_config['username']).to eq('test_user') + expect(tool.auth_config['password']).to eq('test_pass') + end + + it 'creates valid tool with api key trait' do + tool = create(:captain_custom_tool, :with_api_key) + + expect(tool.auth_type).to eq('api_key') + expect(tool.auth_config['key']).to eq('test_api_key') + expect(tool.auth_config['location']).to eq('header') + end + end + + describe 'Toolable concern' do + let(:account) { create(:account) } + + describe '#build_request_url' do + it 'returns static URL when no template variables present' do + tool = create(:captain_custom_tool, account: account, endpoint_url: 'https://api.example.com/orders') + + expect(tool.build_request_url({})).to eq('https://api.example.com/orders') + end + + it 'renders URL template with params' do + tool = create(:captain_custom_tool, account: account, endpoint_url: 'https://api.example.com/orders/{{ order_id }}') + + expect(tool.build_request_url({ order_id: '12345' })).to eq('https://api.example.com/orders/12345') + end + + it 'handles multiple template variables' do + tool = create(:captain_custom_tool, account: account, + endpoint_url: 'https://api.example.com/{{ resource }}/{{ id }}?details={{ show_details }}') + + result = tool.build_request_url({ resource: 'orders', id: '123', show_details: 'true' }) + expect(result).to eq('https://api.example.com/orders/123?details=true') + end + end + + describe '#build_request_body' do + it 'returns nil when request_template is blank' do + tool = create(:captain_custom_tool, account: account, request_template: nil) + + expect(tool.build_request_body({})).to be_nil + end + + it 'renders request body template with params' do + tool = create(:captain_custom_tool, account: account, + request_template: '{ "order_id": "{{ order_id }}", "source": "chatwoot" }') + + result = tool.build_request_body({ order_id: '12345' }) + expect(result).to eq('{ "order_id": "12345", "source": "chatwoot" }') + end + end + + describe '#build_auth_headers' do + it 'returns empty hash for none auth type' do + tool = create(:captain_custom_tool, account: account, auth_type: 'none') + + expect(tool.build_auth_headers).to eq({}) + end + + it 'returns bearer token header' do + tool = create(:captain_custom_tool, :with_bearer_auth, account: account) + + expect(tool.build_auth_headers).to eq({ 'Authorization' => 'Bearer test_bearer_token_123' }) + end + + it 'returns API key header when location is header' do + tool = create(:captain_custom_tool, :with_api_key, account: account) + + expect(tool.build_auth_headers).to eq({ 'X-API-Key' => 'test_api_key' }) + end + + it 'returns empty hash for API key when location is not header' do + tool = create(:captain_custom_tool, account: account, auth_type: 'api_key', + auth_config: { key: 'test_key', location: 'query', name: 'api_key' }) + + expect(tool.build_auth_headers).to eq({}) + end + + it 'returns empty hash for basic auth' do + tool = create(:captain_custom_tool, :with_basic_auth, account: account) + + expect(tool.build_auth_headers).to eq({}) + end + end + + describe '#build_basic_auth_credentials' do + it 'returns nil for non-basic auth types' do + tool = create(:captain_custom_tool, account: account, auth_type: 'none') + + expect(tool.build_basic_auth_credentials).to be_nil + end + + it 'returns username and password array for basic auth' do + tool = create(:captain_custom_tool, :with_basic_auth, account: account) + + expect(tool.build_basic_auth_credentials).to eq(%w[test_user test_pass]) + end + end + + describe '#format_response' do + it 'returns raw response when no response_template' do + tool = create(:captain_custom_tool, account: account, response_template: nil) + + expect(tool.format_response('raw response')).to eq('raw response') + end + + it 'renders response template with JSON response' do + tool = create(:captain_custom_tool, account: account, + response_template: 'Order status: {{ response.status }}') + raw_response = '{"status": "shipped", "tracking": "123ABC"}' + + result = tool.format_response(raw_response) + expect(result).to eq('Order status: shipped') + end + + it 'handles response template with multiple fields' do + tool = create(:captain_custom_tool, account: account, + response_template: 'Order {{ response.id }} is {{ response.status }}. Tracking: {{ response.tracking }}') + raw_response = '{"id": "12345", "status": "delivered", "tracking": "ABC123"}' + + result = tool.format_response(raw_response) + expect(result).to eq('Order 12345 is delivered. Tracking: ABC123') + end + + it 'handles non-JSON response' do + tool = create(:captain_custom_tool, account: account, + response_template: 'Response: {{ response }}') + raw_response = 'plain text response' + + result = tool.format_response(raw_response) + expect(result).to eq('Response: plain text response') + end + end + + describe '#to_tool_metadata' do + it 'returns tool metadata hash with custom flag' do + tool = create(:captain_custom_tool, account: account, + slug: 'custom_test-tool', + title: 'Test Tool', + description: 'A test tool') + + metadata = tool.to_tool_metadata + expect(metadata).to eq({ + id: 'custom_test-tool', + title: 'Test Tool', + description: 'A test tool', + custom: true + }) + end + end + + describe '#tool' do + let(:assistant) { create(:captain_assistant, account: account) } + + it 'returns HttpTool instance' do + tool = create(:captain_custom_tool, account: account) + + tool_instance = tool.tool(assistant) + expect(tool_instance).to be_a(Captain::Tools::HttpTool) + end + + it 'sets description on the tool class' do + tool = create(:captain_custom_tool, account: account, description: 'Fetches order data') + + tool_instance = tool.tool(assistant) + expect(tool_instance.description).to eq('Fetches order data') + end + + it 'sets parameters on the tool class' do + tool = create(:captain_custom_tool, :with_params, account: account) + + tool_instance = tool.tool(assistant) + params = tool_instance.parameters + + expect(params.keys).to contain_exactly(:order_id, :include_details) + expect(params[:order_id].name).to eq(:order_id) + expect(params[:order_id].type).to eq('string') + expect(params[:order_id].description).to eq('The order ID') + expect(params[:order_id].required).to be true + + expect(params[:include_details].name).to eq(:include_details) + expect(params[:include_details].required).to be false + end + + it 'works with empty param_schema' do + tool = create(:captain_custom_tool, account: account, param_schema: []) + + tool_instance = tool.tool(assistant) + expect(tool_instance.parameters).to be_empty + end + end + end +end diff --git a/spec/enterprise/models/captain/scenario_spec.rb b/spec/enterprise/models/captain/scenario_spec.rb index 7a39559c3..45009a3b0 100644 --- a/spec/enterprise/models/captain/scenario_spec.rb +++ b/spec/enterprise/models/captain/scenario_spec.rb @@ -48,9 +48,9 @@ RSpec.describe Captain::Scenario, type: :model do before do # Mock available tools - allow(described_class).to receive(:available_tool_ids).and_return(%w[ - add_contact_note add_private_note update_priority - ]) + allow(described_class).to receive(:built_in_tool_ids).and_return(%w[ + add_contact_note add_private_note update_priority + ]) end describe 'validate_instruction_tools' do @@ -102,6 +102,49 @@ RSpec.describe Captain::Scenario, type: :model do expect(scenario).not_to be_valid expect(scenario.errors[:instruction]).not_to include(/contains invalid tools/) end + + it 'is valid with custom tool references' do + create(:captain_custom_tool, account: account, slug: 'custom_fetch-order') + scenario = build(:captain_scenario, + assistant: assistant, + account: account, + instruction: 'Use [@Fetch Order](tool://custom_fetch-order) to get order details') + + expect(scenario).to be_valid + end + + it 'is invalid with custom tool from different account' do + other_account = create(:account) + create(:captain_custom_tool, account: other_account, slug: 'custom_fetch-order') + scenario = build(:captain_scenario, + assistant: assistant, + account: account, + instruction: 'Use [@Fetch Order](tool://custom_fetch-order) to get order details') + + expect(scenario).not_to be_valid + expect(scenario.errors[:instruction]).to include('contains invalid tools: custom_fetch-order') + end + + it 'is invalid with disabled custom tool' do + create(:captain_custom_tool, account: account, slug: 'custom_fetch-order', enabled: false) + scenario = build(:captain_scenario, + assistant: assistant, + account: account, + instruction: 'Use [@Fetch Order](tool://custom_fetch-order) to get order details') + + expect(scenario).not_to be_valid + expect(scenario.errors[:instruction]).to include('contains invalid tools: custom_fetch-order') + end + + it 'is valid with mixed static and custom tool references' do + create(:captain_custom_tool, account: account, slug: 'custom_fetch-order') + scenario = build(:captain_scenario, + assistant: assistant, + account: account, + instruction: 'Use [@Add Note](tool://add_contact_note) and [@Fetch Order](tool://custom_fetch-order)') + + expect(scenario).to be_valid + end end describe 'resolve_tool_references' do @@ -146,6 +189,140 @@ RSpec.describe Captain::Scenario, type: :model do end end + describe 'custom tool integration' do + let(:account) { create(:account) } + let(:assistant) { create(:captain_assistant, account: account) } + + before do + allow(described_class).to receive(:built_in_tool_ids).and_return(%w[add_contact_note]) + allow(described_class).to receive(:built_in_agent_tools).and_return([ + { id: 'add_contact_note', title: 'Add Contact Note', + description: 'Add a note' } + ]) + end + + describe '#resolved_tools' do + it 'includes custom tool metadata' do + create(:captain_custom_tool, account: account, slug: 'custom_fetch-order', + title: 'Fetch Order', description: 'Gets order details') + scenario = create(:captain_scenario, + assistant: assistant, + account: account, + instruction: 'Use [@Fetch Order](tool://custom_fetch-order)') + + resolved = scenario.send(:resolved_tools) + expect(resolved.length).to eq(1) + expect(resolved.first[:id]).to eq('custom_fetch-order') + expect(resolved.first[:title]).to eq('Fetch Order') + expect(resolved.first[:description]).to eq('Gets order details') + end + + it 'includes both static and custom tools' do + create(:captain_custom_tool, account: account, slug: 'custom_fetch-order') + scenario = create(:captain_scenario, + assistant: assistant, + account: account, + instruction: 'Use [@Add Note](tool://add_contact_note) and [@Fetch Order](tool://custom_fetch-order)') + + resolved = scenario.send(:resolved_tools) + expect(resolved.length).to eq(2) + expect(resolved.map { |t| t[:id] }).to contain_exactly('add_contact_note', 'custom_fetch-order') + end + + it 'excludes disabled custom tools' do + custom_tool = create(:captain_custom_tool, account: account, slug: 'custom_fetch-order', enabled: true) + scenario = create(:captain_scenario, + assistant: assistant, + account: account, + instruction: 'Use [@Fetch Order](tool://custom_fetch-order)') + + custom_tool.update!(enabled: false) + + resolved = scenario.send(:resolved_tools) + expect(resolved).to be_empty + end + end + + describe '#resolve_tool_instance' do + it 'returns HttpTool instance for custom tools' do + create(:captain_custom_tool, account: account, slug: 'custom_fetch-order') + scenario = create(:captain_scenario, assistant: assistant, account: account) + + tool_metadata = { id: 'custom_fetch-order', custom: true } + tool_instance = scenario.send(:resolve_tool_instance, tool_metadata) + expect(tool_instance).to be_a(Captain::Tools::HttpTool) + end + + it 'returns nil for disabled custom tools' do + create(:captain_custom_tool, account: account, slug: 'custom_fetch-order', enabled: false) + scenario = create(:captain_scenario, assistant: assistant, account: account) + + tool_metadata = { id: 'custom_fetch-order', custom: true } + tool_instance = scenario.send(:resolve_tool_instance, tool_metadata) + expect(tool_instance).to be_nil + end + + it 'returns static tool instance for non-custom tools' do + scenario = create(:captain_scenario, assistant: assistant, account: account) + allow(described_class).to receive(:resolve_tool_class).with('add_contact_note').and_return( + Class.new do + def initialize(_assistant); end + end + ) + + tool_metadata = { id: 'add_contact_note' } + tool_instance = scenario.send(:resolve_tool_instance, tool_metadata) + expect(tool_instance).not_to be_nil + expect(tool_instance).not_to be_a(Captain::Tools::HttpTool) + end + end + + describe '#agent_tools' do + it 'returns array of tool instances including custom tools' do + create(:captain_custom_tool, account: account, slug: 'custom_fetch-order') + scenario = create(:captain_scenario, + assistant: assistant, + account: account, + instruction: 'Use [@Fetch Order](tool://custom_fetch-order)') + + tools = scenario.send(:agent_tools) + expect(tools.length).to eq(1) + expect(tools.first).to be_a(Captain::Tools::HttpTool) + end + + it 'excludes disabled custom tools from execution' do + custom_tool = create(:captain_custom_tool, account: account, slug: 'custom_fetch-order', enabled: true) + scenario = create(:captain_scenario, + assistant: assistant, + account: account, + instruction: 'Use [@Fetch Order](tool://custom_fetch-order)') + + custom_tool.update!(enabled: false) + + tools = scenario.send(:agent_tools) + expect(tools).to be_empty + end + + it 'returns mixed static and custom tool instances' do + create(:captain_custom_tool, account: account, slug: 'custom_fetch-order') + scenario = create(:captain_scenario, + assistant: assistant, + account: account, + instruction: 'Use [@Add Note](tool://add_contact_note) and [@Fetch Order](tool://custom_fetch-order)') + + allow(described_class).to receive(:resolve_tool_class).with('add_contact_note').and_return( + Class.new do + def initialize(_assistant); end + end + ) + + tools = scenario.send(:agent_tools) + expect(tools.length).to eq(2) + expect(tools.last).to be_a(Captain::Tools::HttpTool) + end + end + end + describe 'factory' do it 'creates a valid scenario with associations' do account = create(:account) diff --git a/spec/enterprise/models/concerns/captain_tools_helpers_spec.rb b/spec/enterprise/models/concerns/captain_tools_helpers_spec.rb index afe482385..7e36e9006 100644 --- a/spec/enterprise/models/concerns/captain_tools_helpers_spec.rb +++ b/spec/enterprise/models/concerns/captain_tools_helpers_spec.rb @@ -42,58 +42,6 @@ RSpec.describe Concerns::CaptainToolsHelpers, type: :concern do end end - describe '.available_agent_tools' do - before do - # Mock the YAML file loading - allow(YAML).to receive(:load_file).and_return([ - { - 'id' => 'add_contact_note', - 'title' => 'Add Contact Note', - 'description' => 'Add a note to a contact', - 'icon' => 'note-add' - }, - { - 'id' => 'invalid_tool', - 'title' => 'Invalid Tool', - 'description' => 'This tool does not exist', - 'icon' => 'invalid' - } - ]) - - # Mock class resolution - only add_contact_note exists - allow(test_class).to receive(:resolve_tool_class) do |tool_id| - case tool_id - when 'add_contact_note' - Captain::Tools::AddContactNoteTool - end - end - end - - it 'returns only resolvable tools' do - tools = test_class.available_agent_tools - - expect(tools.length).to eq(1) - expect(tools.first).to eq({ - id: 'add_contact_note', - title: 'Add Contact Note', - description: 'Add a note to a contact', - icon: 'note-add' - }) - end - - it 'logs warnings for unresolvable tools' do - expect(Rails.logger).to receive(:warn).with('Tool class not found for ID: invalid_tool') - - test_class.available_agent_tools - end - - it 'memoizes the result' do - expect(YAML).to receive(:load_file).once.and_return([]) - - 2.times { test_class.available_agent_tools } - end - end - describe '.resolve_tool_class' do it 'resolves valid tool classes' do # Mock the constantize to return a class @@ -116,28 +64,6 @@ RSpec.describe Concerns::CaptainToolsHelpers, type: :concern do end end - describe '.available_tool_ids' do - before do - allow(test_class).to receive(:available_agent_tools).and_return([ - { id: 'add_contact_note', title: 'Add Contact Note', description: '...', - icon: 'note' }, - { id: 'update_priority', title: 'Update Priority', description: '...', - icon: 'priority' } - ]) - end - - it 'returns array of tool IDs' do - ids = test_class.available_tool_ids - expect(ids).to eq(%w[add_contact_note update_priority]) - end - - it 'memoizes the result' do - expect(test_class).to receive(:available_agent_tools).once.and_return([]) - - 2.times { test_class.available_tool_ids } - end - end - describe '#extract_tool_ids_from_text' do it 'extracts tool IDs from text' do text = 'First [@Add Contact Note](tool://add_contact_note) then [@Update Priority](tool://update_priority)' diff --git a/spec/factories/captain/custom_tool.rb b/spec/factories/captain/custom_tool.rb new file mode 100644 index 000000000..2bfcbf360 --- /dev/null +++ b/spec/factories/captain/custom_tool.rb @@ -0,0 +1,51 @@ +FactoryBot.define do + factory :captain_custom_tool, class: 'Captain::CustomTool' do + sequence(:title) { |n| "Custom Tool #{n}" } + description { 'A custom HTTP tool for external API integration' } + endpoint_url { 'https://api.example.com/endpoint' } + http_method { 'GET' } + auth_type { 'none' } + auth_config { {} } + param_schema { [] } + enabled { true } + association :account + + trait :with_post do + http_method { 'POST' } + request_template { '{ "key": "{{ value }}" }' } + end + + trait :with_bearer_auth do + auth_type { 'bearer' } + auth_config { { token: 'test_bearer_token_123' } } + end + + trait :with_basic_auth do + auth_type { 'basic' } + auth_config { { username: 'test_user', password: 'test_pass' } } + end + + trait :with_api_key do + auth_type { 'api_key' } + auth_config { { key: 'test_api_key', location: 'header', name: 'X-API-Key' } } + end + + trait :with_templates do + request_template { '{ "order_id": "{{ order_id }}", "source": "chatwoot" }' } + response_template { 'Order status: {{ response.status }}' } + end + + trait :with_params do + param_schema do + [ + { 'name' => 'order_id', 'type' => 'string', 'description' => 'The order ID', 'required' => true }, + { 'name' => 'include_details', 'type' => 'boolean', 'description' => 'Include order details', 'required' => false } + ] + end + end + + trait :disabled do + enabled { false } + end + end +end From 9fb0dfa4a7b1f5bc962290589113b7b8f982829c Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 6 Oct 2025 21:35:54 +0530 Subject: [PATCH 08/26] feat: Add UI for custom tools (#12585) ### Tools list CleanShot 2025-10-03 at 20 42 41@2x ### Tools form CleanShot 2025-10-03 at 20 43
05@2x ## Response CleanShot 2025-10-03 at 20 45 56@2x --------- Co-authored-by: Pranav Co-authored-by: Pranav --- .../dashboard/api/captain/customTools.js | 36 +++ .../captain/pageComponents/DeleteDialog.vue | 8 +- .../pageComponents/customTool/AuthConfig.vue | 73 +++++ .../customTool/CreateCustomToolDialog.vue | 87 ++++++ .../customTool/CustomToolCard.vue | 125 ++++++++ .../customTool/CustomToolForm.vue | 271 +++++++++++++++++ .../pageComponents/customTool/ParamRow.vue | 113 +++++++ .../emptyStates/CustomToolsPageEmptyState.vue | 29 ++ .../components-next/sidebar/Sidebar.vue | 5 + .../i18n/locale/en/integrations.json | 109 +++++++ .../dashboard/i18n/locale/en/settings.json | 1 + .../dashboard/captain/captain.routes.js | 14 + .../routes/dashboard/captain/tools/Index.vue | 138 +++++++++ .../dashboard/store/captain/customTools.js | 35 +++ .../dashboard/store/captain/tools.js | 2 +- app/javascript/dashboard/store/index.js | 2 + config/locales/en.yml | 2 + config/routes.rb | 1 + .../captain/custom_tools_controller.rb | 49 +++ enterprise/app/models/captain/custom_tool.rb | 19 +- enterprise/app/models/concerns/toolable.rb | 13 + .../policies/captain/custom_tool_policy.rb | 21 ++ .../captain/custom_tools/create.json.jbuilder | 1 + .../captain/custom_tools/index.json.jbuilder | 10 + .../captain/custom_tools/show.json.jbuilder | 1 + .../captain/custom_tools/update.json.jbuilder | 1 + .../models/captain/_custom_tool.json.jbuilder | 15 + .../captain/custom_tools_controller_spec.rb | 281 ++++++++++++++++++ .../models/captain/custom_tool_spec.rb | 36 +-- 29 files changed, 1474 insertions(+), 24 deletions(-) create mode 100644 app/javascript/dashboard/api/captain/customTools.js create mode 100644 app/javascript/dashboard/components-next/captain/pageComponents/customTool/AuthConfig.vue create mode 100644 app/javascript/dashboard/components-next/captain/pageComponents/customTool/CreateCustomToolDialog.vue create mode 100644 app/javascript/dashboard/components-next/captain/pageComponents/customTool/CustomToolCard.vue create mode 100644 app/javascript/dashboard/components-next/captain/pageComponents/customTool/CustomToolForm.vue create mode 100644 app/javascript/dashboard/components-next/captain/pageComponents/customTool/ParamRow.vue create mode 100644 app/javascript/dashboard/components-next/captain/pageComponents/emptyStates/CustomToolsPageEmptyState.vue create mode 100644 app/javascript/dashboard/routes/dashboard/captain/tools/Index.vue create mode 100644 app/javascript/dashboard/store/captain/customTools.js create mode 100644 enterprise/app/controllers/api/v1/accounts/captain/custom_tools_controller.rb create mode 100644 enterprise/app/policies/captain/custom_tool_policy.rb create mode 100644 enterprise/app/views/api/v1/accounts/captain/custom_tools/create.json.jbuilder create mode 100644 enterprise/app/views/api/v1/accounts/captain/custom_tools/index.json.jbuilder create mode 100644 enterprise/app/views/api/v1/accounts/captain/custom_tools/show.json.jbuilder create mode 100644 enterprise/app/views/api/v1/accounts/captain/custom_tools/update.json.jbuilder create mode 100644 enterprise/app/views/api/v1/models/captain/_custom_tool.json.jbuilder create mode 100644 spec/enterprise/controllers/api/v1/accounts/captain/custom_tools_controller_spec.rb diff --git a/app/javascript/dashboard/api/captain/customTools.js b/app/javascript/dashboard/api/captain/customTools.js new file mode 100644 index 000000000..d0818d941 --- /dev/null +++ b/app/javascript/dashboard/api/captain/customTools.js @@ -0,0 +1,36 @@ +/* global axios */ +import ApiClient from '../ApiClient'; + +class CaptainCustomTools extends ApiClient { + constructor() { + super('captain/custom_tools', { accountScoped: true }); + } + + get({ page = 1, searchKey } = {}) { + return axios.get(this.url, { + params: { page, searchKey }, + }); + } + + show(id) { + return axios.get(`${this.url}/${id}`); + } + + create(data = {}) { + return axios.post(this.url, { + custom_tool: data, + }); + } + + update(id, data = {}) { + return axios.put(`${this.url}/${id}`, { + custom_tool: data, + }); + } + + delete(id) { + return axios.delete(`${this.url}/${id}`); + } +} + +export default new CaptainCustomTools(); diff --git a/app/javascript/dashboard/components-next/captain/pageComponents/DeleteDialog.vue b/app/javascript/dashboard/components-next/captain/pageComponents/DeleteDialog.vue index 31e18394f..8d67344e1 100644 --- a/app/javascript/dashboard/components-next/captain/pageComponents/DeleteDialog.vue +++ b/app/javascript/dashboard/components-next/captain/pageComponents/DeleteDialog.vue @@ -10,6 +10,10 @@ const props = defineProps({ type: String, required: true, }, + translationKey: { + type: String, + required: true, + }, entity: { type: Object, required: true, @@ -25,7 +29,9 @@ const emit = defineEmits(['deleteSuccess']); const { t } = useI18n(); const store = useStore(); const deleteDialogRef = ref(null); -const i18nKey = computed(() => props.type.toUpperCase()); +const i18nKey = computed(() => { + return props.translationKey || props.type.toUpperCase(); +}); const deleteEntity = async payload => { if (!payload) return; diff --git a/app/javascript/dashboard/components-next/captain/pageComponents/customTool/AuthConfig.vue b/app/javascript/dashboard/components-next/captain/pageComponents/customTool/AuthConfig.vue new file mode 100644 index 000000000..208a94dba --- /dev/null +++ b/app/javascript/dashboard/components-next/captain/pageComponents/customTool/AuthConfig.vue @@ -0,0 +1,73 @@ + + + diff --git a/app/javascript/dashboard/components-next/captain/pageComponents/customTool/CreateCustomToolDialog.vue b/app/javascript/dashboard/components-next/captain/pageComponents/customTool/CreateCustomToolDialog.vue new file mode 100644 index 000000000..0745c6546 --- /dev/null +++ b/app/javascript/dashboard/components-next/captain/pageComponents/customTool/CreateCustomToolDialog.vue @@ -0,0 +1,87 @@ + + +