From 2eaf05df27af1f846cb4539a6df2c08d251bc9c8 Mon Sep 17 00:00:00 2001 From: devlikepro Date: Mon, 8 Sep 2025 13:56:36 +0700 Subject: [PATCH] [core] Update i18n --- nest-cli.json | 3 +- .../app_sdk/services/AppsEnabledService.ts | 3 + src/apps/app_sdk/services/IAppService.ts | 2 + .../api/chatwoot.locales.controller.ts | 16 +- .../client/ContactConversationService.ts | 2 +- src/apps/chatwoot/consumers/inbox/base.ts | 2 +- src/apps/chatwoot/consumers/inbox/commands.ts | 3 +- .../consumers/inbox/message_created.ts | 4 +- .../consumers/inbox/message_deleted.ts | 4 +- .../consumers/inbox/message_updated.ts | 4 +- src/apps/chatwoot/consumers/scheduled/base.ts | 2 +- .../consumers/scheduled/check.version.ts | 8 +- .../consumers/scheduled/message.cleanup.ts | 4 +- src/apps/chatwoot/consumers/waha/base.ts | 5 +- .../chatwoot/consumers/waha/message.edited.ts | 2 +- .../consumers/waha/message.reaction.ts | 2 +- .../consumers/waha/message.revoked.ts | 3 +- .../chatwoot/consumers/waha/session.status.ts | 3 +- .../chatwoot/contacts/InboxContactInfo.ts | 3 +- .../chatwoot/contacts/WhatsAppContactInfo.ts | 3 +- src/apps/chatwoot/di/DIContainer.ts | 10 +- src/apps/chatwoot/dto/config.dto.ts | 6 +- .../chatwoot/error/ChatWootErrorReporter.ts | 7 +- src/apps/chatwoot/i18n/i18n.ts | 43 ++++ src/apps/chatwoot/i18n/index.ts | 10 + src/apps/chatwoot/i18n/loader.ts | 33 +++ src/apps/chatwoot/i18n/locale.ts | 30 +++ .../chatwoot/i18n/{ => locales}/ar-AE.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/bn-BD.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/de-DE.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/en-US.yaml | 74 +++---- .../chatwoot/i18n/{ => locales}/es-ES.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/fa-IR.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/fr-FR.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/he-IL.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/hi-IN.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/id-ID.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/pa-PK.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/pt-BR.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/ru-RU.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/tr-TR.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/uk-UA.yaml | 71 +++--- .../chatwoot/i18n/{ => locales}/ur-PK.yaml | 73 +++---- .../chatwoot/i18n/{ => locales}/zh-CN.yaml | 73 +++---- src/apps/chatwoot/i18n/templates.ts | 151 +++++++++++++ src/apps/chatwoot/locale.ts | 205 ------------------ .../chatwoot/services/ChatWootAppService.ts | 15 +- 47 files changed, 924 insertions(+), 878 deletions(-) create mode 100644 src/apps/chatwoot/i18n/i18n.ts create mode 100644 src/apps/chatwoot/i18n/index.ts create mode 100644 src/apps/chatwoot/i18n/loader.ts create mode 100644 src/apps/chatwoot/i18n/locale.ts rename src/apps/chatwoot/i18n/{ => locales}/ar-AE.yaml (82%) rename src/apps/chatwoot/i18n/{ => locales}/bn-BD.yaml (87%) rename src/apps/chatwoot/i18n/{ => locales}/de-DE.yaml (81%) rename src/apps/chatwoot/i18n/{ => locales}/en-US.yaml (77%) rename src/apps/chatwoot/i18n/{ => locales}/es-ES.yaml (80%) rename src/apps/chatwoot/i18n/{ => locales}/fa-IR.yaml (83%) rename src/apps/chatwoot/i18n/{ => locales}/fr-FR.yaml (80%) rename src/apps/chatwoot/i18n/{ => locales}/he-IL.yaml (81%) rename src/apps/chatwoot/i18n/{ => locales}/hi-IN.yaml (86%) rename src/apps/chatwoot/i18n/{ => locales}/id-ID.yaml (78%) rename src/apps/chatwoot/i18n/{ => locales}/pa-PK.yaml (86%) rename src/apps/chatwoot/i18n/{ => locales}/pt-BR.yaml (81%) rename src/apps/chatwoot/i18n/{ => locales}/ru-RU.yaml (83%) rename src/apps/chatwoot/i18n/{ => locales}/tr-TR.yaml (79%) rename src/apps/chatwoot/i18n/{ => locales}/uk-UA.yaml (83%) rename src/apps/chatwoot/i18n/{ => locales}/ur-PK.yaml (83%) rename src/apps/chatwoot/i18n/{ => locales}/zh-CN.yaml (76%) create mode 100644 src/apps/chatwoot/i18n/templates.ts delete mode 100644 src/apps/chatwoot/locale.ts diff --git a/nest-cli.json b/nest-cli.json index f28c43e8..31ae8c3c 100644 --- a/nest-cli.json +++ b/nest-cli.json @@ -7,7 +7,8 @@ "dashboard/**", "core/engines/webjs/*", "plus/engines/webjs/*", - "apps/chatwoot/i18n/*.yaml" + "apps/chatwoot/i18n/locales/*.yaml", + "apps/chatwoot/i18n/locales/*.yml" ], "watchAssets": true } diff --git a/src/apps/app_sdk/services/AppsEnabledService.ts b/src/apps/app_sdk/services/AppsEnabledService.ts index 03cefb96..58c57835 100644 --- a/src/apps/app_sdk/services/AppsEnabledService.ts +++ b/src/apps/app_sdk/services/AppsEnabledService.ts @@ -58,6 +58,7 @@ export class AppsEnabledService implements IAppsService { } const service = this.getAppService(app); + service.validate(app); // Only run beforeCreated when app is enabled (default true if omitted) if (app.enabled !== false) { await service.beforeCreated(app); @@ -102,6 +103,8 @@ export class AppsEnabledService implements IAppsService { } const service = this.getAppService(app); + service.validate(app); + const hasEnabledChange = savedApp.enabled !== app.enabled; if (hasEnabledChange) { diff --git a/src/apps/app_sdk/services/IAppService.ts b/src/apps/app_sdk/services/IAppService.ts index d2e4d91c..f3d5a0a6 100644 --- a/src/apps/app_sdk/services/IAppService.ts +++ b/src/apps/app_sdk/services/IAppService.ts @@ -5,6 +5,8 @@ import { WhatsappSession } from '@waha/core/abc/session.abc'; * Exact App service */ export interface IAppService { + validate(app: App): void; + beforeCreated(app: App): Promise; /** diff --git a/src/apps/chatwoot/api/chatwoot.locales.controller.ts b/src/apps/chatwoot/api/chatwoot.locales.controller.ts index b2f3460b..c940e7a6 100644 --- a/src/apps/chatwoot/api/chatwoot.locales.controller.ts +++ b/src/apps/chatwoot/api/chatwoot.locales.controller.ts @@ -1,6 +1,7 @@ import { Controller, Get } from '@nestjs/common'; +import { sortBy } from 'lodash'; import { ApiOperation, ApiSecurity, ApiTags } from '@nestjs/swagger'; -import { LOCALE_NAMES } from '@waha/apps/chatwoot/locale'; +import { i18n } from '@waha/apps/chatwoot/i18n'; interface LanguageResponse { name: string; @@ -17,9 +18,14 @@ export class ChatwootLocalesController { description: 'Get available languages for Chatwoot app', }) getLanguages(): LanguageResponse[] { - return Array.from(LOCALE_NAMES.entries()).map(([locale, name]) => ({ - name, - locale, - })); + const locales = i18n.available(); + const priority = ['en-US', 'pt-BR', 'es-ES']; + return sortBy(locales, [ + (x) => { + const idx = priority.indexOf(x.locale); + return idx === -1 ? Number.MAX_SAFE_INTEGER : idx; + }, + 'locale', + ]); } } diff --git a/src/apps/chatwoot/client/ContactConversationService.ts b/src/apps/chatwoot/client/ContactConversationService.ts index 6921db74..bfefb930 100644 --- a/src/apps/chatwoot/client/ContactConversationService.ts +++ b/src/apps/chatwoot/client/ContactConversationService.ts @@ -9,7 +9,7 @@ import { Conversation } from '@waha/apps/chatwoot/client/Conversation'; import { ConversationAPI } from '@waha/apps/chatwoot/client/ConversationAPI'; import { ChatWootAPIConfig } from '@waha/apps/chatwoot/client/interfaces'; import { InboxContactInfo } from '@waha/apps/chatwoot/contacts/InboxContactInfo'; -import { Locale } from '@waha/apps/chatwoot/locale'; +import { Locale } from '@waha/apps/chatwoot/i18n/locale'; import { CacheForConfig } from '../cache/ConversationCache'; import { IConversationCache } from '../cache/IConversationCache'; diff --git a/src/apps/chatwoot/consumers/inbox/base.ts b/src/apps/chatwoot/consumers/inbox/base.ts index 0b1c255a..624d7e89 100644 --- a/src/apps/chatwoot/consumers/inbox/base.ts +++ b/src/apps/chatwoot/consumers/inbox/base.ts @@ -10,7 +10,6 @@ import { ChatIDNotFoundForContactError, PhoneNumberNotFoundInWhatsAppError, } from '@waha/apps/chatwoot/errors'; -import { TKey } from '@waha/apps/chatwoot/locale'; import { WAHASessionAPI } from '@waha/apps/chatwoot/session/WAHASelf'; import { SessionManager } from '@waha/core/abc/manager.abc'; import { RMutexService } from '@waha/modules/rmutex/rmutex.service'; @@ -18,6 +17,7 @@ import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; import { AppRepository } from '../../storage'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; /** * Base class for ChatWoot inbox consumers diff --git a/src/apps/chatwoot/consumers/inbox/commands.ts b/src/apps/chatwoot/consumers/inbox/commands.ts index 6b6cb8e5..fd6758cc 100644 --- a/src/apps/chatwoot/consumers/inbox/commands.ts +++ b/src/apps/chatwoot/consumers/inbox/commands.ts @@ -7,13 +7,14 @@ import { MessageType } from '@waha/apps/chatwoot/client/types'; import { ChatWootInboxMessageConsumer } from '@waha/apps/chatwoot/consumers/inbox/base'; import { QueueName } from '@waha/apps/chatwoot/consumers/QueueName'; import { DIContainer } from '@waha/apps/chatwoot/di/DIContainer'; -import { Locale, TKey } from '@waha/apps/chatwoot/locale'; +import { Locale } from '@waha/apps/chatwoot/i18n/locale'; import { WAHASelf } from '@waha/apps/chatwoot/session/WAHASelf'; import { SessionStatusEmoji } from '@waha/apps/chatwoot/SessionStatusEmoji'; import { SessionManager } from '@waha/core/abc/manager.abc'; import { RMutexService } from '@waha/modules/rmutex/rmutex.service'; import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; @Processor(QueueName.INBOX_COMMANDS, { concurrency: JOB_CONCURRENCY }) export class ChatWootInboxCommandsConsumer extends ChatWootInboxMessageConsumer { diff --git a/src/apps/chatwoot/consumers/inbox/message_created.ts b/src/apps/chatwoot/consumers/inbox/message_created.ts index 3c4820df..d85bb6d3 100644 --- a/src/apps/chatwoot/consumers/inbox/message_created.ts +++ b/src/apps/chatwoot/consumers/inbox/message_created.ts @@ -8,7 +8,6 @@ import { } from '@waha/apps/chatwoot/consumers/inbox/base'; import { QueueName } from '@waha/apps/chatwoot/consumers/QueueName'; import { DIContainer } from '@waha/apps/chatwoot/di/DIContainer'; -import { TKey } from '@waha/apps/chatwoot/locale'; import { EngineHelper } from '@waha/apps/chatwoot/session'; import { WAHASessionAPI } from '@waha/apps/chatwoot/session/WAHASelf'; import { @@ -30,6 +29,7 @@ import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; import { SerializeWhatsAppKey } from '../../client/ids'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; // eslint-disable-next-line @typescript-eslint/no-var-requires const mime = require('mime-types'); @@ -45,7 +45,7 @@ export class ChatWootInboxMessageCreatedConsumer extends ChatWootInboxMessageCon } ErrorHeaderKey(): TKey | null { - return TKey.WHATSAPP_ERROR_SENDING_MESSAGE; + return TKey.WHATSAPP_MESSAGE_SENDING_ERROR; } protected async Process(container: DIContainer, body, job: Job) { diff --git a/src/apps/chatwoot/consumers/inbox/message_deleted.ts b/src/apps/chatwoot/consumers/inbox/message_deleted.ts index 2bbb0560..faa628f1 100644 --- a/src/apps/chatwoot/consumers/inbox/message_deleted.ts +++ b/src/apps/chatwoot/consumers/inbox/message_deleted.ts @@ -8,13 +8,13 @@ import { } from '@waha/apps/chatwoot/consumers/inbox/base'; import { QueueName } from '@waha/apps/chatwoot/consumers/QueueName'; import { DIContainer } from '@waha/apps/chatwoot/di/DIContainer'; -import { TKey } from '@waha/apps/chatwoot/locale'; import { WAHASessionAPI } from '@waha/apps/chatwoot/session/WAHASelf'; import { MessageMappingService } from '@waha/apps/chatwoot/storage'; import { SessionManager } from '@waha/core/abc/manager.abc'; import { RMutexService } from '@waha/modules/rmutex/rmutex.service'; import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; @Processor(QueueName.INBOX_MESSAGE_DELETED, { concurrency: JOB_CONCURRENCY }) export class ChatWootInboxMessageDeletedConsumer extends ChatWootInboxMessageConsumer { @@ -27,7 +27,7 @@ export class ChatWootInboxMessageDeletedConsumer extends ChatWootInboxMessageCon } ErrorHeaderKey(): TKey | null { - return TKey.WHATSAPP_ERROR_REMOVING_MESSAGE; + return TKey.WHATSAPP_MESSAGE_REMOVING_ERROR; } protected async Process(container: DIContainer, body, job: Job) { diff --git a/src/apps/chatwoot/consumers/inbox/message_updated.ts b/src/apps/chatwoot/consumers/inbox/message_updated.ts index d719b40d..9d173d3e 100644 --- a/src/apps/chatwoot/consumers/inbox/message_updated.ts +++ b/src/apps/chatwoot/consumers/inbox/message_updated.ts @@ -4,13 +4,13 @@ import { ChatWootInboxMessageConsumer } from '@waha/apps/chatwoot/consumers/inbo import { MessageHandler } from '@waha/apps/chatwoot/consumers/inbox/message_created'; import { QueueName } from '@waha/apps/chatwoot/consumers/QueueName'; import { DIContainer } from '@waha/apps/chatwoot/di/DIContainer'; -import { TKey } from '@waha/apps/chatwoot/locale'; import { SessionManager } from '@waha/core/abc/manager.abc'; import { RMutexService } from '@waha/modules/rmutex/rmutex.service'; import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; import { WAHASessionAPI } from '../../session/WAHASelf'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; @Processor(QueueName.INBOX_MESSAGE_UPDATED, { concurrency: JOB_CONCURRENCY }) export class ChatWootInboxMessageUpdatedConsumer extends ChatWootInboxMessageConsumer { @@ -23,7 +23,7 @@ export class ChatWootInboxMessageUpdatedConsumer extends ChatWootInboxMessageCon } ErrorHeaderKey(): TKey | null { - return TKey.WHATSAPP_ERROR_SENDING_MESSAGE; + return TKey.WHATSAPP_MESSAGE_SENDING_ERROR; } protected async Process(container: DIContainer, body, job: Job) { diff --git a/src/apps/chatwoot/consumers/scheduled/base.ts b/src/apps/chatwoot/consumers/scheduled/base.ts index b6f3cc44..5878ea36 100644 --- a/src/apps/chatwoot/consumers/scheduled/base.ts +++ b/src/apps/chatwoot/consumers/scheduled/base.ts @@ -5,13 +5,13 @@ import { MessageType } from '@waha/apps/chatwoot/client/types'; import { ScheduledData } from '@waha/apps/chatwoot/consumers/types'; import { DIContainer } from '@waha/apps/chatwoot/di/DIContainer'; import { ChatWootAppConfig } from '@waha/apps/chatwoot/dto/config.dto'; -import { TKey } from '@waha/apps/chatwoot/locale'; import { SessionManager } from '@waha/core/abc/manager.abc'; import { RMutexService } from '@waha/modules/rmutex/rmutex.service'; import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; import { AppRepository } from '../../storage'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; /** * Base class for ChatWoot scheduled consumers diff --git a/src/apps/chatwoot/consumers/scheduled/check.version.ts b/src/apps/chatwoot/consumers/scheduled/check.version.ts index 9acf4c93..74b6cf04 100644 --- a/src/apps/chatwoot/consumers/scheduled/check.version.ts +++ b/src/apps/chatwoot/consumers/scheduled/check.version.ts @@ -4,7 +4,6 @@ import { JOB_CONCURRENCY } from '@waha/apps/app_sdk/constants'; import { ILogger } from '@waha/apps/app_sdk/ILogger'; import { QueueName } from '@waha/apps/chatwoot/consumers/QueueName'; import { DIContainer } from '@waha/apps/chatwoot/di/DIContainer'; -import { TKey } from '@waha/apps/chatwoot/locale'; import { SessionManager } from '@waha/core/abc/manager.abc'; import { CHANGELOG_URL, SUPPORT_US_URL } from '@waha/core/constants'; import { RMutexService } from '@waha/modules/rmutex/rmutex.service'; @@ -14,6 +13,7 @@ import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; import { ChatWootScheduledConsumer } from './base'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; /** * Scheduled consumer for version checking @@ -26,7 +26,7 @@ export class CheckVersionConsumer extends ChatWootScheduledConsumer { } protected ErrorHeaderKey(): TKey { - return TKey.APP_SCHEDULED_JOB_ERROR; + return TKey.JOB_SCHEDULED_ERROR_HEADER; } /** @@ -50,7 +50,7 @@ export class CheckVersionConsumer extends ChatWootScheduledConsumer { return; } logger.info('WAHA is using the CORE version'); - const supportMessage = locale.key(TKey.APP_CORE_VERSION_USED).render({ + const supportMessage = locale.key(TKey.WAHA_CORE_VERSION_USED).render({ supportUrl: SUPPORT_US_URL, }); await conversation.incoming(supportMessage); @@ -74,7 +74,7 @@ export class CheckVersionConsumer extends ChatWootScheduledConsumer { // Send a message to Chatwoot conversation about a new version const locale = container.Locale(); - const message = locale.key(TKey.APP_NEW_VERSION_AVAILABLE).render({ + const message = locale.key(TKey.WAHA_NEW_VERSION_AVAILABLE).render({ currentVersion: currentVersion, newVersion: latestVersion, changelogUrl: CHANGELOG_URL, diff --git a/src/apps/chatwoot/consumers/scheduled/message.cleanup.ts b/src/apps/chatwoot/consumers/scheduled/message.cleanup.ts index b0185cdd..660036e5 100644 --- a/src/apps/chatwoot/consumers/scheduled/message.cleanup.ts +++ b/src/apps/chatwoot/consumers/scheduled/message.cleanup.ts @@ -3,13 +3,13 @@ import { Injectable } from '@nestjs/common'; import { JOB_CONCURRENCY } from '@waha/apps/app_sdk/constants'; import { QueueName } from '@waha/apps/chatwoot/consumers/QueueName'; import { DIContainer } from '@waha/apps/chatwoot/di/DIContainer'; -import { TKey } from '@waha/apps/chatwoot/locale'; import { SessionManager } from '@waha/core/abc/manager.abc'; import { RMutexService } from '@waha/modules/rmutex/rmutex.service'; import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; import { ChatWootScheduledConsumer } from './base'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; /** * Scheduled consumer for message cleanup tasks @@ -26,7 +26,7 @@ export class MessageCleanupConsumer extends ChatWootScheduledConsumer { } protected ErrorHeaderKey(): TKey { - return TKey.APP_SCHEDULED_JOB_ERROR; + return TKey.JOB_SCHEDULED_ERROR_HEADER; } /** diff --git a/src/apps/chatwoot/consumers/waha/base.ts b/src/apps/chatwoot/consumers/waha/base.ts index 0c118339..6342ac7f 100644 --- a/src/apps/chatwoot/consumers/waha/base.ts +++ b/src/apps/chatwoot/consumers/waha/base.ts @@ -13,7 +13,7 @@ import { WhatsAppChatIdKey } from '@waha/apps/chatwoot/consumers/mutex'; import { EventData } from '@waha/apps/chatwoot/consumers/types'; import { WhatsAppContactInfo } from '@waha/apps/chatwoot/contacts/WhatsAppContactInfo'; import { DIContainer } from '@waha/apps/chatwoot/di/DIContainer'; -import { Locale, TKey } from '@waha/apps/chatwoot/locale'; +import { Locale } from '@waha/apps/chatwoot/i18n/locale'; import { WAHASelf, WAHASessionAPI } from '@waha/apps/chatwoot/session/WAHASelf'; import { AppRepository, @@ -36,6 +36,7 @@ import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; import { ChatWootAppConfig } from '../../dto/config.dto'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; export function ListenEventsForChatWoot() { return [ @@ -64,7 +65,7 @@ export abstract class ChatWootWAHABaseConsumer extends AppConsumer { } protected ErrorHeaderKey(): TKey | null { - return TKey.WHATSAPP_ERROR_RECEIVING_MESSAGE; + return TKey.WHATSAPP_MESSAGE_RECEIVING_ERROR; } private async ProcessAndReportErrors(job) { diff --git a/src/apps/chatwoot/consumers/waha/message.edited.ts b/src/apps/chatwoot/consumers/waha/message.edited.ts index fffc25f2..61e095a5 100644 --- a/src/apps/chatwoot/consumers/waha/message.edited.ts +++ b/src/apps/chatwoot/consumers/waha/message.edited.ts @@ -7,7 +7,6 @@ import { IMessageInfo, } from '@waha/apps/chatwoot/consumers/waha/base'; import { MessageBaseHandler } from '@waha/apps/chatwoot/consumers/waha/base'; -import { TKey } from '@waha/apps/chatwoot/locale'; import { WhatsappToMarkdown } from '@waha/apps/chatwoot/text'; import { SessionManager } from '@waha/core/abc/manager.abc'; import { RMutexService } from '@waha/modules/rmutex/rmutex.service'; @@ -21,6 +20,7 @@ import { PinoLogger } from 'nestjs-pino'; import { SendAttachment } from '../../client/types'; import { WAHASessionAPI } from '../../session/WAHASelf'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; @Processor(QueueName.WAHA_MESSAGE_EDITED, { concurrency: JOB_CONCURRENCY }) export class WAHAMessageEditedConsumer extends ChatWootWAHABaseConsumer { diff --git a/src/apps/chatwoot/consumers/waha/message.reaction.ts b/src/apps/chatwoot/consumers/waha/message.reaction.ts index 10fcc4fc..49095d8b 100644 --- a/src/apps/chatwoot/consumers/waha/message.reaction.ts +++ b/src/apps/chatwoot/consumers/waha/message.reaction.ts @@ -8,7 +8,6 @@ import { IMessageInfo, } from '@waha/apps/chatwoot/consumers/waha/base'; import { MessageBaseHandler } from '@waha/apps/chatwoot/consumers/waha/base'; -import { TKey } from '@waha/apps/chatwoot/locale'; import { WAHASessionAPI } from '@waha/apps/chatwoot/session/WAHASelf'; import { SessionManager } from '@waha/core/abc/manager.abc'; import { parseMessageIdSerialized } from '@waha/core/utils/ids'; @@ -18,6 +17,7 @@ import { WAMessageReaction, WAReaction } from '@waha/structures/responses.dto'; import { WAHAWebhookMessageReaction } from '@waha/structures/webhooks.dto'; import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; @Processor(QueueName.WAHA_MESSAGE_REACTION, { concurrency: JOB_CONCURRENCY }) export class WAHAMessageReactionConsumer extends ChatWootWAHABaseConsumer { diff --git a/src/apps/chatwoot/consumers/waha/message.revoked.ts b/src/apps/chatwoot/consumers/waha/message.revoked.ts index 64c17dba..7e527c34 100644 --- a/src/apps/chatwoot/consumers/waha/message.revoked.ts +++ b/src/apps/chatwoot/consumers/waha/message.revoked.ts @@ -10,7 +10,7 @@ import { ChatWootWAHABaseConsumer, IMessageInfo, } from '@waha/apps/chatwoot/consumers/waha/base'; -import { Locale, TKey } from '@waha/apps/chatwoot/locale'; +import { Locale } from '@waha/apps/chatwoot/i18n/locale'; import { ChatwootMessage, MessageMappingService, @@ -22,6 +22,7 @@ import { WAHAEvents } from '@waha/structures/enums.dto'; import { WAHAWebhookMessageRevoked } from '@waha/structures/webhooks.dto'; import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; @Processor(QueueName.WAHA_MESSAGE_REVOKED, { concurrency: JOB_CONCURRENCY }) export class WAHAMessageRevokedConsumer extends ChatWootWAHABaseConsumer { diff --git a/src/apps/chatwoot/consumers/waha/session.status.ts b/src/apps/chatwoot/consumers/waha/session.status.ts index cc507217..d7c304e1 100644 --- a/src/apps/chatwoot/consumers/waha/session.status.ts +++ b/src/apps/chatwoot/consumers/waha/session.status.ts @@ -10,7 +10,7 @@ import { ChatWootWAHABaseConsumer, IMessageInfo, } from '@waha/apps/chatwoot/consumers/waha/base'; -import { Locale, TKey } from '@waha/apps/chatwoot/locale'; +import { Locale } from '@waha/apps/chatwoot/i18n/locale'; import { WAHASelf } from '@waha/apps/chatwoot/session/WAHASelf'; import { SessionStatusEmoji } from '@waha/apps/chatwoot/SessionStatusEmoji'; import { SessionManager } from '@waha/core/abc/manager.abc'; @@ -19,6 +19,7 @@ import { WAHAEvents, WAHASessionStatus } from '@waha/structures/enums.dto'; import { WAHAWebhookSessionStatus } from '@waha/structures/webhooks.dto'; import { Job } from 'bullmq'; import { PinoLogger } from 'nestjs-pino'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; @Processor(QueueName.WAHA_SESSION_STATUS, { concurrency: JOB_CONCURRENCY }) export class WAHASessionStatusConsumer extends ChatWootWAHABaseConsumer { diff --git a/src/apps/chatwoot/contacts/InboxContactInfo.ts b/src/apps/chatwoot/contacts/InboxContactInfo.ts index 96a26c31..4f6a41f7 100644 --- a/src/apps/chatwoot/contacts/InboxContactInfo.ts +++ b/src/apps/chatwoot/contacts/InboxContactInfo.ts @@ -1,7 +1,8 @@ import { public_contact_create_update_payload } from '@figuro/chatwoot-sdk'; import { ContactInfo } from '@waha/apps/chatwoot/client/ContactConversationService'; import { AttributeKey, INBOX_CONTACT_CHAT_ID } from '@waha/apps/chatwoot/const'; -import { Locale, TKey } from '@waha/apps/chatwoot/locale'; +import { Locale } from '@waha/apps/chatwoot/i18n/locale'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; /** * Inbox Notifications Contact diff --git a/src/apps/chatwoot/contacts/WhatsAppContactInfo.ts b/src/apps/chatwoot/contacts/WhatsAppContactInfo.ts index f069a9ad..b072b91e 100644 --- a/src/apps/chatwoot/contacts/WhatsAppContactInfo.ts +++ b/src/apps/chatwoot/contacts/WhatsAppContactInfo.ts @@ -7,10 +7,11 @@ import { isLidUser } from '@adiwajshing/baileys/lib/WABinary/jid-utils'; import { public_contact_create_update_payload as Contact } from '@figuro/chatwoot-sdk'; import { ContactInfo } from '@waha/apps/chatwoot/client/ContactConversationService'; import { AttributeKey } from '@waha/apps/chatwoot/const'; -import { Locale, TKey } from '@waha/apps/chatwoot/locale'; +import { Locale } from '@waha/apps/chatwoot/i18n/locale'; import { WAHASessionAPI } from '@waha/apps/chatwoot/session/WAHASelf'; import { Channel } from '@waha/structures/channels.dto'; import { CacheAsync } from '@waha/utils/Cache'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; /** * Base WhatsApp contact info class diff --git a/src/apps/chatwoot/di/DIContainer.ts b/src/apps/chatwoot/di/DIContainer.ts index d7857449..54277cf0 100644 --- a/src/apps/chatwoot/di/DIContainer.ts +++ b/src/apps/chatwoot/di/DIContainer.ts @@ -6,9 +6,12 @@ import { ContactConversationService } from '@waha/apps/chatwoot/client/ContactCo import { ConversationAPI } from '@waha/apps/chatwoot/client/ConversationAPI'; import { CustomAttributesAPI } from '@waha/apps/chatwoot/client/CustomAttributesAPI'; import { ChatWootInboxAPI } from '@waha/apps/chatwoot/client/interfaces'; -import { ChatWootAppConfig } from '@waha/apps/chatwoot/dto/config.dto'; +import { + ChatWootAppConfig, + DEFAULT_LOCALE, +} from '@waha/apps/chatwoot/dto/config.dto'; import { ChatWootErrorReporter } from '@waha/apps/chatwoot/error/ChatWootErrorReporter'; -import { Locale } from '@waha/apps/chatwoot/locale'; +import { Locale } from '@waha/apps/chatwoot/i18n/locale'; import { WAHASelf } from '@waha/apps/chatwoot/session/WAHASelf'; import { ChatwootMessageRepository, @@ -18,6 +21,7 @@ import { } from '@waha/apps/chatwoot/storage'; import { Job } from 'bullmq'; import { Knex } from 'knex'; +import { i18n } from '@waha/apps/chatwoot/i18n'; /** * Dependency Injection Container for ChatWoot @@ -63,7 +67,7 @@ export class DIContainer { public Locale(): Locale { if (!this.locale) { - this.locale = new Locale(this.config.locale); + this.locale = i18n.locale(this.config.locale || DEFAULT_LOCALE); } return this.locale; } diff --git a/src/apps/chatwoot/dto/config.dto.ts b/src/apps/chatwoot/dto/config.dto.ts index 6d3f8ede..dff0b911 100644 --- a/src/apps/chatwoot/dto/config.dto.ts +++ b/src/apps/chatwoot/dto/config.dto.ts @@ -1,6 +1,7 @@ import { ChatWootAPIConfig } from '@waha/apps/chatwoot/client/interfaces'; -import { DEFAULT_LOCALE, LOCALES } from '@waha/apps/chatwoot/locale'; -import { IsIn, IsNumber, IsString } from 'class-validator'; +import { IsNumber, IsString } from 'class-validator'; + +export const DEFAULT_LOCALE = 'en-US'; export class ChatWootAppConfig implements ChatWootAPIConfig { @IsString() @@ -19,6 +20,5 @@ export class ChatWootAppConfig implements ChatWootAPIConfig { inboxIdentifier: string; @IsString() - @IsIn(LOCALES) locale: string = DEFAULT_LOCALE; } diff --git a/src/apps/chatwoot/error/ChatWootErrorReporter.ts b/src/apps/chatwoot/error/ChatWootErrorReporter.ts index c2c46da7..0356dacc 100644 --- a/src/apps/chatwoot/error/ChatWootErrorReporter.ts +++ b/src/apps/chatwoot/error/ChatWootErrorReporter.ts @@ -4,8 +4,9 @@ import { NextAttemptDelayInWholeSeconds } from '@waha/apps/app_sdk/JobUtils'; import { Conversation } from '@waha/apps/chatwoot/client/Conversation'; import { MessageType } from '@waha/apps/chatwoot/client/types'; import { ErrorRenderer } from '@waha/apps/chatwoot/error/ErrorRenderer'; -import { Locale, TKey } from '@waha/apps/chatwoot/locale'; +import { Locale } from '@waha/apps/chatwoot/i18n/locale'; import { Job } from 'bullmq'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; export class ChatWootErrorReporter { private errorRenderer: ErrorRenderer = new ErrorRenderer(); @@ -28,7 +29,7 @@ export class ChatWootErrorReporter { const errorUrl = `http://localhost:3000/jobs/queue/${encodeURIComponent( this.job.queueName, )}/${this.job.id}`; - const template = this.l.key(TKey.JOB_ERROR_REPORT); + const template = this.l.key(TKey.JOB_REPORT_ERROR); const nextDelay = NextAttemptDelayInWholeSeconds(this.job); const attempts = { current: this.job.attemptsMade + 1, @@ -74,7 +75,7 @@ export class ChatWootErrorReporter { const jobUrl = `http://localhost:3000/jobs/queue/${encodeURIComponent( this.job.queueName, )}/${this.job.id}`; - const template = this.l.key(TKey.JOB_SUCCEEDED_REPORT); + const template = this.l.key(TKey.JOB_REPORT_SUCCEEDED); const attempts = { current: this.job.attemptsMade + 1, max: this.job.opts?.attempts || 1, diff --git a/src/apps/chatwoot/i18n/i18n.ts b/src/apps/chatwoot/i18n/i18n.ts new file mode 100644 index 00000000..68fa4530 --- /dev/null +++ b/src/apps/chatwoot/i18n/i18n.ts @@ -0,0 +1,43 @@ +import { Locale } from '@waha/apps/chatwoot/i18n/locale'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; + +export class I18N { + private readonly locales: Record; + + constructor() { + this.locales = {}; + } + + available(): Array<{ name: string; locale: string }> { + const result = []; + for (const [key, template] of Object.entries(this.locales)) { + result.push({ locale: key, name: template.key(TKey.LOCALE_NAME).r() }); + } + return result; + } + + load(locales: Record>) { + for (const [locale, strings] of Object.entries(locales)) { + this.add(locale, strings); + } + } + + add(locale: string, strings: Record) { + if (!this.locales[locale]) { + this.locales[locale] = new Locale(strings); + } else { + this.locales[locale].override(strings); + } + } + + locale(locale: string) { + if (!this.has(locale)) { + throw new Error(`Locale ${locale} not found`); + } + return this.locales[locale]; + } + + has(locale: string) { + return !!this.locales[locale]; + } +} diff --git a/src/apps/chatwoot/i18n/index.ts b/src/apps/chatwoot/i18n/index.ts new file mode 100644 index 00000000..8a34a2ce --- /dev/null +++ b/src/apps/chatwoot/i18n/index.ts @@ -0,0 +1,10 @@ +import * as path from 'path'; +import { YamlLocaleLoader } from '@waha/apps/chatwoot/i18n/loader'; +import { I18N } from '@waha/apps/chatwoot/i18n/i18n'; + +const i18n = new I18N(); +const localesDir = path.join(__dirname, 'locales'); +// Load both .yml and .yaml files from locales directory (non-recursive) +i18n.load(new YamlLocaleLoader(localesDir, 'yml').load()); +i18n.load(new YamlLocaleLoader(localesDir, 'yaml').load()); +export { i18n }; diff --git a/src/apps/chatwoot/i18n/loader.ts b/src/apps/chatwoot/i18n/loader.ts new file mode 100644 index 00000000..d684b9bf --- /dev/null +++ b/src/apps/chatwoot/i18n/loader.ts @@ -0,0 +1,33 @@ +import * as fs from 'fs-extra'; +import * as path from 'path'; +import * as yaml from 'yaml'; + +export class YamlLocaleLoader { + constructor( + private readonly dir: string, + private readonly ext: string, + ) {} + + load(): Record> { + const result: Record> = {}; + + const files = fs.readdirSync(this.dir, { withFileTypes: true }); + for (const entry of files) { + if (!entry.isFile()) continue; + + const filename = entry.name; + if (!filename.endsWith(`.${this.ext}`)) continue; + + const locale = path.basename(filename, `.${this.ext}`); + const filePath = path.join(this.dir, filename); + const content = fs.readFileSync(filePath, 'utf-8'); + + const parsed = yaml.parse(content) as Record | undefined; + if (parsed && typeof parsed === 'object') { + result[locale] = parsed as Record; + } + } + + return result; + } +} diff --git a/src/apps/chatwoot/i18n/locale.ts b/src/apps/chatwoot/i18n/locale.ts new file mode 100644 index 00000000..7273d184 --- /dev/null +++ b/src/apps/chatwoot/i18n/locale.ts @@ -0,0 +1,30 @@ +import * as Mustache from 'mustache'; +import { TemplatePayloads, TKey } from '@waha/apps/chatwoot/i18n/templates'; + +export class Locale { + constructor(private readonly strings: Record) {} + + key(key: K): Template { + return new Template(this.strings[key] || key); + } + + /** + * Overrides the existing strings with the provided strings for the locale. + * Merges the new strings with the current strings. + */ + override(strings: Record): Locale { + return new Locale({ ...this.strings, ...strings }); + } +} + +export class Template { + constructor(private readonly template: string) {} + + render(data: TemplatePayloads[K]): string { + return Mustache.render(this.template, data); + } + + r(data: TemplatePayloads[K]): string { + return this.render(data); + } +} diff --git a/src/apps/chatwoot/i18n/ar-AE.yaml b/src/apps/chatwoot/i18n/locales/ar-AE.yaml similarity index 82% rename from src/apps/chatwoot/i18n/ar-AE.yaml rename to src/apps/chatwoot/i18n/locales/ar-AE.yaml index 893b7d85..4d2d66d0 100644 --- a/src/apps/chatwoot/i18n/ar-AE.yaml +++ b/src/apps/chatwoot/i18n/locales/ar-AE.yaml @@ -1,8 +1,8 @@ # Arabic translations for ChatWoot integration -LOCALE_NAME: '🇦🇪 العربية (Arabic)' -APP_INBOX_CONTACT_NAME: 'تكامل واتساب (WAHA)' +locale.name: '🇦🇪 العربية (Arabic)' +app.inbox.contact.name: 'تكامل واتساب (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 إعادة المحاولة في {{attempts.nextDelay}} ثانية... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **نجاح** المحاولة: {{{attempts.current}}} / {{{attempts.max}}} التفاصيل: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: تعذر إرسال رسالة على واتساب. -WHATSAPP_ERROR_RECEIVING_MESSAGE: تعذر استلام رسالة من واتساب -WHATSAPP_ERROR_REMOVING_MESSAGE: تعذر إزالة رسالة من واتساب -APP_SCHEDULED_JOB_ERROR: فشل تنفيذ المهمة المجدولة +whatsapp.message.sending.error: تعذر إرسال رسالة على واتساب. +whatsapp.message.receiving.error: تعذر استلام رسالة من واتساب +whatsapp.message.removing.error: تعذر إزالة رسالة من واتساب +job.scheduled.error.header: فشل تنفيذ المهمة المجدولة -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *أرسلت من واتساب* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *أرسلت عبر API* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *تم حذف هذه الرسالة في واتساب* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *تم تعديلها في واتساب* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *تفاعل* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *تمت إزالة التفاعل* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'مجموعة' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'قناة' +whatsapp.contact.group.suffix: 'مجموعة' +whatsapp.contact.channel.suffix: 'قناة' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'الحالة' +whatsapp.contact.status.name: 'الحالة' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **متصل: جلسة واتساب إلى صندوق وارد ChatWoot** ✅ تم توصيل جلسة واتساب **{{{name}}}** بنجاح بصندوق وارد ChatWoot هذا. @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | لنبدأ! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **غير متصل: جلسة واتساب من صندوق وارد ChatWoot** ❌ تم قطع اتصال جلسة واتساب **{{{name}}}** من صندوق وارد ChatWoot هذا. @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | لإعادة الاتصال، يرجى الاتصال بالمسؤول الخاص بك. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **تم التحديث: إعدادات جلسة واتساب** ✅ تم تحديث إعدادات جلسة واتساب **{{{name}}}**. -APP_COMMANDS_LIST: | +app.commands.list: | يمكنك إدارة **تكامل واتساب** عن طريق إرسال أحد الأوامر التالية: 🖥️ الجلسات: @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | أرسل **أمرًا** (غير حساس لحالة الأحرف) أو **رقم أمر** إلى هذه المحادثة. -APP_HELP_REMINDER: | +app.help.reminder: | أرسل **help** للحصول على قائمة الأوامر المتاحة. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} تم تغيير حالة جلسة "{{{session}}}" إلى {{{status}}} -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} حالة جلسة **{{{session}}}** هي **{{{status}}}** **حساب واتساب:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - قم بزيارة [لوحة تحكم WAHA]({{{url}}}) لمزيد من التفاصيل. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ صندوق وارد ChatWoot هذا مرتبط بـ **حساب واتساب** وجاهز لإرسال واستقبال الرسائل! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **صندوق وارد ChatWoot هذا مرتبط بحساب واتساب ولكنه غير جاهز لإرسال واستقبال الرسائل!** يرجى التحقق من حالة الجلسة ومحاولة إعادة تشغيلها أو تسجيل الخروج ومسح رمز QR مرة أخرى. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **امسح رمز QR على هاتفك لربط حساب واتساب بصندوق وارد ChatWoot هذا!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **الإصدار:** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | يتم إعادة تشغيل الخادم بسلاسة... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | يتم إعادة تشغيل الخادم بالقوة... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ تم إلغاء تفويض الحساب بنجاح! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **إصدار جديد متاح!** الإصدار الحالي: **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 تحقق مما هو جديد في [**🆕 سجل التغييرات**]({{{changelogUrl}}}) -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **ادعم WAHA!** أنت تستخدم إصدار **WAHA Core** المجاني. إذا وجدت هذا المشروع مفيدًا، فيرجى التفكير في دعم تطويره. diff --git a/src/apps/chatwoot/i18n/bn-BD.yaml b/src/apps/chatwoot/i18n/locales/bn-BD.yaml similarity index 87% rename from src/apps/chatwoot/i18n/bn-BD.yaml rename to src/apps/chatwoot/i18n/locales/bn-BD.yaml index c64c71b7..26a7f696 100644 --- a/src/apps/chatwoot/i18n/bn-BD.yaml +++ b/src/apps/chatwoot/i18n/locales/bn-BD.yaml @@ -1,8 +1,8 @@ # Bengali translations for ChatWoot integration -LOCALE_NAME: '🇧🇩 বাংলা (Bengali)' -APP_INBOX_CONTACT_NAME: 'হোয়াটসঅ্যাপ ইন্টিগ্রেশন (WAHA)' +locale.name: '🇧🇩 বাংলা (Bengali)' +app.inbox.contact.name: 'হোয়াটসঅ্যাপ ইন্টিগ্রেশন (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 {{attempts.nextDelay}} সেকেন্ডের মধ্যে পুনরায় চেষ্টা করা হচ্ছে... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **সফল হয়েছে** প্রচেষ্টা: {{{attempts.current}}} / {{{attempts.max}}} বিবরণ: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: হোয়াটসঅ্যাপে বার্তা পাঠাতে পারেনি। -WHATSAPP_ERROR_RECEIVING_MESSAGE: হোয়াটসঅ্যাপ থেকে বার্তা পেতে পারেনি -WHATSAPP_ERROR_REMOVING_MESSAGE: হোয়াটসঅ্যাপ থেকে বার্তা সরাতে পারেনি -APP_SCHEDULED_JOB_ERROR: নির্ধারিত কাজ সম্পাদন করতে ব্যর্থ হয়েছে +whatsapp.message.sending.error: হোয়াটসঅ্যাপে বার্তা পাঠাতে পারেনি। +whatsapp.message.receiving.error: হোয়াটসঅ্যাপ থেকে বার্তা পেতে পারেনি +whatsapp.message.removing.error: হোয়াটসঅ্যাপ থেকে বার্তা সরাতে পারেনি +job.scheduled.error.header: নির্ধারিত কাজ সম্পাদন করতে ব্যর্থ হয়েছে -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *হোয়াটসঅ্যাপ থেকে পাঠানো হয়েছে* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *API এর মাধ্যমে পাঠানো হয়েছে* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *এই বার্তাটি হোয়াটসঅ্যাপে মুছে ফেলা হয়েছে* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *হোয়াটসঅ্যাপে সম্পাদিত* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *প্রতিক্রিয়া দিয়েছেন* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *প্রতিক্রিয়া সরানো হয়েছে* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'গ্রুপ' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'চ্যানেল' +whatsapp.contact.group.suffix: 'গ্রুপ' +whatsapp.contact.channel.suffix: 'চ্যানেল' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'স্ট্যাটাস' +whatsapp.contact.status.name: 'স্ট্যাটাস' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **সংযুক্ত: হোয়াটসঅ্যাপ সেশন থেকে ChatWoot ইনবক্স** ✅ হোয়াটসঅ্যাপ সেশন **{{{name}}}** সফলভাবে এই ChatWoot ইনবক্সের সাথে সংযুক্ত করা হয়েছে। @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | চলুন শুরু করা যাক! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **সংযোগ বিচ্ছিন্ন: হোয়াটসঅ্যাপ সেশন থেকে ChatWoot ইনবক্স** ❌ হোয়াটসঅ্যাপ সেশন **{{{name}}}** এই ChatWoot ইনবক্স থেকে সংযোগ বিচ্ছিন্ন করা হয়েছে। @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | পুনরায় সংযোগ করতে, অনুগ্রহ করে আপনার প্রশাসকের সাথে যোগাযোগ করুন। -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **আপডেট করা হয়েছে: হোয়াটসঅ্যাপ সেশন সেটিংস** ✅ হোয়াটসঅ্যাপ সেশন **{{{name}}}** এর সেটিংস আপডেট করা হয়েছে। -APP_COMMANDS_LIST: | +app.commands.list: | আপনি নিম্নলিখিত কমান্ডগুলির একটি পাঠিয়ে **হোয়াটসঅ্যাপ ইন্টিগ্রেশন** পরিচালনা করতে পারেন: 🖥️ সেশন: @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | এই কথোপকথনে একটি **কমান্ড** (কেস সংবেদনশীল নয়) বা **কমান্ড নম্বর** পাঠান। -APP_HELP_REMINDER: | +app.help.reminder: | উপলব্ধ কমান্ডগুলির তালিকা পেতে **help** পাঠান। -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} "{{{session}}}" সেশন {{{status}}} স্ট্যাটাসে পরিবর্তিত হয়েছে -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} **{{{session}}}** সেশনের স্ট্যাটাস **{{{status}}}** **হোয়াটসঅ্যাপ অ্যাকাউন্ট:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - আরও বিবরণের জন্য [WAHA ড্যাশবোর্ড]({{{url}}}) দেখুন। - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ এই ChatWoot ইনবক্স **হোয়াটসঅ্যাপ অ্যাকাউন্টের** সাথে সংযুক্ত এবং বার্তা পাঠাতে ও গ্রহণ করতে প্রস্তুত! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **এই ChatWoot ইনবক্স হোয়াটসঅ্যাপ অ্যাকাউন্টের সাথে সংযুক্ত কিন্তু বার্তা পাঠাতে ও গ্রহণ করতে প্রস্তুত নয়!** অনুগ্রহ করে সেশনের স্ট্যাটাস পরীক্ষা করুন এবং এটি পুনরায় চালু করার চেষ্টা করুন অথবা লগআউট করুন এবং QR কোড আবার স্ক্যান করুন। -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **এই ChatWoot ইনবক্সের সাথে হোয়াটসঅ্যাপ অ্যাকাউন্ট লিঙ্ক করতে আপনার ফোনে QR কোড স্ক্যান করুন!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **সংস্করণ:** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | সার্ভার সুন্দরভাবে পুনরায় চালু হচ্ছে... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | সার্ভার জোর করে পুনরায় চালু হচ্ছে... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ অ্যাকাউন্ট সফলভাবে অননুমোদিত করা হয়েছে! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **নতুন সংস্করণ উপলব্ধ!** বর্তমান সংস্করণ: **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 [**🆕 পরিবর্তন লগ**]({{{changelogUrl}}}) এ নতুন কি আছে তা দেখুন -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **WAHA সমর্থন করুন!** আপনি বিনামূল্যের **WAHA Core** সংস্করণ ব্যবহার করছেন। যদি আপনি এই প্রকল্পটি উপযোগী মনে করেন, তবে এর বিকাশকে সমর্থন করার কথা বিবেচনা করুন। diff --git a/src/apps/chatwoot/i18n/de-DE.yaml b/src/apps/chatwoot/i18n/locales/de-DE.yaml similarity index 81% rename from src/apps/chatwoot/i18n/de-DE.yaml rename to src/apps/chatwoot/i18n/locales/de-DE.yaml index b2eca163..835f3c97 100644 --- a/src/apps/chatwoot/i18n/de-DE.yaml +++ b/src/apps/chatwoot/i18n/locales/de-DE.yaml @@ -1,8 +1,8 @@ # German translations for ChatWoot integration -LOCALE_NAME: '🇩🇪 Deutsch (German)' -APP_INBOX_CONTACT_NAME: 'WhatsApp Integration (WAHA)' +locale.name: '🇩🇪 Deutsch (German)' +app.inbox.contact.name: 'WhatsApp Integration (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 Wiederholung in {{attempts.nextDelay}} Sekunden... @@ -19,54 +19,54 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **Erfolgreich** Versuch: {{{attempts.current}}} / {{{attempts.max}}} Details: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: +whatsapp.message.sending.error: Nachricht konnte nicht über WhatsApp gesendet werden. -WHATSAPP_ERROR_RECEIVING_MESSAGE: +whatsapp.message.receiving.error: Nachricht konnte nicht von WhatsApp empfangen werden -WHATSAPP_ERROR_REMOVING_MESSAGE: +whatsapp.message.removing.error: Nachricht konnte nicht von WhatsApp entfernt werden -APP_SCHEDULED_JOB_ERROR: Geplante Aufgabe konnte nicht ausgeführt werden +job.scheduled.error.header: Geplante Aufgabe konnte nicht ausgeführt werden -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *Von WhatsApp gesendet* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *Über API gesendet* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *Diese Nachricht wurde in WhatsApp gelöscht* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *In WhatsApp bearbeitet* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *Reagiert mit* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *Reaktion entfernt* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'Gruppe' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'Kanal' +whatsapp.contact.group.suffix: 'Gruppe' +whatsapp.contact.channel.suffix: 'Kanal' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'Status' +whatsapp.contact.status.name: 'Status' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **VERBUNDEN: WhatsApp-Sitzung mit ChatWoot Inbox** ✅ WhatsApp-Sitzung **{{{name}}}** wurde erfolgreich mit dieser ChatWoot Inbox verbunden. @@ -84,7 +84,7 @@ APP_CONNECTED_MESSAGE: | Lassen Sie uns beginnen! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **GETRENNT: WhatsApp-Sitzung von ChatWoot Inbox** ❌ WhatsApp-Sitzung **{{{name}}}** wurde von dieser ChatWoot Inbox getrennt. @@ -93,12 +93,12 @@ APP_DISCONNECTED_MESSAGE: | Um eine erneute Verbindung herzustellen, wenden Sie sich bitte an Ihren Administrator. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **AKTUALISIERT: WhatsApp-Sitzungseinstellungen** ✅ Einstellungen für WhatsApp-Sitzung **{{{name}}}** wurden aktualisiert. -APP_COMMANDS_LIST: | +app.commands.list: | Sie können die **WhatsApp Integration** verwalten, indem Sie einen der folgenden Befehle senden: 🖥️ Sitzungen: @@ -118,35 +118,32 @@ APP_COMMANDS_LIST: | Senden Sie einen **Befehl** (Groß-/Kleinschreibung wird nicht beachtet) oder eine **Befehlsnummer** an diese Konversation. -APP_HELP_REMINDER: | +app.help.reminder: | Senden Sie **help**, um die Liste der verfügbaren Befehle zu erhalten. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} Sitzung "{{{session}}}" hat den Status zu {{{status}}} gewechselt -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} **{{{session}}}** Sitzungsstatus ist **{{{status}}}** **WhatsApp-Konto:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - Besuchen Sie das [WAHA Dashboard]({{{url}}}) für weitere Details. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ Diese ChatWoot Inbox ist mit dem **WhatsApp-Konto** verknüpft und bereit zum Senden und Empfangen von Nachrichten! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **Diese ChatWoot Inbox ist mit dem WhatsApp-Konto verknüpft, aber NICHT bereit zum Senden und Empfangen von Nachrichten!** Bitte überprüfen Sie den Sitzungsstatus und versuchen Sie, sie neu zu starten oder melden Sie sich ab und scannen Sie den QR-Code erneut. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **Scannen Sie den QR-Code auf Ihrem Telefon, um das WhatsApp-Konto mit dieser ChatWoot Inbox zu verknüpfen!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **Version:** ``` {{{version}}} @@ -157,16 +154,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | Server wird ordnungsgemäß neu gestartet... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | Server wird erzwungen neu gestartet... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ Konto erfolgreich abgemeldet! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **Neue Version verfügbar!** Aktuelle Version: **{{{currentVersion}}}** @@ -174,7 +171,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 Sehen Sie, was neu ist im [**🆕 Änderungsprotokoll**]({{{changelogUrl}}}) -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **Unterstützen Sie WAHA!** Sie verwenden die kostenlose **WAHA Core** Version. Wenn Sie dieses Projekt nützlich finden, erwägen Sie bitte, seine Entwicklung zu unterstützen. diff --git a/src/apps/chatwoot/i18n/en-US.yaml b/src/apps/chatwoot/i18n/locales/en-US.yaml similarity index 77% rename from src/apps/chatwoot/i18n/en-US.yaml rename to src/apps/chatwoot/i18n/locales/en-US.yaml index f24bcb81..3ddd05a5 100644 --- a/src/apps/chatwoot/i18n/en-US.yaml +++ b/src/apps/chatwoot/i18n/locales/en-US.yaml @@ -1,9 +1,10 @@ # English translations for ChatWoot integration -LOCALE_NAME: '🇺🇸 English (English)' -APP_INBOX_CONTACT_NAME: 'WhatsApp Integration (WAHA)' -APP_INBOX_CONTACT_AVATAR_URL: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png' +locale.name: '🇺🇸 English (English)' -JOB_ERROR_REPORT: | +app.inbox.contact.name: 'WhatsApp Integration (WAHA)' +app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png' + +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 Retrying in {{attempts.nextDelay}} seconds... @@ -20,51 +21,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **Succeeded** Attempt: {{{attempts.current}}} / {{{attempts.max}}} Details: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: Couldn't send a message on WhatsApp. -WHATSAPP_ERROR_RECEIVING_MESSAGE: Couldn't receive a message from WhatsApp -WHATSAPP_ERROR_REMOVING_MESSAGE: Couldn't remove a message from WhatsApp -APP_SCHEDULED_JOB_ERROR: Scheduled job failed to execute +whatsapp.message.sending.error: Couldn't send a message on WhatsApp. +whatsapp.message.receiving.error: Couldn't receive a message from WhatsApp +whatsapp.message.removing.error: Couldn't remove a message from WhatsApp +job.scheduled.error.header: Scheduled job failed to execute -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *Sent from WhatsApp* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *Sent via API* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *This message was deleted in WhatsApp* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *Edited in WhatsApp* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *Reacted* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *Reaction removed* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'Group' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'Channel' +whatsapp.contact.group.suffix: 'Group' +whatsapp.contact.channel.suffix: 'Channel' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'Status' +whatsapp.contact.status.name: 'Status' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **CONNECTED: WhatsApp Session to ChatWoot Inbox** ✅ WhatsApp session **{{{name}}}** has been successfully connected to this ChatWoot Inbox. @@ -82,7 +83,7 @@ APP_CONNECTED_MESSAGE: | Let's get started! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **DISCONNECTED: WhatsApp Session from ChatWoot Inbox** ❌ WhatsApp session **{{{name}}}** has been disconnected from this ChatWoot Inbox. @@ -91,12 +92,12 @@ APP_DISCONNECTED_MESSAGE: | To reconnect, please contact your administrator. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **UPDATED: WhatsApp Session Settings** ✅ Settings for WhatsApp session **{{{name}}}** have been updated. -APP_COMMANDS_LIST: | +app.commands.list: | You can manage **WhatsApp Integration** by sending one of the following commands: 🖥️ Sessions: @@ -116,35 +117,32 @@ APP_COMMANDS_LIST: | Send a **command** (case insensitive) or a **command number** to this conversation. -APP_HELP_REMINDER: | +app.help.reminder: | Send **help** to get the list of available commands. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} "{{{session}}}" session switched to {{{status}}} status -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} **{{{session}}}** session status is in **{{{status}}}** **WhatsApp Account:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - Visit [WAHA Dashboard]({{{url}}}) for more details. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ This ChatWoot Inbox is linked to **WhatsApp Account** and ready to send and receive messages! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **This ChatWoot Inbox is linked to WhatsApp Account but NOT ready to send and receive messages!** Please check the session status and try restarting it or logout and scan the QR code again. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **Scan the QR code on your phone to link WhatsApp Account with this ChatWoot Inbox!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **Version:** ``` {{{version}}} @@ -155,16 +153,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | Server is rebooting gracefully... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | Server is force rebooting... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ Account unauthorized successfully! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **New Version Available!** Current version: **{{{currentVersion}}}** @@ -172,7 +170,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 Check out what's new in the [**🆕 Changelog**]({{{changelogUrl}}}) -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **Support WAHA!** You're using the free **WAHA Core** version. If you find this project useful, please consider supporting its development. diff --git a/src/apps/chatwoot/i18n/es-ES.yaml b/src/apps/chatwoot/i18n/locales/es-ES.yaml similarity index 80% rename from src/apps/chatwoot/i18n/es-ES.yaml rename to src/apps/chatwoot/i18n/locales/es-ES.yaml index 7d71eb7e..a681a8f8 100644 --- a/src/apps/chatwoot/i18n/es-ES.yaml +++ b/src/apps/chatwoot/i18n/locales/es-ES.yaml @@ -1,8 +1,8 @@ # Spanish translations for ChatWoot integration -LOCALE_NAME: '🇪🇸 Español (Spanish)' -APP_INBOX_CONTACT_NAME: 'Integración de WhatsApp (WAHA)' +locale.name: '🇪🇸 Español (Spanish)' +app.inbox.contact.name: 'Integración de WhatsApp (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 Reintentando en {{attempts.nextDelay}} segundos... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **Éxito** Intento: {{{attempts.current}}} / {{{attempts.max}}} Detalles: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: No se pudo enviar un mensaje en WhatsApp. -WHATSAPP_ERROR_RECEIVING_MESSAGE: No se pudo recibir un mensaje de WhatsApp -WHATSAPP_ERROR_REMOVING_MESSAGE: No se pudo eliminar un mensaje de WhatsApp -APP_SCHEDULED_JOB_ERROR: La tarea programada no se pudo ejecutar +whatsapp.message.sending.error: No se pudo enviar un mensaje en WhatsApp. +whatsapp.message.receiving.error: No se pudo recibir un mensaje de WhatsApp +whatsapp.message.removing.error: No se pudo eliminar un mensaje de WhatsApp +job.scheduled.error.header: La tarea programada no se pudo ejecutar -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *Enviado desde WhatsApp* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *Enviado a través de API* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *Este mensaje fue eliminado en WhatsApp* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *Editado en WhatsApp* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *Reaccionó con* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *Reacción eliminada* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'Grupo' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'Canal' +whatsapp.contact.group.suffix: 'Grupo' +whatsapp.contact.channel.suffix: 'Canal' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'Estado' +whatsapp.contact.status.name: 'Estado' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **CONECTADO: Sesión de WhatsApp a Bandeja de Entrada de ChatWoot** ✅ La sesión de WhatsApp **{{{name}}}** ha sido conectada exitosamente a esta Bandeja de Entrada de ChatWoot. @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | ¡Comencemos! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **DESCONECTADO: Sesión de WhatsApp de Bandeja de Entrada de ChatWoot** ❌ La sesión de WhatsApp **{{{name}}}** ha sido desconectada de esta Bandeja de Entrada de ChatWoot. @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | Para reconectar, por favor contacta a tu administrador. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **ACTUALIZADO: Configuración de Sesión de WhatsApp** ✅ La configuración para la sesión de WhatsApp **{{{name}}}** ha sido actualizada. -APP_COMMANDS_LIST: | +app.commands.list: | Puedes gestionar la **Integración de WhatsApp** enviando uno de los siguientes comandos: 🖥️ Sesiones: @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | Envía un **comando** (no sensible a mayúsculas/minúsculas) o un **número de comando** a esta conversación. -APP_HELP_REMINDER: | +app.help.reminder: | Envía **help** para obtener la lista de comandos disponibles. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} La sesión "{{{session}}}" cambió al estado {{{status}}} -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} El estado de la sesión **{{{session}}}** es **{{{status}}}** **Cuenta de WhatsApp:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - Visita el [Panel de WAHA]({{{url}}}) para más detalles. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ ¡Esta Bandeja de Entrada de ChatWoot está vinculada a la **Cuenta de WhatsApp** y lista para enviar y recibir mensajes! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **¡Esta Bandeja de Entrada de ChatWoot está vinculada a la Cuenta de WhatsApp pero NO está lista para enviar y recibir mensajes!** Por favor, comprueba el estado de la sesión e intenta reiniciarla o cierra sesión y escanea el código QR de nuevo. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **¡Escanea el código QR en tu teléfono para vincular la Cuenta de WhatsApp con esta Bandeja de Entrada de ChatWoot!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **Versión:** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | El servidor se está reiniciando de forma segura... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | El servidor se está reiniciando forzadamente... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ ¡Cuenta desautorizada con éxito! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **¡Nueva Versión Disponible!** Versión actual: **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 Mira qué hay de nuevo en el [**🆕 Registro de Cambios**]({{{changelogUrl}}}) -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **¡Apoya a WAHA!** Estás usando la versión gratuita **WAHA Core**. Si encuentras útil este proyecto, por favor considera apoyar su desarrollo. diff --git a/src/apps/chatwoot/i18n/fa-IR.yaml b/src/apps/chatwoot/i18n/locales/fa-IR.yaml similarity index 83% rename from src/apps/chatwoot/i18n/fa-IR.yaml rename to src/apps/chatwoot/i18n/locales/fa-IR.yaml index de89169d..a7132d3e 100644 --- a/src/apps/chatwoot/i18n/fa-IR.yaml +++ b/src/apps/chatwoot/i18n/locales/fa-IR.yaml @@ -1,8 +1,8 @@ # Persian translations for ChatWoot integration -LOCALE_NAME: '🇮🇷 فارسی (Persian)' -APP_INBOX_CONTACT_NAME: 'ادغام واتساپ (WAHA)' +locale.name: '🇮🇷 فارسی (Persian)' +app.inbox.contact.name: 'ادغام واتساپ (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 تلاش مجدد در {{attempts.nextDelay}} ثانیه... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **موفقیت‌آمیز** تلاش: {{{attempts.current}}} / {{{attempts.max}}} جزئیات: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: ارسال پیام در واتساپ امکان‌پذیر نبود. -WHATSAPP_ERROR_RECEIVING_MESSAGE: دریافت پیام از واتساپ امکان‌پذیر نبود -WHATSAPP_ERROR_REMOVING_MESSAGE: حذف پیام از واتساپ امکان‌پذیر نبود -APP_SCHEDULED_JOB_ERROR: اجرای کار زمان‌بندی شده ناموفق بود +whatsapp.message.sending.error: ارسال پیام در واتساپ امکان‌پذیر نبود. +whatsapp.message.receiving.error: دریافت پیام از واتساپ امکان‌پذیر نبود +whatsapp.message.removing.error: حذف پیام از واتساپ امکان‌پذیر نبود +job.scheduled.error.header: اجرای کار زمان‌بندی شده ناموفق بود -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *ارسال شده از واتساپ* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *ارسال شده از طریق API* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *این پیام در واتساپ حذف شده است* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *ویرایش شده در واتساپ* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *واکنش* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *واکنش حذف شد* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'گروه' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'کانال' +whatsapp.contact.group.suffix: 'گروه' +whatsapp.contact.channel.suffix: 'کانال' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'وضعیت' +whatsapp.contact.status.name: 'وضعیت' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **متصل: جلسه واتساپ به صندوق ورودی ChatWoot** ✅ جلسه واتساپ **{{{name}}}** با موفقیت به این صندوق ورودی ChatWoot متصل شده است. @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | بیایید شروع کنیم! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **قطع اتصال: جلسه واتساپ از صندوق ورودی ChatWoot** ❌ جلسه واتساپ **{{{name}}}** از این صندوق ورودی ChatWoot قطع شده است. @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | برای اتصال مجدد، لطفاً با مدیر خود تماس بگیرید. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **به‌روزرسانی: تنظیمات جلسه واتساپ** ✅ تنظیمات جلسه واتساپ **{{{name}}}** به‌روزرسانی شده است. -APP_COMMANDS_LIST: | +app.commands.list: | شما می‌توانید **ادغام واتساپ** را با ارسال یکی از دستورات زیر مدیریت کنید: 🖥️ جلسات: @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | یک **دستور** (بدون حساسیت به بزرگی و کوچکی حروف) یا **شماره دستور** را به این گفتگو ارسال کنید. -APP_HELP_REMINDER: | +app.help.reminder: | برای دریافت لیست دستورات موجود، **help** را ارسال کنید. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} جلسه "{{{session}}}" به وضعیت {{{status}}} تغییر کرد -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} وضعیت جلسه **{{{session}}}** در **{{{status}}}** است **حساب واتساپ:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - برای جزئیات بیشتر به [داشبورد WAHA]({{{url}}}) مراجعه کنید. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ این صندوق ورودی ChatWoot به **حساب واتساپ** متصل است و آماده ارسال و دریافت پیام است! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **این صندوق ورودی ChatWoot به حساب واتساپ متصل است اما آماده ارسال و دریافت پیام نیست!** لطفاً وضعیت جلسه را بررسی کنید و سعی کنید آن را مجدداً راه‌اندازی کنید یا خارج شوید و کد QR را دوباره اسکن کنید. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **کد QR را در تلفن خود اسکن کنید تا حساب واتساپ را با این صندوق ورودی ChatWoot پیوند دهید!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **نسخه:** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | سرور در حال راه‌اندازی مجدد نرم است... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | سرور در حال راه‌اندازی مجدد اجباری است... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ حساب با موفقیت غیرمجاز شد! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **نسخه جدید در دسترس است!** نسخه فعلی: **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 موارد جدید را در [**🆕 تغییرات**]({{{changelogUrl}}}) مشاهده کنید -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **از WAHA پشتیبانی کنید!** شما از نسخه رایگان **WAHA Core** استفاده می‌کنید. اگر این پروژه را مفید می‌دانید، لطفاً حمایت از توسعه آن را در نظر بگیرید. diff --git a/src/apps/chatwoot/i18n/fr-FR.yaml b/src/apps/chatwoot/i18n/locales/fr-FR.yaml similarity index 80% rename from src/apps/chatwoot/i18n/fr-FR.yaml rename to src/apps/chatwoot/i18n/locales/fr-FR.yaml index 092d8e70..826d1e3a 100644 --- a/src/apps/chatwoot/i18n/fr-FR.yaml +++ b/src/apps/chatwoot/i18n/locales/fr-FR.yaml @@ -1,8 +1,8 @@ # French translations for ChatWoot integration -LOCALE_NAME: '🇫🇷 Français (French)' -APP_INBOX_CONTACT_NAME: 'Intégration WhatsApp (WAHA)' +locale.name: '🇫🇷 Français (French)' +app.inbox.contact.name: 'Intégration WhatsApp (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 Nouvelle tentative dans {{attempts.nextDelay}} secondes... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **Réussi** Tentative : {{{attempts.current}}} / {{{attempts.max}}} Détails : [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: Impossible d'envoyer un message sur WhatsApp. -WHATSAPP_ERROR_RECEIVING_MESSAGE: Impossible de recevoir un message de WhatsApp -WHATSAPP_ERROR_REMOVING_MESSAGE: Impossible de supprimer un message de WhatsApp -APP_SCHEDULED_JOB_ERROR: La tâche planifiée n'a pas pu être exécutée +whatsapp.message.sending.error: Impossible d'envoyer un message sur WhatsApp. +whatsapp.message.receiving.error: Impossible de recevoir un message de WhatsApp +whatsapp.message.removing.error: Impossible de supprimer un message de WhatsApp +job.scheduled.error.header: La tâche planifiée n'a pas pu être exécutée -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *Envoyé depuis WhatsApp* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *Envoyé via API* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *Ce message a été supprimé dans WhatsApp* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *Modifié dans WhatsApp* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *A réagi avec* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *Réaction supprimée* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'Groupe' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'Canal' +whatsapp.contact.group.suffix: 'Groupe' +whatsapp.contact.channel.suffix: 'Canal' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'Statut' +whatsapp.contact.status.name: 'Statut' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **CONNECTÉ : Session WhatsApp à la Boîte de Réception ChatWoot** ✅ La session WhatsApp **{{{name}}}** a été connectée avec succès à cette Boîte de Réception ChatWoot. @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | Commençons ! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **DÉCONNECTÉ : Session WhatsApp de la Boîte de Réception ChatWoot** ❌ La session WhatsApp **{{{name}}}** a été déconnectée de cette Boîte de Réception ChatWoot. @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | Pour vous reconnecter, veuillez contacter votre administrateur. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **MIS À JOUR : Paramètres de Session WhatsApp** ✅ Les paramètres de la session WhatsApp **{{{name}}}** ont été mis à jour. -APP_COMMANDS_LIST: | +app.commands.list: | Vous pouvez gérer l'**Intégration WhatsApp** en envoyant l'une des commandes suivantes : 🖥️ Sessions : @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | Envoyez une **commande** (insensible à la casse) ou un **numéro de commande** à cette conversation. -APP_HELP_REMINDER: | +app.help.reminder: | Envoyez **help** pour obtenir la liste des commandes disponibles. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} La session "{{{session}}}" est passée au statut {{{status}}} -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} Le statut de la session **{{{session}}}** est **{{{status}}}** **Compte WhatsApp :** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - Visitez le [Tableau de bord WAHA]({{{url}}}) pour plus de détails. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ Cette Boîte de Réception ChatWoot est liée au **Compte WhatsApp** et prête à envoyer et recevoir des messages ! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **Cette Boîte de Réception ChatWoot est liée au Compte WhatsApp mais N'EST PAS prête à envoyer et recevoir des messages !** Veuillez vérifier l'état de la session et essayer de la redémarrer ou déconnectez-vous et scannez à nouveau le code QR. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **Scannez le code QR sur votre téléphone pour lier le Compte WhatsApp à cette Boîte de Réception ChatWoot !** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **Version :** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | Le serveur redémarre en douceur... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | Le serveur redémarre de force... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ Compte déconnecté avec succès ! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **Nouvelle Version Disponible !** Version actuelle : **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 Découvrez les nouveautés dans le [**🆕 Journal des modifications**]({{{changelogUrl}}}) -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **Soutenez WAHA !** Vous utilisez la version gratuite **WAHA Core**. Si vous trouvez ce projet utile, veuillez envisager de soutenir son développement. diff --git a/src/apps/chatwoot/i18n/he-IL.yaml b/src/apps/chatwoot/i18n/locales/he-IL.yaml similarity index 81% rename from src/apps/chatwoot/i18n/he-IL.yaml rename to src/apps/chatwoot/i18n/locales/he-IL.yaml index 441e55f3..1661b2ec 100644 --- a/src/apps/chatwoot/i18n/he-IL.yaml +++ b/src/apps/chatwoot/i18n/locales/he-IL.yaml @@ -1,8 +1,8 @@ # Hebrew translations for ChatWoot integration -LOCALE_NAME: '🇮🇱 עברית (Hebrew)' -APP_INBOX_CONTACT_NAME: 'אינטגרציית וואטסאפ (WAHA)' +locale.name: '🇮🇱 עברית (Hebrew)' +app.inbox.contact.name: 'אינטגרציית וואטסאפ (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 מנסה שוב בעוד {{attempts.nextDelay}} שניות... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **הצליח** ניסיון: {{{attempts.current}}} / {{{attempts.max}}} פרטים: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: לא ניתן לשלוח הודעה בוואטסאפ. -WHATSAPP_ERROR_RECEIVING_MESSAGE: לא ניתן לקבל הודעה מוואטסאפ -WHATSAPP_ERROR_REMOVING_MESSAGE: לא ניתן להסיר הודעה מוואטסאפ -APP_SCHEDULED_JOB_ERROR: המשימה המתוזמנת נכשלה בביצוע +whatsapp.message.sending.error: לא ניתן לשלוח הודעה בוואטסאפ. +whatsapp.message.receiving.error: לא ניתן לקבל הודעה מוואטסאפ +whatsapp.message.removing.error: לא ניתן להסיר הודעה מוואטסאפ +job.scheduled.error.header: המשימה המתוזמנת נכשלה בביצוע -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *נשלח מוואטסאפ* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *נשלח דרך API* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *הודעה זו נמחקה בוואטסאפ* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *נערך בוואטסאפ* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *הגיב* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *התגובה הוסרה* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'קבוצה' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'ערוץ' +whatsapp.contact.group.suffix: 'קבוצה' +whatsapp.contact.channel.suffix: 'ערוץ' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'סטטוס' +whatsapp.contact.status.name: 'סטטוס' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **מחובר: הפעלת וואטסאפ לתיבת הדואר הנכנס של ChatWoot** ✅ הפעלת וואטסאפ **{{{name}}}** חוברה בהצלחה לתיבת הדואר הנכנס של ChatWoot. @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | בוא נתחיל! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **מנותק: הפעלת וואטסאפ מתיבת הדואר הנכנס של ChatWoot** ❌ הפעלת וואטסאפ **{{{name}}}** נותקה מתיבת הדואר הנכנס של ChatWoot. @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | כדי להתחבר מחדש, אנא פנה למנהל המערכת שלך. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **עודכן: הגדרות הפעלת וואטסאפ** ✅ ההגדרות עבור הפעלת וואטסאפ **{{{name}}}** עודכנו. -APP_COMMANDS_LIST: | +app.commands.list: | אתה יכול לנהל **אינטגרציית וואטסאפ** על ידי שליחת אחת מהפקודות הבאות: 🖥️ הפעלות: @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | שלח **פקודה** (לא תלוי רישיות) או **מספר פקודה** לשיחה זו. -APP_HELP_REMINDER: | +app.help.reminder: | שלח **help** כדי לקבל את רשימת הפקודות הזמינות. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} הפעלה "{{{session}}}" עברה לסטטוס {{{status}}} -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} סטטוס ההפעלה **{{{session}}}** הוא **{{{status}}}** **חשבון וואטסאפ:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - בקר ב[לוח הבקרה של WAHA]({{{url}}}) לפרטים נוספים. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ תיבת הדואר הנכנס של ChatWoot מקושרת ל**חשבון וואטסאפ** ומוכנה לשלוח ולקבל הודעות! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **תיבת הדואר הנכנס של ChatWoot מקושרת לחשבון וואטסאפ אך אינה מוכנה לשלוח ולקבל הודעות!** אנא בדוק את סטטוס ההפעלה ונסה להפעיל אותה מחדש או התנתק וסרוק את קוד ה-QR שוב. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **סרוק את קוד ה-QR בטלפון שלך כדי לקשר את חשבון הוואטסאפ לתיבת הדואר הנכנס של ChatWoot!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **גרסה:** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | השרת מופעל מחדש בצורה חלקה... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | השרת מופעל מחדש בכוח... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ החשבון בוטל בהצלחה! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **גרסה חדשה זמינה!** גרסה נוכחית: **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 בדוק מה חדש ב[**🆕 יומן שינויים**]({{{changelogUrl}}}) -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **תמוך ב-WAHA!** אתה משתמש בגרסת **WAHA Core** החינמית. אם אתה מוצא פרויקט זה שימושי, אנא שקול לתמוך בפיתוח שלו. diff --git a/src/apps/chatwoot/i18n/hi-IN.yaml b/src/apps/chatwoot/i18n/locales/hi-IN.yaml similarity index 86% rename from src/apps/chatwoot/i18n/hi-IN.yaml rename to src/apps/chatwoot/i18n/locales/hi-IN.yaml index 6bdd1f46..786535aa 100644 --- a/src/apps/chatwoot/i18n/hi-IN.yaml +++ b/src/apps/chatwoot/i18n/locales/hi-IN.yaml @@ -1,8 +1,8 @@ # Hindi translations for ChatWoot integration -LOCALE_NAME: '🇮🇳 हिंदी (Hindi)' -APP_INBOX_CONTACT_NAME: 'व्हाट्सएप इंटीग्रेशन (WAHA)' +locale.name: '🇮🇳 हिंदी (Hindi)' +app.inbox.contact.name: 'व्हाट्सएप इंटीग्रेशन (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 {{attempts.nextDelay}} सेकंड में पुनः प्रयास कर रहा है... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **सफल** प्रयास: {{{attempts.current}}} / {{{attempts.max}}} विवरण: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: व्हाट्सएप पर संदेश नहीं भेज सका। -WHATSAPP_ERROR_RECEIVING_MESSAGE: व्हाट्सएप से संदेश प्राप्त नहीं कर सका -WHATSAPP_ERROR_REMOVING_MESSAGE: व्हाट्सएप से संदेश हटा नहीं सका -APP_SCHEDULED_JOB_ERROR: निर्धारित कार्य निष्पादित करने में विफल रहा +whatsapp.message.sending.error: व्हाट्सएप पर संदेश नहीं भेज सका। +whatsapp.message.receiving.error: व्हाट्सएप से संदेश प्राप्त नहीं कर सका +whatsapp.message.removing.error: व्हाट्सएप से संदेश हटा नहीं सका +job.scheduled.error.header: निर्धारित कार्य निष्पादित करने में विफल रहा -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *व्हाट्सएप से भेजा गया* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *API के माध्यम से भेजा गया* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *यह संदेश व्हाट्सएप में हटा दिया गया था* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *व्हाट्सएप में संपादित* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *प्रतिक्रिया दी* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *प्रतिक्रिया हटा दी गई* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'समूह' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'चैनल' +whatsapp.contact.group.suffix: 'समूह' +whatsapp.contact.channel.suffix: 'चैनल' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'स्थिति' +whatsapp.contact.status.name: 'स्थिति' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **कनेक्टेड: व्हाट्सएप सत्र से ChatWoot इनबॉक्स** ✅ व्हाट्सएप सत्र **{{{name}}}** सफलतापूर्वक इस ChatWoot इनबॉक्स से जुड़ गया है। @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | चलिए शुरू करते हैं! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **डिस्कनेक्टेड: व्हाट्सएप सत्र से ChatWoot इनबॉक्स** ❌ व्हाट्सएप सत्र **{{{name}}}** इस ChatWoot इनबॉक्स से डिस्कनेक्ट हो गया है। @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | फिर से कनेक्ट करने के लिए, कृपया अपने प्रशासक से संपर्क करें। -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **अपडेटेड: व्हाट्सएप सत्र सेटिंग्स** ✅ व्हाट्सएप सत्र **{{{name}}}** की सेटिंग्स अपडेट की गई हैं। -APP_COMMANDS_LIST: | +app.commands.list: | आप निम्न कमांड में से एक भेजकर **व्हाट्सएप इंटीग्रेशन** का प्रबंधन कर सकते हैं: 🖥️ सत्र: @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | इस वार्तालाप में **कमांड** (केस इनसेंसिटिव) या **कमांड नंबर** भेजें। -APP_HELP_REMINDER: | +app.help.reminder: | उपलब्ध कमांड की सूची प्राप्त करने के लिए **help** भेजें। -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} "{{{session}}}" सत्र {{{status}}} स्थिति में बदल गया -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} **{{{session}}}** सत्र की स्थिति **{{{status}}}** में है **व्हाट्सएप खाता:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - अधिक जानकारी के लिए [WAHA डैशबोर्ड]({{{url}}}) पर जाएं। - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ यह ChatWoot इनबॉक्स **व्हाट्सएप खाते** से जुड़ा हुआ है और संदेश भेजने और प्राप्त करने के लिए तैयार है! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **यह ChatWoot इनबॉक्स व्हाट्सएप खाते से जुड़ा हुआ है लेकिन संदेश भेजने और प्राप्त करने के लिए तैयार नहीं है!** कृपया सत्र की स्थिति जांचें और इसे पुनरारंभ करने का प्रयास करें या लॉग आउट करें और QR कोड फिर से स्कैन करें। -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **इस ChatWoot इनबॉक्स के साथ व्हाट्सएप खाता जोड़ने के लिए अपने फोन पर QR कोड स्कैन करें!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **संस्करण:** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | सर्वर सुचारू रूप से पुनरारंभ हो रहा है... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | सर्वर जबरदस्ती पुनरारंभ हो रहा है... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ खाता सफलतापूर्वक अनधिकृत किया गया! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **नया संस्करण उपलब्ध!** वर्तमान संस्करण: **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 [**🆕 चेंजलॉग**]({{{changelogUrl}}}) में क्या नया है देखें -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **WAHA का समर्थन करें!** आप मुफ्त **WAHA Core** संस्करण का उपयोग कर रहे हैं। यदि आपको यह प्रोजेक्ट उपयोगी लगता है, तो कृपया इसके विकास का समर्थन करने पर विचार करें। diff --git a/src/apps/chatwoot/i18n/id-ID.yaml b/src/apps/chatwoot/i18n/locales/id-ID.yaml similarity index 78% rename from src/apps/chatwoot/i18n/id-ID.yaml rename to src/apps/chatwoot/i18n/locales/id-ID.yaml index d0660469..d7b569c1 100644 --- a/src/apps/chatwoot/i18n/id-ID.yaml +++ b/src/apps/chatwoot/i18n/locales/id-ID.yaml @@ -1,8 +1,8 @@ # Indonesian translations for ChatWoot integration -LOCALE_NAME: '🇮🇩 Bahasa Indonesia (Indonesian)' -APP_INBOX_CONTACT_NAME: 'Integrasi WhatsApp (WAHA)' +locale.name: '🇮🇩 Bahasa Indonesia (Indonesian)' +app.inbox.contact.name: 'Integrasi WhatsApp (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 Mencoba lagi dalam {{attempts.nextDelay}} detik... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **Berhasil** Percobaan: {{{attempts.current}}} / {{{attempts.max}}} Detail: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: Tidak dapat mengirim pesan di WhatsApp. -WHATSAPP_ERROR_RECEIVING_MESSAGE: Tidak dapat menerima pesan dari WhatsApp -WHATSAPP_ERROR_REMOVING_MESSAGE: Tidak dapat menghapus pesan dari WhatsApp -APP_SCHEDULED_JOB_ERROR: Tugas terjadwal gagal dijalankan +whatsapp.message.sending.error: Tidak dapat mengirim pesan di WhatsApp. +whatsapp.message.receiving.error: Tidak dapat menerima pesan dari WhatsApp +whatsapp.message.removing.error: Tidak dapat menghapus pesan dari WhatsApp +job.scheduled.error.header: Tugas terjadwal gagal dijalankan -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *Dikirim dari WhatsApp* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *Dikirim melalui API* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *Pesan ini telah dihapus di WhatsApp* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *Diedit di WhatsApp* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *Bereaksi* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *Reaksi dihapus* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'Grup' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'Saluran' +whatsapp.contact.group.suffix: 'Grup' +whatsapp.contact.channel.suffix: 'Saluran' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'Status' +whatsapp.contact.status.name: 'Status' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **TERHUBUNG: Sesi WhatsApp ke Kotak Masuk ChatWoot** ✅ Sesi WhatsApp **{{{name}}}** telah berhasil terhubung ke Kotak Masuk ChatWoot ini. @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | Mari kita mulai! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **TERPUTUS: Sesi WhatsApp dari Kotak Masuk ChatWoot** ❌ Sesi WhatsApp **{{{name}}}** telah terputus dari Kotak Masuk ChatWoot ini. @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | Untuk menghubungkan kembali, silakan hubungi administrator Anda. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **DIPERBARUI: Pengaturan Sesi WhatsApp** ✅ Pengaturan untuk sesi WhatsApp **{{{name}}}** telah diperbarui. -APP_COMMANDS_LIST: | +app.commands.list: | Anda dapat mengelola **Integrasi WhatsApp** dengan mengirimkan salah satu perintah berikut: 🖥️ Sesi: @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | Kirim **perintah** (tidak peka huruf besar/kecil) atau **nomor perintah** ke percakapan ini. -APP_HELP_REMINDER: | +app.help.reminder: | Kirim **help** untuk mendapatkan daftar perintah yang tersedia. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} Sesi "{{{session}}}" beralih ke status {{{status}}} -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} Status sesi **{{{session}}}** adalah **{{{status}}}** **Akun WhatsApp:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - Kunjungi [Dasbor WAHA]({{{url}}}) untuk detail lebih lanjut. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ Kotak Masuk ChatWoot ini terhubung ke **Akun WhatsApp** dan siap untuk mengirim dan menerima pesan! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **Kotak Masuk ChatWoot ini terhubung ke Akun WhatsApp tetapi TIDAK siap untuk mengirim dan menerima pesan!** Silakan periksa status sesi dan coba mulai ulang atau keluar dan pindai kode QR lagi. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **Pindai kode QR di ponsel Anda untuk menghubungkan Akun WhatsApp dengan Kotak Masuk ChatWoot ini!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **Versi:** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | Server sedang dimulai ulang dengan anggun... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | Server sedang dipaksa untuk dimulai ulang... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ Akun berhasil tidak diotorisasi! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **Versi Baru Tersedia!** Versi saat ini: **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 Lihat apa yang baru di [**🆕 Changelog**]({{{changelogUrl}}}) -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **Dukung WAHA!** Anda menggunakan versi **WAHA Core** gratis. Jika Anda merasa proyek ini bermanfaat, harap pertimbangkan untuk mendukung pengembangannya. diff --git a/src/apps/chatwoot/i18n/pa-PK.yaml b/src/apps/chatwoot/i18n/locales/pa-PK.yaml similarity index 86% rename from src/apps/chatwoot/i18n/pa-PK.yaml rename to src/apps/chatwoot/i18n/locales/pa-PK.yaml index cfb4f40f..5b781ad0 100644 --- a/src/apps/chatwoot/i18n/pa-PK.yaml +++ b/src/apps/chatwoot/i18n/locales/pa-PK.yaml @@ -1,8 +1,8 @@ # Punjabi translations for ChatWoot integration -LOCALE_NAME: '🇵🇰 ਪੰਜਾਬੀ (Punjabi)' -APP_INBOX_CONTACT_NAME: 'ਵਟਸਐਪ ਇੰਟੀਗ੍ਰੇਸ਼ਨ (WAHA)' +locale.name: '🇵🇰 ਪੰਜਾਬੀ (Punjabi)' +app.inbox.contact.name: 'ਵਟਸਐਪ ਇੰਟੀਗ੍ਰੇਸ਼ਨ (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 {{attempts.nextDelay}} ਸਕਿੰਟਾਂ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **ਸਫਲ** ਕੋਸ਼ਿਸ਼: {{{attempts.current}}} / {{{attempts.max}}} ਵੇਰਵੇ: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: ਵਟਸਐਪ 'ਤੇ ਸੁਨੇਹਾ ਭੇਜ ਨਹੀਂ ਸਕਿਆ। -WHATSAPP_ERROR_RECEIVING_MESSAGE: ਵਟਸਐਪ ਤੋਂ ਸੁਨੇਹਾ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕਿਆ -WHATSAPP_ERROR_REMOVING_MESSAGE: ਵਟਸਐਪ ਤੋਂ ਸੁਨੇਹਾ ਹਟਾ ਨਹੀਂ ਸਕਿਆ -APP_SCHEDULED_JOB_ERROR: ਨਿਰਧਾਰਿਤ ਕੰਮ ਚਲਾਉਣ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ +whatsapp.message.sending.error: ਵਟਸਐਪ 'ਤੇ ਸੁਨੇਹਾ ਭੇਜ ਨਹੀਂ ਸਕਿਆ। +whatsapp.message.receiving.error: ਵਟਸਐਪ ਤੋਂ ਸੁਨੇਹਾ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕਿਆ +whatsapp.message.removing.error: ਵਟਸਐਪ ਤੋਂ ਸੁਨੇਹਾ ਹਟਾ ਨਹੀਂ ਸਕਿਆ +job.scheduled.error.header: ਨਿਰਧਾਰਿਤ ਕੰਮ ਚਲਾਉਣ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *ਵਟਸਐਪ ਤੋਂ ਭੇਜਿਆ ਗਿਆ* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *API ਰਾਹੀਂ ਭੇਜਿਆ ਗਿਆ* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *ਇਹ ਸੁਨੇਹਾ ਵਟਸਐਪ ਵਿੱਚ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਸੀ* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *ਵਟਸਐਪ ਵਿੱਚ ਸੰਪਾਦਿਤ ਕੀਤਾ ਗਿਆ* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *ਪ੍ਰਤੀਕਿਰਿਆ ਕੀਤੀ* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *ਪ੍ਰਤੀਕਿਰਿਆ ਹਟਾਈ ਗਈ* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'ਗਰੁੱਪ' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'ਚੈਨਲ' +whatsapp.contact.group.suffix: 'ਗਰੁੱਪ' +whatsapp.contact.channel.suffix: 'ਚੈਨਲ' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'ਸਥਿਤੀ' +whatsapp.contact.status.name: 'ਸਥਿਤੀ' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **ਕਨੈਕਟ ਕੀਤਾ: ਵਟਸਐਪ ਸੈਸ਼ਨ ਤੋਂ ChatWoot ਇਨਬਾਕਸ** ✅ ਵਟਸਐਪ ਸੈਸ਼ਨ **{{{name}}}** ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਇਸ ChatWoot ਇਨਬਾਕਸ ਨਾਲ ਜੋੜਿਆ ਗਿਆ ਹੈ। @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | ਆਓ ਸ਼ੁਰੂ ਕਰੀਏ! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **ਡਿਸਕਨੈਕਟ ਕੀਤਾ: ਵਟਸਐਪ ਸੈਸ਼ਨ ਤੋਂ ChatWoot ਇਨਬਾਕਸ** ❌ ਵਟਸਐਪ ਸੈਸ਼ਨ **{{{name}}}** ਇਸ ChatWoot ਇਨਬਾਕਸ ਤੋਂ ਡਿਸਕਨੈਕਟ ਕੀਤਾ ਗਿਆ ਹੈ। @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | ਮੁੜ ਕਨੈਕਟ ਕਰਨ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ। -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **ਅਪਡੇਟ ਕੀਤਾ: ਵਟਸਐਪ ਸੈਸ਼ਨ ਸੈਟਿੰਗਾਂ** ✅ ਵਟਸਐਪ ਸੈਸ਼ਨ **{{{name}}}** ਲਈ ਸੈਟਿੰਗਾਂ ਅਪਡੇਟ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ। -APP_COMMANDS_LIST: | +app.commands.list: | ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਕਮਾਂਡਾਂ ਵਿੱਚੋਂ ਇੱਕ ਭੇਜ ਕੇ **ਵਟਸਐਪ ਇੰਟੀਗ੍ਰੇਸ਼ਨ** ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕਦੇ ਹੋ: 🖥️ ਸੈਸ਼ਨ: @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | ਇਸ ਗੱਲਬਾਤ ਵਿੱਚ **ਕਮਾਂਡ** (ਕੇਸ ਇਨਸੈਂਸਿਟਿਵ) ਜਾਂ **ਕਮਾਂਡ ਨੰਬਰ** ਭੇਜੋ। -APP_HELP_REMINDER: | +app.help.reminder: | ਉਪਲਬਧ ਕਮਾਂਡਾਂ ਦੀ ਸੂਚੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ **help** ਭੇਜੋ। -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} "{{{session}}}" ਸੈਸ਼ਨ {{{status}}} ਸਥਿਤੀ 'ਤੇ ਬਦਲ ਗਿਆ -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} **{{{session}}}** ਸੈਸ਼ਨ ਸਥਿਤੀ **{{{status}}}** ਵਿੱਚ ਹੈ **ਵਟਸਐਪ ਖਾਤਾ:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - ਵਧੇਰੇ ਵੇਰਵਿਆਂ ਲਈ [WAHA ਡੈਸ਼ਬੋਰਡ]({{{url}}}) 'ਤੇ ਜਾਓ। - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ ਇਹ ChatWoot ਇਨਬਾਕਸ **ਵਟਸਐਪ ਖਾਤੇ** ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ ਅਤੇ ਸੁਨੇਹੇ ਭੇਜਣ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਤਿਆਰ ਹੈ! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **ਇਹ ChatWoot ਇਨਬਾਕਸ ਵਟਸਐਪ ਖਾਤੇ ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ ਪਰ ਸੁਨੇਹੇ ਭੇਜਣ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਤਿਆਰ ਨਹੀਂ ਹੈ!** ਕਿਰਪਾ ਕਰਕੇ ਸੈਸ਼ਨ ਸਥਿਤੀ ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਇਸਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਲੌਗਆਉਟ ਕਰੋ ਅਤੇ QR ਕੋਡ ਦੁਬਾਰਾ ਸਕੈਨ ਕਰੋ। -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **ਵਟਸਐਪ ਖਾਤੇ ਨੂੰ ਇਸ ChatWoot ਇਨਬਾਕਸ ਨਾਲ ਜੋੜਨ ਲਈ ਆਪਣੇ ਫੋਨ 'ਤੇ QR ਕੋਡ ਸਕੈਨ ਕਰੋ!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **ਵਰਜਨ:** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | ਸਰਵਰ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਮੁੜ ਚਾਲੂ ਹੋ ਰਿਹਾ ਹੈ... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | ਸਰਵਰ ਜ਼ਬਰਦਸਤੀ ਮੁੜ ਚਾਲੂ ਹੋ ਰਿਹਾ ਹੈ... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ ਖਾਤਾ ਸਫਲਤਾਪੂਰਵਕ ਅਣਅਧਿਕਾਰਤ ਕੀਤਾ ਗਿਆ! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **ਨਵਾਂ ਵਰਜਨ ਉਪਲਬਧ!** ਮੌਜੂਦਾ ਵਰਜਨ: **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 [**🆕 ਬਦਲਾਅ ਲੌਗ**]({{{changelogUrl}}}) ਵਿੱਚ ਨਵਾਂ ਕੀ ਹੈ ਦੇਖੋ -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **WAHA ਦਾ ਸਮਰਥਨ ਕਰੋ!** ਤੁਸੀਂ ਮੁਫਤ **WAHA Core** ਵਰਜਨ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ। ਜੇ ਤੁਹਾਨੂੰ ਇਹ ਪ੍ਰੋਜੈਕਟ ਲਾਭਦਾਇਕ ਲੱਗਦਾ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਇਸਦੇ ਵਿਕਾਸ ਦਾ ਸਮਰਥਨ ਕਰਨ 'ਤੇ ਵਿਚਾਰ ਕਰੋ। diff --git a/src/apps/chatwoot/i18n/pt-BR.yaml b/src/apps/chatwoot/i18n/locales/pt-BR.yaml similarity index 81% rename from src/apps/chatwoot/i18n/pt-BR.yaml rename to src/apps/chatwoot/i18n/locales/pt-BR.yaml index dc9dde64..111ec499 100644 --- a/src/apps/chatwoot/i18n/pt-BR.yaml +++ b/src/apps/chatwoot/i18n/locales/pt-BR.yaml @@ -1,8 +1,8 @@ # Portuguese translations for ChatWoot integration -LOCALE_NAME: '🇧🇷🇵🇹 Português (Portuguese)' -APP_INBOX_CONTACT_NAME: 'Integração WhatsApp (WAHA)' +locale.name: '🇧🇷🇵🇹 Português (Portuguese)' +app.inbox.contact.name: 'Integração WhatsApp (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 Tentando novamente em {{attempts.nextDelay}} segundos... @@ -19,54 +19,54 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **Sucesso** Tentativa: {{{attempts.current}}} / {{{attempts.max}}} Detalhes: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: +whatsapp.message.sending.error: Não foi possível enviar uma mensagem no WhatsApp. -WHATSAPP_ERROR_RECEIVING_MESSAGE: +whatsapp.message.receiving.error: Não foi possível receber uma mensagem do WhatsApp -WHATSAPP_ERROR_REMOVING_MESSAGE: +whatsapp.message.removing.error: Não foi possível remover uma mensagem do WhatsApp -APP_SCHEDULED_JOB_ERROR: Falha ao executar tarefa agendada +job.scheduled.error.header: Falha ao executar tarefa agendada -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *Enviado do WhatsApp* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *Enviado via API* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *Esta mensagem foi excluída no WhatsApp* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *Editado no WhatsApp* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *Reagiu com* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *Reação removida* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'Grupo' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'Canal' +whatsapp.contact.group.suffix: 'Grupo' +whatsapp.contact.channel.suffix: 'Canal' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'Status' +whatsapp.contact.status.name: 'Status' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **CONECTADO: Sessão do WhatsApp para Caixa de Entrada do ChatWoot** ✅ A sessão do WhatsApp **{{{name}}}** foi conectada com sucesso a esta Caixa de Entrada do ChatWoot. @@ -84,7 +84,7 @@ APP_CONNECTED_MESSAGE: | Vamos começar! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **DESCONECTADO: Sessão do WhatsApp da Caixa de Entrada do ChatWoot** ❌ A sessão do WhatsApp **{{{name}}}** foi desconectada desta Caixa de Entrada do ChatWoot. @@ -93,12 +93,12 @@ APP_DISCONNECTED_MESSAGE: | Para reconectar, entre em contato com seu administrador. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **ATUALIZADO: Configurações da Sessão do WhatsApp** ✅ As configurações para a sessão do WhatsApp **{{{name}}}** foram atualizadas. -APP_COMMANDS_LIST: | +app.commands.list: | Você pode gerenciar a **Integração WhatsApp** enviando um dos seguintes comandos: 🖥️ Sessões: @@ -118,35 +118,32 @@ APP_COMMANDS_LIST: | Envie um **comando** (não sensível a maiúsculas/minúsculas) ou um **número de comando** para esta conversa. -APP_HELP_REMINDER: | +app.help.reminder: | Envie **help** para obter a lista de comandos disponíveis. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} A sessão "{{{session}}}" mudou para o status {{{status}}} -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} O status da sessão **{{{session}}}** é **{{{status}}}** **Conta do WhatsApp:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - Visite o [Painel WAHA]({{{url}}}) para mais detalhes. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ Esta Caixa de Entrada do ChatWoot está vinculada à **Conta do WhatsApp** e pronta para enviar e receber mensagens! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **Esta Caixa de Entrada do ChatWoot está vinculada à Conta do WhatsApp, mas NÃO está pronta para enviar e receber mensagens!** Por favor, verifique o status da sessão e tente reiniciá-la ou saia e escaneie o código QR novamente. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **Escaneie o código QR no seu telefone para vincular a Conta do WhatsApp a esta Caixa de Entrada do ChatWoot!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **Versão:** ``` {{{version}}} @@ -157,16 +154,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | O servidor está reiniciando suavemente... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | O servidor está reiniciando forçadamente... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ Conta desautorizada com sucesso! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **Nova Versão Disponível!** Versão atual: **{{{currentVersion}}}** @@ -174,7 +171,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 Confira o que há de novo no [**🆕 Registro de Alterações**]({{{changelogUrl}}}) -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **Apoie o WAHA!** Você está usando a versão gratuita **WAHA Core**. Se você acha este projeto útil, considere apoiar seu desenvolvimento. diff --git a/src/apps/chatwoot/i18n/ru-RU.yaml b/src/apps/chatwoot/i18n/locales/ru-RU.yaml similarity index 83% rename from src/apps/chatwoot/i18n/ru-RU.yaml rename to src/apps/chatwoot/i18n/locales/ru-RU.yaml index 8acb718f..da6c24e4 100644 --- a/src/apps/chatwoot/i18n/ru-RU.yaml +++ b/src/apps/chatwoot/i18n/locales/ru-RU.yaml @@ -1,8 +1,8 @@ # Russian translations for ChatWoot integration -LOCALE_NAME: '🇷🇺 Русский (Russian)' -APP_INBOX_CONTACT_NAME: 'WhatsApp Интеграция (WAHA)' +locale.name: '🇷🇺 Русский (Russian)' +app.inbox.contact.name: 'WhatsApp Интеграция (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 Повторная попытка через {{attempts.nextDelay}} секунд... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **Успешно** Попытка: {{{attempts.current}}} / {{{attempts.max}}} Подробности: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: Не удалось отправить сообщение в WhatsApp. -WHATSAPP_ERROR_RECEIVING_MESSAGE: Не удалось получить сообщение из WhatsApp -WHATSAPP_ERROR_REMOVING_MESSAGE: Не удалось удалить сообщение из WhatsApp -APP_SCHEDULED_JOB_ERROR: Запланированная задача не выполнена +whatsapp.message.sending.error: Не удалось отправить сообщение в WhatsApp. +whatsapp.message.receiving.error: Не удалось получить сообщение из WhatsApp +whatsapp.message.removing.error: Не удалось удалить сообщение из WhatsApp +job.scheduled.error.header: Запланированная задача не выполнена -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *Отправлено из WhatsApp* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *Отправлено через API* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *Это сообщение было удалено в WhatsApp* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *Отредактировано в WhatsApp* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *Реакция* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *Реакция удалена* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'Группа' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'Канал' +whatsapp.contact.group.suffix: 'Группа' +whatsapp.contact.channel.suffix: 'Канал' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'Статус' +whatsapp.contact.status.name: 'Статус' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **ПОДКЛЮЧЕНО: Сессия WhatsApp к ChatWoot Inbox** ✅ Сессия WhatsApp **{{{name}}}** была успешно подключена к этому ChatWoot Inbox. @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | Давайте начнем! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **ОТКЛЮЧЕНО: Сессия WhatsApp от ChatWoot Inbox** ❌ Сессия WhatsApp **{{{name}}}** была отключена от этого ChatWoot Inbox. @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | Для переподключения, пожалуйста, обратитесь к вашему администратору. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **ОБНОВЛЕНО: Настройки сессии WhatsApp** ✅ Настройки для сессии WhatsApp **{{{name}}}** были обновлены. -APP_COMMANDS_LIST: | +app.commands.list: | Вы можете управлять **WhatsApp Интеграцией**, отправив одну из следующих команд: 🖥️ Сессии: @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | Отправьте **команду** (без учета регистра) или **номер команды** в этот разговор. -APP_HELP_REMINDER: | +app.help.reminder: | Отправьте **help**, чтобы получить список доступных команд. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} Сессия "{{{session}}}" переключилась в статус {{{status}}} -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} Статус сессии **{{{session}}}** - **{{{status}}}** **Аккаунт WhatsApp:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - Посетите [WAHA Dashboard]({{{url}}}) для получения дополнительной информации. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ Этот ChatWoot Inbox связан с **аккаунтом WhatsApp** и готов отправлять и получать сообщения! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **Этот ChatWoot Inbox связан с аккаунтом WhatsApp, но НЕ готов отправлять и получать сообщения!** Пожалуйста, проверьте статус сессии и попробуйте перезапустить её или выйдите и отсканируйте QR-код снова. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **Отсканируйте QR-код на вашем телефоне, чтобы связать аккаунт WhatsApp с этим ChatWoot Inbox!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **Версия:** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | Сервер корректно перезагружается... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | Сервер принудительно перезагружается... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ Аккаунт успешно деавторизован! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **Доступна новая версия!** Текущая версия: **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 Узнайте, что нового в [**🆕 Списке изменений**]({{{changelogUrl}}}) -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **Поддержите WAHA!** Вы используете бесплатную версию **WAHA Core**. Если вы находите этот проект полезным, пожалуйста, рассмотрите возможность поддержать его разработку. diff --git a/src/apps/chatwoot/i18n/tr-TR.yaml b/src/apps/chatwoot/i18n/locales/tr-TR.yaml similarity index 79% rename from src/apps/chatwoot/i18n/tr-TR.yaml rename to src/apps/chatwoot/i18n/locales/tr-TR.yaml index 7181b598..d7a5db1f 100644 --- a/src/apps/chatwoot/i18n/tr-TR.yaml +++ b/src/apps/chatwoot/i18n/locales/tr-TR.yaml @@ -1,8 +1,8 @@ # Turkish translations for ChatWoot integration -LOCALE_NAME: '🇹🇷 Türkçe (Turkish)' -APP_INBOX_CONTACT_NAME: 'WhatsApp Entegrasyonu (WAHA)' +locale.name: '🇹🇷 Türkçe (Turkish)' +app.inbox.contact.name: 'WhatsApp Entegrasyonu (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 {{attempts.nextDelay}} saniye içinde tekrar deneniyor... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **Başarılı** Deneme: {{{attempts.current}}} / {{{attempts.max}}} Detaylar: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: WhatsApp'ta mesaj gönderilemedi. -WHATSAPP_ERROR_RECEIVING_MESSAGE: WhatsApp'tan mesaj alınamadı -WHATSAPP_ERROR_REMOVING_MESSAGE: WhatsApp'tan mesaj kaldırılamadı -APP_SCHEDULED_JOB_ERROR: Zamanlanmış görev yürütülemedi +whatsapp.message.sending.error: WhatsApp'ta mesaj gönderilemedi. +whatsapp.message.receiving.error: WhatsApp'tan mesaj alınamadı +whatsapp.message.removing.error: WhatsApp'tan mesaj kaldırılamadı +job.scheduled.error.header: Zamanlanmış görev yürütülemedi -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *WhatsApp'tan gönderildi* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *API aracılığıyla gönderildi* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *Bu mesaj WhatsApp'ta silindi* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *WhatsApp'ta düzenlendi* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *Tepki verdi* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *Tepki kaldırıldı* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'Grup' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'Kanal' +whatsapp.contact.group.suffix: 'Grup' +whatsapp.contact.channel.suffix: 'Kanal' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'Durum' +whatsapp.contact.status.name: 'Durum' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **BAĞLANDI: WhatsApp Oturumu ChatWoot Gelen Kutusuna** ✅ WhatsApp oturumu **{{{name}}}** bu ChatWoot Gelen Kutusuna başarıyla bağlandı. @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | Hadi başlayalım! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **BAĞLANTI KESİLDİ: WhatsApp Oturumu ChatWoot Gelen Kutusundan** ❌ WhatsApp oturumu **{{{name}}}** bu ChatWoot Gelen Kutusundan bağlantısı kesildi. @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | Yeniden bağlanmak için, lütfen yöneticinizle iletişime geçin. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **GÜNCELLENDİ: WhatsApp Oturum Ayarları** ✅ WhatsApp oturumu **{{{name}}}** için ayarlar güncellendi. -APP_COMMANDS_LIST: | +app.commands.list: | Aşağıdaki komutlardan birini göndererek **WhatsApp Entegrasyonu**nu yönetebilirsiniz: 🖥️ Oturumlar: @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | Bu konuşmaya bir **komut** (büyük/küçük harf duyarsız) veya **komut numarası** gönderin. -APP_HELP_REMINDER: | +app.help.reminder: | Kullanılabilir komutların listesini almak için **help** gönderin. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} "{{{session}}}" oturumu {{{status}}} durumuna geçti -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} **{{{session}}}** oturum durumu **{{{status}}}** içinde **WhatsApp Hesabı:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - Daha fazla ayrıntı için [WAHA Kontrol Paneli]({{{url}}}) ziyaret edin. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ Bu ChatWoot Gelen Kutusu **WhatsApp Hesabına** bağlı ve mesaj gönderip almaya hazır! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **Bu ChatWoot Gelen Kutusu WhatsApp Hesabına bağlı ancak mesaj gönderip almaya hazır DEĞİL!** Lütfen oturum durumunu kontrol edin ve yeniden başlatmayı deneyin veya çıkış yapın ve QR kodu tekrar tarayın. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **WhatsApp Hesabını bu ChatWoot Gelen Kutusuna bağlamak için telefonunuzda QR kodu tarayın!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **Sürüm:** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | Sunucu nazikçe yeniden başlatılıyor... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | Sunucu zorla yeniden başlatılıyor... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ Hesap başarıyla yetkilendirilmedi! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **Yeni Sürüm Mevcut!** Mevcut sürüm: **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 [**🆕 Değişiklik Günlüğü**]({{{changelogUrl}}}) içinde yenilikleri kontrol edin -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **WAHA'yı Destekleyin!** Ücretsiz **WAHA Core** sürümünü kullanıyorsunuz. Bu projeyi faydalı buluyorsanız, lütfen geliştirilmesini desteklemeyi düşünün. diff --git a/src/apps/chatwoot/i18n/uk-UA.yaml b/src/apps/chatwoot/i18n/locales/uk-UA.yaml similarity index 83% rename from src/apps/chatwoot/i18n/uk-UA.yaml rename to src/apps/chatwoot/i18n/locales/uk-UA.yaml index 1cb649ab..9cc05995 100644 --- a/src/apps/chatwoot/i18n/uk-UA.yaml +++ b/src/apps/chatwoot/i18n/locales/uk-UA.yaml @@ -1,8 +1,8 @@ # Ukrainian translations for ChatWoot integration -LOCALE_NAME: '🇺🇦 Українська (Ukrainian)' -APP_INBOX_CONTACT_NAME: 'Інтеграція WhatsApp (WAHA)' +locale.name: '🇺🇦 Українська (Ukrainian)' +app.inbox.contact.name: 'Інтеграція WhatsApp (WAHA)' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 Повторна спроба через {{attempts.nextDelay}} секунд... @@ -19,51 +19,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **Успішно** Спроба: {{{attempts.current}}} / {{{attempts.max}}} Деталі: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: Не вдалося надіслати повідомлення у WhatsApp. -WHATSAPP_ERROR_RECEIVING_MESSAGE: Не вдалося отримати повідомлення з WhatsApp -WHATSAPP_ERROR_REMOVING_MESSAGE: Не вдалося видалити повідомлення з WhatsApp -APP_SCHEDULED_JOB_ERROR: Заплановане завдання не вдалося виконати +whatsapp.message.sending.error: Не вдалося надіслати повідомлення у WhatsApp. +whatsapp.message.receiving.error: Не вдалося отримати повідомлення з WhatsApp +whatsapp.message.removing.error: Не вдалося видалити повідомлення з WhatsApp +job.scheduled.error.header: Заплановане завдання не вдалося виконати -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *Надіслано з WhatsApp* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *Надіслано через API* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *Це повідомлення було видалено у WhatsApp* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *Відредаговано у WhatsApp* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *Реакція* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *Реакцію видалено* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'Група' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'Канал' +whatsapp.contact.group.suffix: 'Група' +whatsapp.contact.channel.suffix: 'Канал' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'Статус' +whatsapp.contact.status.name: 'Статус' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **ПІДКЛЮЧЕНО: Сесія WhatsApp до Вхідних ChatWoot** ✅ Сесія WhatsApp **{{{name}}}** була успішно підключена до цих Вхідних ChatWoot. @@ -81,7 +81,7 @@ APP_CONNECTED_MESSAGE: | Давайте почнемо! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **ВІДКЛЮЧЕНО: Сесія WhatsApp від Вхідних ChatWoot** ❌ Сесія WhatsApp **{{{name}}}** була відключена від цих Вхідних ChatWoot. @@ -90,12 +90,12 @@ APP_DISCONNECTED_MESSAGE: | Щоб повторно підключитися, зверніться до свого адміністратора. -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **ОНОВЛЕНО: Налаштування сесії WhatsApp** ✅ Налаштування для сесії WhatsApp **{{{name}}}** були оновлені. -APP_COMMANDS_LIST: | +app.commands.list: | Ви можете керувати **Інтеграцією WhatsApp**, надіславши одну з наступних команд: 🖥️ Сесії: @@ -115,35 +115,32 @@ APP_COMMANDS_LIST: | Надішліть **команду** (без урахування регістру) або **номер команди** у цю розмову. -APP_HELP_REMINDER: | +app.help.reminder: | Надішліть **help**, щоб отримати список доступних команд. -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} Сесія "{{{session}}}" перейшла у статус {{{status}}} -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} Статус сесії **{{{session}}}** - **{{{status}}}** **Обліковий запис WhatsApp:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - Відвідайте [Панель керування WAHA]({{{url}}}) для отримання додаткової інформації. - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ Ці Вхідні ChatWoot пов'язані з **Обліковим записом WhatsApp** і готові надсилати та отримувати повідомлення! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **Ці Вхідні ChatWoot пов'язані з Обліковим записом WhatsApp, але НЕ готові надсилати та отримувати повідомлення!** Будь ласка, перевірте статус сесії та спробуйте перезапустити її або вийдіть і відскануйте QR-код знову. -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **Відскануйте QR-код на вашому телефоні, щоб пов'язати Обліковий запис WhatsApp з цими Вхідними ChatWoot!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **Версія:** ``` {{{version}}} @@ -154,16 +151,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | Сервер плавно перезавантажується... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | Сервер примусово перезавантажується... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ Обліковий запис успішно деавторизовано! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **Доступна нова версія!** Поточна версія: **{{{currentVersion}}}** @@ -171,7 +168,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 Перевірте, що нового у [**🆕 Журналі змін**]({{{changelogUrl}}}) -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **Підтримайте WAHA!** Ви використовуєте безкоштовну версію **WAHA Core**. Якщо ви вважаєте цей проект корисним, будь ласка, розгляньте можливість підтримати його розробку. diff --git a/src/apps/chatwoot/i18n/ur-PK.yaml b/src/apps/chatwoot/i18n/locales/ur-PK.yaml similarity index 83% rename from src/apps/chatwoot/i18n/ur-PK.yaml rename to src/apps/chatwoot/i18n/locales/ur-PK.yaml index 1d126920..3ec3fb09 100644 --- a/src/apps/chatwoot/i18n/ur-PK.yaml +++ b/src/apps/chatwoot/i18n/locales/ur-PK.yaml @@ -1,9 +1,9 @@ # Urdu translations for ChatWoot integration -LOCALE_NAME: '🇵🇰 اردو (Urdu)' -APP_INBOX_CONTACT_NAME: 'واٹس ایپ انٹیگریشن (WAHA)' -APP_INBOX_CONTACT_AVATAR_URL: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png' +locale.name: '🇵🇰 اردو (Urdu)' +app.inbox.contact.name: 'واٹس ایپ انٹیگریشن (WAHA)' +app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 {{attempts.nextDelay}} سیکنڈ میں دوبارہ کوشش کر رہا ہے... @@ -20,51 +20,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **کامیاب ہوا** کوشش: {{{attempts.current}}} / {{{attempts.max}}} تفصیلات: [{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: واٹس ایپ پر پیغام نہیں بھیج سکا۔ -WHATSAPP_ERROR_RECEIVING_MESSAGE: واٹس ایپ سے پیغام موصول نہیں کر سکا -WHATSAPP_ERROR_REMOVING_MESSAGE: واٹس ایپ سے پیغام ہٹا نہیں سکا -APP_SCHEDULED_JOB_ERROR: شیڈول کردہ کام انجام دینے میں ناکام رہا +whatsapp.message.sending.error: واٹس ایپ پر پیغام نہیں بھیج سکا۔ +whatsapp.message.receiving.error: واٹس ایپ سے پیغام موصول نہیں کر سکا +whatsapp.message.removing.error: واٹس ایپ سے پیغام ہٹا نہیں سکا +job.scheduled.error.header: شیڈول کردہ کام انجام دینے میں ناکام رہا -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *واٹس ایپ سے بھیجا گیا* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *API کے ذریعے بھیجا گیا* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *یہ پیغام واٹس ایپ میں حذف کر دیا گیا تھا* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *واٹس ایپ میں ترمیم کی گئی* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *ردعمل دیا* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *ردعمل ہٹا دیا گیا* -WHATSAPP_CONTACT_GROUP_SUFFIX: 'گروپ' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: 'چینل' +whatsapp.contact.group.suffix: 'گروپ' +whatsapp.contact.channel.suffix: 'چینل' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: 'سٹیٹس' +whatsapp.contact.status.name: 'سٹیٹس' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **منسلک: واٹس ایپ سیشن ChatWoot انبکس سے** ✅ واٹس ایپ سیشن **{{{name}}}** کامیابی سے اس ChatWoot انبکس سے منسلک ہو گیا ہے۔ @@ -82,7 +82,7 @@ APP_CONNECTED_MESSAGE: | آئیے شروع کریں! 🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **منقطع: واٹس ایپ سیشن ChatWoot انبکس سے** ❌ واٹس ایپ سیشن **{{{name}}}** اس ChatWoot انبکس سے منقطع ہو گیا ہے۔ @@ -91,12 +91,12 @@ APP_DISCONNECTED_MESSAGE: | دوبارہ منسلک ہونے کے لیے، براہ کرم اپنے منتظم سے رابطہ کریں۔ -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **اپڈیٹ شدہ: واٹس ایپ سیشن کی ترتیبات** ✅ واٹس ایپ سیشن **{{{name}}}** کی ترتیبات اپڈیٹ کر دی گئی ہیں۔ -APP_COMMANDS_LIST: | +app.commands.list: | آپ درج ذیل کمانڈز میں سے ایک بھیج کر **واٹس ایپ انٹیگریشن** کا انتظام کر سکتے ہیں: 🖥️ سیشنز: @@ -116,35 +116,32 @@ APP_COMMANDS_LIST: | اس گفتگو میں **کمانڈ** (کیس سے غیر حساس) یا **کمانڈ نمبر** بھیجیں۔ -APP_HELP_REMINDER: | +app.help.reminder: | دستیاب کمانڈز کی فہرست حاصل کرنے کے لیے **help** بھیجیں۔ -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} "{{{session}}}" سیشن {{{status}}} حالت میں تبدیل ہو گیا -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} **{{{session}}}** سیشن کی حالت **{{{status}}}** میں ہے **واٹس ایپ اکاؤنٹ:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - مزید تفصیلات کے لیے [WAHA ڈیش بورڈ]({{{url}}}) ملاحظہ کریں۔ - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ یہ ChatWoot انبکس **واٹس ایپ اکاؤنٹ** سے منسلک ہے اور پیغامات بھیجنے اور موصول کرنے کے لیے تیار ہے! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **یہ ChatWoot انبکس واٹس ایپ اکاؤنٹ سے منسلک ہے لیکن پیغامات بھیجنے اور موصول کرنے کے لیے تیار نہیں ہے!** براہ کرم سیشن کی حالت چیک کریں اور اسے دوبارہ شروع کرنے کی کوشش کریں یا لاگ آؤٹ کریں اور QR کوڈ دوبارہ اسکین کریں۔ -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **اس ChatWoot انبکس کے ساتھ واٹس ایپ اکاؤنٹ کو منسلک کرنے کے لیے اپنے فون پر QR کوڈ اسکین کریں!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **ورژن:** ``` {{{version}}} @@ -155,16 +152,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | سرور آرام سے دوبارہ شروع ہو رہا ہے... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | سرور زبردستی دوبارہ شروع ہو رہا ہے... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ اکاؤنٹ کامیابی سے غیر مجاز ہو گیا! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **نیا ورژن دستیاب ہے!** موجودہ ورژن: **{{{currentVersion}}}** @@ -172,7 +169,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 [**🆕 تبدیلیوں کی فہرست**]({{{changelogUrl}}}) میں نیا کیا ہے دیکھیں -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **WAHA کی حمایت کریں!** آپ مفت **WAHA Core** ورژن استعمال کر رہے ہیں۔ اگر آپ کو یہ پروجیکٹ مفید لگتا ہے، تو براہ کرم اس کی ترقی کی حمایت کرنے پر غور کریں۔ diff --git a/src/apps/chatwoot/i18n/zh-CN.yaml b/src/apps/chatwoot/i18n/locales/zh-CN.yaml similarity index 76% rename from src/apps/chatwoot/i18n/zh-CN.yaml rename to src/apps/chatwoot/i18n/locales/zh-CN.yaml index d7b0c835..b1f50575 100644 --- a/src/apps/chatwoot/i18n/zh-CN.yaml +++ b/src/apps/chatwoot/i18n/locales/zh-CN.yaml @@ -1,9 +1,9 @@ # Simplified Chinese translations for ChatWoot integration -LOCALE_NAME: '🇨🇳 中文(Simplified Chinese)' -APP_INBOX_CONTACT_NAME: 'WhatsApp 集成(WAHA)' -APP_INBOX_CONTACT_AVATAR_URL: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png' +locale.name: '🇨🇳 中文(Simplified Chinese)' +app.inbox.contact.name: 'WhatsApp 集成(WAHA)' +app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png' -JOB_ERROR_REPORT: | +job.report.error: | ⚠️ **{{{header}}}** {{#attempts.nextDelay}} 🔄 将在 {{attempts.nextDelay}} 秒后重试... @@ -20,51 +20,51 @@ JOB_ERROR_REPORT: | ``` {{/error}} -JOB_SUCCEEDED_REPORT: | +job.report.succeeded: | ✅ **成功** 尝试:{{{attempts.current}}} / {{{attempts.max}}} 详情:[{{{details.text}}}]({{{details.url}}}) -WHATSAPP_ERROR_SENDING_MESSAGE: 无法在 WhatsApp 中发送消息。 -WHATSAPP_ERROR_RECEIVING_MESSAGE: 无法接收来自 WhatsApp 的消息 -WHATSAPP_ERROR_REMOVING_MESSAGE: 无法从 WhatsApp 中删除消息 -APP_SCHEDULED_JOB_ERROR: 计划任务执行失败 +whatsapp.message.sending.error: 无法在 WhatsApp 中发送消息。 +whatsapp.message.receiving.error: 无法接收来自 WhatsApp 的消息 +whatsapp.message.removing.error: 无法从 WhatsApp 中删除消息 +job.scheduled.error.header: 计划任务执行失败 -MESSAGE_FROM_WHATSAPP: | +message.from.whatsapp: | {{{text}}} 📱 *通过 WhatsApp 发送* -MESSAGE_FROM_API: | +message.from.api: | {{{text}}} 📱 *通过 API 发送* -MESSAGE_REMOVED_IN_WHATSAPP: | +message.removed.in.whatsapp: | ❌ *此消息已在 WhatsApp 中被删除* -MESSAGE_EDITED_IN_WHATSAPP: | +message.edited.in.whatsapp: | {{{text}}} ✏️ *已在 WhatsApp 中编辑* -WHATSAPP_GROUP_MESSAGE: | +whatsapp.group.message: | {{{text}}} 👥 *{{{participant}}}* -WHATSAPP_REACTION_ADDED: | +whatsapp.reaction.added: | *已反应* {{{emoji}}} -WHATSAPP_REACTION_REMOVED: | +whatsapp.reaction.removed: | *已移除反应* -WHATSAPP_CONTACT_GROUP_SUFFIX: '群组' -WHATSAPP_CONTACT_CHANNEL_SUFFIX: '频道' +whatsapp.contact.group.suffix: '群组' +whatsapp.contact.channel.suffix: '频道' # Aka Stories -WHATSAPP_CONTACT_STATUS_NAME: '状态' +whatsapp.contact.status.name: '状态' -APP_CONNECTED_MESSAGE: | +app.connected.message: | 🔗 **已连接:WhatsApp 会话到 ChatWoot 收件箱** ✅ WhatsApp 会话 **{{{name}}}** 已成功连接到此 ChatWoot 收件箱。 @@ -82,7 +82,7 @@ APP_CONNECTED_MESSAGE: | 开始吧!🚀 -APP_DISCONNECTED_MESSAGE: | +app.disconnected.message: | 🔌 **已断开:从 ChatWoot 收件箱断开 WhatsApp 会话** ❌ WhatsApp 会话 **{{{name}}}** 已与此 ChatWoot 收件箱断开。 @@ -91,12 +91,12 @@ APP_DISCONNECTED_MESSAGE: | 如需重新连接,请联系你的管理员。 -APP_UPDATED_MESSAGE: | +app.updated.message: | 🔄 **已更新:WhatsApp 会话设置** ✅ WhatsApp 会话 **{{{name}}}** 的设置已更新。 -APP_COMMANDS_LIST: | +app.commands.list: | 你可以通过发送以下命令来管理**WhatsApp 集成**: 🖥️ 会话: @@ -116,35 +116,32 @@ APP_COMMANDS_LIST: | 向此对话发送**命令**(不区分大小写)或**命令编号**。 -APP_HELP_REMINDER: | +app.help.reminder: | 发送 **help** 获取可用命令列表。 -APP_SESSION_STATUS_CHANGE: | +app.session.status.change: | {{{emoji}}} "{{{session}}}" 会话已切换为 {{{status}}} 状态 -APP_SESSION_CURRENT_STATUS: | +app.session.current.status: | {{{emoji}}} **{{{session}}}** 会话状态为 **{{{status}}}** **WhatsApp 账号:** 📱 **{{{name}}} ({{{id}}})** -APP_DASHBOARD_LINK: | - 访问 [WAHA 控制台]({{{url}}}) 以了解更多信息。 - -APP_SESSION_STATUS_WORKING: | +app.session.status.working: | ✅ 此 ChatWoot 收件箱已链接到**WhatsApp 账号**,可以正常收发消息! 📱 **{{{name}}} ({{{id}}})** -APP_SESSION_STATUS_ERROR: | +app.session.status.error: | ⚠️ **此 ChatWoot 收件箱已链接到 WhatsApp 账号,但尚未准备好收发消息!** 请检查会话状态,尝试重启,或登出后重新扫描二维码。 -APP_SESSION_SCAN_QR_CODE: | +app.session.scan.qr.code: | ⚠️ **请在手机上扫描二维码,将 WhatsApp 账号与此 ChatWoot 收件箱关联!** -APP_SERVER_VERSION_AND_STATUS: | +app.server.version.and.status: | **版本:** ``` {{{version}}} @@ -155,16 +152,16 @@ APP_SERVER_VERSION_AND_STATUS: | {{{status}}} ``` -APP_SERVER_REBOOT: | +app.server.reboot: | 服务器正在优雅重启... -APP_SERVER_REBOOT_FORCE: | +app.server.reboot.force: | 服务器正在强制重启... -APP_LOGOUT_SUCCESS: | +app.logout.success: | ✅ 账号已成功取消授权! -APP_NEW_VERSION_AVAILABLE: | +waha.new.version.available: | 🔄 **有新版本可用!** 当前版本:**{{{currentVersion}}}** @@ -172,7 +169,7 @@ APP_NEW_VERSION_AVAILABLE: | 👉 查看[**🆕 更新日志**]({{{changelogUrl}}}) -APP_CORE_VERSION_USED: | +waha.core.version.used: | ❤️ **支持 WAHA!** 你正在使用免费的 **WAHA Core** 版本。如果你觉得该项目有帮助,请考虑支持其开发。 diff --git a/src/apps/chatwoot/i18n/templates.ts b/src/apps/chatwoot/i18n/templates.ts new file mode 100644 index 00000000..83029c00 --- /dev/null +++ b/src/apps/chatwoot/i18n/templates.ts @@ -0,0 +1,151 @@ +export enum TKey { + LOCALE_NAME = 'locale.name', + + // + // Jobs + // + JOB_REPORT_ERROR = 'job.report.error', + JOB_REPORT_SUCCEEDED = 'job.report.succeeded', + JOB_SCHEDULED_ERROR_HEADER = 'job.scheduled.error.header', + + // + // WhatsApp Message Status + // + WHATSAPP_MESSAGE_SENDING_ERROR = 'whatsapp.message.sending.error', + WHATSAPP_MESSAGE_RECEIVING_ERROR = 'whatsapp.message.receiving.error', + WHATSAPP_MESSAGE_REMOVING_ERROR = 'whatsapp.message.removing.error', + + // + // WhatsApp Messages + // + MESSAGE_FROM_WHATSAPP = 'message.from.whatsapp', + MESSAGE_FROM_API = 'message.from.api', + MESSAGE_REMOVED_IN_WHATSAPP = 'message.removed.in.whatsapp', + MESSAGE_EDITED_IN_WHATSAPP = 'message.edited.in.whatsapp', + WHATSAPP_GROUP_MESSAGE = 'whatsapp.group.message', + WHATSAPP_REACTION_ADDED = 'whatsapp.reaction.added', + WHATSAPP_REACTION_REMOVED = 'whatsapp.reaction.removed', + + // + // Contact Suffixes + // + WHATSAPP_CONTACT_GROUP_SUFFIX = 'whatsapp.contact.group.suffix', + WHATSAPP_CONTACT_CHANNEL_SUFFIX = 'whatsapp.contact.channel.suffix', + WHATSAPP_CONTACT_STATUS_NAME = 'whatsapp.contact.status.name', + + // + // App Inbox + // + APP_INBOX_CONTACT_NAME = 'app.inbox.contact.name', + APP_INBOX_CONTACT_AVATAR_URL = 'app.inbox.contact.avatar.url', + + // + // App Status + // + APP_CONNECTED_MESSAGE = 'app.connected.message', + APP_DISCONNECTED_MESSAGE = 'app.disconnected.message', + APP_UPDATED_MESSAGE = 'app.updated.message', + + // + // App Session Status + // + APP_SESSION_STATUS_CHANGE = 'app.session.status.change', + APP_SESSION_CURRENT_STATUS = 'app.session.current.status', + APP_SESSION_STATUS_WORKING = 'app.session.status.working', + APP_SESSION_STATUS_ERROR = 'app.session.status.error', + APP_SESSION_SCAN_QR_CODE = 'app.session.scan.qr.code', + + // + // App Commands + // + APP_COMMANDS_LIST = 'app.commands.list', + APP_HELP_REMINDER = 'app.help.reminder', + APP_SERVER_VERSION_AND_STATUS = 'app.server.version.and.status', + APP_SERVER_REBOOT = 'app.server.reboot', + APP_SERVER_REBOOT_FORCE = 'app.server.reboot.force', + APP_LOGOUT_SUCCESS = 'app.logout.success', + + // + // App Inbox + // + WAHA_NEW_VERSION_AVAILABLE = 'waha.new.version.available', + WAHA_CORE_VERSION_USED = 'waha.core.version.used', +} + +// Define payload types +interface Link { + text: string; + url: string; +} + +export type TemplatePayloads = { + [TKey.LOCALE_NAME]: void; + [TKey.APP_INBOX_CONTACT_NAME]: void; + [TKey.APP_INBOX_CONTACT_AVATAR_URL]: void; + [TKey.MESSAGE_FROM_WHATSAPP]: { text: string }; + [TKey.MESSAGE_FROM_API]: { text: string }; + [TKey.MESSAGE_REMOVED_IN_WHATSAPP]: void; + [TKey.MESSAGE_EDITED_IN_WHATSAPP]: { text: string }; + [TKey.WHATSAPP_GROUP_MESSAGE]: { text: string; participant: string }; + [TKey.WHATSAPP_REACTION_ADDED]: { emoji: string }; + [TKey.WHATSAPP_REACTION_REMOVED]: void; + [TKey.WHATSAPP_MESSAGE_SENDING_ERROR]: void; + [TKey.WHATSAPP_MESSAGE_RECEIVING_ERROR]: void; + [TKey.WHATSAPP_MESSAGE_REMOVING_ERROR]: void; + [TKey.WHATSAPP_CONTACT_GROUP_SUFFIX]: void; + [TKey.WHATSAPP_CONTACT_CHANNEL_SUFFIX]: void; + [TKey.WHATSAPP_CONTACT_STATUS_NAME]: void; + [TKey.JOB_SCHEDULED_ERROR_HEADER]: void; + [TKey.JOB_REPORT_ERROR]: { + header: string; + error: string; + details: Link; + attempts: { + current: number; + max: number; + nextDelay?: number; + }; + }; + [TKey.JOB_REPORT_SUCCEEDED]: { + details: Link; + attempts: { + current: number; + max: number; + }; + }; + [TKey.APP_CONNECTED_MESSAGE]: { name: string }; + [TKey.APP_DISCONNECTED_MESSAGE]: { name: string }; + [TKey.APP_UPDATED_MESSAGE]: { name: string }; + [TKey.APP_SESSION_STATUS_CHANGE]: { + emoji: string; + session: string; + status: string; + }; + [TKey.APP_SESSION_CURRENT_STATUS]: { + emoji: string; + session: string; + status: string; + name: string; + id: string; + }; + [TKey.APP_SESSION_STATUS_WORKING]: { name: string; id: string }; + [TKey.APP_SESSION_STATUS_ERROR]: void; + [TKey.APP_SESSION_SCAN_QR_CODE]: void; + [TKey.APP_HELP_REMINDER]: void; + [TKey.APP_COMMANDS_LIST]: void; + [TKey.APP_SERVER_VERSION_AND_STATUS]: { + version: string; + status: string; + }; + [TKey.APP_SERVER_REBOOT]: void; + [TKey.APP_SERVER_REBOOT_FORCE]: void; + [TKey.APP_LOGOUT_SUCCESS]: void; + [TKey.WAHA_NEW_VERSION_AVAILABLE]: { + currentVersion: string; + newVersion: string; + changelogUrl: string; + }; + [TKey.WAHA_CORE_VERSION_USED]: { + supportUrl: string; + }; +}; diff --git a/src/apps/chatwoot/locale.ts b/src/apps/chatwoot/locale.ts deleted file mode 100644 index be56414d..00000000 --- a/src/apps/chatwoot/locale.ts +++ /dev/null @@ -1,205 +0,0 @@ -import * as fs from 'fs-extra'; -import * as lodash from 'lodash'; -import * as Mustache from 'mustache'; -import * as path from 'path'; -import * as yaml from 'yaml'; - -export const LOCALES = [ - 'en-US', - 'ar-AE', - 'bn-BD', - 'pt-BR', - 'de-DE', - 'es-ES', - 'fr-FR', - 'id-ID', - 'he-IL', - 'hi-IN', - 'fa-IR', - 'pa-PK', - 'ru-RU', - 'tr-TR', - 'uk-UA', - 'ur-PK', - 'zh-CN', -]; - -export const DEFAULT_LOCALE = 'en-US'; - -function loadTemplateStrings(locale: string) { - const filename = `${locale}.yaml`; - const yamlPath = path.join(__dirname, 'i18n', filename); - const content = fs.readFileSync(yamlPath, 'utf-8'); - return yaml.parse(content); -} - -export interface Link { - text: string; - url: string; -} - -function loadLocales(locales: string[]) { - const defaults = loadTemplateStrings(DEFAULT_LOCALE); - const result: Record> = {}; - for (const locale of locales) { - const strings = loadTemplateStrings(locale); - result[locale] = lodash.merge({}, defaults, strings); - } - return result; -} - -let locales: Record> = {}; -export const LOCALE_NAMES: Map = new Map(); - -try { - locales = loadLocales(LOCALES); - for (const [locale, strings] of Object.entries(locales)) { - LOCALE_NAMES.set(locale, strings['LOCALE_NAME']); - } -} catch (error) { - console.error('Error loading locales:', error); - process.exit(1); -} - -export enum TKey { - WHATSAPP_ERROR_SENDING_MESSAGE = 'WHATSAPP_ERROR_SENDING_MESSAGE', - WHATSAPP_ERROR_RECEIVING_MESSAGE = 'WHATSAPP_ERROR_RECEIVING_MESSAGE', - WHATSAPP_ERROR_REMOVING_MESSAGE = 'WHATSAPP_ERROR_REMOVING_MESSAGE', - JOB_ERROR_REPORT = 'JOB_ERROR_REPORT', - JOB_SUCCEEDED_REPORT = 'JOB_SUCCEEDED_REPORT', - MESSAGE_FROM_WHATSAPP = 'MESSAGE_FROM_WHATSAPP', - MESSAGE_FROM_API = 'MESSAGE_FROM_API', - MESSAGE_REMOVED_IN_WHATSAPP = 'MESSAGE_REMOVED_IN_WHATSAPP', - MESSAGE_EDITED_IN_WHATSAPP = 'MESSAGE_EDITED_IN_WHATSAPP', - WHATSAPP_GROUP_MESSAGE = 'WHATSAPP_GROUP_MESSAGE', - WHATSAPP_REACTION_ADDED = 'WHATSAPP_REACTION_ADDED', - WHATSAPP_REACTION_REMOVED = 'WHATSAPP_REACTION_REMOVED', - // - // Contact Suffixes - // - WHATSAPP_CONTACT_GROUP_SUFFIX = 'WHATSAPP_CONTACT_GROUP_SUFFIX', - WHATSAPP_CONTACT_CHANNEL_SUFFIX = 'WHATSAPP_CONTACT_CHANNEL_SUFFIX', - WHATSAPP_CONTACT_STATUS_NAME = 'WHATSAPP_CONTACT_STATUS_NAME', - - // - // App Inbox - // - APP_INBOX_CONTACT_NAME = 'APP_INBOX_CONTACT_NAME', - APP_INBOX_CONTACT_AVATAR_URL = 'APP_INBOX_CONTACT_AVATAR_URL', - APP_CONNECTED_MESSAGE = 'APP_CONNECTED_MESSAGE', - APP_DISCONNECTED_MESSAGE = 'APP_DISCONNECTED_MESSAGE', - APP_UPDATED_MESSAGE = 'APP_UPDATED_MESSAGE', - APP_COMMANDS_LIST = 'APP_COMMANDS_LIST', - APP_HELP_REMINDER = 'APP_HELP_REMINDER', - APP_SESSION_STATUS_CHANGE = 'APP_SESSION_STATUS_CHANGE', - APP_SESSION_CURRENT_STATUS = 'APP_SESSION_CURRENT_STATUS', - APP_DASHBOARD_LINK = 'APP_DASHBOARD_LINK', - APP_SESSION_STATUS_WORKING = 'APP_SESSION_STATUS_WORKING', - APP_SESSION_STATUS_ERROR = 'APP_SESSION_STATUS_ERROR', - APP_SESSION_SCAN_QR_CODE = 'APP_SESSION_SCAN_QR_CODE', - APP_SERVER_VERSION_AND_STATUS = 'APP_SERVER_VERSION_AND_STATUS', - APP_SERVER_REBOOT = 'APP_SERVER_REBOOT', - APP_SERVER_REBOOT_FORCE = 'APP_SERVER_REBOOT_FORCE', - APP_LOGOUT_SUCCESS = 'APP_LOGOUT_SUCCESS', - APP_NEW_VERSION_AVAILABLE = 'APP_NEW_VERSION_AVAILABLE', - APP_CORE_VERSION_USED = 'APP_CORE_VERSION_USED', - APP_SCHEDULED_JOB_ERROR = 'APP_SCHEDULED_JOB_ERROR', -} - -// Define payload types -type TemplatePayloads = { - [TKey.APP_INBOX_CONTACT_NAME]: void; - [TKey.APP_INBOX_CONTACT_AVATAR_URL]: void; - [TKey.MESSAGE_FROM_WHATSAPP]: { text: string }; - [TKey.MESSAGE_FROM_API]: { text: string }; - [TKey.MESSAGE_REMOVED_IN_WHATSAPP]: void; - [TKey.MESSAGE_EDITED_IN_WHATSAPP]: { text: string }; - [TKey.WHATSAPP_GROUP_MESSAGE]: { text: string; participant: string }; - [TKey.WHATSAPP_REACTION_ADDED]: { emoji: string }; - [TKey.WHATSAPP_REACTION_REMOVED]: void; - [TKey.WHATSAPP_ERROR_SENDING_MESSAGE]: void; - [TKey.WHATSAPP_ERROR_RECEIVING_MESSAGE]: void; - [TKey.WHATSAPP_ERROR_REMOVING_MESSAGE]: void; - [TKey.WHATSAPP_CONTACT_GROUP_SUFFIX]: void; - [TKey.WHATSAPP_CONTACT_CHANNEL_SUFFIX]: void; - [TKey.WHATSAPP_CONTACT_STATUS_NAME]: void; - [TKey.APP_SCHEDULED_JOB_ERROR]: void; - [TKey.JOB_ERROR_REPORT]: { - header: string; - error: string; - details: Link; - attempts: { - current: number; - max: number; - nextDelay?: number; - }; - }; - [TKey.JOB_SUCCEEDED_REPORT]: { - details: Link; - attempts: { - current: number; - max: number; - }; - }; - [TKey.APP_CONNECTED_MESSAGE]: { name: string }; - [TKey.APP_DISCONNECTED_MESSAGE]: { name: string }; - [TKey.APP_UPDATED_MESSAGE]: { name: string }; - [TKey.APP_SESSION_STATUS_CHANGE]: { - emoji: string; - session: string; - status: string; - }; - [TKey.APP_SESSION_CURRENT_STATUS]: { - emoji: string; - session: string; - status: string; - name: string; - id: string; - }; - [TKey.APP_DASHBOARD_LINK]: { url: string }; - [TKey.APP_SESSION_STATUS_WORKING]: { name: string; id: string }; - [TKey.APP_SESSION_STATUS_ERROR]: void; - [TKey.APP_SESSION_SCAN_QR_CODE]: void; - [TKey.APP_HELP_REMINDER]: void; - [TKey.APP_COMMANDS_LIST]: void; - [TKey.APP_SERVER_VERSION_AND_STATUS]: { version: string; status: string }; - [TKey.APP_SERVER_REBOOT]: void; - [TKey.APP_SERVER_REBOOT_FORCE]: void; - [TKey.APP_LOGOUT_SUCCESS]: void; - [TKey.APP_NEW_VERSION_AVAILABLE]: { - currentVersion: string; - newVersion: string; - changelogUrl: string; - }; - [TKey.APP_CORE_VERSION_USED]: { - supportUrl: string; - }; -}; - -export class Locale { - private readonly strings: Record; - - constructor(locale: string = DEFAULT_LOCALE) { - locale = locale || DEFAULT_LOCALE; - if (!locales[locale]) { - throw new Error(`Locale '${locale}' not found`); - } - this.strings = locales[locale]; - } - - key(key: K): Template { - return new Template(this.strings[key] || key); - } -} - -export class Template { - constructor(private readonly template: string) {} - - render(data: TemplatePayloads[K]): string { - return Mustache.render(this.template, data); - } - - r(data: TemplatePayloads[K]): string { - return this.render(data); - } -} diff --git a/src/apps/chatwoot/services/ChatWootAppService.ts b/src/apps/chatwoot/services/ChatWootAppService.ts index b4b5d2f3..dba20eb8 100644 --- a/src/apps/chatwoot/services/ChatWootAppService.ts +++ b/src/apps/chatwoot/services/ChatWootAppService.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@nestjs/common'; +import { Injectable, UnprocessableEntityException } from '@nestjs/common'; import { IAppService } from '@waha/apps/app_sdk/services/IAppService'; import { CacheForConfig } from '@waha/apps/chatwoot/cache/ConversationCache'; import { CHATWOOT_CUSTOM_ATTRIBUTES } from '@waha/apps/chatwoot/const'; @@ -10,7 +10,10 @@ import { WhatsappSession } from '@waha/core/abc/session.abc'; import { InjectPinoLogger, PinoLogger } from 'nestjs-pino'; import { DIContainer } from '../di/DIContainer'; -import { TKey } from '../locale'; + +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; +import { session } from 'passport'; +import { i18n } from '@waha/apps/chatwoot/i18n'; @Injectable() export class ChatWootAppService implements IAppService { @@ -21,6 +24,14 @@ export class ChatWootAppService implements IAppService { protected logger: PinoLogger, ) {} + validate(app: App): void { + if (!i18n.has(app.config.locale)) { + throw new UnprocessableEntityException( + `Unknown '${app.config.locale}' locale in 'config.local'`, + ); + } + } + async beforeCreated(app: App) { await this.setupCustomAttributes(app); await this.sendConnectedMessage(app);